0 Prolog
↳1 PrologToPrologProblemTransformerProof (⇐)
↳2 Prolog
↳3 PrologToPiTRSProof (⇐)
↳4 PiTRS
↳5 DependencyPairsProof (⇔)
↳6 PiDP
↳7 DependencyGraphProof (⇔)
↳8 PiDP
↳9 UsableRulesProof (⇔)
↳10 PiDP
↳11 PiDPToQDPProof (⇐)
↳12 QDP
↳13 UsableRulesReductionPairsProof (⇔)
↳14 QDP
↳15 MRRProof (⇔)
↳16 QDP
↳17 PisEmptyProof (⇔)
↳18 YES
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flat1_in_ga(T19, T9))
flat1_in_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_ga(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
flat1_in_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_out_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)) → flat1_out_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102)
U2_ga(T72, T71, T73, T74, T59, flat1_out_ga(tree(T72, T73, T74), T59)) → flat1_out_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59))
U1_ga(T18, T19, T9, flat1_out_ga(T19, T9)) → flat1_out_ga(tree(T18, niltree, T19), cons(T18, T9))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flat1_in_ga(T19, T9))
flat1_in_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_ga(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
flat1_in_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_out_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)) → flat1_out_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102)
U2_ga(T72, T71, T73, T74, T59, flat1_out_ga(tree(T72, T73, T74), T59)) → flat1_out_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59))
U1_ga(T18, T19, T9, flat1_out_ga(T19, T9)) → flat1_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLAT1_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → U1_GA(T18, T19, T9, flat1_in_ga(T19, T9))
FLAT1_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLAT1_IN_GA(T19, T9)
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_GA(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → FLAT1_IN_GA(tree(T72, T73, T74), T59)
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_GA(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flat1_in_ga(T19, T9))
flat1_in_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_ga(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
flat1_in_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_out_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)) → flat1_out_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102)
U2_ga(T72, T71, T73, T74, T59, flat1_out_ga(tree(T72, T73, T74), T59)) → flat1_out_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59))
U1_ga(T18, T19, T9, flat1_out_ga(T19, T9)) → flat1_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLAT1_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → U1_GA(T18, T19, T9, flat1_in_ga(T19, T9))
FLAT1_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLAT1_IN_GA(T19, T9)
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_GA(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → FLAT1_IN_GA(tree(T72, T73, T74), T59)
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_GA(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flat1_in_ga(T19, T9))
flat1_in_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_ga(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
flat1_in_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_out_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)) → flat1_out_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102)
U2_ga(T72, T71, T73, T74, T59, flat1_out_ga(tree(T72, T73, T74), T59)) → flat1_out_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59))
U1_ga(T18, T19, T9, flat1_out_ga(T19, T9)) → flat1_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → FLAT1_IN_GA(tree(T72, T73, T74), T59)
FLAT1_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLAT1_IN_GA(T19, T9)
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flat1_in_ga(T19, T9))
flat1_in_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → U2_ga(T72, T71, T73, T74, T59, flat1_in_ga(tree(T72, T73, T74), T59))
flat1_in_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_in_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102))
U3_ga(T98, T94, T95, T96, T97, T99, T100, T102, flat1_out_ga(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)) → flat1_out_ga(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102)
U2_ga(T72, T71, T73, T74, T59, flat1_out_ga(tree(T72, T73, T74), T59)) → flat1_out_ga(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59))
U1_ga(T18, T19, T9, flat1_out_ga(T19, T9)) → flat1_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74), cons(T71, T59)) → FLAT1_IN_GA(tree(T72, T73, T74), T59)
FLAT1_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLAT1_IN_GA(T19, T9)
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100), T102) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))), T102)
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74)) → FLAT1_IN_GA(tree(T72, T73, T74))
FLAT1_IN_GA(tree(T18, niltree, T19)) → FLAT1_IN_GA(T19)
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100)) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))))
No rules are removed from R.
FLAT1_IN_GA(tree(T72, tree(T71, niltree, T73), T74)) → FLAT1_IN_GA(tree(T72, T73, T74))
FLAT1_IN_GA(tree(T18, niltree, T19)) → FLAT1_IN_GA(T19)
POL(FLAT1_IN_GA(x1)) = 2·x1
POL(niltree) = 0
POL(tree(x1, x2, x3)) = 2·x1 + 2·x2 + x3
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100)) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))))
FLAT1_IN_GA(tree(T98, tree(T94, tree(T95, T96, T97), T99), T100)) → FLAT1_IN_GA(tree(T95, T96, tree(T94, T97, tree(T98, T99, T100))))
POL(FLAT1_IN_GA(x1)) = 2·x1
POL(tree(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3