Опубликован: 24.04.2007 | Доступ: свободный | Студентов: 721 / 35 | Оценка: 4.60 / 4.30 | Длительность: 25:56:00
Специальности: Программист
Лекция 11:

Теорема Эрбрана

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

Сколемовские функции

В этом разделе мы в разных формах используем ровно одну идею: утверждение

\forall x \exists y \, A(x,y)
равносильно существованию функции, которая по любому x дает такой y, что A(x,y). Это утверждение нельзя записать в виде эквивалентности
\forall x\exists y \, A(x,y) \Leftrightarrow \exists f \forall x\, A(x,f(x)),
поскольку в нашем языке нет квантора по функциям и \exists f мы писать не имеем права. (Языки, содержащие кванторы по множествам и функциям, называются языками второго порядка и мы их не рассматриваем.)

Тем не менее это утверждение можно сформулировать и в наших терминах. Пусть, например, имеется формула \varphi с двумя параметрами x и y. Тогда замкнутая формула \forall x \exists y\,\varphi выполнима тогда и только тогда, когда выполнима формула \forall x \varphi(f(x)/y), где f — новый одноместный функциональный символ. (Аккуратный читатель поправит: надо еще требовать, чтобы подстановка f(x) вместо y была корректна. Мы уже знаем, что переменные можно переименовывать, поэтому будем легкомысленно считать, что все необходимые переименования уже сделаны.)

Аналогичное преобразование выполнимо и для произвольных предваренных формул. Например, формула

\forall x \forall y \exists z \forall u \exists v\,\varphi (x,y,z,u,v)
выполнима тогда и только тогда, когда выполнима формула
\forall x \forall y \forall u\,\varphi (x,y,f(x,y),u,g(x,y,u))
(здесь \varphi(x,y,z,u,v) — формула, не имеющая параметров, кроме x,y,z,u,v, запись \varphi(x,y,f(x,y),u,g(x,y,u)) обозначает результат соответствующих подстановок, которые мы предполагаем корректными, а f и g — функциональные символы, не встречающиеся в формуле \varphi ).

Сходное преобразование имеют в виду преподаватели математического анализа, которые иногда записывают определение предела ( \forall \varepsilon \exists\delta\ldots ) в несколько странной для логика форме \forall \varepsilon \exists
\delta=\delta(\varepsilon)\ldots — имеется в виду, что если для каждого \varepsilon найдется \delta, то это самое \delta представляет собой функцию от \varepsilon.

Отметим, что это рассуждение использует аксиому выбора, когда из различных возможных (для данного \varepsilon ) значений \delta мы выбираем какое-то одно и объявляем его значением функции \varepsilon(\delta).

109. Казалось бы, выбор v в приведенном выше примере зависит от x,y,z,u, так что следовало бы написать \varphi(x,y,f(x,y),u,g(x,y,f(x,y),u)) — но мы так не делаем. Почему это допустимо?

Используя описанное преобразование, мы приходим к такой теореме:

Теорема 56. Для всякой замкнутой формулы \tau сигнатуры \sigma можно указать формулу \tau' класса \Pi_1 сигнатуры \sigma с добавленными функциональными символами, которая выполнима или невыполнима одновременно с формулой \tau. При этом преобразование \tau\mapsto\tau' эффективно (выполняется некоторым алгоритмом).

Приведя \tau к предваренной нормальной форме, получим доказуемо эквивалентную формулу (выполнимую или невыполнимую одновременно с \tau ). После этого применяем описанное выше преобразование.

Формула \tau невыполнима тогда и только тогда, когда ее отрицание общезначимо. Поэтому наши рассуждения показывают, что, скажем, формула \lnot \forall x \exists y\,\psi(x,y) общезначима одновременно с формулой \lnot \forall x
\,\psi(x,f(x)). Внося отрицание внутрь и заменяя \lnot\psi на \varphi, получаем такое утверждение: формулы

\exists x \forall y\,\varphi(x,y)
        \quad \text{и}\quad
\exists x \,\varphi(x,f(x))
одновременно общезначимы. (Это утверждение чуть менее наглядно, чем двойственное ему утверждение о выполнимости.) В общем виде двойственное к теореме 56 утверждение выглядит так:

