(0) Obligation:

Clauses:

app(.(X, Xs), Ys, .(X, Zs)) :- app(Xs, Ys, Zs).
app([], Ys, Ys).
reverse(.(X, Xs), Ys) :- ','(reverse(Xs, Zs), app(Zs, .(X, []), Ys)).
reverse([], []).

Queries:

reverse(g,a).

(1) PrologToPrologProblemTransformerProof (SOUND transformation)

Built Prolog problem from termination graph.

(2) Obligation:

Clauses:

reverse10(.(T33, T34), X69) :- reverse10(T34, X68).
reverse10(.(T33, T34), X69) :- ','(reverse10(T34, T37), app18(T37, T33, X69)).
reverse10([], []).
app18(.(T55, T56), T57, .(T55, X112)) :- app18(T56, T57, X112).
app18([], T63, .(T63, [])).
app31(.(T91, T92), T93, .(T91, T95)) :- app31(T92, T93, T95).
app31([], T102, .(T102, [])).
reverse1(.(T6, .(T18, T19)), T9) :- reverse10(T19, X32).
reverse1(.(T6, .(T18, T19)), T9) :- ','(reverse10(T19, T22), app18(T22, T18, X33)).
reverse1(.(T6, .(T18, T19)), T9) :- ','(reverse10(T19, T22), ','(app18(T22, T18, T67), app31(T67, T6, T9))).
reverse1(.(T107, []), .(T107, [])).
reverse1([], []).

Queries:

reverse1(g,a).

(3) PrologToPiTRSProof (SOUND transformation)

We use the technique of [LOPSTR]. With regard to the inferred argument filtering the predicates were used in the following modes:
reverse1_in: (b,f)
reverse10_in: (b,f)
app18_in: (f,f,f)
app31_in: (b,f,f)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog

(4) Obligation:

Pi-finite rewrite system:
The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)

(5) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U6_GA(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → REVERSE10_IN_GA(T19, X32)
REVERSE10_IN_GA(.(T33, T34), X69) → U1_GA(T33, T34, X69, reverse10_in_ga(T34, X68))
REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)
REVERSE10_IN_GA(.(T33, T34), X69) → U2_GA(T33, T34, X69, reverse10_in_ga(T34, T37))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_GA(T33, T34, X69, app18_in_aaa(T37, T33, X69))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → APP18_IN_AAA(T37, T33, X69)
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → U4_AAA(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U7_GA(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → APP18_IN_AAA(T22, T18, X33)
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_GA(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → APP31_IN_GAA(T67, T6, T9)
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → U5_GAA(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)
REVERSE1_IN_GA(x1, x2)  =  REVERSE1_IN_GA(x1)
U6_GA(x1, x2, x3, x4, x5)  =  U6_GA(x5)
REVERSE10_IN_GA(x1, x2)  =  REVERSE10_IN_GA(x1)
U1_GA(x1, x2, x3, x4)  =  U1_GA(x4)
U2_GA(x1, x2, x3, x4)  =  U2_GA(x4)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x4)
APP18_IN_AAA(x1, x2, x3)  =  APP18_IN_AAA
U4_AAA(x1, x2, x3, x4, x5)  =  U4_AAA(x5)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x5)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x5)
U9_GA(x1, x2, x3, x4, x5)  =  U9_GA(x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x5)
APP31_IN_GAA(x1, x2, x3)  =  APP31_IN_GAA(x1)
U5_GAA(x1, x2, x3, x4, x5)  =  U5_GAA(x5)

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

(6) Obligation:

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

REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U6_GA(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → REVERSE10_IN_GA(T19, X32)
REVERSE10_IN_GA(.(T33, T34), X69) → U1_GA(T33, T34, X69, reverse10_in_ga(T34, X68))
REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)
REVERSE10_IN_GA(.(T33, T34), X69) → U2_GA(T33, T34, X69, reverse10_in_ga(T34, T37))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_GA(T33, T34, X69, app18_in_aaa(T37, T33, X69))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → APP18_IN_AAA(T37, T33, X69)
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → U4_AAA(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U7_GA(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → APP18_IN_AAA(T22, T18, X33)
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_GA(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → APP31_IN_GAA(T67, T6, T9)
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → U5_GAA(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)
REVERSE1_IN_GA(x1, x2)  =  REVERSE1_IN_GA(x1)
U6_GA(x1, x2, x3, x4, x5)  =  U6_GA(x5)
REVERSE10_IN_GA(x1, x2)  =  REVERSE10_IN_GA(x1)
U1_GA(x1, x2, x3, x4)  =  U1_GA(x4)
U2_GA(x1, x2, x3, x4)  =  U2_GA(x4)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x4)
APP18_IN_AAA(x1, x2, x3)  =  APP18_IN_AAA
U4_AAA(x1, x2, x3, x4, x5)  =  U4_AAA(x5)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x5)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x5)
U9_GA(x1, x2, x3, x4, x5)  =  U9_GA(x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x5)
APP31_IN_GAA(x1, x2, x3)  =  APP31_IN_GAA(x1)
U5_GAA(x1, x2, x3, x4, x5)  =  U5_GAA(x5)

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

