Арифметизация булевых формул с кванторами — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
Введём понятие арифметизации булевых формул. Пусть нам дана формула <tex>\phi(x_1 \ldots x_m)</tex>. Сделаем следующие преобразования и получим формулу <tex>A_\phi(x_1, x_2, \ldots, x_m)</tex>:
 
Введём понятие арифметизации булевых формул. Пусть нам дана формула <tex>\phi(x_1 \ldots x_m)</tex>. Сделаем следующие преобразования и получим формулу <tex>A_\phi(x_1, x_2, \ldots, x_m)</tex>:
# <tex>x_i \to x_i</tex>;
+
* <tex>x_i \to x_i</tex>;
# <tex>\lnot x \to 1 - x</tex>;
+
* <tex>\lnot x \to 1 - x</tex>;
# <tex>\varphi \land \psi \to A_\varphi \cdot A_\psi</tex>;
+
* <tex>\varphi \land \psi \to A_\varphi \cdot A_\psi</tex>;
# <tex>\varphi \lor \psi \to 1 - (1 - A_\varphi) \cdot (1 - A_\psi)</tex>;
+
* <tex>\varphi \lor \psi \to 1 - (1 - A_\varphi) \cdot (1 - A_\psi)</tex>;
# <tex>\exists x \varphi(x) \to \sum\limits_{x=0}^{1} A_\varphi(x)</tex>;
+
 
# <tex>\forall x \varphi(x) \to \prod\limits_{x=0}^{1} A_\varphi(x)</tex>.
+
Заметим, что <tex>|A_\phi| \le C |\phi|</tex> , где <tex>C</tex> {{---}} некоторая константа.
Заметим, что если <tex>\phi</tex> не содержит кванторов, то <tex>|A_\phi| \le C |\phi|</tex> , где <tex>C</tex> {{---}} некоторая константа.  
 
  
 
{{Лемма
 
{{Лемма
Строка 15: Строка 14:
 
}}
 
}}
  
Введем обозначения:
+
Для арифметизации булевых формул с кванторами добавим еще два правила преобразования:
* <tex>Q_i = \sum\limits_{x_i = 0}^{1}</tex> или <tex>Q_i = \prod\limits_{x_i = 0}^{1}</tex>
+
* <tex>\exists x \varphi(x) \to \sum\limits_{x=0}^{1} A_\varphi(x)</tex>;
* <tex>s = Q_1 \ldots Q_m A(x_1, \ldots, x_m)</tex>
+
* <tex>\forall x \varphi(x) \to \prod\limits_{x=0}^{1} A_\varphi(x)</tex>.
* <tex>A_i(x_{i+1}) = Q_{i + 2} \ldots Q_m A(c_1,\ldots, c_i, x_{i+1}, ..., x_m)</tex>, где <tex>c_1, \ldots, c_i</tex> {{---}} двоичные константы.
+
 
 +
Будем обозначать через <tex>Q_i</tex> квантор, связывающий переменную <tex>x_i</tex>. Через <tex>R_i</tex> будем обозначать операцию, в которую преобразуется квантор <tex>Q_i</tex> в процессе арифметизации.
 +
 
 +
Заметим, что любую булеву формулу можно привести к виду <tex>Q_1 \ldots Q_m \phi(x_1, \ldots, x_m)</tex>, где <tex>\phi</tex> {{---}} формула, не содержащая кванторов. Кроме того, в процессе арифметизации <tex>Q_1 \ldots Q_m \phi(x_1, \ldots, x_m)</tex> переходит в <tex>R_1 \ldots R_m A_\phi(x_1, \ldots, x_m)</tex>. Поэтому далее будем рассматривать только формулы, которые имеют вид, указанный выше.
  
 
{{Лемма
 
{{Лемма
 
|about=2
 
|about=2
 
|statement=
 
|statement=
При введенных выше обозначениях выполняются:
+
Пусть <tex>Q_1 \ldots Q_m \phi(x_1, \ldots, x_m)</tex> {{---}} булева формула с кванторами, переходящая в процессе арифметизации в <tex>s = R_1 \ldots R_m A_\phi(x_1, \ldots, x_m)</tex>. <tex>c_1, \ldots, c_m</tex> {{---}} двоичные константы. Обозначим через <tex>A_i(x_{i+1}) = R_{i+2} \ldots R_m A_\phi(c_1, \ldots, c_i, x_{i+1}, \ldots, x_m)</tex>, где <tex>0 \le i \le m - 1</tex>. Тогда:
# Если <tex>Q_1 = \sum\limits_{x_1 = 0}^{1}</tex>, то <tex>A_0(0) + A_0(1) = s</tex>, если <tex>Q_1 = \prod\limits_{x_1 = 0}^{1}</tex>, то <tex>A_0(0) \cdot A_0(1) = s</tex>
+
# Если <tex>R_1 = \sum</tex>, то <tex>A_0(0) + A_0(1) = s</tex>, если <tex>R_1 = \prod</tex>, то <tex>A_0(0) \cdot A_0(1) = s</tex>.
# Если <tex>Q_i = \sum\limits_{x_i = 0}^{1}</tex>, то <tex> A_i(0) + A_i(1) = A_{i-1}(c_i)</tex>
+
# <tex>\forall i : 1 \le i \le m - 1</tex> если <tex>R_{i+1} = \sum</tex>, то <tex> A_i(0) + A_i(1) = A_{i-1}(c_i)</tex>, если <tex>R_{i+1} = \prod</tex>, то <tex>A_i(0) \cdot A_i(1) = A_{i-1}(c_i)</tex>.
# Если <tex>Q_i = \prod\limits_{x_i = 0}^{1}</tex>, то <tex> A_i(0) \cdot A_i(1) = A_{i-1}(c_i)</tex>
 
 
|proof=
 
|proof=
 
proof
 
proof
 
}}
 
}}

