Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матвей сгдм.DOC
Скачиваний:
23
Добавлен:
27.04.2019
Размер:
754 Кб
Скачать
☆

1.6. Операции над протоколами

Протоколам принадлежит основная роль в фиксировании, описании и понимании поведения процессов. В этом разделе мы исследуем некоторые общие свойства протоколов и опе­раций над ними. Введем следующие соглашения:

s, t, u обозначают протоколы,

S, T, U обозначают множества протоколов,

f, g, h обозначают функции.

1.6.1. Конкатенация

Наиболее важной операцией над протоколами является конкатенация, которая строит новый протокол из пары опе­рандов s и t, просто соединяя их в указанном порядке; ре­зультат будем обозначать s^t. Например,

(<мон, шок>^<мон, ирис> = <мон, шок, мон, ирис>

<n1>^<n1> = <n1, n1>

<n1, n1>^<> = <n1, n1>

Самые важные свойства конкатенации – это ее ассоциа­тивность и то, что пустой протокол <> служит для нее еди­ницей:

L1. s^ <> = <>^s

L2. s^(t ^ u> = (s^t)^u

Следующие законы и очевидны, и полезны:

L3. s^t = t^u ≡ t = u

L4. s^t = u^t ≡ s = u

L5. s^t = <> ≡ s = <> & t = <>

Пусть f – функция, отображающая протоколы в прото­колы. Мы говорим, что функция строгая, если она отображает пустой протокол в пустой протокол:

f(<>) = <>

Будем говорить, что функция дистрибутивна, если

f(s^t) = f(s)^f(t)

Все дистрибутивные функции являются строгими.

Если n – натуральное число, то tn будет обозначать конкатенацию n копий протокола t. Ее легко определить индук­цией по n:

L6. t0 = <>

L7. tn+1 = t^tn

Это определение дает нам два полезных закона; и еще два можно доказать как их следствия:

L8. tn+1 = tn^t

L9. (s^t)n+1 = s^(t^s)n^t

1.6.2. Сужение

Выражение (t ↾ A) обозначает протокол t, суженный на множество символов A; он строится из t отбрасыванием всех символов, не принадлежащих A. Например,

<вокруг, вверх, вниз, вокруг > ↾ {вверх, вниз} = <вверх, вниз>

Сужение дистрибутивно и поэтому строго.

L1. <> ↾ A = <>

L2. (s^t) ↾ A = (s A)^(t A)

Эффект сужения на одноэлементных последовательностях очевиден:

L3. <x> ↾ A = <x> если х ∈ А

L4. <y> ↾ A = <> если у ∉ A.

Дистрибутивная функция однозначно определяется своими результатами на одноэлементных последовательностях, по­скольку ее значения на последовательностях большей длины могут быть вычислены конкатенацией ее результатов на отдельных элементах последовательности. Например, если x ≠ у, то

<x, y, x> = (<x>^<y>^<x>) ↾ {x} = (<x> ↾ {x})^(<y> ↾ {x})^(<x> ↾ {x}) по L2

= <x>^<>^<x> по L3, L4

= <x, x>

Приведенные ниже законы раскрывают взаимосвязь сужения и операций над множествами. От протокола, суженного на пустое множество, не остается ничего, а последовательное сужение на два множества равнозначно одному сужению на пересечение этих множеств. Эти законы можно доказать ин­дукцией по длине s.

L5. s ↾{} = <>

L6. (s ↾A) ↾ B = s (A ∪ B) ;

1.6.3. Голова и хвост

Если s – непустая последовательность, обозначим ее первый элемент s0, а результат, полученный после его удале­ния,– s’. Например:

<x, y, x>0 = x

<x, y, x>’ = <y, x>

Обе эти операции не определены для пустой последовательности.

L1. (<x>^s>0 = x

L2. (<x>^s)' = s

L3. s = (<s0>^s’) если s ≠ <>.

Следующий закон предоставляет удобный метод доказатель­ства равенства или неравенства двух протоколов:

L4. s = t ≡ (s = t = <> ∨ (s0 = t0 & s’ = t’))

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]