(7) DependencyGraphProof (EQUIVALENT transformation)

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

(8) Complex Obligation (AND)

(9) Obligation:

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

APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)
APP31_IN_GAA(x1, x2, x3)  =  APP31_IN_GAA(x1)

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

(10) UsableRulesProof (EQUIVALENT transformation)

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

(11) Obligation:

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

APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

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

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

(12) PiDPToQDPProof (SOUND transformation)

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

(13) Obligation:

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

APP31_IN_GAA(.(T92)) → APP31_IN_GAA(T92)

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

(14) 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:

  • APP31_IN_GAA(.(T92)) → APP31_IN_GAA(T92)
    The graph contains the following edges 1 > 1

(15) YES

(16) Obligation:

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

APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)
APP18_IN_AAA(x1, x2, x3)  =  APP18_IN_AAA

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

(17) UsableRulesProof (EQUIVALENT transformation)

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

(18) Obligation:

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

APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)

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

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

(19) PiDPToQDPProof (SOUND transformation)

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

(20) Obligation:

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

APP18_IN_AAAAPP18_IN_AAA

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

(21) NonTerminationProof (EQUIVALENT transformation)

We used the non-termination processor [FROCOS05] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

s = APP18_IN_AAA evaluates to t =APP18_IN_AAA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:
  • Matcher: [ ]
  • Semiunifier: [ ]




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from APP18_IN_AAA to APP18_IN_AAA.



(22) NO

(23) Obligation:

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

REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga
U3_ga(x1, x2, x3, x4)  =  U3_ga(x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x3)
REVERSE10_IN_GA(x1, x2)  =  REVERSE10_IN_GA(x1)

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

(24) UsableRulesProof (EQUIVALENT transformation)

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

(25) Obligation:

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

REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)

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

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

(26) PiDPToQDPProof (SOUND transformation)

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

(27) Obligation:

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

REVERSE10_IN_GA(.(T34)) → REVERSE10_IN_GA(T34)

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

(28) 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:

  • REVERSE10_IN_GA(.(T34)) → REVERSE10_IN_GA(T34)
    The graph contains the following edges 1 > 1

(29) YES

(30) PrologToPiTRSProof (SOUND transformation)

We use the technique of [LOPSTR]. With regard to the inferred argument filtering the predicates were used in the following modes:
reverse1_in: (b,f)
reverse10_in: (b,f)
app18_in: (f,f,f)
app31_in: (b,f,f)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog

(31) Obligation:

Pi-finite rewrite system:
The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)

(32) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U6_GA(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → REVERSE10_IN_GA(T19, X32)
REVERSE10_IN_GA(.(T33, T34), X69) → U1_GA(T33, T34, X69, reverse10_in_ga(T34, X68))
REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)
REVERSE10_IN_GA(.(T33, T34), X69) → U2_GA(T33, T34, X69, reverse10_in_ga(T34, T37))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_GA(T33, T34, X69, app18_in_aaa(T37, T33, X69))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → APP18_IN_AAA(T37, T33, X69)
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → U4_AAA(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U7_GA(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → APP18_IN_AAA(T22, T18, X33)
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_GA(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → APP31_IN_GAA(T67, T6, T9)
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → U5_GAA(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)
REVERSE1_IN_GA(x1, x2)  =  REVERSE1_IN_GA(x1)
U6_GA(x1, x2, x3, x4, x5)  =  U6_GA(x3, x5)
REVERSE10_IN_GA(x1, x2)  =  REVERSE10_IN_GA(x1)
U1_GA(x1, x2, x3, x4)  =  U1_GA(x2, x4)
U2_GA(x1, x2, x3, x4)  =  U2_GA(x2, x4)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x2, x4)
APP18_IN_AAA(x1, x2, x3)  =  APP18_IN_AAA
U4_AAA(x1, x2, x3, x4, x5)  =  U4_AAA(x5)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x3, x5)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x3, x5)
U9_GA(x1, x2, x3, x4, x5)  =  U9_GA(x3, x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x3, x5)
APP31_IN_GAA(x1, x2, x3)  =  APP31_IN_GAA(x1)
U5_GAA(x1, x2, x3, x4, x5)  =  U5_GAA(x2, x5)

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

