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

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. (sA)B = s (AB) ;

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’))

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