Теорема 57. Для всякой замкнутой формулы \tau сигнатуры \sigma можно указать формулу \tau' класса \Sigma_1 сигнатуры \sigma с добавленными функциональными символами, которая общезначима или необщезначима одновременно с формулой \tau. При этом преобразование \tau\mapsto\tau' эффективно (выполняется некоторым алгоритмом).

Заметим, что к формуле \tau' можно применить теорему Эрбрана: она общезначима тогда и только тогда, когда дизъюнкция нескольких подстановок является тавтологией.

Теорема о полноте позволяет заменить в этой формулировке общезначимость на выводимость: формулы \tau и \tau' одновременно выводимы. После этого естественно искать явный метод, который преобразует вывод формулы \tau в вывод формулы \tau' и обратно. Такой метод действительно существует, но для этого требуется более детальный анализ структуры выводов, при котором удобно пользоваться исчислениями генценовского типа.

Идея использования функций вместо групп кванторов \forall\exists восходит к Эрбрану и Сколему. Такие функции иногда называют "эрбрановскими" или "сколемовскими", а их добавление — "сколемизацией". Есть также термин "сколемовская нормальная форма", но здесь добавляются не функциональные символы, а предикатные, и получается формула не класса \Sigma_1, как в теореме 57, а класса \Sigma_2.

Теорема 57 (о сколемовской нормальной форме). Для всякой замкнутой формулы \tau сигнатуры \sigma можно указать формулу \tau' класса \Sigma_2 сигнатуры \sigma с добавленными предикатными символами, которая общезначима или необщезначима одновременно с формулой \tau. При этом преобразование \tau\mapsto\tau' эффективно (выполняется некоторым алгоритмом).

Как и раньше, нам будет удобнее говорить о выполнимости и доказывать, что для всякой формулы \tau найдется одновременно с ней выполнимая формула \tau' из класса \Pi_2. Построение такой формулы мы объясним на примере. Пусть исходная формула имеет вид

\forall x \forall y \exists z \forall u \exists v\,\varphi(x,y,z,u,v).
Мы теперь не можем ввести функции f и g, как это делалось выше. Поэтому мы введем предикаты F и G, заменяющие графики этих функций, и напишем формулу
\begin{align*}
\forall x\forall y \exists z&\,\, F(x,y,z)
        \land \\
\forall x \forall y \forall u \exists v&\,\, G(x,y,u,v)
        \land\\
\forall x \forall y \forall z \forall u \forall v&\,
        (F(x,y,z)\land G(x,y,u,v) \to \varphi(x,y,z,u,v))
        \end{align*}
Если исходная формула выполнима, то новая тоже выполнима: достаточно взять в качестве F и G графики сколемовских функций. Напротив, если новая формула выполнима, то выполнима и старая (более того, из новой формулы следует старая): надо взять z и v согласно первым двум строкам и заметить, что согласно третьей строке они подойдут.

Такая конструкция применима к любой предваренной форме и дает конъюнкцию \Pi_2 -формул (последняя из которых будет даже и \Pi_1 -формулой). А мы знаем, что такая конъюнкция эквивалентна \Pi_2 -формуле.

110. Дайте синтаксическое доказательство теоремы о сколемовской нормальной форме (показав, что из выводимости формулы следует выводимость ее сколемовской нормальной формы и наоборот). (Указание: это проще, чем для формул с функциональными символами, и не требуется использовать генценовское исчисление.)

Утверждения этого раздела сводят вопрос о выводимости произвольной формулы исчисления предикатов к выводимости \Sigma_1 -формулы (с функциональными символами). Если мы запрещаем функциональные символы, то вопрос о выводимости произвольной формулы сводится к выводимости \Sigma_2 - формулы.

Известно (теорема Черча, доказательство можно прочесть в [5]), что вопрос о выводимости произвольных формул языка первого порядка неразрешим: не существует алгоритма, который бы по произвольной замкнутой формуле определял бы, выводима она или нет. Результаты этого раздела показывают, что уже для формул класса \Sigma_1 (с функциональными символами) или \Sigma_2 (без них) такого алгоритма не существует, поскольку из него можно было бы получить и общий алгоритм. (В предыдущем разделе мы видели, что для формул класса \Sigma_1 без функциональных символов такой алгоритм существует.)

< Лекция 10 || Лекция 11: 123 || Лекция 12 >