Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAirton Martini Bernardes Alterado mais de 8 anos atrás
1
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operador para Renomeação de Eventos
2
Operador para construir processos: P[[R]] dado um processo P e uma relação entre eventos R na forma e1 <- f1, e2 <- f2,..., en <- fn R determina a renomeação dos eventos de P: –ei em P é mapeado para fi em P[[R]] Útil para criar vários processos similares Renomeação
3
Caso R seja uma função sobre os eventos de P, –P[[R]] é obtido a partir da sintaxe de P pela renomeação dos eventos segundo R –se R for injetiva, P[[R]] oferece o evento R(a) exatamente quando P oferece a –caso contrário, o comportamento da renomeação pode mudar : ( a -> P [] b -> Q)[[a <- b, b <- b]] Renomeação
4
COPY = left?x -> right!x -> COPY COPY'(a,b) = a?x -> b!x -> COPY'(a,b) COPY[[left <- aa,right <- bb]] [= COPY'(aa,bb) COPY'(aa,bb) [= COPY[[left <- aa,right <- bb]] Exemplo
5
SPLIT = in?x -> if x%2==1 then out1.x -> SPLIT else out2.x -> SPLIT RenSPLIT = SPLIT[[in.x <- in', out1.x <- out1', out2.x <- out2' | x <- T]] SPLIT' = in' -> ( out1' -> SPLIT' |~| out2' -> SPLIT') RenSPLIT = SPLIT'
6
Caso R não seja uma função, –P[[R]] oferece um evento em R(a) exatamente quando P oferece o evento a, caso o domínio de R contenha todos os eventos de P –pode-se introduzir escolhas que não existiam antes: (a -> STOP)[[a <- a, a <- b]] = (a -> STOP) [] (b -> STOP) Renomeação
7
(P |~| Q)[[R]] = P[[R]] |~| Q[[R]] (P [] Q)[[R]] = P[[R]] [] Q[[R]] (?x:A -> P)[[R]] = ?y:R(A) -> |~|{P(z)[[R]] | z A zRy} Leis
8
traces(P[[R]]) = { t | s traces(P). s R* t} s R* t sse –#s = #t – i<#s+1. s(i) R t(i) Traces
9
Do livro texto –Essenciais: 3.2.3 Exercícios
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.