(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
cond1(true, x, y) → cond2(gr(x, 0), x, y)
cond2(true, x, y) → cond1(gr(add(x, y), 0), p(x), y)
cond2(false, x, y) → cond3(gr(y, 0), x, y)
cond3(true, x, y) → cond1(gr(add(x, y), 0), x, p(y))
cond3(false, x, y) → cond1(gr(add(x, y), 0), x, y)
gr(0, x) → false
gr(s(x), 0) → true
gr(s(x), s(y)) → gr(x, y)
add(0, x) → x
add(s(x), y) → s(add(x, y))
p(0) → 0
p(s(x)) → x
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted Cpx (relative) TRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
cond1(true, z0, z1) → cond2(gr(z0, 0), z0, z1)
cond2(true, z0, z1) → cond1(gr(add(z0, z1), 0), p(z0), z1)
cond2(false, z0, z1) → cond3(gr(z1, 0), z0, z1)
cond3(true, z0, z1) → cond1(gr(add(z0, z1), 0), z0, p(z1))
cond3(false, z0, z1) → cond1(gr(add(z0, z1), 0), z0, z1)
gr(0, z0) → false
gr(s(z0), 0) → true
gr(s(z0), s(z1)) → gr(z0, z1)
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1), GR(z0, 0))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1), P(z0))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1), GR(z1, 0))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1), P(z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1))
GR(0, z0) → c5
GR(s(z0), 0) → c6
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(0, z0) → c8
ADD(s(z0), z1) → c9(ADD(z0, z1))
P(0) → c10
P(s(z0)) → c11
S tuples:
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1), GR(z0, 0))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1), P(z0))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1), GR(z1, 0))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1), P(z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1))
GR(0, z0) → c5
GR(s(z0), 0) → c6
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(0, z0) → c8
ADD(s(z0), z1) → c9(ADD(z0, z1))
P(0) → c10
P(s(z0)) → c11
K tuples:none
Defined Rule Symbols:
cond1, cond2, cond3, gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD, P
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11
(3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 5 trailing nodes:
P(0) → c10
ADD(0, z0) → c8
P(s(z0)) → c11
GR(0, z0) → c5
GR(s(z0), 0) → c6
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
cond1(true, z0, z1) → cond2(gr(z0, 0), z0, z1)
cond2(true, z0, z1) → cond1(gr(add(z0, z1), 0), p(z0), z1)
cond2(false, z0, z1) → cond3(gr(z1, 0), z0, z1)
cond3(true, z0, z1) → cond1(gr(add(z0, z1), 0), z0, p(z1))
cond3(false, z0, z1) → cond1(gr(add(z0, z1), 0), z0, z1)
gr(0, z0) → false
gr(s(z0), 0) → true
gr(s(z0), s(z1)) → gr(z0, z1)
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1), GR(z0, 0))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1), P(z0))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1), GR(z1, 0))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1), P(z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1))
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
S tuples:
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1), GR(z0, 0))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1), P(z0))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1), GR(z1, 0))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1), P(z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1))
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
K tuples:none
Defined Rule Symbols:
cond1, cond2, cond3, gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c2, c3, c4, c7, c9
(5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 7 trailing tuple parts
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
cond1(true, z0, z1) → cond2(gr(z0, 0), z0, z1)
cond2(true, z0, z1) → cond1(gr(add(z0, z1), 0), p(z0), z1)
cond2(false, z0, z1) → cond3(gr(z1, 0), z0, z1)
cond3(true, z0, z1) → cond1(gr(add(z0, z1), 0), z0, p(z1))
cond3(false, z0, z1) → cond1(gr(add(z0, z1), 0), z0, z1)
gr(0, z0) → false
gr(s(z0), 0) → true
gr(s(z0), s(z1)) → gr(z0, z1)
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
S tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
K tuples:none
Defined Rule Symbols:
cond1, cond2, cond3, gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c2, c3, c4
(7) CdtUsableRulesProof (EQUIVALENT transformation)
The following rules are not usable and were removed:
cond1(true, z0, z1) → cond2(gr(z0, 0), z0, z1)
cond2(true, z0, z1) → cond1(gr(add(z0, z1), 0), p(z0), z1)
cond2(false, z0, z1) → cond3(gr(z1, 0), z0, z1)
cond3(true, z0, z1) → cond1(gr(add(z0, z1), 0), z0, p(z1))
cond3(false, z0, z1) → cond1(gr(add(z0, z1), 0), z0, z1)
gr(s(z0), s(z1)) → gr(z0, z1)
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
S tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
K tuples:none
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c2, c3, c4
(9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
GR(s(z0), s(z1)) → c7(GR(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = [2]
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = 0
POL(COND2(x1, x2, x3)) = 0
POL(COND3(x1, x2, x3)) = 0
POL(GR(x1, x2)) = x1 + [2]x2
POL(add(x1, x2)) = [2] + [5]x2
POL(c(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1, x2)) = x1 + x2
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = [3]
POL(gr(x1, x2)) = 0
POL(p(x1)) = [4] + [3]x1
POL(s(x1)) = [2] + x1
POL(true) = [3]
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, z0, z1) → c(COND2(gr(z0, 0), z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c2, c3, c4
(11) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND1(
true,
z0,
z1) →
c(
COND2(
gr(
z0,
0),
z0,
z1)) by
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(true, z0, z1) → c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND2, COND3, COND1
Compound Symbols:
c7, c9, c1, c2, c3, c4, c
(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND2(
true,
z0,
z1) →
c1(
COND1(
gr(
add(
z0,
z1),
0),
p(
z0),
z1),
ADD(
z0,
z1)) by
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1), ADD(0, x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0), ADD(0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1), ADD(0, x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0), ADD(0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1), ADD(0, x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0), ADD(0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND2, COND3, COND1
Compound Symbols:
c7, c9, c2, c3, c4, c, c1
(15) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 2 trailing tuple parts
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND2, COND3, COND1
Compound Symbols:
c7, c9, c2, c3, c4, c, c1, c1
(17) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)
The following tuples could be moved from S to K by knowledge propagation:
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND2, COND3, COND1
Compound Symbols:
c7, c9, c2, c3, c4, c, c1, c1
(19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = x2
POL(COND2(x1, x2, x3)) = [4]x1 + x2
POL(COND3(x1, x2, x3)) = x2
POL(GR(x1, x2)) = [2]x1 + [3]x2
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1, x2)) = x1 + x2
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = 0
POL(p(x1)) = x1
POL(s(x1)) = [1] + x1
POL(true) = 0
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND2(false, z0, z1) → c2(COND3(gr(z1, 0), z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND2, COND3, COND1
Compound Symbols:
c7, c9, c2, c3, c4, c, c1, c1
(21) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND2(
false,
z0,
z1) →
c2(
COND3(
gr(
z1,
0),
z0,
z1)) by
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(true, z0, z1) → c3(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c3, c4, c, c1, c1, c2
(23) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
true,
z0,
z1) →
c3(
COND1(
gr(
add(
z0,
z1),
0),
z0,
p(
z1)),
ADD(
z0,
z1)) by
COND3(true, x0, 0) → c3(COND1(gr(add(x0, 0), 0), x0, 0), ADD(x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)), ADD(0, z0))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
(24) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c3(COND1(gr(add(x0, 0), 0), x0, 0), ADD(x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)), ADD(0, z0))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c3(COND1(gr(add(x0, 0), 0), x0, 0), ADD(x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)), ADD(0, z0))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3
(25) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(26) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c3(COND1(gr(add(x0, 0), 0), x0, 0), ADD(x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c3(COND1(gr(add(x0, 0), 0), x0, 0), ADD(x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3, c3
(27) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(28) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, 0) → c5(ADD(x0, 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, 0) → c5(ADD(x0, 0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3, c3, c5
(29) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
COND3(true, x0, 0) → c5(ADD(x0, 0))
(30) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3, c3, c5
(31) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)
The following tuples could be moved from S to K by knowledge propagation:
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
(32) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3, c3, c5
(33) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = [4]x3
POL(COND2(x1, x2, x3)) = [4]x3
POL(COND3(x1, x2, x3)) = [4]x3
POL(GR(x1, x2)) = x1
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = 0
POL(p(x1)) = x1
POL(s(x1)) = [1] + x1
POL(true) = 0
(34) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3, c3, c5
(35) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
We considered the (Usable) Rules:none
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = 0
POL(COND2(x1, x2, x3)) = [2]x1·x2
POL(COND3(x1, x2, x3)) = [2]x2
POL(GR(x1, x2)) = 0
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = [2]
POL(gr(x1, x2)) = 0
POL(p(x1)) = 0
POL(s(x1)) = [1]
POL(true) = 0
(36) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND3(false, z0, z1) → c4(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND3, COND1, COND2
Compound Symbols:
c7, c9, c4, c, c1, c1, c2, c3, c3, c5
(37) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
false,
z0,
z1) →
c4(
COND1(
gr(
add(
z0,
z1),
0),
z0,
z1),
ADD(
z0,
z1)) by
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0), ADD(0, z0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
(38) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0), ADD(0, z0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0), ADD(0, z0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c1, c2, c3, c3, c5, c4
(39) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(40) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c1, c2, c3, c3, c5, c4, c4
(41) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
We considered the (Usable) Rules:none
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = 0
POL(COND2(x1, x2, x3)) = [2]x1·x2
POL(COND3(x1, x2, x3)) = x2·x3 + [2]x1·x2
POL(GR(x1, x2)) = 0
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c4(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = [2]
POL(gr(x1, x2)) = 0
POL(p(x1)) = 0
POL(s(x1)) = [2]
POL(true) = 0
(42) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c1, c2, c3, c3, c5, c4, c4
(43) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND2(
true,
s(
z0),
x1) →
c1(
COND1(
gr(
add(
s(
z0),
x1),
0),
z0,
x1),
ADD(
s(
z0),
x1)) by
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
(44) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), p(s(z0)), z1), ADD(s(z0), z1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c1, c2, c3, c3, c5, c4, c4
(45) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND2(
true,
s(
z0),
z1) →
c1(
COND1(
gr(
s(
add(
z0,
z1)),
0),
p(
s(
z0)),
z1),
ADD(
s(
z0),
z1)) by
COND2(true, s(z0), x1) → c1(COND1(gr(s(add(z0, x1)), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
(46) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), x1) → c1(COND1(gr(s(add(z0, x1)), 0), z0, x1), ADD(s(z0), x1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c2, c3, c3, c5, c4, c4, c1
(47) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = x2
POL(COND2(x1, x2, x3)) = x2
POL(COND3(x1, x2, x3)) = x2
POL(GR(x1, x2)) = [5]x2
POL(add(x1, x2)) = [4]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c4(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = 0
POL(p(x1)) = x1
POL(s(x1)) = [2] + x1
POL(true) = 0
(48) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c2, c3, c3, c5, c4, c4, c1
(49) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND2(
true,
0,
x1) →
c1(
COND1(
gr(
add(
0,
x1),
0),
0,
x1)) by
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
(50) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c1, c2, c3, c3, c5, c4, c4, c1
(51) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND2(
true,
0,
z0) →
c1(
COND1(
gr(
z0,
0),
p(
0),
z0)) by
COND2(true, 0, x0) → c1(COND1(gr(x0, 0), 0, x0))
COND2(true, 0, 0) → c1(COND1(false, p(0), 0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
(52) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, 0) → c1(COND1(false, p(0), 0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, 0, x1) → c1(COND1(gr(add(0, x1), 0), 0, x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), p(0), z0))
COND2(true, s(z0), x1) → c1(COND1(gr(add(s(z0), x1), 0), z0, x1), ADD(s(z0), x1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c3, c5, c4, c4, c1, c1
(53) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing nodes:
COND2(true, 0, 0) → c1(COND1(false, p(0), 0))
(54) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c3, c5, c4, c4, c1, c1
(55) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
true,
x0,
s(
z0)) →
c3(
COND1(
gr(
add(
x0,
s(
z0)),
0),
x0,
z0),
ADD(
x0,
s(
z0))) by
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1), ADD(0, s(x1)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
(56) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1), ADD(0, s(x1)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c3, c5, c4, c4, c1, c1
(57) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(58) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c3, c5, c4, c4, c1, c1
(59) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
true,
s(
z0),
z1) →
c3(
COND1(
gr(
s(
add(
z0,
z1)),
0),
s(
z0),
p(
z1)),
ADD(
s(
z0),
z1)) by
COND3(true, s(x0), 0) → c3(COND1(gr(s(add(x0, 0)), 0), s(x0), 0), ADD(s(x0), 0))
COND3(true, s(x0), s(z0)) → c3(COND1(gr(s(add(x0, s(z0))), 0), s(x0), z0), ADD(s(x0), s(z0)))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
(60) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c3(COND1(gr(s(add(x0, 0)), 0), s(x0), 0), ADD(s(x0), 0))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c5, c4, c4, c1, c1, c3
(61) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(62) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, s(x0), 0) → c6(ADD(s(x0), 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(true, x0, s(z0)) → c3(COND1(gr(add(x0, s(z0)), 0), x0, z0), ADD(x0, s(z0)))
COND3(true, s(z0), z1) → c3(COND1(gr(s(add(z0, z1)), 0), s(z0), p(z1)), ADD(s(z0), z1))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c5, c4, c4, c1, c1, c3, c6
(63) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
COND3(true, s(x0), 0) → c6(ADD(s(x0), 0))
(64) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, 0, z0) → c3(COND1(gr(z0, 0), 0, p(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c3, c5, c4, c4, c1, c1, c3, c6
(65) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
true,
0,
z0) →
c3(
COND1(
gr(
z0,
0),
0,
p(
z0))) by
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, 0) → c3(COND1(false, 0, p(0)))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
(66) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, 0) → c3(COND1(false, 0, p(0)))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, 0) → c3(COND1(false, 0, p(0)))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c5, c4, c4, c1, c1, c3, c3, c6
(67) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing nodes:
COND3(true, 0, 0) → c3(COND1(false, 0, p(0)))
(68) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c5, c4, c4, c1, c1, c3, c3, c6
(69) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)
The following tuples could be moved from S to K by knowledge propagation:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
(70) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c5, c4, c4, c1, c1, c3, c3, c6
(71) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = x3
POL(COND2(x1, x2, x3)) = x3
POL(COND3(x1, x2, x3)) = x3
POL(GR(x1, x2)) = x1 + [3]x2
POL(add(x1, x2)) = [1] + [3]x1 + [2]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c4(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = 0
POL(p(x1)) = x1
POL(s(x1)) = [1] + x1
POL(true) = 0
(72) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c5, c4, c4, c1, c1, c3, c3, c6
(73) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
true,
x0,
0) →
c5(
COND1(
gr(
add(
x0,
0),
0),
x0,
0)) by
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
(74) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c4, c4, c1, c1, c3, c3, c6, c5
(75) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
false,
s(
z0),
z1) →
c4(
COND1(
gr(
s(
add(
z0,
z1)),
0),
s(
z0),
z1),
ADD(
s(
z0),
z1)) by
COND3(false, s(x0), x1) → c4(COND1(true, s(x0), x1), ADD(s(x0), x1))
COND3(false, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), z0), ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1), ADD(s(s(z0)), z1))
COND3(false, s(x0), x1) → c4(ADD(s(x0), x1))
(76) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(x0), x1) → c4(COND1(true, s(x0), x1), ADD(s(x0), x1))
COND3(false, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), z0), ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1), ADD(s(s(z0)), z1))
COND3(false, s(x0), x1) → c4(ADD(s(x0), x1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND3(false, 0, z0) → c4(COND1(gr(z0, 0), 0, z0))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c4, c1, c1, c3, c3, c6, c5, c4
(77) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
COND3(
false,
0,
z0) →
c4(
COND1(
gr(
z0,
0),
0,
z0)) by
COND3(false, 0, 0) → c4(COND1(false, 0, 0))
COND3(false, 0, s(z0)) → c4(COND1(true, 0, s(z0)))
(78) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(x0), x1) → c4(COND1(true, s(x0), x1), ADD(s(x0), x1))
COND3(false, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), z0), ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1), ADD(s(s(z0)), z1))
COND3(false, s(x0), x1) → c4(ADD(s(x0), x1))
COND3(false, 0, 0) → c4(COND1(false, 0, 0))
COND3(false, 0, s(z0)) → c4(COND1(true, 0, s(z0)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(false, 0, 0) → c4(COND1(false, 0, 0))
COND3(false, 0, s(z0)) → c4(COND1(true, 0, s(z0)))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND3(true, x0, 0) → c5(COND1(gr(add(x0, 0), 0), x0, 0))
COND3(false, s(z0), z1) → c4(COND1(gr(s(add(z0, z1)), 0), s(z0), z1), ADD(s(z0), z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c4, c4
(79) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
COND3(false, 0, s(z0)) → c4(COND1(true, 0, s(z0)))
Removed 1 trailing nodes:
COND3(false, 0, 0) → c4(COND1(false, 0, 0))
(80) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(x0), x1) → c4(COND1(true, s(x0), x1), ADD(s(x0), x1))
COND3(false, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), z0), ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1), ADD(s(s(z0)), z1))
COND3(false, s(x0), x1) → c4(ADD(s(x0), x1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, 0) → c2(COND3(false, x0, 0))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c4, c4
(81) CdtInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use instantiation to replace
COND2(
false,
x0,
0) →
c2(
COND3(
false,
x0,
0)) by
COND2(false, 0, 0) → c2(COND3(false, 0, 0))
(82) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(x0), x1) → c4(COND1(true, s(x0), x1), ADD(s(x0), x1))
COND3(false, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), z0), ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1), ADD(s(s(z0)), z1))
COND3(false, s(x0), x1) → c4(ADD(s(x0), x1))
COND2(false, 0, 0) → c2(COND3(false, 0, 0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, 0) → c2(COND3(false, 0, 0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c4, c4
(83) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 2 leading nodes:
COND3(false, s(x0), x1) → c4(COND1(true, s(x0), x1), ADD(s(x0), x1))
COND3(false, s(x0), x1) → c4(ADD(s(x0), x1))
Removed 1 trailing nodes:
COND2(false, 0, 0) → c2(COND3(false, 0, 0))
(84) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), z0), ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1), ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c4
(85) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(86) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(0), z0) → c8(ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND3(false, s(s(z0)), z1) → c8(ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(87) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 2 leading nodes:
COND3(false, s(0), z0) → c8(ADD(s(0), z0))
COND3(false, s(s(z0)), z1) → c8(ADD(s(s(z0)), z1))
(88) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(89) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1)) by COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
(90) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(91) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND2(true, s(z0), x1) → c1(COND1(gr(s(add(z0, x1)), 0), z0, x1), ADD(s(z0), x1)) by COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
(92) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(93) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND2(true, s(x0), x1) → c1(COND1(true, p(s(x0)), x1), ADD(s(x0), x1)) by COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
(94) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(95) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = [4]x2
POL(COND2(x1, x2, x3)) = [4]x2
POL(COND3(x1, x2, x3)) = [4]x2
POL(GR(x1, x2)) = [4]x1
POL(add(x1, x2)) = [2]x1 + [2]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = [2]x2
POL(p(x1)) = x1
POL(s(x1)) = [4] + x1
POL(true) = 0
(96) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(97) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), p(s(0)), z0), ADD(s(0), z0)) by COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
(98) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(99) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = x2
POL(COND2(x1, x2, x3)) = x2
POL(COND3(x1, x2, x3)) = [2]x1 + x2
POL(GR(x1, x2)) = [2]x1 + [3]x2
POL(add(x1, x2)) = [3] + [3]x1 + [4]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = [4]
POL(gr(x1, x2)) = 0
POL(p(x1)) = x1
POL(s(x1)) = [2] + x1
POL(true) = 0
(100) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
GR(s(z0), s(z1)) → c7(GR(z0, z1))
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
GR, ADD, COND1, COND2, COND3
Compound Symbols:
c7, c9, c, c2, c1, c1, c3, c3, c6, c5, c8
(101) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
GR(
s(
z0),
s(
z1)) →
c7(
GR(
z0,
z1)) by
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
(102) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(false, x0, s(z0)) → c2(COND3(true, x0, s(z0)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c2, c1, c1, c3, c3, c6, c5, c8, c7
(103) CdtInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use instantiation to replace
COND2(
false,
x0,
s(
z0)) →
c2(
COND3(
true,
x0,
s(
z0))) by
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
(104) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(gr(s(add(z0, z1)), 0), z0, z1), ADD(s(z0), z1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c1, c3, c3, c6, c5, c8, c7, c2
(105) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
COND3(true, s(x0), x1) → c3(ADD(s(x0), x1))
(106) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, s(z0), s(x1)) → c3(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1), ADD(s(z0), s(x1)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), x1) → c3(COND1(true, s(x0), p(x1)), ADD(s(x0), x1))
COND3(true, s(0), z0) → c3(COND1(gr(s(z0), 0), s(0), p(z0)), ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c3(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)), ADD(s(s(z0)), z1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
COND2(true, s(0), z0) → c1(COND1(gr(s(z0), 0), 0, z0), ADD(s(0), z0))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c1, c3, c3, c6, c5, c8, c7, c2
(107) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(108) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(z0), s(x1)) → c4(ADD(s(z0), s(x1)))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(x0), x1) → c4(ADD(s(x0), x1))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(0), z0) → c4(ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND3(true, s(s(z0)), z1) → c4(ADD(s(s(z0)), z1))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c1, c3, c6, c5, c8, c7, c2, c4
(109) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 4 leading nodes:
COND3(true, s(z0), s(x1)) → c4(ADD(s(z0), s(x1)))
COND3(true, s(x0), x1) → c4(ADD(s(x0), x1))
COND3(true, s(0), z0) → c4(ADD(s(0), z0))
COND3(true, s(s(z0)), z1) → c4(ADD(s(s(z0)), z1))
(110) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c1, c3, c6, c5, c8, c7, c2, c4
(111) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), p(s(s(z0))), z1), ADD(s(s(z0)), z1)) by COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
(112) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c6, c5, c8, c1, c7, c2, c4
(113) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
We considered the (Usable) Rules:
gr(0, z0) → false
p(0) → 0
gr(s(z0), 0) → true
And the Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = [3]
POL(COND1(x1, x2, x3)) = [2]x1 + [2]x2
POL(COND2(x1, x2, x3)) = [2]x2
POL(COND3(x1, x2, x3)) = [2]x2
POL(GR(x1, x2)) = [4]x1 + [5]x2
POL(add(x1, x2)) = [3]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = [2]x2
POL(p(x1)) = 0
POL(s(x1)) = [2] + x1
POL(true) = 0
(114) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0)))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c6, c5, c8, c1, c7, c2, c4
(115) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND2(true, 0, s(z0)) → c1(COND1(true, p(0), s(z0))) by COND2(true, 0, s(z0)) → c1(COND1(true, 0, s(z0)))
(116) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND2(true, 0, s(z0)) → c1(COND1(true, 0, s(z0)))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c6, c5, c8, c1, c7, c2, c4
(117) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
COND2(true, 0, s(z0)) → c1(COND1(true, 0, s(z0)))
(118) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
S tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c6, c5, c8, c1, c7, c2, c4
(119) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
ADD(s(z0), z1) → c9(ADD(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = [1] + [2]x1
POL(COND1(x1, x2, x3)) = [2]x2 + x22
POL(COND2(x1, x2, x3)) = [2]x2 + x22
POL(COND3(x1, x2, x3)) = [2]x2 + x22
POL(GR(x1, x2)) = [2]x1 + [3]x2 + x22 + [3]x1·x2 + x12
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = 0
POL(p(x1)) = 0
POL(s(x1)) = [1] + x1
POL(true) = 0
(120) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c6, c5, c8, c1, c7, c2, c4
(121) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1)) by COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
(122) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c6, c5, c8, c1, c7, c2, c4
(123) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND3(true, s(x0), 0) → c6(COND1(gr(s(add(x0, 0)), 0), s(x0), 0)) by COND3(true, s(z0), 0) → c6(COND1(true, s(z0), 0))
(124) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
COND3(true, s(z0), 0) → c6(COND1(true, s(z0), 0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c5, c8, c1, c7, c2, c4, c6
(125) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
COND3(true, s(z0), 0) → c6(COND1(true, s(z0), 0))
(126) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c5, c8, c1, c7, c2, c4
(127) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
We considered the (Usable) Rules:none
And the Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = [2]
POL(COND1(x1, x2, x3)) = [1] + x2 + [2]x22
POL(COND2(x1, x2, x3)) = [1] + [2]x22
POL(COND3(x1, x2, x3)) = [1] + x2 + [2]x2·x3 + [2]x22
POL(GR(x1, x2)) = 0
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = [2]
POL(p(x1)) = 0
POL(s(x1)) = [2] + x1
POL(true) = 0
(128) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c5, c8, c1, c7, c2, c4
(129) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0)) by COND3(true, 0, 0) → c3(COND1(false, 0, 0))
(130) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
COND3(true, 0, 0) → c3(COND1(false, 0, 0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, 0) → c3(COND1(gr(0, 0), 0, 0))
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c5, c8, c1, c7, c2, c4
(131) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing nodes:
COND3(true, 0, 0) → c3(COND1(false, 0, 0))
(132) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c5, c8, c1, c7, c2, c4
(133) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND3(true, 0, s(z0)) → c3(COND1(gr(s(z0), 0), 0, z0)) by COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
(134) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
ADD(s(z0), z1) → c9(ADD(z0, z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
ADD, COND1, COND2, COND3, GR
Compound Symbols:
c9, c, c1, c3, c5, c8, c1, c7, c2, c4
(135) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
ADD(
s(
z0),
z1) →
c9(
ADD(
z0,
z1)) by
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
(136) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND3(true, 0, s(x1)) → c3(COND1(gr(s(x1), 0), 0, x1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c3, c5, c8, c1, c7, c2, c4, c9
(137) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing nodes:
COND2(true, s(0), z0) → c4(ADD(s(0), z0))
(138) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0))))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c3, c5, c8, c1, c7, c2, c4, c9
(139) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND3(true, 0, s(z0)) → c3(COND1(true, 0, p(s(z0)))) by COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
(140) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c5, c8, c1, c7, c2, c4, c3, c9
(141) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = [4]x3
POL(COND2(x1, x2, x3)) = [4]x3
POL(COND3(x1, x2, x3)) = [4]x3
POL(GR(x1, x2)) = [3]x1 + [5]x2
POL(add(x1, x2)) = [2]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = [3]
POL(gr(x1, x2)) = [2]x2
POL(p(x1)) = x1
POL(s(x1)) = [2] + x1
POL(true) = [4]
(142) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c5, c8, c1, c7, c2, c4, c3, c9
(143) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = [2]x3 + x32
POL(COND2(x1, x2, x3)) = x32 + x1·x3
POL(COND3(x1, x2, x3)) = x32 + [2]x2·x3
POL(GR(x1, x2)) = [2]x12
POL(add(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = [1]
POL(gr(x1, x2)) = 0
POL(p(x1)) = x1
POL(s(x1)) = [1] + x1
POL(true) = [2]
(144) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c5, c8, c1, c7, c2, c4, c3, c9
(145) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace COND3(true, 0, 0) → c5(COND1(gr(0, 0), 0, 0)) by COND3(true, 0, 0) → c5(COND1(false, 0, 0))
(146) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
COND3(true, 0, 0) → c5(COND1(false, 0, 0))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c5, c8, c1, c7, c2, c4, c3, c9
(147) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing nodes:
COND3(true, 0, 0) → c5(COND1(false, 0, 0))
(148) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c5, c8, c1, c7, c2, c4, c3, c9
(149) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
COND1(true, 0, x1) → c(COND2(false, 0, x1))
We considered the (Usable) Rules:
p(0) → 0
p(s(z0)) → z0
And the Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = 0
POL(COND1(x1, x2, x3)) = [1] + x3
POL(COND2(x1, x2, x3)) = x1 + x3
POL(COND3(x1, x2, x3)) = [4]x2 + x3
POL(GR(x1, x2)) = [2]x1 + [3]x2
POL(add(x1, x2)) = [3]x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c1(x1, x2)) = x1 + x2
POL(c2(x1)) = x1
POL(c3(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(false) = 0
POL(gr(x1, x2)) = [2] + [2]x1 + [5]x2
POL(p(x1)) = [2] + x1
POL(s(x1)) = [1] + x1
POL(true) = [1]
(150) Obligation:
Complexity Dependency Tuples Problem
Rules:
gr(0, z0) → false
gr(s(z0), 0) → true
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
p(0) → 0
p(s(z0)) → z0
Tuples:
COND1(true, 0, x1) → c(COND2(false, 0, x1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
COND2(true, 0, z0) → c1(COND1(gr(z0, 0), 0, z0))
COND3(true, s(z0), 0) → c5(COND1(gr(s(add(z0, 0)), 0), s(z0), 0))
COND3(false, s(0), z0) → c8(COND1(gr(s(z0), 0), s(0), z0))
COND3(false, s(s(z0)), z1) → c8(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), z1))
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND3(true, s(z0), s(x1)) → c4(COND1(gr(s(add(z0, s(x1))), 0), s(z0), x1))
COND3(true, s(x0), x1) → c4(COND1(true, s(x0), p(x1)))
COND3(true, s(0), z0) → c4(COND1(gr(s(z0), 0), s(0), p(z0)))
COND3(true, s(s(z0)), z1) → c4(COND1(gr(s(s(add(z0, z1))), 0), s(s(z0)), p(z1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
S tuples:none
K tuples:
COND2(true, s(z0), z1) → c1(COND1(true, z0, z1), ADD(s(z0), z1))
GR(s(s(y0)), s(s(y1))) → c7(GR(s(y0), s(y1)))
COND2(true, s(0), z0) → c4(COND1(gr(s(z0), 0), 0, z0))
COND2(true, s(s(z0)), z1) → c1(COND1(gr(s(s(add(z0, z1))), 0), s(z0), z1), ADD(s(s(z0)), z1))
COND1(true, s(z0), x1) → c(COND2(true, s(z0), x1))
ADD(s(s(y0)), z1) → c9(ADD(s(y0), z1))
COND3(true, 0, s(z0)) → c3(COND1(true, 0, z0))
COND2(false, 0, s(z1)) → c2(COND3(true, 0, s(z1)))
COND1(true, 0, x1) → c(COND2(false, 0, x1))
Defined Rule Symbols:
gr, add, p
Defined Pair Symbols:
COND1, COND2, COND3, GR, ADD
Compound Symbols:
c, c1, c5, c8, c1, c7, c2, c4, c3, c9
(151) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)
The set S is empty
(152) BOUNDS(1, 1)