2023/24
Esta unidade curricular do 1º semestre do 1º ano do Mestrado em Engenharia Informática da Universidade do Minho tem por objectivo introduzir a utilização dos Métodos Formais na Engenharia de Software.
Os alunos interessados em aprofundar os conhecimentos adquiridos nesta unidade curricular podem optar por frequentar o perfil de Métodos Formais de Programação no 2º semestre.
Programa
- Lógicas para especificação formal
- Lógica proposicional (PL)
- Lógica de primeira ordem (FOL)
- Lógica relacional (RL)
- Lógica temporal linear (LTL)
- Técnicas de prova automática
- SAT solving para lógica proposicional
- SMT solving para lógica e teorias de primeira ordem
- Model-finding via SAT para lógica relacional
- Bounded model-checking via SAT para lógica temporal
- Concepção formal de software com Alloy
- Modelação estrutural
- Modelação comportamental
- Especificação e verificação de programas com Why3
- Linguagem lógica, teorias (biblioteca) e prova
- Linguagem de programas, especificação comportamental, e verificação de correcção
- Desenvolvimento de sistemas com estado
Docentes
- Maria João Frade (MJF)
- Alcino Cunha (MAC)
- Jorge Sousa Pinto (JSP)
Avaliação
- Exercícios de avaliação (20%)
- Teste individual (80%)
Os exercícios de avaliação serão propostos no final de algumas aulas teóricas e serão para submeter na plataforma de e-learning na 6ª feira seguinte.
As notas acima de 18 valores (quer na avaliação contínua quer no exame) terão que ser defendidas através da realização de um pequeno projecto.
Horário
Tipo | Turno | Horário | Sala | Docente |
---|---|---|---|---|
Teórica | 2ª 9h-11h | CP2 0.01 | ||
Teórico-prática | 1 | 2ª 15h-16h | CP2 2.04 | JSP |
Teórico-prática | 2 | 2ª 12h-13h | CP1 2.20 | JSP |
Teórico-prática | 3 | 2ª 12h-13h | CP1 1.25 | MAC |
Teórico-prática | 4 | 2ª 15h-16h | CP1 2.14 | MAC |
Teórico-prática | 5 | 2ª 12h-13h | CP1 1.17 | MJF |
Planificação
# | Data | Docentes | Sumário |
---|---|---|---|
1 | 11 Set | Apresentação da UC. | |
2 | 18 Set | MJF | Lógica proposicional. SAT solvers. Modelação em PL. |
3 | 25 Set | MJF | Lógica de 1ª ordem. Modelação em FOL. |
4 | 2 Out | MJF | Teorias de 1ª ordem. SMT solvers. Modelação em FOL com teorias de 1ª ordem. |
6 Out | Entrega do 1º exercício de avaliação. | ||
5 | 9 Out | MJF | Formalização de modelos de domínio em FOL. |
6 | 16 Out | MAC | Introdução à modelação estrutural em Alloy: assinaturas e relações, lógica relacional. Formalização de modelos de domínio em Alloy e RL. |
7 | 23 Out | MAC | Modelação estrutural em Alloy: relações de aridade superior, técnicas de validação, sistema de tipos, model finding para RL. |
27 Out | Entrega do 2º exercício de avaliação. | ||
8 | 30 Out | MAC | Introdução à modelação comportamental com Alloy: especificação de sistemas com estado, técnicas de validação. |
9 | 6 Nov | MAC | Modelação comportamental com Alloy: lógica temporal linear, especificação e verificação de requisitos comportamentais em LTL, bounded model-checking para LTL. |
10 Nov | Entrega do 3º exercício de avaliação. | ||
10 | 13 No | JSP | Introdução ao Why3. Linguagem lógica e verificação de programas funcionais. |
11 | 20 Nov | JSP | Verificação de programas imperativos com Why3. Desenvolvimento de módulos com estado. |
12 | 27 Nov | JSP | Desenvolvimento e verificação de “software concepts” em Why3: implementação baseada em conjuntos. |
13 | 4 Dez | JSP | Desenvolvimento e verificação de “software concepts” em Why3: implementação eficiente. |
8 Dec | Entrega do 4º exercício de avaliação. | ||
16 Dec | TESTE ( 9h00, salas: Edificio 2 - 0.01+1.05+1.07+2.02 ) | ||
20 Jan | EXAME |
Exercícios de avaliação
# | Tópico | Deadline |
---|---|---|
1 | Modelação em PL e FOL. | 6 Out |
2 | Modelação estrutural em Alloy. | 27 Out |
3 | Modelação comportamental em Alloy. | 10 Nov |
4 | Desenvolvimento e verificação de sistemas com estado em Why3. | 8 Dez |
Material
Slides
- Propositional Logic & SAT Solvers
- First-Order Logic
- First-Order Theories & SMT solvers
- Formalizing Domain Models in FOL
- Structural design with Alloy
- Mastering Alloy
- App design with Alloy
- Why3: Logic
- Why3: Verification of Functional Programs
- Why3: Verification of Imperative Programs
- Why3: State-based Development
- Why3: Implementation of Software Concepts
- Why3: Implementation of Software Concepts, continued
Exercícios
- Aula 1
- Aula 2
- Aula 3
- Aula 4
- Aulas 5 e 6
- Aula 7
- Specify the events and scenarios of the notification and reservation concepts.
- Aula 8
- Specify and verify the operational principles of the notification and reservation concepts.
- Aula 9
- Why3 logic exercises: Offices ; SSA Program
- Offices Solution
- Aula 10
- Why3 program verification exercises: Functional Mergesort; Imperative Selection Sort
- Soluções propostas: Mergesort; Selection sort
- Aula 11
- Aula 12
Exemplos
- SAT solving
- Ficheiros DIMCS CNF
- Colab notebooks: PySATexample-models, PySATPlaceGuests, PySATGraphColoring, Z3py-PL
- SMT solving
- Ficheiros SMT-LIB2
- Colab notebooks: sudoku-Z3-LIA, CodLogProg-Z3
- Alloy
- Why3
Testes
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).
- Software Abstractions: Logic, Language, and Analysis (revised edition). Daniel Jackson. MIT Press (2012).
- The Essence of Software: Why Concepts Matter for Great Design. Daniel Jackson. Princeton University Press (2021)
- Formal Software Design with Alloy 6. Julien Brunel, David Chemouil, Alcino Cunha, and Nuno Macedo (2021).
Outras leituras recomendadas
- D. Jackson. Alloy: a language and tool for exploring software designs. Commun. ACM 62(9): 66-76 (2019). Também existe um vídeo sobre este artigo que pode ser visto aqui.
- Leslie Lamport. If You’re Not Writing a Program, Don’t Use a Programming Language. Bulletin of the EATCS 125 (2018)
- Breve introdução ao Alloy
Ferramentas
- SAT solvers (SAT Live! - keep up to date with research on the satisfiability problem)
- SMT solvers (SMT-LIB - The Satisfiability Modulo Theories Library)
- Alloy
- Why3