
1. Логические основы Пролога
1.1 Факты, правила, дизъюнкт Хорна
Идея логического программирования заключается в использовании компьютера для получения результатов при декларативном описании предметной области.
Особенность логического программирования - это простая возможность перехода от высказываний естественного языка к предложениям программы на языке логики предикатов первого порядка. С другой стороны, программа, записанная в виде предложений языка логики, может быть достаточно легко переведена на естественный язык.
Рассмотрим формулу исчисления предикатов первого порядка.
Она может быть представлена в виде дизъюнкций конъюнкции положительных или отрицательных литералов:
L1 L2 ... Lk
где каждое Li представляет собой или формулу F от некого количества термов Fi(t1, t2 ,…, tp) или формулу со знаком отрицания Fj (t1, t2, ..., tp), причем под термом ti понимается или логическая константа, или логическая переменная, или результат применения логической функции к терму.
Следовательно, формулу исчисления предикатов первого порядка с учетом этого замечания может иметь вид:
А1 A2 ... Аn B1 B2 ... Bm
Но такая дизъюнкция может быть записана в виде импликации.
А1 A2 ... Аn В1 & В2 & ... & Вт
Здесь посылка импликации записана справа, а заключение — слева от знака операции. Такая запись принята в языке Пролог.
1.1.1 Напоминание
Напомним логическую операцию импликации.
Если B то A
Когда B тогда и A
Или в виде формулы: А В А В
Таблица Кэли для нее такова
-
A
B
А В
0
0
1
1
1
0
1
1
0
1
0
0
1
1
0
1
Вернемся к нашему выражению и запишем его, опуская знаки логических операций, в таком виде
А1, А2, ..., Аn В1, В2 ,…, Вm (n 0, m 0) (С)
Выражение в таком виде называют клаузой или клозом (от англ. clause).
При этом, если клауза содержит переменные Х1, Х2, ..., Хr то предполагается наличие квантора всеобщности по каждой из этих переменных, т.е.
X1X2, …, Xr ( A1 A2 ... Аn В1& В2& ... & Вm )
Читается: для всех Х1, Х2, ..., Хr выполняется А1, или А2, или ..., или Аn,
если выполнены В1, и В2, и ..., и Вm.
При n = 1 из (С) получается формула, называемая клаузом Хорна (или хорновским предложением, хорновским клозом, хорновским дизъюнктом, в англоязычной литературе используется также название definite clause, которое можно перевести как однозначное предложение):
А В1, В2, ..., Вm
При n 1 и m1 , что означает обязательное присутствие обеих частей, эту формулу называют правилом.
При n = 1 и т = 0, т.е., отсутствие правой части, эту формулу называют фактом (при этом знак импликации иногда опускают),
A или просто — А
В случае, когда левая часть предложения пуста, т. е. при п = 0, но т > 0 — запросом, целью или целевым утверждением.
В1 В2, ..., Вт
Множество фактов, правил вместе с запросом представляют собой логическую программу (definite program).
Факты задают отношения, имеющие место среди объектов данной предметной области. Правила определяют одни отношения через другие.
Запрос представляет собой целевое утверждение, которое нужно доказать, исходя из множества фактов и правил программы, процесс доказательства представляет собой выполнение программы.