(0) Obligation:

Clauses:

p(X, Y, Z) :- ','(=(X, Y), ','(=(Z, 1), !)).
p(X, Y, Z) :- ','(=(Z, 1), ','(=(Y, X), p(X, Y, Z))).
=(X, X).

Query: p(a,a,a)

(1) BuiltinConflictTransformerProof (BOTH BOUNDS(ID, ID) transformation)

Renamed defined predicates conflicting with built-in predicates [PROLOG].

(2) Obligation:

Clauses:

p(X, Y, Z) :- ','(user_defined_=(X, Y), ','(user_defined_=(Z, 1), !)).
p(X, Y, Z) :- ','(user_defined_=(Z, 1), ','(user_defined_=(Y, X), p(X, Y, Z))).
user_defined_=(X, X).

Query: p(a,a,a)

(3) PrologToCdtProblemTransformerProof (UPPER BOUND (ID) transformation)

Built complexity over-approximating cdt problems from derivation graph.

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

f2_inf2_out1(1)
f2_inU1(f39_in)
f2_inU2(f39_in)
U1(f39_out1) → f2_out1(1)
U2(f39_out1) → f2_out1(1)
f39_inf39_out1
Tuples:

F2_INc1(U1'(f39_in), F39_IN)
F2_INc2(U2'(f39_in), F39_IN)
S tuples:

F2_INc1(U1'(f39_in), F39_IN)
F2_INc2(U2'(f39_in), F39_IN)
K tuples:none
Defined Rule Symbols:

f2_in, U1, U2, f39_in

Defined Pair Symbols:

F2_IN

Compound Symbols:

c1, c2

(5) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)

Split RHS of tuples not part of any SCC

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

f2_inf2_out1(1)
f2_inU1(f39_in)
f2_inU2(f39_in)
U1(f39_out1) → f2_out1(1)
U2(f39_out1) → f2_out1(1)
f39_inf39_out1
Tuples:

F2_INc(U1'(f39_in))
F2_INc(F39_IN)
F2_INc(U2'(f39_in))
S tuples:

F2_INc(U1'(f39_in))
F2_INc(F39_IN)
F2_INc(U2'(f39_in))
K tuples:none
Defined Rule Symbols:

f2_in, U1, U2, f39_in

Defined Pair Symbols:

F2_IN

Compound Symbols:

c

(7) CdtGraphRemoveTrailingTuplepartsProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

f2_inf2_out1(1)
f2_inU1(f39_in)
f2_inU2(f39_in)
U1(f39_out1) → f2_out1(1)
U2(f39_out1) → f2_out1(1)
f39_inf39_out1
Tuples:

F2_INc
S tuples:

F2_INc
K tuples:none
Defined Rule Symbols:

f2_in, U1, U2, f39_in

Defined Pair Symbols:

F2_IN

Compound Symbols:

c

(9) CdtKnowledgeProof (EQUIVALENT transformation)

The following tuples could be moved from S to K by knowledge propagation:

F2_INc
F2_INc
F2_INc
F2_INc
Now S is empty

(10) BOUNDS(O(1), O(1))

(11) PrologToCdtProblemTransformerProof (UPPER BOUND (ID) transformation)

Built complexity over-approximating cdt problems from derivation graph.

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

f1_inf1_out1(1)
f1_inU1(f36_in)
f1_inU2(f36_in)
U1(f36_out1) → f1_out1(1)
U2(f36_out1) → f1_out1(1)
f36_inf36_out1
Tuples:

F1_INc1(U1'(f36_in), F36_IN)
F1_INc2(U2'(f36_in), F36_IN)
S tuples:

F1_INc1(U1'(f36_in), F36_IN)
F1_INc2(U2'(f36_in), F36_IN)
K tuples:none
Defined Rule Symbols:

f1_in, U1, U2, f36_in

Defined Pair Symbols:

F1_IN

Compound Symbols:

c1, c2

(13) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)

Split RHS of tuples not part of any SCC

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

f1_inf1_out1(1)
f1_inU1(f36_in)
f1_inU2(f36_in)
U1(f36_out1) → f1_out1(1)
U2(f36_out1) → f1_out1(1)
f36_inf36_out1
Tuples:

F1_INc(U1'(f36_in))
F1_INc(F36_IN)
F1_INc(U2'(f36_in))
S tuples:

F1_INc(U1'(f36_in))
F1_INc(F36_IN)
F1_INc(U2'(f36_in))
K tuples:none
Defined Rule Symbols:

f1_in, U1, U2, f36_in

Defined Pair Symbols:

F1_IN

Compound Symbols:

c

(15) CdtGraphRemoveTrailingTuplepartsProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

f1_inf1_out1(1)
f1_inU1(f36_in)
f1_inU2(f36_in)
U1(f36_out1) → f1_out1(1)
U2(f36_out1) → f1_out1(1)
f36_inf36_out1
Tuples:

F1_INc
S tuples:

F1_INc
K tuples:none
Defined Rule Symbols:

f1_in, U1, U2, f36_in

Defined Pair Symbols:

F1_IN

Compound Symbols:

c