(0) Obligation:

Clauses:

rotate(X, Y) :- ','(append(A, B, X), append(B, A, Y)).
append(.(X, Xs), Ys, .(X, Zs)) :- append(Xs, Ys, Zs).
append([], Ys, Ys).

Queries:

rotate(g,a).

(1) PrologToDTProblemTransformerProof (SOUND transformation)

Built DT problem from termination graph.

(2) Obligation:

Triples:

append9(.(X92, X93), X94, .(X92, T21)) :- append9(X93, X94, T21).
append10(.(T46, T47), X141, T48, .(T46, T50)) :- append10(T47, X141, T48, T50).
append26(.(T79, T80), .(T79, T82)) :- append26(T80, T82).
rotate1(.(X39, T12), T7) :- append9(X40, X41, T12).
rotate1(.(X39, T12), T7) :- ','(appendc9(T14, T15, T12), append10(T15, X39, T14, T7)).
rotate1(T63, T7) :- append26(T63, T7).

Clauses:

appendc9(.(X92, X93), X94, .(X92, T21)) :- appendc9(X93, X94, T21).
appendc9([], T25, T25).
appendc10(.(T46, T47), X141, T48, .(T46, T50)) :- appendc10(T47, X141, T48, T50).
appendc10([], X156, T57, .(X156, T57)).
appendc26(.(T79, T80), .(T79, T82)) :- appendc26(T80, T82).
appendc26([], []).

Afs:

rotate1(x1, x2)  =  rotate1(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:
rotate1_in: (b,f)
append9_in: (f,f,b)
appendc9_in: (f,f,b)
append10_in: (b,b,b,f)
append26_in: (b,f)
Transforming TRIPLES into the following Term Rewriting System:
Pi DP problem:
The TRS P consists of the following rules:

ROTATE1_IN_GA(.(X39, T12), T7) → U4_GA(X39, T12, T7, append9_in_aag(X40, X41, T12))
ROTATE1_IN_GA(.(X39, T12), T7) → APPEND9_IN_AAG(X40, X41, T12)
APPEND9_IN_AAG(.(X92, X93), X94, .(X92, T21)) → U1_AAG(X92, X93, X94, T21, append9_in_aag(X93, X94, T21))
APPEND9_IN_AAG(.(X92, X93), X94, .(X92, T21)) → APPEND9_IN_AAG(X93, X94, T21)
ROTATE1_IN_GA(.(X39, T12), T7) → U5_GA(X39, T12, T7, appendc9_in_aag(T14, T15, T12))
U5_GA(X39, T12, T7, appendc9_out_aag(T14, T15, T12)) → U6_GA(X39, T12, T7, append10_in_ggga(T15, X39, T14, T7))
U5_GA(X39, T12, T7, appendc9_out_aag(T14, T15, T12)) → APPEND10_IN_GGGA(T15, X39, T14, T7)
APPEND10_IN_GGGA(.(T46, T47), X141, T48, .(T46, T50)) → U2_GGGA(T46, T47, X141, T48, T50, append10_in_ggga(T47, X141, T48, T50))
APPEND10_IN_GGGA(.(T46, T47), X141, T48, .(T46, T50)) → APPEND10_IN_GGGA(T47, X141, T48, T50)
ROTATE1_IN_GA(T63, T7) → U7_GA(T63, T7, append26_in_ga(T63, T7))
ROTATE1_IN_GA(T63, T7) → APPEND26_IN_GA(T63, T7)
APPEND26_IN_GA(.(T79, T80), .(T79, T82)) → U3_GA(T79, T80, T82, append26_in_ga(T80, T82))
APPEND26_IN_GA(.(T79, T80), .(T79, T82)) → APPEND26_IN_GA(T80, T82)

The TRS R consists of the following rules:

appendc9_in_aag(.(X92, X93), X94, .(X92, T21)) → U9_aag(X92, X93, X94, T21, appendc9_in_aag(X93, X94, T21))
appendc9_in_aag([], T25, T25) → appendc9_out_aag([], T25, T25)
U9_aag(X92, X93, X94, T21, appendc9_out_aag(X93, X94, T21)) → appendc9_out_aag(.(X92, X93), X94, .(X92, T21))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
append9_in_aag(x1, x2, x3)  =  append9_in_aag(x3)
appendc9_in_aag(x1, x2, x3)  =  appendc9_in_aag(x3)
U9_aag(x1, x2, x3, x4, x5)  =  U9_aag(x1, x4, x5)
appendc9_out_aag(x1, x2, x3)  =  appendc9_out_aag(x1, x2, x3)
append10_in_ggga(x1, x2, x3, x4)  =  append10_in_ggga(x1, x2, x3)
append26_in_ga(x1, x2)  =  append26_in_ga(x1)
ROTATE1_IN_GA(x1, x2)  =  ROTATE1_IN_GA(x1)
U4_GA(x1, x2, x3, x4)  =  U4_GA(x1, x2, x4)
APPEND9_IN_AAG(x1, x2, x3)  =  APPEND9_IN_AAG(x3)
U1_AAG(x1, x2, x3, x4, x5)  =  U1_AAG(x1, x4, x5)
U5_GA(x1, x2, x3, x4)  =  U5_GA(x1, x2, x4)
U6_GA(x1, x2, x3, x4)  =  U6_GA(x1, x2, x4)
APPEND10_IN_GGGA(x1, x2, x3, x4)  =  APPEND10_IN_GGGA(x1, x2, x3)
U2_GGGA(x1, x2, x3, x4, x5, x6)  =  U2_GGGA(x1, x2, x3, x4, x6)
U7_GA(x1, x2, x3)  =  U7_GA(x1, x3)
APPEND26_IN_GA(x1, x2)  =  APPEND26_IN_GA(x1)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x1, x2, x4)

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:

