Cvičenia 1

DLV a SMODELS

Vstup

Nasledujúce úlohy všetky pracujú s týmto vstupom:

family.sm
mother(shmi,anakin).
father(anakin,luke).
father(anakin,leia).
mother(padme,luke).
mother(padme,leia).
father(luke,ben).
mother(mara,ben).

mother(leia,jacen).
father(han,jacen).

Man / Woman

Pre niektorých ľudí z nášho vstupu vieme určiť akého sú pohlavia (matka/otec). Napíšte logický program, ktorý definuje predikáty man(X) a woman(X), ktoré sú pravdivé vždy, keď (vieme rozhodnúť že) X je muž resp. žena.

manwoman.sm
woman(X) :- mother(X,Y).
man(X) :- father(X,Y).

Siblings

Identifikuje súrodencov. Zadefinujte predikát siblings(X,Y), ktorý je pravdivý práve vtedy, keď X a Y sú súrodenci. Pre tých, o ktorých vieme, akého sú pohlavia, zadefinujte aj predikáty sister(S,X) a brother(B,X), ktoré sú pravdivé práve vtedy, keď S/B je sestra/brat X.

Ancestor

Napíšte logický program, ktorý definuje predikát ancestor(A,B), ktorý bude pravdivý vždy, keď A je predkom B.

ancestor.sm
ancestor(X,Y) :- father(X,Y).
ancestor(X,Y) :- mother(X,Y).
ancestor(X,Z) :- ancestor(X,Y), ancestor(Y,Z).
siblings.sm
siblings(X,Y) :- father(F,X), father(F,Y), X!=Y.
siblings(X,Y) :- mother(M,X), mother(M,Y), X!=Y.

sister(S,X) :- siblings(S,X), woman(S).
brother(B,X) :- siblings(B,X), man(B).
Vim logo FireFox logo CSS XHTML
Jozef Siska @ KAI FMFI UK YoYo @ KSP KAI (DAI) KSP