0 Prolog
↳1 CutEliminatorProof (⇐)
↳2 Prolog
↳3 PrologToPiTRSProof (⇐)
↳4 PiTRS
↳5 DependencyPairsProof (⇔)
↳6 PiDP
↳7 DependencyGraphProof (⇔)
↳8 PiDP
↳9 PiDPToQDPProof (⇐)
↳10 QDP
↳11 UsableRulesReductionPairsProof (⇔)
↳12 QDP
↳13 PrologToPiTRSProof (⇐)
↳14 PiTRS
↳15 DependencyPairsProof (⇔)
↳16 PiDP
↳17 DependencyGraphProof (⇔)
↳18 PiDP
↳19 PiDPToQDPProof (⇐)
↳20 QDP
↳21 QDPOrderProof (⇔)
↳22 QDP
↳23 DependencyGraphProof (⇔)
↳24 TRUE
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → U3_GAA(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_GAA(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → U3_GAA(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_GAA(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
U1_GAA(H, T, hidden_flatten_out_gaa) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
hidden_flatten_in_gaa([]) → hidden_flatten_out_gaa
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(hidden_flatten_in_gaa(T))
U3_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
U1_gaa(H, T, hidden_flatten_out_gaa) → U2_gaa(hidden_flatten_in_gaa(.(H, T)))
U2_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
hidden_flatten_in_gaa(x0)
U3_gaa(x0)
U1_gaa(x0, x1, x2)
U2_gaa(x0)
Used ordering: POLO with Polynomial interpretation [POLO]:
hidden_flatten_in_gaa([]) → hidden_flatten_out_gaa
POL(.(x1, x2)) = x1 + x2
POL(HIDDEN_FLATTEN_IN_GAA(x1)) = x1
POL(U1_GAA(x1, x2, x3)) = x1 + x2 + x3
POL(U1_gaa(x1, x2, x3)) = x1 + x2 + x3
POL(U2_gaa(x1)) = x1
POL(U3_gaa(x1)) = x1
POL([]) = 2
POL(hidden_flatten_in_gaa(x1)) = x1
POL(hidden_flatten_out_gaa) = 0
U1_GAA(H, T, hidden_flatten_out_gaa) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(hidden_flatten_in_gaa(T))
U3_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
U1_gaa(H, T, hidden_flatten_out_gaa) → U2_gaa(hidden_flatten_in_gaa(.(H, T)))
U2_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
hidden_flatten_in_gaa(x0)
U3_gaa(x0)
U1_gaa(x0, x1, x2)
U2_gaa(x0)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → U3_GAA(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_GAA(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → U3_GAA(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_GAA(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
U1_GAA(H, T, L, hidden_flatten_out_gaa(L)) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, L, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
hidden_flatten_in_gaa([]) → hidden_flatten_out_gaa([])
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, L, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(H, T, hidden_flatten_in_gaa(T))
U3_gaa(H, T, hidden_flatten_out_gaa(T)) → hidden_flatten_out_gaa(.(H, T))
U1_gaa(H, T, L, hidden_flatten_out_gaa(L)) → U2_gaa(H, T, L, hidden_flatten_in_gaa(.(H, T)))
U2_gaa(H, T, L, hidden_flatten_out_gaa(.(H, T))) → hidden_flatten_out_gaa(.(.(H, T), L))
hidden_flatten_in_gaa(x0)
U3_gaa(x0, x1, x2)
U1_gaa(x0, x1, x2, x3)
U2_gaa(x0, x1, x2, x3)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, L, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
POL(.(x1, x2)) = 1 + x1 + x2
POL(HIDDEN_FLATTEN_IN_GAA(x1)) = x1
POL(U1_GAA(x1, x2, x3, x4)) = 1 + x1 + x2
POL(U1_gaa(x1, x2, x3, x4)) = 0
POL(U2_gaa(x1, x2, x3, x4)) = 0
POL(U3_gaa(x1, x2, x3)) = 0
POL([]) = 0
POL(hidden_flatten_in_gaa(x1)) = 0
POL(hidden_flatten_out_gaa(x1)) = 0
U1_GAA(H, T, L, hidden_flatten_out_gaa(L)) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
hidden_flatten_in_gaa([]) → hidden_flatten_out_gaa([])
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, L, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(H, T, hidden_flatten_in_gaa(T))
U3_gaa(H, T, hidden_flatten_out_gaa(T)) → hidden_flatten_out_gaa(.(H, T))
U1_gaa(H, T, L, hidden_flatten_out_gaa(L)) → U2_gaa(H, T, L, hidden_flatten_in_gaa(.(H, T)))
U2_gaa(H, T, L, hidden_flatten_out_gaa(.(H, T))) → hidden_flatten_out_gaa(.(.(H, T), L))
hidden_flatten_in_gaa(x0)
U3_gaa(x0, x1, x2)
U1_gaa(x0, x1, x2, x3)
U2_gaa(x0, x1, x2, x3)