% données pour pouvoir faire tourner des exemples. maison1(anne). maison1(bernard). maison2(catherine). maison2(dominique). maison2(elena). maison3(fairouz). maison3(gaspard). maison3(hubert). maison4(igor). maison4(judith). maison5(kirsten). maison5(luigi). maison5(makoto). maison6(nicole). maison6(otto). maison6(pablo). maison(1,X):-maison1(X). maison(2,X):-maison2(X). maison(3,X):-maison3(X). maison(4,X):-maison4(X). maison(5,X):-maison5(X). maison(6,X):-maison6(X). % pas demande meme_maison(X,Y):-maison(N,X),maison(N,Y). % pas demande (remplit le prédicat apprecie) apprecie(X,Y):-meme_maison(X,Y). % pas demande: pour faire trouner le programme on ajoute des relatiosn particulieres a apprecie apprecie(anne,dominique). %apprecie(anne,fairouz). %apprecie(bernard,igor). apprecie(dominique,gaspard). apprecie(elena,gaspard). apprecie(catherine,nicole). %apprecie(fairouz,otto). %apprecie(fairouz,luigi). apprecie(hubert,makoto). apprecie(gaspard,nicole). apprecie(igor,kirsten). %apprecie(igor,anne). %apprecie(judith,elena). apprecie(kirsten,anne). apprecie(luigi,dominique). apprecie(makoto,elena). apprecie(nicole,luigi). apprecie(otto,hubert). apprecie(otto,gaspard). % pour faire tourner les exemples connait est defini d apres apprecie en ajoutant des relations particulieres connait(X,Y):-apprecie(X,Y). connait(anne,dominique) connait(anne,fairouz). connait(bernard,igor). connait(dominique,gaspard). connait(elena,gaspard). connait(catherine,nicole). connait(fairouz,otto). connait(fairouz,luigi). connait(hubert,makoto). connait(gaspard,nicole). conait(igor,kirsten). connait(igor,anne). connait(judith,elena). connait(kirsten,anne). connait(luigi,dominique). connait(makoto,elena). connait(nicole,luigi). connait(otto,hubert). connait(otto,gaspard). % on definit ici les gens gens([anne, bernard, catherine, didier, elena, fairouz, gaspard, hubert, igor, judith, kirsten, luigi, makoto, nicole, otto, pablo]). % pas demande; pour faire trouner l exemple % on se donne les 4 tables sous forme de 4 listes table1_liste([anne,elena,igor,makoto]). table2_liste([bernard,fairouz,judith,nicole]). table3_liste([catherine,gaspard,kirsten,otto]). table4_liste([didier,hubert,luigi,pablo]). % pas demande; on peut définir connait_pas ainsi: appartient(X,[]):-fail. appartient(X,[X|L]). appartient(X,[Y|L]):-appartient(X,L). connait_pas(X,Y):-gens(L),appartient(X,L),appartient(Y,L),not(connait(X,Y). % IVa supporte(X,Y):-connait_pas(X,Y). supporte(X,Y):-apprecie(X,Y). % IVb supporte_liste(X,[]). supporte_liste(X,[Y|L]):-supporte(X,Y),supporte_liste(X,L). supporte_liste(X,[Y|L]):-apprecie(X,Y),supporte_liste(X,L). % IVc liste_supporte_liste([],M). liste_supporte_liste([X|L],M):-supporte_liste(X,L),liste_supporte_liste(L,M). % IVd correct(L):-liste_supporte_liste(L,L).