/*
lancer gprolog
les "[machin]" chargent les definitions contenues dans machin.pl
faire `;` pour explorer les solutions lorsqu il y en a plusieurs
                             (<entree> pour sortir)
*/

/*
addright([],X,[X]).
addright([A|B],X,[A|Z]) :- addright(B,X,Z).

rev([],[]).
rev([X|Y],Z) :- rev(Y,W), addright(W,X,Z).
*/

[rev].

/* les majuscules denotent les inconnues */
rev([a,b,c],Y).

rev([a,b,c],[c,b,X]).


/* une base de regles */

/*
a(b).

a(X) :- a1(X), a2(X,X).

a2(X,Y) :- b1(X), b2(Y).

b1(c).
b2(c).

a1(d).
a1(c).
*/

[regles].

b1(X).

b2(X).

a1(X).

a2(Y,Z).

a2(Z,Z).

a(X).


(* on finit en beaute: loop contient

toto(X) :- toto(X).

toto(a).

tutu(b).

tutu(Y) :- tutu(Y), tutu(Y).
*)

[loop].

toto(Y).
