Cvičenia 3 -- nemonotónnosť

∃x

Zadefinujte predikát exists_a_and_b/0, ktorý bude pravdivý ak sú oba predikáty a/1 a b/1 pravdivé naraz pre nejaké X. Teda exists_a_and_b ≡ ∃X(a(X) ∧ b(X)).

Negácia (defaultová)

Def. negácia sa zapisuje jednoducho s not:

neg1.lp
a.

c :- not b.

Def. negáciu čítame ako "nevieme, že platí X", "nepodarilo sa nám/nevieme odvodiť X".

Keďže ide o closed world assumption (CWA) prináša to drobné komplikácie: nad akou doménou ju chceme robiť? Robiť ju totižto nad množinou všetkých termov (ako to vlastne robí teoretická sémantika) je príliš zložité. Preto musíme zabezpečiť aby bola jasná doména:

neg2.lp
a(1..5).
b(1..2).

c(X) :- not b(X).
neg3.lp
a(1..5).
b(1..2).

c(X) :- a(X), not b(X).
neg3.dlv
#maxint=7.

a(1..5).
b(1..2).

c(X) :- #int(X), not b(X).

Vydáš sa za mňa?

Napíšte program, ktorý definuje predikáty blood_relative a can_marry/2. X je pokrvným príbuzným Y, ak majú spoločného predka. X a Y sa môžu vziať, ak sú slobodní (nevieme preukázať, že je ženatý/vydatá) a nie sú (nevieme preukázať, že sú) pokrvní príbuzní.

family.lp
man(anakin). man(luke). man(han).
%man(ben)man(jacen).
woman(shmi). woman(padme). woman(leia).
%woman(mara).
mother(shmi,anakin).
father(anakin,luke).  mother(padme,luke).
father(anakin,leia).  mother(padme,leia).
%father(luke,ben).     mother(mara,ben).
%father(han,jacen).    mother(leia,jacen).

married(anakin, padme).
%married(luke,mara).
%married(leia,han).

Zlodeji

Príklad z https://www.doc.ic.ac.uk/~mjs/teaching/KnowledgeRep491/ :

Zistite, čo to znamená pre zlodeja Juraja, ktory je/nie je mladistvý a má/nemá násilnícke sklony.

Futbal

Príklad z https://www.doc.ic.ac.uk/~mjs/teaching/KnowledgeRep491/ :

∀x

Zadefinujte predikát forall_a_and_b/0, ktorý bude pravdivý ak sú oba predikáty a/1 a b/1 pravdivé naraz pre všetky X. Teda forall_a_and_b ≡ ∀ X( a(X) ∧ b(X)). Zamyslite sa nad tým, pre všetky X z akej domény to vaša deklarácia definuje.

Small and strong

Príklad z https://www.doc.ic.ac.uk/~mjs/teaching/KnowledgeRep491/ :

Represent the following default rules as a normal logic program:

What conclusions does your representation give for the various combinations of big/small and muscular/not muscular?

Vim logo FireFox logo CSS XHTML
Jozef Siska @ KAI FMFI UK YoYo @ KSP KAI (DAI) KSP