(33) Obligation:

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

REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U6_GA(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → REVERSE10_IN_GA(T19, X32)
REVERSE10_IN_GA(.(T33, T34), X69) → U1_GA(T33, T34, X69, reverse10_in_ga(T34, X68))
REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)
REVERSE10_IN_GA(.(T33, T34), X69) → U2_GA(T33, T34, X69, reverse10_in_ga(T34, T37))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_GA(T33, T34, X69, app18_in_aaa(T37, T33, X69))
U2_GA(T33, T34, X69, reverse10_out_ga(T34, T37)) → APP18_IN_AAA(T37, T33, X69)
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → U4_AAA(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)
REVERSE1_IN_GA(.(T6, .(T18, T19)), T9) → U7_GA(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → APP18_IN_AAA(T22, T18, X33)
U7_GA(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_GA(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_GA(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
U9_GA(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → APP31_IN_GAA(T67, T6, T9)
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → U5_GAA(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)
REVERSE1_IN_GA(x1, x2)  =  REVERSE1_IN_GA(x1)
U6_GA(x1, x2, x3, x4, x5)  =  U6_GA(x3, x5)
REVERSE10_IN_GA(x1, x2)  =  REVERSE10_IN_GA(x1)
U1_GA(x1, x2, x3, x4)  =  U1_GA(x2, x4)
U2_GA(x1, x2, x3, x4)  =  U2_GA(x2, x4)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x2, x4)
APP18_IN_AAA(x1, x2, x3)  =  APP18_IN_AAA
U4_AAA(x1, x2, x3, x4, x5)  =  U4_AAA(x5)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x3, x5)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x3, x5)
U9_GA(x1, x2, x3, x4, x5)  =  U9_GA(x3, x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x3, x5)
APP31_IN_GAA(x1, x2, x3)  =  APP31_IN_GAA(x1)
U5_GAA(x1, x2, x3, x4, x5)  =  U5_GAA(x2, x5)

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

(34) DependencyGraphProof (EQUIVALENT transformation)

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

(35) Complex Obligation (AND)

(36) Obligation:

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

APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)
APP31_IN_GAA(x1, x2, x3)  =  APP31_IN_GAA(x1)

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

(37) UsableRulesProof (EQUIVALENT transformation)

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

(38) Obligation:

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

APP31_IN_GAA(.(T91, T92), T93, .(T91, T95)) → APP31_IN_GAA(T92, T93, T95)

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

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

(39) PiDPToQDPProof (SOUND transformation)

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

(40) Obligation:

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

APP31_IN_GAA(.(T92)) → APP31_IN_GAA(T92)

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

(41) 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:

  • APP31_IN_GAA(.(T92)) → APP31_IN_GAA(T92)
    The graph contains the following edges 1 > 1

(42) YES

(43) Obligation:

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

APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)
APP18_IN_AAA(x1, x2, x3)  =  APP18_IN_AAA

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

(44) UsableRulesProof (EQUIVALENT transformation)

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

(45) Obligation:

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

APP18_IN_AAA(.(T55, T56), T57, .(T55, X112)) → APP18_IN_AAA(T56, T57, X112)

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

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

(46) PiDPToQDPProof (SOUND transformation)

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

(47) Obligation:

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

APP18_IN_AAAAPP18_IN_AAA

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

(48) NonTerminationProof (EQUIVALENT transformation)

We used the non-termination processor [FROCOS05] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

s = APP18_IN_AAA evaluates to t =APP18_IN_AAA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:
  • Semiunifier: [ ]
  • Matcher: [ ]




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from APP18_IN_AAA to APP18_IN_AAA.



(49) NO

(50) Obligation:

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

REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)

The TRS R consists of the following rules:

