27 lines
636 B
Prolog
27 lines
636 B
Prolog
:- dynamic(p/2).
|
|
:- dynamic(p/3).
|
|
|
|
p(Z, Z).
|
|
clouds(are, nice).
|
|
p(Z, h(Z, W), f(W)).
|
|
|
|
test_queries_on_facts :-
|
|
findall(Z, p(Z, Z), [Z]),
|
|
findall(Z, p(Z, z), [z]),
|
|
findall(Z, p(Z, w), [w]),
|
|
\+ p(z, w),
|
|
p(w, w),
|
|
\+ clouds(Z, Z),
|
|
findall(Z, clouds(are, Z), [nice]),
|
|
\+ p(z, h(z, z), f(w)),
|
|
p(z, h(z, w), f(w)),
|
|
findall(W, p(z, h(z, W), f(w)), [w]),
|
|
findall(Z, p(Z, h(Z, w), f(Z)), [w]),
|
|
\+ p(z, h(Z, w), f(Z)),
|
|
retract(p(_,_,_)),
|
|
assertz(p(Z, h(Z, W), f(W))),
|
|
p(f(f(a)), h(f(f(a)), f(a)), f(f(a))),
|
|
retract(p(Z, h(Z, W), f(W))).
|
|
|
|
:- initialization(test_queries_on_facts).
|