Semântica Operacional
Semantics with Applications - A Formal Introduction
H. R. Nielson and F. Nielson
Wiley Professional Computing
Capítulo 2
DI
UFPE
Semântica Operacional
Características principais
Significado
dos programas é especificado pela
computação que ele induz quando executado
Preocupação
executados
DI
UFPE
com COMO os programas são
Abordagens
Semântica natural
Resultados finais
Semântica operacional estrutural
Passos
DI
UFPE
individuais
Sistema de Transição
Componentes
Configurações
S,s - comando S executado no estado s
s - um estado terminal
Relação
DI
UFPE
de transição
Diferentes abordagens: diferentes formas de
especificar a relação de transição
Semântica Natural
Transição
Relação entre o estado inicial e o estado final
S,s s’
Regras
premissas
condições
axiomas
c1, e1 e1’
... cn, en en’
DI
UFPE
c, e e’
if ...
Semântica Natural de While
x := a, e e [x |->A [[a]] e]
(atr)
skip, s s
(skip)
c1, e e’
c2, e’ e’’
c1 ; c2, e e’’
c1,e e’
if b then c1 else c2, e e’
c2, e e’
if b then c1 else c2, e e’
DI
UFPE
(comp)
if B [[b]] e = true
(if-true)
if B [[b]] e = false
(if-false)
Semântica Natural de While (cont.)
c,e e’ while b do c, e’ e’’
while b do c, e e’’
while b do c, e e
DI
UFPE
if B[[b]] e = true (while-true)
if B[[b]] e = false
(while-false)
Árvores de Derivação
Uso das definições para derivar uma transição
Raiz
Nós
internos
Todas as condições devem ser satisfeitas
Tipos de árvores
Simples:
instância de axioma
Composta
DI
UFPE
Propriedades de uma Semântica Natural
Programas S1 e S2 são semanticamente equivalentes se
para todos os estados s e s’
S1,s s’ se e somente se S2,s s’
DI
UFPE
Árvores de derivação são a base para a prova
Propriedades de uma Semântica Natural
Semântica natural determinística
Para cada comando S e cada estado inicial s, o estado
final pode ser determinado unicamente.
Para todo comando S, e estados s, s´ e s´´
S,s s´ e S,s s´´ implica que s´ = s´´
DI
UFPE
Indução Sobre a
Forma das Árvores de Derivação
Caso base: árvores simples
Prova
propriedades para axiomas
Passo de indução: árvores compostas
Prova
para cada regra, assumindo válido para as
premissas
DI
UFPE
Indução estrutural nem sempre é possível
Função Semântica
Sns = Stm (State State)
Sns[[ S ]] s = s’ if S,s s’
Sns[[ S ]] s = undef, otherwise.
DI
UFPE
Semântica Operacional Estrutural
Ênfase nos passos individuais da execução
Relação de transição
DI
UFPE
S,s
pode ter duas formas:
S’,s’
s’
S,s está travado se não há tal que S,s
Semântica Operacional Estrutural de
While
x := a,s s[x A[[a]] s ]
skip,s s
S1,s S1’,s’
S1; S2,s S1’; S2,s’
S1,s s’
S1; S2,s S2,s’
DI
UFPE
Semântica Operacional Estrutural de
While
if b then S1 else S2,s S1,s if B[[b]] s = tt
if b then S1 else S2,s S2,s if B[[b]] s = ff
while b do S,s
if b then (S; while b do S) else skip,s
DI
UFPE
Sequência de Derivação
Sequência de configurações
S,s , 1, ... , k
i i + 1
DI
UFPE
k
é travada ou terminal OU
a
sequência é infinita
Para cada passo há uma árvore de derivação
Propriedades de uma Semântica
Operacional Estrutural
Execução de um comando S em um estado s
Termina:
Entra
DI
UFPE
sequência de derivação finita
em “loop”: sequência de derivação infinita
Indução no comprimento das sequências de derivação
Semântica Operacional
Determinística
Para todo comando S, e estados s, s´ e s´´
S,s e S,s ´ implica que = ´
Há apenas uma sequência de derivação começando de
uma configuração S,s
DI
UFPE
Equivalência de Programas
Programas S1 e S2 são semanticamente equivalentes se
para todos os estados s
S1,s
* se e somente se S2,s * , se for
uma configuração travada ou terminal
Há
uma sequência de derivação infinita começando
em S1,s se e somente se há uma começando em
S2,s
DI
UFPE
Função Semântica
Ssos = Stm (State State)
Ssos[[ S ]] s = s’ if S,s * s’
Ssos[[ S ]] s = undef, otherwise.
DI
UFPE
As definições de While são equivalentes
Extensões de While
Abort
Regras anteriores não são modificadas
Nenhuma regra é adicionada
Semântica operacional estrutural
abort é diferente de skip e while true do skip
Semântica natural
abort é equivalente a while true do skip
DI
UFPE
Extensões de While
Abort
Semântica natural não distingue não-terminação de
terminação anormal
Em semântica operacional estrutural
Não-terminação:
Terminação
DI
UFPE
sequência de derivação infinita
anormal: configuração travada
Extensões de While
Não-determinismo
S1 or S2
Semântica
natural
S1,s s’
S1 or S2 ,s s’
S2,s s’
S1 or S2 ,s s’
DI
UFPE
Extensões de While
Não-determinismo
Semântica operacional estrutural
S1 or S2,s S1,s
S1 or S2,s S2,s
Considere while true do skip or x := 1
Em
semântica natural, não-determinismo suprimirá
não-terminação, se possível
Em
semântica operacional estrutural, isso não
acontece.
DI
UFPE
Extensões de While
Paralelismo
S1 par S2
Semântica operacional estrutural
S1,s S1’,s’
DI
UFPE
S1,s s’
S1 par S2,s S1’ par S2,s’
S1 par S2,s S2,s’
S2,s S2’,s’
S2,s s’
S1 par S2,s S1 par S2’,s’
S1 par S2,s S1,s’
Extensões de While
Paralelismo
Semântica natural
S1,s s’ , S2,s’ s”
S1 par S2 ,s s”
S2,s s’ , S1,s’ s”
S1 par S2 ,s s”
DI
UFPE
Extensões de While
Paralelismo
Semântica natural
Execução de componentes é atômica: “interleaving”
não pode ser expresso
Semântica operacional estrutural
“Interleaving” pode ser expresso facilmente
DI
UFPE
Blocos
S ::= ... | begin DV S end
DV ::= var x := a; DV |
Semântica natural
Um sistema de transição para cada categoria sintática
DI
UFPE
Blocos
DV,s[x A[[a]] s ] D s’
var x := a; DV ,s D s’
,s D s
DV,s D s’
,
S,s’ D s”
begin DV S end,s s” [DV(Dv) s]
DI
UFPE
Procedimentos
S ::= ... | begin DV DP S end | call p
DV ::= var x := a; DV |
DP ::= proc p is S; DP |
DI
UFPE
Escopo estático para variáveis e procedimentos
Procedimentos
call p : executa o corpo de p
É
necessário registrar a associação entre nomes e
corpos de procedimentos
Ambiente
de procedimento
EnvP = Pname Stm EnvV EnvP
Ambiente
de variável
Envv = Var Loc
Store = Loc { next } Z
DI
UFPE
Procedimentos
Extensão do sistema de transições para comandos
envV, envP |- S,sto sto’
Extensão do sistema de transições para declarações
DV,envV,sto D (env’V, sto’)
DI
UFPE
Procedimentos
Declarações
DV, envV[x l],sto [l v][next new l] D (env’V ,sto’)
var x := a; DV , envV ,sto D (env’V ,sto’)
onde v = A[[a]](sto envV) e l = sto next
,envV, sto D (envV, sto)
DI
UFPE
Procedimentos
Comandos
envV, envP |- x := a,sto sto[l v]
onde l = envV x and v = A[[a]](sto envV)
DV,envV, sto D (env’V ,sto’),
env’V, env’P |- S,sto’ sto”
envV, envP |- begin DV DP S end,sto sto”
onde env’P = updP(DP,env’V,envP)
DI
UFPE
Procedimentos
env’V, env’P |- S,sto sto’
envV, envP |- call p,sto sto’
onde envP p = (S,env’V,env’P)
env’V, env’P [p |-> (S, env’V, env’P )] |- S,sto sto’
envV, envP |- call p,sto sto’
onde envP p = (S,env’V,env’P)
DI
UFPE