Версия 23:36, 1 июня 2012

Введём понятие арифметизации булевых формул. Пусть нам дана формула [math]\phi(x_1 \ldots x_m)[/math]. Сделаем следующие преобразования и получим формулу [math]A_\phi(x_1, x_2, \ldots, x_m)[/math]:

  • [math]x_i \to x_i[/math];
  • [math]\lnot x \to 1 - x[/math];
  • [math]\varphi \land \psi \to A_\varphi \cdot A_\psi[/math];
  • [math]\varphi \lor \psi \to 1 - (1 - A_\varphi) \cdot (1 - A_\psi)[/math];

Заметим, что [math]|A_\phi| \le C |\phi|[/math] , где [math]C[/math] — некоторая константа.

Лемма (1):
[math]\phi(x_1 \ldots x_m) = A_\phi(x_1, \ldots, x_m)[/math].
Доказательство:
[math]\triangleright[/math]
proof
[math]\triangleleft[/math]

Для арифметизации булевых формул с кванторами добавим еще два правила преобразования:

  • [math]\exists x \varphi(x) \to \sum\limits_{x=0}^{1} A_\varphi(x)[/math];
  • [math]\forall x \varphi(x) \to \prod\limits_{x=0}^{1} A_\varphi(x)[/math].

Будем обозначать через [math]Q_i[/math] квантор, связывающий переменную [math]x_i[/math]. Через [math]R_i[/math] будем обозначать операцию, в которую преобразуется квантор [math]Q_i[/math] в процессе арифметизации.

Заметим, что любую булеву формулу можно привести к виду [math]Q_1 \ldots Q_m \phi(x_1, \ldots, x_m)[/math], где [math]\phi[/math] — формула, не содержащая кванторов. Кроме того, в процессе арифметизации [math]Q_1 \ldots Q_m \phi(x_1, \ldots, x_m)[/math] переходит в [math]R_1 \ldots R_m A_\phi(x_1, \ldots, x_m)[/math]. Поэтому далее будем рассматривать только формулы, которые имеют вид, указанный выше.

Лемма (2):
Пусть [math]Q_1 \ldots Q_m \phi(x_1, \ldots, x_m)[/math] — булева формула с кванторами, переходящая в процессе арифметизации в [math]s = R_1 \ldots R_m A_\phi(x_1, \ldots, x_m)[/math]. [math]c_1, \ldots, c_m[/math] — двоичные константы. Обозначим через [math]A_i(x_{i+1}) = R_{i+2} \ldots R_m A_\phi(c_1, \ldots, c_i, x_{i+1}, \ldots, x_m)[/math], где [math]0 \le i \le m - 1[/math]. Тогда:
  1. Если [math]R_1 = \sum[/math], то [math]A_0(0) + A_0(1) = s[/math], если [math]R_1 = \prod[/math], то [math]A_0(0) \cdot A_0(1) = s[/math].
  2. [math]\forall i : 1 \le i \le m - 1[/math] если [math]R_{i+1} = \sum[/math], то [math] A_i(0) + A_i(1) = A_{i-1}(c_i)[/math], если [math]R_{i+1} = \prod[/math], то [math]A_i(0) \cdot A_i(1) = A_{i-1}(c_i)[/math].
Доказательство:
[math]\triangleright[/math]
proof
[math]\triangleleft[/math]