Брошюра FLOGOL-2
.pdf
2.СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
2.6.Сетевые языки.
О п р е д е л е н и е |
|
|
|
|
|
0 , в |
2.10. Сетевым языком арности n ,n |
|
, n ,n |
||||
базисе элементов |
B называется множество сетей арности |
|
|
|
|
в ба- |
|
n , n |
|
||||
зисе B . |
|
|
|
|
|
|
Для задания |
сетевых языков могут быть использованы формальные |
|||||
системы, аналогичные тем, которые применяются для конструктивного за-
дания множеств слов в некотором алфавите, например, регулярные выра-
жения, грамматики Хомского, в том числе контекстно-свободные грамма-
тики, и т.д.
Рассмотрим вначале задание регулярных сетевых языков с помощью регулярных сетевых выражений. Синтаксически язык регулярных сетевых
выражений строится так же, как язык схем d -отношений в сигнатуре
(R кпэ , { , #, ,{}}).
Определим сетевую интерпретацию таких схем нижеследую-
щим образом, выбрав в качестве базиса B множество X символов пе-
ременных соответствующих арностей (точнее, каждый раз нас интересует
конечное подмножество |
X |
свободных переменных рассматриваемой |
||
схемы): |
|
|
|
|
1) для констант k |
из |
R кпэ |
k { k } , где |
k – одноименная |
с k сеть из S 0 (см. рис. 2.4); |
|
|
||
2) для переменных |
x X |
x {S1x }, где S1x |
– сеть из множества |
|
S 1B (см. рис. 2.4);
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 11
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
3) A1 A2 {S1 |
S2 | S1 A1 & S2 A2 } . Отметим, что если |
S1 S2 не определено, то соответствующая пара не вносит нового элемен- |
|
та в множество A1 |
A2 ; |
4)A1 # A2 {S1 # S2 | S1 A1 & S2 A2 } ;
5)A1 A2 A1 A2 ;
|
n |
|
6) {A(n,n) } Ai , где |
A0 , Ai 1 |
Ai A . |
i 0 |
|
|
Аналогия с известной алгеброй регулярных множеств слов очевидна:
последовательная композиция играет роль операции конкатенации, объ-
единение сохраняет свой смысл, а операция параллельной композиции ре-
дуцируется до уровня элементарных подформул вида A1 #...#Am , где Ai –
переменные или константы, применением аксиом 2 исчисления RIC
сильного включения схем d -отношений, и новых аксиом, вводимых для языков с операцией итерации (продолжая нумерацию аксиом RIC )3:
m |
m |
|
|
|
|
|
|
34. { # A } # {A } , 3, 7, 31, 32 |
введенного в первой главе, |
|
|
||||
|
m |
m |
|
|
|
|
|
35. { A # } {A } # , |
|
|
|
|
|
||
из которых для схемы |
A арности n, n и схемы |
B арности |
|
|
|
||
m ,m |
|||||||
могут быть получены правила редукции («спуска» операции # |
до уровня |
||||||
элементарных формул): |
|
|
|
|
|
||
|
n |
m |
n |
m |
|
|
|
B # {A } (B # ) ( # {A }) (B # ) |
{ # A } |
или |
|
|
|||
|
m |
n |
|
|
|
|
|
B # {A } { # |
A } ( B # ) ; |
|
|
|
|
|
|
3 Аксиома фиксированной точки для частного случая рекурсии – итерации вы-
глядит так: 33’. { A } A { A} .
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 12
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
m |
n |
{A } # B { A # } ( # B ) или |
|
n |
m |
{A } # B ( # B ) { A |
# }. |
В качестве второго примера способа задания сетевых языков рассмот-
рим контекстно-свободные сетевые грамматики. Для того, чтобы восполь-
зоваться аналогией с известными КС-грамматиками, задающими класс контекстно-сво-бодных формальных языков в некотором алфавите, мы
должны определить операцию подстановки. |
|
|
|
|
|
||||||||||
О п р е д е л е н и е 2.11. Результат |
[S1 / e]S2 |
подстановки сети |
S1 в сеть |
||||||||||||
S2 вместо элемента |
|
|
|
, такого, что его арность совпадает с ар- |
|||||||||||
e R,q q |
|||||||||||||||
ностью сети S |
, есть |
|
|
|
P P , I |
|
,O , E E \ {e},G |
G . |
|||||||
[I O / q q ] |
2 |
||||||||||||||
|
1 |
|
1 |
1 |
|
|
1 |
2 |
|
2 |
1 |
2 |
1 |
2 |
|
Выполнение операции подстановки в графическом представлении се- |
|||||||||||||||
тей иллюстрируется рис.2.6. |
|
|
|
|
|
|
|
|
|
|
|
||||
О п р е д е л е н и е 2.12. Сетевой КС-грамматикой |
называется четверка |
||||||||||||||
Bт , Bн ,a, P , где |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Bт |
– терминальный базис, |
|
|
|
|
|
|
|
|
|
|
|
|||
Bн |
– нетерминальный базис ( Bт |
и Bн |
не пересекаются), |
|
|
||||||||||
a Bн – аксиома, |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
P – непустое множество правил вида |
bi |
Si |
, где bi |
Bн , |
Si – сеть в |
||||||||||
базисе Bт Bн . |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 13
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
|
M |
M |
|
R |
R |
M’ |
|
M’ |
|
|
|
|
e |
= |
Рис. 2.6. Операция подстановки сети.
Сетевой язык S (G) , порожденный сетевой КС-грамматикой G , опре-
деляется одним из известных способов – индуктивно или дедуктивно.
Приведем в качестве примера дедуктивное определение.
О п р е д е л е н и е 2.13. |
|
|
S (G) {S | a S & S S B }, где |
a S обозначает выводимость |
|
P |
|
P |
т |
|
|
сети S из аксиомы a по правилам P |
|
и вводится следующим образом: |
a S (a S) P |
|
|
P |
|
|
S1 ( (b S2 ) P )( e b, IeOe E1 )(a S1 & S [S2 / e]S1 ). |
||
|
|
P |
О п р е д е л е н и е 2.14. Сетевой язык |
S |
в базисе B называется свобод- |
ным или l -языком, если его элементами являются только l -сети. |
||
О п р е д е л е н и е 2.15. Сетевой язык |
S |
в базисе B называется связан- |
ным или b -языком, если его элементами являются только b -сети.
2.7.Сетевая интерпретация рекурсивных схем d -отношений.
Пусть |
A A |
– рекурсивная схема d -отношений. Преобразуем ее к |
|
|
0 |
эквивалентной форме задания в виде конечной системы уравнений вида
yi |
Ai , i 1..k , такой, что |
|
|
для всех i 1.. k переменные |
yi FV ( A). Используя дистрибутив- |
|
ность объединения относительно операций последовательной и парал- |
|
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 14
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
|
|
n |
|
лельной композиции, преобразуем все Ai , |
i 0 .. k , к виду |
i |
Aij , где |
|
|
j 1 |
|
все Aij – простые схемы d -отношений, т.е. в них не используются операция объединения и оператор рекурсии;
|
для любой интерпретации |
свободных переменных |
|
|
A – пер- |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
вый компонент кортежа – минимального решения этой системы урав- |
||||||||||
|
нений в интерпретации . |
|
|
|
|
|
|
|
|
||
|
Сетевая интерпретация рекурсивных схем определяется так: |
|
|||||||||
О п р е д е л е н и е 2.16. A S (G) , где |
|
|
|
|
|
|
|||||
|
G Bт , Bн , y1 , P , |
|
|
|
|
|
|
|
|
||
|
|
|
k |
|
|
|
|
|
|
|
|
|
Bт FV ( A) FV ( Ai ) , |
|
|
|
|
|
|
|
|
||
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
Bн {yi | i 1..k}, |
|
|
|
|
|
|
|
|
||
|
P {yi |
Aij | i 1..k & j 1..ki }. |
|
|
|
|
|
|
|||
|
Полезной, но не обязательной, является последующая “чистка” нетер- |
||||||||||
|
минального базиса. |
|
|
|
|
|
|
|
|
||
1. |
Пусть |
Bн(0) |
– пустое подмножество Bн . Вычислим предел |
|
Bн( ) |
(его |
|||||
|
существование очевидно) последовательности |
Bн(0) , Bн(1) , Bн(2) ,... |
где |
||||||||
|
Bн(i 1) {b | существует правило |
b S P , такое, что все элементы |
|||||||||
|
сети |
S |
нетерминальных |
сортов являются |
элементами |
|
сортов из |
||||
|
Bн(i) } . Если |
y Bн( ) ( y1 – |
аксиома грамматики), то |
S (G) |
– пустой |
||||||
|
язык, в противном случае в множестве правил |
P оставим только те из |
|||||||||
|
них, в которых используются исключительно сорта из Bн( ) . |
|
|
|
|||||||
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 15
2.СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
2.Пусть Bн[0] {y1}. В качестве нового нетерминального базиса возьмем
предел последовательности Bн[0] , Bн[1] , Bн[2] ,..., |
где |
Bн[i 1] Bн[i] {b | |
существует правило b S P, такое, что сеть |
S |
содержит элемент |
сорта из Bн[i ]}. В множестве правил снова оставим только те правила, в
которых используются исключительно сорта из построенного множе-
ства. Таким образом, в нетерминальном базисе останутся только те не-
терминальные символы, которые «нужны» для определения аксиомы
y1 .
2.8.Реляционная интерпретация сетевых языков.
Пусть S (G) – сетевой язык в базисе Bт , заданный КС-грамматикой
G Bт , Bн ,a, P . Фиксируем интерпретацию |
|
ь- |
|||||||||
ного базиса |
B |
т |
так, что для всех |
R(n ,n ) B |
|
|
R – d -отношение арно- |
||||
|
|
|
|
|
т |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
сти n ,n |
на носителе D . |
|
|
|
|
|
|
||||
О п р е д е л е н и е 2.17. Интерпретация S (G) сетевого языка |
S (G) , |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
индуцированная интерпретацией |
|
элементов терминального базиса, есть |
|||||||||
|
|
|
|
|
| ( : P D)( |
|
(I ) & |
|
(O) & |
|
|
{ , |
|
|
|
|
|||||||
( P,I ,O,E ,G) S (G)
( {p1 , p2 } G) ( p1 ) ( p2 ) &
( R,q q E)( (q ), (q )) R )} .
Функция называется разметкой точек сети; допустимые разметки должны удовлетворять требованиям, предъявляемым к точкам элементами сети и ее dif -графом. Пары кортежей допустимых разметок входных и выходных точек сети являются элементами определяемого d -отношения.
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 16
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Т е о р е м а |
2.4. |
|
A = A для всех |
A A |
|
и для всех ин- |
|
|
|
|
0 |
|
|
терпретаций |
. |
|
|
|
|
|
Отсюда следует важный вывод: сетевые КС-грамматики могут рас-
сматриваться как форма задания рекурсивных схем d -отношений.
В заключение покажем, как для заданного сетевого языка S1 постро-
ить сетевой язык S |
2 |
, такой, |
что для любой |
интерпретации |
|
|
|
|
|
|
|
S |
2 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
представляет d -отношение, |
обратное |
d -отношению |
S |
1 |
. |
Пусть |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
S 2 |
. Для построения грамматики |
G2 |
языка |
S 2 |
||||||||||||
n , n - арность языка |
|||||||||||||||||||||
по заданной грамматике |
G1 |
языка |
S1 нужно: |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
изменить арность аксиомы |
a грамматики |
|
|
; |
|
|
|
|
|
|
|
|
|
|||||||
G1 на n , n |
|
|
|
|
|
|
|
|
|
||||||||||||
|
во всех правилах вида a S |
в сети |
S |
поменять местами кортежи |
|||||||||||||||||
|
входных и выходных точек; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
все элементы сетей (правых частей всех правил) вида |
|
|
|
|
|
|
|
заме- |
|||||||||||||
a,q q |
|
|
|
||||||||||||||||||
|
нить на элементы |
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a, q q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
2.9.Примеры задания сетевых языков и их реляционной интерпре-
тации. |
|
|
|
|
|
|
|
1. Пусть |
B {N (0,1) , S (1,1) } |
и |
задана |
сетевая |
грамматика |
||
|
т |
|
|
|
|
|
|
G (B ,{F (1,1) |
, M (2,1) , A(2,1) }, F, P) , где правила грамматики |
P показаны |
|||||
т |
|
|
|
|
|
|
|
на рис. 2.7. |
|
|
|
|
|
|
|
Тогда |
при |
N { ,0 }, |
S { i,i 1 | i 0 ..} |
S (G) |
|||
|
|
|
|
|
|
|
|
{ i,i! | i 0..} , |
т.е. является графиком функции «факториал». Нетер- |
||||||
минальные сорта |
A(2,1) и M (2,1) |
интерпретируются при этом как сложе- |
|||||
ние и умножение, соответственно. |
|
|
|
||||
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 17
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
2. На рис. 2.8 изображена сеть |
S , для которой |
S { ij,(i mod j) |
|
|
|
(i div j) | i 0, j 0} |
|
сортов ее |
элементов на множестве натуральных чисел: |
{ ij, | i j }, |
|
{ ij, | i j}, |
- { i j,i j | i j}, |
|
M { i,i j | i 0 & j 0}, A { ij,i j | i 0 & j 0}
3. На рис. 2.9 представлены правила сетевой грамматики, определяющей конструктор P упорядоченной пары натуральных чисел в базисе
{N (0,1) , S (1,1) }, интерпретация элементов которого дана в предыдущем примере, на основе «диагонального» метода нумерации.
4.Рис. 2.10 представляет правила сетевой грамматики в терминальном ба-
зисе {N (0,1) , S (1,1) , A(2,1) } . При интерпретации элементов базиса как нуля,
конструктора следующего числа и сложения, соответственно, нетерми-
нальный сорт С интерпретируется как функция числа сочетаний.
5.Правила сетевой грамматики, показанные на рис. 2.11, определяют опе-
рацию App сцепления двух списков при интерпретации сорта Nil ( 0 , 1 )
как конструктора пустого списка, а Cons ( 2 , 1 ) – как конструктора двоич-
ного упорядоченного дерева ( S -операции по Мак-Карти).
6.На рис. 2.12 приведены правила сетевой грамматики в терминальном базисе {A(1,1) , B(1,1) ,C(1,1) }, сетевой язык которой представляет (для не-
терминального сорта Y как аксиомы грамматики) регулярную схему
( Ai Bi C i ) , которой в традиционной теории формальных языков
i 0
(рассматривая терминальные сорта элементов как буквы терминального алфавита, а операцию последовательной композиции как конкатена-
цию) соответствует язык, не являющийся даже контекстно-свободным.
Построение отдельных сетей этого языка иллюстрирует рис. 2.5, приве-
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 18
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
денный выше как пример выполнения операции последовательной ком-
позиции.
7.Еще один пример приведен на рис. 2.13. Интерпретация терминаль-
ных сортов элементов такова (носитель – множество вещественных чи-
сел): x, y.(x y) , |
|
|
x, y.(x y) , |
x, y.( x y ) , |
||||
|
||||||||
/ x, y.(x / y) , |
|
|
x, y.(( x y) / 2) , |
| | x, y. abs (x y) , |
||||
2 |
||||||||
x, y.(x y) , x, y.(x y) , 2 x.(x / 2) . Нетерминаль-
ный сорт IR в этом случае интерпретируется как функция с парамет-
рами e, x , x , x x , вычисляющая значение определенного интеграла
x" F (x)dx с точностью e . Подынтегральная функция представлена не-
x'
терминальным сортом F , для которого предполагается наличие опре-
деляющих эту функцию правил. Интеграл вычисляется рекурсивно, ме-
тодом трапеций с переменным шагом. Фактически, носитель в этом примере – множество кодов-представлений чисел в доступном формате вещественных чисел, а интерпретация терминальных символов – реали-
зация соответствующих функций и предикатов с доступной точностью над представлениями чисел в этом формате.
8.В этом примере рассматриваются операции доступа к памяти типа «ку-
ча» (память типа «куча» является одним из основных компонентов ар-
хитектуры FALGOL -машины, описанной в [ ]. Пусть нетерминальный
сорт |
Ad представляет конструктивное счетное множество «адресов», |
D обозначает множество «данных», которые могут храниться в памя- |
|
ти, а |
M {m : Ad D | | m | 0..} – множество возможных «состояний» |
памяти, представленное структурой, показанной на рис. 2.14, где N (0) –
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 19
2. СЕТЕВЫЕ ЯЗЫКИ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
конструктор «пустой» памяти (с пустым графиком), а C (2) – произволь-
|
ный бинарный конструктор. Состояние памяти – множество состояний |
||
|
«ячеек» памяти с различными адресами. Состояние ячейки включает |
||
|
адрес ячейки и «данное», хранящееся в ячейке. |
|
|
|
Определим три операции: |
|
|
1) |
функцию адресного чтения: R : M Ad D ; если |
a dom(m) , то R(m, a) – |
|
|
не определено; |
|
|
2) |
функцию адресной записи: W : M Ad D M ; |
если |
a dom(m) , то |
|
W (m, a, d ) – не определено; |
|
|
3) |
отношение (неоднозначное соответствие из M D в |
M A ) инициа- |
|
|
лизации новой ячейки памяти: |
|
|
New { md,m a) | R(m ,a) d & a (a a R(m , a ) R(m,a ))}.
Правила сетевой грамматики, определяющие эти операции, приведены на рис. 2.15.
9.В этом примере (рис. 2.16) рассматривается та же задача, что и в преды-
дущем. Однако для взаимно-однозначного представления всех объектов
– адресов, данных и состояний памяти используются натуральные числа
(терминальный базис Bт {N (0,1) , S (1,1) }). Для представления состояний памяти используются методы нумерации элементов конструктивных множеств, в частности, сведение разнообразия конечных подмножеств натуральных чисел к разнообразию кортежей конечной длины из нату-
ральных чисел. Для построения номеров различных конструкций будем
использовать суперконструктор P(2) |
упорядоченной пары на множестве |
|
натуральных |
чисел, определенный |
в примере 3. Помимо операций |
R(2,1) , W (3,1) |
и New(2,2) , определяется вспомогательная функция I (2,1) , |
|
используемая при нумерации конечных подмножеств натуральных чи-
сел.
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 20
