39 lines
804 B
Prolog
39 lines
804 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).
|