Seminário - Outros métodos formais

PDF

1. Informações importantes

  • Data de apresentação: 25 e 30 de setembro
  • Trabalho individual ou em dupla
  • Enviar slides no moodle (em PDF)
  • Tempo de apresentação: 15 minutos (dupla) ou 10 minutos (individual)

2. Introdução

Existe uma variedade de técnicas e ferramentas de métodos formais, e seria inviável aprender várias delas nesta disciplina. O objetivo deste seminário é explorar superficialmente outras técinas/ferramentas para a compreensão dessa variedade e das possíveis alternativas.

3. Sugestões de Tópicos

Dentro da técnica de model checking que temos estudado, existem várias outras ferramentas (além de TLA+ e Quint):

  • PlusCal (versão “imperativa” de TLA+)
  • Alloy
  • NuSMV
  • Spin
  • Redes de Petri
  • PRISM
  • Mais na lista do Wikipedia

Uma técnica que já mencionamos na disciplina algumas vezes é a de assistentes de provas. Seguem algumas ferramentas:

Ferramentas para verificação de programas escritos em linguagens de programação:

  • Dafny
  • Viper
  • Prusti (para Rust)
  • Gobra (para Go)
  • Nagini (para Python)

Outras técnicas (além de model checking e assistentes de provas):

  • Máquina de estado abstrata (Abstract State Machine - ASM)
  • Calculo \(\pi\) (π-calculus)
  • Continuation Passing Style (CSP)
  • Lógica de Hoare
  • Método de desenvolvimento Viena (Vienna Development Method - VDM)

4. Estrutura

O enfoque da apresentação deve ser a técnica/ferramenta em si: como usá-la, para que é boa, para que é ruim, em que(ais) área(s) é mais aplicada. Desejável: casos de uso (i.e. empresa X usou pra verificar Y). Indesejável: Detalhes históricos.

  • Mostre ao menos um exemplo (código/fórmula)