liste8

gestione ricerca

/* ese9.pro
/* struttura:identificatore=functore */
/* componenti (a,b,c..) */
/* functore1(c1,c2,c3) */
/* functore2(a1,a2,a3) */
/* fatto(argomento1,argomento2,argomento3) */
/* fatto(argomento1,functore1(c1,c2,c3),functore2(a1,a2,a3)))*/ 
/* GOAL: possiede(X,Y)...legge(X,Y,Z)
         possiede(X,libro(fisica))
         possiede(luigi,Y)
         legge(luigi,X,Y)
         legge(luigi,_,autore(verdi)) */
nowarnings         
domains
nome       = symbol
libro      =libro(nome)
autore     =autore(nome)
predicates
possiede(nome,libro)
legge(nome,libro,autore)
clauses
possiede(luigi,libro(fisica)).
possiede(luigi,libro(chimica)).
legge(carlo,libro(scienze),autore(verdi)).
legge(carlo,libro(geologia),autore(rossi)).
legge(luigi,libro(scienze),autore(verdi)).

/* ese7.pro  */

/* GOAL possiede(luigi,libro(X),autore(rossi))
        possiede(carlo,L,Y) 
        possiede(X,L,autore(rossi)) */
        
nowarnings
domains
nome = symbol
libro =libro(nome)
autore=autore(nome)
predicates
possiede(nome,libro,autore)
clauses
possiede(luigi,libro(chimica),autore(rossi)).
possiede(luigi,libro(fisica),autore(bassi)).
possiede(carlo,libro(fisica),autore(grasso)).
possiede(carlo,libro(geologia),autore(zanella)).
possiede(carlo,libro(scienze),autore(rossi)).

/* ese6.pro  */

/* GOAL possiede(N,L)
        possiede(luigi,L)
        possiede(carlo,L) */
        
nowarnings
domains
nome = symbol
libro =libro(nome)
predicates
possiede(nome,libro)
clauses
possiede(luigi,libro(chimica)).
possiede(luigi,libro(fisica)).
possiede(carlo,libro(fisica)).
possiede(carlo,libro(geologia)).

/* ese5.pro  */

/* GOAL piace(X,Y)
   ladro(X)
   piace(X,vino)
   piace(luigi,vino)
   ruba(X,Y)
   ruba(X,vino) */
   
nowarnings
domains
nome = symbol
predicates
ruba(nome,nome)
ladro(nome)
piace(nome,nome)
clauses
ladro(luigi).
piace(maria,fragole).
piace(maria,vino).
piace(luigi,X):-piace(X,vino).
ruba(X,Y):-ladro(X),piace(X,Y).

/* ese4.pro  */

/* Goal archivio(Classe,Insegnante,Materia)
   archivio(C,P,M)
   archivio(C,verdi,M)
   archivio(_,_,fisica)
   archivio(C,verdi,_)
   archivio(C,P,fisica) 
   docente(X)
   insegna(X,Y)
   insegna(X,fisica)
   collega(X,Y)
   collega(verdi,Y) ecc.*/
nowarnings
domains
nome = string
predicates
archivio(nome,nome,nome)
docente(nome)
insegna(nome,nome)
collega(nome,nome)
clauses
archivio(prima___a,rossi,italiano).
archivio(prima___a,bassi,matematica).
archivio(prima___a,rossini,greco).
archivio(prima___a,rossi,storia).
archivio(prima___a,grassi,fisica).
archivio(prima___a,rossini,latino).
archivio(prima___a,rossi,geografia).
archivio(prima___a,bassi,chimica).
archivio(prima___a,rossini,disegno).
archivio(prima___a,rossi,economia).
archivio(seconda_a,verdi,matematica).
archivio(seconda_a,rossini,greco).
archivio(seconda_a,rossi,italiano).
archivio(seconda_a,basso,fisica).
archivio(seconda_a,rossini,latino).
archivio(seconda_a,rossi,storia).
archivio(seconda_a,verdi,chimica).
archivio(seconda_a,rossini,arte).
archivio(seconda_a,grassi,diritto).
archivio(terza___a,verdi,matematica).
archivio(terza___a,rossini,greco).
archivio(terza___a,rossi,italiano).
archivio(terza___a,verdi,fisica).
archivio(terza___a,zanella,latino).
archivio(terza___a,basso,economia).
archivio(terza___a,verdi,diritto).
archivio(terza___a,rossini,arte).
archivio(terza___a,basso,disegno).
archivio(terza___a,neri,biologia).
archivio(terza___a,bianchi,botanica).
archivio(terza___a,bianchi,geologia).
archivio(terza___a,neri,biochimica).
/* cerca se rossi insegna italiano TRUE o FALSE*/
docente(X) if
 archivio(Classe,X,italiano).
 
/* cerca se rossi insegna italiano TRUE o FALSE*/
insegna(X,Materia) if
archivio(Classe,X,Materia). 
/* cerca colleghi stessa materia */
collega(X,Y) if
insegna(X,matematica),
insegna(Y,matematica).