EssayAI
Блог
Блог
Математика и алгоритмы

Предварённая нормальная форма: приведение предикатов

19 июня 2026Время чтения: 8 минут
#предварённая нормальная форма#кванторы#логика предикатов#сколемизация#префикс и матрица
Предварённая нормальная форма: приведение предикатов

Предварённая нормальная форма (ПНФ, она же пренексная) - это стандартный вид формулы логики предикатов, в котором все кванторы собраны в начале, а дальше идёт бескванторное ядро. К нему приводят перед сколемизацией, перед проверкой выполнимости методом резолюций и просто чтобы увидеть логическую структуру утверждения. Приведение всегда выполнимо и состоит из нескольких механических шагов: убрать импликации, протолкнуть отрицания внутрь, развести одноимённые переменные и вынести кванторы наружу. Ниже разберём каждый шаг и типичные места, где студенты теряют эквивалентность. Если нужно прогнать конкретную формулу, соберите запрос в форме ниже и получите пошаговый вывод.

Что такое предварённая нормальная форма

Формула находится в предварённой нормальной форме, если она имеет вид

Q1x1Q2x2QnxnM,Q_1 x_1\, Q_2 x_2\, \ldots\, Q_n x_n\, M,

где каждый QiQ_i - это квантор всеобщности \forall или существования \exists, а MM - бескванторная формула, называемая матрицей. Цепочка кванторов Q1x1QnxnQ_1 x_1 \ldots Q_n x_n называется префиксом. Никакого квантора внутри матрицы быть не должно: они все вынесены влево.

Простой пример. Формула xy(P(x)Q(x,y))\forall x\, \exists y\, (P(x) \to Q(x, y)) уже в ПНФ: префикс xy\forall x\, \exists y, матрица P(x)Q(x,y)P(x) \to Q(x, y). А формула xP(x)yQ(y)\forall x\, P(x) \to \exists y\, Q(y) не в ПНФ - квантор y\exists y стоит внутри, его ещё предстоит вынести наружу.

Ключевая теорема: для любой формулы логики предикатов существует логически эквивалентная ей формула в предварённой нормальной форме. То есть приведение не меняет истинностного значения ни на одной интерпретации - в отличие от последующей сколемизации, которая сохраняет лишь выполнимость.

Структура предварённой нормальной формы: слева цепочка кванторов префикс, справа бескванторная матрица
Структура предварённой нормальной формы: слева цепочка кванторов префикс, справа бескванторная матрица

Зачем приводить к ПНФ

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

  • подготовить формулу к сколемизации - устранению кванторов существования через функции Сколема; сколемизация определена именно для пренексных формул;
  • получить клаузальную форму для метода резолюций в автоматическом доказательстве теорем;
  • проверить логическую структуру утверждения: порядок \forall и \exists в префиксе сразу показывает, от чего зависит выбор объекта;
  • сравнить две формулы на эквивалентность, приведя обе к каноническому виду.

Особенно важен порядок кванторов. xyR(x,y)\forall x\, \exists y\, R(x, y) и yxR(x,y)\exists y\, \forall x\, R(x, y) - это разные утверждения: в первом yy выбирается под каждое xx, во втором один yy годится для всех xx. Поэтому при выносе кванторов их относительный порядок менять нельзя.

Шаг 1: убрать импликации и эквиваленции

Кванторы удобно выносить только из формул, построенных на ¬\neg, \land, \lor. Поэтому сначала избавляемся от \to и \leftrightarrow по тождествам:

AB¬AB,AB(¬AB)(¬BA).\begin{aligned} A \to B &\equiv \neg A \lor B,\\ A \leftrightarrow B &\equiv (\neg A \lor B) \land (\neg B \lor A). \end{aligned}

Эквиваленцию раскрывают именно так, а не как (AB)(¬A¬B)(A \land B) \lor (\neg A \land \neg B) - обе формы верны, но первая короче ведёт к ПНФ. После этого шага в формуле остаются только отрицания, конъюнкции и дизъюнкции.

Шаг 2: протолкнуть отрицания к атомам

Теперь загоняем ¬\neg внутрь, к атомарным предикатам, по законам де Моргана и правилам отрицания кванторов:

¬(AB)¬A¬B,¬(AB)¬A¬B,¬xAx¬A,¬xAx¬A.\begin{aligned} \neg(A \land B) &\equiv \neg A \lor \neg B,\\ \neg(A \lor B) &\equiv \neg A \land \neg B,\\ \neg \forall x\, A &\equiv \exists x\, \neg A,\\ \neg \exists x\, A &\equiv \forall x\, \neg A. \end{aligned}

Двойное отрицание снимаем: ¬¬AA\neg\neg A \equiv A. Результат этого шага - негативная нормальная форма, где отрицания стоят только перед атомами. Самая частая ошибка здесь - забыть, что отрицание переключает квантор: ¬\neg\forall становится \exists, а не остаётся \forall.

Отрицание переключает квантор: не для всех икс равно существует икс с отрицанием
Отрицание переключает квантор: не для всех икс равно существует икс с отрицанием

Шаг 3: переименовать связанные переменные

Перед выносом кванторов нужно убедиться, что никакая переменная не связана двумя разными кванторами и нигде не встречается одновременно как связанная и свободная. Иначе при вытаскивании квантора наружу он случайно «захватит» чужое вхождение и формула изменит смысл.

