Aula | Data | Sumário | Bib |
---|---|---|---|
1 | 29/2 | Objectivos da disciplina e tópicos do programa. Métodos de avaliação. Bibliografia recomendada. Motivação para os métodos formais e diversas abordagens da verificação formal. | LICS Cap 3.1, PMC Cap. 1, RSD Cap 1-2 |
2 | 29/2 | Verificação por modelos (model checking). Lógica temporal linear (LTL). Sistemas de transições e modelos de Kripke. Semântica da LTL. Exemplos | LICS Cap 3.2.1, 3.2.2 |
3 | 1/3 | Especificação de propriedades em LTL. Equivalência semântica de fórmulas LTL. Conjunto completos de conectivas. | LICS Cap 3.2.3-5 PMC Cap 5. pp 229-257 |
4 | 7/3 | Exemplo de Model checking: exclusão mútua. Especificação de propriedades e modelação. Utilização da aplicação NuSMV para model checking. Linguagem de especificação de modelos: variáveis e módulos. Estados. Especificação de propriedades. Computação síncrona e assíncrona. Exemplos. | LICS Cap 3.3.1, 3.3.3 NuSMV |
5 | 7/3 | Uso interactivo do NuSMV. Fairness. Traços. | NuSMV |
6 | 14/3 | Lógica de tempo ramificado (CTL). Semântica do CTL. Especificação de propriedades em CTL e em LTL (exemplos). Equivalência semântica de fórmulas de CTL. | LICS Cap 3.4.1-4 PMC Cap 6. pp 313-334 |
7 | 15/3 | Especificação de propriedades em CTL e em LTL (exemplos). Expressividade do CTL vs. LTL. CTL* | LICS Cap 3.4.5, 3.5 PMC Cap 6.3 |
8 | 21/3 | Algoritmo de model checking para CTL por etiquetagem de estados. Exemplo. Optimização usando a conectiva EG | LICS Cap pp 221-225 PMC Cap 6.4.1 |
9 | 28/3 | Algoritmo de model checking para o CTL por etiquetagem de estados (cont.). Model cheking com fairness. Correção e Terminação. | LICS Cap pp 225-232, 238-245 PMC Cap 6.4 |
10 | 28/3 | Model checking simbólico. Definição de BDDs (binary decision diagrams). OBDDS: BDDs reduzidos e ordenados. Propriedades dos OBDDs. Algoritmos para a Construção de BDDS reduzidos. | LICS Cap 6 pp 358-373 |
11 | 11/4 | Expansão de Shannon para funções booleanas. Algoritmos apply, restrict e exists. Representação de conjuntos finitos com OBDDs. Representação de um modelo em OBDDs: conjunto de estados e relação de transição. Operações necesárias para o algoritmo de etiquetagem. Síntese de OBDDs. | LICS Cap 6 pp 374-388, Intro. BDDs |
12 | 12/4 | Autómatos finitos não determinísticos e autómatos finitos de Büchi. Autómatos Finitos Alternados. | Automata-Theoretic Approach to LTL, M. Vardi |
13 | 18/4 | Autómatos de Büchi alternados. Autómato de Büchi e Autómato de Büchi alternado associados a uma fórmula do LTL, AF. Autómato de Büchi associado a um modelo. Algoritmo de model checking para o LTL. | Automata-Theoretic Approach to LTL, M. Vardi |
14 | 19/4 | Verificação de programas baseado em sistemas dedutivos. Lógicas de Floyd-Hoare baseadas em pré e pós condições. Correcção parcial e correcção total. Uma linguagem imperativa simples. Asserções e linguagem das condições. Sistema dedutivo para a correcção parcial. | LICS Cap 4.1-4.31 , RSD cap 5.1-5.4 |
15 | 26/4 | Sistema dedutivo para a correcção parcial. Pre-condições fracas para o cálculo de correcção parcial. Tableaux para o sistema dedutivo para a correcção parcial. Invariantes de ciclo. Exemplos. | LICS Cap 4.3.2 |
16 | 02/5 | Uma semântica operacional para a linguagem While. Integridade do sistema de correcção parcial. Incompletude do sistema de correcção parcial. | W93 Cap. 6 e 7 |
17 | 03/5 | Regras de Lógica de Hoare para ciclos for e arrays. Exemplos. Cálculo de correção total. Variantes estritamente decrescentes. Regra para o comando while. | LICS ; RSD 5.5 e 5.6 | 18 | 16/5 | Uma arquitectura de um sistema de verificação de programas: mecanização do processo de dedução na lógica de Hoare. Lógica de Hoare orientada a objectivos. Pré-condições mais fracas. Algoritmo de geração de condições de verificação (VCGens) para a linguagem While com inteiros e arrays. | RSD Cap. 6 |
19 | 17/5 | Propriedades de segurança. Uma semântica operacional para a linguagem While com inteiros, considerando a noção de erro. Lógica de Hoare com condições de segurança. Algoritmo de geração de condições de segurança. | RSD Cap. 7.1-7.2 |
20 | 23/5 | Linguagem de especificação ACSL: comportamentos, contratos funcionais axiomatizações. Exemplos. Plataforma frama-C e plugin jessie. Verificação de segurança e funcional. Exemplos. | Frama-c,
Jessie, ACSL, Why RSD Cap. 9- 10 |
21 | 23/5 | Continuação da aula anterior. |
Examples RSD Cap. 9- 10 |
22 | 30/5 | Plataforma frama-C e plugin jessie. Verificação de segurança e funcional. Exemplos. |
Partition RSD CAP 10 |
23 | 31/5 | Demonstradores automáticos de teoremas baseados em SAT-DPLL e teorias decidíveis: inteiros, reais, ``arrays'', etc. SMTs e algoritmos decisão. |
SMT-LIB Decision Procedures |