Арифметизация булевых формул с кванторами — различия между версиями
AndrewD (обсуждение | вклад) |
AndrewD (обсуждение | вклад) |
||
Строка 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>\lnot x \to 1 - x</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>|A_\phi| \le C |\phi|</tex> , где <tex>C</tex> {{---}} некоторая константа. | |
− | Заметим, что | ||
{{Лемма | {{Лемма | ||
Строка 15: | Строка 14: | ||
}} | }} | ||
− | + | Для арифметизации булевых формул с кванторами добавим еще два правила преобразования: | |
− | * <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>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>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>\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>. |
− | |||
|proof= | |proof= | ||
proof | proof | ||
}} | }} |
Версия 23:36, 1 июня 2012
Введём понятие арифметизации булевых формул. Пусть нам дана формула
. Сделаем следующие преобразования и получим формулу :- ;
- ;
- ;
- ;
Заметим, что
, где — некоторая константа.Лемма (1): |
. |
Доказательство: |
proof |
Для арифметизации булевых формул с кванторами добавим еще два правила преобразования:
- ;
- .
Будем обозначать через
квантор, связывающий переменную . Через будем обозначать операцию, в которую преобразуется квантор в процессе арифметизации.Заметим, что любую булеву формулу можно привести к виду
, где — формула, не содержащая кванторов. Кроме того, в процессе арифметизации переходит в . Поэтому далее будем рассматривать только формулы, которые имеют вид, указанный выше.Лемма (2): |
Пусть — булева формула с кванторами, переходящая в процессе арифметизации в . — двоичные константы. Обозначим через , где . Тогда:
|
Доказательство: |
proof |