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
Download

Semântica Operacional