Исчисление предикатов — различия между версиями
м (rollbackEdits.php mass rollback) |
|||
(не показаны 23 промежуточные версии 9 участников) | |||
Строка 1: | Строка 1: | ||
[[Категория: Математическая логика]] | [[Категория: Математическая логика]] | ||
+ | |||
+ | [[Лекция 3 | <<]][[Лекция 5 | >>]] | ||
==Исчисление предикатов== | ==Исчисление предикатов== | ||
Строка 23: | Строка 25: | ||
аксиомы и правила вывода. | аксиомы и правила вывода. | ||
− | + | === Язык === | |
+ | |||
+ | Добавим к языку исчисления высказываний новые конструкции с предикатами | ||
и получим язык исчисления предикатов. Вот расширенная грамматика: | и получим язык исчисления предикатов. Вот расширенная грамматика: | ||
Строка 43: | Строка 47: | ||
(c) кванторы: всеобщности (<tex> \forall </tex>) и существования (<tex> \exists </tex>). | (c) кванторы: всеобщности (<tex> \forall </tex>) и существования (<tex> \exists </tex>). | ||
− | + | === Аксиомы === | |
+ | |||
+ | |||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | + | Дана некоторая формула <tex>s</tex>. Будем говорить, что подстрока <tex>s_1</tex> строки <tex>s</tex> является подформулой, если она в точности соответствует какому-то одному нетерминалу в дереве разбора строки <tex>s</tex>. | |
}} | }} | ||
− | + | {{Определение | |
− | + | |definition= | |
− | + | Если в формулу входит подформула, полученная по правилам для кванторов (то есть, <tex>\forall x \alpha</tex> или <tex>\exists x \alpha</tex>), то мы будем говорить, что формула <tex>\alpha</tex> находится в области действия данного квантора по переменной <tex>x</tex>. Также, будем говорить, что любая подформула формулы <tex>\alpha</tex> находится в области действия данного квантора. | |
− | + | }} | |
− | |||
+ | {{Определение | ||
+ | |definition= | ||
+ | Если некоторое вхождение переменной <tex>x</tex> находится в области действия квантора по переменной <tex>x</tex>, то такое вхождение мы назовем '''связанным'''. Вхождение переменной <tex>x</tex> непосредственно рядом с квантором (<tex>\forall x \dots</tex>) мы назовем '''связывающим'''. Те вхождения переменных, которые не являются связанными или связывающими, назовем '''свободными'''. Формула, не имеющая свободных вхождений переменных, называется '''замкнутой'''. | ||
+ | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition= | ||
+ | Будем говорить, что переменная <tex>y</tex> свободна для <tex>x</tex> при подстановке в формулу <tex>\psi</tex> (или просто свободна для подстановки вместо <tex>x</tex>), если после подстановки <tex>y</tex> вместо свободных вхождений <tex>x</tex> ни одно ее вхождение не станет связанным. | ||
+ | }} | ||
+ | |||
+ | Чтобы получить список аксиом для исчисления предикатов, возьмем все схемы аксиом исчисления высказываний и дополним их следующими двумя схемами. | ||
+ | Здесь <tex>x</tex> {{---}} переменная, <tex>\psi</tex> {{---}} некоторая формула, <tex>y</tex> {{---}} некоторая формула. | ||
+ | Запись <tex>\psi[x := y]</tex> будет означать результат подстановки <tex>y</tex> в <tex>\psi</tex> вместо всех свободных вхождений <tex>x</tex>. Пусть <tex>y</tex> свободно для подстановки вместо <tex>x</tex>. | ||
(11) <tex>\forall{x}(\psi) \rightarrow (\psi[x := \alpha]) </tex> | (11) <tex>\forall{x}(\psi) \rightarrow (\psi[x := \alpha]) </tex> | ||
Строка 64: | Строка 82: | ||
<tex> \forall y \exists x A(x,y) \rightarrow \exists x A (x,x) </tex>. Однако, оно ей не является. | <tex> \forall y \exists x A(x,y) \rightarrow \exists x A (x,x) </tex>. Однако, оно ей не является. | ||
− | Все аксиомы, порожденные данными схемами в новом языке, мы назовем аксиомами исчисления | + | Пример, когда нарушение свободы для подстановки приводит к противоречию: |
+ | |||
+ | <tex> | ||
+ | \forall{x}(\psi) \to (\psi[x := \alpha]) \\ | ||
+ | \psi := \exists a \lnot P(a) = P(b), x := b, \alpha := a \\ | ||
+ | \forall b \exists a (\lnot P(a) = P(b)) \to \exists a (\lnot P(a) = P(a)) \\ | ||
+ | </tex> | ||
+ | |||
+ | Такой предикат <tex>P</tex>, очевидно, существует (если в предметном множестве больше одного элемента). Тогда | ||
+ | |||
+ | <tex> | ||
+ | \exists a (\lnot P(a) = P(a)) | ||
+ | </tex> | ||
+ | |||
+ | Противоречие, следовательно, <tex>z</tex> должен быть свободен для подстановки вместо <tex>\alpha</tex>. | ||
+ | |||
+ | Все аксиомы, порожденные данными схемами в новом языке, мы назовем аксиомами исчисления | ||
предикатов. | предикатов. | ||
− | + | === Правила вывода === | |
Пусть <tex>x</tex> не входит свободно в <tex>\phi</tex>. Тогда рассмотрим следующие дополнительные | Пусть <tex>x</tex> не входит свободно в <tex>\phi</tex>. Тогда рассмотрим следующие дополнительные | ||
правила вывода исчисления предикатов: | правила вывода исчисления предикатов: | ||
− | |||
<tex> \frac {(\phi) \rightarrow (\psi)} {(\phi) \rightarrow \forall{x}(\psi)}</tex> | <tex> \frac {(\phi) \rightarrow (\psi)} {(\phi) \rightarrow \forall{x}(\psi)}</tex> | ||
Строка 80: | Строка 113: | ||
− | + | Комментарии: | |
− | + | ||
− | + | <!-- По-моему, в следующем абзаце бред. // Андрей Рыбак --> | |
− | + | ||
− | + | "Не входит свободно" - это также важный вопрос. | |
− | + | Рассмотрим формулу <tex>A(x) \rightarrow A(x)</tex>. Легко показать, что такая | |
+ | формула общезначима и доказуема. Однако, <tex>(\exists{x}A(x)) \rightarrow A(x)</tex> | ||
+ | не является общезначимой, если <tex>A(x)</tex> не общезначима: достаточно взять в качестве | ||
+ | оценки свободной переменной <tex>x</tex> то значение, на котором <tex>A(x)</tex> ложна. | ||
+ | Вывод из гипотез также вполне можно расширить на исчисление предикатов. | ||
+ | |||
+ | === Итог === | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | Формальная система, составленная из указанного языка, множества аксиом и множества | + | Формальная система, составленная из указанного языка, множества аксиом и множества правил вывода, называется '''исчислением предикатов'''. |
− | правил вывода, называется исчислением предикатов. | ||
}} | }} | ||
Строка 98: | Строка 136: | ||
функцию <tex>f_{P^k_n}: D^k \rightarrow V</tex>. | функцию <tex>f_{P^k_n}: D^k \rightarrow V</tex>. | ||
− | {{Определение | + | {{Определение |
+ | |id=valid | ||
|definition= | |definition= | ||
− | Формула в исчислении предикатов общезначима, если она | + | Формула в исчислении предикатов общезначима, если она истинна на любом предметном множестве <tex>D</tex>, при любой оценке предикатов, и при |
− | истинна на любом предметном множестве <tex>D</tex>, | + | любых оценках свободных индивидных переменных. |
− | при любой оценке предикатов, и при любых оценках свободных индивидных | ||
− | переменных. | ||
}} | }} | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | Пусть имеется некоторое исчисление предикатов с множеством | + | Пусть имеется некоторое исчисление предикатов с множеством аксиом <tex>A</tex>, и пусть дан некоторый (возможно, пустой) список <tex>\Gamma</tex> ''замкнутых'' формул исчисления предикатов. Тогда, вывод формулы <tex>\alpha</tex> в исчислении с аксиомами <tex>A \cup \Gamma</tex> мы назовем выводом из допущений <tex>\Gamma </tex>, и будем записывать это как <tex>\Gamma \vdash \alpha </tex>. |
− | аксиом | ||
}} | }} | ||
Строка 136: | Строка 172: | ||
|proof=Без доказательства. | |proof=Без доказательства. | ||
}} | }} | ||
− | |||
− | |||
− |
Текущая версия на 19:43, 4 сентября 2022
Исчисление предикатов
Выберем множество истинностных значений
. Также, выберем некоторое предметное множество . n-местным предикатом мы назовем функцию из в . Как и раньше, мы ограничимся классическим множеством -- истина и ложь, но оставляем потенциальную возможность его расширить.Предикаты могут быть 0-местными, в этом случае это хорошо нам известные пропозициональные переменные, принимающие какие-то истинностные значения, в происхождение которых мы не вникаем.
Рассмотрим следующий известный пример: каждый человек смертен, Сократ - человек, следовательно, Сократ - смертен. Мы можем формализовать это выражение с помощью предикатов: множество
- это будет множество всех существ, - предикат "быть смертным", - предикат "быть человеком". Тогда фраза в полу-формальном виде выглядит так: Для каждого , такого, что верно , поэтому поскольку (Сократ), значит, что имеет место (Сократ).Чтобы построить новое исчисление, нам требуется указать 3 компонента: язык, аксиомы и правила вывода.
Язык
Добавим к языку исчисления высказываний новые конструкции с предикатами и получим язык исчисления предикатов. Вот расширенная грамматика:
- <выражение> ::= <импликация>
- <импликация> ::= <дизъюнкция> | <дизъюнкция> <импликация>
- <дизъюнкция> ::= <конъюнкция> | <дизъюнкция> <конъюнкция>
- <конъюнкция> ::= <терм> | <конъюнкция> & <терм>
- <терм>::= <предикат> | <предикат> (<аргументы>) | <переменная><терм> | <переменная><терм>
- <аргументы> ::= <переменная>
- <аргументы> ::= <переменная>,<аргументы>
Добавились 3 новых сущности:
(a) индивидные переменные --- мы будем записывать их маленькими латинскими буквами из начала алфавита
(b) предикаты (они обобщили пропозициональные переменные)
(c) кванторы: всеобщности (
) и существования ( ).Аксиомы
Определение: |
Дана некоторая формула | . Будем говорить, что подстрока строки является подформулой, если она в точности соответствует какому-то одному нетерминалу в дереве разбора строки .
Определение: |
Если в формулу входит подформула, полученная по правилам для кванторов (то есть, | или ), то мы будем говорить, что формула находится в области действия данного квантора по переменной . Также, будем говорить, что любая подформула формулы находится в области действия данного квантора.
Определение: |
Если некоторое вхождение переменной | находится в области действия квантора по переменной , то такое вхождение мы назовем связанным. Вхождение переменной непосредственно рядом с квантором ( ) мы назовем связывающим. Те вхождения переменных, которые не являются связанными или связывающими, назовем свободными. Формула, не имеющая свободных вхождений переменных, называется замкнутой.
Определение: |
Будем говорить, что переменная | свободна для при подстановке в формулу (или просто свободна для подстановки вместо ), если после подстановки вместо свободных вхождений ни одно ее вхождение не станет связанным.
Чтобы получить список аксиом для исчисления предикатов, возьмем все схемы аксиом исчисления высказываний и дополним их следующими двумя схемами.
Здесь — переменная, — некоторая формула, — некоторая формула.
Запись будет означать результат подстановки в вместо всех свободных вхождений . Пусть свободно для подстановки вместо .
(11)
(12)
Заметим, что если взять формулу
, то по схеме аксиом (11), если игнорировать ограничение на свободу для подстановки, следующее утверждение должно быть тавтологией: . Однако, оно ей не является.Пример, когда нарушение свободы для подстановки приводит к противоречию:
Такой предикат
, очевидно, существует (если в предметном множестве больше одного элемента). Тогда
Противоречие, следовательно,
должен быть свободен для подстановки вместо .Все аксиомы, порожденные данными схемами в новом языке, мы назовем аксиомами исчисления предикатов.
Правила вывода
Пусть
не входит свободно в . Тогда рассмотрим следующие дополнительные правила вывода исчисления предикатов:
Добавив эти схемы к схеме для правила Modus ponens исчисления высказываний, мы сможем породить множество правил вывода.
Комментарии:
"Не входит свободно" - это также важный вопрос.
Рассмотрим формулу . Легко показать, что такая
формула общезначима и доказуема. Однако,
не является общезначимой, если не общезначима: достаточно взять в качестве
оценки свободной переменной то значение, на котором ложна.
Вывод из гипотез также вполне можно расширить на исчисление предикатов.
Итог
Определение: |
Формальная система, составленная из указанного языка, множества аксиом и множества правил вывода, называется исчислением предикатов. |
Для задания оценки для выражения в исчислении предикатов необходимо
вместо оценки для переменных в исчислении высказываний ввести
оценку для предикатов: для каждого -местного предиката определить
функцию .
Определение: |
Формула в исчислении предикатов общезначима, если она истинна на любом предметном множестве | , при любой оценке предикатов, и при любых оценках свободных индивидных переменных.
Определение: |
Пусть имеется некоторое исчисление предикатов с множеством аксиом | , и пусть дан некоторый (возможно, пустой) список замкнутых формул исчисления предикатов. Тогда, вывод формулы в исчислении с аксиомами мы назовем выводом из допущений , и будем записывать это как .
Обратите внимание на требование отсутствия свободных переменных в допущениях.
Теорема: |
Исчисление предикатов корректно, т.е. любое доказуемое утверждение общезначимо. |
Доказательство: |
Упражнение. |
Теорема: |
Теорема о дедукции. Если , то |
Доказательство: |
Доказательство разбором случаев. 3 старых случая те же, добавилось 2 новых правила вывода. Упражнение. |
Теорема: |
Исчисление предикатов полно. |
Доказательство: |
Без доказательства. |