0 CpxTRS
↳1 RcToIrcProof (BOTH BOUNDS(ID, ID), 9 ms)
↳2 CpxTRS
↳3 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CdtProblem
↳5 CdtLeafRemovalProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CdtProblem
↳7 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CdtProblem
↳9 CdtUsableRulesProof (⇔, 0 ms)
↳10 CdtProblem
↳11 CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)), 65 ms)
↳12 CdtProblem
↳13 SIsEmptyProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 BOUNDS(1, 1)
admit(x, nil) → nil
admit(x, .(u, .(v, .(w, z)))) → cond(=(sum(x, u, v), w), .(u, .(v, .(w, admit(carry(x, u, v), z)))))
cond(true, y) → y
The duplicating contexts are:
admit([], .(u, .(v, .(w, z))))
admit(x, .([], .(v, .(w, z))))
admit(x, .(u, .([], .(w, z))))
The defined contexts are:
cond(=(sum(x0, x1, x2), w), .(x3, .(x4, .(w, []))))
As the TRS is an overlay system and the defined contexts and the duplicating contexts don't overlap, we have rc = irc.
admit(x, nil) → nil
admit(x, .(u, .(v, .(w, z)))) → cond(=(sum(x, u, v), w), .(u, .(v, .(w, admit(carry(x, u, v), z)))))
cond(true, y) → y
Tuples:
admit(z0, nil) → nil
admit(z0, .(z1, .(z2, .(w, z3)))) → cond(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3)))))
cond(true, z0) → z0
S tuples:
ADMIT(z0, nil) → c
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(COND(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3))))), ADMIT(carry(z0, z1, z2), z3))
COND(true, z0) → c2
K tuples:none
ADMIT(z0, nil) → c
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(COND(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3))))), ADMIT(carry(z0, z1, z2), z3))
COND(true, z0) → c2
admit, cond
ADMIT, COND
c, c1, c2
ADMIT(z0, nil) → c
COND(true, z0) → c2
Tuples:
admit(z0, nil) → nil
admit(z0, .(z1, .(z2, .(w, z3)))) → cond(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3)))))
cond(true, z0) → z0
S tuples:
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(COND(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3))))), ADMIT(carry(z0, z1, z2), z3))
K tuples:none
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(COND(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3))))), ADMIT(carry(z0, z1, z2), z3))
admit, cond
ADMIT
c1
Tuples:
admit(z0, nil) → nil
admit(z0, .(z1, .(z2, .(w, z3)))) → cond(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3)))))
cond(true, z0) → z0
S tuples:
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
K tuples:none
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
admit, cond
ADMIT
c1
admit(z0, nil) → nil
admit(z0, .(z1, .(z2, .(w, z3)))) → cond(=(sum(z0, z1, z2), w), .(z1, .(z2, .(w, admit(carry(z0, z1, z2), z3)))))
cond(true, z0) → z0
S tuples:
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
K tuples:none
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
ADMIT
c1
We considered the (Usable) Rules:none
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
The order we found is given by the following interpretation:
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
POL(.(x1, x2)) = [2] + x1 + x2
POL(ADMIT(x1, x2)) = x1 + [2]x2
POL(c1(x1)) = x1
POL(carry(x1, x2, x3)) = [3] + x1 + x3
POL(w) = [2]
S tuples:none
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
Defined Rule Symbols:none
ADMIT(z0, .(z1, .(z2, .(w, z3)))) → c1(ADMIT(carry(z0, z1, z2), z3))
ADMIT
c1