0 CpxTRS
↳1 RcToIrcProof (BOTH BOUNDS(ID, ID), 23 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 CdtNarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳10 CdtProblem
↳11 CdtUsableRulesProof (⇔, 0 ms)
↳12 CdtProblem
↳13 CdtNarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CdtProblem
↳15 CdtLeafRemovalProof (ComplexityIfPolyImplication, 0 ms)
↳16 CdtProblem
↳17 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID), 0 ms)
↳18 CdtProblem
↳19 CdtLeafRemovalProof (ComplexityIfPolyImplication, 0 ms)
↳20 CdtProblem
↳21 CdtUsableRulesProof (⇔, 0 ms)
↳22 CdtProblem
↳23 CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)), 7 ms)
↳24 CdtProblem
↳25 SIsEmptyProof (BOTH BOUNDS(ID, ID), 0 ms)
↳26 BOUNDS(1, 1)
+(X, 0) → X
+(X, s(Y)) → s(+(X, Y))
double(X) → +(X, X)
f(0, s(0), X) → f(X, double(X), X)
g(X, Y) → X
g(X, Y) → Y
The duplicating contexts are:
double([])
f(0, s(0), [])
The defined contexts are:
f(x0, [], x2)
As the TRS is an overlay system and the defined contexts and the duplicating contexts don't overlap, we have rc = irc.
+(X, 0) → X
+(X, s(Y)) → s(+(X, Y))
double(X) → +(X, X)
f(0, s(0), X) → f(X, double(X), X)
g(X, Y) → X
g(X, Y) → Y
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
double(z0) → +(z0, z0)
f(0, s(0), z0) → f(z0, double(z0), z0)
g(z0, z1) → z0
g(z0, z1) → z1
S tuples:
+'(z0, 0) → c
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, double(z0), z0), DOUBLE(z0))
G(z0, z1) → c4
G(z0, z1) → c5
K tuples:none
+'(z0, 0) → c
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, double(z0), z0), DOUBLE(z0))
G(z0, z1) → c4
G(z0, z1) → c5
+, double, f, g
+', DOUBLE, F, G
c, c1, c2, c3, c4, c5
G(z0, z1) → c5
G(z0, z1) → c4
+'(z0, 0) → c
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
double(z0) → +(z0, z0)
f(0, s(0), z0) → f(z0, double(z0), z0)
g(z0, z1) → z0
g(z0, z1) → z1
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, double(z0), z0), DOUBLE(z0))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, double(z0), z0), DOUBLE(z0))
+, double, f, g
+', DOUBLE, F
c1, c2, c3
f(0, s(0), z0) → f(z0, double(z0), z0)
g(z0, z1) → z0
g(z0, z1) → z1
Tuples:
double(z0) → +(z0, z0)
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, double(z0), z0), DOUBLE(z0))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, double(z0), z0), DOUBLE(z0))
double, +
+', DOUBLE, F
c1, c2, c3
F(0, s(0), z0) → c3(F(z0, +(z0, z0), z0), DOUBLE(z0))
Tuples:
double(z0) → +(z0, z0)
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, +(z0, z0), z0), DOUBLE(z0))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, +(z0, z0), z0), DOUBLE(z0))
double, +
+', DOUBLE, F
c1, c2, c3
double(z0) → +(z0, z0)
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, +(z0, z0), z0), DOUBLE(z0))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), z0) → c3(F(z0, +(z0, z0), z0), DOUBLE(z0))
+
+', DOUBLE, F
c1, c2, c3
F(0, s(0), 0) → c3(F(0, 0, 0), DOUBLE(0))
F(0, s(0), s(z1)) → c3(F(s(z1), s(+(s(z1), z1)), s(z1)), DOUBLE(s(z1)))
F(0, s(0), x0) → c3(DOUBLE(x0))
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), 0) → c3(F(0, 0, 0), DOUBLE(0))
F(0, s(0), s(z1)) → c3(F(s(z1), s(+(s(z1), z1)), s(z1)), DOUBLE(s(z1)))
F(0, s(0), x0) → c3(DOUBLE(x0))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), 0) → c3(F(0, 0, 0), DOUBLE(0))
F(0, s(0), s(z1)) → c3(F(s(z1), s(+(s(z1), z1)), s(z1)), DOUBLE(s(z1)))
F(0, s(0), x0) → c3(DOUBLE(x0))
+
+', DOUBLE, F
c1, c2, c3, c3
F(0, s(0), 0) → c3(F(0, 0, 0), DOUBLE(0))
F(0, s(0), x0) → c3(DOUBLE(x0))
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), s(z1)) → c3(F(s(z1), s(+(s(z1), z1)), s(z1)), DOUBLE(s(z1)))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), s(z1)) → c3(F(s(z1), s(+(s(z1), z1)), s(z1)), DOUBLE(s(z1)))
+
+', DOUBLE, F
c1, c2, c3
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), s(z1)) → c3(DOUBLE(s(z1)))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
DOUBLE(z0) → c2(+'(z0, z0))
F(0, s(0), s(z1)) → c3(DOUBLE(s(z1)))
+
+', DOUBLE, F
c1, c2, c3
F(0, s(0), s(z1)) → c3(DOUBLE(s(z1)))
DOUBLE(z0) → c2(+'(z0, z0))
Tuples:
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
+
+'
c1
+(z0, 0) → z0
+(z0, s(z1)) → s(+(z0, z1))
S tuples:
+'(z0, s(z1)) → c1(+'(z0, z1))
K tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
+'
c1
We considered the (Usable) Rules:none
+'(z0, s(z1)) → c1(+'(z0, z1))
The order we found is given by the following interpretation:
+'(z0, s(z1)) → c1(+'(z0, z1))
POL(+'(x1, x2)) = x2
POL(c1(x1)) = x1
POL(s(x1)) = [1] + x1
S tuples:none
+'(z0, s(z1)) → c1(+'(z0, z1))
Defined Rule Symbols:none
+'(z0, s(z1)) → c1(+'(z0, z1))
+'
c1