Determinacy
of the query pattern
f(a,a,g)
w.r.t. the given
Prolog program
could successfully be
proven
:
0 Prolog
↳
1 PrologDeterminacyProcessorProof (⇔, 0 ms)
↳
2 YES
(0)
Obligation:
Clauses:
f
(0, 1,
X
) :-
f
(
X
,
X
,
X
).
Query: f(a,a,g)
(1) PrologDeterminacyProcessorProof (EQUIVALENT transformation)
The root node satisfies the determinacy criterion.
digraph dp_graph { node [outthreshold=100, inthreshold=100]; 1 [label="1: f(T1, T2, T3)\n\nT3 is ground", fontsize=16, style=filled, fillcolor=lightyellow, color=red]; 2 [label="2: f(T1, T2, T3), SCOPE: 1, CLAUSE: 0\n\nT3 is ground", fontsize=16, style=filled, fillcolor=lightyellow]; 3 [label="3: f(T5, T5, T5)\n\nT5 is ground", fontsize=16, style=filled, fillcolor=lightyellow]; 4 [label="4: \n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 5 [label="5: f(T5, T5, T5), SCOPE: 2, CLAUSE: 0\n\nT5 is ground", fontsize=16, style=filled, fillcolor=lightyellow]; 6 [label="6: \n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 7 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 1 -> 7 [arrowhead = none ]; 7 -> 2; 8 [label="EVAL with clause\nf(0, 1, X2) :- f(X2, X2, X2).\nand substitutionT1 -> 0,\nT2 -> 1,\nT3 -> T5,\nX2 -> T5", fontsize=14, style = filled, fillcolor = lightblue]; 2 -> 8 [arrowhead = none ]; 8 -> 3; 9 [label="EVAL-BACKTRACK", fontsize=14, style = filled, fillcolor = lightgreen]; 2 -> 9 [arrowhead = none ]; 9 -> 4; 10 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 3 -> 10 [arrowhead = none ]; 10 -> 5; 11 [label="BACKTRACK\nfor clause: f(0, 1, X) :- f(X, X, X)because of non-unification", fontsize=14, style = filled, fillcolor = lightgreen]; 5 -> 11 [arrowhead = none ]; 11 -> 6; }
(2)
YES