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
.
a
:-
e
.
b
:-
c
.
c
:-
d
.
d
:-
b
.
e
:-
f
.
f
:-
g
.
g
:-
e
.
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 | a, SCOPE: 1, CLAUSE: 1\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 3 [label="3: b | a, SCOPE: 1, CLAUSE: 1\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 4 [label="4: b, SCOPE: 2, CLAUSE: 2 | ?_2 | a, SCOPE: 1, CLAUSE: 1\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 5 [label="5: b, SCOPE: 2, CLAUSE: 2\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 6 [label="6: ?_2 | a, SCOPE: 1, CLAUSE: 1\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 7 [label="7: c\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 8 [label="8: c, SCOPE: 3, CLAUSE: 3\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 9 [label="9: d\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 10 [label="10: d, SCOPE: 4, CLAUSE: 4\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 11 [label="11: b\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 12 [label="12: b, SCOPE: 5, CLAUSE: 2\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 13 [label="13: c\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 14 [label="14: a, SCOPE: 1, CLAUSE: 1\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 15 [label="15: e\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 16 [label="16: e, SCOPE: 6, CLAUSE: 5\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 17 [label="17: f\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 18 [label="18: f, SCOPE: 7, CLAUSE: 6\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 19 [label="19: g\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 20 [label="20: g, SCOPE: 8, CLAUSE: 7\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 21 [label="21: e\n\n", fontsize=16, style=filled, fillcolor=lightyellow]; 22 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 1 -> 22 [arrowhead = none ]; 22 -> 2; 23 [label="ONLY EVAL with clause\na :- b.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 2 -> 23 [arrowhead = none ]; 23 -> 3; 24 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 3 -> 24 [arrowhead = none ]; 24 -> 4; 25 [label="PARALLEL", fontsize=14, style = filled, fillcolor = violet]; 4 -> 25 [arrowhead = none ]; 25 -> 5; 26 [label="PARALLEL", fontsize=14, style = filled, fillcolor = violet]; 4 -> 26 [arrowhead = none ]; 26 -> 6; 27 [label="ONLY EVAL with clause\nb :- c.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 5 -> 27 [arrowhead = none ]; 27 -> 7; 28 [label="FAILURE", fontsize=14, style = filled, fillcolor = lightgreen]; 6 -> 28 [arrowhead = none ]; 28 -> 14; 29 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 7 -> 29 [arrowhead = none ]; 29 -> 8; 30 [label="ONLY EVAL with clause\nc :- d.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 8 -> 30 [arrowhead = none ]; 30 -> 9; 31 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 9 -> 31 [arrowhead = none ]; 31 -> 10; 32 [label="ONLY EVAL with clause\nd :- b.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 10 -> 32 [arrowhead = none ]; 32 -> 11; 33 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 11 -> 33 [arrowhead = none ]; 33 -> 12; 34 [label="ONLY EVAL with clause\nb :- c.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 12 -> 34 [arrowhead = none ]; 34 -> 13; 35 [label="INSTANCE", fontsize=14, style = filled, fillcolor = lightgrey]; 13 -> 35 [arrowhead = none , style=dashed]; 35 -> 7[style=dashed]; 36 [label="ONLY EVAL with clause\na :- e.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 14 -> 36 [arrowhead = none ]; 36 -> 15; 37 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 15 -> 37 [arrowhead = none ]; 37 -> 16; 38 [label="ONLY EVAL with clause\ne :- f.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 16 -> 38 [arrowhead = none ]; 38 -> 17; 39 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 17 -> 39 [arrowhead = none ]; 39 -> 18; 40 [label="ONLY EVAL with clause\nf :- g.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 18 -> 40 [arrowhead = none ]; 40 -> 19; 41 [label="CASE", fontsize=14, style = filled, fillcolor = lightcyan]; 19 -> 41 [arrowhead = none ]; 41 -> 20; 42 [label="ONLY EVAL with clause\ng :- e.\nand substitution", fontsize=14, style = filled, fillcolor = lightblue]; 20 -> 42 [arrowhead = none ]; 42 -> 21; 43 [label="INSTANCE", fontsize=14, style = filled, fillcolor = lightgrey]; 21 -> 43 [arrowhead = none , style=dashed]; 43 -> 15[style=dashed]; }
(2)
YES