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

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

Одна и та же функция истинности допускает бесконечно много представляющих её формул, и ни одна из них, взятая наугад, не позволяет увидеть, что она говорит. Этот урок фиксирует два шаблона, в которые укладывается всякая формула с точностью до эквивалентности: дизъюнктивную нормальную форму, дизъюнкцию конъюнкций литералов, и конъюнктивную нормальную форму, конъюнкцию дизъюнкций литералов. Определяются литералы, дизъюнкты и элементарные конъюнкции; доказывается, что отрицание переводит одну форму в другую, если каждый литерал заменить противоположным, и в этом состоит двойственность между ними; по таблице истинности строятся совершенные нормальные формы и доказывается их единственность. Теорема существования получает два доказательства: по таблице, как следствие функциональной полноты, и индукцией по сложности, с единственным случаем стрелки Пирса и с двойным предположением индукции, которого требует это доказательство. В конце видно, почему они стоят усилий: общезначимость конъюнктивной формы и выполнимость дизъюнктивной решаются с первого взгляда.

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

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

В предыдущих уроках этого раздела формулам было придано значение: урок о семантике логики высказываний продолжил каждую оценку на все формулы; урок о семантическом следовании и эквивалентности определил эквивалентность φ≡ψ\varphi \eqsem \psi и доказал семантическую замену; урок об обобщённых законах де Моргана и дистрибутивности распространил эти законы на конъюнкции и дизъюнкции из nn формул; а урок о функциональной полноте показал, что всякая функция истинности представляется некоторой формулой. Однако функция истинности представляется бесконечным числом формул, которые могут сильно отличаться друг от друга: (v1→v2)(v_1 \rightarrow v_2), ¬(v1∧¬v2)\neg(v_1 \wedge \neg v_2) и (((v1↓v1)↓v2)↓((v1↓v1)↓v2))(((v_1 \downarrow v_1) \downarrow v_2) \downarrow ((v_1 \downarrow v_1) \downarrow v_2)) суть три имени одного и того же. Если это так, то в каждом классе эквивалентности стоит выбрать представителя фиксированного вида, который читается без усилий и на котором некоторые вопросы решаются одним взглядом. Это и есть нормальные формы.

Литералы, дизъюнкты и нормальные формы

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

⋀i=11φi=φ1,⋀i=1n+1φi=(⋀i=1nφi∧φn+1)\bigwedge_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigwedge_{i=1}^{n + 1} \varphi_i = \left( \bigwedge_{i=1}^{n} \varphi_i \wedge \varphi_{n + 1} \right)
⋁i=11φi=φ1,⋁i=1n+1φi=(⋁i=1nφi∨φn+1)\bigvee_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigvee_{i=1}^{n + 1} \varphi_i = \left( \bigvee_{i=1}^{n} \varphi_i \vee \varphi_{n + 1} \right)

В том же уроке было доказано, что порядок и группировка членов не меняют формулу с точностью до эквивалентности (обобщённая ассоциативность и независимость от порядка и от повторений); поэтому мы будем писать также φ1∧φ2∧⋯∧φn\varphi_1 \wedge \varphi_2 \wedge \cdots \wedge \varphi_n без скобок, подразумевая группировку влево.

Литерал есть переменная vnv_n, которая называется положительным литералом, или отрицание ¬vn\neg v_n переменной, которое называется отрицательным литералом. Противоположный литералу ℓ\ell литерал, который мы записываем как ℓ∗\ell^{*}, есть литерал той же переменной с другим знаком:

ℓ=vn  ⇒  ℓ∗=¬vn,ℓ=¬vn  ⇒  ℓ∗=vn\ell = v_n \;\Rightarrow\; \ell^{*} = \neg v_n, \qquad \ell = \neg v_n \;\Rightarrow\; \ell^{*} = v_n

Из определения следует, что (ℓ∗)∗=ℓ(\ell^{*})^{*} = \ell. Два литерала образуют контрарную пару, если один из них противоположен другому, как v3v_3 и ¬v3\neg v_3.

Дизъюнкт есть дизъюнкция литералов, ⋁j=1kℓj\bigvee_{j=1}^{k} \ell_j, а элементарная конъюнкция есть конъюнкция литералов, ⋀j=1kℓj\bigwedge_{j=1}^{k} \ell_j, причём k≥1k \geq 1 в обоих случаях; поэтому один литерал есть одновременно дизъюнкт и элементарная конъюнкция. Говорят, что литерал входит в дизъюнкт или в элементарную конъюнкцию, если он есть один из их ℓj\ell_j.

