Полные системы функций. Теорема Поста о полной системе функций — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (Формулировка и доказательство критерия)
Строка 1: Строка 1:
== Представление функции формулой ==
 
 
{{Определение
 
|definition=
 
Если выбрать некоторый набор [[Определение булевой функции|булевых функций]] <tex>A</tex>, то с использованием выбранных функций можно записать некоторые другие булевы функции. Такая запись булевой функции называется '''формулой'''.}}
 
Например, если <tex>A = \left\{\land,\neg\right\}</tex>, то функция <tex>a \lor b</tex> представляется в виде <tex>\neg(\neg a \land \neg b)</tex>
 
 
 
== Полные системы функций ==
 
== Полные системы функций ==
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
'''Замкнутым множеством''' функций называется такое множество, что любая функция алгебры логики, выражаемая с помощью содержащихся в множестве функций, уже содержится в этом множестве.}}
+
'''Замкнутым множеством функций''' называется такое множество, что любая [[Определение булевой функции|булева функция]], [[Суперпозиции|выражаемая]] с помощью содержащихся в множестве функций, уже содержится в этом множестве.}}
  
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
'''Замыканием''' множества функций называется минимальное замкнутое подмножество всех функций, содержащее данное множество функций.}}
+
'''Замыканием''' множества функций называется такое подмножество всех булевых функций, что любую из этих функций можно выразить через функции исходного множества.}}
  
 
{{Определение
 
{{Определение
 
|id=def1
 
|id=def1
 
|definition=
 
|definition=
Множество <tex>A</tex> функций алгебры логики называется '''полной системой''', если замыкание этого множества совпадает с множеством всех функций.}}  
+
Множество <tex>A</tex> булевых функций называется '''полной системой''', если замыкание этого множества совпадает с множеством всех функций.}}  
  
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
Полная система функций называется '''безызбыточной''', если она перестаёт быть полной при исключении из неё любого элемента.
+
Полная система функций называется '''безызбыточной''', если она перестает быть полной при исключении из неё любого элемента.
 
}}
 
}}
  
Строка 34: Строка 27:
 
Класс функций <tex>T_0</tex>.  
 
Класс функций <tex>T_0</tex>.  
 
{{Определение
 
{{Определение
|definition=Говорят, что функция '''сохраняет константу 0''', если <tex>f(0, 0, \dots, 0) = 0</tex>.
+
|definition=Говорят, что функция '''сохраняет 0''', если <tex>f(0, 0, \dots, 0) = 0</tex>.
 
}}
 
}}
  
Строка 40: Строка 33:
 
Класс функций <tex>T_1</tex>.  
 
Класс функций <tex>T_1</tex>.  
 
{{Определение
 
{{Определение
|definition=Говорят, что функция '''сохраняет константу 1''', если <tex>f(1, 1, \dots, 1) = 1</tex>.
+
|definition=Говорят, что функция '''сохраняет 1''', если <tex>f(1, 1, \dots, 1) = 1</tex>.
 
}}
 
}}
  
Строка 59: Строка 52:
 
:<tex>f(x_1, x_2, \dots, x_n) = a_0\oplus a_1\cdot x_1\oplus a_2\cdot x_2 \oplus\dots\oplus a_n\cdot x_n</tex>.
 
:<tex>f(x_1, x_2, \dots, x_n) = a_0\oplus a_1\cdot x_1\oplus a_2\cdot x_2 \oplus\dots\oplus a_n\cdot x_n</tex>.
 
}}
 
}}
Очевидно, что количество линейных функций от <tex>n</tex> переменных равно <tex>~2^{n+1}</tex>.
+
Количество линейных функций от <tex>n</tex> переменных равно <tex>~2^{n+1}</tex>.
 
 
Функция является линейной тогда, и только тогда, когда в ее полиноме [[Полином_Жегалкина|Жегалкина]] присутствуют слагаемые, каждое из которых зависит не более чем от одной переменной. Построить полином Жегалкина можно с помощью [[Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина|преобразования Мебиуса]].
 
  
== Критерий Поста ==
+
Функция является линейной тогда, и только тогда, когда в ее [[Полином_Жегалкина|полиноме Жегалкина]] присутствуют слагаемые, каждое из которых зависит не более чем от одной переменной. Построить полином Жегалкина можно с помощью [[Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина|преобразования Мебиуса]].
Критерий Поста — одна из центральных теорем в теории булевых функций, устанавливающая необходимое и достаточное условие для того, чтобы некоторый набор булевых функций обладал достаточной выразительностью, чтобы представить любую булеву функцию. Впервые сформулирован американским математиком Эмилем Постом в 1941г.
 
  
== Формулировка и доказательство критерия ==
+
== Формулировка и доказательство критерия Поста ==
 
