Вопрос 9: Исчисление предикатов. Правила вывода на основе исчисления предикатов.


Исчисление предикатов

Выберем множество истинностных значений VV. Также, выберем некоторое предметное множество DD. n-местным предикатом мы назовем функцию из DnD^n в VV. Как и раньше, мы ограничимся классическим множеством VV - истина и ложь, но оставляем потенциальную возможность его расширить.

Предикаты могут быть 0-местными, в этом случае это хорошо нам известные пропозициональные переменные, принимающие какие-то истинностные значения, в происхождение которых мы не вникаем.

Рассмотрим следующий известный пример: каждый человек смертен, Сократ - человек, следовательно, Сократ - смертен. Мы можем формализовать это выражение с помощью предикатов: множество DD - это будет множество всех существ, S(x)S(x) - предикат "быть смертным", H(x)H(x) - предикат "быть человеком". Тогда фраза в полу-формальном виде выглядит так: Для каждого xx, такого, что H(x)H(x) верно S(x)S(x), поэтому поскольку H(Sokrat)H(Sokrat), значит, что имеет место S(SokratS(Sokrat.

Чтобы построить новое исчисление, нам требуется указать 3 компонента: язык, аксиомы и правила вывода.

Язык

Добавим к языку исчисления высказываний новые конструкции с предикатами и получим язык исчисления предикатов. Вот расширенная грамматика:

  • <выражение> ::= <импликация>
  • <импликация> ::= <дизъюнкция> | <дизъюнкция> \rightarrow <импликация>
  • <дизъюнкция> ::= <конъюнкция> | <дизъюнкция> \lor <конъюнкция>
  • <конъюнкция> ::= <терм> | <конъюнкция> \land <терм>
  • <терм>::= <предикат> | <предикат> (<аргументы>) | \forall <переменная><терм> | \exists <переменная><терм>
  • <аргументы> ::= <переменная>
  • <аргументы> ::= <переменная>,<аргументы>

Добавились 3 новых сущности:

  1. индивидные переменные - мы будем записывать их маленькими латинскими буквами из начала алфавита
  2. предикаты (они обобщили пропозициональные переменные)
  3. кванторы: всеобщности (\forall) и существования (\exists).

Аксиомы

Определение: Дана некоторая формула ss. Будем говорить, что подстрока s1s_1 строки ss является подформулой, если она в точности соответствует какому-то одному нетерминалу в дереве разбора строки ss.

Определение: Если в формулу входит подформула, полученная по правилам для кванторов (то есть, xα\forall x \alpha или xα\exists x \alpha), то мы будем говорить, что формула α\alpha находится в области действия данного квантора по переменной xx. Также, будем говорить, что любая подформула формулы α\alpha находится в области действия данного квантора.

Определение: Если некоторое вхождение переменной xx находится в области действия квантора по переменной xx, то такое вхождение мы назовем связанным. Вхождение переменной xx непосредственно рядом с квантором x...\forall x... мы назовем связывающим. Те вхождения переменных, которые не являются связанными или связывающими, назовем свободными. Формула, не имеющая свободных вхождений переменных, называется замкнутой.

Определение: Будем говорить, что переменная y свободна для xx при подстановке в формулу ψ\psi (или просто свободна для подстановки вместо xx), если после подстановки y вместо свободных вхождений xx ни одно ее вхождение не станет связанным.

Чтобы получить список аксиом для исчисления предикатов, возьмем все схемы аксиом исчисления высказываний и дополним их следующими двумя схемами. Здесь xx — переменная, ψ\psi — некоторая формула, yy — некоторая формула. Запись ψ\psi[x:=y] будет означать результат подстановки yy в ψ\psi вместо всех свободных вхождений xx. Пусть yy свободно для подстановки вместо xx.

(11) x(ψ)(ψ[x:=α]) \forall x (\psi) \to (\psi[x := \alpha])

(12) (ψ[x:=α])x(ψ) (\psi[x := \alpha]) \to \exists x (\psi)

Заметим, что если взять формулу xA(x,y)\exists x A(x, y), то по схеме аксиом (11), если игнорировать ограничение на свободу для подстановки, следующее утверждение должно быть тавтологией: yxA(x,y)xA(x,x)\forall y \exists x A(x, y) \to \exists x A(x, x). Однако, оно ей не является.

Пример, когда нарушение свободы для подстановки приводит к противоречию:

x(ψ)(ψ[x:=α]) \forall x(\psi) \to (\psi[x := \alpha])

ψ:=a¬P(a)=P(b),x:=b,α:=a \psi := \exists a \neg P(a) = P(b), x := b, \alpha := a

ba(¬P(a)=P(b))a(¬P(a)=P(a)) \forall b \exists a (\lnot P(a) = P(b)) \to \exists a (\lnot P(a) = P(a))

Такой предикат PP, очевидно, существует (если в предметном множестве больше одного элемента). Тогда

a(¬P(a)=P(a)) \exists a (\lnot P(a) = P(a))

Противоречие, следовательно, zz должен быть свободен для подстановки вместо α\alpha.

Все аксиомы, порожденные данными схемами в новом языке, мы назовем аксиомами исчисления предикатов.

Правила вывода на основе исчисления предикатов

Пусть xx не входит свободно в ϕ\phi. Тогда рассмотрим следующие дополнительные правила вывода исчисления предикатов:

(ψ,ψ)(ϕ)ϕ \frac {(\psi, \psi) \rightarrow (\phi)} {\phi}

(ϕ)(ψ)(ϕ)x(ψ) \frac {(\phi) \rightarrow (\psi)} {(\phi) \rightarrow \forall{x}(\psi)}

(ψ)(ϕ)x(ψ)(ϕ) \frac {(\psi) \rightarrow (\phi)} {\exists{x}(\psi) \rightarrow (\phi)}

results matching ""

    No results matching ""