Documente Academic
Documente Profesional
Documente Cultură
• Scopuri:
Scopurile sunt predicate pentru care se doreste
aflarea valorii de adevar, in contextul faptelor
existente in baza de cunostinte.
parinte(pam, bob).
parinte(tom, bob).
parinte(tom, liz).
parinte(bob, ann).
parinte(bob, pat).
parinte(pat, jim).
Programul consta din 6 clauze. Fiecare
dintre aceste clauze declara un fapt despre
relatia parinte. Spre exemplu, parinte(tom,
bob) este o instantiere particulara a relatiei
parinte. In general, o relatie se defineste ca
fiind multimea tuturor instantierilor sale.
?-parinte(liz, pat).
no
?-parinte(X, Y).
X = pam
Y = bob;
X = tom
Y = bob;
X = tom
Y = liz;
…
• Cine este un bunic al lui Jim? i.e.
(1) Cine este parinte al lui Jim? Presupunem ca
acesta este un Y.
(2) Cine este parinte al lui Y? Presupunem ca
acesta este un X.
X = bob
Y = pat
Obs.: Interogarea
?- parinte(X, Y), parinte(Y, jim).
va produce acelasi rezultat.
• Cine sunt nepotii lui Tom?
X = bob
Y = ann;
X = bob
Y = pat
X = bob
Extinderea programului cu reguli:
feminin(pam).
masculin(tom).
masculin(bob).
feminin(liz).
feminin(pat).
feminin(ann).
masculin(jim).
si
sex(pam, feminin).
sex(tom, masculin).
sex(bob, masculin).
…
si
urmas(liz, tom).
…
Obs.: Relatia urmas poate fi definita intr-un mod
mult mai elegant prin folosirea relatiei deja
definite parinte.
sora (X, Y) :-
parinte (Z, X),
parinte (Z, Y),
feminin (X).
• Interogarea Prologului:
sau indirect
predecesor (X, Z) :-
parinte (X, Y),
parinte (Y, Z).
Predecesor (X,Z) :-
parinte (X,Y),
predecesor (Y,Z).
Definirea relatiei predecesor:
predecesor (X, Z) :-
parinte (X,Z).
predecesor (X, Z) :-
parinte (X, Y),
predecesor (Y, Z).
X = bob;
X = ann;
X = pat;
X = jim
Semnificatia declarativa si procedurala a programelor
Prolog
• Constantele definesc:
Obiecte particulare
Relatii particulare
• Variabilele:
au denumiri care incep cu litere mari; numele
de variabila poate incepe si cu simbolul “_”,
ceea ce indica o variabila anonima;
utilizarea unei variabile anonime semnifica
faptul ca nu intereseaza valoarea la care se va
instantia acea variabila;
scopul lexical al unui nume de variabila il
constituie o unica clauza. (Daca, spre exemplu,
numele X15 intervine in doua clauze diferite,
atunci el semnifica doua variabile diferite.
Fiecare ocurenta a lui X15 in interiorul
aceleiasi clauze semnifica insa o aceeasi
variabila).
• Structurile sunt obiecte ce desemneaza o
colectie de obiecte corelate logic, care
formeaza componentele structurii.
feminin(pam).
masculin(tom).
masculin(bob).
feminin(liz).
feminin(pat).
feminin(ann).
masculin(jim).
si
sex(pam, feminin).
sex(tom, masculin).
sex(bob, masculin).
…
si
urmas(liz, tom).
…
Obs.: Relatia urmas poate fi definita intr-un mod
mult mai elegant prin folosirea relatiei deja
definite parinte.