{{
 
{{
 
Теорема|statement=
 
Теорема|statement=
Система булевых функций F является полной тогда и только тогда, когда она не содержится полностью ни в одном из классов <tex> S,M,L,T_0,T_1 </tex>, т.е. когда в ней имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
+
Набор булевых функций K является полным тогда и только тогда, когда он не содержится полностью ни в одном из классов <tex> S,M,L,T_0,T_1 </tex>, т.е. когда в нем имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
  
 
|proof=
 
|proof=
Строка 77: Строка 67:
 
Докажем достаточность этого утверждения.
 
Докажем достаточность этого утверждения.
  
Рассмотрим функцию, несохраняющую 0 {{---}} <tex>f_0</tex>. <tex>f_0(0) = 1</tex>. <tex>f_0(1)</tex> может принимать два значения:
+
Рассмотрим функцию, не сохраняющую 0 {{---}} <tex>f_0</tex>. <tex>f_0(0) = 1</tex>. <tex>f_0(1)</tex> может принимать два значения:
  
 
а) <tex>f_0(1) = 1</tex>, тогда <tex>f_0(x, x, x, \ldots, x) = 1</tex>.
 
а) <tex>f_0(1) = 1</tex>, тогда <tex>f_0(x, x, x, \ldots, x) = 1</tex>.
Строка 83: Строка 73:
 
б) <tex>f_0(1) = 0</tex>, тогда <tex>f_0(x, x, x, \dots, x) = \neg x</tex>.
 
б) <tex>f_0(1) = 0</tex>, тогда <tex>f_0(x, x, x, \dots, x) = \neg x</tex>.
  
Рассмотрим функцию, несохраняющую 1 {{---}} <tex>f_1</tex>. <tex>f_1(1) = 0</tex>. <tex>f_1(0)</tex> может принимать два значения:
+
Рассмотрим функцию, не сохраняющую 1 {{---}} <tex>f_1</tex>. <tex>f_1(1) = 0</tex>. <tex>f_1(0)</tex> может принимать два значения:
  
 
а) <tex>f_1(0) = 0</tex>, тогда <tex>f_1(x, x, x, \ldots, x) = 0</tex>.
 
а) <tex>f_1(0) = 0</tex>, тогда <tex>f_1(x, x, x, \ldots, x) = 0</tex>.
Строка 91: Строка 81:
 
Возможны 4 варианта:
 
Возможны 4 варианта:
  
1) Мы получили функцию '''НЕ'''. Используем несамодвойственную функцию <tex>f_s</tex>.
+
1) Мы получили функцию НЕ. Используем несамодвойственную функцию <tex>f_s</tex>.
  
 
По определению найдется такой вектор <tex>x_0</tex>, что <tex>f_s(x_0) = f_s(\lnot x_0)</tex>. <tex>x_0 = (x_{01}, x_{02}, ..., x_{0k})</tex>.
 
По определению найдется такой вектор <tex>x_0</tex>, что <tex>f_s(x_0) = f_s(\lnot x_0)</tex>. <tex>x_0 = (x_{01}, x_{02}, ..., x_{0k})</tex>.
Строка 100: Строка 90:
 
Таким образом мы получили одну из констант.
 
Таким образом мы получили одну из констант.
  
2)Мы получили '''НЕ''' и <tex>0</tex>. <tex>\lnot 0 = 1</tex>.
+
2)Мы получили НЕ и <tex>0</tex>. <tex>\lnot 0 = 1</tex>.
  
