0 CpxTRS
↳1 NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID), 14 ms)
↳2 CpxTRS
↳3 RcToIrcProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTRS
↳5 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CdtProblem
↳7 CdtLeafRemovalProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CdtProblem
↳9 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID), 0 ms)
↳10 CdtProblem
↳11 CdtUsableRulesProof (⇔, 0 ms)
↳12 CdtProblem
↳13 CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)), 120 ms)
↳14 CdtProblem
↳15 SIsEmptyProof (BOTH BOUNDS(ID, ID), 0 ms)
↳16 BOUNDS(1, 1)
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
circ(s, id) → s
circ(id, s) → s
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
subst(a, id) → a
msubst(a, id) → a
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
As the TRS does not nest defined symbols, we have rc = irc.
circ(s, id) → s
circ(id, s) → s
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
subst(a, id) → a
msubst(a, id) → a
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
Tuples:
circ(z0, id) → z0
circ(id, z0) → z0
circ(cons(z0, z1), z2) → cons(msubst(z0, z2), circ(z1, z2))
circ(cons(lift, z0), cons(lift, z1)) → cons(lift, circ(z0, z1))
circ(cons(lift, z0), cons(z1, z2)) → cons(z1, circ(z0, z2))
subst(z0, id) → z0
msubst(z0, id) → z0
S tuples:
CIRC(z0, id) → c
CIRC(id, z0) → c1
CIRC(cons(z0, z1), z2) → c2(MSUBST(z0, z2), CIRC(z1, z2))
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
SUBST(z0, id) → c5
MSUBST(z0, id) → c6
K tuples:none
CIRC(z0, id) → c
CIRC(id, z0) → c1
CIRC(cons(z0, z1), z2) → c2(MSUBST(z0, z2), CIRC(z1, z2))
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
SUBST(z0, id) → c5
MSUBST(z0, id) → c6
circ, subst, msubst
CIRC, SUBST, MSUBST
c, c1, c2, c3, c4, c5, c6
MSUBST(z0, id) → c6
SUBST(z0, id) → c5
CIRC(id, z0) → c1
CIRC(z0, id) → c
Tuples:
circ(z0, id) → z0
circ(id, z0) → z0
circ(cons(z0, z1), z2) → cons(msubst(z0, z2), circ(z1, z2))
circ(cons(lift, z0), cons(lift, z1)) → cons(lift, circ(z0, z1))
circ(cons(lift, z0), cons(z1, z2)) → cons(z1, circ(z0, z2))
subst(z0, id) → z0
msubst(z0, id) → z0
S tuples:
CIRC(cons(z0, z1), z2) → c2(MSUBST(z0, z2), CIRC(z1, z2))
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
K tuples:none
CIRC(cons(z0, z1), z2) → c2(MSUBST(z0, z2), CIRC(z1, z2))
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
circ, subst, msubst
CIRC
c2, c3, c4
Tuples:
circ(z0, id) → z0
circ(id, z0) → z0
circ(cons(z0, z1), z2) → cons(msubst(z0, z2), circ(z1, z2))
circ(cons(lift, z0), cons(lift, z1)) → cons(lift, circ(z0, z1))
circ(cons(lift, z0), cons(z1, z2)) → cons(z1, circ(z0, z2))
subst(z0, id) → z0
msubst(z0, id) → z0
S tuples:
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
K tuples:none
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
circ, subst, msubst
CIRC
c3, c4, c2
circ(z0, id) → z0
circ(id, z0) → z0
circ(cons(z0, z1), z2) → cons(msubst(z0, z2), circ(z1, z2))
circ(cons(lift, z0), cons(lift, z1)) → cons(lift, circ(z0, z1))
circ(cons(lift, z0), cons(z1, z2)) → cons(z1, circ(z0, z2))
subst(z0, id) → z0
msubst(z0, id) → z0
S tuples:
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
K tuples:none
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
CIRC
c3, c4, c2
We considered the (Usable) Rules:none
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
The order we found is given by the following interpretation:
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
POL(CIRC(x1, x2)) = x2 + x1·x2 + x12
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(cons(x1, x2)) = [1] + x2
POL(lift) = 0
S tuples:none
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
Defined Rule Symbols:none
CIRC(cons(lift, z0), cons(lift, z1)) → c3(CIRC(z0, z1))
CIRC(cons(lift, z0), cons(z1, z2)) → c4(CIRC(z0, z2))
CIRC(cons(z0, z1), z2) → c2(CIRC(z1, z2))
CIRC
c3, c4, c2