(0) Obligation:

Clauses:

palindrome(L) :- ','(halves(L, X1s, X2s, EvenOdd), ','(eq(EvenOdd, even), eq(X1s, X2s))).
palindrome(L) :- ','(halves(L, X1s, X2s, EvenOdd), ','(eq(EvenOdd, odd), last(X1s, X1, X2s))).
halves([], [], [], even).
halves(.(X, []), .(X, []), [], odd).
halves(.(T, .(Y, Xs)), .(T, Ts), .(R, Rs), EvenOdd) :- ','(last(.(Y, Xs), R, Rests), halves(Rests, Ts, Rs, EvenOdd)).
last(.(T, []), T, []).
last(.(H, T), X, .(H, M)) :- last(T, X, M).
eq(X, X).

Queries:

palindrome(g).

(1) PrologToDTProblemTransformerProof (SOUND transformation)

Built DT problem from termination graph.

(2) Obligation:

Triples:

last32(.(T54, T55), X139, .(T54, X140)) :- last32(T55, X139, X140).
last24(T41, T42, X113, .(T41, X114)) :- last32(T42, X113, X114).
halves41(.(T72, .(T73, T74)), .(T72, X184), .(X185, X186), X187) :- last24(T73, T74, X185, X183).
halves41(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) :- ','(lastc24(T73, T74, T77, T78), halves41(T78, X184, X186, X187)).
last70(.(T114, T115), X246, .(T114, T116)) :- last70(T115, X246, T116).
palindrome1(.(T21, .(T22, T23))) :- last24(T22, T23, X75, X73).
palindrome1(.(T21, .(T22, T23))) :- ','(lastc24(T22, T23, T26, T27), halves41(T27, X74, X76, X77)).
palindrome1(T92) :- halves41(T92, X214, X215, X216).
palindrome1(T92) :- ','(halvesc41(T92, T93, T94, odd), last70(T93, X217, T94)).

Clauses:

lastc32(.(T49, []), T49, []).
lastc32(.(T54, T55), X139, .(T54, X140)) :- lastc32(T55, X139, X140).
lastc24(T34, [], T34, []).
lastc24(T41, T42, X113, .(T41, X114)) :- lastc32(T42, X113, X114).
halvesc41([], [], [], even).
halvesc41(.(T65, []), .(T65, []), [], odd).
halvesc41(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) :- ','(lastc24(T73, T74, T77, T78), halvesc41(T78, X184, X186, X187)).
lastc70(.(T107, []), T107, []).
lastc70(.(T114, T115), X246, .(T114, T116)) :- lastc70(T115, X246, T116).

Afs:

palindrome1(x1)  =  palindrome1(x1)

(3) TriplesToPiDPProof (SOUND transformation)

We use the technique of [LOPSTR]. With regard to the inferred argument filtering the predicates were used in the following modes:
palindrome1_in: (b)
last24_in: (b,b,f,f)
last32_in: (b,f,f)
lastc24_in: (b,b,f,f)
lastc32_in: (b,f,f)
halves41_in: (b,f,f,f)
halvesc41_in: (b,f,f,b)
last70_in: (b,f,b)
Transforming TRIPLES into the following Term Rewriting System:
Pi DP problem:
The TRS P consists of the following rules:

