0 CpxTRS
↳1 RcToIrcProof (BOTH BOUNDS(ID, ID), 12 ms)
↳2 CpxTRS
↳3 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CdtProblem
↳5 CdtLeafRemovalProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CdtProblem
↳7 CdtUsableRulesProof (⇔, 0 ms)
↳8 CdtProblem
↳9 CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)), 63 ms)
↳10 CdtProblem
↳11 SIsEmptyProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 BOUNDS(1, 1)
is_empty(nil) → true
is_empty(cons(x, l)) → false
hd(cons(x, l)) → x
tl(cons(x, l)) → l
append(l1, l2) → ifappend(l1, l2, l1)
ifappend(l1, l2, nil) → l2
ifappend(l1, l2, cons(x, l)) → cons(x, append(l, l2))
As the TRS does not nest defined symbols, we have rc = irc.
is_empty(nil) → true
is_empty(cons(x, l)) → false
hd(cons(x, l)) → x
tl(cons(x, l)) → l
append(l1, l2) → ifappend(l1, l2, l1)
ifappend(l1, l2, nil) → l2
ifappend(l1, l2, cons(x, l)) → cons(x, append(l, l2))
Tuples:
is_empty(nil) → true
is_empty(cons(z0, z1)) → false
hd(cons(z0, z1)) → z0
tl(cons(z0, z1)) → z1
append(z0, z1) → ifappend(z0, z1, z0)
ifappend(z0, z1, nil) → z1
ifappend(z0, z1, cons(z2, z3)) → cons(z2, append(z3, z1))
S tuples:
IS_EMPTY(nil) → c
IS_EMPTY(cons(z0, z1)) → c1
HD(cons(z0, z1)) → c2
TL(cons(z0, z1)) → c3
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, nil) → c5
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
K tuples:none
IS_EMPTY(nil) → c
IS_EMPTY(cons(z0, z1)) → c1
HD(cons(z0, z1)) → c2
TL(cons(z0, z1)) → c3
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, nil) → c5
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
is_empty, hd, tl, append, ifappend
IS_EMPTY, HD, TL, APPEND, IFAPPEND
c, c1, c2, c3, c4, c5, c6
IS_EMPTY(cons(z0, z1)) → c1
TL(cons(z0, z1)) → c3
HD(cons(z0, z1)) → c2
IS_EMPTY(nil) → c
IFAPPEND(z0, z1, nil) → c5
Tuples:
is_empty(nil) → true
is_empty(cons(z0, z1)) → false
hd(cons(z0, z1)) → z0
tl(cons(z0, z1)) → z1
append(z0, z1) → ifappend(z0, z1, z0)
ifappend(z0, z1, nil) → z1
ifappend(z0, z1, cons(z2, z3)) → cons(z2, append(z3, z1))
S tuples:
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
K tuples:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
is_empty, hd, tl, append, ifappend
APPEND, IFAPPEND
c4, c6
is_empty(nil) → true
is_empty(cons(z0, z1)) → false
hd(cons(z0, z1)) → z0
tl(cons(z0, z1)) → z1
append(z0, z1) → ifappend(z0, z1, z0)
ifappend(z0, z1, nil) → z1
ifappend(z0, z1, cons(z2, z3)) → cons(z2, append(z3, z1))
S tuples:
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
K tuples:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
APPEND, IFAPPEND
c4, c6
We considered the (Usable) Rules:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
The order we found is given by the following interpretation:
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
POL(APPEND(x1, x2)) = [1] + [3]x1
POL(IFAPPEND(x1, x2, x3)) = [3]x3
POL(c4(x1)) = x1
POL(c6(x1)) = x1
POL(cons(x1, x2)) = [3] + x2
S tuples:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
Defined Rule Symbols:none
APPEND(z0, z1) → c4(IFAPPEND(z0, z1, z0))
IFAPPEND(z0, z1, cons(z2, z3)) → c6(APPEND(z3, z1))
APPEND, IFAPPEND
c4, c6