Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 3170 / 267 | Оценка: 4.08 / 3.92 | Длительность: 15:40:00
ISBN: 978-5-9556-0110-6
Специальности: Программист, Математик
Лекция 7:

Язык логики предикатов

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >

Семантика: системы и значения формул на их состояниях

Даже приведенных выше небольших примеров достаточно, чтобы понять, что семантика (т.е. значение, смысл) формул логики предикатов зависит от состояния дел в той предметной области, о которой идет речь в формулах, и от значений их свободных переменных. Для того, чтобы ее определить, нужно уточнить, свойства какой предметной области мы собираемся описывать с помощью формул и как в этой области интерпретируются символы предикатов, функций и констант нашего языка.

Определение 7.4. Алгебраической системой или просто системой1В логической литературе для этого понятия испольльзуются также названия структура и интерпретация . Сигнатуры \Sigma называется непустое множество A вместе с отображением, которое каждому n -местному предикатному (функциональному) символу из \Sigma сопоставляет n -местный предикат ( n -местную функцию) на A, а каждой константе из \Sigma - некоторый элемент из A. A называется основным множеством системы. Если множество F имен функций в \Sigma пусто, то соответствующую систему часто называют моделью.

Определенную таким образом систему будем обозначать как \mathcal{A}= <A; \Sigma >, используя для предикатов и функций системы их имена из сигнатуры \Sigma.

Определим теперь интерпретации свободных переменных.

Определение 7.5. Состоянием (оценкой) системы \mathcal{A}=<A; \Sigma> назывется отображение \sigma : Var \to  A, которое каждой переменной x \in  Var сопоставляет ее значение в данном состоянии \sigma (x).

Имея систему и состояние, можно говорить о значениях термов и формул на данном состоянии системы. Мы будем считать, что в определениях ниже зафиксирована некоторая система \mathcal{A}=<A; \Sigma>, будем через \sigma (t) и \sigma (\varphi ) обозначать значение терма t и формулы \phi на состоянии \sigma системы \mathcal{A}. И то, и другое определяется индукцией по построению термов и формул соответственно.

Определение 7.6. Значение терма.

  • Для переменной x \in  Var \sigma (x) уже определено в состоянии \sigma.
  • Если t является константой c \in  C, то \sigma (c) не зависит от \sigma и равно значению этой константы при данной интерпретации
  • (напомним, в интерпретации каждой константе сопоставлен некоторый элемент основного множества).
  • Если t имеет вид f(t1,...,tm), где f^{(m)} \in  F - символ m - местной функции, а t1,...,tm - термы, то \sigma (t) есть f_{A}(\sigma (t_{1}),\dots , \sigma (t_{m})), где fA есть функция, соответствующая символу f в системе \mathcal{A}.

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

Определение 7.7. Значение атомной формулы.

  • Если \varphi =(t_{1} = t_{2}), где t1 и t2 - термы, то \sigma (\varphi )=1, если \sigma (t_{1})=\sigma (t_{2}), и \sigma (\varphi )=0, если \sigma (t_{1}) \ne  \sigma (t_{2}).
  • Пусть \varphi = P^{(0)} - 0 -местный предикатный символ из P и PA - это 0 -местный предикат, сопоставленный ему в \mathcal{A}. Тогда \sigma (P)= P_{A} \in  \{ 1,0\}.
  • Пусть \varphi = P(t_{1},\setminus dots,t_{k}), где P(k) - предикатный k -местный символ из P, t1,...,tk - термы, а PA - это k -местный предикат, сопоставленный P(k) в \mathcal{A}. Тогда

    \sigma(P(t_1,\dots,t_k)) = P_A(\sigma(t_1), \ldots , \sigma(t_k)).

Таким образом, равенство термов на некотором состоянии истинно, если эти термы имеют на этом состоянии одинаковые значения. Для определения истинности предиката от набора термов нужно вычислить их значения на заданном состоянии и проверить, входит ли получившийся набор значений во множество наборов, принадлежащих данному предикату.

Определение 7.8. Значение формулы.

Если \phi - атомная формула, то ее значение \sigma (\varphi ) определено выше. Значения сложных формул определяются следующим образом.

  • Если \varphi = \neg  \varphi _{1}, то \sigma (\varphi ) = \neg  \sigma (\varphi _{1}).
  • Если \phi имеет одну из форм (\theta  \wedge  \psi ), (\theta  \vee  \psi ) или (\theta  \to  \psi ), то значение \sigma (\varphi )
  • равно значению \sigma (\theta ) \wedge  \sigma (\psi ), \sigma (\theta ) \vee  \sigma (\psi ) или \sigma (\theta ) \to  \sigma (\psi ), соответственно.
  • Если \varphi = \forall x \psi, то \sigma (\varphi ) = 1, если \sigma '(\psi ) =1 для \sigma ', которое может отличаться от \sigma только значением переменной x, т.е. такого \sigma ', что \sigma '(y) = \sigma (y) при y \ne  x, иначе \sigma (\varphi ) = 0.
  • Если \varphi = \exists x \psi, то \sigma (\varphi ) = 1, если существует такое состояние \sigma ', которое может отличаться от \sigma только значением переменной x, для которого \sigma '(\psi ) =1, иначе \sigma (\varphi ) = 0.