reverse1_in_ga(.(T6, .(T18, T19)), T9) → U6_ga(T6, T18, T19, T9, reverse10_in_ga(T19, X32))
reverse10_in_ga(.(T33, T34), X69) → U1_ga(T33, T34, X69, reverse10_in_ga(T34, X68))
reverse10_in_ga(.(T33, T34), X69) → U2_ga(T33, T34, X69, reverse10_in_ga(T34, T37))
reverse10_in_ga([], []) → reverse10_out_ga([], [])
U2_ga(T33, T34, X69, reverse10_out_ga(T34, T37)) → U3_ga(T33, T34, X69, app18_in_aaa(T37, T33, X69))
app18_in_aaa(.(T55, T56), T57, .(T55, X112)) → U4_aaa(T55, T56, T57, X112, app18_in_aaa(T56, T57, X112))
app18_in_aaa([], T63, .(T63, [])) → app18_out_aaa([], T63, .(T63, []))
U4_aaa(T55, T56, T57, X112, app18_out_aaa(T56, T57, X112)) → app18_out_aaa(.(T55, T56), T57, .(T55, X112))
U3_ga(T33, T34, X69, app18_out_aaa(T37, T33, X69)) → reverse10_out_ga(.(T33, T34), X69)
U1_ga(T33, T34, X69, reverse10_out_ga(T34, X68)) → reverse10_out_ga(.(T33, T34), X69)
U6_ga(T6, T18, T19, T9, reverse10_out_ga(T19, X32)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T6, .(T18, T19)), T9) → U7_ga(T6, T18, T19, T9, reverse10_in_ga(T19, T22))
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U8_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, X33))
U8_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, X33)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
U7_ga(T6, T18, T19, T9, reverse10_out_ga(T19, T22)) → U9_ga(T6, T18, T19, T9, app18_in_aaa(T22, T18, T67))
U9_ga(T6, T18, T19, T9, app18_out_aaa(T22, T18, T67)) → U10_ga(T6, T18, T19, T9, app31_in_gaa(T67, T6, T9))
app31_in_gaa(.(T91, T92), T93, .(T91, T95)) → U5_gaa(T91, T92, T93, T95, app31_in_gaa(T92, T93, T95))
app31_in_gaa([], T102, .(T102, [])) → app31_out_gaa([], T102, .(T102, []))
U5_gaa(T91, T92, T93, T95, app31_out_gaa(T92, T93, T95)) → app31_out_gaa(.(T91, T92), T93, .(T91, T95))
U10_ga(T6, T18, T19, T9, app31_out_gaa(T67, T6, T9)) → reverse1_out_ga(.(T6, .(T18, T19)), T9)
reverse1_in_ga(.(T107, []), .(T107, [])) → reverse1_out_ga(.(T107, []), .(T107, []))
reverse1_in_ga([], []) → reverse1_out_ga([], [])

The argument filtering Pi contains the following mapping:
reverse1_in_ga(x1, x2)  =  reverse1_in_ga(x1)
.(x1, x2)  =  .(x2)
U6_ga(x1, x2, x3, x4, x5)  =  U6_ga(x3, x5)
reverse10_in_ga(x1, x2)  =  reverse10_in_ga(x1)
U1_ga(x1, x2, x3, x4)  =  U1_ga(x2, x4)
U2_ga(x1, x2, x3, x4)  =  U2_ga(x2, x4)
[]  =  []
reverse10_out_ga(x1, x2)  =  reverse10_out_ga(x1)
U3_ga(x1, x2, x3, x4)  =  U3_ga(x2, x4)
app18_in_aaa(x1, x2, x3)  =  app18_in_aaa
U4_aaa(x1, x2, x3, x4, x5)  =  U4_aaa(x5)
app18_out_aaa(x1, x2, x3)  =  app18_out_aaa(x1, x3)
reverse1_out_ga(x1, x2)  =  reverse1_out_ga(x1)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x3, x5)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x3, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x3, x5)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x3, x5)
app31_in_gaa(x1, x2, x3)  =  app31_in_gaa(x1)
U5_gaa(x1, x2, x3, x4, x5)  =  U5_gaa(x2, x5)
app31_out_gaa(x1, x2, x3)  =  app31_out_gaa(x1, x3)
REVERSE10_IN_GA(x1, x2)  =  REVERSE10_IN_GA(x1)

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

(51) UsableRulesProof (EQUIVALENT transformation)

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

(52) Obligation:

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

REVERSE10_IN_GA(.(T33, T34), X69) → REVERSE10_IN_GA(T34, X68)

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

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

(53) PiDPToQDPProof (SOUND transformation)

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

(54) Obligation:

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

REVERSE10_IN_GA(.(T34)) → REVERSE10_IN_GA(T34)

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

(55) 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:

  • REVERSE10_IN_GA(.(T34)) → REVERSE10_IN_GA(T34)
    The graph contains the following edges 1 > 1

(56) YES