0 QTRS
↳1 DependencyPairsProof (⇔, 27 ms)
↳2 QDP
↳3 DependencyGraphProof (⇔, 0 ms)
↳4 AND
↳5 QDP
↳6 QDPSizeChangeProof (⇔, 0 ms)
↳7 YES
↳8 QDP
↳9 MNOCProof (⇔, 0 ms)
↳10 QDP
↳11 UsableRulesProof (⇔, 0 ms)
↳12 QDP
↳13 QReductionProof (⇔, 0 ms)
↳14 QDP
↳15 MRRProof (⇔, 16 ms)
↳16 QDP
↳17 MRRProof (⇔, 0 ms)
↳18 QDP
↳19 PisEmptyProof (⇔, 0 ms)
↳20 YES
↳21 QDP
↳22 QDPSizeChangeProof (⇔, 0 ms)
↳23 YES
↳24 QDP
↳25 NonLoopProof (⇔, 578 ms)
↳26 NO
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
F(true, xs) → F(isList(xs), append(cons(a, nil), xs))
F(true, xs) → ISLIST(xs)
F(true, xs) → APPEND(cons(a, nil), xs)
ISLIST(cons(x, xs)) → ISLIST(xs)
APPEND(xs, ys) → APPENDAKK(reverse(xs), ys)
APPEND(xs, ys) → REVERSE(xs)
APPENDAKK(cons(x, xs), ys) → APPENDAKK(xs, cons(x, ys))
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
REVERSE(cons(x, xs)) → REVERSE(xs)
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
APPENDAKK(cons(x, xs), ys) → APPENDAKK(xs, cons(x, ys))
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
From the DPs we obtained the following set of size-change graphs:
APPEND(xs, ys) → REVERSE(xs)
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
REVERSE(cons(x, xs)) → REVERSE(xs)
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
APPEND(xs, ys) → REVERSE(xs)
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
REVERSE(cons(x, xs)) → REVERSE(xs)
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
f(true, x0)
isList(nil)
isList(cons(x0, x1))
append(x0, x1)
appendAkk(nil, x0)
appendAkk(cons(x0, x1), x2)
reverse(nil)
reverse(cons(x0, x1))
APPEND(xs, ys) → REVERSE(xs)
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
REVERSE(cons(x, xs)) → REVERSE(xs)
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
f(true, x0)
isList(nil)
isList(cons(x0, x1))
append(x0, x1)
appendAkk(nil, x0)
appendAkk(cons(x0, x1), x2)
reverse(nil)
reverse(cons(x0, x1))
f(true, x0)
isList(nil)
isList(cons(x0, x1))
APPEND(xs, ys) → REVERSE(xs)
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
REVERSE(cons(x, xs)) → REVERSE(xs)
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
append(x0, x1)
appendAkk(nil, x0)
appendAkk(cons(x0, x1), x2)
reverse(nil)
reverse(cons(x0, x1))
REVERSE(cons(x, xs)) → REVERSE(xs)
POL(APPEND(x1, x2)) = x1 + x2
POL(REVERSE(x1)) = x1
POL(append(x1, x2)) = x1 + x2
POL(appendAkk(x1, x2)) = x1 + x2
POL(cons(x1, x2)) = 1 + x1 + x2
POL(nil) = 0
POL(reverse(x1)) = x1
APPEND(xs, ys) → REVERSE(xs)
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
append(x0, x1)
appendAkk(nil, x0)
appendAkk(cons(x0, x1), x2)
reverse(nil)
reverse(cons(x0, x1))
APPEND(xs, ys) → REVERSE(xs)
REVERSE(cons(x, xs)) → APPEND(reverse(xs), cons(x, nil))
POL(APPEND(x1, x2)) = 1 + 2·x1 + x2
POL(REVERSE(x1)) = 2·x1
POL(append(x1, x2)) = x1 + x2
POL(appendAkk(x1, x2)) = x1 + x2
POL(cons(x1, x2)) = 2 + x1 + x2
POL(nil) = 0
POL(reverse(x1)) = x1
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
append(x0, x1)
appendAkk(nil, x0)
appendAkk(cons(x0, x1), x2)
reverse(nil)
reverse(cons(x0, x1))
ISLIST(cons(x, xs)) → ISLIST(xs)
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))
From the DPs we obtained the following set of size-change graphs:
F(true, xs) → F(isList(xs), append(cons(a, nil), xs))
f(true, xs) → f(isList(xs), append(cons(a, nil), xs))
isList(nil) → true
isList(cons(x, xs)) → isList(xs)
append(xs, ys) → appendAkk(reverse(xs), ys)
appendAkk(nil, ys) → ys
appendAkk(cons(x, xs), ys) → appendAkk(xs, cons(x, ys))
reverse(nil) → nil
reverse(cons(x, xs)) → append(reverse(xs), cons(x, nil))