Непейвода. Прикладная логика
.PDFГлава 7. Введение в синтаксис
§ 7.1. |
СИНТАКСИС ЛОГИЧЕСКОГО ЯЗЫКА |
|
Синтаксис формального языка задает независимые от интерпретации |
||
определения объектов этого языка, изучает вопрос о структуре объек- |
||
тов, о распознавании объектов различных типов и их характеристик. |
||
Синтаксически правильно построенные объекты могут в дальнейшем |
||
интерпретироваться и преобразовываться в соответствии с интерпрета- |
||
цией языка. |
|
|
Чтобы обосновать применяемый в дальнейшем метод изложения, |
||
обратимся к практике как теоретических изысканий, так и их приклад- |
||
ного выражения — |
программирования. |
Тот кому приходится рецензировать достаточно много математиче ских работ, знает что чаще всего ошибочный переход в доказательстве- кроется за ,словами, Очевидно либо Данный случай разбирается ана логично предыдущему« Ну насчет» очевидности« все ясно1 а вот с ана- логичностью приходится». долго, разбираться“ ” , -
Тот кому приходится программировать достаточно. сложные с точ ки зрения, логики построения задачи сталкивается с неприятностью( - приходится писать множество)почти одинаковых, процедур для похожих: друг на друга подзадач Порою ситуация выглядит почти что издеватель ски текст мог бы быть.один и тот же но изменяются типы данных и его- приходится: переписывать с другим заголовком, процедуры и под другим именем
Программист. высочайшего класса обладавший вдобавок в лучших русских традициях еще и фундаментальной, математической, ,подготов-
1 На самом деле тут мы сталкиваемся с важным понятием дыры в доказательстве кото рым нам придется заниматься далее Но рецензенту здесь проще Достаточно написать, - скажем: «А мне неочевидно». . . ,
172 ГЛАВА 7. ВВЕДЕНИЕ В СИНТАКСИС
кой Семен Фурман явно сформулировал следующий технологический прием, 2, который мы будем называть обобщение без потерь.
Пиши процедуру в частном хорошо продуманном случае и тщательно но без лишней,оптимизации а затем обобщай, ее на столь общий, случай насколько возможно, без потери эффективности. ,
Скажем появление функционального анализа и топологии позволи ло обобщить, без потерь множество частных теорем Коши в несколь- ко общих утверждений Появление теории категорий позволило превра- тить расплывчатое понятие. алгебраической аналогии в точное и затем- использовать его в частности в теории абстрактных типов данных при званной решить ,ту практическую, трудность которая была обрисована, - выше ,
Мы. проведем такую операцию обобщения для языка классической логики с тем чтобы в частности не говорить расплывчатые слова ана логично, при переходе, к построенным, по такому же принципу языкам“ - неклассических” логик При обобщении мы выделим следующие черты логического языка: .
• Более сложные конструкции образуются из более простых четырь- |
|
мя способами: |
|
– |
Применение одноместной (унарной) операции к выражению. |
|
Эта операция ставится перед выражением. |
– |
Применение двуместной операции к двум выражениям. Она |
|
ставится между выражениями, и получившееся выражение |
|
заключается в скобки. |
– Применение квантора, который включает подкванторное вы- |
|
|
ражение и переменную, по которой он навешен. Этот пункт |
|
мы немедленно обобщим, чтобы включить и выражения ви- |
|
да |
|
n+m |
|
(i + a)2 либо {x X | A(x)} . |
|
i=1 |
|
X |
2 Формулировка была дана в личной беседе с автором; нам неизвестно, опубликовал |
ли он что-либо по данному поводу.
7.1. СИНТАКСИС ЛОГИЧЕСКОГО ЯЗЫКА |
173 |
Рассмотрим обобщенные кванторы следующей формы: |
|
hKx | E1, . . . , Ek | A1, . . . , Ali ,
где h i обозначают некоторую пару скобок. |
||
Выражения E1, . . . , Ek называются ограничениями подкван- |
||
торной переменной, а A1, . . . , Al — |
подкванторными выра- |
|
жениями. Содержательно область действия подкванторной |
||
переменной распространяется лишь на подкванторные вы- |
||
ражения, ограничения остаются вне ее3. |
||
– Функциональные записи вида F (E1 |
, . . . , En) . |
|
• Выражения строго разделяются по типам (скажем, термы обозна- |
||
чают предметы, формулы — |
высказывания). Каждая операция при- |
|
меняется к выражениям строго определенных типов и однозначно |
||
определено, какого типа выражение получается после ее примене- |
||
ния. |
|
|
• Исходные понятия не фиксированы; заданы лишь способы обра- |
||
зования более сложных из исходных. |
|
Сразу заметим что пункт касающийся строгого разделения по ти пам сплошь и рядом, нарушается, в современных языках программиро- вания, Скажем операция применяется и к целым и к действитель- ным .и к комплексным, числам+ различной точности, Такая перегрузка- операций, вызвала к жизни целую теорию разрешения. возникающих не однозначностей да и мы грешные воспользуемся перегрузкой в не- скольких местах, явно ее оговорив, , -
Пожалуй Вам, самим понятно .насколько коварным средством явля ется перегрузка, но иногда она просто, стучится в двери если имеется- полное совпадение, необходимых нам свойств операций ,над различны ми данными Разница между использованием перегрузки в логике ли-
. -
3Именно разница между ограничениями и подкванторными выражениями приводит
квстречающимся в математическом анализе выражениям вида
Zx
f(x) dx.
0
бо алгебре и в искусственном интеллекте либо программировании со- |
||
стоит в том, что “ теоретики” |
точно обосновывают сохранение необхо- |
|
димых свойств, а “ практики” |
все время нарываются на неприятности, |
|
либо просто не дав себе труда уяснить и проверить эти свойства, либо |
||
забыв, что в алгоритмическом языке перегрузка применяется уже не к |
||
математическим сущностям, |
а к их неточным реализациям. |
|
Другая особенность языка логики, принципиально отличающая его |
||
от имеющихся языков программирования и искусственного интеллек- |
||
та, да и от языка, скажем, математического анализа,— |
отсутствие фик- |
|
сированного базиса понятий. |
Если в “ конкретных” языках нижний уро- |
|
174 |
ГЛАВА 7. ВВЕДЕНИЕ В СИНТАКСИС |
вень закреплен как фундамент на котором можно постепенно вырастить нужные нам построения то в математической, логике есть построения и преобразования которые, можно опустить на любой подходящий нам фундамент и соответственно, сразу“ получить” целый город
Таким образом, с синтаксической, точки зрения язык классической.
логики можно охарактеризовать, как строго типизированный язык без нижнего уровня с функциональными унарными и бинарными операци ями и кванторами , -
Прежде всего .поскольку выражения у нас делятся на типы нужно определить необходимые, нам конструкции над типами Эти конструк, ции были введены польскими логиками в х годах под.названием син-
таксических категорий Мы изложим их в20форме- принятой в большин- стве современных работ. по теории алгоритмических, и других формаль- ных языков по философии и математической лингвистике -
Пусть задано, некоторое множество исходных типов T ..
Определение Иерархия функциональных типов0 Множество типов T задается7.1.следующим1. ( индуктивным определением)
:
a)Исходные типы τ T0 — типы.
b)Если τ1, . . . , τn, τ — типы, то (τ1, . . . , τn → τ) — тоже тип.
c)Других типов в T нет.
Язык без нижнего уровня определяется относительно словаря или сигнатуры рассматриваемого конкретного приложения в случае логи, ческого языка конкретной теории Дадим наиболее (общее понятие- сигнатуры базирующейся— на иерархии). типов Для этого сначала опре делим, какие, типы из иерархии для каких целейT. подходят. -
7.1. СИНТАКСИС ЛОГИЧЕСКОГО ЯЗЫКА |
175 |
Определение 7.1.2. . (Классификация типов)
Тип называется типом функции если все a)исходные(τ1, .типы. . , τ.n → τ) , τi, τ —
Тип называется типом функционала если со b)держит(τ1, . . . , τn → τ) , τ -
→.
Тип называется высшим типом если в нем боль c)ше одной(τ1,→. . .. , τn → τ) , - d) Тип (τ1 → τ) называется типом унарной операции.
e) Тип (τ1, τ2 → τ) называется типом бинарной операции.
Тип где назы f)вается(χ,типомτ1, . .квантора. , τk, (χ .→ π1), . . . , (χ → πl) → τ), l > 0, -
Как и следовало ожидать, здесь наиболее сложен пункт, касающий- |
||||
ся кванторов. Но вспомним уже известные нам кванторы. Разве, скажем, |
||||
x имеет дело с отдельными значениями4A(x)? Как обычно расплывча- |
||||
то выражаются математики и философы , квантор имеет дело “ со всей |
||||
совокупностью значений выражения A(x)”. Всю эту совокупность зна- |
||||
чений лучше всего выражает функция, перерабатывающая каждое зна- |
||||
чение x в значение A(x). |
Соответственно, χ является здесь типом пе- |
|||
ременной x, каждое из πj |
— |
типом соответствующего подкванторного |
||
выражения, зависящего от x. А вот типы ограничений берутся в “ голом” |
||||
виде, поскольку ограничения не подпадают под область действия пере- |
||||
менной квантора. |
|
|
|
|
Определение 7.1.3. (Обобщенная) сигнатура σ — множество символов |
||||
s σ, каждому из которых сопоставлен один из признаков — |
констан- |
|||
та, унарная операция, бинарная операция, квантор, и задана функция χ, |
||||
сопоставляющая каждому s σ тип τ T таким образом, |
что опера- |
|||
циям сопоставляются типы операций соответствующей арности, кван- |
||||
торам — |
типы кванторов. |
|
|
|
Помимо сигнатуры при определении языка с кванторами исполь зуют переменные. Чаще, всего переменные бывают лишь по объектам-
4 Да и мы прибегли к подобному выражению при описании кванторных конструкций естественного языка.
176 ГЛАВА 7. ВВЕДЕНИЕ В СИНТАКСИС
исходных типов, да и то не по всем; если же у нас есть переменные и |
||
кванторы по типам, содержащим →, то говорят, что определяемый язык |
||
высшего порядка. Переменные по различным типам не пересекаются. |
||
Для единообразия переменные типа τ |
обозначаются xτ , yτ , zτ и т. д. |
|
Cчитается, что переменных каждого типа потенциально бесконечный |
||
запас. Как обычно, если у нас всего один тип, по которому разрешено |
||
иметь переменные, тип переменных опускается. Подмножество типов, |
||
по которым имеются переменные, обозначается Tv. |
|
|
Заметим одну тонкость в данном определении. Функциональные сим- |
||
волы входят в число констант, они просто имеют тип функции. Могут |
||
быть и константы высших типов, они применяются в языке так же, как |
||
функциональные символы, но по крайней мере один из их аргументов |
||
либо же получаемое значение должны быть сложного типа. Приведем |
||
несколько примеров. |
|
объекты, t — |
Пример 7.1.1. В теории групп исходные типы данных o — |
||
истинностные значения. Сигнатура состоит из логических связок, логи- |
||
ческих кванторов, бинарных операций |
=, ◦ и унарной Inv, |
константы e. |
Их типы следующие. |
|
|
χ(e) = o |
χ(=) = (o, o → t) |
|
χ(◦) = (o, o → o) |
χ(Inv) = (o → o) |
|
χ( ) = (t, t → t) |
χ(&) = (t, t → t) |
|
χ( ) = (t, t → t) |
χ(¬) = (t → t) |
|
χ( ) = (o, (o → t) → t) χ( ) = (o, (o → t) → t)
Переменные имеются лишь по типу
Предикат стандартно интерпретируетсяo. как равенство константа кe как единица=группы, a ◦ b как умножение, Inv a как обратный, элемент
a.
Пример Можно несколько видоизменить сигнатуру из предыду щего примера7.1.2. добавив к еще две константы и и удалив опе- рации и , Тип естьe Этот: MultпримерInvпоказывает воз- можность◦ переходаInv. Multмежду одноместными(o, o → o). и двуместными функциями и- операциями.
Пример Фрагменты математического анализа можно описывать в языке со7.следующей1.3. сигнатурой
Имеется три исходных типа : интерпретируемые соответствен но как действительные числа :целыеr, i, t, числа и логические, значения -
, Логические связки остаются, теми же самыми. .
7.1. СИНТАКСИС ЛОГИЧЕСКОГО ЯЗЫКА |
|
|
|
177 |
|
Для работы с действительными и целыми числами имеются следую- |
|||||
щие бинарные операции: +, −, ·, /, , , ×, ÷, =r, >r, =i, >i |
и унарные |
||||
Кроме того, зададим следующие константы: e, π, 0, 1, 0, 1. |
|
||||
exp, sin, cos, ln, real, round. |
|
|
|
|
|
Кванторы данной сигнатуры следующие: r, i, r, i, |
|
, . Типы |
|||
всех перечисленных выше операций |
, |
|
следующие: |
||
|
констант и кванторов R |
|
P |
||
χ(e) = χ(π) = χ(1) = χ(0) = r |
|
χ(0) = χ(1) = i |
|
|
χ(+) = χ(−) = (r, r → r) |
χ( ) = χ( ) = (i, i → i) |
|||||
χ(·) = χ(/) = (r, r → r) |
χ(×) = χ(÷) = (i, i → i) |
|||||
χ |
|
|
χ |
|
|
|
r (real) = (i → r) |
|
|
r(round) = (r → i) |
|
||
χ( i) = (r, (r → t) → t) |
χ( i) = (r, (r → t) → t) |
|||||
χ( ) = (i, (i → t) → t) |
|
χ( ) = (i, (i → t) → t) |
||||
χ( )r= (r, r, rr, (r → r) → r) |
χ( )i |
= (r, i, ii, (i → r) → r) |
||||
χ(= ) = χ(> ) = (r, r |
→ |
t) |
χ(= ) = χ(> ) = (i, i |
→ |
t) |
|
R |
|
P |
|
|
Здесь видно что мы вынуждены вводить кванторы всеобщности и су ществования, по отдельности для каждого типа объектов по которым- имеются переменные Поскольку тип квантора однозначно, определяет ся типом переменной. следующей непосредственно за ним перегрузка- кванторов легко разрешается, и используется практически ,везде в том числе и нами Аналогично перегрузка напрашивается и для общеупо, требительных. предикатов типа или и для операций типа или - Но здесь ситуация намного сложнее= поскольку>, допущение перегрузки+ −. сразу приводит к соблазну перемешивать, выражения разных типов.
Несколько иной тип перегрузки мог бы возникнуть при применении квантора суммирования к выражениям типа Здесь подкванторная пе ременная в любом случае имеет тип и разрешениеi. двусмысленности- зависит от типа подкванторного выраженияi, Это уже похуже и на по добных примерах в теоретическом программировании. выросла, целая- теория
Анализируя. определения и рассматривая примеры можно сделать вывод что мы не рассматриваем операции кванторы и, функции с пе ременным, числом аргументов Это соответствует, и соглашениям боль- шинства языков программирования. а там где переменное число аргу- ментов появляется оно как правило, влечет, неприятности Далее мы не- разрешаем произвольным, , образом пополнять, теорию новыми. констан, тами что также находится в частности в соответствии с традициями-
языков, спецификаций и языка, ПРОЛОГ,. Конечно же, для расширения
178 ГЛАВА 7. ВВЕДЕНИЕ В СИНТАКСИС
возможностей теорий и методов работы с ними мы обязаны предусмо треть средства расширения теорий но это отдельная и достаточно- интересная тема развившаяся в целую, теорию— в традиционной логи ке и приближающаяся, к такому состоянию в математической А чтобы- квалифицированно применять теорию определений мы обязаны. уметь хорошо различать, что же можно выразить исходными, средствами.
Предложение Любое выражение типизированного языка одно значно представляется7.1.1. в виде соответствующем пп определе-
ния 7.1.5. , . 1) – 6) -
Доказательство Предложение опирается на следующие леммы о счете скобок. .
Лемма В любом выражении число открывающих скобок равно числу закрывающих7.1.2. .
Доказательство Индукцией по построению Переменные и константы скобок вообще не. содержат Если выражение . получено как
то поскольку по предположению. индукцииAвсе сбалансированыF (t1, . . . ,поtn), скобкам, в нем также число открывающих равноtiчислу закрывающих Точно так, же для всех пунктов определения выражений. .
Лемма В любом начале выражения открывающих скобок не мень ше, чем7закрывающих.1.3. . -
Доказательство ведем индукцией по построению выражения Определим скобочный. баланс слова как .
число открывающих скобок − число закрывающих.
Переменные и константы скобок вообще не содержат Если получен как то любое его начало имеет одно из следующих. t пред ставленийf(t1, . . .Оно, tn)либо, есть либо имеет вид либо ли- бо . либо есть сам‘f’, Здесь есть последовательность‘f(’, ‘f(Ξ, Ξiвыра’, - жений‘f(ΞразделенныхΞi,’, запятымиt. естьΞ начало выражения По преды- дущей, лемме в выражении открывающих, Ξi скобок столько .же сколько- закрывающих, Значит скобочный баланс есть По предположению, индукции скобочный. ,баланс > СледовательноΞ 0. скобочный баланс начала больше, 0, если оно не Ξявляетсяi 0. f либо не совпадает, с самим t.
7.1. СИНТАКСИС ЛОГИЧЕСКОГО ЯЗЫКА |
179 |
Точно так же подводится скобочный баланс для выражений осталь- |
|||
ных форм, но здесь сбалансированы могут быть также префиксы, соста- |
|||
вленные из знаков унарных операций и заканчивающиеся переменной |
|||
либо константой. |
|
|
|
Следствие.Начало выражения, содержащее скобку и сбалансирован- |
|||
ное по скобкам, совпадает с самим выражением. |
|||
Скобочным уровнем некоторого вхождения подвыражения в выра- |
|||
жение называется число пар скобок, в область действия которых оно |
|||
попадает. Таким образом, если выражение не имеет окружающих его |
|||
скобок, то его уровень — 0, |
если имеет одну — 1, |
и т. д. |
|
Лемма 7.1.4. Лемма о разделителях на первом скобочном уровне. |
|||
1. |
Если на первом скобочном уровне встречается символ ‘,’, то выра- |
||
|
жение является применением последовательности5 унарных опе- |
||
|
раций к функциональному либо к кванторному выражению. |
||
2. |
Если на первом скобочном уровне встречается символ ‘|’, то вы- |
||
|
ражение является применением последовательности унарных опе- |
||
|
раций к кванторному выражению. |
ни | не встречаются. |
|
3. |
На нулевом скобочном уровне ни запятая, |
Доказательство Все три пункта доказываются одновременной индук цией по построению. выражения - В константу либо переменную. ни скобки ни запятая ни не входят Значит базис индукции состоит из импликаций, с ложной, посылкой| и.
тривиально, верен Если выражение. является функциональным то запятые входя
щие в него либо оказываютсяE разделителями и, либо входят, в- В первом, случае они оказываются на первомEi скобочномEi+1, уровне во второмEi. по предположению индукции они оказываются не менее чем, на
первом, внутри а значит не менее, чем на втором внутри самого Символ обязанEвходитьi, в одно, из и таким образом ни на нулевомE. ни на первом| скобочном уровне не Eпоявляетсяi , , ,
Если выражение является применением. бинарной операции то оно имеет вид E В нем применяя предположение индукции,
(E1 E2). , ,
5 Возможно, пустой.
180 ГЛАВА 7. ВВЕДЕНИЕ В СИНТАКСИС
на первом скобочном уровне ни запятых, ни | не встретится, поскольку |
|
тогда они были бы вынуждены входить на нулевом уровне в E1 либо в |
|
E2. А то, что их нет и на нулевом уровне, видно непосредственно. |
|
Если E получается применением унарной операции, т. е. имеет вид |
|
E1, то все сводится к рассмотрению E1, для которого все три пункта |
|
леммы выполнены по предположению индукции. |
|
И, наконец, если E — |
кванторное выражение, то рассмотрение про- |
водится аналогично пункту для функционального. |
Теперь заметим, что любое выражение, более сложное, чем после- |
||
довательность унарных операций, примененная к константе либо пере- |
||
менной, содержит скобки. |
|
|
Докажем однозначность анализа выражений. |
|
|
Пусть выражение построено применением бинарной операции (A |
||
B). Тогда оно не может представляться, ни как функциональное, ни как |
||
применение унарной операции, ни как переменная либо константа, по- |
||
скольку начинается со скобки. Остается исключить лишь случай приме- |
||
нения квантора, что производится при помощи леммы о разделителях. |
||
Кванторное выражение содержит | |
на первом скобочном уровне, а дру- |
|
гие содержать его на этом уровне не могут. |
|
|
Значит, оно может представляться лишь в виде (C ? D), где ? — би- |
||
нарная операция. Если C совпадает с A, то это — |
то же самое предста- |
|
вление. Если же оно не совпадает с A, то оно может быть либо началом |
||
A, либо включать в себя начало B. Если это начало A либо C содер- |
||
жит хотя бы одну скобку, то выражение не сбалансировано по скобкам |
||
и формулой не является. Таким образом, оба этих случая исключаются. |
||
Значит, остается случай рассмотреть начало, не содержащее скобок и |
||
сводящееся к последовательности унарных операций, возможно, закан- |
||
чивающейся переменной либо константой. Это сразу же исключает слу- |
||
чай, когда C содержит начало B, поскольку “ по дороге” оно прихватит |
||
и бинарную операцию. Если эта последовательность не заканчивается |
||
переменной либо константой, то она не является выражением, посколь- |
||
ку ни одно выражение унарной операцией не заканчивается. Остается |
||
единственный возможный случай — |
C является началом A, заканчива- |
|
ющимся переменной либо константой, до нее включающим лишь зна- |
||
ки бинарных операций и не совпадающим с самим A. Следовательно, |
||
A заканчивается функциональным выражением, |
поскольку лишь функ- |
циональное выражение начинается с переменной либо константы Но в функциональном выражении непосредственно за начальной перемен. -