PALINDROME1_IN_G(.(T21, .(T22, T23))) → U7_G(T21, T22, T23, last24_in_ggaa(T22, T23, X75, X73))
PALINDROME1_IN_G(.(T21, .(T22, T23))) → LAST24_IN_GGAA(T22, T23, X75, X73)
LAST24_IN_GGAA(T41, T42, X113, .(T41, X114)) → U2_GGAA(T41, T42, X113, X114, last32_in_gaa(T42, X113, X114))
LAST24_IN_GGAA(T41, T42, X113, .(T41, X114)) → LAST32_IN_GAA(T42, X113, X114)
LAST32_IN_GAA(.(T54, T55), X139, .(T54, X140)) → U1_GAA(T54, T55, X139, X140, last32_in_gaa(T55, X139, X140))
LAST32_IN_GAA(.(T54, T55), X139, .(T54, X140)) → LAST32_IN_GAA(T55, X139, X140)
PALINDROME1_IN_G(.(T21, .(T22, T23))) → U8_G(T21, T22, T23, lastc24_in_ggaa(T22, T23, T26, T27))
U8_G(T21, T22, T23, lastc24_out_ggaa(T22, T23, T26, T27)) → U9_G(T21, T22, T23, halves41_in_gaaa(T27, X74, X76, X77))
U8_G(T21, T22, T23, lastc24_out_ggaa(T22, T23, T26, T27)) → HALVES41_IN_GAAA(T27, X74, X76, X77)
HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(X185, X186), X187) → U3_GAAA(T72, T73, T74, X184, X185, X186, X187, last24_in_ggaa(T73, T74, X185, X183))
HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(X185, X186), X187) → LAST24_IN_GGAA(T73, T74, X185, X183)
HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U5_GAAA(T72, T73, T74, X184, T77, X186, X187, halves41_in_gaaa(T78, X184, X186, X187))
U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → HALVES41_IN_GAAA(T78, X184, X186, X187)
PALINDROME1_IN_G(T92) → U10_G(T92, halves41_in_gaaa(T92, X214, X215, X216))
PALINDROME1_IN_G(T92) → HALVES41_IN_GAAA(T92, X214, X215, X216)
PALINDROME1_IN_G(T92) → U11_G(T92, halvesc41_in_gaag(T92, T93, T94, odd))
U11_G(T92, halvesc41_out_gaag(T92, T93, T94, odd)) → U12_G(T92, last70_in_gag(T93, X217, T94))
U11_G(T92, halvesc41_out_gaag(T92, T93, T94, odd)) → LAST70_IN_GAG(T93, X217, T94)
LAST70_IN_GAG(.(T114, T115), X246, .(T114, T116)) → U6_GAG(T114, T115, X246, T116, last70_in_gag(T115, X246, T116))
LAST70_IN_GAG(.(T114, T115), X246, .(T114, T116)) → LAST70_IN_GAG(T115, X246, T116)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, [], T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42, X113, .(T41, X114)) → U15_ggaa(T41, T42, X113, X114, lastc32_in_gaa(T42, X113, X114))
lastc32_in_gaa(.(T49, []), T49, []) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55), X139, .(T54, X140)) → U14_gaa(T54, T55, X139, X140, lastc32_in_gaa(T55, X139, X140))
U14_gaa(T54, T55, X139, X140, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))
U15_ggaa(T41, T42, X113, X114, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
halvesc41_in_gaag([], [], [], even) → halvesc41_out_gaag([], [], [], even)
halvesc41_in_gaag(.(T65, []), .(T65, []), [], odd) → halvesc41_out_gaag(.(T65, []), .(T65, []), [], odd)
halvesc41_in_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_in_gaag(T78, X184, X186, X187))
U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_out_gaag(T78, X184, X186, X187)) → halvesc41_out_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
last24_in_ggaa(x1, x2, x3, x4)  =  last24_in_ggaa(x1, x2)
last32_in_gaa(x1, x2, x3)  =  last32_in_gaa(x1)
lastc24_in_ggaa(x1, x2, x3, x4)  =  lastc24_in_ggaa(x1, x2)
[]  =  []
lastc24_out_ggaa(x1, x2, x3, x4)  =  lastc24_out_ggaa(x1, x2, x3, x4)
U15_ggaa(x1, x2, x3, x4, x5)  =  U15_ggaa(x1, x2, x5)
lastc32_in_gaa(x1, x2, x3)  =  lastc32_in_gaa(x1)
lastc32_out_gaa(x1, x2, x3)  =  lastc32_out_gaa(x1, x2, x3)
U14_gaa(x1, x2, x3, x4, x5)  =  U14_gaa(x1, x2, x5)
halves41_in_gaaa(x1, x2, x3, x4)  =  halves41_in_gaaa(x1)
halvesc41_in_gaag(x1, x2, x3, x4)  =  halvesc41_in_gaag(x1, x4)
even  =  even
halvesc41_out_gaag(x1, x2, x3, x4)  =  halvesc41_out_gaag(x1, x2, x3, x4)
odd  =  odd
U16_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U16_gaag(x1, x2, x3, x7, x8)
U17_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U17_gaag(x1, x2, x3, x5, x7, x8)
last70_in_gag(x1, x2, x3)  =  last70_in_gag(x1, x3)
PALINDROME1_IN_G(x1)  =  PALINDROME1_IN_G(x1)
U7_G(x1, x2, x3, x4)  =  U7_G(x1, x2, x3, x4)
LAST24_IN_GGAA(x1, x2, x3, x4)  =  LAST24_IN_GGAA(x1, x2)
U2_GGAA(x1, x2, x3, x4, x5)  =  U2_GGAA(x1, x2, x5)
LAST32_IN_GAA(x1, x2, x3)  =  LAST32_IN_GAA(x1)
U1_GAA(x1, x2, x3, x4, x5)  =  U1_GAA(x1, x2, x5)
U8_G(x1, x2, x3, x4)  =  U8_G(x1, x2, x3, x4)
U9_G(x1, x2, x3, x4)  =  U9_G(x1, x2, x3, x4)
HALVES41_IN_GAAA(x1, x2, x3, x4)  =  HALVES41_IN_GAAA(x1)
U3_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U3_GAAA(x1, x2, x3, x8)
U4_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U4_GAAA(x1, x2, x3, x8)
U5_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U5_GAAA(x1, x2, x3, x8)
U10_G(x1, x2)  =  U10_G(x1, x2)
U11_G(x1, x2)  =  U11_G(x1, x2)
U12_G(x1, x2)  =  U12_G(x1, x2)
LAST70_IN_GAG(x1, x2, x3)  =  LAST70_IN_GAG(x1, x3)
U6_GAG(x1, x2, x3, x4, x5)  =  U6_GAG(x1, x2, x4, x5)

