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 PisEmptyProof (⇔)
↳16 YES
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T9, niltree, niltree), cons(T9, nil)) → flat1_out_ga(tree(T9, niltree, niltree), cons(T9, nil))
flat1_in_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_ga(T9, T25, T26, T28, flat1_in_ga(T26, T28))
flat1_in_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
flat1_in_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_ga(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
flat1_in_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_out_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)) → flat1_out_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132)
U3_ga(T100, T99, T101, T102, T104, flat1_out_ga(tree(T100, T101, T102), T104)) → flat1_out_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104))
U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_out_ga(tree(T54, T55, tree(T53, T56, T57)), T59)) → flat1_out_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59))
U1_ga(T9, T25, T26, T28, flat1_out_ga(T26, T28)) → flat1_out_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28)))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T9, niltree, niltree), cons(T9, nil)) → flat1_out_ga(tree(T9, niltree, niltree), cons(T9, nil))
flat1_in_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_ga(T9, T25, T26, T28, flat1_in_ga(T26, T28))
flat1_in_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
flat1_in_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_ga(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
flat1_in_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_out_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)) → flat1_out_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132)
U3_ga(T100, T99, T101, T102, T104, flat1_out_ga(tree(T100, T101, T102), T104)) → flat1_out_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104))
U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_out_ga(tree(T54, T55, tree(T53, T56, T57)), T59)) → flat1_out_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59))
U1_ga(T9, T25, T26, T28, flat1_out_ga(T26, T28)) → flat1_out_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28)))
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_GA(T9, T25, T26, T28, flat1_in_ga(T26, T28))
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → FLAT1_IN_GA(T26, T28)
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_GA(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → FLAT1_IN_GA(tree(T54, T55, tree(T53, T56, T57)), T59)
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_GA(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → FLAT1_IN_GA(tree(T100, T101, T102), T104)
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_GA(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → FLAT1_IN_GA(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T9, niltree, niltree), cons(T9, nil)) → flat1_out_ga(tree(T9, niltree, niltree), cons(T9, nil))
flat1_in_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_ga(T9, T25, T26, T28, flat1_in_ga(T26, T28))
flat1_in_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
flat1_in_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_ga(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
flat1_in_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_out_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)) → flat1_out_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132)
U3_ga(T100, T99, T101, T102, T104, flat1_out_ga(tree(T100, T101, T102), T104)) → flat1_out_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104))
U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_out_ga(tree(T54, T55, tree(T53, T56, T57)), T59)) → flat1_out_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59))
U1_ga(T9, T25, T26, T28, flat1_out_ga(T26, T28)) → flat1_out_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28)))
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_GA(T9, T25, T26, T28, flat1_in_ga(T26, T28))
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → FLAT1_IN_GA(T26, T28)
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_GA(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → FLAT1_IN_GA(tree(T54, T55, tree(T53, T56, T57)), T59)
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_GA(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → FLAT1_IN_GA(tree(T100, T101, T102), T104)
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_GA(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → FLAT1_IN_GA(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T9, niltree, niltree), cons(T9, nil)) → flat1_out_ga(tree(T9, niltree, niltree), cons(T9, nil))
flat1_in_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_ga(T9, T25, T26, T28, flat1_in_ga(T26, T28))
flat1_in_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
flat1_in_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_ga(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
flat1_in_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_out_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)) → flat1_out_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132)
U3_ga(T100, T99, T101, T102, T104, flat1_out_ga(tree(T100, T101, T102), T104)) → flat1_out_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104))
U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_out_ga(tree(T54, T55, tree(T53, T56, T57)), T59)) → flat1_out_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59))
U1_ga(T9, T25, T26, T28, flat1_out_ga(T26, T28)) → flat1_out_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28)))
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → FLAT1_IN_GA(tree(T54, T55, tree(T53, T56, T57)), T59)
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → FLAT1_IN_GA(T26, T28)
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → FLAT1_IN_GA(tree(T100, T101, T102), T104)
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → FLAT1_IN_GA(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)
flat1_in_ga(niltree, nil) → flat1_out_ga(niltree, nil)
flat1_in_ga(tree(T9, niltree, niltree), cons(T9, nil)) → flat1_out_ga(tree(T9, niltree, niltree), cons(T9, nil))
flat1_in_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → U1_ga(T9, T25, T26, T28, flat1_in_ga(T26, T28))
flat1_in_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_in_ga(tree(T54, T55, tree(T53, T56, T57)), T59))
flat1_in_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → U3_ga(T100, T99, T101, T102, T104, flat1_in_ga(tree(T100, T101, T102), T104))
flat1_in_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_in_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132))
U4_ga(T128, T124, T125, T126, T127, T129, T130, T132, flat1_out_ga(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)) → flat1_out_ga(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132)
U3_ga(T100, T99, T101, T102, T104, flat1_out_ga(tree(T100, T101, T102), T104)) → flat1_out_ga(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104))
U2_ga(T9, T53, T54, T55, T56, T57, T59, flat1_out_ga(tree(T54, T55, tree(T53, T56, T57)), T59)) → flat1_out_ga(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59))
U1_ga(T9, T25, T26, T28, flat1_out_ga(T26, T28)) → flat1_out_ga(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28)))
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57)), cons(T9, T59)) → FLAT1_IN_GA(tree(T54, T55, tree(T53, T56, T57)), T59)
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26)), cons(T9, cons(T25, T28))) → FLAT1_IN_GA(T26, T28)
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102), cons(T99, T104)) → FLAT1_IN_GA(tree(T100, T101, T102), T104)
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130), T132) → FLAT1_IN_GA(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))), T132)
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57))) → FLAT1_IN_GA(tree(T54, T55, tree(T53, T56, T57)))
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26))) → FLAT1_IN_GA(T26)
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102)) → FLAT1_IN_GA(tree(T100, T101, T102))
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130)) → FLAT1_IN_GA(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))))
No rules are removed from R.
FLAT1_IN_GA(tree(T9, niltree, tree(T53, tree(T54, T55, T56), T57))) → FLAT1_IN_GA(tree(T54, T55, tree(T53, T56, T57)))
FLAT1_IN_GA(tree(T9, niltree, tree(T25, niltree, T26))) → FLAT1_IN_GA(T26)
FLAT1_IN_GA(tree(T100, tree(T99, niltree, T101), T102)) → FLAT1_IN_GA(tree(T100, T101, T102))
FLAT1_IN_GA(tree(T128, tree(T124, tree(T125, T126, T127), T129), T130)) → FLAT1_IN_GA(tree(T125, T126, tree(T124, T127, tree(T128, T129, T130))))
POL(FLAT1_IN_GA(x1)) = 2·x1
POL(niltree) = 0
POL(tree(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3