Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAnavitória Leonardo Alterado mais de 9 anos atrás
1
Curso Prático de Métodos Formais Revisando Pré-Condições e Provando Refinamentos de Especificações em Z (Alexandre Mota e Augusto Sampaio)
2
Tópicos Abordados l Exemplo: A Tabela de Símbolos (TS) l Pré-condições: Estruturando l Provando Refinamentos –Mesmo Estado –Estados Diferentes
3
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?}
4
Pré-condição: Estruturando Disjunções: - or. Por exemplo, considere StDelete: pre StDelete pre Delete pre NotPresent A estruturação é realizada a partir do cálculo intermediário das pré-condições envolvidas. Para o exemplo acima temos: theorem preStDelete State; s?:SYM; v?: VAL pre Delete pre NotPresent Passos da prova: 1. try lemma preStDelete; 2. cases; (cálculos intermediários) 3. prove by reduce; 4. next; (próximo predicado) 5. prove by reduce; (2 objetivo) 6. next; (objetivo OU) 7. prove by reduce; (objetivo final)
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 preUpdate1 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.