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).