(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
plus(s(X), plus(Y, Z)) → plus(X, plus(s(s(Y)), Z))
plus(s(X1), plus(X2, plus(X3, X4))) → plus(X1, plus(X3, plus(X2, X4)))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted CpxTRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, z2)) → c(PLUS(z0, plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
S tuples:
PLUS(s(z0), plus(z1, z2)) → c(PLUS(z0, plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c, c1
(3) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
PLUS(
s(
z0),
plus(
z1,
z2)) →
c(
PLUS(
z0,
plus(
s(
s(
z1)),
z2)),
PLUS(
s(
s(
z1)),
z2)) by
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(y1, y2))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, y2))), PLUS(s(s(z1)), plus(y1, y2)))
PLUS(s(z0), plus(z1, plus(y1, plus(y2, y3)))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, plus(y2, y3)))), PLUS(s(s(z1)), plus(y1, plus(y2, y3))))
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(y1, y2))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, y2))), PLUS(s(s(z1)), plus(y1, y2)))
PLUS(s(z0), plus(z1, plus(y1, plus(y2, y3)))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, plus(y2, y3)))), PLUS(s(s(z1)), plus(y1, plus(y2, y3))))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(y1, y2))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, y2))), PLUS(s(s(z1)), plus(y1, y2)))
PLUS(s(z0), plus(z1, plus(y1, plus(y2, y3)))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, plus(y2, y3)))), PLUS(s(s(z1)), plus(y1, plus(y2, y3))))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c
(5) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PLUS(
s(
z0),
plus(
z1,
plus(
y1,
y2))) →
c(
PLUS(
z0,
plus(
s(
s(
z1)),
plus(
y1,
y2))),
PLUS(
s(
s(
z1)),
plus(
y1,
y2))) by
PLUS(s(x0), plus(x1, plus(z1, z2))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), z2))), PLUS(s(s(x1)), plus(z1, z2)))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(y1, plus(y2, y3)))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, plus(y2, y3)))), PLUS(s(s(z1)), plus(y1, plus(y2, y3))))
PLUS(s(x0), plus(x1, plus(z1, z2))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), z2))), PLUS(s(s(x1)), plus(z1, z2)))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(z0), plus(z1, plus(y1, plus(y2, y3)))) → c(PLUS(z0, plus(s(s(z1)), plus(y1, plus(y2, y3)))), PLUS(s(s(z1)), plus(y1, plus(y2, y3))))
PLUS(s(x0), plus(x1, plus(z1, z2))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), z2))), PLUS(s(s(x1)), plus(z1, z2)))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c, c
(7) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PLUS(
s(
z0),
plus(
z1,
plus(
y1,
plus(
y2,
y3)))) →
c(
PLUS(
z0,
plus(
s(
s(
z1)),
plus(
y1,
plus(
y2,
y3)))),
PLUS(
s(
s(
z1)),
plus(
y1,
plus(
y2,
y3)))) by
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(z1, z2))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), z2))), PLUS(s(s(x1)), plus(z1, z2)))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(z1, z2))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), z2))), PLUS(s(s(x1)), plus(z1, z2)))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c, c
(9) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PLUS(
s(
x0),
plus(
x1,
plus(
z1,
z2))) →
c(
PLUS(
x0,
plus(
s(
x1),
plus(
s(
s(
z1)),
z2))),
PLUS(
s(
s(
x1)),
plus(
z1,
z2))) by
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c, c
(11) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PLUS(
s(
x0),
plus(
x1,
plus(
z1,
plus(
z2,
z3)))) →
c(
PLUS(
x0,
plus(
s(
x1),
plus(
z2,
plus(
z1,
z3)))),
PLUS(
s(
s(
x1)),
plus(
z1,
plus(
z2,
z3)))) by
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(z1, plus(x3, x4)))) → c(PLUS(x0, plus(s(x1), plus(s(s(z1)), plus(x3, x4)))), PLUS(s(s(x1)), plus(z1, plus(x3, x4))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c, c
(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PLUS(
s(
x0),
plus(
x1,
plus(
z1,
plus(
x3,
x4)))) →
c(
PLUS(
x0,
plus(
s(
x1),
plus(
s(
s(
z1)),
plus(
x3,
x4)))),
PLUS(
s(
s(
x1)),
plus(
z1,
plus(
x3,
x4)))) by
PLUS(s(x0), plus(z0, plus(x2, plus(x3, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), plus(x3, x4)))), PLUS(s(s(z0)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(z1, plus(z2, z3)))) → c(PLUS(x0, plus(s(x1), plus(z2, plus(z1, z3)))), PLUS(s(s(x1)), plus(z1, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
PLUS(s(x0), plus(z0, plus(x2, plus(x3, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), plus(x3, x4)))), PLUS(s(s(z0)), plus(x2, plus(x3, x4))))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
PLUS(s(x0), plus(z0, plus(x2, plus(x3, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), plus(x3, x4)))), PLUS(s(s(z0)), plus(x2, plus(x3, x4))))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c, c
(15) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PLUS(
s(
x0),
plus(
x1,
plus(
z1,
plus(
z2,
z3)))) →
c(
PLUS(
x0,
plus(
s(
x1),
plus(
z2,
plus(
z1,
z3)))),
PLUS(
s(
s(
x1)),
plus(
z1,
plus(
z2,
z3)))) by
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
plus(s(z0), plus(z1, z2)) → plus(z0, plus(s(s(z1)), z2))
plus(s(z0), plus(z1, plus(z2, z3))) → plus(z0, plus(z2, plus(z1, z3)))
Tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
PLUS(s(x0), plus(z0, plus(x2, plus(x3, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), plus(x3, x4)))), PLUS(s(s(z0)), plus(x2, plus(x3, x4))))
S tuples:
PLUS(s(z0), plus(z1, plus(z2, z3))) → c1(PLUS(z0, plus(z2, plus(z1, z3))), PLUS(z2, plus(z1, z3)), PLUS(z1, z3))
PLUS(s(s(y0)), plus(z1, z2)) → c(PLUS(s(y0), plus(s(s(z1)), z2)), PLUS(s(s(z1)), z2))
PLUS(s(x0), plus(x1, plus(x2, x3))) → c(PLUS(s(s(x1)), plus(x2, x3)))
PLUS(s(x0), plus(x1, plus(x2, plus(x3, x4)))) → c(PLUS(s(s(x1)), plus(x2, plus(x3, x4))))
PLUS(s(x0), plus(z0, plus(x2, z2))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), z2))), PLUS(s(s(z0)), plus(x2, z2)))
PLUS(s(x0), plus(z0, plus(x2, plus(z2, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(s(s(x2)), z3)))), PLUS(s(s(z0)), plus(x2, plus(z2, z3))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, z2)))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(x2, plus(z1, z2))))
PLUS(s(x0), plus(x1, plus(x2, plus(z1, plus(z2, z3))))) → c(PLUS(x0, plus(s(x1), plus(s(x2), plus(z2, plus(z1, z3))))), PLUS(s(s(x1)), plus(x2, plus(z1, plus(z2, z3)))))
PLUS(s(x0), plus(z0, plus(x2, plus(z1, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(z1)), plus(x2, x4)))), PLUS(s(s(z0)), plus(x2, plus(z1, x4))))
PLUS(s(x0), plus(z0, plus(z2, plus(z1, z3)))) → c(PLUS(x0, plus(z0, plus(z2, plus(z1, z3)))), PLUS(s(s(z0)), plus(z2, plus(z1, z3))))
PLUS(s(x0), plus(x1, plus(z1, plus(s(z0), z2)))) → c(PLUS(x0, plus(s(x1), plus(z0, plus(s(s(z1)), z2)))), PLUS(s(s(x1)), plus(z1, plus(s(z0), z2))))
PLUS(s(x0), plus(z0, plus(x2, plus(x3, x4)))) → c(PLUS(x0, plus(z0, plus(s(s(s(s(x2)))), plus(x3, x4)))), PLUS(s(s(z0)), plus(x2, plus(x3, x4))))
K tuples:none
Defined Rule Symbols:
plus
Defined Pair Symbols:
PLUS
Compound Symbols:
c1, c, c
(17) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)
A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 0.
The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1]
transitions:
s0(0) → 0
plus0(0, 0) → 1
(18) BOUNDS(O(1), O(n^1))