1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
normaliser(a,p):-distribuerT(a,r),peigner(r,p);
distribuerT(ou(a,b),ou(m,n)):-distribuerT(a,m),distribuerT(b,n);
distribuerT(et(a,b),r):-distribuerT(a,m),distribuerT(b,n),distribuer1(et(m,n),r);
distribuerT(non(a),r):-distribuerT(a,m),distribuerNon(non(m),r);
distribuerT(a,a):-terminal(a);
distribuer1(et(ou(a,b),c),ou(mn)):-distribuer1(et(a,c),m),distribuer1(et(b,c),n);
distribuer1(et(a,ou(b,c)),ou(m,n)):-distribuer1(et(a,b),m),distribuer1(et(a,c),n);
distribuer1(et(a,b),et(a,b)):-acheveEt(a),acheveEt(b);
distribuerNon(non(ou(a,b)),r):-distribuerNon(non(a),m),distribuerNon(non(a),m),distribuerNon(non(b),n),distribuerT(et(m,n),r);
distribuerNon(non(et(a,b),r):-distribuerNon(non(a),m),distribuerNon(non(a),m),distribuerNon(non(b),n),distribuerT(ou(m,n),r);
distribuerNon(non(non(non(a)),r):-distribuerT(a,r);
distribuerNon(non(a),non(a)):-terminal(a);
peigner(ou(ou(a,b),c),r):-peigner(ou(a,ou(b,c)),r);
peigner(ou(a,b),ou(m,n)):-feuille(a,o),peigner(a,m),peigner(b,n);
peigner(non(a),non(a));
peigner(a,a):-terminal(a);
peigner(et(et(a,b),c),r):-peigner(et(a,et(b,c)),r);
peigner(et(a,b),et(m,n)):-feuille(a,o),peigner(a,m),peigner(b,n);
peigner(non(a),non(a));
peigner(a,a):-terminal(a);
acheveEt(et(a,b)):-acheveEt(a),acheveEt(b);
acheveEt(non(a)):-terminal(a);
acheveEt(a):-terminal(a);
feuille(et(a,b),ou);
feuille(non(a),ou);
feuille(a,ou):-terminal(a);
feuille(non(a),et):-terminal(a);
feuille(a,et):-terminal(a);
terminal(a):-ident(a); |
Partager