Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
23.05.2015
Размер:
1.7 Mб
Скачать

t(x) = t(e),

подпоследовательности

(opi+1, . . . , opn) и (op0j+1, . . . , op0m)

могут быть пустыми процесс P1 | P2 содержит переход

(s1, s2) Op- (s01, s02)

где Op имеет вид

 

,

 

 

op2

, . . . , opi

 

(cond (Op1)

cond (Op2)) ?,

 

op20

, . . . , opj0

,

 

 

 

 

 

 

(x := e),

 

 

 

 

 

 

 

 

opi+1, . . . , opn,

 

 

 

 

 

 

 

 

 

 

 

opj0 +1, . . . , opm0

 

 

 

 

 

 

7.8.6Преобразование процессов с передачей сообщений в процессы с СО

Каждый процесс с передачей сообщений можно преобразовать в процесс с СО путём замены меток его переходов: для каждого

перехода

s1 op - s2

его метка op заменяется на СО Op, определяемый следующим образом.

• Если op – оператор проверки условия, то

def

Op = (op)

• Если op – оператор присваивания, ввода или вывода, то

def

Op = (>? , op)

где > – тождественно истинная формула.

Для каждого процесса с передачей сообщений P мы будем обозначать соответствующий ему процесс с СО тем же символом

P .

202

7.8.7Конкатенация СО

В этом параграфе мы вводим понятие конкатенации СО: для некоторых пар СО (Op1, Op2) мы определяем СО, обозначаемый знакосочетанием

Op1 · Op2

(7.17)

и называемый конкатенацией Op1 и Op2.

СО (7.17) отражает идею последовательного выполнения операторов из Op1 и Op2: в (7.17)

сначала выполняются операторы, входящие в Op1,

а затем - операторы, входящие в Op2.

Необходимым условием для того, чтобы можно было определить конкатенацию (7.17), является условие того, чтобы хотя бы один из СО Op1, Op2 был внутренним.

Ниже мы будем использовать следующие обозначения.

1.Для каждого

СО Op = (op1, . . . , opn), и

оператора присваивания op

знакосочетание Op · op обозначает СО

(op1, . . . , opn, op)

(7.18)

2.Для каждого

внутреннего СО Op = (op1, . . . , opn), и

оператора ввода или вывода op

знакосочетание Op · op обозначает СО (7.18)

3.Для каждого

СО Op = (op1, . . . , opn), и

оператора проверки условия op = b?

знакосочетание Op · op обозначает объект, который

203

либо является СО,

либо не определён.

Данный объект определяется рекурсивно следующим образом.

Если n = 1, то

def

Op · op = ((cond (Op) b) ?)

иначе –

• если opn – оператор присваивания вида (x := e), то

def

, . . . , opn−1) · opn(op)) ·opn

Op · op = ((op1

|

 

 

{z

 

}

 

 

( )

 

где

opn(op) – оператор проверки условия, получаемый из op заменой всех вхождений в него переменной x на выражение e

если объект ( ) не определён, то Op · op тоже не определён

если opn – оператор вывода, то Op · op есть СО

((op1, . . . , opn−1) · op) · opn

(7.19)

если opn – оператор ввода, и имеет вид α ? x, то Op · op

не определён, если op зависит от x

равен СО (7.19), в противном случае.

Теперь можно сформулировать определение конкатенации СО. Пусть заданы два СО Op1, Op2, причём Op2 имеет вид

Op2 = (op1, . . . , opn)

Мы будем говорить, что определена конкатенация СО Op1 и Op2, если выполнены следующие условия:

• хотя бы один из СО Op1, Op2 является внутренним

204

• определены все объекты в скобках в выражении

(. . . ((Op1 · op1) · op2) · . . .) · opn

(7.20)

Если эти условия выполнены, то конкатенацией Op1 и Op2 называется СО

Op1 · Op2

который равен значению выражения (7.20).

7.8.8Редукция процессов с СО

Пусть P - процесс с СО.

Редукция процесса P представляет собой последовательность

P = P0

-

P1

-

. . .

-

Pn

(7.21)

 

 

 

преобразований этого процесса, каждое из которых производится согласно какому-либо из излагаемых ниже правил. Каждое из этих преобразований (кроме первого) производится над результатом предыдущего преобразования.

Результатом редукции (7.21) является результат последнего из преобразований (т.е. процесс Pn).

Правила редукции имеют следующий вид.

Правило 1 (конкатенация).

Пусть s – некоторое состояние процесса с СО, которое не является начальным, и

совокупность всех переходов этого процесса с концом s имеет вид

s1 Op1- s, . . . , sn Opn- s

совокупность всех переходов этого процесса с началом s имеет вид

 

Op0

Op0

s

1-

s10 , . . . , s

m-

sm0

 

 

• s 6 s{1, . . . , sn, s01, . . . , s0m}

205

для каждого i = 1, . . . , n и каждого j = 1, . . . , m определена конкатенация

Opi · Opj

Тогда данный процесс можно преобразовать в процесс,

состояниями которого являются состояния исходного процесса, за исключением s

переходами которого являются

те переходы исходного процесса, началом или концом которых не является s,

а также переходы вида

si

·

j- s0

 

Opi

Op0

 

 

 

j

для каждого i = 1, . . . , n и каждого j = 1, . . . , m

– начальное состояние которого, а также

множество переменных, и

начальное условие

совпадают с соответствующими компонентами исходного процесса.

Правило 2 (склейка).

Пусть P – процесс с СО, который содержит два перехода с общим началом и общим концом

 

Op

-

 

 

 

Op0

 

s1

 

s2

,

s1

-

s2

(7.22)

 

 

 

причём метки этих переходов различаются только в первой компоненте, т.е. Op и Op0 имеют вид

Op = (op1, op2, . . . , opn)

Op0 = (op01, op2, . . . , opn)

Правило 2 заключается в замене пары переходов (7.22) на

один переход вида

s1 Op- s2

где Op = ((cond (Op) cond (Op0)) ?, op2, . . . , opn)

206