Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAnasofia De Carvalho Alterado mais de 9 anos atrás
2
Curso Prático de Métodos Formais Refinamentos de Especificações em Z (Alexandre Mota e Augusto Sampaio)
3
Tópicos Abordados l Exemplo: A Tabela de Símbolos (TS) l Provando Refinamentos –Mesmo Estado –Estados Diferentes
4
Exemplo: A Tabela de Símbolos [VAL,SYM] State st: ST Delete State s?: SYM s? dom(st) st’={s?} st ST == SYM VAL NotPresent State s?: SYM rep!: Report s? dom(st) rep!=Symbol_not_present Report ::= Ok | Symbol_not_present Success = [rep!:Report | rep!=Ok] ^ StDelete = (Delete Success) NotPresent ^ Update State s?: SYM v?: VAL s? dom st st’ = st {s? v?}
5
Refinamento de Operações (Mesmo Estado) l Verificar se operações compostas refinam operações simples; l As obrigações são: a aplicabilidade e a corretude. l Há simplificação dos teoremas pois o esquema Retrieve é a relação identidade Delete StDelete ??? theorem aplicMesmoEstado pre Delete pre StDelete theorem corrMesmoEstado pre Delete StDelete Delete
6
Estratégia para Refinamento l Os teoremas de refinamento usam as pré-condições mais de uma vez; l Portanto, neste caso é interessante guardar o resultado; l Desta forma, deve-se calcular as pré-condições; l Armazenar os resultados obtidos como esquemas; l Introduzir estes resultados nas obrigações de prova. \begin{schema}{Delete}... \end{schema} \begin{schema}{preDeleteRes}... \end{schema} \begin{theorem}{aplicacao}... preDeleteRes... \end{theorem}
7
Refinamento de Dados (funcional) l No caso geral, é necessário estabelecer uma relação entre os dois estados (abstrato e concreto); l Aqui, consideraremos que esta relação é sempre funcional. Inicialização: Cinit Retr’ Ainit Aplicabilidade: pre Aop Retr pre Cop Corretude: pre Aop Retr Cop Retr’ Aop
8
Refinamento de Dados (Geral) l Propor um novo estado; l Propor um esquema Retrieve; l Propor refinamentos para as operações; l Construir as obrigações de prova como teoremas; l Provar os teoremas.
9
Refinamento de Dados (Exemplo 1) Retrieve1 State State1 st = ran st1 State1 st1: seq(SYM VAL) Update1 State1 s?: SYM v?: VAL s? dom(ran st1) st1’ = st1 (s?, v?) A estratégia geral para o cálculo de refinamento é calcular as pré-condições envolvidas e usar estes resultados nos teoremas de aplicabilidade e corretude.
10
Refinamento de Dados (Exemplo 1 - continuação) l Calcular a pré-condição de Update e de Update1; l Armazenar como esquemas; l Usar esquema em teoremas. Exemplo: Calcular SymtabA SymtabC, considerando simplesmente as operações Update e Update1 preUpdateRes State s?: SYM v?: VAL s? dom st preUpdate1Res State1 s?: SYM v?: VAL s? dom (ran st1)
11
Refinamento de Dados (Exemplo 1 - continuação) theorem inicializacao Init1 \land Retr1 \implies Init theorem aplicacao preUpdateRes \land Retr1 \implies preUpdate1Res theorem corretude preUpdateRes \land Retr1 \land Update1 \land Retr1’ \implies Update
12
Refinamento de Dados (Exemplo 2) State b: bag IN find State n?: IN rep!: Report n? dom b rep! = Yes State1 s: seq IN find1 State1 n?: IN rep!: Report n? ran s rep! = Yes Especificação Abstrata Especificação Concreta Report ::= Yes | No
13
Refinamento de Dados (Exemplo 2 - Escolha do Retr) Retr1 State State1 Alternativa 1: b = items s Retr2 State State1 Alternativa 2: dom b = ran s n dom b b(n) = #(s |` {n})
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.