%Prolog example developed by Dr. Klerer, CSUSB :-dynamic(once/0). one(X) :- X=1. two(X) :- X=2. two(X) :- X=3. uniq(G) :- call(G), ((once, retract(once),!, fail); (asserta(once), fail)). uniq(_) :- once, retract(once). u(G) :- call(G), (once, retract(once),!, fail; asserta(once), fail) ; once, retract(once). one :- one(_), ((once, retract(once),!, fail); (asserta(once), fail)). one :- once, retract(once). two :- two(_), ((once, retract(once),!, fail); (asserta(once), fail)). two :- once, retract(once). r :- repeat, ((once, retract(once),!, fail); (asserta(once), fail)). r :- once, retract(once). :- write('uniq(Goal) loaded'), nl.