Следующая
логика
[предыдущая глава]  [оглавление]  [следующая глава]

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

A B = A & ~B & ~ (A & ~B)    (1)

- это определение операции "", которую будем называть "общим следованием". Математические тонкости изложены в первой части. Здесь мы рассмотрим эту операцию в более популярном изложении и с прицелом на практические применения.

Поясним, что такое A и B. Это - особые формулы, выражающие истинность двух высказываний - посылки и следствия. В первой части мы рассмотрели некоторую строго заданную совокупность возможных формул, под названием "расширенная булева алгебра" (РБА). В нее входят так называемые "предикаты", которые очень удобны для формализации истинности текстов на естественном языке. Более того, на практике, скорее всего, ничто не помешает расширить эту совокупность формул еще сильнее, введя алгебраические операции, операции над множествами, классами, и тому подобное.

В этих формулах могут встречаться переменные - свободные и связанные. Если там одни константы и связанные переменные, то результат вычисления формулы - постоянная величина true или false. Если там есть свободные переменные, то формула будет выражать не константу, а функцию, зависящую от этих переменных, и дающую результат true или false в зависимости от значений, подставляемых на место этих переменных. Связанные переменные дальше нас интересовать не будут, только свободные. Будем говорить просто "переменные", имея в виду именно свободные переменные.

Итак, у нас есть две формулы A и B. Теперь надо вычислить значение формулы A B. Формула (1) показывает, как оно вычисляется. Справа от знака равенства выписана другая формула, по которой происходит вычисление формулы A B.

В ней вы можете увидеть символ "". Обычно он применяется для обозначения квантора существования, но тогда рядом с квантором должна быть кванторная переменная. В данном случае это - не совсем квантор, это - замыкание. Мы уже объясняли, что это такое. На всякий случай (для тех, кто начал читать "с самого интересного места") поясню еще раз: замыкание - это серия из нескольких кванторов существования, идущих подряд, а в качестве кванторных переменных берутся последовательно все свободные переменные формулы, стоящей справа от квантора. Таким образом, замыкание связывает все переменные, оставшиеся свободными, и в результате остается не функция, а просто константа: true или false. Вернее, получается три константы - одна от формулы A, одна от формулы ~B и одна от формулы (A & ~B). Дальше останется только подставить эти константы в формулу, вычислить одно отрицание "~" и две конъюнкции "&" и получить результат.

Таким образом, вычисление формулы A B сводится к вычислению формул A и B. Однако, в отличии от многих других логическии операций (вроде "&" или "~") для ее вычисления недостаточно знания только окончательного результата вычисления A или B в виде константы. Вместо этого надо знать A и B в виде формулы, в которой, возможно, есть переменные, и знать, что это за переменные.

Подобного рода операции называют функторами. Пример функтора - определенный интеграл. Мы не можем сказать, чему равен интеграл функции на отрезке, зная лишь значения функции на концах отрезка. Мы еще должны иметь возможность вычислить значения функции в любой точке отрезка. То же самое с производной: чтобы вычислить значение производной в точке, надо иметь возможность вычислить значения функции в окрестностях точки, а не только в этой точке. Другие примеры функторов - кванторы, пределы, замыканий. Ну и вот эта операция общего следования - тоже функтор. Чтобы ее вычислить, недостаточно знать истинность формулы A или B для какой-то одной комбинации значений, подставленных на место переменной, надо знать истинность для любой допустимой комбинации.

Если формула (1) кажется трудной для запоминания, обратите внимание на ее структуру. Сначала утверждается, что при некоторой (хотя бы одной) комбинации значений переменных A истинно. Затем, что при некоторой (хотя бы одной) комбинации значений переменных B ложно. Затем, говорится, что этого никогда не случается одновременной: ни при какой комбинации значений переменных не будет одновременно истинно A и ложно B. Это можно выразить еще короче, хотя и на нестрогом языке:

A B истинно, если A бывает истинным, B - ложным, но не то и другое одновременно.

Теперь перейдем к частному следованию. Сначала пример из другой области математики. Функция sin(x) - это синус. Теперь подставим некоторое число на место x, получим, например, sin(0,7). Это - синус? Ну... в каком-то смысле да, синус от 0,7. А sin(y) - синус? Да, просто переменная-аргумент другая. А sin(cos(x)) - синус? В каком-то смысле да, это синус от другой функции - от косинуса.

Примерно так же обстоит дело с общим следованием. В формуле A B внутри формул A и B может быть некоторое количество переменных. На место этих переменных (всех или только некоторых) можно подставить формулы. В результате получатся новые формулы A' и B'.

Тут надо оговорить кое-какие ограничения. Они вполне обычны, но для перестраховки. Во-первых, если некоторая переменная встречается несколько раз в формулах A и B, то должны быть заменены все ее вхождения в обоих формулах и заменены на одно и то же. Во-вторых, формула, которая ставится на место каждой переменной должна иметь некоторое значение, постоянное или зависящее от переменных (если подставляемая формула сама имеет переменные и является функцией). В-третьих, область значений подставляемой формулы должна быть подмножеством области допустимых значений для переменной, вместо которой подставляется.

Операция "частного следования" обозначается символом "".

A Subst B = (Subst(A') = A) & (Subst(B') = B) & (A' B')

Запись Subst означает всего лишь некоторую замену переменных. Она превращает формулу A' в формулу A, а формулу B' в формулу B. Subst называется подстановочной функцией или, короче, подстановкой. Если подстановка оговорена заранее, будем писать сокращенно:

A B = A' B'

Отсюда понятно, почему операция названа "частным следованием" - это как бы частный случай общего следования при определенной замене переменных.

Для вычисления истинности частного следования A B в общем случае нужно не только знать формулы A и B, но и еще две вещи. Во-первых, формулу общего следования A' B', из которой получается формула A B. Во-вторых, знать подстановку, то есть, какие формулы на место каких переменных в формуле A' B' должны подставляться, чтобы получить формулу A B.

Откуда мы узнаем эти две вещи - другой вопрос. Но без них доказать, что частное следование истинно, невозможно. Однако, при определенных условиях можно без них доказать, что частное следование ложно. Это возможно, если при некоторых значениях входящих в A и B переменных оказывается, что одновременно A = true и B = false. Тогда частное следование ложно в любом случае, поскольку подходящее общее следование и подстановку найти невозможно.