Можно показать, что два вида крепко связаны, если один из них или ка­кое-то составляющее 'ОБЫЧНОЕ' одного из них может крепко приводиться к другому (правила k, 1), что потребует некоторой последовательности из нуля или более раскрывающих приведений и затем не более одного объеди­нения (6.4.1.а). Возможна ли такая последовательность приведений между двумя видами, определяется предикатом 'скреплены' (правила т, п).

'ПАРА1' делает, кроме того, недоступной 'ПАРУ2' во внешнем 'СЛОЕ', если эта ’ПАРА2’ зависит от 'ПАРЫГ; например,

начало цел х;

нач вещ х; ft здесь 'ПАРАГ есть 'буква икс лат для имени вещественного' ft

пропуск

кон

конец

и аналогично

начало оп ? = (цел і) цел : 1, цел к := 2;

нач оп ? = (имя цел і) цел : 3;

? к ft вырабатывает 3, а ? 4 не может встретиться в этом контексте, поскольку его обозначение-операции здесь недоступно ft

кон

  1. конец.}Идентификация в средах

{ Этот раздел обеспечивает, что для каждого использующего-индикато- ра существует соответствующая 'ПАРА' в некотором подходящем 'СЛОЕ его среды. J

  1. Синтаксис

{?ПАРЫ !ПАРЫ; ПУСТО.

.’ПАРЫ :: ПАРА; .’ПАРЫ ПАРА.

ПАРА :: ОПИСАНИЕ; МЕТКА; ПОЛЕ.

ПРИЗНАК :: ВИД; ЗНАЧЕНИЕ НОМЕР;

БИНАРНОЕ; метка; выборка ВИДА.

ОБОЗНАЧЕНИЕ .-. СЛОВО; ИНДИКАНТ; ИНФИКС; ПРЕФИКС.] а) ЕСЛИ ПАРА идентифицирована в СРЕДЕ

с новыми 7ПАРАМИ { a, 48b, 542а] :

если ПАРА находится в ?ПАРАХ { Ь, с, -} , ЕСЛИ истина;

если ПАРА не зависит от ?ПАР { 71а, Ь, с} ,

ЕСЛИ ПАРА идентифицирована в СРЕДЕ {а, -} .

  1. ЕСЛИ ПАРА1 находится в !ПАРАХ2 ПАРЕ? { a, b, 48d} :

ЕСЛИ ПАРА1 находится в ПАРЕ2 { с, -}

или ПАРА1 находится в .’ПАРАХ2 { Ь, с, -} .

  1. ЕСЛИ ОБОЗНАЧЕНИЕ для ПРИЗНАКАІ находится

в ОБОЗНАЧЕНИИ для ПРИЗНАКА2 { a, b, 48d} :

если (ПРИЗНАК1) есть (метка) или (ПРИЗНАК1) есть (БИНАРНОЕ) или (ПРИЗНАК!) есть (выборка ВИДА), ЕСЛИ (ПРИЗНАК1) есть (ПРИЗНАК2);

если (ПРИЗНАК!) есть (ЗНАЧЕНИЕ! 7НОМЕР) и (ПРИЗНАК2) есть (ЗНАЧЕНИЕ? 7НОМЕР), ЕСЛИ ЗНАЧЕНИЕ! эквивалентно ЗНАЧЕНИЮ2 {73а} .