We have to consider all (P,R,Pi)-chains

Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES

(4) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PALINDROME1_IN_G(.(T21, .(T22, T23))) → U7_G(T21, T22, T23, last24_in_ggaa(T22, T23, X75, X73))
PALINDROME1_IN_G(.(T21, .(T22, T23))) → LAST24_IN_GGAA(T22, T23, X75, X73)
LAST24_IN_GGAA(T41, T42, X113, .(T41, X114)) → U2_GGAA(T41, T42, X113, X114, last32_in_gaa(T42, X113, X114))
LAST24_IN_GGAA(T41, T42, X113, .(T41, X114)) → LAST32_IN_GAA(T42, X113, X114)
LAST32_IN_GAA(.(T54, T55), X139, .(T54, X140)) → U1_GAA(T54, T55, X139, X140, last32_in_gaa(T55, X139, X140))
LAST32_IN_GAA(.(T54, T55), X139, .(T54, X140)) → LAST32_IN_GAA(T55, X139, X140)
PALINDROME1_IN_G(.(T21, .(T22, T23))) → U8_G(T21, T22, T23, lastc24_in_ggaa(T22, T23, T26, T27))
U8_G(T21, T22, T23, lastc24_out_ggaa(T22, T23, T26, T27)) → U9_G(T21, T22, T23, halves41_in_gaaa(T27, X74, X76, X77))
U8_G(T21, T22, T23, lastc24_out_ggaa(T22, T23, T26, T27)) → HALVES41_IN_GAAA(T27, X74, X76, X77)
HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(X185, X186), X187) → U3_GAAA(T72, T73, T74, X184, X185, X186, X187, last24_in_ggaa(T73, T74, X185, X183))
HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(X185, X186), X187) → LAST24_IN_GGAA(T73, T74, X185, X183)
HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U5_GAAA(T72, T73, T74, X184, T77, X186, X187, halves41_in_gaaa(T78, X184, X186, X187))
U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → HALVES41_IN_GAAA(T78, X184, X186, X187)
PALINDROME1_IN_G(T92) → U10_G(T92, halves41_in_gaaa(T92, X214, X215, X216))
PALINDROME1_IN_G(T92) → HALVES41_IN_GAAA(T92, X214, X215, X216)
PALINDROME1_IN_G(T92) → U11_G(T92, halvesc41_in_gaag(T92, T93, T94, odd))
U11_G(T92, halvesc41_out_gaag(T92, T93, T94, odd)) → U12_G(T92, last70_in_gag(T93, X217, T94))
U11_G(T92, halvesc41_out_gaag(T92, T93, T94, odd)) → LAST70_IN_GAG(T93, X217, T94)
LAST70_IN_GAG(.(T114, T115), X246, .(T114, T116)) → U6_GAG(T114, T115, X246, T116, last70_in_gag(T115, X246, T116))
LAST70_IN_GAG(.(T114, T115), X246, .(T114, T116)) → LAST70_IN_GAG(T115, X246, T116)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, [], T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42, X113, .(T41, X114)) → U15_ggaa(T41, T42, X113, X114, lastc32_in_gaa(T42, X113, X114))
lastc32_in_gaa(.(T49, []), T49, []) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55), X139, .(T54, X140)) → U14_gaa(T54, T55, X139, X140, lastc32_in_gaa(T55, X139, X140))
U14_gaa(T54, T55, X139, X140, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))
U15_ggaa(T41, T42, X113, X114, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
halvesc41_in_gaag([], [], [], even) → halvesc41_out_gaag([], [], [], even)
halvesc41_in_gaag(.(T65, []), .(T65, []), [], odd) → halvesc41_out_gaag(.(T65, []), .(T65, []), [], odd)
halvesc41_in_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_in_gaag(T78, X184, X186, X187))
U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_out_gaag(T78, X184, X186, X187)) → halvesc41_out_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
last24_in_ggaa(x1, x2, x3, x4)  =  last24_in_ggaa(x1, x2)
last32_in_gaa(x1, x2, x3)  =  last32_in_gaa(x1)
lastc24_in_ggaa(x1, x2, x3, x4)  =  lastc24_in_ggaa(x1, x2)
[]  =  []
lastc24_out_ggaa(x1, x2, x3, x4)  =  lastc24_out_ggaa(x1, x2, x3, x4)
U15_ggaa(x1, x2, x3, x4, x5)  =  U15_ggaa(x1, x2, x5)
lastc32_in_gaa(x1, x2, x3)  =  lastc32_in_gaa(x1)
lastc32_out_gaa(x1, x2, x3)  =  lastc32_out_gaa(x1, x2, x3)
U14_gaa(x1, x2, x3, x4, x5)  =  U14_gaa(x1, x2, x5)
halves41_in_gaaa(x1, x2, x3, x4)  =  halves41_in_gaaa(x1)
halvesc41_in_gaag(x1, x2, x3, x4)  =  halvesc41_in_gaag(x1, x4)
even  =  even
halvesc41_out_gaag(x1, x2, x3, x4)  =  halvesc41_out_gaag(x1, x2, x3, x4)
odd  =  odd
U16_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U16_gaag(x1, x2, x3, x7, x8)
U17_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U17_gaag(x1, x2, x3, x5, x7, x8)
last70_in_gag(x1, x2, x3)  =  last70_in_gag(x1, x3)
PALINDROME1_IN_G(x1)  =  PALINDROME1_IN_G(x1)
U7_G(x1, x2, x3, x4)  =  U7_G(x1, x2, x3, x4)
LAST24_IN_GGAA(x1, x2, x3, x4)  =  LAST24_IN_GGAA(x1, x2)
U2_GGAA(x1, x2, x3, x4, x5)  =  U2_GGAA(x1, x2, x5)
LAST32_IN_GAA(x1, x2, x3)  =  LAST32_IN_GAA(x1)
U1_GAA(x1, x2, x3, x4, x5)  =  U1_GAA(x1, x2, x5)
U8_G(x1, x2, x3, x4)  =  U8_G(x1, x2, x3, x4)
U9_G(x1, x2, x3, x4)  =  U9_G(x1, x2, x3, x4)
HALVES41_IN_GAAA(x1, x2, x3, x4)  =  HALVES41_IN_GAAA(x1)
U3_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U3_GAAA(x1, x2, x3, x8)
U4_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U4_GAAA(x1, x2, x3, x8)
U5_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U5_GAAA(x1, x2, x3, x8)
U10_G(x1, x2)  =  U10_G(x1, x2)
U11_G(x1, x2)  =  U11_G(x1, x2)
U12_G(x1, x2)  =  U12_G(x1, x2)
LAST70_IN_GAG(x1, x2, x3)  =  LAST70_IN_GAG(x1, x3)
U6_GAG(x1, x2, x3, x4, x5)  =  U6_GAG(x1, x2, x4, x5)

