Перейти к содержимому
Topos Uranos

Краткое содержание

Семантика обещала методы решения вопроса о невыполнимости, не требующие перебора таблицы истинности; этот урок даёт главный из них. Множество формул записывается как множество дизъюнктов, каждый из которых есть конечное множество литералов, с помощью конъюнктивной нормальной формы или, чтобы избежать её экспоненциального роста, с помощью определяющих дизъюнктов с новыми переменными, которые сохраняют выполнимость. На дизъюнкты действует одно-единственное правило, правило резолюции: из дизъюнкта, содержащего литерал, и другого, содержащего противоположный ему литерал, выводится объединение обоих без этой пары. Опровержение есть порождение, которое приходит к пустому дизъюнкту. Доказываются корректность (если опровержение есть, множество невыполнимо) индукцией по длине порождения и полнота опровержения (если конечное множество невыполнимо, опровержение есть) индукцией по числу переменных, которые исключаются одна за другой; с помощью теоремы компактности полнота распространяется на бесконечные множества. Отсюда получаются метод решения вопроса о следовании, который сравнивается с таблицами, и изложение проблемы выполнимости с двумя случаями, решаемыми быстро: дизъюнктами Хорна и дизъюнктами из двух литералов.

Цели обучения

  1. Представлять множество формул как множество дизъюнктов с помощью конъюнктивной нормальной формы или определяющих дизъюнктов с новыми переменными и обосновывать, что такое представление сохраняет выполнимость и следование.
  2. Строить опровержения методом резолюций и решать с их помощью вопросы о следовании и невыполнимости, не допуская типичных ошибок, таких как устранение двух контрарных пар за один шаг.
  3. Доказывать корректность резолюции индукцией по длине порождений и её полноту опровержения исключением переменных и распространять эту полноту на бесконечные множества с помощью теоремы компактности.
  4. Объяснять проблему выполнимости, её известную цену и случаи, решаемые быстро (дизъюнкты Хорна и дизъюнкты из двух литералов), и сравнивать резолюцию с таблицами истинности.

Урок о семантике логики высказываний показал, что общезначимость и выполнимость разрешимы с помощью таблицы истинности ценой, которая удваивается с каждой переменной, и обещал методы, не требующие её перебора. Урок о семантическом следовании и эквивалентности свёл всякое следование к невыполнимости: Γ⊨φ\Gamma \models \varphi тогда и только тогда, когда Γ∪{¬φ}\Gamma \cup \{\neg\varphi\} невыполнимо. Уроки о нормальных формах и об их алгоритме дали всякой формуле конъюнктивную форму, общезначимость которой видна с первого взгляда, а выполнимость не видна. Если это так, недостаёт процедуры, которая решала бы вопрос о невыполнимости конъюнкции дизъюнктов, действуя на самих дизъюнктах. Такая процедура есть резолюция, предложенная Джоном Аланом Робинсоном в 1965 году на основе идей Мартина Дэвиса и Хилари Патнэма (1960); она составляет ядро программ, которые сегодня решают вопрос о выполнимости формул с миллионами переменных. В отличие от системы раздела о выводе, отношения которой с семантикой изучают уроки о корректности и полноте и о теореме компактности, резолюция не выводит заключений: она опровергает множества. Этот урок доказывает, что она делает это корректно и полно.

Как и в предыдущих уроках, pp, qq, rr, ss и tt обозначают переменные от v1v_1 до v5v_5; буква vv без индекса, а также ww обозначают оценки; и V(φ)V(\varphi) есть множество переменных формулы φ\varphi.

Дизъюнкты и множества дизъюнктов

Напомним из урока о нормальных формах, что литерал есть переменная или отрицание переменной и что противоположный литералу ℓ\ell литерал, записываемый ℓ∗\ell^{*}, есть литерал той же переменной с другим знаком; два противоположных литерала образуют контрарную пару. По лемме об отрицании литерала v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) для всякой оценки vv. Там дизъюнкт был дизъюнкцией литералов; здесь удобно забыть порядок и повторения, которые не меняют значения, и оставить только множество.

Дизъюнкт есть конечное множество литералов. Дизъюнкт без литералов называется пустым дизъюнктом и обозначается □\Box. Оценка vv выполняет дизъюнкт CC, что записывается v⊨Cv \models C, если некоторый литерал из CC принимает значение 11 при vv; в противном случае vv его опровергает. Дизъюнкт из одного литерала называется единичным. Переменные дизъюнкта образуют множество V(C)V(C); переменные множества SS дизъюнктов образуют множество V(S)V(S), объединение предыдущих. Оценка выполняет множество SS дизъюнктов, v⊨Sv \models S, если она выполняет каждый его дизъюнкт; SS выполнимо, если его выполняет некоторая оценка, и невыполнимо в противном случае. Наконец, если SS есть множество дизъюнктов, а CC есть дизъюнкт, то S⊨CS \models C означает, что всякая оценка, выполняющая SS, выполняет CC.

