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
flatten1_in_ga(atom(T4), .(T4, [])) → flatten1_out_ga(atom(T4), .(T4, []))
flatten1_in_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, []))) → flatten1_out_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, [])))
flatten1_in_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_ga(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
flatten1_in_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_ga(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
flatten1_in_ga(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_ga(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
flatten1_in_ga(cons(cons(cons(T103, T104), T105), T106), T108) → U4_ga(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
U4_ga(T103, T104, T105, T106, T108, flatten1_out_ga(cons(T103, cons(T104, cons(T105, T106))), T108)) → flatten1_out_ga(cons(cons(cons(T103, T104), T105), T106), T108)
U3_ga(T85, T86, T87, T89, flatten1_out_ga(cons(T86, T87), T89)) → flatten1_out_ga(cons(cons(atom(T85), T86), T87), .(T85, T89))
U2_ga(T8, T51, T52, T53, T55, flatten1_out_ga(cons(T51, cons(T52, T53)), T55)) → flatten1_out_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55))
U1_ga(T8, T29, T30, T32, flatten1_out_ga(T30, T32)) → flatten1_out_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32)))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flatten1_in_ga(atom(T4), .(T4, [])) → flatten1_out_ga(atom(T4), .(T4, []))
flatten1_in_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, []))) → flatten1_out_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, [])))
flatten1_in_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_ga(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
flatten1_in_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_ga(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
flatten1_in_ga(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_ga(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
flatten1_in_ga(cons(cons(cons(T103, T104), T105), T106), T108) → U4_ga(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
U4_ga(T103, T104, T105, T106, T108, flatten1_out_ga(cons(T103, cons(T104, cons(T105, T106))), T108)) → flatten1_out_ga(cons(cons(cons(T103, T104), T105), T106), T108)
U3_ga(T85, T86, T87, T89, flatten1_out_ga(cons(T86, T87), T89)) → flatten1_out_ga(cons(cons(atom(T85), T86), T87), .(T85, T89))
U2_ga(T8, T51, T52, T53, T55, flatten1_out_ga(cons(T51, cons(T52, T53)), T55)) → flatten1_out_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55))
U1_ga(T8, T29, T30, T32, flatten1_out_ga(T30, T32)) → flatten1_out_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32)))
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_GA(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → FLATTEN1_IN_GA(T30, T32)
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_GA(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → FLATTEN1_IN_GA(cons(T51, cons(T52, T53)), T55)
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_GA(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87), .(T85, T89)) → FLATTEN1_IN_GA(cons(T86, T87), T89)
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106), T108) → U4_GA(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106), T108) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))), T108)
flatten1_in_ga(atom(T4), .(T4, [])) → flatten1_out_ga(atom(T4), .(T4, []))
flatten1_in_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, []))) → flatten1_out_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, [])))
flatten1_in_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_ga(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
flatten1_in_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_ga(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
flatten1_in_ga(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_ga(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
flatten1_in_ga(cons(cons(cons(T103, T104), T105), T106), T108) → U4_ga(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
U4_ga(T103, T104, T105, T106, T108, flatten1_out_ga(cons(T103, cons(T104, cons(T105, T106))), T108)) → flatten1_out_ga(cons(cons(cons(T103, T104), T105), T106), T108)
U3_ga(T85, T86, T87, T89, flatten1_out_ga(cons(T86, T87), T89)) → flatten1_out_ga(cons(cons(atom(T85), T86), T87), .(T85, T89))
U2_ga(T8, T51, T52, T53, T55, flatten1_out_ga(cons(T51, cons(T52, T53)), T55)) → flatten1_out_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55))
U1_ga(T8, T29, T30, T32, flatten1_out_ga(T30, T32)) → flatten1_out_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32)))
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_GA(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → FLATTEN1_IN_GA(T30, T32)
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_GA(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → FLATTEN1_IN_GA(cons(T51, cons(T52, T53)), T55)
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_GA(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87), .(T85, T89)) → FLATTEN1_IN_GA(cons(T86, T87), T89)
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106), T108) → U4_GA(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106), T108) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))), T108)
flatten1_in_ga(atom(T4), .(T4, [])) → flatten1_out_ga(atom(T4), .(T4, []))
flatten1_in_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, []))) → flatten1_out_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, [])))
flatten1_in_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_ga(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
flatten1_in_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_ga(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
flatten1_in_ga(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_ga(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
flatten1_in_ga(cons(cons(cons(T103, T104), T105), T106), T108) → U4_ga(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
U4_ga(T103, T104, T105, T106, T108, flatten1_out_ga(cons(T103, cons(T104, cons(T105, T106))), T108)) → flatten1_out_ga(cons(cons(cons(T103, T104), T105), T106), T108)
U3_ga(T85, T86, T87, T89, flatten1_out_ga(cons(T86, T87), T89)) → flatten1_out_ga(cons(cons(atom(T85), T86), T87), .(T85, T89))
U2_ga(T8, T51, T52, T53, T55, flatten1_out_ga(cons(T51, cons(T52, T53)), T55)) → flatten1_out_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55))
U1_ga(T8, T29, T30, T32, flatten1_out_ga(T30, T32)) → flatten1_out_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32)))
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → FLATTEN1_IN_GA(cons(T51, cons(T52, T53)), T55)
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → FLATTEN1_IN_GA(T30, T32)
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87), .(T85, T89)) → FLATTEN1_IN_GA(cons(T86, T87), T89)
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106), T108) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))), T108)
flatten1_in_ga(atom(T4), .(T4, [])) → flatten1_out_ga(atom(T4), .(T4, []))
flatten1_in_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, []))) → flatten1_out_ga(cons(atom(T8), atom(T16)), .(T8, .(T16, [])))
flatten1_in_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → U1_ga(T8, T29, T30, T32, flatten1_in_ga(T30, T32))
flatten1_in_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → U2_ga(T8, T51, T52, T53, T55, flatten1_in_ga(cons(T51, cons(T52, T53)), T55))
flatten1_in_ga(cons(cons(atom(T85), T86), T87), .(T85, T89)) → U3_ga(T85, T86, T87, T89, flatten1_in_ga(cons(T86, T87), T89))
flatten1_in_ga(cons(cons(cons(T103, T104), T105), T106), T108) → U4_ga(T103, T104, T105, T106, T108, flatten1_in_ga(cons(T103, cons(T104, cons(T105, T106))), T108))
U4_ga(T103, T104, T105, T106, T108, flatten1_out_ga(cons(T103, cons(T104, cons(T105, T106))), T108)) → flatten1_out_ga(cons(cons(cons(T103, T104), T105), T106), T108)
U3_ga(T85, T86, T87, T89, flatten1_out_ga(cons(T86, T87), T89)) → flatten1_out_ga(cons(cons(atom(T85), T86), T87), .(T85, T89))
U2_ga(T8, T51, T52, T53, T55, flatten1_out_ga(cons(T51, cons(T52, T53)), T55)) → flatten1_out_ga(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55))
U1_ga(T8, T29, T30, T32, flatten1_out_ga(T30, T32)) → flatten1_out_ga(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32)))
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53)), .(T8, T55)) → FLATTEN1_IN_GA(cons(T51, cons(T52, T53)), T55)
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30)), .(T8, .(T29, T32))) → FLATTEN1_IN_GA(T30, T32)
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87), .(T85, T89)) → FLATTEN1_IN_GA(cons(T86, T87), T89)
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106), T108) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))), T108)
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53))) → FLATTEN1_IN_GA(cons(T51, cons(T52, T53)))
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30))) → FLATTEN1_IN_GA(T30)
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87)) → FLATTEN1_IN_GA(cons(T86, T87))
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106)) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))))
No rules are removed from R.
FLATTEN1_IN_GA(cons(atom(T8), cons(cons(T51, T52), T53))) → FLATTEN1_IN_GA(cons(T51, cons(T52, T53)))
FLATTEN1_IN_GA(cons(atom(T8), cons(atom(T29), T30))) → FLATTEN1_IN_GA(T30)
FLATTEN1_IN_GA(cons(cons(atom(T85), T86), T87)) → FLATTEN1_IN_GA(cons(T86, T87))
POL(FLATTEN1_IN_GA(x1)) = 2·x1
POL(atom(x1)) = x1
POL(cons(x1, x2)) = x1 + x2
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106)) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))))
FLATTEN1_IN_GA(cons(cons(cons(T103, T104), T105), T106)) → FLATTEN1_IN_GA(cons(T103, cons(T104, cons(T105, T106))))
POL(FLATTEN1_IN_GA(x1)) = 2·x1
POL(cons(x1, x2)) = 2 + 2·x1 + x2