We have to consider all (P,R,Pi)-chains

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 17 less nodes.

(6) Complex Obligation (AND)

(7) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

LAST70_IN_GAG(.(T114, T115), X246, .(T114, T116)) → LAST70_IN_GAG(T115, X246, T116)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, [], T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42, X113, .(T41, X114)) → U15_ggaa(T41, T42, X113, X114, lastc32_in_gaa(T42, X113, X114))
lastc32_in_gaa(.(T49, []), T49, []) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55), X139, .(T54, X140)) → U14_gaa(T54, T55, X139, X140, lastc32_in_gaa(T55, X139, X140))
U14_gaa(T54, T55, X139, X140, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))
U15_ggaa(T41, T42, X113, X114, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
halvesc41_in_gaag([], [], [], even) → halvesc41_out_gaag([], [], [], even)
halvesc41_in_gaag(.(T65, []), .(T65, []), [], odd) → halvesc41_out_gaag(.(T65, []), .(T65, []), [], odd)
halvesc41_in_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_in_gaag(T78, X184, X186, X187))
U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_out_gaag(T78, X184, X186, X187)) → halvesc41_out_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
lastc24_in_ggaa(x1, x2, x3, x4)  =  lastc24_in_ggaa(x1, x2)
[]  =  []
lastc24_out_ggaa(x1, x2, x3, x4)  =  lastc24_out_ggaa(x1, x2, x3, x4)
U15_ggaa(x1, x2, x3, x4, x5)  =  U15_ggaa(x1, x2, x5)
lastc32_in_gaa(x1, x2, x3)  =  lastc32_in_gaa(x1)
lastc32_out_gaa(x1, x2, x3)  =  lastc32_out_gaa(x1, x2, x3)
U14_gaa(x1, x2, x3, x4, x5)  =  U14_gaa(x1, x2, x5)
halvesc41_in_gaag(x1, x2, x3, x4)  =  halvesc41_in_gaag(x1, x4)
even  =  even
halvesc41_out_gaag(x1, x2, x3, x4)  =  halvesc41_out_gaag(x1, x2, x3, x4)
odd  =  odd
U16_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U16_gaag(x1, x2, x3, x7, x8)
U17_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U17_gaag(x1, x2, x3, x5, x7, x8)
LAST70_IN_GAG(x1, x2, x3)  =  LAST70_IN_GAG(x1, x3)

