Пусть с помощью таблицы истинности задана произвольная функция алгебры логики n переменных F(x1, x2, …, xn). Рассмотрим формулу:
F(1, 1, …, 1) Ù x1 Ù x2 Ù … Ù xn Ú
Ú F(1, 1, …, 1, 0) Ù x1 Ù x2 Ù … Ù xn-1 Ù Ø xn Ú (1)
Ú F(1, 1, …, 0, 1) Ù x1 Ù x2 Ù … Ù Ø xn-1 Ù xn Ú
Ú F(0, 0, …, 0) Ù Ø x1 Ù Ø x2 Ù … Ù Ø xn
которая составлена следующим образом: каждое слагаемое этой логической суммы представляет собой конъюнкцию, в которой первый член является значением функции F при некоторых определенных значениях ее переменных, остальные же члены конъюнкции представляют собой сами переменные или их отрицания. При этом под знаком отрицания находятся те и только те переменные, которые в первом члене конъюнкции имеют значение 0.
Ясно, что формула (1) полностью определяет функцию F. Иначе говоря, значения функции F и формулы (1) совпадают на всех наборах значений переменных xi. Например, если x1 принимает значение 0, а остальные переменные принимают значение 1, то функция F принимает значение F(0, 1, 1, …, 1). При этом логическое слагаемое F(0, 1, …, 1) Ù Ø x1 Ù x2 Ù … Ù xn = F(0, 1, …, 1) Ù Ø 0 Ù 1 Ù … Ù 1, входящее в формулу (1), принимает также значение F(0, l,..., l), а все остальные логические слагаемые формулы (1) имеют значение 0. Действительно, в них знаки отрицания перед переменными распределяются иначе, чем в рассмотренном слагаемом. Таким образом, при подстановке вместо переменных тех же значений в конъюнкцию войдет символ 0 без знака отрицания, а символ 1 под знаком отрицания. В таком случае один из членов конъюнкции будет иметь значение 0, и поэтому вся конъюнкция также будет иметь значение 0. В связи с этим на основании закона x Ú 0 = x значением формулы (1) является F(0, l,..., l).
Ясно, что вид формулы (1) может быть значительно упрощен, если в ней отбросить те логические слагаемые, в которых первый член конъюнкции имеет значение 0 (и, следовательно, вся конъюнкция имеет значение 0). Если же в логическом слагаемом первый член конъюнкции (то есть определенное значение функции F) имеет значение 1, то, пользуясь законом 1 Ù х = x, этот член конъюнкции можно не выписывать.
Таким образом, в результате получается формула (1), которая содержит только элементарные переменные высказывания и обладает следующими свойствами:
Перечисленные свойства будем называть свойствами совершенства или, коротко, свойствами. Из приведенных рассуждений видно, что каждой не тождественно ложной функции соответствует единственная формула указанного вида.
Если функция F(x1, x2, …, xn) задана таблицей истинности, то соответствующая ей формула алгебры логики может быть получена просто. Действительно, для каждого набора значений переменных, на котором функция F(x1, x2, …, xn) принимает значение 1, записывается конъюнкция элементарных переменных высказываний, взяв за член конъюнкции хk, если значение xk на указанном наборе значений переменных функции F есть 1 и Ø х, если значение xk есть 0. Дизъюнкция всех записанных конъюнкций и будет искомой формулой.
9. Двойственные функции
Определение. Функция называется двойственной к функции .
Из определения следует, что для того, чтобы получить таблицу значений двойственной функции , нужно в таблице значений функции (и в части переменных, и в части значений ) заменить все 0 на 1, а все 1 на 0. При этом, правда, порядок следования бинарных наборов в левой части таблицы изменится на обратный по сравнению с исходной таблицей. Чтобы его восстановить, нужно перевернуть все столбцы (в том числе и столбец значений). Таким образом, можно сформулировать следующее правило получения таблицы истинности двойственной функции : нужно (не меняя столбцы аргументов) в столбце значений функции заменить все 0 на 1, а 1 на 0, и перевернуть полученный столбец.
Пример. Пусть , тогда . Таким образом, двойственной функцией к конъюнкции является дизъюнкция. Поскольку для всех функций очевидно , то обратно: двойственной к дизъюнкции является конъюнкция. Кроме того, легко видеть, что , ; , ; .
Теорема: Функция, двойственная к суперпозиции функций, есть суперпозиции функций, двойственных к функциям, составляющим эту суперпозицию.
Доказательство:
(f(g1,…,gm))* = ¬f(g1(¬x1,1, ¬x1,2,…,¬x1,n1),…,gm(¬xm,1, ¬xm2,1,…,¬xm,nm)) =
=¬f(¬¬g1(¬x1,1,¬x2,1,…,¬x1,n1),…,¬¬gm(¬xm,1,¬xm,2,…,¬xm,nm))=¬f(¬g1*,…,¬gm*)=f*(g1*,…,gm*)