В чем разница между правилами Пролога и запросами? - PullRequest
3 голосов
/ 07 февраля 2012

Я новичок в логическом программировании и мне трудно понять разницу между правилами и запросами, я чувствую, что они в основном одинаковы. Любая помощь, чтобы уточнить это будет принята с благодарностью.

Ответы [ 4 ]

3 голосов
/ 08 февраля 2012

Синтаксически они в основном одинаковы; «p(1).» может быть правилом или запросом, в зависимости от того, где вы его поместили.

Семантически, это не так.
"p(1).", как правило, говорит Prolog "p(1) true".
"p(1)." в качестве запроса спрашивает Prolog "is p(1) true?".

2 голосов
/ 07 февраля 2012

Правило - это определение, такое как

foo(X) :- bar(X), baz(X).

как это выглядит в программе Prolog.

Запрос - это либо правая часть определения, подобного приведенному выше, т. Е. (bar(X), baz(X)), либо то, что вы вводите в приглашении интерпретатора Prolog, чтобы запустить программу.

0 голосов
/ 07 февраля 2012

Ваша интуиция верна: они оба являются вариациями предложения Рога. Базовая структура предложения Horn:

head(...) :- body.

Если у тебя голова без тела, у тебя есть факт. Если у вас есть оба, у вас есть предикат. Если у вас есть только тело, значит, у вас есть запрос.

0 голосов
/ 07 февраля 2012

Запрос - это утверждение, которое вы просите подтвердить (которое в процессе этого может создавать экземпляры переменных, которые могут быть использованы в качестве вашего «результата»); правила составляют «программу», используемую для разработки этого доказательства.

...