esquemas e suas operações
DESCRIPTION
Esquemas e suas operações. Forma geral:. Ident. Declarações ou Ident. = [Declarações | Predicado] Predicado. ^. - PowerPoint PPT PresentationTRANSCRIPT
Esquemas e suas operações
Forma geral:
Ident.Declarações ou Ident. = [Declarações | Predicado]Predicado
^
Esquemas são estruturas que agrupam variáveis e predicados que restringem seus valores. Seu nome possui escopo global, mas as declarações e predicados possuem escopo local
Exemplos de esquemas
[Pessoa, Fone]
Agenda = [ag: Pessoa Fone; con: P Pessoa | con = dom ag]
ou, alternativamente,
Agenda ag: Pessoa Fone con: P Pessoa con = dom ag
I^
I
given sets
Renomeação em esquemas
Forma geral:– nomeEsquema [nomeNovo / nomeAtual]
Exemplo: Aniversarios = Agenda[aniv/ag]^
I
Aniversarios aniv: Pessoa Fone con: P Pessoa con = dom aniv
Resulta em
Inclusão de Esquemas
Forma geral: Ident.nomeEsquemaDeclaraçõesPredicado
Exemplo:
I
ContaAgAgendaqtd: Nqtd = # con
I
ContaAgag: Pessoa Fonecon: P Pessoaqtd: Ncon = dom agqtd = # con
I
Decoração de esquemas
Forma geral: nomeEsquema’ Exemplo:
I
ContaAg’ag’: Pessoa Fonecon’: P Pessoaqtd’: Ncon’ = dom ag’qtd’ = # con’
I
Convenções sobre esquemas
Forma geral: nomeEsquema Usado em operações para denotar
mudança de estado Exemplo:
AgendaAgendaAgenda’ I
Agenda ag, ag’: Pessoa Fone con, con’: P Pessoa con = dom ag con’ = dom ag’
Convenções sobre esquemas
Forma geral: nomeEsquema Usado em operações para denotar que
não há mudança de estado Exemplo:
I
Agenda ag, ag’: Pessoa Fone con, con’: P Pessoa con = dom ag con’ = dom ag’ ag = ag’ con = con’
Agenda Agendaag=ag’con=con’
Usando e em operações Inclui0
Agendap?: Pessoaf?: Foneag’ = ag {p? f?}con’ = con {p?}
Consulta0
Agendap?: Pessoaf!: Fonep? conf! = ag(p?)
Variáveis de entrada (?)
Variável de saída (!)
Conjunção e disjunção de esquemas
Seja Resultado ::= opOK | pessoaInexistente
Sucessom!: Resultadom! = opOK
ERRO Agendap?: Pessoam!: Resultadop? conm! = pessoaInexistente
Consulta = (Consulta0 Sucesso) ERRO^
Outras operações
nomeEsquema1 nomeEsquema2
– Junta declarações
– Implicação dos predicados
nomeEsquema1 nomeEsquema2
– Junta declarações
– Equivalência dos predicados
Operação ocultamento (“hiding”)
Corresponde a quantificar existencialmente variáveis em questão
Exemplo: QualquerFone = Consulta0\(p?)
QualquerFone Agendaf!: Fone p?:Pessoa p? con f! = ag(p?)
Composição seqüencial
Sejam O1 e O2 dois esquemas como operações
O1;O2 representa a composição seqüencial entre O1 e O2
Significando que o estado final de O1 irá coincidir com o estado inicial de O2
O1O2S’ = S{entrada(?)
}saída (!)
Estado intermediário
S
S’
Composição seqüencialSejam O1 e O2 os seguintes esquemas: O1
x, x’: TP(x, x’)
O2
x, x’: TQ(x, x’)
A composição seqüencial de O1 e O2, O1 ; O2, é definida por:
O1 ; O2 = (O1[x0/x’] O2[x0/x]) \ (x0)ou
O1 ; O2
x, x’: T x0:T P(x, x0) Q(x0, x’)
Exercício: se p? dom ag então Inclui0 ; Exclui0 Agenda,ondeExclui0 = [ Agenda; p?:Pessoa |
p? con ag’ = {p?} ag con’ = con\{p?}]
^
^
Operação piping
Semelhante à composição seqüencial, exceto por considerar as comunicações ao invés do estado
Portanto, P>>Q significa que as saídas de P corresponderão as entradas de Q
O predicado referente ao estado será simplesmente a conjunção dos predicados de P e de Q
Tipos em Z
Há quatro formas de introduzir tipos em Z:– Given sets: [ ... ]– Produto cartesiano: ... ...– Conjunto das partes: P ...– Esquemas: nomeTipo
I
...
...
Tipos em Z
Os naturais ( N), inteiros (Z) e reais ( R) são usualmente assumidos como pré-definidos
Conjuntos arbitrários são permitidos em declarações, mas nem sempre são tipos– O tipo é derivado (inferência) das sub-
expressões que compõem o conjunto arbitrário, através de um processo de normalização
I I
Processo de normalizaçãoSeja Pares == { n: N | 2 * n }I
y: Pares y: N
y Pares
I
R: X Y R: P(X Y)I
f: X Y f: P(X Y)
f X Y
I
s: seq Xs: P(X Y)
s seq X
I
Esquema como tipo
Semelhante aos registros de PASCAL Componentes são acessados através
da operação de projeção (.)
I
Agenda ag: Pessoa Fone con: P Pessoa con = dom ag
a, b: Agenda
a . ag = b . ag
Projeção
Mapeamentos (“bindings”)
Um esquema como tipo pode ser visto como um binding de variável para valor
Por exemplo: seja a: Agenda, tal que ag {(josé,32213423)}, con {josé}
Então, aplicando o operador de projeção sobre a, referente a ag, nos dá– a . ag = {(josé, 32213423)}
O operador Aplica-se a nomes de esquemas,
retornando seu binding característico Por exemplo: seja a: Agenda, tal como
antes então a = ag {(josé,32213423)}, con {josé}
Seu uso comum é Agenda’= Agenda, que implica ag’=ag con’=con
Um esquema é dito normalizado quando suas declarações estão normalizadas