Если у меня есть следующие Пролога факты:Пролог правило для объектов, движущихся с людьми, которые их
person(mary).
object(ball).
location(bedroom).
location(bathroom).
И этот пункт:
go(mary,bedroom).
get(mary,ball).
go(mary,bathroom).
Мне нужно правило, которое показывает, что мяч движется с "Мэри." При запросе Prolog должен ответить, что мяч находится в ванной комнате. Я попытался следующие правила, но они не работали:
has(X,Y) :- get(X,Y).
whereIs(P,R) :- has(P,Q),go(P,R).
Что бы лучше набор правил, чтобы выразить эту связь между между наличием объектов и путешествий в разных комнатах?
Почему у него есть(), если оно должно быть таким же, как get()? Также вы можете поставить «_» вместо Q, так как это, похоже, не требуется. – rnso
Какой запрос вы хотите ввести и какие результаты? Вы говорите, что вам нужно правило, которое * показывает, что мяч перемещается с помощью «mary» *. Какой результат вы ожидаете, чтобы показать это? Или вам действительно нужно правило, которое говорит вам, где находится мяч? Это не одно и то же, хотя можно предположить и другое. – lurker
Где вы хотите, чтобы ваши факты вступали в игру? Ваш примерный код не использует их. – lurker