prolog6x

esempi programmi con elementi essenziali

domains
 argomento = symbol
predicates
 mortale (argomento)
 umano (argomento)
 animale(argomento)
 roccia(argomento)
 nonmortale(argomento)
clauses
 umano ("Socrate").
 umano(anna).
 umano(luigi).
 umano("Rossi Paolo").
 animale(cane).
 animale(gatto).
 roccia(granito).
 roccia(arenaria).
 mortale(X) if umano(X).    
 mortale(X) if animale(X).
 nonmortale(X) if roccia(X).        
     


domains
 nome = symbol
predicates
 amici (nome,nome)
 maschio(nome)
clauses
 amici(dario,anna).
 amici(carlo,mario).
 amici(luigi,aldo).
 maschio(mario).
 maschio(aldo).
 maschio(luigi).
 maschio(mario).
 maschio(dario).
   
   

/* mario6.pro */
/* trova fratelli fratelli(X,Y) */
/* trova sorella sorella(X) */
/* cerca figli padre padre_di(alberto,X) */
/* cerca se esistono fratelli */
/* cerca se esistono fratelli e sorelle */
domains
 nome = symbol
predicates
 padre_di(nome,nome) 
 fratelli(nome,nome)
 femmina(nome)
 sorella(nome)
clauses
 padre_di(carlo,luigi).
 padre_di(carlo,anna).
 padre_di(alberto,alfonso).
 padre_di(alberto,alice).
 padre_di(alberto,elisa).
 femmina(alice).
 femmina(anna).
 femmina(elisa).
 
 fratelli(X,Y) if
  padre_di(P,X) and
  padre_di(P,Y) and
  X <> Y.
 sorella(X) if
  fratelli(X,Y) and
   femmina(Y).
    
  
   
   
   

/* mario7.pro */
/* esempio con predicati monadici,diadici */
/* cerca padre_di2(X,Y,Z)  */
/* cerca padre_di1(X,Y)    */
/* cerca padre_di3(X,A,B,C) */
domains
 nome = symbol
predicates
 padre_di3(nome,nome,nome,nome)
 padre_di2(nome,nome,nome) 
 padre_di1(nome,nome)
clauses
 padre_di3("ALCIDE",mario,anna,elisabetta).
 padre_di2(carlo,luigi,anna).
 padre_di2(carlo,sergio,alvise).
 padre_di1(alberto,"Alfonso").
 padre_di1(alberto,"ALICE").
 padre_di1(alberto,"maria rosa").
 
    
  
   
   
   

/* mario9.pro */
/* esempio uso diversi tipi di argomenti */
domains
 nome = symbol         /* alberto */
 stringa = string      /* "stringa aaa" */
 intero = integer      /* numero intero 9 */
 reale = real          /* numero reale 0.123 */
 lettera = char        /* carattere 'a' 'A' */
predicates
 uomo(nome,intero)
 donna(nome,stringa)
 numero(nome,intero)
 decimale(nome,real)
 testo(lettera,lettera)
 
clauses
 uomo(rossi,30).       /* uomo(X,A) */
 uomo(verdi,40).   
 donna(anna,"stringa alfa"). /* donna(X,A) */
 donna(anna,"stringa 123 abc").
 numero(dieci,10).     /* numero(X,A) */
 decimale(centesimo,0.01). /* decimale(X,A) */
 testo('a','A').      /* testo(X,Y) */