Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Непейвода. Прикладная логика

.PDF
Скачиваний:
898
Добавлен:
10.08.2013
Размер:
2.27 Mб
Скачать

Глава 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 заканчивается функциональным выражением,

поскольку лишь функ-

циональное выражение начинается с переменной либо константы Но в функциональном выражении непосредственно за начальной перемен. -