Теоретические обоснования
В первой части параграфа были приведены без обоснования несколько утверждений. Вернемся к их обсуждению.
Теорема 2.2 (принцип двойственности).
Если формула
задает функцию
,
то формула
,
полученная из нее заменой символов
функций
на символы двойственных к ним функций
,
задает функцию
,
двойственную к функции
.
Доказательство. Доказательство проведем индукцией по структуре формул.
Базис индукции.
Пусть
.
Тогда
имеет вид
,
где
- переменная из
,
или
,
где
- константа из
.
В первом случае двойственная формула
имеет вид
,
во втором -
.
В обоих случаях двойственная формула
реализует функцию, которая двойственна
к функции, заданной формулой
.
Индуктивный переход.
Пусть утверждение верно для любой
формулы глубины, меньшей либо равной
.
Произвольная формула глубины
в соответствии с индуктивным определением
формулы может быть записана в виде
,
где
- функция из
,
,
,…,
- формулы такие, что
.
Причем, согласно определению функции,
заданной формулой, всем формулам
сопоставлены соответственно некоторые
функции
,
,…,
,
а формуле
- функция
,
значение которой на каждом наборе
находится как значение функции
на наборе
.
Используя определение двойственной
функции, зададим формулой функцию,
двойственную к
:
![]()
![]()
![]()

![]()
.
Поскольку глубина каждой из формул
не превышает
,
то для этих формул выполнено предположение
индукции, и, значит, функции
реализуются формулами, двойственными
к формулам
,
т.е.
(
).
Но тогда
,
и, значит,
.
■
Для доказательства утверждения о представлении функций в виде СДНФ нам понадобится следующая теорема.
Теорема 2.3 (о разложении функции по
переменным). Каждую булеву
функцию
при любом
можно задать формулой
![]()
(здесь
дизъюнкция берется по всевозможным
наборам значений переменных
).
Доказательство. Напомним,
что
Следовательно,
,
,
,
,
т.е.
тогда и только тогда, когда
.
Возьмем произвольный набор
значений переменных и найдем на этом
наборе значение функции, заданной
доказываемой формулой:
![]()


.
Поясним последний переход: если
,
то хотя бы при одном
и, значит,
,
следовательно,
.
Таким образом, имеем:
![]()
.■
В качестве примера
приведем разложение функции
:
а) по переменной
:
;
б) по переменным
:
![]()
.
Теорема 2.4 (о задании функции в виде
СДНФ). Каждую булеву функцию
от
переменных, за исключением тождественно
равной нулю, можно задать формулой
.
Доказательство. Запишем
разложение функции
по всем переменным и преобразуем его:
![]()


.
■
Теорема 2.5 (о задании функции в виде
СКНФ). Каждую булеву функцию
,
не равную тождественно единице, можно
задать формулой
.
Доказательство. Представим
функцию
,
двойственную к
,
в виде СДНФ:
.
По принципу двойственности равенство
сохранится, если перейти в левой части
к двойственной функции, а в правой - к
двойственной формуле. Переход к
двойственной формуле означает замену
всех конъюнкций дизъюнкциями, и наоборот
(при этом выражения
остаются неизменными, поскольку они
представляют собой либо
,
либо
):


.
Так как
,
формула доказана. ■
