Предикаты и кванторы Понятие предиката Определение 1 Предикат - утверждение, которое содержит переменные, принимающие значение $1$ или $0$ (истинно или ложно) в зависимости от значений переменных. Пример 1 Например, выражение $x=x^5$ является предикатом, т.к. оно является истинным при $x=0$ или $x=1$ и ложным при всех остальных значениях $x$. Определение 2 Множество, на котором предикат принимает только истинные значения, называется множеством истинности предиката $I_p$. Замечание 1 Предикатом в программировании является функция, которая принимает один или более аргументов и возвращает значения булева типа. Предикат называется тождественно-истинным, если на любом наборе аргументов он принимает истинное значение: $P (x_1, \dots, x_n)=1$ Предикат называется тождественно-ложным, если на любом наборе аргументов он принимает ложное значение: $P (x_1, \dots, x_0)=0$ Предикат называется выполнимым, если хотя бы на одном наборе аргументов он принимает истинное значение. Т.к. предикаты могут принимать только два значения (истинно/ложно или $0/1$), то к ним можно применять все операции алгебры логики: отрицание, конъюнкция, дизъюнкция и т.д. Примеры предикатов Пусть предикат $R(x, y)$: $«x = y»$ обозначает отношение равенства, где $x$ и $y$ принадлежат множеству целых чисел. В этом случае предикат R будет принимать истинное значение для всех равных $x$ и $y$. Другой пример предиката -- РАБОТАЕТ($x, y, z$) для отношения «$x$ работает в городе y в компании $z$». Еще один пример предиката -- НРАВИТСЯ($x, y$) для «x нравится y» для $x$ и $y$, которые принадлежат $M$ -- множеству всех людей. Таким образом, предикатом является все то, что утверждается или отрицается о субъекте суждения. Операции над предикатами Рассмотрим применение операций алгебры логики к предикатам. Логические операции: Определение 3 Конъюнкция двух предикатов $A(x)$ и $B(x)$ -- предикат , который принимает истинное значение при тех и только тех значениях $x$ из $T$, при которых каждый из предикатов принимает истинное значение, а ложное значение -- во всех остальных случаях. Множество истинности $T$ предиката -- пересечение множеств истинности предикатов $A(x)$ и $B(x)$. Например: предикат $A(x)$: «$x$ -- чётное число», предикат $B(x)$: «$x$ делится на $5$». Таким образом, предикатом будет выражение «$x$ -- чётное число и делится на $5$» или «$x$ делится на $10$». Определение 4 Дизъюнкция двух предикатов $A(x)$ и $B(x)$ -- предикат , который принимает ложное значение при тех и только тех значениях $x$ из $T$, при которых каждый из предикатов принимает ложное значение и принимает истинное значение во всех остальных случаях. Множество истинности предиката -- объединение областей истинности предикатов $A(x)$ и $B(x)$. Определение 5 Отрицание предиката $A(x)$ -- предикат, который принимает истинное значение при всех значениях $x$ из $T$, при которых предикат $A(x)$ принимает ложное значение и наоборот. Множество истинности предиката $A(x)$ -- дополнение $T'$ к множеству $T$ в множестве $x$. Определение 6 Импликация предикатов $A(x)$ и $B(x)$ -- предикат , который является ложным при тех и только тех значениях $x$ из $T$, при которых $A(x)$ -- истинно, а $B(x)$ -- ложно, и принимает истинное значение во всех остальных случаях. Читается: «Если $A(x)$, то $B(x)$». Пример 2 Пусть $A(x)$: «Натуральное число $x$ делится на $3$»; $B(x)$: «Натуральное число $x$ делится на $4$». Составим предикат: «Если натуральное число $x$ делится на $3$, то оно делится и на $4$». Множество истинности предиката -- объединение множества истинности предиката $B(x)$ и дополнения к множеству истинности предиката $A(x)$. Над предикатами помимо логических операций можно выполнять квантовые операции: применение квантора всеобщности, квантора существования и т.д. Кванторы Определение 7 Кванторы -- логические операторы, применение которых к предикатам превращает их в ложные или истинные высказывания. Определение 8 Квантор -- логические операции, которые ограничивают область истинности предиката и создают высказывание. Чаще всего используют кванторы: квантор всеобщности (обозначается символом $\forall x$) -- выражение «для всех $x$» («для любого $x$»); квантор существования (обозначается символом $\exists x$) -- выражение «существует $x$ такое, что... »; квантор единственности и существования (обозначается $\exists !x$) -- выражение «существует точно одно такое $x$, что... ». В математической логике существует понятие связывание или квантификация, которые обозначают приписывание квантора к формуле. Примеры применения кванторов Пусть -- предикат «$x$ кратно $7$». С помощью квантора всеобщности можно записать следующие ложные высказывания: 1. любое натуральное число делится на $7$; 2. каждое натуральное число делится на $7$; 3. все натуральные числа делятся на $7$; который будет иметь вид: Рисунок 1. Для записи истинных высказываний используем квантор существования: 1. существуют натуральные числа, которые делятся на $7$; 2. найдётся натуральное число, которое делится на $7$; 3. хотя бы одно натуральное число делится на $7$. Запись будет иметь вид: Рисунок 2. Пусть на множестве $x$ простых чисел задан предикат : «Простое число является нечетным». Поставив перед предикатом слово «любое», получим ложное высказывание: «Любое простое число является нечетным» (например, $2$ является простым четным числом). Поставим перед предикатом слово «существует» и получим истинное высказывание: «Существует простое число , которое является нечетным» (например, $x=3$ ). Таким образом, предикат можно превратить в высказывание, если поставить перед предикатом квантор. Операции над кванторами Для построения отрицания высказываний, которые содержат кванторы, применяется правило отрицания кванторов: Рисунок 3. Рассмотрим предложения и выделим среди них предикаты, указав область истинности каждого из них: Рисунок 4.