v⊨C  ⇔  (∃ℓ∈C)  v(ℓ)=1,v⊨S  ⇔  (∀C∈S)  v⊨Cv \models C \;\Leftrightarrow\; (\exists \ell \in C)\; v(\ell) = 1, \qquad v \models S \;\Leftrightarrow\; (\forall C \in S)\; v \models C

Из определения следуют два крайних случая, которые стоит зафиксировать. Пустой дизъюнкт не имеет литералов; поэтому ни один его литерал не принимает значения 11, и ни одна оценка его не выполняет: □\Box невыполним, и всякое множество, которое его содержит, тоже. Пустое множество дизъюнктов, напротив, не имеет дизъюнктов, которые нужно выполнить, и всякая оценка его выполняет. Их не следует путать: {□}\{\Box\} невыполнимо, а ∅\emptyset выполняется всеми оценками.

ЛеммаДизъюнкт и его дизъюнкция

Пусть C={ℓ1,…,ℓk}C = \{\ell_1, \ldots, \ell_k\} есть непустой дизъюнкт, литералы которого записаны в любом порядке и без повторений. Для всякой оценки vv имеем v⊨Cv \models C тогда и только тогда, когда v(⋁j=1kℓj)=1v\left( \bigvee_{j=1}^{k} \ell_j \right) = 1. В частности, все дизъюнкции литералов из CC, в любом порядке и с повторениями, эквивалентны между собой. Кроме того, CC выполняется всякой оценкой тогда и только тогда, когда содержит контрарную пару.

Доказательство

  1. v(⋁j=1kℓj)=1  ⇔  (∃j≤k)  v(ℓj)=1v\left( \bigvee_{j=1}^{k} \ell_j \right) = 1 \;\Leftrightarrow\; (\exists j \leq k)\; v(\ell_j) = 1

    По лемме о значении дизъюнкций nn формул, доказанной в уроке об обобщённых законах де Моргана и дистрибутивности, дизъюнкция принимает значение 11 тогда и только тогда, когда некоторый её член принимает значение 11.

  2. v(⋁j=1kℓj)=1  ⇔  v⊨Cv\left( \bigvee_{j=1}^{k} \ell_j \right) = 1 \;\Leftrightarrow\; \resaltar{v \models C}

    То, что некоторый ℓj\ell_j принимает значение 11, означает, что некоторый литерал из CC принимает значение 11, то есть что vv выполняет CC. Условие не зависит ни от порядка, ни от повторений, потому что спрашивает лишь о том, какие литералы присутствуют.

  3. (∀v)  v⊨C  ⇔  (∃ℓ)  ℓ∈C,  ℓ∗∈C(\forall v)\; v \models C \;\Leftrightarrow\; (\exists \ell)\; \ell \in C, \; \ell^{*} \in C

    По лемме об элементарных конъюнкциях и дизъюнктах (урок о нормальных формах) дизъюнкция литералов общезначима тогда и только тогда, когда содержит контрарную пару; по доказанному это же верно и для CC.

Дизъюнкт, содержащий контрарную пару, называется тавтологичным: он не налагает никакого условия, и его можно удалить из любого множества, не меняя моделей этого множества. Записывать дизъюнкты как множества не прихоть обозначений. Если из (p∨q)(p \vee q) и (p∨¬q)(p \vee \neg q) хотят получить pp, дизъюнкция даёт (p∨p)(p \vee p), которая эквивалентна pp, но не является той же формулой; с множествами {p}∪{p}={p}\{p\} \cup \{p\} = \{p\}, и слияние повторяющихся литералов происходит само собой.

ПримерВыполнение множества дизъюнктов

Пусть S={{p,q},{¬p,r},{¬q}}S = \{ \{p, q\}, \{\neg p, r\}, \{\neg q\} \}. Дизъюнкт {¬q}\{\neg q\} требует v(q)=0v(q) = 0; тогда {p,q}\{p, q\} требует v(p)=1v(p) = 1, а тогда {¬p,r}\{\neg p, r\} требует v(r)=1v(r) = 1. Оценка, которая даёт 11 переменным pp и rr и 00 остальным переменным, выполняет SS, и это единственная возможность на V(S)={p,q,r}V(S) = \{p, q, r\}. Если добавить дизъюнкт {¬r}\{\neg r\}, никакая оценка не выполняет расширенное множество: оно невыполнимо, хотя и не содержит □\Box.

v(q)=0  ⇒  v(p)=1  ⇒  v(r)=1v(q) = 0 \;\Rightarrow\; v(p) = 1 \;\Rightarrow\; v(r) = 1