(0) Obligation:
Clauses:
p(a, b).
p(b, c).
tc(X, X).
tc(X, Y) :- ','(p(X, Z), tc(Z, Y)).
Query: tc(g,a)
(1) PrologToCdtProblemTransformerProof (UPPER BOUND (ID) transformation)
Built complexity over-approximating cdt problems from derivation graph.
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in(z0) → f1_out1(z0)
f1_in(a) → U1(f17_in, a)
f1_in(b) → U2(f37_in, b)
f1_in(a) → U3(f85_in, a)
f1_in(b) → U4(f37_in, b)
U1(f17_out1(z0), a) → f1_out1(z0)
U1(f17_out2(z0, z1), a) → f1_out1(z1)
U2(f37_out1(z0), b) → f1_out1(z0)
U3(f85_out1(z0), a) → f1_out1(z0)
U3(f85_out2(z0, z1), a) → f1_out1(z1)
U4(f37_out1(z0), b) → f1_out1(z0)
f19_in → f19_out1(b)
f19_in → U5(f37_in)
f19_in → U6(f37_in)
U5(f37_out1(z0)) → f19_out1(z0)
U6(f37_out1(z0)) → f19_out1(z0)
f37_in → f37_out1(c)
f17_in → U7(f19_in, f21_in)
U7(f19_out1(z0), z1) → f17_out1(z0)
U7(z0, f21_out1(z1, z2)) → f17_out2(z1, z2)
f85_in → U8(f19_in, f90_in)
U8(f19_out1(z0), z1) → f85_out1(z0)
U8(z0, f90_out1(z1, z2)) → f85_out2(z1, z2)
Tuples:
F1_IN(a) → c2(U1'(f17_in, a), F17_IN)
F1_IN(b) → c3(U2'(f37_in, b), F37_IN)
F1_IN(a) → c4(U3'(f85_in, a), F85_IN)
F1_IN(b) → c5(U4'(f37_in, b), F37_IN)
F19_IN → c13(U5'(f37_in), F37_IN)
F19_IN → c14(U6'(f37_in), F37_IN)
F17_IN → c18(U7'(f19_in, f21_in), F19_IN)
F85_IN → c21(U8'(f19_in, f90_in), F19_IN)
S tuples:
F1_IN(a) → c2(U1'(f17_in, a), F17_IN)
F1_IN(b) → c3(U2'(f37_in, b), F37_IN)
F1_IN(a) → c4(U3'(f85_in, a), F85_IN)
F1_IN(b) → c5(U4'(f37_in, b), F37_IN)
F19_IN → c13(U5'(f37_in), F37_IN)
F19_IN → c14(U6'(f37_in), F37_IN)
F17_IN → c18(U7'(f19_in, f21_in), F19_IN)
F85_IN → c21(U8'(f19_in, f90_in), F19_IN)
K tuples:none
Defined Rule Symbols:
f1_in, U1, U2, U3, U4, f19_in, U5, U6, f37_in, f17_in, U7, f85_in, U8
Defined Pair Symbols:
F1_IN, F19_IN, F17_IN, F85_IN
Compound Symbols:
c2, c3, c4, c5, c13, c14, c18, c21
(3) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in(z0) → f1_out1(z0)
f1_in(a) → U1(f17_in, a)
f1_in(b) → U2(f37_in, b)
f1_in(a) → U3(f85_in, a)
f1_in(b) → U4(f37_in, b)
U1(f17_out1(z0), a) → f1_out1(z0)
U1(f17_out2(z0, z1), a) → f1_out1(z1)
U2(f37_out1(z0), b) → f1_out1(z0)
U3(f85_out1(z0), a) → f1_out1(z0)
U3(f85_out2(z0, z1), a) → f1_out1(z1)
U4(f37_out1(z0), b) → f1_out1(z0)
f19_in → f19_out1(b)
f19_in → U5(f37_in)
f19_in → U6(f37_in)
U5(f37_out1(z0)) → f19_out1(z0)
U6(f37_out1(z0)) → f19_out1(z0)
f37_in → f37_out1(c)
f17_in → U7(f19_in, f21_in)
U7(f19_out1(z0), z1) → f17_out1(z0)
U7(z0, f21_out1(z1, z2)) → f17_out2(z1, z2)
f85_in → U8(f19_in, f90_in)
U8(f19_out1(z0), z1) → f85_out1(z0)
U8(z0, f90_out1(z1, z2)) → f85_out2(z1, z2)
Tuples:
F1_IN(a) → c1(U1'(f17_in, a))
F1_IN(a) → c1(F17_IN)
F1_IN(b) → c1(U2'(f37_in, b))
F1_IN(b) → c1(F37_IN)
F1_IN(a) → c1(U3'(f85_in, a))
F1_IN(a) → c1(F85_IN)
F1_IN(b) → c1(U4'(f37_in, b))
F19_IN → c1(U5'(f37_in))
F19_IN → c1(F37_IN)
F19_IN → c1(U6'(f37_in))
F17_IN → c1(U7'(f19_in, f21_in))
F17_IN → c1(F19_IN)
F85_IN → c1(U8'(f19_in, f90_in))
F85_IN → c1(F19_IN)
S tuples:
F1_IN(a) → c1(U1'(f17_in, a))
F1_IN(a) → c1(F17_IN)
F1_IN(b) → c1(U2'(f37_in, b))
F1_IN(b) → c1(F37_IN)
F1_IN(a) → c1(U3'(f85_in, a))
F1_IN(a) → c1(F85_IN)
F1_IN(b) → c1(U4'(f37_in, b))
F19_IN → c1(U5'(f37_in))
F19_IN → c1(F37_IN)
F19_IN → c1(U6'(f37_in))
F17_IN → c1(U7'(f19_in, f21_in))
F17_IN → c1(F19_IN)
F85_IN → c1(U8'(f19_in, f90_in))
F85_IN → c1(F19_IN)
K tuples:none
Defined Rule Symbols:
f1_in, U1, U2, U3, U4, f19_in, U5, U6, f37_in, f17_in, U7, f85_in, U8
Defined Pair Symbols:
F1_IN, F19_IN, F17_IN, F85_IN
Compound Symbols:
c1
(5) CdtGraphRemoveTrailingTuplepartsProof (BOTH BOUNDS(ID, ID) transformation)
Removed 12 trailing tuple parts
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
f1_in(z0) → f1_out1(z0)
f1_in(a) → U1(f17_in, a)
f1_in(b) → U2(f37_in, b)
f1_in(a) → U3(f85_in, a)
f1_in(b) → U4(f37_in, b)
U1(f17_out1(z0), a) → f1_out1(z0)
U1(f17_out2(z0, z1), a) → f1_out1(z1)
U2(f37_out1(z0), b) → f1_out1(z0)
U3(f85_out1(z0), a) → f1_out1(z0)
U3(f85_out2(z0, z1), a) → f1_out1(z1)
U4(f37_out1(z0), b) → f1_out1(z0)
f19_in → f19_out1(b)
f19_in → U5(f37_in)
f19_in → U6(f37_in)
U5(f37_out1(z0)) → f19_out1(z0)
U6(f37_out1(z0)) → f19_out1(z0)
f37_in → f37_out1(c)
f17_in → U7(f19_in, f21_in)
U7(f19_out1(z0), z1) → f17_out1(z0)
U7(z0, f21_out1(z1, z2)) → f17_out2(z1, z2)
f85_in → U8(f19_in, f90_in)
U8(f19_out1(z0), z1) → f85_out1(z0)
U8(z0, f90_out1(z1, z2)) → f85_out2(z1, z2)
Tuples:
F1_IN(a) → c1(F17_IN)
F1_IN(a) → c1(F85_IN)
F17_IN → c1(F19_IN)
F85_IN → c1(F19_IN)
F1_IN(a) → c1
F1_IN(b) → c1
F19_IN → c1
F17_IN → c1
F85_IN → c1
S tuples:
F1_IN(a) → c1(F17_IN)
F1_IN(a) → c1(F85_IN)
F17_IN → c1(F19_IN)
F85_IN → c1(F19_IN)
F1_IN(a) → c1
F1_IN(b) → c1
F19_IN → c1
F17_IN → c1
F85_IN → c1
K tuples:none
Defined Rule Symbols:
f1_in, U1, U2, U3, U4, f19_in, U5, U6, f37_in, f17_in, U7, f85_in, U8
Defined Pair Symbols:
F1_IN, F17_IN, F85_IN, F19_IN
Compound Symbols:
c1, c1
(7) CdtKnowledgeProof (EQUIVALENT transformation)
The following tuples could be moved from S to K by knowledge propagation:
F1_IN(a) → c1(F17_IN)
F1_IN(a) → c1(F85_IN)
F17_IN → c1(F19_IN)
F85_IN → c1(F19_IN)
F1_IN(a) → c1
F1_IN(a) → c1
F1_IN(b) → c1
F1_IN(b) → c1
F1_IN(b) → c1
F1_IN(b) → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F17_IN → c1
F85_IN → c1
F17_IN → c1(F19_IN)
F17_IN → c1
F85_IN → c1(F19_IN)
F85_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
F19_IN → c1
Now S is empty
(8) BOUNDS(O(1), O(1))
(9) PrologToCdtProblemTransformerProof (UPPER BOUND (ID) transformation)
Built complexity over-approximating cdt problems from derivation graph.
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in(z0) → f2_out1(z0)
f2_in(a) → U1(f14_in, a)
f2_in(b) → U2(f38_in, b)
f2_in(a) → U3(f79_in, a)
f2_in(b) → U4(f38_in, b)
U1(f14_out1(z0), a) → f2_out1(z0)
U1(f14_out2(z0, z1), a) → f2_out1(z1)
U2(f38_out1(z0), b) → f2_out1(z0)
U3(f79_out1(z0), a) → f2_out1(z0)
U3(f79_out2(z0, z1), a) → f2_out1(z1)
U4(f38_out1(z0), b) → f2_out1(z0)
f20_in → f20_out1(b)
f20_in → U5(f38_in)
f20_in → U6(f38_in)
U5(f38_out1(z0)) → f20_out1(z0)
U6(f38_out1(z0)) → f20_out1(z0)
f38_in → f38_out1(c)
f14_in → U7(f20_in, f22_in)
U7(f20_out1(z0), z1) → f14_out1(z0)
U7(z0, f22_out1(z1, z2)) → f14_out2(z1, z2)
f79_in → U8(f20_in, f84_in)
U8(f20_out1(z0), z1) → f79_out1(z0)
U8(z0, f84_out1(z1, z2)) → f79_out2(z1, z2)
Tuples:
F2_IN(a) → c2(U1'(f14_in, a), F14_IN)
F2_IN(b) → c3(U2'(f38_in, b), F38_IN)
F2_IN(a) → c4(U3'(f79_in, a), F79_IN)
F2_IN(b) → c5(U4'(f38_in, b), F38_IN)
F20_IN → c13(U5'(f38_in), F38_IN)
F20_IN → c14(U6'(f38_in), F38_IN)
F14_IN → c18(U7'(f20_in, f22_in), F20_IN)
F79_IN → c21(U8'(f20_in, f84_in), F20_IN)
S tuples:
F2_IN(a) → c2(U1'(f14_in, a), F14_IN)
F2_IN(b) → c3(U2'(f38_in, b), F38_IN)
F2_IN(a) → c4(U3'(f79_in, a), F79_IN)
F2_IN(b) → c5(U4'(f38_in, b), F38_IN)
F20_IN → c13(U5'(f38_in), F38_IN)
F20_IN → c14(U6'(f38_in), F38_IN)
F14_IN → c18(U7'(f20_in, f22_in), F20_IN)
F79_IN → c21(U8'(f20_in, f84_in), F20_IN)
K tuples:none
Defined Rule Symbols:
f2_in, U1, U2, U3, U4, f20_in, U5, U6, f38_in, f14_in, U7, f79_in, U8
Defined Pair Symbols:
F2_IN, F20_IN, F14_IN, F79_IN
Compound Symbols:
c2, c3, c4, c5, c13, c14, c18, c21
(11) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in(z0) → f2_out1(z0)
f2_in(a) → U1(f14_in, a)
f2_in(b) → U2(f38_in, b)
f2_in(a) → U3(f79_in, a)
f2_in(b) → U4(f38_in, b)
U1(f14_out1(z0), a) → f2_out1(z0)
U1(f14_out2(z0, z1), a) → f2_out1(z1)
U2(f38_out1(z0), b) → f2_out1(z0)
U3(f79_out1(z0), a) → f2_out1(z0)
U3(f79_out2(z0, z1), a) → f2_out1(z1)
U4(f38_out1(z0), b) → f2_out1(z0)
f20_in → f20_out1(b)
f20_in → U5(f38_in)
f20_in → U6(f38_in)
U5(f38_out1(z0)) → f20_out1(z0)
U6(f38_out1(z0)) → f20_out1(z0)
f38_in → f38_out1(c)
f14_in → U7(f20_in, f22_in)
U7(f20_out1(z0), z1) → f14_out1(z0)
U7(z0, f22_out1(z1, z2)) → f14_out2(z1, z2)
f79_in → U8(f20_in, f84_in)
U8(f20_out1(z0), z1) → f79_out1(z0)
U8(z0, f84_out1(z1, z2)) → f79_out2(z1, z2)
Tuples:
F2_IN(a) → c1(U1'(f14_in, a))
F2_IN(a) → c1(F14_IN)
F2_IN(b) → c1(U2'(f38_in, b))
F2_IN(b) → c1(F38_IN)
F2_IN(a) → c1(U3'(f79_in, a))
F2_IN(a) → c1(F79_IN)
F2_IN(b) → c1(U4'(f38_in, b))
F20_IN → c1(U5'(f38_in))
F20_IN → c1(F38_IN)
F20_IN → c1(U6'(f38_in))
F14_IN → c1(U7'(f20_in, f22_in))
F14_IN → c1(F20_IN)
F79_IN → c1(U8'(f20_in, f84_in))
F79_IN → c1(F20_IN)
S tuples:
F2_IN(a) → c1(U1'(f14_in, a))
F2_IN(a) → c1(F14_IN)
F2_IN(b) → c1(U2'(f38_in, b))
F2_IN(b) → c1(F38_IN)
F2_IN(a) → c1(U3'(f79_in, a))
F2_IN(a) → c1(F79_IN)
F2_IN(b) → c1(U4'(f38_in, b))
F20_IN → c1(U5'(f38_in))
F20_IN → c1(F38_IN)
F20_IN → c1(U6'(f38_in))
F14_IN → c1(U7'(f20_in, f22_in))
F14_IN → c1(F20_IN)
F79_IN → c1(U8'(f20_in, f84_in))
F79_IN → c1(F20_IN)
K tuples:none
Defined Rule Symbols:
f2_in, U1, U2, U3, U4, f20_in, U5, U6, f38_in, f14_in, U7, f79_in, U8
Defined Pair Symbols:
F2_IN, F20_IN, F14_IN, F79_IN
Compound Symbols:
c1
(13) CdtGraphRemoveTrailingTuplepartsProof (BOTH BOUNDS(ID, ID) transformation)
Removed 12 trailing tuple parts
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
f2_in(z0) → f2_out1(z0)
f2_in(a) → U1(f14_in, a)
f2_in(b) → U2(f38_in, b)
f2_in(a) → U3(f79_in, a)
f2_in(b) → U4(f38_in, b)
U1(f14_out1(z0), a) → f2_out1(z0)
U1(f14_out2(z0, z1), a) → f2_out1(z1)
U2(f38_out1(z0), b) → f2_out1(z0)
U3(f79_out1(z0), a) → f2_out1(z0)
U3(f79_out2(z0, z1), a) → f2_out1(z1)
U4(f38_out1(z0), b) → f2_out1(z0)
f20_in → f20_out1(b)
f20_in → U5(f38_in)
f20_in → U6(f38_in)
U5(f38_out1(z0)) → f20_out1(z0)
U6(f38_out1(z0)) → f20_out1(z0)
f38_in → f38_out1(c)
f14_in → U7(f20_in, f22_in)
U7(f20_out1(z0), z1) → f14_out1(z0)
U7(z0, f22_out1(z1, z2)) → f14_out2(z1, z2)
f79_in → U8(f20_in, f84_in)
U8(f20_out1(z0), z1) → f79_out1(z0)
U8(z0, f84_out1(z1, z2)) → f79_out2(z1, z2)
Tuples:
F2_IN(a) → c1(F14_IN)
F2_IN(a) → c1(F79_IN)
F14_IN → c1(F20_IN)
F79_IN → c1(F20_IN)
F2_IN(a) → c1
F2_IN(b) → c1
F20_IN → c1
F14_IN → c1
F79_IN → c1
S tuples:
F2_IN(a) → c1(F14_IN)
F2_IN(a) → c1(F79_IN)
F14_IN → c1(F20_IN)
F79_IN → c1(F20_IN)
F2_IN(a) → c1
F2_IN(b) → c1
F20_IN → c1
F14_IN → c1
F79_IN → c1
K tuples:none
Defined Rule Symbols:
f2_in, U1, U2, U3, U4, f20_in, U5, U6, f38_in, f14_in, U7, f79_in, U8
Defined Pair Symbols:
F2_IN, F14_IN, F79_IN, F20_IN
Compound Symbols:
c1, c1