Логическая проблема клипов

#logic #clips

#Логические #клипы

Вопрос:

Я начал изучать clips в курсе AI, но у меня возникли проблемы с функциями clips logic

1. отец каждого человека — его прямой предок

математическое решение:

F(x,y) — x является отцом y

DA(x,y) — x является прямым предком y

для каждого x, y: F(x, y) => DA(x, y)

решение clips:

(отменить правило father_direct_ancestor

(отец ? x ? y)

=>

(утверждение(direct_ancestor ?x ?y) )

)

2. если кто-то является предком чьего-то прямого предка, то он также является предком этого человека

математическое решение:

A(x,y) — x является предком y

DA(x,y) — x является прямым предком y

для каждого x, y, z A(x, y) * DA(y, z) => A(x, z)

И здесь я не могу понять, как это сделать в clips.

Пробовал так:

(отменить правило A

(D_A ?y ?z)

(A ?x ?y)

=>

(утверждение (A ?x? z)) )

Комментарии:

1. Ваше правило прекрасно. Как вы думаете, что в этом плохого?

2. у меня возникли проблемы с пониманием этого языка. Он почти не дает обратной связи, и когда вы допускаете какую-либо ошибку, он говорит, что все неправильно.

3. Проблема с вашим вопросом заключается в том, что на самом деле вопроса нет, потому что то, что вы включили, является правильным.