You are on page 1of 3

1.

1 Relatii de familie
Enun:
Fiind dat urmtorul arbore genealogic, s se proiecteze un cod surs n SWI-Prolog care s determine gradul de rudenie ntre dou persoane.

Codul surs:
parinte(ana,alex). parinte(george,alex). parinte(george,aurelia). parinte(alex,adriana). parinte(alex,elena). parinte(elena,vasile). feminin(ana). feminin(aurelia). feminin(adriana). feminin(elena). masculin(george). masculin(alex). masculin(vasile). sex(ana,feminin). sex(aurelia,feminin). sex(adriana,feminin). sex(elena,feminin). sex(george,masculin).

sex(alex,masculin). sex(vasile,masculin). diferit(X,Y) :- X\==Y. bunic(X) :- parinte(X,Z), parinte(Z,_), masculin(X). bunic(X,Y) :- parinte(X,Z), parinte(Z,Y), masculin(X). bunica(X) :- parinte(X,Z), parinte(Z,_), feminin(X). bunica(X,Y) :- parinte(X,Z), parinte(Z,Y), feminin(X). mama(X,Y) :- parinte(X,Y), feminin(X). tata(X,Y) :- parinte(X,Y), masculin(X). frate(X,Y) :- parinte(Z,X), parinte(Z,Y), masculin(X), diferit(X,Y). sora(X,Y) :- parinte(Z,X), parinte(Z,Y), feminin(X), diferit(X,Y). unchi(X,Y) :- parinte(Z,Y), (frate(Z,X); sora(Z,X)), masculin(X). matusa(X,Y) :- parinte(Z,Y), (frate(Z,X); sora(Z,X)), feminin(X). predecesor(X,Y) :- parinte(X,Y). predecesor(X,Y) :- parinte(X,Z), predecesor(Z,Y). rude(X,Y) :- predecesor(X,Y); predecesor(Y,X). rude(X,Y) :- predecesor(Z,X), predecesor(Z,Y). rude(X,Y) :- predecesor(X,Z), predecesor(Y,Z).

Interogri:

You might also like