Прокомментируем два последних пункта. Для истинности формулы вида \forall x \psi (она читается: "для всех x имеет место (выполняется, истинно, справедливо) \psi ") на состоянии \sigma нужно убедиться в том, что формула \psi истинна при замене x любым элементом a \in  A, т.е. на любом состоян ии, получающемся из \sigma изменением значения на переменной x: \sigma (x)=a. Для истинности формулы вида \exists x \psi (она читается: "существует такое x, что имеет место (выполняется, истинно, справедливо) \psi ") на состоянии \sigma достаточно найти такое значение a \in  A, что при подстановке a вместо x в формулу \psi она будет истинна при неизменившихся значениях остальных свободных переменных.

Из приведенных определений нетрудно вывести, что значение формулы на некотором состоянии зависит лишь от значений ее свободных переменных в этом состоянии.

Предложение 7.1. Пусть \mathcal{A} - система сигнатуры \Sigma, \phi - формула той же сигнатуры, V(\varphi ) - множество ее свободных переменных. Тогда для любых двух состояний \mathcal{A} \sigma _{1} и \sigma _{2}, совпадающих на V(\varphi ) (т.е. таких, что для всякой x \in  V(\varphi ) \sigma _{1}(x) = \sigma _{2}(x) ), имеет место равенство \sigma _{1}(\varphi ) = \sigma _{2}(\varphi ).

Доказательство получается индукцией по построению формулы \phi. Действительно, утверждение, очевидно, справедливо для значений термов и атомных формул. Из предположения о его справедливости для формул \varphi _{1} и \varphi _{2} его легко перенести на формулы вида \neg  \varphi _{1} и \varphi _{1} \circ \varphi _{2}, где \circ \in  \{ \wedge , \vee , \to \}. ( Проведите это рассуждение самостоятельно!). Пусть теперь \varphi  = Qx \varphi _{1}, где Q \in  \{ \forall , \exists \}, а x \in  Var. Тогда V(\varphi  ) = V(\varphi _{1} ) \setminus  \{ x\}. Пусть \sigma _{1} и \sigma _{2} - состояния, совпадающие на V(\varphi ). Рассмотрим множества состояний, отличающихся от них только на x: \sigma ^{x}_{1}=\{  \sigma ' | \sigma '(y)=\sigma _{1}(y)  \ при \ y \ne x\} и \sigma ^{x}_{2}\} ==\{  \sigma ''  | \sigma ''(y)=\sigma _{2}(y)\  при \ y \ne x \}. Для каждого состояния \sigma ' \in  \sigma ^{x}_{1} в \sigma ^{x}_{2} имеется состояние \sigma '', совпадающее с \sigma ' на V(\varphi _{1} ). Верно и обратное. Поэтому по предположению индукции в \sigma ^{x}_{1} имеется состояние \sigma ', для которого \sigma '(\varphi _{1}) = 1 тогда и только тогда, когда в \sigma ^{x}_{2}\} имеется состояние \sigma '', для которого \sigma '' (\varphi _{1}) = 1. Отсюда и из определения значения формулы \varphi  = Qx \varphi _{1} следует, что \sigma _{1}(\varphi ) = \sigma _{2}(\varphi ).

Из этого предложения немедленно вытекает

Следствие. Значение замкнутой формулы не зависит от состояния, на котором она оценивается, т.е. либо на всех состояниях системы она истинна, либо на всех состояниях системы эта формула ложна.

Определение 7.9. Формула \phi называется истинной на системе \mathcal{A}, если для любого состояния \sigma этой системы \sigma (\varphi ) = 1. В этом случае пишем \mathcal{A} \models \varphi.

Формула \phi называется тождественно истинной (общезначимой), если она истинна на всех алгебраических системах своей сигнатуры. В этом случае пишем \models \varphi. Тождественно истинные формулы называют также законами логики.

Пример 7.4. В качестве примера рассмотрим следующую систему \mathcal{A}_1=  <A_1; \Sigma_1> для определенной выше примере 7.2 сигнатуры \Sigma _{1}.

Ее основное множество A1 включает множество натуральных чисел N={0, 1, 2, ... }, для которых истинен предикат число и множество людей { петр, джон, ольга, иван, мария }, для которых истинен предикат человек (мы используем для объектов-людей имена, начинающиеся со строчных букв, чтобы отличить их от имен констант из сигнатуры). Пусть, кроме того, A1 включает специальный объект \infty, соответствующий неопределенному (или ошибочному) значению. Константы интерпретируются естественным образом: числовые - соответствующими числами, имена людей - людьми с теми же именами.

