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

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

Урок о нормальных формах доказал, что всякая формула эквивалентна некоторой дизъюнктивной и некоторой конъюнктивной нормальной форме; этот урок учит вычислять их без таблицы и пользоваться ими. Вычисление представляет собой алгоритм переписывания в три фазы: исключаются эквиваленция, строгая дизъюнкция, стрелка Пирса и импликация; отрицания доводятся до переменных по законам де Моргана и двойного отрицания; и выполняется распределение: конъюнкции относительно дизъюнкции для дизъюнктивной формы и дизъюнкции относительно конъюнкции для конъюнктивной. Доказываются его корректность, которая следует из семантической замены, и его завершаемость, с помощью числовой меры, убывающей на каждом шаге каждой фазы; доказывается и его предел: конъюнктивная форма дизъюнкции nn конъюнкций двух переменных необходимо имеет 2n2^n дизъюнктов. Затем нормальные формы получаются из таблицы истинности устройства, внутренность которого не видна, упрощаются склеиванием соседних строк и превращаются в схемы из переключателей, соединённых последовательно и параллельно. Задача об устройстве с четырьмя переключателями решается полностью, с её таблицей, двумя формами и схемами; задача с пятью остаётся как задача повышенной трудности.

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

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

Урок о нормальных формах дал два доказательства их существования. Первое проходит через таблицу истинности, в которой 2n2^n строк для nn переменных; второе обходит формулу от переменных, следуя единственному правилу её образования. Ни одно из них не говорит, как действовать перед формулой, записанной с импликациями, эквиваленциями и вложенными отрицаниями, а именно так обычно и предъявляются формулы. Если это так, недостаёт процедуры, которая работала бы с самой записью, могла бы выполняться не думая, о которой было бы известно, что она завершается и даёт эквивалентную формулу. Это и есть алгоритм, и его изучение составляет первый предмет этого урока; второй предмет составляет то, что с его помощью делается: описание формулами поведения устройства и построение схемы, которая его воспроизводит.

Записи и замена

Напомним, что формулы курса являются цепочками кружков и дисков и что ¬\neg, ∨\vee, ∧\wedge, →\rightarrow, ↔\leftrightarrow и ⊻\veebar являются сокращениями, определёнными через стрелку Пирса (урок о языке логики высказываний). Когда мы пишем ((p∨q)→(¬q∧p))((p \vee q) \rightarrow (\neg q \wedge p)), мы пишем не цепочку, а запись этой цепочки: дерево, листья которого являются переменными, а узлы являются связками ¬\neg, ∧\wedge, ∨\vee, →\rightarrow, ↔\leftrightarrow, ⊻\veebar и ↓\downarrow, каждая со своими компонентами. Всякая запись обозначает одну-единственную формулу, ту, что получается развёртыванием её сокращений; и одна и та же формула может иметь несколько записей: урок о нормальных формах заметил, что ¬¬φ\neg\neg\varphi и (φ∨φ)(\varphi \vee \varphi) представляют собой одну и ту же цепочку. Алгоритм читает запись, а не цепочку; поэтому их полезно различать. Так как различие важно лишь для того, чтобы знать, где действует каждый шаг, мы будем употреблять буквы φ\varphi, ψ\psi, χ\chi для записей и для обозначаемых ими формул и будем писать φ≡ψ\varphi \eqsem \psi, когда обозначаемые формулы семантически эквивалентны. Подзапись записи есть поддерево, растущее из одного из её узлов.

Шаг алгоритма заменяет одну подзапись другой. Инструментом, гарантирующим, что такая замена не меняет смысла, служит теорема о семантической замене из урока о семантическом следовании и эквивалентности; но та теорема заменяет одно вхождение в цепочке, а подзаписи может соответствовать несколько вхождений в цепочке, поскольку каждое сокращение копирует свои компоненты: в (φ∨ψ)=((φ↓ψ)↓(φ↓ψ))(\varphi \vee \psi) = ((\varphi \downarrow \psi) \downarrow (\varphi \downarrow \psi)) компонента φ\varphi встречается дважды. Следующая лемма приспосабливает замену к записям.

ЛеммаЗамена в записи

Пусть χ\chi есть запись, θ\theta одна из её подзаписей и θ′\theta' запись, для которой θ≡θ′\theta \eqsem \theta'. Если χ′\chi' получается заменой в χ\chi этой подзаписи на θ′\theta', то χ≡χ′\chi \eqsem \chi'.

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

  1. χ′=θ′≡θ=χ\chi' = \theta' \eqsem \theta = \chi

    Индукцией по глубине узла, из которого растёт θ\theta, то есть по числу связок записи χ\chi, стоящих над ним. Если глубина равна 00, подзапись совпадает со всей записью.

  2. χ=c(χ1,χ2),χ′=c(χ1′,χ2),χ1′≡χ1\dato{hi}{\chi = c(\chi_1, \chi_2), \qquad \chi' = c(\resaltar{\chi_1'}, \chi_2), \qquad \chi_1' \eqsem \chi_1}

    Если она больше 00, корнем записи χ\chi является связка cc с компонентами χ1\chi_1 (и χ2\chi_2, если cc бинарна), и θ\theta растёт из одной из них, скажем из χ1\chi_1, на меньшей глубине. По предположению индукции изменение внутри χ1\chi_1 даёт эквивалентную запись.

  3. v(χ′)=Fc(v(χ1′),v(χ2))=Fc(v(χ1),v(χ2))=v(χ)v(\chi') = F_c\left( v(\chi_1'), v(\chi_2) \right) = F_c\left( v(\chi_1), v(\chi_2) \right) = v(\chi)

    По теореме о значениях производных связок (урок о семантике логики высказываний) и по пункту о стрелке Пирса значение c(χ1,χ2)c(\chi_1, \chi_2) при оценке есть функция значений χ1\chi_1 и χ2\chi_2, а они не меняются. Отсюда χ\chi и χ′\chi' имеют одно и то же значение при всякой оценке.

Здесь FcF_c есть функция истинности связки: F¬(a)=1−aF_\neg(a) = 1 - a, F∧(a,b)=abF_\wedge(a, b) = ab, и так для остальных. Тот же результат получается из теоремы о семантической замене, если применить её по одному разу к каждой копии θ\theta в цепочке и связать эквивалентности транзитивностью; доказательство через запись короче, потому что считает написанные связки, а не копии.