3)Мы получили '''НЕ''' и <tex>1</tex>. <tex>\lnot 1 = 0</tex>.
+
3)Мы получили НЕ и <tex>1</tex>. <tex>\lnot 1 = 0</tex>.
  
 
4)Мы получили <tex>1</tex> и <tex>0</tex>.
 
4)Мы получили <tex>1</tex> и <tex>0</tex>.
Строка 108: Строка 98:
 
Рассмотрим немонотонную функцию <tex>f_m</tex>. Существуют такие <tex>x_1, x_2, \ldots, x_n</tex>, что <tex>f_m(x_1, x_2,  \ldots, x_{i-1},  0  , x_{i+1},  \ldots, x_n) = 1</tex>, <tex>f_m(x_1, x_2,  \ldots, x_{i-1},  1  , x_{i+1},  \ldots, x_n) = 0</tex>, зафиксируем все <tex>x_1, x_2,  \ldots, x_n</tex>, тогда <tex>f_m(x_1, x_2,  \ldots, x_{i-1}, x, x_{i+1},  \ldots, x_n)= \lnot x</tex>.
 
Рассмотрим немонотонную функцию <tex>f_m</tex>. Существуют такие <tex>x_1, x_2, \ldots, x_n</tex>, что <tex>f_m(x_1, x_2,  \ldots, x_{i-1},  0  , x_{i+1},  \ldots, x_n) = 1</tex>, <tex>f_m(x_1, x_2,  \ldots, x_{i-1},  1  , x_{i+1},  \ldots, x_n) = 0</tex>, зафиксируем все <tex>x_1, x_2,  \ldots, x_n</tex>, тогда <tex>f_m(x_1, x_2,  \ldots, x_{i-1}, x, x_{i+1},  \ldots, x_n)= \lnot x</tex>.
  
В итоге имеем три функции: '''НЕ''', <tex>0</tex>, <tex>1</tex>.
+
В итоге имеем три функции: НЕ, <tex>0</tex>, <tex>1</tex>.
  
Используем нелинейную функцию <tex>f_l</tex>. Среди нелинейных членов <tex>f_l</tex>, выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назовем <tex>x_1</tex> и <tex>x_2</tex>, а все элементы, не входящие в данный член, сделаем равными 0'''.''' Тогда <tex>f_l = x_1 \land x_2 [ \oplus x_1] [\oplus x_2][ \oplus ~1]</tex>, где в квадратных скобках указаны члены, которые могут и не присутствовать.
+
Используем нелинейную функцию <tex>f_l</tex>. Среди нелинейных членов <tex>f_l</tex>, выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назовем <tex>x_1</tex> и <tex>x_2</tex>, а все элементы, не входящие в данный член, сделаем равными 0. Тогда <tex>g_l = x_1 \land x_2 [ \oplus x_1] [\oplus x_2][ \oplus ~1]</tex>, где в квадратных скобках указаны члены, которые могут и не присутствовать.
  
 
Рассмотрим несколько вариантов:
 
Рассмотрим несколько вариантов:
  
# Присутствует член <tex>~1</tex>. Возьмем отрицание от <tex>f_l</tex> и член <tex>~1</tex> уберется.
+
# Присутствует член <tex>\oplus ~1</tex>. Возьмем отрицание от <tex>g_l</tex> и член <tex>\oplus ~1</tex> уберется.
# Присутствуют 3 члена, без <tex>~1</tex>: <tex>f_l = x_1 \land x_2 \oplus x_1 \oplus x_2</tex>. Составив таблицу истинности для этой функции, нетрудно заметить, что она эквивалентна функции '''ИЛИ'''.
+
# Присутствуют 3 члена, без <tex>\oplus ~1</tex>: <tex>g_l= x_1 \land x_2 \oplus x_1 \oplus x_2</tex>. Составив таблицу истинности для этой функции, нетрудно заметить, что она эквивалентна функции ИЛИ.
# Присутствуют 2 члена, без <tex>~1</tex>. Построив две таблицы истинности, для двух различных вариантов, видим, что в обоих случаях функция истинна только в одной точке, следовательно, СДНФ будет состоять только из одного члена, а если это так, то не составляет труда выразить '''И''', через '''НЕ''' и <tex>f_l</tex>.  
+
# Присутствуют 2 члена, без <tex>\oplus ~1</tex>. Построив две таблицы истинности, для двух различных вариантов, видим, что в обоих случаях функция истинна только в одной точке, следовательно, СДНФ будет состоять только из одного члена, а если это так, то не составляет труда выразить И, через НЕ и <tex>g_l</tex>.  
# Присутствует 1 член. Выразим '''И''', через '''НЕ''' и <tex>f_l</tex>.
+
# Присутствует 1 член. Выразим И, через НЕ и <tex>g_l</tex>.
  
