1 / 13

Curso Prático de Métodos Formais

Curso Prático de Métodos Formais. Revisando Pré-Condições e Provando Refinamentos de Especificações em Z. (Alexandre Mota e Augusto Sampaio). Tópicos Abordados. Exemplo: A Tabela de Símbolos ( TS ) Pré-condições: Estruturando Provando Refinamentos Mesmo Estado Estados Diferentes. State.

kira
Download Presentation

Curso Prático de Métodos Formais

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso Práticode Métodos Formais Revisando Pré-Condições e Provando Refinamentos de Especificações em Z (Alexandre Mota e Augusto Sampaio)

  2. Tópicos Abordados • Exemplo: A Tabela de Símbolos (TS) • Pré-condições: Estruturando • Provando Refinamentos • Mesmo Estado • Estados Diferentes

  3. State ST == SYM VAL st: ST Update NotPresent D State s?: SYM v?: VAL X State s?: SYM rep!: Report s? dom st st’ = st  {s?  v?} s? Ï dom(st) rep!=Symbol_not_present ^ Success = [rep!:Report | rep!=Ok] ^ StDelete = (Delete Ù Success) Ú NotPresent Exemplo: A Tabela de Símbolos [VAL,SYM] Delete Report ::= Ok | Symbol_not_present D State s?: SYM s? Î dom(st) st’={s?} st

  4. Disjunções: Ú - or. Por exemplo, considere StDelete: pre StDelete º pre Delete Ú pre NotPresent Pré-condição: Estruturando 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. Delete StDelete ??? Refinamento de Operações (Mesmo Estado) • Verificar se operações compostas refinam operações simples; • As obrigações são: a aplicabilidade e a corretude. • Há simplificação dos teoremas pois o esquema Retrieve é a relação identidade theorem aplicMesmoEstado pre Delete Þ pre StDelete theorem corrMesmoEstado pre Delete Ù StDeleteÞ Delete

  6. Estratégia para Refinamento • Os teoremas de refinamento usam as pré-condições mais de uma vez; • Portanto, neste caso é interessante guardar o resultado; • Desta forma, deve-se calcular as pré-condições; • Armazenar os resultados obtidos como esquemas; • 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) • No caso geral, é necessário estabelecer uma relação entre os dois estados (abstrato e concreto); • 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) • Propor um novo estado; • Propor um esquema Retrieve; • Propor refinamentos para as operações; • Construir as obrigações de prova como teoremas; • Provar os teoremas.

  9. State1 Retrieve1 State State1 st1: seq(SYM ´ VAL) st = ran st1 Update1 D State1 s?: SYM v?: VAL s? dom(ran st1) st1’ = st1 ^ á(s?, v?)ñ Refinamento de Dados(Exemplo 1) 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. preUpdateRes preUpdate1Res State s?: SYM v?: VAL State1 s?: SYM v?: VAL s?  dom st s?  dom (ran st1) Refinamento de Dados(Exemplo 1 - continuação) • Calcular a pré-condição de Update e de Update1; • Armazenar como esquemas; • Usar esquema em teoremas. Exemplo: Calcular SymtabA SymtabC, considerando simplesmente as operações Update e Update1

  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. State State1 b: bag IN s: seq IN find1 find  State1 n?: IN rep!: Report  State n?: IN rep!: Report n?  dom b rep! = Yes n?  ran s rep! = Yes Refinamento de Dados(Exemplo 2) Report ::= Yes | No Especificação Concreta Especificação Abstrata

  13. Refinamento de Dados(Exemplo 2 - Escolha do Retr) Alternativa 1: Retr1 State State1 b = items s Alternativa 2: Retr2 State State1 dom b = ran s  n  dom b  b(n) = #(s |` {n})

More Related