MFP

Logo

Índice

Métodos Formais em Engenharia de Software
Cálculo de Sistemas de Informação
Programação Ciber-física
Verificação Formal
Calendário | Sumários
Anos anteriores
Alumni

Verificação Formal

2024/25

Em UCs passadas, nomeadamente em MFES, já foi abordada a verificação dedutiva de algoritmos imperativos sequenciais e de algoritmos funcionais. Nesta UC serão abordadas técnicas para especificação e verificação de algoritmos não sequenciais, nomeadamente algoritmos concorrentes, self-stabilizing e distribuídos.

Na primeira parte será abordada a especificação de algoritmos usando TLA+, uma linguagem introduzida por Leslie Lamport precisamente com o objectivo de simplificar a especificação de algoritmos não sequenciais. As especificações em TLA+ podem ser verificadas automaticamente com o model-checker TLC, e esta abordagem lightweight fez com que o TLA+/TLC tenha sido frequentement adoptado pela indústria (e.g. Amazon) para verificar algoritmos complexos.

Na segunda parte será abordada a verificação dedutiva destes mesmos algoritmos, técnica que permitirá verificar a sua correção para qualquer configuração possível, o que não é possível com o model-checking que apenas pode ser usado para verificar um conjunto de configurações limitado. Para tal será usado o Why3, já previamente introduzido em MFES, uma ferramenta que usa SMT solvers para efectuar a prova automática das condições de verificação inerentes à verificação dedutiva.

Programa

Docentes

Avaliação

Horário

Tipo Horário Sala
Teórica 4ªf. 9h-11h CP2 2.11
Teórico-prática 4ªf. 11h-12h CP2 2.11

Planificação

# Data Docentes Sumário
1 5 Fev MAC Introdução ao TLA+: a Temporal Logic of Actions, especificação de sistemas de transição de estados, propriedades de safety.
2 12 Fev MAC Introdução ao TLA+: propriedades de liveness e refinamento. Especificação e verificação de algoritmos concorrentes com TLA+.
3 19 Fev MAC Especificação e verificação de algoritmos concorrentes com TLA+.
4 26 Fev MAC Especificação e verificação de algoritmos self-stabilizing com TLA+.
5 5 Mar MAC Especificação e verificação de algoritmos distribuídos com TLA+.
6 12 Mar MAC Especificação e verificação de algoritmos distribuídos com TLA+.
7 19 Mar MAC 1º Teste
8 26 Mar JSP Verificação dedutiva de sistemas de transição em Why3
9 2 Abr JSP Verificação dedutiva de algoritmos concorrentes em Why3
10 9 Abr JSP Verificação dedutiva de algoritmos de exclusão mútua com passagem de ‘token’ em Why3
11 23 Abr JSP Verificação dedutiva de algoritmos distribuídos (com troca de mensagens) em Why3
12 30 Abr JSP Refinamento de sistemas de transição em Why3
13 7 Mai JSP Verificação de um algoritmo de consenso de blockchain em Why3
14 28 Mai JSP 2º Teste
  16 Jun MAC+JSP Exame

Material

Apontamentos

Pasta partilhada Why3

Exercícios para Avaliação Why3

O segundo teste será substituído pela entrega de (no mínimo) duas formalizações em Why3, de entre os exercícios propostos no final das aulas. Lista-se aqui todas as propostas, para referências (os detalhes podem ser consultados nas notas das aulas):

Aconselha-se que a escolha recaia sobre dois modelos distintos. Por exemplo, não deverão submeter (apenas!) duas versões do algoritmo de Peterson! Mas se acrescentarem um outro exercício, o facto de enviarem duas versões servirá para valorizar o trabalho (em caso de dúvida sobre a escolha de exercícios não hesitem em enviar email!).

A data para entrega (não muito rígida) será a do segundo teste. Será criada uma entrada para esse efeito no Blackboard.

Testes

Bibliografia

Outras leituras recomendadas

Ferramentas