x отец(x) лучший_друг(x) зарплата(x)
петр иван джон 20
джон петр ольга 35
ольга джон петр 20
иван \infty мария 40
мария иван петр 30

Функция + на числах интерпретируется обычным сложением, а в остальных случаях ее значением является \infty. Интерпретации остальных функций заданы в таблице (для числовых аргументов все они равны \infty ). Предикат \le интерпретируется обычным образом на числах и ложен, если хоть один его аргумент не число ( мы будем для него использовать стандартную форму записи x <= y вместо <=(x,y) ). Остальные предикаты зададим перечислением пар, на которых они истинны:

живут_рядом = { (ольга,петр), (петр, ольга), (иван, джон), (джон, иван), (мария, ольга), (ольга, мария) }

родственники = { (ольга,петр), (петр, ольга), (джон, петр), (петр, джон), (ольга, джон), (джон, ольга), (иван, мария), (мария, иван) }.

Пусть множество переменных Var= {x, y, z, i, n, k, ...} и состояние \sigma определяет их значения следующим образом:

\sigma(x)=\textit{петр}, \sigma(y)=\textit{ольга}, \sigma(z)=\textit{иван}, \sigma( i)= 1, \sigma( n)= 30, \sigma( k)= 2.

Определим значения некоторых термов на \sigma:

\sigma(+(7, +(2, 6)) = 15,\sigma(+(i, +(2, n)) = 33, \\\sigma(\textit{отец( лучший\_друг(
мария))) = иван , 
}\\\sigma(\textit{зарплата(лучший\_друг(отец(x))) =
30,}\\\sigma(+(\textit{зарплата}(y), k))= 22,\ \
\sigma(+(x, k))= \infty.

Рассмотрим теперь введенные выше формулы

\varphi_1= \forall x( \textit{человек(x)} \rightarrow \exists
y (\textit{человек(y)}
\wedge \textit{живут\_рядом( x,y ) ) }
и

\varphi_2= \exists
y[\textit{человек(y)} \wedge( \forall x \ \textit{родственники( x, y )} \vee \\ \vee
(\neg \textit{живут\_рядом}( x,y )  \wedge (  35 \leq
\textit{зарплата(y)}) )].

Чтобы оценить первую из них на состоянии \sigma, мы должны проверить ее подформулу (человек(x) \to  \exists y (человек(y) \wedge  живут\_ рядом( x,y )) на всех состояниях \sigma ', совпадающих с \sigma на всех переменных кроме, быть может, x. Если \sigma '(x) - число или \infty, то \sigma '(человек(x))=0, а вся импликация = 1. Если же человек(\sigma '(x)) =1, т. е \sigma '(x) \in  \{  петр, джон, ольга, иван, мария\}, то легко проверить, что для каждого из этих значений x найдется такое значение \sigma ''(y), для которого выполнено человек(\sigma ''(y)), и что имеет место живут\_ рядом( \sigma '(x),\sigma ''(y) ). Например, если \sigma '(x) = джон, то в качестве \sigma ''(y) следует взять иван. Таким образом формула (человек(y) \wedge  живут\_рядом( x,y ) ) будет иметь значение 1 на состоянии \sigma '', совпадающем с \sigma ' на всех переменных кроме, быть может, y. Следовательно, мы показали, что \sigma ( \varphi _{1}) = 1. Заметим, что так как \varphi _{1} - замкнутая формула, то на самом деле, мы показали, что она имеет значение 1 на любом состоянии системы \mathcal{A}_1, т.е. что \mathcal{A}_1 \models \varphi_1.

Для оценки значения \sigma ( \varphi _{2}) нужно постараться найти такого человека \tilde{y}, для которого выполняется хотя бы одна из подформул \forall x \ \textit{родственники}( x, \tilde{y} ) или (\neg \textit{живут\_рядом(петр} ,\tilde{y} ) \wedge (\textit{зарплата}(\tilde{y}) \geq 35) ) (напомним, что \sigma (x) = петр ). Из определения предиката родственники в \mathcal{A}_1 следует, что первая из этих формул не выполняется ни для какого \tilde{y}. Что касается второй подформулы, то она верна при \tilde{y} = иван или \tilde{y} = джон, поскольку оба они не являются соседями петр а и имеют зарплату >= 35. Таким образом, \sigma (\varphi _{2}) = 1.

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Елена Алексеевская
Елена Алексеевская

Это в лекции 3.

Татьяна Дембелова
Татьяна Дембелова

Почему в вводной лекции курса Основы дискретной математики одним из свойств отношения частичного порядка упоминается антирефлексивность? Посмотрела в других источниках, там -0  рефлексивность... http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0