Determinacy
of the query pattern
a()
w.r.t. the given
Prolog program
could successfully be
proven
:
0 Prolog
↳
1 PrologDeterminacyProcessorProof (⇔, 0 ms)
↳
2 YES
(0)
Obligation:
Clauses:
a
:-
b
.
b
:-
c
.
c
:-
d
.
d
:-
','
(
e
,
!
).
e
.
e
:-
a
.
Query: a()
(1) PrologDeterminacyProcessorProof (EQUIVALENT transformation)
The root node satisfies the determinacy criterion.
digraph dp_graph { node [outthreshold=100, inthreshold=100]; 1 [label="1: a\n\n", fontsize=16, style=filled, fillcolor=lightyellow, color=red]; 2 [label="2: a, SCOPE: 1, CLAUSE: 0\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 3 [label="3: b\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 4 [label="4: b, SCOPE: 2, CLAUSE: 1\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 5 [label="5: c\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 6 [label="6: c, SCOPE: 3, CLAUSE: 2\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 7 [label="7: d\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 8 [label="8: d, SCOPE: 4, CLAUSE: 3\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 9 [label="9: ','(e, !_4)\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 10 [label="10: ','(e, !_4), SCOPE: 5, CLAUSE: 4 | ','(e, !_4), SCOPE: 5, CLAUSE: 5\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 11 [label="11: !_4 | ','(e, !_4), SCOPE: 5, CLAUSE: 5\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 12 [label="12: true\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 13 [label="13: \n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 14 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 1 -> 14 [arrowhead = none ]; 14 -> 2; 15 [label="ONLY EVAL with clause\na :- b.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 2 -> 15 [arrowhead = none ]; 15 -> 3; 16 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 3 -> 16 [arrowhead = none ]; 16 -> 4; 17 [label="ONLY EVAL with clause\nb :- c.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 4 -> 17 [arrowhead = none ]; 17 -> 5; 18 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 5 -> 18 [arrowhead = none ]; 18 -> 6; 19 [label="ONLY EVAL with clause\nc :- d.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 6 -> 19 [arrowhead = none ]; 19 -> 7; 20 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 7 -> 20 [arrowhead = none ]; 20 -> 8; 21 [label="ONLY EVAL with clause\nd :- ','(e, !_4).\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 8 -> 21 [arrowhead = none ]; 21 -> 9; 22 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 9 -> 22 [arrowhead = none ]; 22 -> 10; 23 [label="ONLY EVAL with clause\ne.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 10 -> 23 [arrowhead = none ]; 23 -> 11; 24 [label="CUT", fontsize=14, style = filled, fillcolor = lightgreen]; 11 -> 24 [arrowhead = none ]; 24 -> 12; 25 [label="SUCCESS", fontsize=14, style = filled, fillcolor = lightgreen]; 12 -> 25 [arrowhead = none ]; 25 -> 13; }
(2)
YES