Формула находится в дизъюнктивной нормальной форме, если она есть дизъюнкция элементарных конъюнкций, и в конъюнктивной нормальной форме, если она есть конъюнкция дизъюнктов; то есть если она имеет соответственно один из двух следующих видов, где mm и k1,…,kmk_1, \ldots, k_m суть натуральные числа и каждое ℓi,j\ell_{i,j} есть литерал:

⋁i=1m⋀j=1kiℓi,j,⋀i=1m⋁j=1kiℓi,j\bigvee_{i=1}^{m} \bigwedge_{j=1}^{k_i} \ell_{i,j}, \qquad \bigwedge_{i=1}^{m} \bigvee_{j=1}^{k_i} \ell_{i,j}

Будем говорить, что Φ\Phi есть дизъюнктивная нормальная форма формулы φ\varphi, если она находится в дизъюнктивной нормальной форме и φ≡Φ\varphi \eqsem \Phi, и так же для конъюнктивной. Длины kik_i могут меняться от одной конъюнкции (или дизъюнкта) к другой: требование одинакового числа литералов во всех заставило бы заполнять повторениями и ничего бы не добавило.

ПримерЧто находится и что не находится в нормальной форме

Формула (v1∧¬v2)∨¬v3(v_1 \wedge \neg v_2) \vee \neg v_3 находится в дизъюнктивной нормальной форме, причём m=2m = 2, k1=2k_1 = 2 и k2=1k_2 = 1; она не находится в конъюнктивной форме, так как не является конъюнкцией (две её компоненты различны, а конъюнкция есть двойное отрицание), и не является дизъюнктом: прочитанная как дизъюнкция, она имеет член (v1∧¬v2)(v_1 \wedge \neg v_2), который не есть ни литерал, ни дизъюнкция литералов. Формула v1∧¬v2∧v3v_1 \wedge \neg v_2 \wedge v_3 находится в обеих формах: как дизъюнкция одной-единственной элементарной конъюнкции (m=1m = 1) и как конъюнкция трёх дизъюнктов по одному литералу в каждом. Точно так же (¬v1∨v2)(\neg v_1 \vee v_2) есть одновременно дизъюнкт, то есть конъюнктивная форма с m=1m = 1, и дизъюнктивная форма из двух конъюнкций по одному литералу.

(v1∧¬v2)∨¬v3,v1∧¬v2∧v3,¬v1∨v2(v_1 \wedge \neg v_2) \vee \neg v_3, \qquad v_1 \wedge \neg v_2 \wedge v_3, \qquad \neg v_1 \vee v_2

Напротив, (v1↓v2)(v_1 \downarrow v_2) и ¬(v1→v2)\neg(v_1 \rightarrow v_2) не находятся ни в одной из двух форм, хотя первая эквивалентна (¬v1∧¬v2)(\neg v_1 \wedge \neg v_2), а вторая (v1∧¬v2)(v_1 \wedge \neg v_2), которые в них находятся.

(v1↓v2)≡¬v1∧¬v2,¬(v1→v2)≡v1∧¬v2(v_1 \downarrow v_2) \eqsem \neg v_1 \wedge \neg v_2, \qquad \neg(v_1 \rightarrow v_2) \eqsem v_1 \wedge \neg v_2

Стоит задержаться на том, что значит «находиться в нормальной форме». Это свойство цепочки кружков и дисков, а не её значения: урок об индукции по натуральным числам и по формулам доказал однозначность разбора, так что вопрос, является ли формула дизъюнкцией и чего именно, имеет единственный ответ. Однако официальные сокращения приводят к тому, что некоторые формулы находятся в нормальной форме, не выглядя так. Импликация (v1→v2)(v_1 \rightarrow v_2) определяется как (¬v1∨v2)(\neg v_1 \vee v_2): дело не в том, что она эквивалентна этому дизъюнкту, а в том, что она есть та же самая цепочка, и поэтому уже находится в нормальной форме. Ещё неожиданнее двойное отрицание. По определениям ¬\neg и ∨\vee цепочка (φ∨φ)(\varphi \vee \varphi) есть ¬(φ↓φ)\neg(\varphi \downarrow \varphi), то есть ¬¬φ\neg\neg\varphi; откуда ¬¬v1\neg\neg v_1 не есть литерал, но есть, буква в букву, дизъюнкт (v1∨v1)(v_1 \vee v_1).

(φ∨φ)=¬(φ↓φ)=¬¬φ(\varphi \vee \varphi) = \neg(\varphi \downarrow \varphi) = \neg\neg\varphi

Значение конъюнкций и дизъюнкций