We have to consider all (P,R,Pi)-chains

(8) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

LAST70_IN_GAG(.(T114, T115), X246, .(T114, T116)) → LAST70_IN_GAG(T115, X246, T116)

R is empty.
The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
LAST70_IN_GAG(x1, x2, x3)  =  LAST70_IN_GAG(x1, x3)

We have to consider all (P,R,Pi)-chains

(10) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(11) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LAST70_IN_GAG(.(T114, T115), .(T114, T116)) → LAST70_IN_GAG(T115, T116)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(12) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • LAST70_IN_GAG(.(T114, T115), .(T114, T116)) → LAST70_IN_GAG(T115, T116)
    The graph contains the following edges 1 > 1, 2 > 2

(13) YES

(14) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

LAST32_IN_GAA(.(T54, T55), X139, .(T54, X140)) → LAST32_IN_GAA(T55, X139, X140)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, [], T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42, X113, .(T41, X114)) → U15_ggaa(T41, T42, X113, X114, lastc32_in_gaa(T42, X113, X114))
lastc32_in_gaa(.(T49, []), T49, []) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55), X139, .(T54, X140)) → U14_gaa(T54, T55, X139, X140, lastc32_in_gaa(T55, X139, X140))
U14_gaa(T54, T55, X139, X140, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))
U15_ggaa(T41, T42, X113, X114, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
halvesc41_in_gaag([], [], [], even) → halvesc41_out_gaag([], [], [], even)
halvesc41_in_gaag(.(T65, []), .(T65, []), [], odd) → halvesc41_out_gaag(.(T65, []), .(T65, []), [], odd)
halvesc41_in_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_in_gaag(T78, X184, X186, X187))
U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_out_gaag(T78, X184, X186, X187)) → halvesc41_out_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
lastc24_in_ggaa(x1, x2, x3, x4)  =  lastc24_in_ggaa(x1, x2)
[]  =  []
lastc24_out_ggaa(x1, x2, x3, x4)  =  lastc24_out_ggaa(x1, x2, x3, x4)
U15_ggaa(x1, x2, x3, x4, x5)  =  U15_ggaa(x1, x2, x5)
lastc32_in_gaa(x1, x2, x3)  =  lastc32_in_gaa(x1)
lastc32_out_gaa(x1, x2, x3)  =  lastc32_out_gaa(x1, x2, x3)
U14_gaa(x1, x2, x3, x4, x5)  =  U14_gaa(x1, x2, x5)
halvesc41_in_gaag(x1, x2, x3, x4)  =  halvesc41_in_gaag(x1, x4)
even  =  even
halvesc41_out_gaag(x1, x2, x3, x4)  =  halvesc41_out_gaag(x1, x2, x3, x4)
odd  =  odd
U16_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U16_gaag(x1, x2, x3, x7, x8)
U17_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U17_gaag(x1, x2, x3, x5, x7, x8)
LAST32_IN_GAA(x1, x2, x3)  =  LAST32_IN_GAA(x1)

