(0) Obligation:

Clauses:

shuffle(A, [], A) :- !.
shuffle([], B, B) :- !.
shuffle(.(A, RestA), B, .(A, Shuffled)) :- shuffle(RestA, B, Shuffled).
shuffle(A, .(B, RestB), .(B, Shuffled)) :- shuffle(A, RestB, Shuffled).

Queries:

shuffle(g,g,a).

(1) PrologToDTProblemTransformerProof (SOUND transformation)

Built DT problem from termination graph.

(2) Obligation:

Triples:

shuffle1(.(T33, []), .(T34, T35), .(T34, T37)) :- shuffle1(.(T33, []), T35, T37).
shuffle1(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) :- shuffle1(T56, T57, T59).
shuffle1(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) :- shuffle1(T77, T79, T81).
shuffle1(.(T93, T94), .(T95, T96), .(T95, T98)) :- shuffle1(.(T93, T94), T96, T98).
shuffle1(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) :- shuffle1(T133, T134, T136).
shuffle1(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) :- shuffle1(T146, T148, T150).

Clauses:

shufflec1(T5, [], T5).
shufflec1([], T7, T7).
shufflec1(.(T12, T19), [], .(T12, T19)).
shufflec1(.(T12, []), T24, .(T12, T24)).
shufflec1(.(T33, []), .(T34, T35), .(T34, T37)) :- shufflec1(.(T33, []), T35, T37).
shufflec1(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) :- shufflec1(T56, T57, T59).
shufflec1(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) :- shufflec1(T77, T79, T81).
shufflec1(.(T93, T94), .(T95, T96), .(T95, T98)) :- shufflec1(.(T93, T94), T96, T98).
shufflec1(T112, .(T106, []), .(T106, T112)).
shufflec1([], .(T106, T115), .(T106, T115)).
shufflec1(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) :- shufflec1(T133, T134, T136).
shufflec1(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) :- shufflec1(T146, T148, T150).

Afs:

shuffle1(x1, x2, x3)  =  shuffle1(x1, x2)

(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:
shuffle1_in: (b,b,f)
Transforming TRIPLES into the following Term Rewriting System:
Pi DP problem:
The TRS P consists of the following rules:

SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35), .(T34, T37)) → U1_GGA(T33, T34, T35, T37, shuffle1_in_gga(.(T33, []), T35, T37))
SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35), .(T34, T37)) → SHUFFLE1_IN_GGA(.(T33, []), T35, T37)
SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) → U2_GGA(T12, T55, T56, T57, T59, shuffle1_in_gga(T56, T57, T59))
SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) → SHUFFLE1_IN_GGA(T56, T57, T59)
SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) → U3_GGA(T12, T77, T78, T79, T81, shuffle1_in_gga(T77, T79, T81))
SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) → SHUFFLE1_IN_GGA(T77, T79, T81)
SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96), .(T95, T98)) → U4_GGA(T93, T94, T95, T96, T98, shuffle1_in_gga(.(T93, T94), T96, T98))
SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96), .(T95, T98)) → SHUFFLE1_IN_GGA(.(T93, T94), T96, T98)
SHUFFLE1_IN_GGA(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) → U5_GGA(T132, T133, T106, T134, T136, shuffle1_in_gga(T133, T134, T136))
SHUFFLE1_IN_GGA(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) → SHUFFLE1_IN_GGA(T133, T134, T136)
SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) → U6_GGA(T146, T106, T147, T148, T150, shuffle1_in_gga(T146, T148, T150))
SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) → SHUFFLE1_IN_GGA(T146, T148, T150)

R is empty.
The argument filtering Pi contains the following mapping:
shuffle1_in_gga(x1, x2, x3)  =  shuffle1_in_gga(x1, x2)
.(x1, x2)  =  .(x1, x2)
[]  =  []
SHUFFLE1_IN_GGA(x1, x2, x3)  =  SHUFFLE1_IN_GGA(x1, x2)
U1_GGA(x1, x2, x3, x4, x5)  =  U1_GGA(x1, x2, x3, x5)
U2_GGA(x1, x2, x3, x4, x5, x6)  =  U2_GGA(x1, x2, x3, x4, x6)
U3_GGA(x1, x2, x3, x4, x5, x6)  =  U3_GGA(x1, x2, x3, x4, x6)
U4_GGA(x1, x2, x3, x4, x5, x6)  =  U4_GGA(x1, x2, x3, x4, x6)
U5_GGA(x1, x2, x3, x4, x5, x6)  =  U5_GGA(x1, x2, x3, x4, x6)
U6_GGA(x1, x2, x3, x4, x5, x6)  =  U6_GGA(x1, x2, x3, x4, x6)

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:

SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35), .(T34, T37)) → U1_GGA(T33, T34, T35, T37, shuffle1_in_gga(.(T33, []), T35, T37))
SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35), .(T34, T37)) → SHUFFLE1_IN_GGA(.(T33, []), T35, T37)
SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) → U2_GGA(T12, T55, T56, T57, T59, shuffle1_in_gga(T56, T57, T59))
SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) → SHUFFLE1_IN_GGA(T56, T57, T59)
SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) → U3_GGA(T12, T77, T78, T79, T81, shuffle1_in_gga(T77, T79, T81))
SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) → SHUFFLE1_IN_GGA(T77, T79, T81)
SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96), .(T95, T98)) → U4_GGA(T93, T94, T95, T96, T98, shuffle1_in_gga(.(T93, T94), T96, T98))
SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96), .(T95, T98)) → SHUFFLE1_IN_GGA(.(T93, T94), T96, T98)
SHUFFLE1_IN_GGA(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) → U5_GGA(T132, T133, T106, T134, T136, shuffle1_in_gga(T133, T134, T136))
SHUFFLE1_IN_GGA(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) → SHUFFLE1_IN_GGA(T133, T134, T136)
SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) → U6_GGA(T146, T106, T147, T148, T150, shuffle1_in_gga(T146, T148, T150))
SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) → SHUFFLE1_IN_GGA(T146, T148, T150)

R is empty.
The argument filtering Pi contains the following mapping:
shuffle1_in_gga(x1, x2, x3)  =  shuffle1_in_gga(x1, x2)
.(x1, x2)  =  .(x1, x2)
[]  =  []
SHUFFLE1_IN_GGA(x1, x2, x3)  =  SHUFFLE1_IN_GGA(x1, x2)
U1_GGA(x1, x2, x3, x4, x5)  =  U1_GGA(x1, x2, x3, x5)
U2_GGA(x1, x2, x3, x4, x5, x6)  =  U2_GGA(x1, x2, x3, x4, x6)
U3_GGA(x1, x2, x3, x4, x5, x6)  =  U3_GGA(x1, x2, x3, x4, x6)
U4_GGA(x1, x2, x3, x4, x5, x6)  =  U4_GGA(x1, x2, x3, x4, x6)
U5_GGA(x1, x2, x3, x4, x5, x6)  =  U5_GGA(x1, x2, x3, x4, x6)
U6_GGA(x1, x2, x3, x4, x5, x6)  =  U6_GGA(x1, x2, x3, x4, x6)

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

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 6 less nodes.

(6) Obligation:

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

SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79), .(T12, .(T78, T81))) → SHUFFLE1_IN_GGA(T77, T79, T81)
SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35), .(T34, T37)) → SHUFFLE1_IN_GGA(.(T33, []), T35, T37)
SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96), .(T95, T98)) → SHUFFLE1_IN_GGA(.(T93, T94), T96, T98)
SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57, .(T12, .(T55, T59))) → SHUFFLE1_IN_GGA(T56, T57, T59)
SHUFFLE1_IN_GGA(.(T132, T133), .(T106, T134), .(T106, .(T132, T136))) → SHUFFLE1_IN_GGA(T133, T134, T136)
SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148)), .(T106, .(T147, T150))) → SHUFFLE1_IN_GGA(T146, T148, T150)

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

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

(7) PiDPToQDPProof (SOUND transformation)

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

(8) Obligation:

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

SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79)) → SHUFFLE1_IN_GGA(T77, T79)
SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35)) → SHUFFLE1_IN_GGA(.(T33, []), T35)
SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96)) → SHUFFLE1_IN_GGA(.(T93, T94), T96)
SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57) → SHUFFLE1_IN_GGA(T56, T57)
SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148))) → SHUFFLE1_IN_GGA(T146, T148)

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

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

  • SHUFFLE1_IN_GGA(.(T12, .(T55, T56)), T57) → SHUFFLE1_IN_GGA(T56, T57)
    The graph contains the following edges 1 > 1, 2 >= 2

  • SHUFFLE1_IN_GGA(.(T33, []), .(T34, T35)) → SHUFFLE1_IN_GGA(.(T33, []), T35)
    The graph contains the following edges 1 >= 1, 2 > 2

  • SHUFFLE1_IN_GGA(.(T12, T77), .(T78, T79)) → SHUFFLE1_IN_GGA(T77, T79)
    The graph contains the following edges 1 > 1, 2 > 2

  • SHUFFLE1_IN_GGA(.(T93, T94), .(T95, T96)) → SHUFFLE1_IN_GGA(.(T93, T94), T96)
    The graph contains the following edges 1 >= 1, 2 > 2

  • SHUFFLE1_IN_GGA(T146, .(T106, .(T147, T148))) → SHUFFLE1_IN_GGA(T146, T148)
    The graph contains the following edges 1 >= 1, 2 > 2

(10) YES