В итоге получаем функцию '''НЕ''', а также либо функцию '''И''', либо функцию '''ИЛИ'''. Поскольку функцию '''И''' можно выразить через '''ИЛИ''' и '''НЕ''', а функцию '''ИЛИ''' через '''И''' и '''НЕ''', то мы получили базис '''И, ИЛИ, НЕ'''. Любую булеву функцию, не равную тождественному нулю, можно представить в форме [[СДНФ]], т. е. с помощью данного базиса. Если же функция равна тождественному нулю, то ее можно представить в виде <tex>x \land \overline{x}</tex>. Значит, полученные функции образуют полную систему, т. к. с их помощью можно выразить любую булеву функцию. Из этого следует, что '''F''' {{---}} полная система функций, что и требовалось доказать.
+
В итоге получаем функцию НЕ, а также либо функцию И, либо функцию ИЛИ. Поскольку функцию И можно выразить через ИЛИ и НЕ, а функцию ИЛИ через И и НЕ, то мы получили базис И, ИЛИ, НЕ. Любую булеву функцию, не равную тождественному нулю, можно представить в форме [[СДНФ]], т. е. с помощью данного базиса. Если же функция равна тождественному нулю, то ее можно представить в виде <tex>x \land \overline{x}</tex>. Значит, полученные функции образуют полную систему, т. к. с их помощью можно выразить любую булеву функцию. Из этого следует, что K {{---}} полная система функций, что и требовалось доказать.
 
}}
 
}}
  
Строка 125: Строка 115:
 
Согласно критерию Поста система булевых функций полна тогда и только тогда, когда она не содержится целиком ни в одном из классов <tex>T_0</tex>, <tex>T_1</tex>, <tex>S</tex>, <tex>M</tex>, <tex>L</tex>.
 
Согласно критерию Поста система булевых функций полна тогда и только тогда, когда она не содержится целиком ни в одном из классов <tex>T_0</tex>, <tex>T_1</tex>, <tex>S</tex>, <tex>M</tex>, <tex>L</tex>.
  
В частности, если функция не входит ни в один из классов Поста, она сама по себе формирует полную систему. В качестве примера можно назвать штрих Шеффера или стрелку Пирса.
+
В частности, если функция не входит ни в один из классов Поста, она сама по себе формирует полную систему. В качестве примера можно назвать [[Определение_булевой_функции|штрих Шеффера]] или [[Определение_булевой_функции|стрелку Пирса]].
  
 
Широко известны такие полные системы булевых функций:
 
Широко известны такие полные системы булевых функций:

Версия 01:11, 1 января 2012

Полные системы функций

Определение:
Замкнутым множеством функций называется такое множество, что любая булева функция, выражаемая с помощью содержащихся в множестве функций, уже содержится в этом множестве.


Определение:
Замыканием множества функций называется такое подмножество всех булевых функций, что любую из этих функций можно выразить через функции исходного множества.


Определение:
Множество [math]A[/math] булевых функций называется полной системой, если замыкание этого множества совпадает с множеством всех функций.


Определение:
Полная система функций называется безызбыточной, если она перестает быть полной при исключении из неё любого элемента.


Американский математик Эмиль Пост сформулировал необходимое и достаточное условие полноты системы булевых функций. Для этого он ввел в рассмотрение следующие замкнутые классы булевых функций:

  • Функции, сохраняющие константу [math]T_0[/math] и [math]T_1[/math];
  • Самодвойственные функции [math]S[/math];
  • Монотонные функции [math]M[/math];
  • Линейные функции [math]L[/math].

