(0) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
app(nil, xs) → nil
app(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nil
rev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nil
shuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))
Q is empty.
(1) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Polynomial interpretation [POLO]:
POL(app(x1, x2)) = 2 + 2·x1 + 2·x2
POL(append(x1, x2)) = x1 + x2
POL(cons(x1, x2)) = 1 + x1 + x2
POL(nil) = 0
POL(rev(x1)) = x1
POL(shuffle(x1)) = 2 + 2·x1
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
app(nil, xs) → nil
app(cons(x, xs), ys) → cons(x, app(xs, ys))
shuffle(nil) → nil
shuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))
(2) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
rev(nil) → nil
rev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
Q is empty.
(3) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Polynomial interpretation [POLO]:
POL(append(x1, x2)) = x1 + x2
POL(cons(x1, x2)) = x1 + x2
POL(nil) = 0
POL(rev(x1)) = 1 + 2·x1
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
rev(nil) → nil
(4) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
rev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
Q is empty.
(5) DependencyPairsProof (EQUIVALENT transformation)
Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.
(6) Obligation:
Q DP problem:
The TRS P consists of the following rules:
REV(cons(x, xs)) → REV(cons(x, nil))
The TRS R consists of the following rules:
rev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(7) NonLoopProof (EQUIVALENT transformation)
By Theorem 8 [NONLOOP] we deduce infiniteness of the QDP.
We apply the theorem with m = 1, b = 0,
σ' = [ ], and μ' = [x0 / nil] on the rule
REV(cons(x1, nil))[ ]n[ ] → REV(cons(x1, nil))[ ]n[x0 / nil]
This rule is correct for the QDP as the following derivation shows:
intermediate steps: Equivalent (Simplify mu) - Instantiate mu - Instantiation
REV(cons(x, xs))[ ]n[ ] → REV(cons(x, nil))[ ]n[ ]
by OriginalRule from TRS P
(8) NO