
-
Денотационная семантика.
Денотационная семантика FALGOLа определяется в форме некоторых отношений на множестве термов – содержательного включения, содержательной эквивалентности и содержательной несравнимости. Приведенные ниже определения этих отношений не являются конструктивными; и, как станет понятным далее, проблема содержательной эквивалентности термов вообще является алгоритмически неразрешимой.
Определение
3.Терм
содержательно
включает
терм
(обозначается
),
если
.
Определение
4.Терм
содержательно
эквивалентен
терму
(обозначается
),
если
.
Определение
5.Терм
содержательно
не сравним
с термом
(обозначается
),
если
.
Заметим, что операции конструирования термов являются монотонными относительно отношений содержательного включения и содержательной эквивалентности:
и
.
-
Трансформационная семантика.
Трансформационная
семантика FALGOLа
задается
множеством правил редукции и конверсии,
сохраняющих содержательную эквивалентность
термов. Пусть
,
обозначают
либо вызовы значений переменных, либо
процедуры,
,
,
– термы.
Правила редукции-конверсии:
-
;
-
;
-
;
-
;
-
;
-
, где
;
-
;
-
, где
;
-
;
-
;
-
, где
, если
;
-
;
-
, где
, если
;
-
;
-
;
-
; где
- «неопределенное» инициальное значение, выполнение терма
как программы на FALGOL-машине никогда не завершается;
-
Сборка «мусора». Пусть
. Тогда
,
где
– результат подстановки
вместо
в
.
Правила вывода.
П1.
.
П2.
для всех
.
-
Язык со статическим связыванием.
Язык Falgol со статическим связыванием переменных фактически представляет собой подмножество термов языка FALGOL, из числа элементов которого исключаются символы связывания переменных, а в качестве новых, вводимых по определению, элементов в языке Falgol используются введенные выше по определению конструкции:
-
– «распроцедуривание»;
-
– «блок» с блочной переменной
и «телом»
;
-
– «функция» с параметром
и «телом»
;
-
– «рекурсивная процедура» с переменной рекурсии
и «телом»
;
-
– «неопределенное» инициальное значение .
Множество
свободно
используемых переменных
терма
определяется
теперь
непосредственно так:
;
;
;
;
.
Аналогично
определяется и множество
свободных изменяемых переменных терма
:
;
;
;
;
;
;
.
Все правила сохраняются в той же формулировке, за исключением правила 6:
-
.
Вводятся новые правила:
-
Для всех атомарных констант из расширенного набора
(
– арность константы
) полагаем, что
и для всех нульарных констант
и
(то есть все нульарные константы попарно не эквивалентны). Для атомарных констант из расширенного набора могут вводиться произвольные правила следующего вида c различными левыми частями:
,
где
и
,
и
для
всех
,
а
– произвольный замкнутый терм (
);
-
для всех
и
;
-
для всех
и
.
Согласно аксиомам и некоторым выводимым конверсиям, семантически базовой конструкцией следовало бы считать блок с некоторым множеством операторных переменных:
,
где
,
,
а при
будем считать, что
.
В
этом случае получим:
.
Введем
обобщенный оператор присваивания как
частичное отображение множества
переменных в множество объектных термов,
т.е. в объединение множества вызовов
значений переменных и множества
термов-процедур. Для изображения
обобщенных операторов присваивания
будем использовать следующую нотацию:
,
где
.