Замкнутые классы булевых функций

Класс функций [math]T_0[/math].

Определение:
Говорят, что функция сохраняет 0, если [math]f(0, 0, \dots, 0) = 0[/math].


Класс функций [math]T_1[/math].

Определение:
Говорят, что функция сохраняет 1, если [math]f(1, 1, \dots, 1) = 1[/math].


Класс самодвойственных функций [math]S[/math].

Определение:
Говорят, что функция самодвойственна, если [math]f(\overline{x_1},\dots,\overline{x_n})=\overline{f(x_1,\dots,x_n)}[/math]. Иными словами, функция называется самодвойственной, если на противоположных наборах она принимает противоположные значения.


Класс монотонных функций [math]M[/math].

Определение:
Говорят, что функция монотонна, если [math]\forall i (a_i\le b_i) \Rightarrow f(a_1,\dots,a_n)\le f(b_1,\dots,b_n)[/math].


Класс линейных функций [math]L[/math].

Определение:
Говорят, что функция линейна, если существуют такие [math]a_0, a_1, a_2, \dots, a_n[/math], где [math]a_i \in \{0, 1\}, \forall i=\overline{1,n}[/math], что для любых [math]x_1, x_2, \dots, x_n[/math] имеет место равенство:
[math]f(x_1, x_2, \dots, x_n) = a_0\oplus a_1\cdot x_1\oplus a_2\cdot x_2 \oplus\dots\oplus a_n\cdot x_n[/math].

Количество линейных функций от [math]n[/math] переменных равно [math]~2^{n+1}[/math].

Функция является линейной тогда, и только тогда, когда в ее полиноме Жегалкина присутствуют слагаемые, каждое из которых зависит не более чем от одной переменной. Построить полином Жегалкина можно с помощью преобразования Мебиуса.

Формулировка и доказательство критерия Поста

Теорема:
Набор булевых функций K является полным тогда и только тогда, когда он не содержится полностью ни в одном из классов [math] S,M,L,T_0,T_1 [/math], т.е. когда в нем имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
Доказательство:
[math]\triangleright[/math]

Заметим, что необходимость этого утверждения очевидна, так как если бы все функции из набора К входили в один из перечисленных классов, то и все суперпозиции, а значит, и замыкание набора входило бы в этот класс и класс К не мог быть полным.

Докажем достаточность этого утверждения.

Рассмотрим функцию, не сохраняющую 0 — [math]f_0[/math]. [math]f_0(0) = 1[/math]. [math]f_0(1)[/math] может принимать два значения:

а) [math]f_0(1) = 1[/math], тогда [math]f_0(x, x, x, \ldots, x) = 1[/math].

б) [math]f_0(1) = 0[/math], тогда [math]f_0(x, x, x, \dots, x) = \neg x[/math].

Рассмотрим функцию, не сохраняющую 1 — [math]f_1[/math]. [math]f_1(1) = 0[/math]. [math]f_1(0)[/math] может принимать два значения:

а) [math]f_1(0) = 0[/math], тогда [math]f_1(x, x, x, \ldots, x) = 0[/math].

б) [math]f_1(0) = 1[/math], тогда [math]f_1(x, x, x, \ldots, x) = \lnot x[/math].

Возможны 4 варианта:

1) Мы получили функцию НЕ. Используем несамодвойственную функцию [math]f_s[/math].

По определению найдется такой вектор [math]x_0[/math], что [math]f_s(x_0) = f_s(\lnot x_0)[/math]. [math]x_0 = (x_{01}, x_{02}, ..., x_{0k})[/math].

Возьмем [math]f_s(x^{x_{01}}, x^{x_{02}}, \ldots, x^{x_{0k}})[/math], где [math]x^{x_{0i}} = x[/math], при [math]x_{0i} = 1[/math] и [math]x^{x_{0i}} = \lnot x[/math], при [math]x_{0i} = 0 [/math].

Нетрудно заметить, что [math]f_s(0) = f_s(1) \Rightarrow f_s = \operatorname {const}[/math]. Таким образом мы получили одну из констант.

