% -*- mode:prolog -*- % % Startup MicroPrologII % eq(X,X). neq(X,X):- !, fail. neq(X,Y). not(X) :- call(X), !, fail. not(X). :- if(false). repeat. repeat :- repeat. :- endif. differents(L) :- freeze(L,differents1(L)). differents1([]). differents1([T|Q]) :- hors_de(T,Q), differents(Q). hors_de(X,L) :- freeze(L,hors_de1(X,L)). hors_de1(X,[]). hors_de1(X,[T|Q]) :- dif(X,T), hors_de(X,Q). freeze2_ou(X,Y,B) :- freeze(X,une_fois(B,V)), freeze(Y,une_fois(B,V)). une_fois(B,V) :- var(V), !, call(B), eq(V,deja_fait). une_fois(B,V). conc([],X,X) . conc([T|Q],L,[T|R]) :- conc(Q,L,R). element(X,[X|Y]). element(X,[Y|Z]) :- element(X,Z). del(X,[X|Y],Y). del(X,[Y|Z],[Y|R]) :- del(X,Z,R). wb(X) :- write(X), write(' '). wf(X) :- write(X), nl, fail.