- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
7.2Вспомогательные понятия
7.2.1Типы, переменные, значения и константы
Мы будем предполагать, что задано множество T ypes типов, причём каждому типу t T ypes сопоставлено множество Dt значений типа t.
Типы могут обозначаться идентификаторами. Для наиболее часто используемых типов существуют общепринятые идентификаторы, например,
•тип целых чисел обозначается int
•тип булевых значений (0 и 1) обозначается bool
•тип “символы” обозначается char
•тип “символьные строки” обозначается string
Также мы будем предполагать, что заданы следующие множества.
•Множество V ar, элементы которого называются переменными, причём каждой переменной x V ar сопоставлен тип t(x) T ypes.
Каждая переменная x V ar может принимать значения в множестве Dt(x), т.е. в различные моменты времени переменная x может быть связана с различными элементами
множества Dt(x).
•Множество Con, элементы которого называются константами. Каждой константе c Con сопоставлены
–тип t(c) T ypes, и
–значение [[c]] Dt(c), называемое интерпретацией константы c.
168
7.2.2Функциональные символы
Мы будем предполагать, что задано множество функциональных символов (ФС), причём каждому ФС f сопоставлены
•функциональный тип t(f) (называемый ниже просто типом), представляющий собой знакосочетание
(t1, . . . , tn) → t |
(7.2) |
где t1, . . . , tn, t T ypes, и
• частичная функция
[[f]] : Dt1 × . . . × Dtn → Dt
называемая интерпретацией ФС f.
Например, ниже мы будем рассматривать следующие ФС:
+, −, ·, head, tail, [ ]
где
• ФС + и − имеют тип
(int, int) → int
функции [[+]] и [[−]] представляют собой соответствующие арифметические операции
• ФС · имеет тип
(string, string) → string
функция [[·]] сопоставляет каждой паре строк (u, v) строку, получаемую приписыванием v к u справа (т.е. конкатенацию u и v).
• ФС head имеет тип
string → char
функция [[head]] сопоставляет каждой непустой строке её первый символ
(значение функции [[head]] на пустой строке не определено)
169
• ФС tail имеет тип
string → string
функция [[tail]] сопоставляет каждой непустой строке u строку, получаемую из u удалением её первого символа (значение функции [[tail]] на пустой строке не определено)
• ФС [ ] имеет тип
char → string
функция [[ [ ] ]] сопоставляет каждому символу строку, состоящую из одного этого символа
• ФС length имеет тип
string → int
функция [[length]] сопоставляет каждой строке её длину (т.е. количество символов в этой строке).
7.2.3Выражения
Выражения строятся стандартным образом из переменных, констант и ФС. Каждое выражение e имеет тип t(e) T ypes, определяемый структурой этого выражения.
Правила построения выражений имеют следующий вид.
•Каждая переменная или константа является выражением того типа, который сопоставлен этой переменной или константе.
•Если
–f – ФС, имеющий тип (7.2), и
–e1, . . . , en – выражения типов t1, . . . , tn соответственно
то знакосочетание f(e1, . . . , en) является выражением типа t.
170
Если каждой переменной x, входящей в выражение e, сопоставлено значение ξ(x), то выражению e можно сопоставить значение, обозначаемое знакосочетанием ξ(e), и определяемое стандартным образом:
def
• если e = x (переменная), то ξ(e) = ξ(x) (значение ξ(x) предполагается заданным)
def
• если e = c (константа), то ξ(e) = [[c]]
• если e = f(e1, . . . , en), то значение ξ(e) выражения e определено, если
– все значения ξ(e1), . . . , ξ(en) определены, и
– значение функции [[f]] определено на списке
(ξ(e1), . . . , ξ(en))
в этом случае
def
ξ(e) = [[f]](ξ(e1), . . . , ξ(en))
Ниже мы будем использовать следующие обозначения.
•Знакосочетание Expr обозначает совокупность всех выражений.
•Знакосочетание F m обозначает совокупность тех выражений, которые имеют тип bool.
Выражения из F m называются формулами.
При построении формул могут использоваться обычные булевские связки ( , , → и т.д.), интерпретируемые стандартным образом.
Символ > обозначает тождественно истинную формулу, а символ – тождественно ложную формулу.
Формулы вида (b1, b2), (b1, b2), и т.п. мы будем записывать в более привычном виде b1 b2, b1 b2, и т.д.
171