Aula/Lecture 1/2 (en) 15/02
Objectivos da disciplina e tópicos do programa. Métodos de avaliação. Bibliografia recomendada.
Breve introdução aos métodos formais para o desenvolvimento de sistemas informáticos.
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.

Brief introduction to formal methods.
Deductive program verification. Floyd-Hoare logic based on pre and post conditions. Assertions and logic of conditions. Partial and total correctness. A while imperative language. Deductive system of partial correctness.
Bibliografia/Bibliography
Cap. 1 e 2 RSD, Slides,
LICS Cap 4.1-4.3.2 , RSD cap 5.1-5.4
Regras da Lógica de Hoare/ Hoare logic rules
Aula/Lecture 3/4 22/02
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. Uma semântica operacional para a linguagem While. Integridade do sistema de correcção parcial. Cálculo de correção total. Variantes estritamente decrescentes. Regra para o comando while.

Weakest preconditions (wp). Tableaux for the partial correctness calculus using wp. A natural semantics for the while language. Soundness of the partial correctness calculus. Total correctness calculus. Variants. Rule for the while statement.
Bibliografia/Bibliography:
LICS Cap 4.1-4.3.2 , RSD cap 5.1-5.6, SWA 2.1. , 9.2, 9.3 10.1

Regras da Lógica de Hoare/Hoare Logic Rules
Exercícios/Exercises: Hoare Logic
Aula/Lecture 5/6 29/02
Mecanização do calculo de correção parcial.
O cálculo sem regra da consequência (H_g) e o cálculo das pré-condições mais fracas. Equivalência do cálculo H e do cálculo H_g. Algoritmo de geração de condições de verificação (VCGen). Adequação do algoritmo VCG ao cálculo H_g. Exemplos

Mechanisation of the partial correctness calculus. Calculus without cons: H_g. Equivalence of H and H_g. Weakest preconditions (wp). Verification condition generator: VCG. Correctness of VCG with respect to H_g. Examples.
Bibliografia/Bibliography: RSD cap 6
Regras da Lógica de Hoare
Exercícios/Exercises: VCGen
Aula/Lecture 7/8 7/03/2024
Propriedades de segurança. Semântica operacional com erro e programas seguros: Asserções safe(E). Arrays com indices limitados: programas seguros e geração de condições de verificação. Procedimentos sem parâmetros e recursão.

Safety properties: error semantics and safe programs. Bounded arrays : safe programs and verification condition generator. Procedures without parameter and recursion.

Contratos e recursão mútua. Sistema dedutivo axiomático para procedimentos sem parâmetros. Geração de condições de verificação. Frame conditions. Exemplos

Contracts and mutual recursion. Programming with contracts. Inference System for Paremeterless Procedures . Verification Conditions for Paremeterless Procedures . Frame conditions. Examples
Bibliografia/Bibliography: RSD cap 7, 8.1, 8.2

To know more on adaptation (complementary)
Kleymann, T ,
Hoare Logic and Auxiliary Variables
Exercícios/Exercises:
Aula/Lecture 9/10 14/03/2024


I
ntrodução ao Dafny: paradigmas de programação e verificação estática de programas. Métodos. Funções e Predicados. Tipos de dados: básicos, arrays, coleções e classes. Tipos imutáveis e mutáveis (referências). Frames: acesso e modificação. Exemplos: recorrências de inteiros e pesquisa em arrays (linear e binária). Correção de algoritmos de ordenação.Frameworks for the generation of verification conditions (VCG).Dafny: programming languages with static verification of programs. Methods. Functions and Predicates. Types: basic, arrays, collections and classes. Immutable and mutable (references) types. Frames: reads and modifies. Exemples with integers and arrays. Verification of Sorting algorithms.
AulaLecture 11/12 21/03/2024
Collections: sets, multiset, sequences, maps. Operatiosn. Use of lemmas to proof theorems with Dafny.

Coleções: conjuntos, sequências, multiconjuntos e mapas. Operações. Uso de lemas.