Возьмём xP(x)xQ(x)\forall x\, P(x) \lor \exists x\, Q(x). Здесь xx под \forall и xx под \exists - формально разные переменные, но с одним именем. Переименуем второе: xP(x)zQ(z)\forall x\, P(x) \lor \exists z\, Q(z). Эта операция называется α\alpha-преобразованием (переименование связанной переменной) и всегда даёт эквивалентную формулу. Правило простое: давайте каждому квантору своё уникальное имя переменной - тогда захвата на следующем шаге не случится.

Пропуск переименования - причина номер один неверной ПНФ. Если две подформулы используют переменную с одним именем, после выноса квантор накроет обе, и вы получите неэквивалентную формулу.

Шаг 4: вынести кванторы в префикс

Когда имена разведены, кванторы выносятся наружу по законам пронесения. Главное условие: переменная квантора не входит свободно в ту подформулу, через которую мы его протаскиваем (после шага 3 это гарантировано). Базовые тождества:

(xA)Bx(AB),(xA)Bx(AB),(xA)Bx(AB),(xA)Bx(AB).\begin{aligned} (\forall x\, A) \land B &\equiv \forall x\, (A \land B),\\ (\exists x\, A) \lor B &\equiv \exists x\, (A \lor B),\\ (\forall x\, A) \lor B &\equiv \forall x\, (A \lor B),\\ (\exists x\, A) \land B &\equiv \exists x\, (A \land B). \end{aligned}

Аналогичные равенства работают, когда квантор стоит во втором аргументе. Кванторы вытягиваем по одному, сохраняя их взаимный порядок. Когда в матрице не остаётся ни одного квантора, формула в ПНФ. Чтобы не запутаться, какая связка к чему относится при раскрытии импликаций, держите в голове приоритет логических операций в выражении.

Полный пример приведения

Приведём xP(x)yQ(y)\forall x\, P(x) \to \exists y\, Q(y) к ПНФ.

  1. Убираем импликацию: ¬(xP(x))yQ(y)\neg(\forall x\, P(x)) \lor \exists y\, Q(y).
  2. Проталкиваем отрицание: ¬xP(x)x¬P(x)\neg\forall x\, P(x) \equiv \exists x\, \neg P(x), получаем x¬P(x)yQ(y)\exists x\, \neg P(x) \lor \exists y\, Q(y).
  3. Переименование не требуется: xx и yy уже разные.
  4. Выносим кванторы: xy(¬P(x)Q(y))\exists x\, \exists y\, (\neg P(x) \lor Q(y)).

Префикс xy\exists x\, \exists y, матрица ¬P(x)Q(y)\neg P(x) \lor Q(y) - формула в предварённой нормальной форме.

Цепочка преобразований формулы от импликации к виду с двумя кванторами существования впереди
Цепочка преобразований формулы от импликации к виду с двумя кванторами существования впереди

ПНФ и сколемизация

После ПНФ обычно идёт сколемизация - устранение \exists. Каждый квантор существования заменяют на функцию Сколема от всех охватывающих его \forall-переменных. Для xyR(x,y)\forall x\, \exists y\, R(x, y) получаем xR(x,f(x))\forall x\, R(x, f(x)): yy зависит от xx, поэтому это функция, а не константа. Если \exists не стоит ни под одним \forall, его заменяют константой Сколема (нульместной функцией).

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

Частые ошибки

  • Забытое переименование переменных. Два квантора с именем xx после выноса сливаются в один диапазон связывания - формула меняет смысл. Сначала разводим имена, потом выносим.
  • Перестановка \forall и \exists. xy\forall x\, \exists y и yx\exists y\, \forall x не эквивалентны. При выносе сохраняйте исходный порядок кванторов.
  • Отрицание не переключает квантор. ¬xA\neg\forall x\, A - это x¬A\exists x\, \neg A, а не x¬A\forall x\, \neg A. То же для ¬\neg\exists.
  • Импликация не раскрыта. Пытаться выносить кванторы прямо из ABA \to B опасно: xP(x)B\forall x\, P(x) \to B даёт x(P(x)B)\exists x\, (P(x) \to B), потому что левая часть импликации меняет квантор. Проще сначала перейти к ¬AB\neg A \lor B.
  • Сколемизацию путают с приведением к ПНФ. Это разные операции: ПНФ сохраняет эквивалентность, сколемизация - только выполнимость.

FAQ

Всегда ли можно привести формулу к ПНФ? Да. Для любой формулы логики предикатов существует логически эквивалентная ей предварённая нормальная форма. Алгоритм из четырёх шагов конечен и всегда завершается.

Единственна ли предварённая нормальная форма? Нет. У одной формулы есть много эквивалентных ПНФ - порядок выноса независимых кванторов и форма матрицы могут различаться. Канонической делает её уже последующий переход к клаузальной форме.

Чем префикс отличается от матрицы? Префикс - это вынесенная вперёд цепочка кванторов Q1x1QnxnQ_1 x_1 \ldots Q_n x_n. Матрица - оставшаяся бескванторная часть формулы. Вместе они и образуют ПНФ: префикс плюс матрица.

Коротко

Предварённая нормальная форма - это вид «все кванторы спереди, бескванторная матрица сзади». Приведение всегда возможно и эквивалентно: убираем импликации, проталкиваем отрицания к атомам (помня, что они переключают кванторы), переименовываем связанные переменные, чтобы избежать захвата, и выносим кванторы наружу с сохранением их порядка. ПНФ - обязательный шаг перед сколемизацией и методом резолюций; в отличие от неё, сама ПНФ полностью сохраняет смысл исходной формулы.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также