ROTATE1_IN_GA(.(X39, T12), T7) → U4_GA(X39, T12, T7, append9_in_aag(X40, X41, T12))
ROTATE1_IN_GA(.(X39, T12), T7) → APPEND9_IN_AAG(X40, X41, T12)
APPEND9_IN_AAG(.(X92, X93), X94, .(X92, T21)) → U1_AAG(X92, X93, X94, T21, append9_in_aag(X93, X94, T21))
APPEND9_IN_AAG(.(X92, X93), X94, .(X92, T21)) → APPEND9_IN_AAG(X93, X94, T21)
ROTATE1_IN_GA(.(X39, T12), T7) → U5_GA(X39, T12, T7, appendc9_in_aag(T14, T15, T12))
U5_GA(X39, T12, T7, appendc9_out_aag(T14, T15, T12)) → U6_GA(X39, T12, T7, append10_in_ggga(T15, X39, T14, T7))
U5_GA(X39, T12, T7, appendc9_out_aag(T14, T15, T12)) → APPEND10_IN_GGGA(T15, X39, T14, T7)
APPEND10_IN_GGGA(.(T46, T47), X141, T48, .(T46, T50)) → U2_GGGA(T46, T47, X141, T48, T50, append10_in_ggga(T47, X141, T48, T50))
APPEND10_IN_GGGA(.(T46, T47), X141, T48, .(T46, T50)) → APPEND10_IN_GGGA(T47, X141, T48, T50)
ROTATE1_IN_GA(T63, T7) → U7_GA(T63, T7, append26_in_ga(T63, T7))
ROTATE1_IN_GA(T63, T7) → APPEND26_IN_GA(T63, T7)
APPEND26_IN_GA(.(T79, T80), .(T79, T82)) → U3_GA(T79, T80, T82, append26_in_ga(T80, T82))
APPEND26_IN_GA(.(T79, T80), .(T79, T82)) → APPEND26_IN_GA(T80, T82)

The TRS R consists of the following rules:

appendc9_in_aag(.(X92, X93), X94, .(X92, T21)) → U9_aag(X92, X93, X94, T21, appendc9_in_aag(X93, X94, T21))
appendc9_in_aag([], T25, T25) → appendc9_out_aag([], T25, T25)
U9_aag(X92, X93, X94, T21, appendc9_out_aag(X93, X94, T21)) → appendc9_out_aag(.(X92, X93), X94, .(X92, T21))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
append9_in_aag(x1, x2, x3)  =  append9_in_aag(x3)
appendc9_in_aag(x1, x2, x3)  =  appendc9_in_aag(x3)
U9_aag(x1, x2, x3, x4, x5)  =  U9_aag(x1, x4, x5)
appendc9_out_aag(x1, x2, x3)  =  appendc9_out_aag(x1, x2, x3)
append10_in_ggga(x1, x2, x3, x4)  =  append10_in_ggga(x1, x2, x3)
append26_in_ga(x1, x2)  =  append26_in_ga(x1)
ROTATE1_IN_GA(x1, x2)  =  ROTATE1_IN_GA(x1)
U4_GA(x1, x2, x3, x4)  =  U4_GA(x1, x2, x4)
APPEND9_IN_AAG(x1, x2, x3)  =  APPEND9_IN_AAG(x3)
U1_AAG(x1, x2, x3, x4, x5)  =  U1_AAG(x1, x4, x5)
U5_GA(x1, x2, x3, x4)  =  U5_GA(x1, x2, x4)
U6_GA(x1, x2, x3, x4)  =  U6_GA(x1, x2, x4)
APPEND10_IN_GGGA(x1, x2, x3, x4)  =  APPEND10_IN_GGGA(x1, x2, x3)
U2_GGGA(x1, x2, x3, x4, x5, x6)  =  U2_GGGA(x1, x2, x3, x4, x6)
U7_GA(x1, x2, x3)  =  U7_GA(x1, x3)
APPEND26_IN_GA(x1, x2)  =  APPEND26_IN_GA(x1)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x1, x2, x4)

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