{Всякая среда, исключая первичную (которая есть просто 'новое'), есть некоторая 'СРЕДА с СЛОЕМ' (т.е. 'СРЕДА с новыми 7ПАРАМИ'). Идентификация 'ПАРЫ' происходит сначала путем поиска ее в данном 'СЛОЕ' (правило а). Если эта 'ПАРА' есть 'ОБОЗНАЧЕНИЕ для метки' или 'ОБОЗНАЧЕНИЕ для БИНАРНОГО', то простое обнаружение соответствую­щей 'ПАРЫ' служит достаточной проверкой (правило с). Если же эта 'ПА­РА' есть ' ОБОЗНАЧЕНИЕ для ЗНАЧЕНИЯ 7НОМЕР', то необходимо обра­титься к механизму эквивалентности (правило с). Если данная 'ПАРА' не найдется в указанном 'СЛОЕ', то поиск продолжается в 'СРЕДЕ' (без этого 'СЛОЯ'), при условии что она не зависит от всех 'ПАР' этого 'СЛОЯ', а ина­че поиск обрывается (правило а). Отметим, что правила b и с несут двой­ную нагрузку, поскольку они применяются также и для проверки законно­сти использующих-указателей-поля (4.8.1 .d).}

  1. Семантика

  1. Если некоторый блок-в-СРЕДЕ R (З-O.l.f), содержит использующий- индикатор 1 (4.8. l.b), для которого существует наследник если-ПАРА-иден- тифицирована-в-СРЁДЕ-с-СЛОЕМ, но не существует наследника если-ПАРА- идентифицирована-в-СРЕДЕ, то R — „определяющий блок” данного 1. {Эта 'СРЕДА' всегда будет средой, действующей как раз за пределами данного блока.}

  2. Всякой использующий-ОБОЗНАЧЕНИЕ-индикатор-выдающий- ПРИЗНАК 1, определяющий блок-в-СРЕДЕ { a J которого есть R, „иденти­фицирует” содержащийся в R определяющий-СЛОВО-индикатор-в-СРЕДЕ-с- СЛОЕМ-выдающий-ПРИЗНАК.

{ Например, в

(ft 1 0 вещ і = 2,0; (ft 2 цел і = I: (уі 3 вещ х; печ (і)

(fi 3 fi) Д 2 fi) 1 fl)

три блока. В силу синтаксиса использующий-идентификатор і в печ (і) вы­нужден , быть использующим-букву-и-лат-идентификатором-в-СРЕДЕ-с-но- вой-буквой-и-лат-для-вещественного-новой-буквой-и-лат-для-целого-новой- буквой-икс-лат-для-имени-вещественного-выдающим-целое (4.8.1.b). Его определяющим блоком является определяющее-новую-букву-и-лат-для-це- лого-последовательное-предложение-в-СРЕДЕ-с-новой-буквой-и-лат-для ве­щественного (3.2.1.а) с номером 0 2 он идентифицирует определяющий- идентификатор і, содержащийся в цел і (а не в вещ і), и его видом являет­ся 'целое'.}

[ Благодаря наличию аналогичного механизма некоторую БИНАРНУЮ- формулу (5.4.2.1.а) можно назвать „идентифицирующей” то определяю- щее-обозначение-операции-выдающее-БИНАРНОЕ (4.8.1-а), которое опре­деляет ее приоритет.}

  1. Окружение Е, „необходимое для” конструкта С в окружении Е1, определяется следующим образом:

Если Е1 ■ первичное окружение (2.2.2.а), то Е есть Е1;

иначе пусть Е1 будет составлено из участка L, соответствующего каким-то '7ПАРАМ', и другого окружения Е2;

Если С содержит любой использующий-СЛОВО-индикатор-выдающий- ПРИЗНАК,

  1. не идентифицирующий { b} никакого определяющего-индикатора, со­держащегося в С,

  2. не являющийся прямым наследником индикатором-вида для формаль­ного или виртуального-описателя и

  3. такой, что предикат 'если ОБОЗНАЧЕНИЕ для ПРИЗНАКА находится в 7ПАРАХ' {7.2.1 ,b} выполняется,

то Е есть Е1;

иначе { L не необходимо для С и } Е — окружение, необходимое для С в Е2. {Окружение, необходимое для конструкта, используется в семантике текстов-процеДуры (5.4.1.2) ив „устанавливании” (3.2.2.Ь). Например, в ft 2 проц пуст рр; цел n; (ft 1 проц р = пуст: печ (п); рр : = р), если Е1 и Е2 — окружения, устанавливаемые в результате исполнения последовательных-предложений, отмеченных примечаниями 0 1 ф и то Е2 — окружение, необходимое в Е1 для текста-процедуры пуст: печ (п), так что процедура, выдаваемая р в Е1, составлена из этого текста-процедуры и Е2 (5.4.1.2). Следовательно, область действия данной процедуры есть об

­

ласть действия окружения Е2 (2.1.3.5.с), а отсюда вытекает, что присваива­ние (5.2.1.2.Ь), вызываемое посредством рр ; = р, корректно определено.

  1. Эквивалентность видов

{ В этом разделе определяется эквивалентность или неэквивалентность различных 'ЗНАЧЕНИЙ'. Обсуждение эквивалентных 'ЗНАЧЕНИЙ' см. в 2.1.1.2.}

{ Один из способов увидеть рекурсивные виды — рассматривать их как бесконечные деревья. Такое „дерево вида” получается повторной подста­новкой в некотором выписывании 'ВИДА' из соответствующего 'ЦИ опре­деления ВИДА' вместо каждого 'использования ЦИ'. Таким образом, выпи­сывание 'ци I определение структуры содержащей букву и лат для выборки целого букву эн лат для выборки имени использования ци I в себе' будет создавать следующее дерево вида:

с

'в себе'

'букву 'для

и лат' выборки'


'целого'


букву эн лат'


'для выборки'


труктура содержащая'

'

1

'в себе’

'букву эн лат'

'для выборки'

имени'

г 1 .

структура содержащая

'букву 'для 'целого' и лат' выборки'

'имени'

(и т. д.)

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

  1. Синтаксис

  1. УКРЫТИЕ :: укрытое; ЦИ помнит ВИД УКРЫТИЕ; инь УКРЫТИЕ;

ян УКРЫТИЕ; запомненные ЗНАЧЕНИЕІ ЗНАЧЕНИЕ2 УКРЫТИЕ.

ПРОЛОГ :: ПРОСТОЕ; ПРИСТАВКА {71А} ; структура содержащая

;7ПОДВИЖНЫЙ МАССИВ из; процедура с; объединение;

пустое значение.

  1. 7ЭПИЛОГ :: ЗНАЧЕНИЕ; !ПОЛЯ в себе;

ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ; 10БЫЧНЫХ воедино; ПУСТО.

  1. ІЧАСТИ :: ЧАСТЬ; !ЧАСТИ ЧАСТЬ.

  2. ЧАСТЬ :: ПОЛЕ; ПАРАМЕТР.

  1. ЕСЛИ ЗНАЧЕНИЕ! эквивалентно ЗНАЧЕНИЮ2 [64b, 71m, 72с Г ЕСЛИ укрытое ЗНАЧЕНИЕ 1 эквивалентно

укрытому ЗНАЧЕНИЮ2 { о} .

  1. ЕСЛИ УКРЫТИЕ1 ЗНАЧЕНИЕІ эквивалентны

УКРЫТИЮ2 ЗНАЧЕНИЮ2 { a, b, е, i, j, n} :

если (УКРЫТИЕ1) содержит (запомненные

ЗНАЧЕНИЕІ ЗНАЧЕНИЕ2) или (УКРЫТИЕ2) содержит (запомненные ЗНАЧЕНИЕ2 ЗНАЧЕНИЕІ), ЕСЛИ истина;

если неверно что (УКРЫТИЕ1) содержит (запомненные ЗНАЧЕНИЕ! ЗНАЧЕНИЕ2) или (УКРЫТИЕ2) содержит (запомненные ЗНАЧЕНИЕ2 ЗНАЧЕНИЕІ),

ЕСЛИ (ПРОЛОГЗ) есть (ПРОЛОГ4) и

запомненные ЗНАЧЕНИЕІ ЗНАЧЕНИЕ2 УКРЫТИЕЗ

7ЭПИЛОГЗ эквивалентны

УКРЫТИЮ4 7ЭПИЛОГУ4 { b, d, е, k, q, -} ,

если УКРЫТИЕЗ ПРОЛОГЗ 7ЭПИЛОГЗ развертываются из УКРЫТИЯ! ЗНАЧЕНИЯ!{с }

и УКРЫТИЕ4 ПРОЛОГ4 7ЭПИЛОГ4 развертываются из УКРЫТИЯ2ЗНАЧЕНИЯ2{с}.

  1. ЕСЛИ УКРЫТИЕ2 ПРОЛОГ 7ЭПИЛОГ развертываются из УКРЫТИЯ! ЗНАЧЕНИЯ [ Ь, с}:

если (ЗНАЧЕНИЕ) есть (ПРОЛОГ 7ЭПИЛОГ), ЕСЛИ (ПРОЛОГ) меняет УКРЫТИЕ! на

УКРЫТИЕ2 { 74а, b, с, d, ;

если (ЗНАЧЕНИЕ) есть (ЦИ определение ВИДА), если неверно что (УКРЫТИЕ!) содержит (ЦИ помнит), ЕСЛИ УКРЫТИЕ2 ПРОЛОГ 7ЭПИЛОГ развертываются из ЦИ помнит ВИД УКРЫТИЯ ВИДА { с};

если (ЗНАЧЕНИЕ) есть (использование ЦИ)

и (УКРЫТИЕ!) есть (ПОНЯТИЕ ЦИ помнит ВИД УКРЫТИЕЗ) и (ПОНЯТИЕ) содержит (инь)

и (ПОНЯТИЕ) содержит (ян),

ЕСЛИ УКРЫТИЕ2 ПРОЛОГ ’ЭПИЛОГ развертываются из УКРЫТИЯ! ВИДА { с}.

  1. ЕСЛИ УКРоІТИЕ! ’ПОЛЯ 1 в себе эквивалентны

УКРЫТИЮ2 ІП0ЛЯМ2 в себе { b} :

ЕСЛИ УКРЫТИЕ! ІП0ЛЯ1 эквивалентны

УКРЫТИЮ2 'П0ЛЯМ2 [ f, g, h, і).

  1. ЕСЛИ УКРЫТИЕ! [ПАРАМЕТРАМИ!

вырабатывающая ЗНАЧЕНИЕІ

эквивалентны УКРЫТИЮ? [ПАРАМЕТРАМИ? вырабатывающей ЗНАЧЕНИЕ? { b}:

ЕСЛИ УКРЫТИЕ1 !ПАРАМЕТРЫ1 эквивалентны УКРЫТИЮ? [ПАРАМЕТРАМ? { f, g, h, j J и УКРЫТИЕ! ЗНАЧЕНИЕІ эквивалентны УКРЫТИЮ? ЗНАЧЕНИЮ? f b }. f) ЕСЛИ УКРЫТИЕ! [ЧАСТИ! ЧАСТЫ эквивалентны

УКРЫТИЮ? [ЧАСТЯМ? ЧАСТИ? { d, е, f} :

ЕСЛИ УКРЫТИЕ! !ЧАСТИ1 эквивалентны

УКРЫТИЮ? [ЧАСТЯМ? (f, g, h, і, j} и УКРЫТИЕ! ЧАСТЫ эквивалентны УКРЫТИЮ? ЧАСТИ? [i, j}. g) ЕСЛИ УКРЫТИЕ! [ЧАСТИ! ЧАСТЫ эквивалентны

УКРЫТИЮ? ЧАСТИ? f d, е, f} : ЕСЛИ ложь.

  1. ЕСЛИ УКРЫТИЕ! ЧАСТЫ эквивалентны УКРЫТИЮ? [ЧАСТЯМ? ЧАСТИ? { d, е, f J /ЕСЛИ ложь.

  2. ЕСЛИ УКРЫТИЕ! СЛОВО! для выборки ВИДА! эквивалентны УКРЫТИЮ? СЛОВУ? для выборки ВИДА? f d, f J:

ЕСЛИ (СЛОВО!) есть (СЛОВО?) и

УКРЫТИЕ! ВИДІ эквивалентны УКРЫТИЮ? ВИДА? { b] .

  1. ЕСЛИ УКРЫТИЕ! параметр вида ВИД! эквивалентны УКРЫТИЮ? параметру вида ВИД? £ е, f}:

ЕСЛИ УКРЫТИЕ! ВИДІ эквивалентны УКРЫТИЮ? ВИДУ? { b к) ЕСЛИ УКРЫТИЕ! [ОБЫЧНЫХ! воедино эквивалентны

УКРЫТИЮ? [ОБЫЧНЫХ? воедино [ b} :

ЕСЛИ УКРЫТИЕ! [ОБЫЧНЫЕ! входят в УКРЫТИЕ? [ОБЫЧНЫЕ? {1,т п} и УКРЫТИЕ? [ОБЫЧНЫЕ?

входят в УКРЫТИЕ! ’.ОБЫЧНЫЕ! { 1, m, п} и число [ОБоІЧНЫХ! равно числу [ОБЫЧНЫХ? fo, р} .

1) ЕСЛИ УКРЫТИЕ! [ОБЫЧНЫЕ! ОБЫЧНОЕ! входят в УКРЫТИЕ? [ОБЫЧНЫЕ2 { k, 1, m, 46s, 64b} :

ЕСЛИ УКРЫТИЕ! [ОБЫЧНЫЕ! входят в УКРЫТИЕ? [ОБЫЧНЫЕ? (1, т, п} и УКРЫТИЕ! ОБЫЧНОЕ! входят в УКРЫТИЕ? [ОБЫЧНЫЕ? { т, п|, т) ЕСЛИ УКРЫТИЕ! ОБЫЧНОЕ! входят в УКРЫТИЕ2

[ОБЫЧНЫЕ? ОБЫЧНОЕ? {к, I, т, 46s, 64b} :

ЕСЛИ УКРЫТИЕ! ОБЫЧНОЕ! входят в УКРЫТИЕ? [ОБЫЧНЫЕ2 {т, п} или УКРЫТИЕ! ОБЫЧНОЕ! входят в УКРЫТИЕ? ОБЫЧНОЕ2 [nJ.

п) ЕСЛИ УКРЫТИЕ! ОБЫЧНОЕ! входит

в УКРЫТИЕ? ОБЫЧНОЕ? { к, 1, т, 64b};

ЕСЛИ УКРЫТИЕ! ОБЫЧНОЕ! эквивалентны УКРЫТИЮ? ОБЫЧНОМУ? { b} .

о) ЕСЛИ число [ОБЫЧНЫХ! ОБЫЧНОГО! равно числу [ОБЫЧНЫХ? ОБЫЧНОГО? к, о } :ЕСЛИ число ЮБЫЧНЫХ1 равно числу ЮБЫЧНЫХ2 £о, р, р) ЕСЛИ число ОБЫЧНОГО1 равно числу

ОБЫЧНОГО2 { к, о } : ЕСЛИ истина.

q) ЕСЛИ УКРЫТИЕ1 ПУСТО эквивалентны

УКРЫТИЕ2 ПУСТО { b} : ЕСЛИ истина.

t Правило а вводит 'УКРЫТИЯ', используемые в ходе определения эк­вивалентности как ассоциативная память. Таких 'УКРЫТИЙ' два, по одно­му для каждого вида. Правило b приводит к немедленному заключению, если рассматриваемые 'ЗНАЧЕНИЯ' уже запомнены (см. ниже) в каком- нибудь подходящем 'УКРЫТИИ' в форме 'запомненные ЗНАЧЕНИЕ 1 ЗНАЧЕНИЕ2'. Если это не так, то указанные два 'ЗНАЧЕНИЯ' сначала за­поминаются в 'УКРЫТИИ' (в том, которое слева), а затем каждое 'ЗНА­ЧЕНИЕ' развертывается (правило с) и разбивается на его 'ПРОЛОГ' и его '7ЭПИЛОГ', например 'имя вещественного’ разбивается на 'имя' и 'вещест­венное'.

Если 'ПРОЛОГИ' различны, то вопрос решен (правило Ь) ; в противном случае данные '7ЭПИЛОГИ' анализируются в соответствии с их структура­ми (которые должны совпадать, если соответствующие 'ПРОЛОГИ' иден­тичны). Во всех случаях, кроме того, когда 'ПРОЛОГИ' были 'объедине­ние', эквивалентность проверяется исследованием соответствующих состав­

лающих согласно схеме

правило

7ЭПИЛОГ'

составляющие

d

'ПОЛЯ в себе'

'!ПОЛЯ'

е

'ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ'

^ПАРАМЕТРЫ'и 'ЗНАЧЕНИЕ'

f

'ШОЛЯ ПОЛЕ'

'!ПОЛЯ' и 'ПОЛЕ'

f

^ПАРАМЕТРЫ ПАРАМЕТР'

'ПАРАМЕТРЫ' и 'ПАРА­МЕТР'

і

'СЛОВО для выборки ВИДА'

'СЛОВО' и 'ВИД'

j

'параметр вида ВИД'

'ВИД'

ляя объединения соответствующие '7ЭПИЛОГИ' имеют форму 'ІОБЫЧ- НЫХ1 воедино' и 'ІОБЫЧНЫХ2 воедино'. Поскольку внутри эквивалент­ных объединений 'ОБЫЧНЫЕ' могут переставляться, как в специфицируе­мых об (вещ, цел) и об (цел, вещ) видах, то дня них эквивалентность определяется проверкой того, что 'ЮБЫЧНЫЕ1' входят (в теоретико-мно­жественном смысле) в '!ОБЫЧНЫЕ2' и 'ЮБЫЧНЫЕ2' входят в 'ОБЫЧ- НЫЕ1'; при этом, конечно, проверка на вхождение рекурсивно обращается к проверке эквивалентности (правила k, 1, т, п, о, р).

Всякое 'ЗНАЧЕНИЕ' развертывается (правило с) в форму 'ПРОЛОГ 7ЭПИЛОГ' посредством определения того, что:

  1. оно уже имеет эту форму: в таком случае в его 'УКРЫТИЕ' могут помещаться маркерЬі ('инь' и 'ян') для того, чтобы позднее опреде­лить правильность построения этого 'ЗНАЧЕНИЯ' (см. 7.4) ;