Россия, Новосибирск |
Логика высказываний
Полные системы связок
Рассматриваемая нами система пропозициональных связок ( , , , ) полна в следующем смысле:
Теорема 3 (Полнота системы связок). Любая булева функция аргументов может быть записана в виде пропозициональной формулы.
Проще всего пояснить это на примере. Пусть, например, булева функция задана таблицей 1.4
0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
В таблице есть три строки с единицами в правой колонке — три случая, когда булева функция истинна (равна ). Напишем три конъюнкции, каждая из которых покрывает один случай (а в остальных строках ложна), и соединим их дизъюнкцией. Нужная формула построена.
Ясно, что аналогичная конструкция применима для любой таблицы (с любым числом переменных).
Для формул подобного вида есть специальное название: формулы в дизъюнктивной нормальной форме. Более подробно: литералом называется переменная или отрицание переменной, конъюнктом называется произвольная конъюнкция литералов, а дизъюнктивной нормальной формой называется дизъюнкция конъюнктов. В нашем случае в каждый конъюнкт входит литералов (где — число переменных), а число конъюнктов равно числу строк с единицами и может меняться от нуля (тогда, правда, получается не совсем формула, а "пустая дизъюнкция", и ее можно заменить какой-нибудь всегда ложной формулой типа ) до (если булева функция всегда истинна).
5. Длина построенной в доказательстве теоремы 3 формулы зависит от числа единиц: формула будет короткой, если единиц в таблице мало. А как написать (сравнительно) короткую формулу, если в таблице мало нулей, а в основном единицы?
Иногда полезна конъюнктивная нормальная форма, которая представляет собой конъюнкцию дизъюнктов. Каждый дизъюнкт состоит из литералов, соединенных дизъюнкциями. Теорему 3 можно теперь усилить так:
Теорема 4. Всякая булева функция может быть выражена формулой, находящейся в дизъюнктивной нормальной форме, а также формулой, находящейся в конъюнктивной нормальной форме.
Первая часть утверждения уже доказана. Вторая часть аналогична первой, надо только для каждой строки с нулем написать подходящий дизъюнкт.
Можно также представить функцию в дизъюнктивной нормальной форме, а затем воспользоваться законами Де Моргана, чтобы внести отрицание внутрь.
6. Проведите второй вариант рассуждения подробно.
Вообще говоря, определение нормальной формы не требует, чтобы в каждом конъюнкте (или дизъюнкте) встречались все переменные. (Повторять переменную больше одного раза смысла нет; если, например, переменная и ее отрицание входят в одну конъюнкцию, то эта конъюнкция всегда ложна и ее можно выбросить.)
7. Приведите пример булевой функции аргументов, у которой любая дизъюнктивная или конъюнктивная нормальная форма содержит лишь члены длины . (Указание: рассмотрите функцию, которая меняет свое значение при изменении значения любой переменной.)
Заметим, что при доказательстве теоремы 3 мы обошлись без импликации. Это и не удивительно, так как она выражается через дизъюнкцию и отрицание:
(проверьте!). Мы могли бы обойтись только конъюнкцией и отрицанием, так как или только дизъюнкцией и отрицанием, так как (обе эквивалентности вытекают из законов Де Моргана; их легко проверить и непосредственно). Как говорят, система связок , а также система связок являются полными. (По определению это означает, что с их помощью можно записать любую булеву функцию.)8. Докажите, что система связок полна. (Указание: как записать через них дизъюнкцию?)
А вот без отрицания обойтись нельзя. Система связок неполна — и по очень простой причине: если все переменные истинны, то любая их комбинация, содержащая только указанные связки, истинна. (Как говорят, все эти связки "сохраняют единицу".)
9. Легко понять, что любая формула, составленная только с помощью связок и , задает монотонную булеву функцию (в том смысле, что от увеличения значения любого из аргументов значение функции может только возрасти — или остаться прежним). Покажите, что любая монотонная булева функция может быть выражена формулой, содержащей только и .
10. Пусть — тавтология. Покажите, что найдется формула , которая включает в себя только общие для и переменные, для которой формулы и являются тавтологиями. (Более общий вариант этого утверждения, в котором рассматриваются формулы с кванторами, называется леммой Крейга.)
В принципе мы не обязаны ограничиваться четырьмя рассмотренными связками. Любая булева функция может играть роль связки. Например, можно рассмотреть связку , задаваемую эквивалентностью
(словами: ложно, лишь если и истинны). Через нее выражается отрицание ( ), после чего можно выразить конъюнкцию, а затем, как мы знаем, и вообще любую функцию. (Знакомые с цифровыми логическими схемами малого уровня интеграции хорошо знакомы с этим утверждением: достаточно большой запас схем И-НЕ позволяет реализовать любую требуемую зависимость выхода от входов.)Другая интересная полная система связок — сложение по модулю , конъюнкция и константа (которую можно считать -арной связкой, задающей функцию от нуля аргументов). Представленные в этой системе булевы функции становятся полиномами с коэффициентами в кольце вычетов по модулю . Идея рассматривать булевы функции как полиномы (оказавшаяся неожиданно плодотворной в последние годы) была высказана в 1927 г. российским математиком Иваном Ивановичем Жегалкиным.
Назовем мономом конъюнкцию любого набора переменных или константу (которую естественно рассматривать как конъюнкцию нуля переменных). Название это естественно, так как при наших соглашениях ( обозначает истину, — ложь) конъюнкция соответствует умножению.
Назовем полиномом сумму таких мономов по модулю (это значит, что , и ). Ясно, что два повторяющихся монома можно сократить (ведь сложение по модулю ), так что будем рассматривать только полиномы без повторяющихся мономов. При этом, естественно, порядок членов в мономе (как и порядок мономов в полиноме) роли не играет, их можно переставлять.