YES(O(1), O(n^1)) 2.69/1.18 YES(O(1), O(n^1)) 2.69/1.19 2.69/1.19 2.69/1.19
2.69/1.19 2.69/1.190 CpxTRS2.69/1.19
↳1 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳2 CdtProblem2.69/1.19
↳3 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳4 CdtProblem2.69/1.19
↳5 CdtNarrowingProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳6 CdtProblem2.69/1.19
↳7 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳8 CdtProblem2.69/1.19
↳9 CdtLeafRemovalProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳10 CdtProblem2.69/1.19
↳11 CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))))2.69/1.19
↳12 CdtProblem2.69/1.19
↳13 CdtNarrowingProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳14 CdtProblem2.69/1.19
↳15 CdtLeafRemovalProof (BOTH BOUNDS(ID, ID))2.69/1.19
↳16 CdtProblem2.69/1.19
↳17 CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))))2.69/1.19
↳18 CdtProblem2.69/1.19
↳19 CdtKnowledgeProof (⇔)2.69/1.19
↳20 BOUNDS(O(1), O(1))2.69/1.19
is_empty(nil) → true 2.69/1.19
is_empty(cons(x, l)) → false 2.69/1.19
hd(cons(x, l)) → x 2.69/1.19
tl(cons(x, l)) → l 2.69/1.19
append(l1, l2) → ifappend(l1, l2, is_empty(l1)) 2.69/1.19
ifappend(l1, l2, true) → l2 2.69/1.19
ifappend(l1, l2, false) → cons(hd(l1), append(tl(l1), l2))
Tuples:
is_empty(nil) → true 2.69/1.19
is_empty(cons(z0, z1)) → false 2.69/1.19
hd(cons(z0, z1)) → z0 2.69/1.19
tl(cons(z0, z1)) → z1 2.69/1.19
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 2.69/1.19
ifappend(z0, z1, true) → z1 2.69/1.19
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, is_empty(z0)), IS_EMPTY(z0)) 2.69/1.19
IFAPPEND(z0, z1, false) → c6(HD(z0), APPEND(tl(z0), z1), TL(z0))
K tuples:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, is_empty(z0)), IS_EMPTY(z0)) 2.69/1.20
IFAPPEND(z0, z1, false) → c6(HD(z0), APPEND(tl(z0), z1), TL(z0))
is_empty, hd, tl, append, ifappend
APPEND, IFAPPEND
c4, c6
Tuples:
is_empty(nil) → true 2.69/1.20
is_empty(cons(z0, z1)) → false 2.69/1.20
hd(cons(z0, z1)) → z0 2.69/1.20
tl(cons(z0, z1)) → z1 2.69/1.20
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 2.69/1.20
ifappend(z0, z1, true) → z1 2.69/1.20
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, is_empty(z0))) 2.69/1.20
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1))
K tuples:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, is_empty(z0))) 2.69/1.20
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1))
is_empty, hd, tl, append, ifappend
APPEND, IFAPPEND
c4, c6
APPEND(nil, x1) → c4(IFAPPEND(nil, x1, true)) 2.69/1.20
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false))
Tuples:
is_empty(nil) → true 2.69/1.20
is_empty(cons(z0, z1)) → false 2.69/1.20
hd(cons(z0, z1)) → z0 2.69/1.20
tl(cons(z0, z1)) → z1 2.69/1.20
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 2.69/1.20
ifappend(z0, z1, true) → z1 2.69/1.20
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 2.69/1.20
APPEND(nil, x1) → c4(IFAPPEND(nil, x1, true)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false))
K tuples:none
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(nil, x1) → c4(IFAPPEND(nil, x1, true)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false))
is_empty, hd, tl, append, ifappend
IFAPPEND, APPEND
c6, c4
Tuples:
is_empty(nil) → true 3.03/1.21
is_empty(cons(z0, z1)) → false 3.03/1.21
hd(cons(z0, z1)) → z0 3.03/1.21
tl(cons(z0, z1)) → z1 3.03/1.21
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 3.03/1.21
ifappend(z0, z1, true) → z1 3.03/1.21
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4
K tuples:none
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4
is_empty, hd, tl, append, ifappend
IFAPPEND, APPEND
c6, c4, c4
APPEND(nil, x1) → c4
Tuples:
is_empty(nil) → true 3.03/1.21
is_empty(cons(z0, z1)) → false 3.03/1.21
hd(cons(z0, z1)) → z0 3.03/1.21
tl(cons(z0, z1)) → z1 3.03/1.21
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 3.03/1.21
ifappend(z0, z1, true) → z1 3.03/1.21
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4
K tuples:none
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4
is_empty, hd, tl, append, ifappend
IFAPPEND, APPEND
c6, c4, c4
We considered the (Usable) Rules:
APPEND(nil, x1) → c4
And the Tuples:
tl(cons(z0, z1)) → z1
The order we found is given by the following interpretation:
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4
POL(APPEND(x1, x2)) = [1] 3.03/1.21
POL(IFAPPEND(x1, x2, x3)) = [1] 3.03/1.21
POL(c4) = 0 3.03/1.21
POL(c4(x1)) = x1 3.03/1.21
POL(c6(x1)) = x1 3.03/1.21
POL(cons(x1, x2)) = x1 3.03/1.21
POL(false) = [1] 3.03/1.21
POL(nil) = [1] 3.03/1.21
POL(tl(x1)) = [1]
Tuples:
is_empty(nil) → true 3.03/1.21
is_empty(cons(z0, z1)) → false 3.03/1.21
hd(cons(z0, z1)) → z0 3.03/1.21
tl(cons(z0, z1)) → z1 3.03/1.21
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 3.03/1.21
ifappend(z0, z1, true) → z1 3.03/1.21
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4
K tuples:
IFAPPEND(z0, z1, false) → c6(APPEND(tl(z0), z1)) 3.03/1.21
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false))
Defined Rule Symbols:
APPEND(nil, x1) → c4
is_empty, hd, tl, append, ifappend
IFAPPEND, APPEND
c6, c4, c4
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
Tuples:
is_empty(nil) → true 3.03/1.21
is_empty(cons(z0, z1)) → false 3.03/1.21
hd(cons(z0, z1)) → z0 3.03/1.21
tl(cons(z0, z1)) → z1 3.03/1.21
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 3.03/1.21
ifappend(z0, z1, true) → z1 3.03/1.21
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
K tuples:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
Defined Rule Symbols:
APPEND(nil, x1) → c4
is_empty, hd, tl, append, ifappend
APPEND, IFAPPEND
c4, c4, c6
APPEND(nil, x1) → c4
Tuples:
is_empty(nil) → true 3.03/1.21
is_empty(cons(z0, z1)) → false 3.03/1.21
hd(cons(z0, z1)) → z0 3.03/1.21
tl(cons(z0, z1)) → z1 3.03/1.21
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 3.03/1.21
ifappend(z0, z1, true) → z1 3.03/1.21
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
K tuples:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
Defined Rule Symbols:
APPEND(nil, x1) → c4
is_empty, hd, tl, append, ifappend
APPEND, IFAPPEND
c4, c4, c6
We considered the (Usable) Rules:none
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
The order we found is given by the following interpretation:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
POL(APPEND(x1, x2)) = x1 3.03/1.21
POL(IFAPPEND(x1, x2, x3)) = x1 3.03/1.21
POL(c4) = 0 3.03/1.21
POL(c4(x1)) = x1 3.03/1.21
POL(c6(x1)) = x1 3.03/1.21
POL(cons(x1, x2)) = [1] + x2 3.03/1.21
POL(false) = [1] 3.03/1.21
POL(nil) = 0
Tuples:
is_empty(nil) → true 3.03/1.21
is_empty(cons(z0, z1)) → false 3.03/1.21
hd(cons(z0, z1)) → z0 3.03/1.21
tl(cons(z0, z1)) → z1 3.03/1.21
append(z0, z1) → ifappend(z0, z1, is_empty(z0)) 3.03/1.21
ifappend(z0, z1, true) → z1 3.03/1.21
ifappend(z0, z1, false) → cons(hd(z0), append(tl(z0), z1))
S tuples:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
APPEND(nil, x1) → c4 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
K tuples:
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false))
Defined Rule Symbols:
APPEND(nil, x1) → c4 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))
is_empty, hd, tl, append, ifappend
APPEND, IFAPPEND
c4, c4, c6
Now S is empty
APPEND(cons(z0, z1), x1) → c4(IFAPPEND(cons(z0, z1), x1, false)) 3.03/1.21
IFAPPEND(cons(z0, z1), x1, false) → c6(APPEND(z1, x1))