(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