Files
scryer-prolog/src/tests/predicates.pl
2019-12-07 19:21:09 -07:00

39 lines
808 B
Prolog

:- module(test_on_predicates, []).
:- dynamic(p/2).
:- dynamic(p/3).
:- dynamic(q/1).
p(_, a).
p(b, _).
test_queries_on_predicates :-
findall(Y, p(x, Y), [a]),
findall(X, p(X, a), [_,b]),
findall(X, p(b, X), [a,_]),
findall(X, p(X, X), [a,b]),
p(b, a),
\+ p(a, b),
retract(p(_,a)),
retract(p(b,_)),
assertz(p(_, _,a)),
assertz(p(_,a,_)),
assertz(p(_,_,a)),
findall(X, p(c,d,X), [a,a]),
findall(X, p(a,a,a), [a,a,a]),
\+ p(b,c,d),
findall(., retract(p(_,_,_)), _),
assertz(p(_, a)),
assertz(q(z)),
findall(Y, p(_,Y), [a]),
p(x,a),
p(_,a),
\+ p(_,b),
assertz((p(X, Y) :- q(Z), p(X, X))),
once(p(X,b)),
retract((p(X, Y) :- q(Z), p(X, X))),
retract(q(z)).
:- initialization(test_queries_on_predicates).