We have to consider all (P,R,Pi)-chains

(15) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

LAST32_IN_GAA(.(T54, T55), X139, .(T54, X140)) → LAST32_IN_GAA(T55, X139, X140)

R is empty.
The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
LAST32_IN_GAA(x1, x2, x3)  =  LAST32_IN_GAA(x1)

We have to consider all (P,R,Pi)-chains

(17) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LAST32_IN_GAA(.(T54, T55)) → LAST32_IN_GAA(T55)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(19) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • LAST32_IN_GAA(.(T54, T55)) → LAST32_IN_GAA(T55)
    The graph contains the following edges 1 > 1

(20) YES

(21) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → HALVES41_IN_GAAA(T78, X184, X186, X187)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, [], T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42, X113, .(T41, X114)) → U15_ggaa(T41, T42, X113, X114, lastc32_in_gaa(T42, X113, X114))
lastc32_in_gaa(.(T49, []), T49, []) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55), X139, .(T54, X140)) → U14_gaa(T54, T55, X139, X140, lastc32_in_gaa(T55, X139, X140))
U14_gaa(T54, T55, X139, X140, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))
U15_ggaa(T41, T42, X113, X114, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
halvesc41_in_gaag([], [], [], even) → halvesc41_out_gaag([], [], [], even)
halvesc41_in_gaag(.(T65, []), .(T65, []), [], odd) → halvesc41_out_gaag(.(T65, []), .(T65, []), [], odd)
halvesc41_in_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U16_gaag(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_in_gaag(T78, X184, X186, X187))
U17_gaag(T72, T73, T74, X184, T77, X186, X187, halvesc41_out_gaag(T78, X184, X186, X187)) → halvesc41_out_gaag(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
lastc24_in_ggaa(x1, x2, x3, x4)  =  lastc24_in_ggaa(x1, x2)
[]  =  []
lastc24_out_ggaa(x1, x2, x3, x4)  =  lastc24_out_ggaa(x1, x2, x3, x4)
U15_ggaa(x1, x2, x3, x4, x5)  =  U15_ggaa(x1, x2, x5)
lastc32_in_gaa(x1, x2, x3)  =  lastc32_in_gaa(x1)
lastc32_out_gaa(x1, x2, x3)  =  lastc32_out_gaa(x1, x2, x3)
U14_gaa(x1, x2, x3, x4, x5)  =  U14_gaa(x1, x2, x5)
halvesc41_in_gaag(x1, x2, x3, x4)  =  halvesc41_in_gaag(x1, x4)
even  =  even
halvesc41_out_gaag(x1, x2, x3, x4)  =  halvesc41_out_gaag(x1, x2, x3, x4)
odd  =  odd
U16_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U16_gaag(x1, x2, x3, x7, x8)
U17_gaag(x1, x2, x3, x4, x5, x6, x7, x8)  =  U17_gaag(x1, x2, x3, x5, x7, x8)
HALVES41_IN_GAAA(x1, x2, x3, x4)  =  HALVES41_IN_GAAA(x1)
U4_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U4_GAAA(x1, x2, x3, x8)

We have to consider all (P,R,Pi)-chains

(22) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(23) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

HALVES41_IN_GAAA(.(T72, .(T73, T74)), .(T72, X184), .(T77, X186), X187) → U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_in_ggaa(T73, T74, T77, T78))
U4_GAAA(T72, T73, T74, X184, T77, X186, X187, lastc24_out_ggaa(T73, T74, T77, T78)) → HALVES41_IN_GAAA(T78, X184, X186, X187)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, [], T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42, X113, .(T41, X114)) → U15_ggaa(T41, T42, X113, X114, lastc32_in_gaa(T42, X113, X114))
U15_ggaa(T41, T42, X113, X114, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
lastc32_in_gaa(.(T49, []), T49, []) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55), X139, .(T54, X140)) → U14_gaa(T54, T55, X139, X140, lastc32_in_gaa(T55, X139, X140))
U14_gaa(T54, T55, X139, X140, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
lastc24_in_ggaa(x1, x2, x3, x4)  =  lastc24_in_ggaa(x1, x2)
[]  =  []
lastc24_out_ggaa(x1, x2, x3, x4)  =  lastc24_out_ggaa(x1, x2, x3, x4)
U15_ggaa(x1, x2, x3, x4, x5)  =  U15_ggaa(x1, x2, x5)
lastc32_in_gaa(x1, x2, x3)  =  lastc32_in_gaa(x1)
lastc32_out_gaa(x1, x2, x3)  =  lastc32_out_gaa(x1, x2, x3)
U14_gaa(x1, x2, x3, x4, x5)  =  U14_gaa(x1, x2, x5)
HALVES41_IN_GAAA(x1, x2, x3, x4)  =  HALVES41_IN_GAAA(x1)
U4_GAAA(x1, x2, x3, x4, x5, x6, x7, x8)  =  U4_GAAA(x1, x2, x3, x8)

We have to consider all (P,R,Pi)-chains

(24) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(25) Obligation:

Q DP problem:
The TRS P consists of the following rules:

HALVES41_IN_GAAA(.(T72, .(T73, T74))) → U4_GAAA(T72, T73, T74, lastc24_in_ggaa(T73, T74))
U4_GAAA(T72, T73, T74, lastc24_out_ggaa(T73, T74, T77, T78)) → HALVES41_IN_GAAA(T78)

The TRS R consists of the following rules:

lastc24_in_ggaa(T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42) → U15_ggaa(T41, T42, lastc32_in_gaa(T42))
U15_ggaa(T41, T42, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
lastc32_in_gaa(.(T49, [])) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55)) → U14_gaa(T54, T55, lastc32_in_gaa(T55))
U14_gaa(T54, T55, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))