Datatypes em Dafny: construtores, destrutores e encaixe de padrões. Programação funcional: Listas e outros tipos indutivos. Provas por indução na estrutura do tipo indutivo. Lemas e calc.

Datatypes in Dafny: constructors, destructors and pattern matching. Functional programming on Dafny. Lists and other inductive types. Proofs by induction. Lemmas and calc.
Bibliografia/Bibliograpy:
Linguagem de anotações
Dafny

Program Proofs, K. Leino Cap/Chap. 4-8, 16

The Dafny Integrated Development Environment
Developing Verifies Programs with Danny
The Dafny Integrated Development Environment
Accessible Software Verification with Dafny
Aula/Lecture 13/14 - 04/04



Invariantes de estruturas de dados funcionais. Abstração, variáveis e funções ghosts. Exemplos: vários tipos de filas.

Functional Datatype invariants. Abstractions, ghost variables and ghost functions. Examples: Queues and Priority Queues.


Bibliografia:
Linguagem de anotações
Dafny
Program Proofs, K. Leino Cap/Chap. 9, 10,

Aula/Lecture 15/16 - 11/04


Design by Contract.: Classes com pré e pós condições. Invariante de classe: predicado Valid(). Representação dum frame dinâmico: Repr. Directivas: reads, modifies; old() e fresh(). Herança.

Design by Contract. Classes with contracts: pre and post conditions. Class invariants: predicate Valid(). Representation of a dynamic frame: Repr. Directives:reads and modifies; old() and fresh(). Inheritance.


Bibliografia:
Linguagem de anotações
Dafny
Program Proofs, K. Leino Cap/Chap. 16 (17)

To know more about dynamic frames:
Dynamic Frames
Survey
Exercícios:

Examples
Aula 17/18 18/04/2024
Ferramentas de prova.
Resolutores SAT. Transformação de Tseitin. Algoritmo de David-Putman para a satisfazibilidade de fórmulas proposicionais em CNF. Resolutores DPLL baseados em CDCL (conflict driven clause learning). Grafo das implicações (BCP) e análise de conflitos: aprendizagem de cláusulas. Resolutores SAT modernos. PySAT. Modelação de problemas em SAT.

Proof frameworks. SAT solvers. Tseitin's Transformation for CNF encodings. David-Putman algorithm for CNF. DPLL-CDCL Solvers (Conflict driven clause learning). Implication Graph and Bounded constraint propagation. Conflict analyses: learned clause and backtrack level. Modern SAT solvers. PySAT. Modeling problems in SAT.
Bibliografia:
Decision Procedures (DP) (2nd Ed): Cap.1, 2.1-2.2
Handbook of Satisfiability (Cap 1-4) (Complementary)
Donald Knuth The Art of Computer Programming Vol. 4B Chap 7.2.2,2
SATLIVE
SAT association

PySAT: pip install python-sat (and pip install py-aiger-cnf)
notebooks
Exercícios: SAT solving
Aula 19/20 2/05/2024
Demonstradores automáticos de teorias decidíveis. Teorias da lógica de primeira ordem. Noção de teoria e axiomatixação. Algumas teorias:igualdade e funções não interpretadas; aritmética; inteiros; reais e racionais; listas; arrays; etc . Teorias decidíveis e fragmentos de teorias . Composição de teorias. Integração com resolutores SAT.

Automatic solvers for decidable theories. First-order logic theories. Notion of theory and axiomatisation. Some examples of theories: equational, uninterpreted functions; arithmetic (naturals); integers; reals; lists; arrays bit-vectores. Decidable theories and fragments of theories. Composition of theories.SAT based SMT solvers.
Bibliografia:
Decision Procedures (DP) (2nd Ed): Cap. 1, 3.1-3.2
The Calculus of Computation (axiomatizações de teorias e resolutores/axioms for theories and solvers): Cap/Chap. 2, 3
SMT-LIB
SMT-COMP
Exercícios: SAT solving