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) */