(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_inf19_out1(b)
f19_inU5(f37_in)
f19_inU6(f37_in)
U5(f37_out1(z0)) → f19_out1(z0)
U6(f37_out1(z0)) → f19_out1(z0)
f37_inf37_out1(c)
f17_inU7(f19_in, f21_in)
U7(f19_out1(z0), z1) → f17_out1(z0)
U7(z0, f21_out1(z1, z2)) → f17_out2(z1, z2)
f85_inU8(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_INc13(U5'(f37_in), F37_IN)
F19_INc14(U6'(f37_in), F37_IN)
F17_INc18(U7'(f19_in, f21_in), F19_IN)
F85_INc21(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_INc13(U5'(f37_in), F37_IN)
F19_INc14(U6'(f37_in), F37_IN)
F17_INc18(U7'(f19_in, f21_in), F19_IN)
F85_INc21(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_inf19_out1(b)
f19_inU5(f37_in)
f19_inU6(f37_in)
U5(f37_out1(z0)) → f19_out1(z0)
U6(f37_out1(z0)) → f19_out1(z0)
f37_inf37_out1(c)
f17_inU7(f19_in, f21_in)
U7(f19_out1(z0), z1) → f17_out1(z0)
U7(z0, f21_out1(z1, z2)) → f17_out2(z1, z2)
f85_inU8(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_INc1(U5'(f37_in))
F19_INc1(F37_IN)
F19_INc1(U6'(f37_in))
F17_INc1(U7'(f19_in, f21_in))
F17_INc1(F19_IN)
F85_INc1(U8'(f19_in, f90_in))
F85_INc1(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_INc1(U5'(f37_in))
F19_INc1(F37_IN)
F19_INc1(U6'(f37_in))
F17_INc1(U7'(f19_in, f21_in))
F17_INc1(F19_IN)
F85_INc1(U8'(f19_in, f90_in))
F85_INc1(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_inf19_out1(b)
f19_inU5(f37_in)
f19_inU6(f37_in)
U5(f37_out1(z0)) → f19_out1(z0)
U6(f37_out1(z0)) → f19_out1(z0)
f37_inf37_out1(c)
f17_inU7(f19_in, f21_in)
U7(f19_out1(z0), z1) → f17_out1(z0)
U7(z0, f21_out1(z1, z2)) → f17_out2(z1, z2)
f85_inU8(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_INc1(F19_IN)
F85_INc1(F19_IN)
F1_IN(a) → c1
F1_IN(b) → c1
F19_INc1
F17_INc1
F85_INc1
S tuples:

F1_IN(a) → c1(F17_IN)
F1_IN(a) → c1(F85_IN)
F17_INc1(F19_IN)
F85_INc1(F19_IN)
F1_IN(a) → c1
F1_IN(b) → c1
F19_INc1
F17_INc1
F85_INc1
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_INc1(F19_IN)
F85_INc1(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_INc1
F19_INc1
F19_INc1
F19_INc1
F17_INc1
F85_INc1
F17_INc1(F19_IN)
F17_INc1
F85_INc1(F19_IN)
F85_INc1
F19_INc1
F19_INc1
F19_INc1
F19_INc1
F19_INc1
F19_INc1
F19_INc1
F19_INc1
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_inf20_out1(b)
f20_inU5(f38_in)
f20_inU6(f38_in)
U5(f38_out1(z0)) → f20_out1(z0)
U6(f38_out1(z0)) → f20_out1(z0)
f38_inf38_out1(c)
f14_inU7(f20_in, f22_in)
U7(f20_out1(z0), z1) → f14_out1(z0)
U7(z0, f22_out1(z1, z2)) → f14_out2(z1, z2)
f79_inU8(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_INc13(U5'(f38_in), F38_IN)
F20_INc14(U6'(f38_in), F38_IN)
F14_INc18(U7'(f20_in, f22_in), F20_IN)
F79_INc21(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_INc13(U5'(f38_in), F38_IN)
F20_INc14(U6'(f38_in), F38_IN)
F14_INc18(U7'(f20_in, f22_in), F20_IN)
F79_INc21(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_inf20_out1(b)
f20_inU5(f38_in)
f20_inU6(f38_in)
U5(f38_out1(z0)) → f20_out1(z0)
U6(f38_out1(z0)) → f20_out1(z0)
f38_inf38_out1(c)
f14_inU7(f20_in, f22_in)
U7(f20_out1(z0), z1) → f14_out1(z0)
U7(z0, f22_out1(z1, z2)) → f14_out2(z1, z2)
f79_inU8(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_INc1(U5'(f38_in))
F20_INc1(F38_IN)
F20_INc1(U6'(f38_in))
F14_INc1(U7'(f20_in, f22_in))
F14_INc1(F20_IN)
F79_INc1(U8'(f20_in, f84_in))
F79_INc1(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_INc1(U5'(f38_in))
F20_INc1(F38_IN)
F20_INc1(U6'(f38_in))
F14_INc1(U7'(f20_in, f22_in))
F14_INc1(F20_IN)
F79_INc1(U8'(f20_in, f84_in))
F79_INc1(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_inf20_out1(b)
f20_inU5(f38_in)
f20_inU6(f38_in)
U5(f38_out1(z0)) → f20_out1(z0)
U6(f38_out1(z0)) → f20_out1(z0)
f38_inf38_out1(c)
f14_inU7(f20_in, f22_in)
U7(f20_out1(z0), z1) → f14_out1(z0)
U7(z0, f22_out1(z1, z2)) → f14_out2(z1, z2)
f79_inU8(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_INc1(F20_IN)
F79_INc1(F20_IN)
F2_IN(a) → c1
F2_IN(b) → c1
F20_INc1
F14_INc1
F79_INc1
S tuples:

F2_IN(a) → c1(F14_IN)
F2_IN(a) → c1(F79_IN)
F14_INc1(F20_IN)
F79_INc1(F20_IN)
F2_IN(a) → c1
F2_IN(b) → c1
F20_INc1
F14_INc1
F79_INc1
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