Из урока о семантике берутся значения производных связок: v(¬φ)=1−v(φ)v(\neg\varphi) = 1 - v(\varphi); v(φ∧ψ)=v(φ) v(ψ)v(\varphi \wedge \psi) = v(\varphi)\,v(\psi), что равно 11 тогда и только тогда, когда обе равны 11; и v(φ∨ψ)=0v(\varphi \vee \psi) = 0 тогда и только тогда, когда обе равны 00. Урок об обобщённых законах де Моргана и дистрибутивности распространил их на nn формул индукцией по числу членов в лемме о значении: для всякой оценки vv конъюнкция ⋀i=1nφi\bigwedge_{i=1}^{n} \varphi_i принимает значение 11 при vv тогда и только тогда, когда каждая φi\varphi_i принимает значение 11 при vv, а дизъюнкция ⋁i=1nφi\bigvee_{i=1}^{n} \varphi_i принимает значение 11 при vv тогда и только тогда, когда некоторая φi\varphi_i принимает значение 11 при vv. Эта лемма, которая здесь цитируется без повторения доказательства, есть инструмент, которым вычисляется значение любой нормальной формы.

ЛеммаОтрицание литерала

Для всякого литерала ℓ\ell отрицание ℓ\ell эквивалентно противоположному литералу, ¬ℓ≡ℓ∗\neg\ell \eqsem \ell^{*}; в частности, v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) для всякой оценки vv.

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

  1. ℓ=vn  ⇒  ¬ℓ=¬vn=ℓ∗\ell = v_n \;\Rightarrow\; \neg\ell = \neg v_n = \ell^{*}

    Если ℓ\ell есть переменная vnv_n, противоположный ему литерал есть ¬vn\neg v_n, что есть в точности цепочка ¬ℓ\neg\ell: доказывать нечего.

  2. ℓ=¬vn  ⇒  ¬ℓ=¬¬vn≡vn=ℓ∗\ell = \neg v_n \;\Rightarrow\; \neg\ell = \resaltar{\neg\neg v_n} \eqsem v_n = \ell^{*}

    Если ℓ\ell есть ¬vn\neg v_n, его отрицание есть ¬¬vn\neg\neg v_n, что не является литералом; по закону двойного отрицания (урок о семантическом следовании и эквивалентности) оно эквивалентно vnv_n, а это литерал, противоположный ℓ\ell.

  3. v(ℓ∗)=v(¬ℓ)=1−v(ℓ)v(\ell^{*}) = v(\neg\ell) = 1 - v(\ell)

    В обоих случаях ℓ∗\ell^{*} и ¬ℓ\neg\ell имеют одно и то же значение при всякой оценке, а значение ¬ℓ\neg\ell даётся значением отрицания.

Второй случай легко упустить: при отрицании нормальной формы тянет написать ¬ℓi,j\neg\ell_{i,j} вместо литерала, а ¬¬vn\neg\neg v_n литералом не является. Именно двойное отрицание возвращает результат в шаблон.

ЛеммаЭлементарные конъюнкции и дизъюнкты

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

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

  1. v(ℓ) v(ℓ∗)=v(ℓ) (1−v(ℓ))=0v(\ell)\,v(\ell^{*}) = v(\ell)\,(1 - v(\ell)) = 0

    Если элементарная конъюнкция содержит ℓ\ell и ℓ∗\ell^{*}, то при всякой оценке один из двух равен 00 по предыдущей лемме; по лемме о значении конъюнкция равна 00 при всякой оценке.

  2. vn=ℓj  ⇒  v(vn)=1,¬vn=ℓj  ⇒  v(vn)=0\dato{val}{v_n = \ell_j \;\Rightarrow\; v(v_n) = 1, \qquad \neg v_n = \ell_j \;\Rightarrow\; v(v_n) = 0}

    Если она не содержит ни одной контрарной пары, определим оценку, которая придаёт 11 каждой переменной, входящей в неё как положительный литерал, и 00 каждой переменной, входящей в неё как отрицательный литерал (остальным 00). Определение непротиворечиво, поскольку ни одна переменная не входит обоими способами.

  3. v(⋀j=1kℓj)=1v\left( \bigwedge_{j=1}^{k} \ell_j \right) = 1

    При этой оценке все её литералы равны 11, и по лемме о значении конъюнкция равна 11: она выполнима.

  4. v(ℓ)+v(ℓ∗)=1v(\ell) + v(\ell^{*}) = 1

    Если дизъюнкт содержит ℓ\ell и ℓ∗\ell^{*}, то при всякой оценке один из двух равен 11, и дизъюнкт равен 11: он общезначим.

  5. v(⋁j=1kℓj)=0v\left( \bigvee_{j=1}^{k} \ell_j \right) = 0

    Если он не содержит ни одной контрарной пары, оценка, которая придаёт 00 его положительным переменным и 11 его переменным под отрицанием, делает все его литералы равными 00; по лемме о значении дизъюнкт равен 00 при ней и не общезначим.