UC3 - Verificação Formal
Programa Resumido
- Lógica e Sistemas de Prova
- Sistemas de prova automática:
- lógica proposicional; SAT solvers;
- lógica de 1ª ordem; teorias de 1ª ordem; SMT solvers.
- Sistemas de prova assistida:
- lógica de ordem superior; the Coq proof assistant.
- Verificação de Software
- Verificação dedutiva de programas:
- lógica de Hoare; VCGen; safety verification; functional verification;
- a plataforma Why3 para verificação dedutiva de programas;
- anotações em ACSL; o plug-in WP da ferramenta Frama-C.
- Verificação automática de programas:
- bounded model checking of software; CBMC.
Material de Apoio
Slides
Guiões
Ferramentas
Uma parte substancial do software listado é desenvolvido em Ocaml, uma linguagem funcional da família ML, e pode ser compilado localmente. Recomenda-se a instalação do package manager OPAM (disponível em Homebrew para Max OSX).
Máquina virtual com todas as ferramentas instaladas.
Bibliografia
- Logic in Computer Science: Modelling and Reasoning About Systems. Michael Huth & Mark Ryan. Cambridge University Press; 2nd edition (2004).
- The Calculus of Computation: Decision Procedures with Applications to Verification. Aaron R. Bradley & Zohar Manna. Springer (2007).
- Rigorous Software Development: An Introduction to Program Verification. J.B. Almeida & M.J. Frade & J.S. Pinto & S.M. de Sousa. Springer (2011)
- Interactive Theorem Proving and Program Development Coq’Art: The Calculus of Inductive Constructions. Yves Bertot & Pierre Casteran. Springer (2004)
Funcionamento
Avaliação
-
2 testes, com nota mínima (agregada) de 8 valores (70%)
-
1 trabalho desenvolvido em grupo, envolvendo o estudo de um tópico (diferente para cada grupo), e possivelmente algum desenvolvimento. O trabalho deverá dar origem a um artigo a entregar no final do semestre, bem como a uma apresentação feita por todo o grupo (30%)
Dadas as circunstâncias muito particulares de funcionamento desta UC este ano lectivo, o método de avaliação foi alterado.
A avaliação será feita com base nos seguintes elementos:
- 2 ou 3 exercícios a serem resolvidos em casa semanalmente (e entregues por e-mail) para cada uma das duas partes do curso. Esta componente de avaliação dará origem a uma nota final de, no máximo, 15 valores.
- um trabalho final opcional, envolvendo uma ou mais ferramentas estudadas no curso, para estudantes que desejam ter uma nota final superior a 15.
Docente / Horário
Alunos
# | Nome | Curso |
a82441 | Alexandre Mendonça Pinho | MIEI |
a80453 | Bárbara Andreia Cardoso Ferreira | MIEI |
pg40866 | Bruno Manuel Pereira Antunes | MMC |
a80564 | Carla Isabel Novais da Cruz | MIEI |
a83344 | Eduardo Jorge Lima Pinto Barbosa | MIEI |
a78073 | João Costeira Faria Gomes | MIEI |
a80397 | João Nuno Alves Lopes | MIEI |
a82885 | José Augusto Ferreira Alves | MIEI |
a68547 | Lucas Ribeiro Pereira | MIEI |
a74036 | Manuel João Curopos Monteiro | MIEI |
a82400 | Márcio Alexandre Mota Sousa | MIEI |
a82535 | Pedro Mendes Pinto | MIEI |
pg41094 | Pedro Rafael Paiva Moura | MEI |
a82313 | Pedro Teixeira Gonçalves | MIEI |
a75411 | Ricardo Guerra Leal | MIEI |
a73577 | Ricardo Ribeiro Pereira | MIEI |
a82572 | Sara Maria Barreira Melo | MIEI |
a75328 | Tiago João Fernandes Baptista | MIEI |
Projecto Opcional
Este projecto opcional poderá ser desenvolvido em duas modalidades:
- individualmente, em Why3 ou em Coq;
- em grupos de dois, neste caso, em Why3 e em Coq.
O projecto deverá ser entregue até ao dia 15 de Julho.