The set Q consists of the following terms:

lastc24_in_ggaa(x0, x1)
U15_ggaa(x0, x1, x2)
lastc32_in_gaa(x0)
U14_gaa(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(26) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


HALVES41_IN_GAAA(.(T72, .(T73, T74))) → U4_GAAA(T72, T73, T74, lastc24_in_ggaa(T73, T74))
U4_GAAA(T72, T73, T74, lastc24_out_ggaa(T73, T74, T77, T78)) → HALVES41_IN_GAAA(T78)
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(.(x1, x2)) = 1 + x2   
POL(HALVES41_IN_GAAA(x1)) = x1   
POL(U14_gaa(x1, x2, x3)) = 1 + x3   
POL(U15_ggaa(x1, x2, x3)) = 1 + x3   
POL(U4_GAAA(x1, x2, x3, x4)) = x4   
POL([]) = 1   
POL(lastc24_in_ggaa(x1, x2)) = 1 + x2   
POL(lastc24_out_ggaa(x1, x2, x3, x4)) = 1 + x4   
POL(lastc32_in_gaa(x1)) = x1   
POL(lastc32_out_gaa(x1, x2, x3)) = 1 + x3   

The following usable rules [FROCOS05] were oriented:

lastc24_in_ggaa(T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42) → U15_ggaa(T41, T42, lastc32_in_gaa(T42))
lastc32_in_gaa(.(T49, [])) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55)) → U14_gaa(T54, T55, lastc32_in_gaa(T55))
U15_ggaa(T41, T42, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
U14_gaa(T54, T55, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))

(27) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

lastc24_in_ggaa(T34, []) → lastc24_out_ggaa(T34, [], T34, [])
lastc24_in_ggaa(T41, T42) → U15_ggaa(T41, T42, lastc32_in_gaa(T42))
U15_ggaa(T41, T42, lastc32_out_gaa(T42, X113, X114)) → lastc24_out_ggaa(T41, T42, X113, .(T41, X114))
lastc32_in_gaa(.(T49, [])) → lastc32_out_gaa(.(T49, []), T49, [])
lastc32_in_gaa(.(T54, T55)) → U14_gaa(T54, T55, lastc32_in_gaa(T55))
U14_gaa(T54, T55, lastc32_out_gaa(T55, X139, X140)) → lastc32_out_gaa(.(T54, T55), X139, .(T54, X140))

The set Q consists of the following terms:

lastc24_in_ggaa(x0, x1)
U15_ggaa(x0, x1, x2)
lastc32_in_gaa(x0)
U14_gaa(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(28) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(29) YES