cercare2

cercare elementi

/*pro74.map */
NOWARNINGS
domains
 valore,editrice,titolo,autore,genere = symbol
 anno,prezzo = integer
 
predicates
 disco(titolo,autore,genere)
 prodotto(titolo,anno)
 dati(titolo,editrice,prezzo)
 valore(titolo)
 cerca(titolo,autore,genere)
 tipo(titolo,autore,genere)
clauses
 disco(volare,verdi,melodico).
 disco(piove,verdi,sinfonico).
 disco(amore,rossini,melodico).
 disco(traviata,verdi,lirico).
 disco(elisir,donizzetti,sinfonico).
 disco(trovatore,verdi,lirico).
 prodotto(volare,1987).
 prodotto(piove,1976).
 prodotto(amore,1987).
 prodotto(traviata,1876).
 prodotto(elisir,1987).
 prodotto(trovatore,1876).
 dati(volare,sei,1200).
 dati(piove,zannichelli,2000).
 dati(amore,sei,4000).
 dati(traviata,scuola,6000).
 dati(elisir,vallardi,7000).
 dati(trovatore,vallardi,4000).
 valore(piove).
 valore(volare).
 valore(traviata).
 valore(elisir).
  /* stampa solo autori con libro valido */
  cerca(X,Y,Z) if
   disco(X,Y,Z) and
   valore(X).
   
  /* stampa solo autori di lirica */
  tipo(X,Y,Z) if
   disco(X,Y,Z) and
    Z=lirico.
     
       
     

/* pro75.map */
nowarnings
domains
 nome,citta,regione = symbol
 indirizzo = string
 telefono  = integer
 
predicates
 dati(nome,indirizzo,citta,regione,telefono)
clauses
 dati(verdi,via_padova_4,verona,veneto,123).
 dati(rossi,via_verona_6,padova,veneto,222).
 dati(bassi,via_roma_7,verona,veneto,222).
 dati(bassi,via_treviso_8,milano,lombardia,111).
 dati(neri,via_venezia_8,torino,piemonte,222).
  
    
   
 

/* pro76.map */
nowarnings
domains
 allievo = symbol
 peso,altezza = integer
predicates
 nome(allievo,peso,altezza)
 maschio(allievo)
 femmina(allievo)
 peso(allievo,peso,altezza)
 alto(allievo,peso,altezza)
 duplice(allievo,peso,altezza)
 sesso(allievo,peso,altezza)
clauses
 nome(luigi,40,150).
 nome(carlo,50,160).
 nome(anna,40,120).
 nome(paolo,50,160).
 nome(alice,45,150).
 nome(elisa,50,140).
 maschio(luigi).
 maschio(carlo).
 maschio(paolo).
 femmina(anna).
 femmina(alice).
 femmina(elisa).
 
 peso(Allievo,Peso,Altezza) if
  nome(Allievo,Peso,Altezza) and
  Peso=50.
 
 alto(Allievo,Peso,Altezza) if
  nome(Allievo,Peso,Altezza) and
  Altezza <=150.
   
 duplice(Allievo,Peso,Altezza) if
  nome(Allievo,Peso,Altezza) and
  Peso<50 and
  Altezza <160.
 
 sesso(Allievo,Peso,Altezza) if
  nome(Allievo,Peso,Altezza) and
  Peso<=40 and 
  maschio(Allievo).
     

/* pro77.map */
/* dati(N,G,M,A,R) */
/* dati(N,_,12,_,R) */
nowarnings
domains
nome,regione = symbol
giorno,mese,anno = integer
predicates
 dati(nome,giorno,mese,anno,regione)
clauses
 dati(luigi,10,12,1987,veneto).
 dati(paolo,15,11,1987,veneto).
 dati(anna,17,11,1976,lazio).
 dati(carlo,12,11,1986,veneto).
 dati(aldo,17,10,1976,lazio).
 dati(elisa,23,4,1986,sicilia).