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.
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
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
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.
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
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
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.
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.
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
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
To know more on adaptation (complementary)
Kleymann, T , Hoare Logic and Auxiliary Variables
Exercícios/Exercises:
Introduçã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.
Bibliografia/Bibliography:
Dafny
Program Proofs, K. Leino Cap/Chap. 1,11-15
- Dafny site
- Github
- Install with VSCODE (or Emacs)
- Emacs- mode (boogie-friends)
- Extensão do VSCODE
- Dafny Tutorial online
- Dafny Quick Reference
- Dafny Cheat Page
- Dafny Quick Reference (II)
- Dafny Manual Reference
- Types in Dafny
- Tutorial Dafny
Dafny
Program Proofs, K. Leino Cap/Chap. 1,11-15
- Dafny site
- Github
- Install with VSCODE (or Emacs)
- Emacs- mode (boogie-friends)
- Extensão do VSCODE
- Dafny Tutorial online
- Dafny Quick Reference
- Dafny Cheat Page
- Dafny Quick Reference (II)
- Dafny Manual Reference
- Types in Dafny
- Tutorial Dafny
Exercícios/Exercices:
Verification of imperative programs in Dafny
Exemplos/Examples
From Program Proofs
Verification of imperative programs in Dafny
Exemplos/Examples
From Program Proofs
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.
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
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
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.
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
Linguagem de anotações Dafny
Program Proofs, K. Leino Cap/Chap. 16 (17)
To know more about dynamic frames:
Dynamic Frames
Survey
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.
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
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
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.
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
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