%********************************************** %* LANGAGE NATUREL * %********************************************** :-consult('util_saisie.pro'). :-consult('devoirprolog_part1_2.pro'). % Requête du type :"quel est le vehicule de tel type et de tel couleur?". % requete_qui(+Liste1,-qui(Liste2)). A partir d'une requête tokenisée sous la forme de la liste 'Liste1', % requete_qui renvoie un terme Prolog qui(Liste2) % 'Liste2' contient les informations importantes de la requête. C'est à partir des ces informations que le terme % Prolog qui(Liste2) sera interprété. requete_qui([],qui([])). % Si la requête contient des informations sur la couleur, le type et la position requete_qui([X|L],qui([type(T),devant(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), member(N,L), member(devant,L), vehicule(N,_,_), vehicule(_,T,C). requete_qui([X|L],qui([type(T),derriere(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), member(N,L), member(derrière,L), vehicule(N,_,_), vehicule(_,T,C). requete_qui([X|L],qui([type(T),juste_devant(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), member(N,L), member(juste,L), member(devant,L), vehicule(N,_,_), vehicule(_,T,C). requete_qui([X|L],qui([type(T),juste_derriere(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), member(N,L), member(juste,L), member(derrière,L), vehicule(N,_,_), vehicule(_,T,C). requete_qui([X|L],qui([type(T),tete,couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), member(tete,L), vehicule(_,T,C). requete_qui([X|L],qui([type(T),queue,couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), member(queue,L), vehicule(_,T,C). requete_qui([X|L],qui([type(T),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(C,L), vehicule(_,T,C). requete_qui([X|L],qui([devant(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), member(N,L), member(devant,L), vehicule(_,_,C), vehicule(N,_,_). requete_qui([X|L],qui([derriere(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), member(N,L), member(derriere,L), vehicule(_,_,C), vehicule(N,_,_). requete_qui([X|L],qui([juste_devant(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), member(N,L), member(juste,L), member(devant,L), vehicule(_,_,C), vehicule(N,_,_). requete_qui([X|L],qui([juste_derriere(N),couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), member(N,L), member(juste,L), member(derrière,L), vehicule(_,_,C), vehicule(N,_,_). requete_qui([X|L],qui([queue,couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), member(queue,L), vehicule(_,_,C). requete_qui([X|L],qui([tete,couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), member(tête,L), vehicule(_,_,C). requete_qui([X|L],qui([type(T),devant(N)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(N,L), member(devant,L), vehicule(N,_,_), vehicule(_,T,_). requete_qui([X|L],qui([type(T),derriere(N)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(N,L), member(derrière,L), vehicule(N,_,_), vehicule(_,T,_). requete_qui([X|L],qui([type(T),juste_devant(N)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(N,L), member(juste,L), member(devant,L), vehicule(N,_,_), vehicule(_,T,_). requete_qui([X|L],qui([type(T),juste_derriere(N)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(N,L), member(juste,L), member(derrière,L), vehicule(N,_,_), vehicule(_,T,_). requete_qui([X|L],qui([type(T),tete])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(tête,L), vehicule(_,T,_). requete_qui([X|L],qui([type(T),queue])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), member(queue,L), vehicule(_,T,_). requete_qui([X|L],qui([couleur(C)])) :- member(X, [quel, quelle, quels, quelles]), member(C,L), vehicule(_,_,C). requete_qui([X|L],qui([type(T)])) :- member(X, [quel, quelle, quels, quelles]), member(T,L), vehicule(_,T,_). requete_qui([X|L],qui([devant(N)])) :- member(X, [quel, quelle, quels, quelles]), member(N,L), member(devant,L), vehicule(N,_,_). requete_qui([X|L],qui([juste_devant(N)])) :- member(X, [quel, quelle, quels, quelles]), member(N,L), member(juste,L), member(devant,L), vehicule(N,_,_). requete_qui([X|L],qui([derriere(N)])) :- member(X, [quel, quelle, quels, quelles]), member(N,L), member(derrière,L), vehicule(N,_,_). requete_qui([X|L],qui([juste_derriere(N)])) :- member(X, [quel, quelle, quels, quelles]), member(N,L), member(juste,L), member(derrière,L), vehicule(N,_,_). requete_qui([X|L],qui([tete])) :- member(X, [quel, quelle, quels, quelles]), member(tête,L). requete_qui([X|L],qui([queue])) :- member(X, [quel, quelle, quels, quelles]), member(queue,L). reponse_qui(qui([type(T),devant(N),couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([devant(M,N)]). reponse_qui(qui([type(T),devant(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([devant(M,N)]). reponse_qui(qui([type(T),derriere(N),couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([derriere(M,N)]). reponse_qui(qui([type(T),derriere(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([derriere(M,N)]). reponse_qui(qui([type(T),juste_devant(N),couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([juste_devant(M,N)]). reponse_qui(qui([type(T),juste_devant(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([juste_devant(M,N)]). reponse_qui(qui([type(T),juste_derriere(N),couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([juste_derriere(M,N)]). reponse_qui(qui([type(T),juste_derriere(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vehicule(N,_,_), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([juste_derriere(M,N)]). reponse_qui(qui([type(T),tete,couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([tete_de_file(M)]). reponse_qui(qui([type(T),tete,couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([tete_de_file(M)]). reponse_qui(qui([type(T),queue,couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([queue_de_file(M)]). reponse_qui(qui([type(T),queue,couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vrai([couleur(M,C)]), vrai([type(M,T)]), vrai([queue_de_file(M)]). reponse_qui(qui([type(T),couleur(C)]),S) :- S=[la,T,N], vehicule(N,T,C), vrai([couleur(N,C)]), vrai([type(N,T)]). reponse_qui(qui([type(T),couleur(C)]),S) :- S=[le,T,N], T=camion, vehicule(N,T,C), vrai([couleur(N,C)]), vrai([type(N,T)]). reponse_qui(qui([devant(N),couleur(C)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([devant(M,N)]). reponse_qui(qui([devant(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([devant(M,N)]). reponse_qui(qui([derriere(N),couleur(C)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([derriere(M,N)]). reponse_qui(qui([derriere(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([derriere(M,N)]). reponse_qui(qui([juste_devant(N),couleur(C)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([juste_devant(M,N)]). reponse_qui(qui([juste_devant(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([juste_devant(M,N)]). reponse_qui(qui([juste_derriere(N),couleur(C)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([juste_derriere(M,N)]). reponse_qui(qui([juste_derriere(N),couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,C), vrai([couleur(M,C)]), vrai([juste_derriere(M,N)]). reponse_qui(qui([tete,couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vrai([couleur(M,C)]), vrai([tete_de_file(M)]). reponse_qui(qui([tete,couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vrai([couleur(M,C)]), vrai([tete_de_file(M)]). reponse_qui(qui([queue,couleur(C)]),S) :- S=[la,T,M], vehicule(M,T,C), vrai([couleur(M,C)]), vrai([queue_de_file(M)]). reponse_qui(qui([queue,couleur(C)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,C), vrai([couleur(M,C)]), vrai([queue_de_file(M)]). reponse_qui(qui([type(T),devant(N)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,_), vrai([devant(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),devant(N)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,_), vrai([devant(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),derriere(N)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,_), vrai([derriere(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),derriere(N)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,_), vrai([derriere(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),juste_devant(N)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,_), vrai([juste_devant(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),juste_devant(N)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,_), vrai([juste_devant(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),juste_derriere(N)]),S) :- S=[la,T,M], vehicule(N,_,_), vehicule(M,T,_), vrai([juste_derriere(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),juste_derriere(N)]),S) :- S=[le,T,M], T=camion, vehicule(N,_,_), vehicule(M,T,_), vrai([juste_derriere(M,N)]), vrai([type(M,T)]). reponse_qui(qui([type(T),tete]),S) :- S=[la,T,M], vehicule(M,T,_), vrai([tete_de_file(M)]), vrai([type(M,T)]). reponse_qui(qui([type(T),tete]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vrai([tete_de_file(M)]), vrai([type(M,T)]). reponse_qui(qui([type(T),queue]),S) :- S=[la,T,M], vehicule(M,T,_), vrai([queue_de_file(M)]), vrai([type(M,T)]). reponse_qui(qui([type(T),queue]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vrai([queue_de_file(M)]), vrai([type(M,T)]). reponse_qui(qui([couleur(C)]),S) :- S=[la,T,N], vehicule(N,T,C), vrai([couleur(N,C)]). reponse_qui(qui([couleur(C)]),S) :- S=[le,T,N], T=camion, vehicule(N,T,C), vrai([couleur(N,C)]). reponse_qui(qui([type(T)]),S) :- S=[la,T,N], vehicule(N,T,_), vrai([type(N,T)]). reponse_qui(qui([type(T)]),S) :- S=[le,T,N], T=camion, vehicule(N,T,_), vrai([type(N,T)]). reponse_qui(qui([devant(N)]),S) :- S=[la,T,M], vehicule(M,T,_), vehicule(N,_,_), vrai([devant(M,N)]). reponse_qui(qui([devant(N)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vehicule(N,_,_), vrai([devant(M,N)]). reponse_qui(qui([derriere(N)]),S) :- S=[la,T,M], vehicule(M,T,_), vehicule(N,_,_), vrai([derriere(M,N)]). reponse_qui(qui([derriere(N)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vehicule(N,_,_), vrai([derriere(M,N)]). reponse_qui(qui([juste_devant(N)]),S) :- S=[la,T,M], vehicule(M,T,_), vehicule(N,_,_), vrai([juste_devant(M,N)]). reponse_qui(qui([juste_devant(N)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vehicule(N,_,_), vrai([juste_devant(M,N)]). reponse_qui(qui([juste_derriere(N)]),S) :- S=[la,T,M], vehicule(M,T,_), vehicule(N,_,_), vrai([juste_derriere(M,N)]). reponse_qui(qui([juste_derriere(N)]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vehicule(N,_,_), vrai([juste_derriere(M,N)]). reponse_qui(qui([tete]),S) :- S=[la,T,M], vehicule(M,T,_), vrai([tete_de_file(M)]). reponse_qui(qui([tete]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vrai([tete_de_file(M)]). reponse_qui(qui([queue]),S) :- S=[la,T,M], vehicule(M,T,_), vrai([queue_de_file(M)]). reponse_qui(qui([queue]),S) :- S=[le,T,M], T=camion, vehicule(M,T,_), vrai([queue_de_file(M)]). requete_ou([],ou([])). requete_ou([X|L],ou([type(T),nom(N),couleur(C)])) :- X=où, member(T,L), member(C,L), member(N,L), vehicule(N,T,C). requete_ou([X|L],ou([type(T),couleur(C)])) :- X=où, member(T,L), member(C,L), vehicule(_,T,C). requete_ou([X|L],ou([nom(N),couleur(C)])) :- X=où, member(C,L), member(N,L), vehicule(N,_,C). requete_ou([X|L],ou([type(T),nom(N)])) :- X=où, member(T,L), member(N,L), vehicule(N,T,_). requete_ou([X|L],ou([couleur(C)])) :- X=où, member(C,L), vehicule(_,_,C). requete_ou([X|L],ou([type(T)])) :- X=où, member(T,L), vehicule(_,T,_). requete_ou([X|L],ou([nom(N)])) :- X=où, member(N,L), vehicule(N,_,_). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([type(T),nom(N),couleur(C)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([type(T),couleur(C)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([nom(N),couleur(C)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,_), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,_), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,_), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,_), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,_), vrai([tete_de_file(N)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,_), vrai([tete_de_file(N)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,_), vrai([queue_de_file(N)]). reponse_ou(ou([type(T),nom(N)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,_), vrai([queue_de_file(N)]). reponse_ou(ou([type(T)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,_), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,_), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,_), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,_), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([type(T)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,_), vrai([tete_de_file(N)]). reponse_ou(ou([type(T)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,_), vrai([tete_de_file(N)]). reponse_ou(ou([type(T)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,_), vrai([queue_de_file(N)]). reponse_ou(ou([type(T)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,_), vrai([queue_de_file(N)]). reponse_ou(ou([couleur(C)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,C), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([couleur(C)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([couleur(C)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,C), vrai([tete_de_file(N)]). reponse_ou(ou([couleur(C)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([couleur(C)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,C), vrai([queue_de_file(N)]). reponse_ou(ou([nom(N)]),R) :- R=[la,T,N,est,devant,M], vehicule(N,T,_), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[le,T,N,est,devant,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([devant(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[la,T,N,est,derrière,M], vehicule(N,T,_), vehicule(M,_,_), vrai([derriere(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[le,T,N,est,derriere,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([derrriere(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[la,T,N,est,juste,devant,M], vehicule(N,T,_), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[le,T,N,est,juste,devant,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([juste_devant(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[la,T,N,est,juste,derrière,M], vehicule(N,T,_), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[le,T,N,est,juste,derrière,M], T=camion, vehicule(N,T,_), vehicule(M,_,_), vrai([juste_derriere(N,M)]). reponse_ou(ou([nom(N)]),R) :- R=[la,T,N,est,en,tête,de,file], vehicule(N,T,_), vrai([tete_de_file(N)]). reponse_ou(ou([nom(N)]),R) :- R=[le,T,N,est,en,tête,de,file], T=camion, vehicule(N,T,_), vrai([tete_de_file(N)]). reponse_ou(ou([nom(N)]),R) :- R=[la,T,N,est,en,queue,de,file], vehicule(N,T,_), vrai([queue_de_file(N)]). reponse_ou(ou([nom(N)]),R) :- R=[le,T,N,est,en,queue,de,file], T=camion, vehicule(N,T,_), vrai([queue_de_file(N)]). requete_action([X|L],act([av(X)])) :- vehicule(X,_,_), member(avance,L). requete_action([X|L],act([doub(X,Y)])) :- vehicule(X,_,_), member(Y,L), vehicule(Y,_,_), member(double,L). requete_action([X|L],act([rec(X)])) :- vehicule(X,_,_), member(recule,L). reponse_action(act([rec(X)])) :- vehicule(X,_,_), action(recule(X)). reponse_action(act([av(X)])) :- vehicule(X,_,_), action(avance(X)). reponse_action(act([doub(X,Y)])) :- vehicule(X,_,_), vehicule(Y,_,_), action(double(X,Y)). requete1 :- lire_phrase(Q), tokenise(Q,S), setof(R, requete_qui(S,R), L), last(L,M), reponse_qui(M,N), affiche2(N), setof(B,reponse_qui(B,N),N). requete2 :- lire_phrase(Q), tokenise(Q,S), setof(R, requete_ou(S,R), L), last(L,M), reponse_ou(M,N), affiche2(N), setof(B,reponse_ou(B,N),N). requete3 :- lire_phrase(Q), tokenise(Q,S), requete_action(S,R), reponse_action(R). affiche2([]). affiche2([X|Liste]) :- write(X), write(' '), affiche2(Liste), write('\n'), n=1.