Теоретические исследования математических моделей вычислений играют важную роль в формировании технологии использования компьютерной техники. Каждая такая модель вносит свой вклад в реальную технологию. Развитие технологии в обход теоретических исследований часто приводит к неуклюжим, трудным для восприятия и, в конечном счете, малопроизводительным видам деятельности.
Исследования универсальных методов доказательства в рамках логики предикатов дают повод для разработки на их основе новых языков программирования. Опыты, проведенные в 70-х годах прошлого века, показали перспективность использования этих методов в реальных технологиях автоматической переработки информации.
В настоящее время в рамках так называемого логического программирования
ведутся исследования по использованию различных стратегий поиска
доказательств утверждений, сформулированных в
Формулы
"
Замечания
Основными конструкциями
Правила образования термов
Замечания
Правила образования формул
Замечания
Пример.
Пусть нелогическая сигнатура состоит из трех символов $$\{E, M, S\}$$, где $$E$$ — двухместный предикат, $$S$$ —
Рассмотрим следующую интерпретацию нашей сигнатуры. Пусть универсумом рассуждения будет множество точек плоскости, это означает, что значениями переменных являются точки. Далее, пусть
При такой интерпретации нелогических символов $$M, S, E$$, приведенная выше формула есть утверждение о том, что середина отрезка $$(z, y)$$ симметрична середине отрезка с концами, симметричными точкам $$z, y$$.
Очевидно, что это утверждение истинно.
(рис 14.1) Рассмотрим еще одну интерпретацию нашей сигнатуры. Пусть на этот раз универсумом рассуждения будет множество действительных чисел, исключая число $$0$$:
Рассматриваемая нами формула является теперь утверждением о том, что для
любых двух чисел из нашего
Очевидно, что это утверждение истинно. Нетрудно привести примеры интерпретаций, при которых наша формула ложна. Следующие примеры показывают, что существуют формулы, тождественно истинные, то есть истинные при любой интерпретации, а также тождественно ложные.
Примеры. Пусть $$P$$ и $$Q$$ — одноместные
Если в формуле есть свободные переменные, то она получает конкретное истинностное значение при означивании этих переменных.
Формула называется выполнимой, если она истинна хотя бы при одной интерпретации.
Две формулы называются логически равносильными, если при любой интерпретации предикатных и функциональных символов и при любом означивании свободных переменных они имеют одно и то же истинностное значение.
Например, формулы
$$\eq*{ \begin{gathered} \forall x [P(x) \vee Q(x)],\\ [\forall x P(x) \vee \forall x Q(x)] \end{gathered} }$$не являются логически равносильными, а формулы
$$\eq*{ \begin{gathered} \forall x [P(x) \ Q(x)],\\ [\forall x P(x) \ \forall x Q(x)] \end{gathered} }$$логически равносильны.
Логическую
Заметим, что в этом выражении фигурирует не одна формула, а две, соединенные знаком логической равносильности.
Напомним кратко основную цепочку построений математической логики,
используемых в логическом программировании. Известно, что любое
предложение в логике предикатов логически равносильно предложению в
предваренной нормальной форме, то есть в такой форме, когда в начале
расположены все ее кванторы, за которыми расположена бескванторная ее
часть. Рассмотрим пример такой формулы$$\eq{
\forall x\, \exists z\, \forall y\, \exists u\, \forall v
[P(x, y) \ R(y, z) \to S(x, u, v) \ [S(y, u, v) \vee S(z, y, v)]],
}$$
где $$P, R, S$$ —
Известно, что по любому предложению $$A$$ в предваренной нормальной
форме можно построить так называемое сколемовское предложение $$B$$.
Для этого избавляются от кванторов существования следующим образом. Пусть
( $$z$$ — самое левое вхождение квантора существования
в рассматриваемую формулу и перед ним расположены $$k$$
Так, для формулы (1) соответствующая сколемовская формула будет иметь вид$$\forall x\, \forall y\, \forall v [[P(x, y) \ R(y, f(x)) \to \\ \to S(x, g(x, y), v)] \ [S(y, g(x, y), v) \vee S(g(x, y), y, v)]],$$ полученный из (1) заменой $$z$$ на $$f(x)$$, а $$u$$ на $$g(x, y)$$. Заметим, что если бы было $$k = 0$$, то переменная $$z$$ заменялась бы на новую константу. Процесс получения сколемовской формулы по заданной формуле $$A$$ называется сколемизацией.
Известно, что сколемовская формула $$B$$, соответствующая формуле $$A$$, может быть логически неравносильна формуле $$A$$, однако они либо обе выполнимы, либо обе невыполнимы (равносильность по выполнимости). Для иллюстрации этого факта рассмотрим простую формулу$$\eq*{ \forall x\, \exists y R(x, y), }$$ которая интуитивно выражает существование функции $$f$$, такой, что для любого элемента $$x$$ выполняется $$R(x, f(x))$$. При сколемизации она превращается в формулу$$\eq*{ \forall x R(x, f(x)). }$$
Равносильность по выполнимости формулы $$A$$ и соответствующей ей сколемовской формулы $$B$$ может быть использована следующим образом. Предположим, мы хотим доказать, что формула $$C$$ является логическим следствием формул $$A$$ и $$B$$. Это сводится к доказательству невыполнимости формулы$$\eq*{ [A \ B \ \neg C] }$$ или соответствующей ей сколемовской формулы, что технически осуществить оказывается проще.
Поскольку в сколемовской формуле используются только
Упомянутый выше
и
$$\eq*{ [A \vee D_1 \vee D_2 \vee \ldots \vee D_s] }$$в соответствии с правилом резолюции выводится формула
$$\eq*{ [B_1 \vee B_2 \vee \ldots \vee B_k \vee D_1 \vee D_2 \vee \ldots \vee D_s]. }$$Видно, что клаузальная форма хорошо приспособлена для применения правила резолюции. Детали этого применения в логике предикатов будут рассмотрены ниже.
Из математической логики известно, что не существует алгоритма, который по любому множеству $$H$$ формул-гипотез логики предикатов и еще одной формуле $$A$$ отвечал бы на вопрос, является ли $$A$$ логическим следствием множества $$H$$. Однако существует алгоритм, который в случае, когда $$A$$ логически следует из $$H$$, строит доказательство этого факта с использованием правила резолюции, в противном случае алгоритм может работать бесконечно.
Различные версии языка Пролог базируются на использовании так называемых
В Прологе принято формулы, аналогичные формуле (5), записывать в виде$$\eq{ R(x, y)\colon\!\!-P(x), Q(x, z), S(f(y)), }$$ меняя местами левую и правую части импликации и вместо знака конъюнкции ставя запятую.
Формулу (7) Пролог воспримет как указание на то, что для доказательства истинности $$R(x, y)$$ надо найти некоторое значение $$z$$ и доказать, что истинны $$P(x)$$, $$Q(x, z)$$, $$S(f(y))$$. Такие формулы принято называть правилами.
Если в
По заданной программе и запросу система Пролог определяет, является ли запрос логическим следствием фактов и правил программы. При этом если в запросе имеются свободные переменные, то в процессе поиска доказательства эти переменные конкретизируются, то есть принимают конкретные значения, и при успешном его завершении эти конкретизированные значения являются ответом к поставленной задаче. Если же доказательство не будет найдено, то система ответит "no".
Примеры формальных доказательств
Пример. Вывести из гипотез $$H_1$$, $$H_2$$, $$H_3$$ заключение $$C$$, где$$\eqa*{ H_1\colon \forall x [E(x) \ \neg P(x) \to \exists y[R(x, y) \ D(y)]],\\ H_2\colon \exists x [E(x) \ M(x) \ \forall y[R(x, y) \to M(y)]],\\ H_3\colon \forall x [M(x) \to \neg P(x)],\\ C\colon \exists x [M(x) \ D(x)]. }$$
Префиксная форма:$$\eqa*{ {\rm Pref}(H_1)\colon \forall x \,\exists y [E(x) \ \neg P(x) \to [R(x, y) \ D(y)]],\\ {\rm Pref}(H_2)\colon \exists x \,\forall y [E(x) \ M(x) \ [R(x, y) \to M(y)]],\\ {\rm Pref}(H_3)\colon \forall x [M(x) \to \neg P(x)],\\ {\rm Pref}(C)\colon \exists x [M(x) \ D(x)]. }$$
Сколемовская форма:$$\eqa*{ {\rm Sk}(H_1)\colon \forall x [E(x) \ \neg P(x) \to [R(x, f(x)) \ D(f(x))]],\\ {\rm Sk}(H_2)\colon \forall y [E(a) \ M(a) \ [R(a, y) \to M(y)]],\\ {\rm Sk}(H_3)\colon \forall x [M(x) \to \neg P(x)],\\ {\rm Sk}(\neg C)\colon \forall x [\neg M(x) \vee \neg D(x)]. }$$
Клаузальная форма (опускаем
Доказательство с использованием правила резолюции:
$$\eqa*{ 1.\ \neg E(x) \vee P(x) \vee R(x, f(x)) \t{— из гипотезы}\ H_1,\\ 2.\ \neg E(x) \vee P(x) \vee D(f(x)) \t{— из гипотезы}\ H_1,\\ 3.\ M(a), \t{— из гипотезы}\ H_2,\\ 4.\ E(a), \t{— из гипотезы}\ H_2,\\ 5.\ \neg R(a, y) \vee M(y), \t{— из гипотезы}\ H_2,\\ 6.\ \neg P(x) \vee \neg M(x), \t{— из гипотезы}\ H_3,\\ 7.\ \neg M(x) \vee \neg D(x), \t{— из заключения}\ C,\\ 8.\ P(a) \vee R(a, f(a)), \t{— из 1, 4 с помощью подстановки}\ (x/a),\\ 9.\ P(a) \vee D(f(a)), \t{— из 2, 4 с помощью подстановки}\ (x/a),\\ 10.\ \neg P(a), \t{— из 3, 6 с помощью подстановки}\ (x/a),\\ 11.\ D(f(a)), \t{— из 9, 10},\\ 12.\ \neg M(f (a)) \t{— из 7, 11 с помощью подстановки}\\ \q (x/f(a)),\\ 13.\ R(a, f(a)), \t{— из 8, 10},\\ 14.\ M(f(a)), \t{— из 5, 13 с помощью подстановки}\\ \q (y/f(a)),\\ 15.\ \square \t{— из 12, 14} }$$Пример.
Рассмотрим предикаты с интерпретацией:$$\eqa*{ F(x, y) \Leftrightarrow x\ \t{является отцом для}\ y,\\
S(x, y) \Leftrightarrow x, y\ \t{— дети одного отца},\\ M(x)
\Leftrightarrow x\ \t{— мужчина},\\ B(x, y) \Leftrightarrow x\ \t{брат
для}\ y.
}$$
В качестве аксиом рассмотрим формулы$$\eqa*{ A_1\colon \forall x\, \forall y [F(x, y) \to M(x)],\\
A_2\colon \forall x\, \forall y \, \forall w [F(x, y) \
F(x, w) \to S(y, w)],\\ A_3\colon \forall x\, \forall y [S(x, y) \ M(x)
\to B(x, y)].
}$$
Пусть из интерпретации известны факты$$\eqa*{ A_4\colon F(\t{'Иван'}, \t{'Харитон'}),\\ A_5\colon
F(\t{'Иван'}, \t{'Василий'}),\\ A_6\colon F(\t{'Василий'}, \t{'Елена'}).
}$$
Вопрос: "Есть ли брат у Харитона?" — на
Доказательство$$\eqa*{ 1.\ \neg F(x, y) \vee M(x) \t{— из формулы}\ A_1,\\ 2.\ \neg F(x, y) \vee \neg F(x, w) \vee S(y, w) \t{— из формулы}\ A_2,\\ 3.\ \neg S(x, y) \vee \neg M(x) \vee B(x, y) \t{— из формулы}\ A_3,\\ 4.\ F(\t{'Иван'}, \t{'Харитон'}) \t{— формула}\ A_4,\\ 5.\ F(\t{'Иван'}, \t{'Василий'}) \t{— формула}\ A_5,\\ 6.\ F(\t{'Василий'}, \t{'Елена'}) \t{— формула}\ A_6,\\ 7.\ \neg B(z, \t{'Харитон'}) \t{— отрицание запроса}\ A_7,\\ 8.\ \neg F(\t{'Иван'}, w) \vee S(\t{'Василий'}, w) \t{— из 2, 5, подстановка}\\ \q (x/\t{'Иван'}, y/\t{'Василий'}),\\ 9.\ S(\t{'Василий'}, \t{'Харитон'}) \t{— из 4, 8, подстановка}\\ \q (w/\t{'Харитон'}),\\ 10.\ M(\t{'Василий'}) \t{— из 6, 1, подстановка}\\ \q (x/\t{'Василий'}, y/\t{'Елена'}),\\ 11.\ \neg S(\t{'Василий'}, y) \vee B(\t{'Василий'}, y) \t{— из 10, 3, подстановка}\\ \q (x/\t{'Василий'}),\\ 12.\ B(\t{'Василий'}, \t{'Харитон'}) \t{— из 9, 11, подстановка}\\ \q (y/\t{'Харитон'}),\\ 13.\ \square \t{— из 12, 7, подстановка}\\ (z/\t{'Василий'}) }$$
Фактически мы не только получили ответ на наш запрос, но и подтвердили его конкретным значением переменной $$z$$. Приведенный вывод можно модифицировать, если ввести предикат $${\rm answer}(z)$$ и вместо цели
$$\eq*{ \t{"}7.\ \neg B(z, \t{'Харитон'})\t{"}\vspace{-1mm} }$$поставить новую цель
$$\eqa*{ 7'.\ \neg B(z, \t{'Харитон'}) \vee {\rm answer}(z).\ \t{Тогда шаг 13 превратится в 13'}.\\ 13'.\ {\rm answer}(\t{'Василий'})\t{ — из 12, 7', подстановка}\ (z/\t{'Василий'}). }$$Упражнение
Рассмотрите вывод, в котором первые 7 формул являются посылками. Для остальных формул выпишите пояснения к применению правила резолюции.$$\eqa*{ 1.\ \neg A(z),\\ 2.\ A(x) \vee \neg P(x) \vee \neg Q(x, y),\\ 3.\ A(x) \vee \neg R(y) \vee \neg Q(y, x),\\ 4.\ P(a),\\ 5.\ Q(b, c),\\ 6.\ R(a),\\ 7.\ R(b),\\ 8.\ \neg P(z) \vee \neg Q(z, y),\\ 9.\ \neg Q(a, y),\\ 10.\ \neg R(y) \vee \neg Q(y, z),\\ 11.\ \neg Q(a, z),\\ 12.\ \neg Q(b, z),\\ 13.\ \square }$$
Основным элементом языка Пролог является
Для некоторых специальных
Среди термов ввиду особой важности выделяются термы для представления списков. Канонически список представляется двухместным термом, первым аргументом которого является головной элемент списка, а вторым — его хвост, то есть список, полученный из исходного удалением головного элемента. Функтором в такой записи часто используется символ точка. Альтернативным представлением списка является выражение вида $$[t_1, t_2\dts t_k]$$ или $$[t \,|\, L]$$, где $$t$$ — головной элемент, а $$L$$ — хвост списка. Допустимо также выражение вида $$[t_1, t_2\dts t_k \,|\, L]$$.
Важным инструментом в языке Пролог является унификация термов с помощью
подстановок. Такую унификацию мы применяли выше в примерах на
доказательство
Через $$E\ta$$ обозначим результат подстановки термов $$t_1, t_2\dts t_n$$ в выражение $$E$$ вместо переменных $$x_1, x_2\dts x_n$$.
Пусть $$\pi = (y_1/u_1, y_2/u_2\dts y_m/u_m)$$ — еще одна подстановка. Композиция $$\ta \pi$$ двух подстановок $$\ta$$ и $$\pi$$ определяется следующим образом:$$\eq*{ E(\ta \pi) = (E \ta)\pi. }$$ Подстановка $$\ta \pi$$ может быть вычислена следующим образом. Составим из подстановок $$\ta$$ и $$\pi$$ последовательность$$\eq*{ (x_1/t_1 \pi, x_2/t_2 \pi \dts x_n/t_n\pi, y_1/u_1, y_2/u_2\dts y_m/u_m) }$$ и проведем следующие две операции:
Пример. Пусть $$\ta = (x/f(y), y/z),\ \pi = (x/a, y/b, z/y)$$. Рассмотрим последовательность$$\eq*{ (x/f(y) \pi, y/z \pi, x/a, y/b, z/y) = (x/f(b), y/y, x/a, y/b, z/y) }$$ и по первому правилу вычеркиваем пары $$x/a$$ и $$y/b$$, затем по второму правилу — пару $$y/y$$. В результате получим$$\eq*{ \ta \pi = (x/f(b), z/y). }$$
Подстановка $$\ta$$ называется
Пример.
Для термов $$P(a, y)$$, $$P(x, f(b))$$
Пример.
Для термов $$P(a, x, f (g(y)))$$ и $$P(z, f(z), f(u))$$
наиболее общим
Теоретические исследования математических моделей вычислений играют важную роль в формировании технологии использования компьютерной техники. Каждая такая модель вносит свой вклад в реальную технологию. Развитие технологии в обход теоретических исследований часто приводит к неуклюжим, трудным для восприятия и, в конечном счете, малопроизводительным видам деятельности.
Исследования универсальных методов доказательства в рамках логики предикатов дают повод для разработки на их основе новых языков программирования. Опыты, проведенные в 70-х годах прошлого века, показали перспективность использования этих методов в реальных технологиях автоматической переработки информации.
В настоящее время в рамках так называемого логического программирования
ведутся исследования по использованию различных стратегий поиска
доказательств утверждений, сформулированных в
Формулы
"
Замечания
Основными конструкциями
Правила образования термов
Замечания
Правила образования формул
Замечания
Пример.
Пусть нелогическая сигнатура состоит из трех символов $$\{E, M, S\}$$, где $$E$$ — двухместный предикат, $$S$$ —
Рассмотрим следующую интерпретацию нашей сигнатуры. Пусть универсумом рассуждения будет множество точек плоскости, это означает, что значениями переменных являются точки. Далее, пусть
При такой интерпретации нелогических символов $$M, S, E$$, приведенная выше формула есть утверждение о том, что середина отрезка $$(z, y)$$ симметрична середине отрезка с концами, симметричными точкам $$z, y$$.
Очевидно, что это утверждение истинно.
(рис 14.1) Рассмотрим еще одну интерпретацию нашей сигнатуры. Пусть на этот раз универсумом рассуждения будет множество действительных чисел, исключая число $$0$$:
Рассматриваемая нами формула является теперь утверждением о том, что для
любых двух чисел из нашего
Очевидно, что это утверждение истинно. Нетрудно привести примеры интерпретаций, при которых наша формула ложна. Следующие примеры показывают, что существуют формулы, тождественно истинные, то есть истинные при любой интерпретации, а также тождественно ложные.
Примеры. Пусть $$P$$ и $$Q$$ — одноместные
Если в формуле есть свободные переменные, то она получает конкретное истинностное значение при означивании этих переменных.
Формула называется выполнимой, если она истинна хотя бы при одной интерпретации.
Две формулы называются логически равносильными, если при любой интерпретации предикатных и функциональных символов и при любом означивании свободных переменных они имеют одно и то же истинностное значение.
Например, формулы
$$\eq*{ \begin{gathered} \forall x [P(x) \vee Q(x)],\\ [\forall x P(x) \vee \forall x Q(x)] \end{gathered} }$$не являются логически равносильными, а формулы
$$\eq*{ \begin{gathered} \forall x [P(x) \ Q(x)],\\ [\forall x P(x) \ \forall x Q(x)] \end{gathered} }$$логически равносильны.
Логическую
Заметим, что в этом выражении фигурирует не одна формула, а две, соединенные знаком логической равносильности.
Напомним кратко основную цепочку построений математической логики,
используемых в логическом программировании. Известно, что любое
предложение в логике предикатов логически равносильно предложению в
предваренной нормальной форме, то есть в такой форме, когда в начале
расположены все ее кванторы, за которыми расположена бескванторная ее
часть. Рассмотрим пример такой формулы$$\eq{
\forall x\, \exists z\, \forall y\, \exists u\, \forall v
[P(x, y) \ R(y, z) \to S(x, u, v) \ [S(y, u, v) \vee S(z, y, v)]],
}$$
где $$P, R, S$$ —
Известно, что по любому предложению $$A$$ в предваренной нормальной
форме можно построить так называемое сколемовское предложение $$B$$.
Для этого избавляются от кванторов существования следующим образом. Пусть
( $$z$$ — самое левое вхождение квантора существования
в рассматриваемую формулу и перед ним расположены $$k$$
Так, для формулы (1) соответствующая сколемовская формула будет иметь вид$$\forall x\, \forall y\, \forall v [[P(x, y) \ R(y, f(x)) \to \\ \to S(x, g(x, y), v)] \ [S(y, g(x, y), v) \vee S(g(x, y), y, v)]],$$ полученный из (1) заменой $$z$$ на $$f(x)$$, а $$u$$ на $$g(x, y)$$. Заметим, что если бы было $$k = 0$$, то переменная $$z$$ заменялась бы на новую константу. Процесс получения сколемовской формулы по заданной формуле $$A$$ называется сколемизацией.
Известно, что сколемовская формула $$B$$, соответствующая формуле $$A$$, может быть логически неравносильна формуле $$A$$, однако они либо обе выполнимы, либо обе невыполнимы (равносильность по выполнимости). Для иллюстрации этого факта рассмотрим простую формулу$$\eq*{ \forall x\, \exists y R(x, y), }$$ которая интуитивно выражает существование функции $$f$$, такой, что для любого элемента $$x$$ выполняется $$R(x, f(x))$$. При сколемизации она превращается в формулу$$\eq*{ \forall x R(x, f(x)). }$$
Равносильность по выполнимости формулы $$A$$ и соответствующей ей сколемовской формулы $$B$$ может быть использована следующим образом. Предположим, мы хотим доказать, что формула $$C$$ является логическим следствием формул $$A$$ и $$B$$. Это сводится к доказательству невыполнимости формулы$$\eq*{ [A \ B \ \neg C] }$$ или соответствующей ей сколемовской формулы, что технически осуществить оказывается проще.
Поскольку в сколемовской формуле используются только
Упомянутый выше
и
$$\eq*{ [A \vee D_1 \vee D_2 \vee \ldots \vee D_s] }$$в соответствии с правилом резолюции выводится формула
$$\eq*{ [B_1 \vee B_2 \vee \ldots \vee B_k \vee D_1 \vee D_2 \vee \ldots \vee D_s]. }$$Видно, что клаузальная форма хорошо приспособлена для применения правила резолюции. Детали этого применения в логике предикатов будут рассмотрены ниже.
Из математической логики известно, что не существует алгоритма, который по любому множеству $$H$$ формул-гипотез логики предикатов и еще одной формуле $$A$$ отвечал бы на вопрос, является ли $$A$$ логическим следствием множества $$H$$. Однако существует алгоритм, который в случае, когда $$A$$ логически следует из $$H$$, строит доказательство этого факта с использованием правила резолюции, в противном случае алгоритм может работать бесконечно.
Различные версии языка Пролог базируются на использовании так называемых
В Прологе принято формулы, аналогичные формуле (5), записывать в виде$$\eq{ R(x, y)\colon\!\!-P(x), Q(x, z), S(f(y)), }$$ меняя местами левую и правую части импликации и вместо знака конъюнкции ставя запятую.
Формулу (7) Пролог воспримет как указание на то, что для доказательства истинности $$R(x, y)$$ надо найти некоторое значение $$z$$ и доказать, что истинны $$P(x)$$, $$Q(x, z)$$, $$S(f(y))$$. Такие формулы принято называть правилами.
Если в
По заданной программе и запросу система Пролог определяет, является ли запрос логическим следствием фактов и правил программы. При этом если в запросе имеются свободные переменные, то в процессе поиска доказательства эти переменные конкретизируются, то есть принимают конкретные значения, и при успешном его завершении эти конкретизированные значения являются ответом к поставленной задаче. Если же доказательство не будет найдено, то система ответит "no".
Примеры формальных доказательств
Пример. Вывести из гипотез $$H_1$$, $$H_2$$, $$H_3$$ заключение $$C$$, где$$\eqa*{ H_1\colon \forall x [E(x) \ \neg P(x) \to \exists y[R(x, y) \ D(y)]],\\ H_2\colon \exists x [E(x) \ M(x) \ \forall y[R(x, y) \to M(y)]],\\ H_3\colon \forall x [M(x) \to \neg P(x)],\\ C\colon \exists x [M(x) \ D(x)]. }$$
Префиксная форма:$$\eqa*{ {\rm Pref}(H_1)\colon \forall x \,\exists y [E(x) \ \neg P(x) \to [R(x, y) \ D(y)]],\\ {\rm Pref}(H_2)\colon \exists x \,\forall y [E(x) \ M(x) \ [R(x, y) \to M(y)]],\\ {\rm Pref}(H_3)\colon \forall x [M(x) \to \neg P(x)],\\ {\rm Pref}(C)\colon \exists x [M(x) \ D(x)]. }$$
Сколемовская форма:$$\eqa*{ {\rm Sk}(H_1)\colon \forall x [E(x) \ \neg P(x) \to [R(x, f(x)) \ D(f(x))]],\\ {\rm Sk}(H_2)\colon \forall y [E(a) \ M(a) \ [R(a, y) \to M(y)]],\\ {\rm Sk}(H_3)\colon \forall x [M(x) \to \neg P(x)],\\ {\rm Sk}(\neg C)\colon \forall x [\neg M(x) \vee \neg D(x)]. }$$
Клаузальная форма (опускаем
Доказательство с использованием правила резолюции:
$$\eqa*{ 1.\ \neg E(x) \vee P(x) \vee R(x, f(x)) \t{— из гипотезы}\ H_1,\\ 2.\ \neg E(x) \vee P(x) \vee D(f(x)) \t{— из гипотезы}\ H_1,\\ 3.\ M(a), \t{— из гипотезы}\ H_2,\\ 4.\ E(a), \t{— из гипотезы}\ H_2,\\ 5.\ \neg R(a, y) \vee M(y), \t{— из гипотезы}\ H_2,\\ 6.\ \neg P(x) \vee \neg M(x), \t{— из гипотезы}\ H_3,\\ 7.\ \neg M(x) \vee \neg D(x), \t{— из заключения}\ C,\\ 8.\ P(a) \vee R(a, f(a)), \t{— из 1, 4 с помощью подстановки}\ (x/a),\\ 9.\ P(a) \vee D(f(a)), \t{— из 2, 4 с помощью подстановки}\ (x/a),\\ 10.\ \neg P(a), \t{— из 3, 6 с помощью подстановки}\ (x/a),\\ 11.\ D(f(a)), \t{— из 9, 10},\\ 12.\ \neg M(f (a)) \t{— из 7, 11 с помощью подстановки}\\ \q (x/f(a)),\\ 13.\ R(a, f(a)), \t{— из 8, 10},\\ 14.\ M(f(a)), \t{— из 5, 13 с помощью подстановки}\\ \q (y/f(a)),\\ 15.\ \square \t{— из 12, 14} }$$Пример.
Рассмотрим предикаты с интерпретацией:$$\eqa*{ F(x, y) \Leftrightarrow x\ \t{является отцом для}\ y,\\
S(x, y) \Leftrightarrow x, y\ \t{— дети одного отца},\\ M(x)
\Leftrightarrow x\ \t{— мужчина},\\ B(x, y) \Leftrightarrow x\ \t{брат
для}\ y.
}$$
В качестве аксиом рассмотрим формулы$$\eqa*{ A_1\colon \forall x\, \forall y [F(x, y) \to M(x)],\\
A_2\colon \forall x\, \forall y \, \forall w [F(x, y) \
F(x, w) \to S(y, w)],\\ A_3\colon \forall x\, \forall y [S(x, y) \ M(x)
\to B(x, y)].
}$$
Пусть из интерпретации известны факты$$\eqa*{ A_4\colon F(\t{'Иван'}, \t{'Харитон'}),\\ A_5\colon
F(\t{'Иван'}, \t{'Василий'}),\\ A_6\colon F(\t{'Василий'}, \t{'Елена'}).
}$$
Вопрос: "Есть ли брат у Харитона?" — на
Доказательство$$\eqa*{ 1.\ \neg F(x, y) \vee M(x) \t{— из формулы}\ A_1,\\ 2.\ \neg F(x, y) \vee \neg F(x, w) \vee S(y, w) \t{— из формулы}\ A_2,\\ 3.\ \neg S(x, y) \vee \neg M(x) \vee B(x, y) \t{— из формулы}\ A_3,\\ 4.\ F(\t{'Иван'}, \t{'Харитон'}) \t{— формула}\ A_4,\\ 5.\ F(\t{'Иван'}, \t{'Василий'}) \t{— формула}\ A_5,\\ 6.\ F(\t{'Василий'}, \t{'Елена'}) \t{— формула}\ A_6,\\ 7.\ \neg B(z, \t{'Харитон'}) \t{— отрицание запроса}\ A_7,\\ 8.\ \neg F(\t{'Иван'}, w) \vee S(\t{'Василий'}, w) \t{— из 2, 5, подстановка}\\ \q (x/\t{'Иван'}, y/\t{'Василий'}),\\ 9.\ S(\t{'Василий'}, \t{'Харитон'}) \t{— из 4, 8, подстановка}\\ \q (w/\t{'Харитон'}),\\ 10.\ M(\t{'Василий'}) \t{— из 6, 1, подстановка}\\ \q (x/\t{'Василий'}, y/\t{'Елена'}),\\ 11.\ \neg S(\t{'Василий'}, y) \vee B(\t{'Василий'}, y) \t{— из 10, 3, подстановка}\\ \q (x/\t{'Василий'}),\\ 12.\ B(\t{'Василий'}, \t{'Харитон'}) \t{— из 9, 11, подстановка}\\ \q (y/\t{'Харитон'}),\\ 13.\ \square \t{— из 12, 7, подстановка}\\ (z/\t{'Василий'}) }$$
Фактически мы не только получили ответ на наш запрос, но и подтвердили его конкретным значением переменной $$z$$. Приведенный вывод можно модифицировать, если ввести предикат $${\rm answer}(z)$$ и вместо цели
$$\eq*{ \t{"}7.\ \neg B(z, \t{'Харитон'})\t{"}\vspace{-1mm} }$$поставить новую цель
$$\eqa*{ 7'.\ \neg B(z, \t{'Харитон'}) \vee {\rm answer}(z).\ \t{Тогда шаг 13 превратится в 13'}.\\ 13'.\ {\rm answer}(\t{'Василий'})\t{ — из 12, 7', подстановка}\ (z/\t{'Василий'}). }$$Упражнение
Рассмотрите вывод, в котором первые 7 формул являются посылками. Для остальных формул выпишите пояснения к применению правила резолюции.$$\eqa*{ 1.\ \neg A(z),\\ 2.\ A(x) \vee \neg P(x) \vee \neg Q(x, y),\\ 3.\ A(x) \vee \neg R(y) \vee \neg Q(y, x),\\ 4.\ P(a),\\ 5.\ Q(b, c),\\ 6.\ R(a),\\ 7.\ R(b),\\ 8.\ \neg P(z) \vee \neg Q(z, y),\\ 9.\ \neg Q(a, y),\\ 10.\ \neg R(y) \vee \neg Q(y, z),\\ 11.\ \neg Q(a, z),\\ 12.\ \neg Q(b, z),\\ 13.\ \square }$$
Основным элементом языка Пролог является
Для некоторых специальных
Среди термов ввиду особой важности выделяются термы для представления списков. Канонически список представляется двухместным термом, первым аргументом которого является головной элемент списка, а вторым — его хвост, то есть список, полученный из исходного удалением головного элемента. Функтором в такой записи часто используется символ точка. Альтернативным представлением списка является выражение вида $$[t_1, t_2\dts t_k]$$ или $$[t \,|\, L]$$, где $$t$$ — головной элемент, а $$L$$ — хвост списка. Допустимо также выражение вида $$[t_1, t_2\dts t_k \,|\, L]$$.
Важным инструментом в языке Пролог является унификация термов с помощью
подстановок. Такую унификацию мы применяли выше в примерах на
доказательство
Через $$E\ta$$ обозначим результат подстановки термов $$t_1, t_2\dts t_n$$ в выражение $$E$$ вместо переменных $$x_1, x_2\dts x_n$$.
Пусть $$\pi = (y_1/u_1, y_2/u_2\dts y_m/u_m)$$ — еще одна подстановка. Композиция $$\ta \pi$$ двух подстановок $$\ta$$ и $$\pi$$ определяется следующим образом:$$\eq*{ E(\ta \pi) = (E \ta)\pi. }$$ Подстановка $$\ta \pi$$ может быть вычислена следующим образом. Составим из подстановок $$\ta$$ и $$\pi$$ последовательность$$\eq*{ (x_1/t_1 \pi, x_2/t_2 \pi \dts x_n/t_n\pi, y_1/u_1, y_2/u_2\dts y_m/u_m) }$$ и проведем следующие две операции:
Пример. Пусть $$\ta = (x/f(y), y/z),\ \pi = (x/a, y/b, z/y)$$. Рассмотрим последовательность$$\eq*{ (x/f(y) \pi, y/z \pi, x/a, y/b, z/y) = (x/f(b), y/y, x/a, y/b, z/y) }$$ и по первому правилу вычеркиваем пары $$x/a$$ и $$y/b$$, затем по второму правилу — пару $$y/y$$. В результате получим$$\eq*{ \ta \pi = (x/f(b), z/y). }$$
Подстановка $$\ta$$ называется
Пример.
Для термов $$P(a, y)$$, $$P(x, f(b))$$
Пример.
Для термов $$P(a, x, f (g(y)))$$ и $$P(z, f(z), f(u))$$
наиболее общим
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.