(0) Obligation:
The Runtime Complexity (innermost) of the given
CpxTRS could be proven to be
BOUNDS(1, n^2).
The TRS R consists of the following rules:
f(0) → true
f(1) → false
f(s(x)) → f(x)
if(true, x, y) → x
if(false, x, y) → y
g(s(x), s(y)) → if(f(x), s(x), s(y))
g(x, c(y)) → g(x, g(s(c(y)), y))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted Cpx (relative) TRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(0) → c1
F(1) → c2
F(s(z0)) → c3(F(z0))
IF(true, z0, z1) → c4
IF(false, z0, z1) → c5
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
S tuples:
F(0) → c1
F(1) → c2
F(s(z0)) → c3(F(z0))
IF(true, z0, z1) → c4
IF(false, z0, z1) → c5
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
K tuples:none
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, IF, G
Compound Symbols:
c1, c2, c3, c4, c5, c6, c7
(3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing nodes:
IF(true, z0, z1) → c4
F(1) → c2
F(0) → c1
IF(false, z0, z1) → c5
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
S tuples:
F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
K tuples:none
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c6, c7
(5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
S tuples:
F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
K tuples:none
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c7, c6
(7) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
We considered the (Usable) Rules:
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
if(true, z0, z1) → z0
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
if(false, z0, z1) → z1
And the Tuples:
F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(1) = 0
POL(F(x1)) = 0
POL(G(x1, x2)) = [2] + [2]x2
POL(c(x1)) = [2] + x1
POL(c3(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1, x2)) = x1 + x2
POL(f(x1)) = [1]
POL(false) = 0
POL(g(x1, x2)) = 0
POL(if(x1, x2, x3)) = [2]x2 + [2]x3
POL(s(x1)) = 0
POL(true) = [1]
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
S tuples:
F(s(z0)) → c3(F(z0))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c7, c6
(9) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
G(
z0,
c(
z1)) →
c7(
G(
z0,
g(
s(
c(
z1)),
z1)),
G(
s(
c(
z1)),
z1)) by
G(x0, c(s(z1))) → c7(G(x0, if(f(c(s(z1))), s(c(s(z1))), s(z1))), G(s(c(s(z1))), s(z1)))
G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1)))
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(x0, if(f(c(s(z1))), s(c(s(z1))), s(z1))), G(s(c(s(z1))), s(z1)))
G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1)))
S tuples:
F(s(z0)) → c3(F(z0))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c6, c7
(11) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1)))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
S tuples:
F(s(z0)) → c3(F(z0))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c6, c7, c7
(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
G(
x0,
c(
c(
z1))) →
c7(
G(
x0,
g(
s(
c(
c(
z1))),
g(
s(
c(
z1)),
z1))),
G(
s(
c(
c(
z1))),
c(
z1))) by
G(x0, c(c(s(z1)))) → c7(G(x0, g(s(c(c(s(z1)))), if(f(c(s(z1))), s(c(s(z1))), s(z1)))), G(s(c(c(s(z1)))), c(s(z1))))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(s(z1)))) → c7(G(x0, g(s(c(c(s(z1)))), if(f(c(s(z1))), s(c(s(z1))), s(z1)))), G(s(c(c(s(z1)))), c(s(z1))))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
S tuples:
F(s(z0)) → c3(F(z0))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c6, c7, c7
(15) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
S tuples:
F(s(z0)) → c3(F(z0))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
F, G
Compound Symbols:
c3, c6, c7, c7
(17) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
F(
s(
z0)) →
c3(
F(
z0)) by
F(s(s(y0))) → c3(F(s(y0)))
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
F(s(s(y0))) → c3(F(s(y0)))
S tuples:
F(s(s(y0))) → c3(F(s(y0)))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c6, c7, c7, c3
(19) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
G(
s(
z0),
s(
z1)) →
c6(
F(
z0)) by
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
F(s(s(y0))) → c3(F(s(y0)))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
S tuples:
F(s(s(y0))) → c3(F(s(y0)))
K tuples:
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c7, c3, c6
(21) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 2 trailing nodes:
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
F(s(s(y0))) → c3(F(s(y0)))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
S tuples:
F(s(s(y0))) → c3(F(s(y0)))
K tuples:
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c7, c3, c6
(23) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
G(
x0,
c(
c(
x1))) →
c7(
G(
s(
c(
c(
x1))),
c(
x1))) by
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
(24) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
F(s(s(y0))) → c3(F(s(y0)))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
S tuples:
F(s(s(y0))) → c3(F(s(y0)))
K tuples:
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c3, c6, c7
(25) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
F(
s(
s(
y0))) →
c3(
F(
s(
y0))) by
F(s(s(s(y0)))) → c3(F(s(s(y0))))
(26) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
S tuples:
F(s(s(s(y0)))) → c3(F(s(s(y0))))
K tuples:
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c6, c7, c3
(27) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
G(
s(
s(
s(
y0))),
s(
z1)) →
c6(
F(
s(
s(
y0)))) by
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
(28) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
S tuples:
F(s(s(s(y0)))) → c3(F(s(s(y0))))
K tuples:
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c7, c3, c6
(29) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
G(
z0,
c(
c(
c(
y1)))) →
c7(
G(
s(
c(
c(
c(
y1)))),
c(
c(
y1)))) by
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
(30) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
S tuples:
F(s(s(s(y0)))) → c3(F(s(s(y0))))
K tuples:
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c7, c3, c6
(31) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
F(s(s(s(y0)))) → c3(F(s(s(y0))))
We considered the (Usable) Rules:none
And the Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
The order we found is given by the following interpretation:
Matrix interpretation [MATRO]:
Non-tuple symbols:
M( if(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( g(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
Tuple symbols:
M( G(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( c7(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
Matrix type:
We used a basic matrix type which is not further parametrizeable.
As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
(32) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
S tuples:none
K tuples:
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
Defined Rule Symbols:
f, if, g
Defined Pair Symbols:
G, F
Compound Symbols:
c7, c7, c3, c6
(33) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)
The set S is empty
(34) BOUNDS(1, 1)