- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
10.2Семантика языка L
В этом параграфе мы определяем семантику языка L, которая представляет собой правило, сопоставляющее каждой конструкции Q языка L некоторое ПВ h|Q|i, называемое семантикой конструкции Q.
При определении этой семантики мы будем использовать следующие обозначения и соглашения.
1.В каждом ПВ B, соответствующем какой-либо конструкции языка L, знакосочетания
δ!, ρ!, i? и o!
обозначают действия, имеющие заранее предопределённый смысл:
(a)δ! обозначает сигнал о завершении исполнения процесса, соответствющего процессному выражению B
(b)ρ! обозначает вывод значения, являющегося результатом работы процесса, соответствующего процессному выражению B
(c)i? обозначает ввод значения в программу
(d)o! обозначает вывод значения из программы
2.Символ done обозначает ПВ δ! . 0
3.Для каждой пары ПВ B1, B2
(a)знакосочетание B1 before B2 обозначает ПВ
B1[β/δ] | β?.B2 \ {β}
где β не входит в B1 и B2
(b) знакосочетание B1 result B2 обозначает ПВ
(B1 | B2) \ {ρ}
315
(c) знакосочетание B1 par B2 обозначает ПВ
B2 |
[δ2 |
/δ] | |
|
|
|
δ1, δ2 |
|
|
|
B1 |
[δ1 |
/δ] |
|
|
\ { |
|
} |
δ1!.δ2 |
!.done| |
+ δ2!.δ1!.done |
|
|||||
|
|
|
|
|
|
|
|
|
где δ1 и δ2 не входят в B1 и B2
4.Для каждого объекта с именем n, объявленного в некоторой декларации D, символ Ln обозначает подмножество множества Names, состоящее из точек доступа к этому объекту:
Ln = {πR, ϕR |
, |
} |
|
если D = (10.2) |
|||||
|
{ |
αx, γx |
, πx |
, ϕx |
, |
если |
D = (10.1) |
||
α |
, γ |
} |
|
|
|
|
D = (10.3) |
||
|
|
|
, |
|
|
|
|||
def |
{ |
|
|
G} |
|
|
|
|
|
|
|
G |
|
|
|
если |
|
||
|
|
|
|
|
|
|
|
|
|
Если имена n1 и n2 таких объектов различны, то
Ln1 ∩ Ln2 =
10.2.1Семантика выражений
Каждому выражению e языка L соответствует ПВ h|e|i, определяемое индукцией по построению выражения e:
• для каждой переменной x V ar
|
|
|
|
|
|
|
|
def |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h|x|i = γx?y. ρ!y. 0 |
|
|
|
|
|||||||
• для каждой константы c Con |
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
h|c|i |
def |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= ρ!c. 0 |
|
|
|
|
||||||
• для каждого ФС f |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
def |
|
|
|
|
|
|
|
|
|
|
|
|
h|f(e1, . . . , en)|i = |
|
. ρ! f(x1 |
, . . . , xn) . 0 |
! \ { |
|
|
} |
|||||||||||
= |
ρ1 |
?x1 |
. . . . ρn?xn |
ρ1 |
, . . . , ρn |
|||||||||||||
h| |
e |
1|i [ |
1 |
] | |
. . . |
| h| |
n|i [ |
ρ |
n |
/ρ |
] | |
|
|
|||||
def |
|
|
|
ρ /ρ |
e |
|
|
|
|
|
|
|
316
10.2.2Семантика деклараций
При описании семантики деклараций мы будем использовать вспомогательные ПВ, соответствующие процессам, определяемым
ввиде РО:
•REGx(y) = αx?z . REGx(z) + γx!y . REGx(y)
([[REGx(y)]] = регистр для хранения значения переменной x)
def
• LOCx = αx?y . REGx(y)
(регистр без начального содержания)
• SEMx = πx! . ϕx! . SEMx
• SEMR = πR! . ϕR! . SEMR
Семантика деклараций имеет следующий вид.
1. Если D = VAR x, то
def
h|D|i = LOCx | SEMx
2. Если D = RESOURCE R, то
def
h|D|i = SEMR
3.Если D = PROCEDURE G(u, v) IS C, то процессному выражению h|D|i соответствует РО
|
|
LOCu |
|
|
|
|
|
|
|
|
|
|
h|D|i = |
LOCv | |
|
C |
|
|
) |
|
LG) |
\ (Lu Lv) |
|||
|
αG?x .|αu!x . (( D |
|i | h| |
|i |
\ |
|
|||||||
|
|
h| |
|
|
|
|
|
|
||||
|
|
before γv?y . γG!y . |
h| |
D |
|i |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
Если в РО для h|PROCEDURE . . . |i вместо
(h|D|i | h|C|i) \ LG
было бы написано просто h|C|i, то неправильно транслировались бы такие процедуры, которые рекурсивно вызывают сами себя, т.е. такие G, в теле которых есть оператор call G.
317
Вышеприведённая семантика деклараций вида (10.3) является неидеальной. Она неправильно сопоставляет ПВ таким операторам, в которых есть параллельные вызовы одной и той же процедуры, например, оператору вида
call G(6, z) par call G(7, w)
Если известно максимальное число n доступных процессоров (т.е. одновременно n процедур могут быть активными), то семантику декларации D вида (10.3) лучше определить в виде РО
h| |
i = 1, . . . , n |
| . . . | h|D|in |
|
|
|
||||||||
|
D|i |
= h|D|i1 |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
LOCu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOCv |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h| |
D |
|ii = |
α |
G,i |
? |
x . |
|
αu!x . |((h|D|i | h|C|i) \ LG) |
|
||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
before γv?y . γG,k!y . |
|
D i |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h| |
|i |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def |
|
|
|
|
|
|
|
|
|
где LG = {αG,1, . . . , αG,n, γG,1, . . . , γG,n}. |
|
|
\ (Lu Lv)
(10.4)
10.2.3Семантика операторов
def
1. h|x := e|i = πx? . h|e|i result (ρ?y . αx!y . ϕx? . done)
def
2. h|C1; C2|i = h|C1|i before h|C2|i
def
3. h|if e then C1 else C2|i =
def
= h|e|i result ρ?x . (x ? h|C1|i + ¬x ? h|C2|i)
4. если C = while e do C0, то ПВ h|C|i связано со следующим РО:
h| |
C |
|i |
= |
e |
|i |
result (ρ?x. |
x ? h|C0|i before h|C|i + |
) |
|
|
h| |
|
x ? done |
! |
|||
|
|
|
|
|
|
|
¬ |
|
def
5. h|begin {D1, . . . , Dk; C} end|i =
def
= (h|D1|i | . . . | h|Dk|i | h|C|i) \ (LD1 . . . LDk )
def
6. h|C1 par C2|i = h|C1|i par h|C2|i
318
def
7. h|input x|i = i?y . αx!y . done
def
8. h|output e|i = h|e|i result (ρ?x . o!x . done)
def
9. h|skip|i = done
def
10. h|call G(e, z)|i =
def
= h|e|i result (ρ?x . αG!x . γG?z . αz!z . done)
def
11. h|with R do C|i = πR? . h|C|i before (ϕR? . done)
Если известно максимальное число n доступных процессоров (т.е. одновременно n процедур могут быть активными), и семантика деклараций вида (10.3) определяется в соответствии с (10.4), то семантику оператора call G(e, z) следует определить следующим образом:
def
h|call G(e, z)|i =
def
= h|e|i result (ρ?x .
n
P αG,i!x . γG,i?z . αz!z . done)
i=1
Читателю предлагается самостоятельно
•определить семантику каких-либо современных языков параллельного или распределённого программирования (MPI
ит.п.) или языков проектирования бизнес-процессов (BEPL
ит.п.), и
•разработать на основе этой семантики автоматизированную систему доказательства свойств программ или описаний систем на этих языках.
319