0 Prolog
↳1 PrologToPrologProblemTransformerProof (⇐)
↳2 Prolog
↳3 PrologToPiTRSProof (⇐)
↳4 PiTRS
↳5 DependencyPairsProof (⇔)
↳6 PiDP
↳7 DependencyGraphProof (⇔)
↳8 AND
↳9 PiDP
↳10 UsableRulesProof (⇔)
↳11 PiDP
↳12 PiDPToQDPProof (⇐)
↳13 QDP
↳14 NonTerminationProof (⇔)
↳15 FALSE
↳16 PiDP
↳17 UsableRulesProof (⇔)
↳18 PiDP
↳19 PiDPToQDPProof (⇐)
↳20 QDP
↳21 UsableRulesReductionPairsProof (⇔)
↳22 QDP
↳23 PisEmptyProof (⇔)
↳24 TRUE
↳25 PrologToPiTRSProof (⇐)
↳26 PiTRS
↳27 DependencyPairsProof (⇔)
↳28 PiDP
↳29 DependencyGraphProof (⇔)
↳30 AND
↳31 PiDP
↳32 UsableRulesProof (⇔)
↳33 PiDP
↳34 PiDPToQDPProof (⇐)
↳35 QDP
↳36 NonTerminationProof (⇔)
↳37 FALSE
↳38 PiDP
↳39 UsableRulesProof (⇔)
↳40 PiDP
↳41 PiDPToQDPProof (⇐)
↳42 QDP
↳43 UsableRulesReductionPairsProof (⇔)
↳44 QDP
↳45 PisEmptyProof (⇔)
↳46 TRUE
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → U2_GA(T12, T18, T20, flatten19_in_aa(T20, X30))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → FLATTEN19_IN_AA(T20, X30)
FLATTEN19_IN_AA(.(T18, T20), X16) → U1_AA(T18, T20, X16, flatten19_in_aa(T20, X30))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → U3_GA(T28, T29, T27, flatten1_in_ga(T29, T27))
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → U4_GA(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → U2_GA(T12, T18, T20, flatten19_in_aa(T20, X30))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → FLATTEN19_IN_AA(T20, X30)
FLATTEN19_IN_AA(.(T18, T20), X16) → U1_AA(T18, T20, X16, flatten19_in_aa(T20, X30))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → U3_GA(T28, T29, T27, flatten1_in_ga(T29, T27))
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → U4_GA(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
FLATTEN19_IN_AA → FLATTEN19_IN_AA
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
FLATTEN1_IN_GA(cons(cons(T37, T38), T39)) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)))
FLATTEN1_IN_GA(cons(atom(T28), T29)) → FLATTEN1_IN_GA(T29)
No rules are removed from R.
FLATTEN1_IN_GA(cons(cons(T37, T38), T39)) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)))
FLATTEN1_IN_GA(cons(atom(T28), T29)) → FLATTEN1_IN_GA(T29)
POL(FLATTEN1_IN_GA(x1)) = 2·x1
POL(atom(x1)) = x1
POL(cons(x1, x2)) = 2 + 2·x1 + x2
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → U2_GA(T12, T18, T20, flatten19_in_aa(T20, X30))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → FLATTEN19_IN_AA(T20, X30)
FLATTEN19_IN_AA(.(T18, T20), X16) → U1_AA(T18, T20, X16, flatten19_in_aa(T20, X30))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → U3_GA(T28, T29, T27, flatten1_in_ga(T29, T27))
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → U4_GA(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → U2_GA(T12, T18, T20, flatten19_in_aa(T20, X30))
FLATTEN1_IN_GA(nil, .(T12, .(T18, T20))) → FLATTEN19_IN_AA(T20, X30)
FLATTEN19_IN_AA(.(T18, T20), X16) → U1_AA(T18, T20, X16, flatten19_in_aa(T20, X30))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → U3_GA(T28, T29, T27, flatten1_in_ga(T29, T27))
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → U4_GA(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN19_IN_AA(.(T18, T20), X16) → FLATTEN19_IN_AA(T20, X30)
FLATTEN19_IN_AA → FLATTEN19_IN_AA
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
flatten1_in_ga(atom(T7), .(T7, [])) → flatten1_out_ga(atom(T7), .(T7, []))
flatten1_in_ga(nil, .(T12, .(T18, T20))) → U2_ga(T12, T18, T20, flatten19_in_aa(T20, X30))
flatten19_in_aa(.(T18, T20), X16) → U1_aa(T18, T20, X16, flatten19_in_aa(T20, X30))
U1_aa(T18, T20, X16, flatten19_out_aa(T20, X30)) → flatten19_out_aa(.(T18, T20), X16)
U2_ga(T12, T18, T20, flatten19_out_aa(T20, X30)) → flatten1_out_ga(nil, .(T12, .(T18, T20)))
flatten1_in_ga(cons(atom(T28), T29), .(T28, T27)) → U3_ga(T28, T29, T27, flatten1_in_ga(T29, T27))
flatten1_in_ga(cons(cons(T37, T38), T39), T32) → U4_ga(T37, T38, T39, T32, flatten1_in_ga(cons(T37, cons(T38, T39)), T32))
U4_ga(T37, T38, T39, T32, flatten1_out_ga(cons(T37, cons(T38, T39)), T32)) → flatten1_out_ga(cons(cons(T37, T38), T39), T32)
U3_ga(T28, T29, T27, flatten1_out_ga(T29, T27)) → flatten1_out_ga(cons(atom(T28), T29), .(T28, T27))
FLATTEN1_IN_GA(cons(cons(T37, T38), T39), T32) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)), T32)
FLATTEN1_IN_GA(cons(atom(T28), T29), .(T28, T27)) → FLATTEN1_IN_GA(T29, T27)
FLATTEN1_IN_GA(cons(cons(T37, T38), T39)) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)))
FLATTEN1_IN_GA(cons(atom(T28), T29)) → FLATTEN1_IN_GA(T29)
No rules are removed from R.
FLATTEN1_IN_GA(cons(cons(T37, T38), T39)) → FLATTEN1_IN_GA(cons(T37, cons(T38, T39)))
FLATTEN1_IN_GA(cons(atom(T28), T29)) → FLATTEN1_IN_GA(T29)
POL(FLATTEN1_IN_GA(x1)) = 2·x1
POL(atom(x1)) = x1
POL(cons(x1, x2)) = 2 + 2·x1 + x2