(5) DependencyGraphProof (EQUIVALENT transformation)

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

(6) Complex Obligation (AND)

(7) Obligation:

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

APPEND26_IN_GA(.(T79, T80), .(T79, T82)) → APPEND26_IN_GA(T80, T82)

The TRS R consists of the following rules:

appendc9_in_aag(.(X92, X93), X94, .(X92, T21)) → U9_aag(X92, X93, X94, T21, appendc9_in_aag(X93, X94, T21))
appendc9_in_aag([], T25, T25) → appendc9_out_aag([], T25, T25)
U9_aag(X92, X93, X94, T21, appendc9_out_aag(X93, X94, T21)) → appendc9_out_aag(.(X92, X93), X94, .(X92, T21))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
appendc9_in_aag(x1, x2, x3)  =  appendc9_in_aag(x3)
U9_aag(x1, x2, x3, x4, x5)  =  U9_aag(x1, x4, x5)
appendc9_out_aag(x1, x2, x3)  =  appendc9_out_aag(x1, x2, x3)
APPEND26_IN_GA(x1, x2)  =  APPEND26_IN_GA(x1)

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:

APPEND26_IN_GA(.(T79, T80), .(T79, T82)) → APPEND26_IN_GA(T80, T82)

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

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:

APPEND26_IN_GA(.(T79, T80)) → APPEND26_IN_GA(T80)

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:

  • APPEND26_IN_GA(.(T79, T80)) → APPEND26_IN_GA(T80)
    The graph contains the following edges 1 > 1

(13) YES

(14) Obligation:

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

APPEND10_IN_GGGA(.(T46, T47), X141, T48, .(T46, T50)) → APPEND10_IN_GGGA(T47, X141, T48, T50)

The TRS R consists of the following rules:

appendc9_in_aag(.(X92, X93), X94, .(X92, T21)) → U9_aag(X92, X93, X94, T21, appendc9_in_aag(X93, X94, T21))
appendc9_in_aag([], T25, T25) → appendc9_out_aag([], T25, T25)
U9_aag(X92, X93, X94, T21, appendc9_out_aag(X93, X94, T21)) → appendc9_out_aag(.(X92, X93), X94, .(X92, T21))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
appendc9_in_aag(x1, x2, x3)  =  appendc9_in_aag(x3)
U9_aag(x1, x2, x3, x4, x5)  =  U9_aag(x1, x4, x5)
appendc9_out_aag(x1, x2, x3)  =  appendc9_out_aag(x1, x2, x3)
APPEND10_IN_GGGA(x1, x2, x3, x4)  =  APPEND10_IN_GGGA(x1, x2, x3)

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:

APPEND10_IN_GGGA(.(T46, T47), X141, T48, .(T46, T50)) → APPEND10_IN_GGGA(T47, X141, T48, T50)

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

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:

APPEND10_IN_GGGA(.(T46, T47), X141, T48) → APPEND10_IN_GGGA(T47, X141, T48)

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:

  • APPEND10_IN_GGGA(.(T46, T47), X141, T48) → APPEND10_IN_GGGA(T47, X141, T48)
    The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3

(20) YES

(21) Obligation:

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

APPEND9_IN_AAG(.(X92, X93), X94, .(X92, T21)) → APPEND9_IN_AAG(X93, X94, T21)

The TRS R consists of the following rules:

appendc9_in_aag(.(X92, X93), X94, .(X92, T21)) → U9_aag(X92, X93, X94, T21, appendc9_in_aag(X93, X94, T21))
appendc9_in_aag([], T25, T25) → appendc9_out_aag([], T25, T25)
U9_aag(X92, X93, X94, T21, appendc9_out_aag(X93, X94, T21)) → appendc9_out_aag(.(X92, X93), X94, .(X92, T21))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
appendc9_in_aag(x1, x2, x3)  =  appendc9_in_aag(x3)
U9_aag(x1, x2, x3, x4, x5)  =  U9_aag(x1, x4, x5)
appendc9_out_aag(x1, x2, x3)  =  appendc9_out_aag(x1, x2, x3)
APPEND9_IN_AAG(x1, x2, x3)  =  APPEND9_IN_AAG(x3)

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:

APPEND9_IN_AAG(.(X92, X93), X94, .(X92, T21)) → APPEND9_IN_AAG(X93, X94, T21)

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

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:

APPEND9_IN_AAG(.(X92, T21)) → APPEND9_IN_AAG(T21)

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

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

  • APPEND9_IN_AAG(.(X92, T21)) → APPEND9_IN_AAG(T21)
    The graph contains the following edges 1 > 1

(27) YES