2)Мы получили НЕ и [math]0[/math]. [math]\lnot 0 = 1[/math].

3)Мы получили НЕ и [math]1[/math]. [math]\lnot 1 = 0[/math].

4)Мы получили [math]1[/math] и [math]0[/math].

Рассмотрим немонотонную функцию [math]f_m[/math]. Существуют такие [math]x_1, x_2, \ldots, x_n[/math], что [math]f_m(x_1, x_2, \ldots, x_{i-1}, 0 , x_{i+1}, \ldots, x_n) = 1[/math], [math]f_m(x_1, x_2, \ldots, x_{i-1}, 1 , x_{i+1}, \ldots, x_n) = 0[/math], зафиксируем все [math]x_1, x_2, \ldots, x_n[/math], тогда [math]f_m(x_1, x_2, \ldots, x_{i-1}, x, x_{i+1}, \ldots, x_n)= \lnot x[/math].

В итоге имеем три функции: НЕ, [math]0[/math], [math]1[/math].

Используем нелинейную функцию [math]f_l[/math]. Среди нелинейных членов [math]f_l[/math], выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назовем [math]x_1[/math] и [math]x_2[/math], а все элементы, не входящие в данный член, сделаем равными 0. Тогда [math]g_l = x_1 \land x_2 [ \oplus x_1] [\oplus x_2][ \oplus ~1][/math], где в квадратных скобках указаны члены, которые могут и не присутствовать.

Рассмотрим несколько вариантов:

  1. Присутствует член [math]\oplus ~1[/math]. Возьмем отрицание от [math]g_l[/math] и член [math]\oplus ~1[/math] уберется.
  2. Присутствуют 3 члена, без [math]\oplus ~1[/math]: [math]g_l= x_1 \land x_2 \oplus x_1 \oplus x_2[/math]. Составив таблицу истинности для этой функции, нетрудно заметить, что она эквивалентна функции ИЛИ.
  3. Присутствуют 2 члена, без [math]\oplus ~1[/math]. Построив две таблицы истинности, для двух различных вариантов, видим, что в обоих случаях функция истинна только в одной точке, следовательно, СДНФ будет состоять только из одного члена, а если это так, то не составляет труда выразить И, через НЕ и [math]g_l[/math].
  4. Присутствует 1 член. Выразим И, через НЕ и [math]g_l[/math].
В итоге получаем функцию НЕ, а также либо функцию И, либо функцию ИЛИ. Поскольку функцию И можно выразить через ИЛИ и НЕ, а функцию ИЛИ через И и НЕ, то мы получили базис И, ИЛИ, НЕ. Любую булеву функцию, не равную тождественному нулю, можно представить в форме СДНФ, т. е. с помощью данного базиса. Если же функция равна тождественному нулю, то ее можно представить в виде [math]x \land \overline{x}[/math]. Значит, полученные функции образуют полную систему, т. к. с их помощью можно выразить любую булеву функцию. Из этого следует, что K — полная система функций, что и требовалось доказать.
[math]\triangleleft[/math]

Примеры

Согласно критерию Поста система булевых функций полна тогда и только тогда, когда она не содержится целиком ни в одном из классов [math]T_0[/math], [math]T_1[/math], [math]S[/math], [math]M[/math], [math]L[/math].

В частности, если функция не входит ни в один из классов Поста, она сама по себе формирует полную систему. В качестве примера можно назвать штрих Шеффера или стрелку Пирса.

Широко известны такие полные системы булевых функций:

  • [math]\left\{\land,\lor,\neg\right\}[/math] (конъюнкция, дизъюнкция, отрицание);
  • [math]\left\{\land,\oplus,1\right\}[/math] (конъюнкция, сложение по модулю 2, константа 1).

Первая система используется, например, для представления функций в виде дизъюнктивных и конъюнктивных нормальных форм, вторая — для представления в виде полиномов Жегалкина.

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

Иногда говорят о системе функций, полной в некотором замкнутом классе, и соответственно о базисе этого класса. Например, систему [math]\left\{\oplus,1\right\}[/math] можно назвать базисом класса линейных функций.


Источники