(0) Obligation:
Clauses:
len1([], 0).
len1(.(X1, Ts), N) :- ','(len1(Ts, M), eq(N, s(M))).
eq(X, X).
Query: len1(g,a)
(1) LPReorderTransformerProof (EQUIVALENT transformation)
Reordered facts before rules in definite LP [PROLOG].
(2) Obligation:
Clauses:
len1([], 0).
eq(X, X).
len1(.(X1, Ts), N) :- ','(len1(Ts, M), eq(N, s(M))).
Query: len1(g,a)
(3) PrologToCdtProblemTransformerProof (UPPER BOUND (ID) transformation)
Built complexity over-approximating cdt problems from derivation graph.
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in([]) → f1_out1(0)
f1_in(.(z0, z1)) → U1(f16_in(z1), .(z0, z1))
U1(f16_out1(z0, z1), .(z2, z3)) → f1_out1(z1)
f31_in([]) → f31_out1(0)
f31_in(.(z0, z1)) → U2(f46_in(z1), .(z0, z1))
U2(f46_out1(z0, z1), .(z2, z3)) → f31_out1(z1)
f33_in(z0) → f33_out1(s(z0))
f51_in(z0) → f51_out1(s(z0))
f16_in(z0) → U3(f31_in(z0), z0)
U3(f31_out1(z0), z1) → U4(f33_in(z0), z1, z0)
U4(f33_out1(z0), z1, z2) → f16_out1(z2, z0)
f46_in(z0) → U5(f31_in(z0), z0)
U5(f31_out1(z0), z1) → U6(f51_in(z0), z1, z0)
U6(f51_out1(z0), z1, z2) → f46_out1(z2, z0)
Tuples:
F1_IN(.(z0, z1)) → c1(U1'(f16_in(z1), .(z0, z1)), F16_IN(z1))
F31_IN(.(z0, z1)) → c4(U2'(f46_in(z1), .(z0, z1)), F46_IN(z1))
F16_IN(z0) → c8(U3'(f31_in(z0), z0), F31_IN(z0))
U3'(f31_out1(z0), z1) → c9(U4'(f33_in(z0), z1, z0), F33_IN(z0))
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
U5'(f31_out1(z0), z1) → c12(U6'(f51_in(z0), z1, z0), F51_IN(z0))
S tuples:
F1_IN(.(z0, z1)) → c1(U1'(f16_in(z1), .(z0, z1)), F16_IN(z1))
F31_IN(.(z0, z1)) → c4(U2'(f46_in(z1), .(z0, z1)), F46_IN(z1))
F16_IN(z0) → c8(U3'(f31_in(z0), z0), F31_IN(z0))
U3'(f31_out1(z0), z1) → c9(U4'(f33_in(z0), z1, z0), F33_IN(z0))
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
U5'(f31_out1(z0), z1) → c12(U6'(f51_in(z0), z1, z0), F51_IN(z0))
K tuples:none
Defined Rule Symbols:
f1_in, U1, f31_in, U2, f33_in, f51_in, f16_in, U3, U4, f46_in, U5, U6
Defined Pair Symbols:
F1_IN, F31_IN, F16_IN, U3', F46_IN, U5'
Compound Symbols:
c1, c4, c8, c9, c11, c12
(5) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in([]) → f1_out1(0)
f1_in(.(z0, z1)) → U1(f16_in(z1), .(z0, z1))
U1(f16_out1(z0, z1), .(z2, z3)) → f1_out1(z1)
f31_in([]) → f31_out1(0)
f31_in(.(z0, z1)) → U2(f46_in(z1), .(z0, z1))
U2(f46_out1(z0, z1), .(z2, z3)) → f31_out1(z1)
f33_in(z0) → f33_out1(s(z0))
f51_in(z0) → f51_out1(s(z0))
f16_in(z0) → U3(f31_in(z0), z0)
U3(f31_out1(z0), z1) → U4(f33_in(z0), z1, z0)
U4(f33_out1(z0), z1, z2) → f16_out1(z2, z0)
f46_in(z0) → U5(f31_in(z0), z0)
U5(f31_out1(z0), z1) → U6(f51_in(z0), z1, z0)
U6(f51_out1(z0), z1, z2) → f46_out1(z2, z0)
Tuples:
F31_IN(.(z0, z1)) → c4(U2'(f46_in(z1), .(z0, z1)), F46_IN(z1))
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(U1'(f16_in(z1), .(z0, z1)))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
U3'(f31_out1(z0), z1) → c(U4'(f33_in(z0), z1, z0))
U3'(f31_out1(z0), z1) → c(F33_IN(z0))
U5'(f31_out1(z0), z1) → c(U6'(f51_in(z0), z1, z0))
U5'(f31_out1(z0), z1) → c(F51_IN(z0))
S tuples:
F31_IN(.(z0, z1)) → c4(U2'(f46_in(z1), .(z0, z1)), F46_IN(z1))
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(U1'(f16_in(z1), .(z0, z1)))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
U3'(f31_out1(z0), z1) → c(U4'(f33_in(z0), z1, z0))
U3'(f31_out1(z0), z1) → c(F33_IN(z0))
U5'(f31_out1(z0), z1) → c(U6'(f51_in(z0), z1, z0))
U5'(f31_out1(z0), z1) → c(F51_IN(z0))
K tuples:none
Defined Rule Symbols:
f1_in, U1, f31_in, U2, f33_in, f51_in, f16_in, U3, U4, f46_in, U5, U6
Defined Pair Symbols:
F31_IN, F46_IN, F1_IN, F16_IN, U3', U5'
Compound Symbols:
c4, c11, c
(7) CdtGraphRemoveTrailingTuplepartsProof (BOTH BOUNDS(ID, ID) transformation)
Removed 6 trailing tuple parts
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in([]) → f1_out1(0)
f1_in(.(z0, z1)) → U1(f16_in(z1), .(z0, z1))
U1(f16_out1(z0, z1), .(z2, z3)) → f1_out1(z1)
f31_in([]) → f31_out1(0)
f31_in(.(z0, z1)) → U2(f46_in(z1), .(z0, z1))
U2(f46_out1(z0, z1), .(z2, z3)) → f31_out1(z1)
f33_in(z0) → f33_out1(s(z0))
f51_in(z0) → f51_out1(s(z0))
f16_in(z0) → U3(f31_in(z0), z0)
U3(f31_out1(z0), z1) → U4(f33_in(z0), z1, z0)
U4(f33_out1(z0), z1, z2) → f16_out1(z2, z0)
f46_in(z0) → U5(f31_in(z0), z0)
U5(f31_out1(z0), z1) → U6(f51_in(z0), z1, z0)
U6(f51_out1(z0), z1, z2) → f46_out1(z2, z0)
Tuples:
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
U5'(f31_out1(z0), z1) → c
S tuples:
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
U5'(f31_out1(z0), z1) → c
K tuples:none
Defined Rule Symbols:
f1_in, U1, f31_in, U2, f33_in, f51_in, f16_in, U3, U4, f46_in, U5, U6
Defined Pair Symbols:
F46_IN, F1_IN, F16_IN, F31_IN, U3', U5'
Compound Symbols:
c11, c, c4, c
(9) CdtKnowledgeProof (EQUIVALENT transformation)
The following tuples could be moved from S to K by knowledge propagation:
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
U3'(f31_out1(z0), z1) → c
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
U3'(f31_out1(z0), z1) → c
U3'(f31_out1(z0), z1) → c
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in([]) → f1_out1(0)
f1_in(.(z0, z1)) → U1(f16_in(z1), .(z0, z1))
U1(f16_out1(z0, z1), .(z2, z3)) → f1_out1(z1)
f31_in([]) → f31_out1(0)
f31_in(.(z0, z1)) → U2(f46_in(z1), .(z0, z1))
U2(f46_out1(z0, z1), .(z2, z3)) → f31_out1(z1)
f33_in(z0) → f33_out1(s(z0))
f51_in(z0) → f51_out1(s(z0))
f16_in(z0) → U3(f31_in(z0), z0)
U3(f31_out1(z0), z1) → U4(f33_in(z0), z1, z0)
U4(f33_out1(z0), z1, z2) → f16_out1(z2, z0)
f46_in(z0) → U5(f31_in(z0), z0)
U5(f31_out1(z0), z1) → U6(f51_in(z0), z1, z0)
U6(f51_out1(z0), z1, z2) → f46_out1(z2, z0)
Tuples:
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
U5'(f31_out1(z0), z1) → c
S tuples:
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
U5'(f31_out1(z0), z1) → c
K tuples:
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
Defined Rule Symbols:
f1_in, U1, f31_in, U2, f33_in, f51_in, f16_in, U3, U4, f46_in, U5, U6
Defined Pair Symbols:
F46_IN, F1_IN, F16_IN, F31_IN, U3', U5'
Compound Symbols:
c11, c, c4, c
(11) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
We considered the (Usable) Rules:
f31_in([]) → f31_out1(0)
f31_in(.(z0, z1)) → U2(f46_in(z1), .(z0, z1))
f46_in(z0) → U5(f31_in(z0), z0)
U2(f46_out1(z0, z1), .(z2, z3)) → f31_out1(z1)
U5(f31_out1(z0), z1) → U6(f51_in(z0), z1, z0)
f51_in(z0) → f51_out1(s(z0))
U6(f51_out1(z0), z1, z2) → f46_out1(z2, z0)
And the Tuples:
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
U5'(f31_out1(z0), z1) → c
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(.(x1, x2)) = [3] + x2
POL(0) = 0
POL(F16_IN(x1)) = [2] + [2]x1
POL(F1_IN(x1)) = [3] + [2]x1
POL(F31_IN(x1)) = [1] + x1
POL(F46_IN(x1)) = [2] + x1
POL(U2(x1, x2)) = 0
POL(U3'(x1, x2)) = [1] + x2
POL(U5(x1, x2)) = [3]x1 + [2]x2
POL(U5'(x1, x2)) = 0
POL(U6(x1, x2, x3)) = [2] + [2]x1 + x2 + [2]x3
POL([]) = 0
POL(c) = 0
POL(c(x1)) = x1
POL(c11(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(f31_in(x1)) = 0
POL(f31_out1(x1)) = [3] + x1
POL(f46_in(x1)) = [2] + [3]x1
POL(f46_out1(x1, x2)) = [2] + x1
POL(f51_in(x1)) = [2]
POL(f51_out1(x1)) = x1
POL(s(x1)) = 0
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in([]) → f1_out1(0)
f1_in(.(z0, z1)) → U1(f16_in(z1), .(z0, z1))
U1(f16_out1(z0, z1), .(z2, z3)) → f1_out1(z1)
f31_in([]) → f31_out1(0)
f31_in(.(z0, z1)) → U2(f46_in(z1), .(z0, z1))
U2(f46_out1(z0, z1), .(z2, z3)) → f31_out1(z1)
f33_in(z0) → f33_out1(s(z0))
f51_in(z0) → f51_out1(s(z0))
f16_in(z0) → U3(f31_in(z0), z0)
U3(f31_out1(z0), z1) → U4(f33_in(z0), z1, z0)
U4(f33_out1(z0), z1, z2) → f16_out1(z2, z0)
f46_in(z0) → U5(f31_in(z0), z0)
U5(f31_out1(z0), z1) → U6(f51_in(z0), z1, z0)
U6(f51_out1(z0), z1, z2) → f46_out1(z2, z0)
Tuples:
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
U5'(f31_out1(z0), z1) → c
S tuples:
U5'(f31_out1(z0), z1) → c
K tuples:
F1_IN(.(z0, z1)) → c(F16_IN(z1))
F16_IN(z0) → c(U3'(f31_in(z0), z0))
F16_IN(z0) → c(F31_IN(z0))
F1_IN(.(z0, z1)) → c
U3'(f31_out1(z0), z1) → c
F46_IN(z0) → c11(U5'(f31_in(z0), z0), F31_IN(z0))
F31_IN(.(z0, z1)) → c4(F46_IN(z1))
Defined Rule Symbols:
f1_in, U1, f31_in, U2, f33_in, f51_in, f16_in, U3, U4, f46_in, U5, U6
Defined Pair Symbols:
F46_IN, F1_IN, F16_IN, F31_IN, U3', U5'
Compound Symbols:
c11, c, c4, c
(13) CdtKnowledgeProof (EQUIVALENT transformation)
The following tuples could be moved from S to K by knowledge propagation:
U5'(f31_out1(z0), z1) → c
U5'(f31_out1(z0), z1) → c
Now S is empty
(14) BOUNDS(O(1), O(1))
(15) PrologToCdtProblemTransformerProof (UPPER BOUND (ID) transformation)
Built complexity over-approximating cdt problems from derivation graph.
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in([]) → f2_out1(0)
f2_in(.(z0, [])) → f2_out1(s(0))
f2_in(.(z0, .(z1, z2))) → U1(f28_in(z2), .(z0, .(z1, z2)))
U1(f28_out1(z0, z1, z2), .(z3, .(z4, z5))) → f2_out1(z2)
f30_in([]) → f30_out1(0)
f30_in(.(z0, z1)) → U2(f44_in(z1), .(z0, z1))
U2(f44_out1(z0, z1), .(z2, z3)) → f30_out1(z1)
f32_in(z0) → f32_out1(s(z0), s(s(z0)))
f49_in(z0) → f49_out1(s(z0))
f28_in(z0) → U3(f30_in(z0), z0)
U3(f30_out1(z0), z1) → U4(f32_in(z0), z1, z0)
U4(f32_out1(z0, z1), z2, z3) → f28_out1(z3, z0, z1)
f44_in(z0) → U5(f30_in(z0), z0)
U5(f30_out1(z0), z1) → U6(f49_in(z0), z1, z0)
U6(f49_out1(z0), z1, z2) → f44_out1(z2, z0)
Tuples:
F2_IN(.(z0, .(z1, z2))) → c2(U1'(f28_in(z2), .(z0, .(z1, z2))), F28_IN(z2))
F30_IN(.(z0, z1)) → c5(U2'(f44_in(z1), .(z0, z1)), F44_IN(z1))
F28_IN(z0) → c9(U3'(f30_in(z0), z0), F30_IN(z0))
U3'(f30_out1(z0), z1) → c10(U4'(f32_in(z0), z1, z0), F32_IN(z0))
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
U5'(f30_out1(z0), z1) → c13(U6'(f49_in(z0), z1, z0), F49_IN(z0))
S tuples:
F2_IN(.(z0, .(z1, z2))) → c2(U1'(f28_in(z2), .(z0, .(z1, z2))), F28_IN(z2))
F30_IN(.(z0, z1)) → c5(U2'(f44_in(z1), .(z0, z1)), F44_IN(z1))
F28_IN(z0) → c9(U3'(f30_in(z0), z0), F30_IN(z0))
U3'(f30_out1(z0), z1) → c10(U4'(f32_in(z0), z1, z0), F32_IN(z0))
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
U5'(f30_out1(z0), z1) → c13(U6'(f49_in(z0), z1, z0), F49_IN(z0))
K tuples:none
Defined Rule Symbols:
f2_in, U1, f30_in, U2, f32_in, f49_in, f28_in, U3, U4, f44_in, U5, U6
Defined Pair Symbols:
F2_IN, F30_IN, F28_IN, U3', F44_IN, U5'
Compound Symbols:
c2, c5, c9, c10, c12, c13
(17) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in([]) → f2_out1(0)
f2_in(.(z0, [])) → f2_out1(s(0))
f2_in(.(z0, .(z1, z2))) → U1(f28_in(z2), .(z0, .(z1, z2)))
U1(f28_out1(z0, z1, z2), .(z3, .(z4, z5))) → f2_out1(z2)
f30_in([]) → f30_out1(0)
f30_in(.(z0, z1)) → U2(f44_in(z1), .(z0, z1))
U2(f44_out1(z0, z1), .(z2, z3)) → f30_out1(z1)
f32_in(z0) → f32_out1(s(z0), s(s(z0)))
f49_in(z0) → f49_out1(s(z0))
f28_in(z0) → U3(f30_in(z0), z0)
U3(f30_out1(z0), z1) → U4(f32_in(z0), z1, z0)
U4(f32_out1(z0, z1), z2, z3) → f28_out1(z3, z0, z1)
f44_in(z0) → U5(f30_in(z0), z0)
U5(f30_out1(z0), z1) → U6(f49_in(z0), z1, z0)
U6(f49_out1(z0), z1, z2) → f44_out1(z2, z0)
Tuples:
F30_IN(.(z0, z1)) → c5(U2'(f44_in(z1), .(z0, z1)), F44_IN(z1))
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(U1'(f28_in(z2), .(z0, .(z1, z2))))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
U3'(f30_out1(z0), z1) → c(U4'(f32_in(z0), z1, z0))
U3'(f30_out1(z0), z1) → c(F32_IN(z0))
U5'(f30_out1(z0), z1) → c(U6'(f49_in(z0), z1, z0))
U5'(f30_out1(z0), z1) → c(F49_IN(z0))
S tuples:
F30_IN(.(z0, z1)) → c5(U2'(f44_in(z1), .(z0, z1)), F44_IN(z1))
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(U1'(f28_in(z2), .(z0, .(z1, z2))))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
U3'(f30_out1(z0), z1) → c(U4'(f32_in(z0), z1, z0))
U3'(f30_out1(z0), z1) → c(F32_IN(z0))
U5'(f30_out1(z0), z1) → c(U6'(f49_in(z0), z1, z0))
U5'(f30_out1(z0), z1) → c(F49_IN(z0))
K tuples:none
Defined Rule Symbols:
f2_in, U1, f30_in, U2, f32_in, f49_in, f28_in, U3, U4, f44_in, U5, U6
Defined Pair Symbols:
F30_IN, F44_IN, F2_IN, F28_IN, U3', U5'
Compound Symbols:
c5, c12, c
(19) CdtGraphRemoveTrailingTuplepartsProof (BOTH BOUNDS(ID, ID) transformation)
Removed 6 trailing tuple parts
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in([]) → f2_out1(0)
f2_in(.(z0, [])) → f2_out1(s(0))
f2_in(.(z0, .(z1, z2))) → U1(f28_in(z2), .(z0, .(z1, z2)))
U1(f28_out1(z0, z1, z2), .(z3, .(z4, z5))) → f2_out1(z2)
f30_in([]) → f30_out1(0)
f30_in(.(z0, z1)) → U2(f44_in(z1), .(z0, z1))
U2(f44_out1(z0, z1), .(z2, z3)) → f30_out1(z1)
f32_in(z0) → f32_out1(s(z0), s(s(z0)))
f49_in(z0) → f49_out1(s(z0))
f28_in(z0) → U3(f30_in(z0), z0)
U3(f30_out1(z0), z1) → U4(f32_in(z0), z1, z0)
U4(f32_out1(z0, z1), z2, z3) → f28_out1(z3, z0, z1)
f44_in(z0) → U5(f30_in(z0), z0)
U5(f30_out1(z0), z1) → U6(f49_in(z0), z1, z0)
U6(f49_out1(z0), z1, z2) → f44_out1(z2, z0)
Tuples:
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
U5'(f30_out1(z0), z1) → c
S tuples:
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
U5'(f30_out1(z0), z1) → c
K tuples:none
Defined Rule Symbols:
f2_in, U1, f30_in, U2, f32_in, f49_in, f28_in, U3, U4, f44_in, U5, U6
Defined Pair Symbols:
F44_IN, F2_IN, F28_IN, F30_IN, U3', U5'
Compound Symbols:
c12, c, c5, c
(21) CdtKnowledgeProof (EQUIVALENT transformation)
The following tuples could be moved from S to K by knowledge propagation:
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
U3'(f30_out1(z0), z1) → c
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
U3'(f30_out1(z0), z1) → c
U3'(f30_out1(z0), z1) → c
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in([]) → f2_out1(0)
f2_in(.(z0, [])) → f2_out1(s(0))
f2_in(.(z0, .(z1, z2))) → U1(f28_in(z2), .(z0, .(z1, z2)))
U1(f28_out1(z0, z1, z2), .(z3, .(z4, z5))) → f2_out1(z2)
f30_in([]) → f30_out1(0)
f30_in(.(z0, z1)) → U2(f44_in(z1), .(z0, z1))
U2(f44_out1(z0, z1), .(z2, z3)) → f30_out1(z1)
f32_in(z0) → f32_out1(s(z0), s(s(z0)))
f49_in(z0) → f49_out1(s(z0))
f28_in(z0) → U3(f30_in(z0), z0)
U3(f30_out1(z0), z1) → U4(f32_in(z0), z1, z0)
U4(f32_out1(z0, z1), z2, z3) → f28_out1(z3, z0, z1)
f44_in(z0) → U5(f30_in(z0), z0)
U5(f30_out1(z0), z1) → U6(f49_in(z0), z1, z0)
U6(f49_out1(z0), z1, z2) → f44_out1(z2, z0)
Tuples:
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
U5'(f30_out1(z0), z1) → c
S tuples:
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
U5'(f30_out1(z0), z1) → c
K tuples:
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
Defined Rule Symbols:
f2_in, U1, f30_in, U2, f32_in, f49_in, f28_in, U3, U4, f44_in, U5, U6
Defined Pair Symbols:
F44_IN, F2_IN, F28_IN, F30_IN, U3', U5'
Compound Symbols:
c12, c, c5, c
(23) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
We considered the (Usable) Rules:
f30_in([]) → f30_out1(0)
f30_in(.(z0, z1)) → U2(f44_in(z1), .(z0, z1))
f44_in(z0) → U5(f30_in(z0), z0)
U2(f44_out1(z0, z1), .(z2, z3)) → f30_out1(z1)
U5(f30_out1(z0), z1) → U6(f49_in(z0), z1, z0)
f49_in(z0) → f49_out1(s(z0))
U6(f49_out1(z0), z1, z2) → f44_out1(z2, z0)
And the Tuples:
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
U5'(f30_out1(z0), z1) → c
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(.(x1, x2)) = [1] + x2
POL(0) = 0
POL(F28_IN(x1)) = [2] + [2]x1
POL(F2_IN(x1)) = [3]x1
POL(F30_IN(x1)) = [2]x1
POL(F44_IN(x1)) = [2] + [2]x1
POL(U2(x1, x2)) = 0
POL(U3'(x1, x2)) = [1]
POL(U5(x1, x2)) = [2] + x2
POL(U5'(x1, x2)) = 0
POL(U6(x1, x2, x3)) = [2]x1
POL([]) = 0
POL(c) = 0
POL(c(x1)) = x1
POL(c12(x1, x2)) = x1 + x2
POL(c5(x1)) = x1
POL(f30_in(x1)) = 0
POL(f30_out1(x1)) = 0
POL(f44_in(x1)) = [2] + x1
POL(f44_out1(x1, x2)) = x2
POL(f49_in(x1)) = [1]
POL(f49_out1(x1)) = x1
POL(s(x1)) = 0
(24) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in([]) → f2_out1(0)
f2_in(.(z0, [])) → f2_out1(s(0))
f2_in(.(z0, .(z1, z2))) → U1(f28_in(z2), .(z0, .(z1, z2)))
U1(f28_out1(z0, z1, z2), .(z3, .(z4, z5))) → f2_out1(z2)
f30_in([]) → f30_out1(0)
f30_in(.(z0, z1)) → U2(f44_in(z1), .(z0, z1))
U2(f44_out1(z0, z1), .(z2, z3)) → f30_out1(z1)
f32_in(z0) → f32_out1(s(z0), s(s(z0)))
f49_in(z0) → f49_out1(s(z0))
f28_in(z0) → U3(f30_in(z0), z0)
U3(f30_out1(z0), z1) → U4(f32_in(z0), z1, z0)
U4(f32_out1(z0, z1), z2, z3) → f28_out1(z3, z0, z1)
f44_in(z0) → U5(f30_in(z0), z0)
U5(f30_out1(z0), z1) → U6(f49_in(z0), z1, z0)
U6(f49_out1(z0), z1, z2) → f44_out1(z2, z0)
Tuples:
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
U5'(f30_out1(z0), z1) → c
S tuples:
F30_IN(.(z0, z1)) → c5(F44_IN(z1))
U5'(f30_out1(z0), z1) → c
K tuples:
F2_IN(.(z0, .(z1, z2))) → c(F28_IN(z2))
F28_IN(z0) → c(U3'(f30_in(z0), z0))
F28_IN(z0) → c(F30_IN(z0))
F2_IN(.(z0, .(z1, z2))) → c
U3'(f30_out1(z0), z1) → c
F44_IN(z0) → c12(U5'(f30_in(z0), z0), F30_IN(z0))
Defined Rule Symbols:
f2_in, U1, f30_in, U2, f32_in, f49_in, f28_in, U3, U4, f44_in, U5, U6
Defined Pair Symbols:
F44_IN, F2_IN, F28_IN, F30_IN, U3', U5'
Compound Symbols:
c12, c, c5, c