 |
Métodos Formais de Programação II - 2000/01
|
[ DI/UM ]
|
---|
J.N. Oliveira 406006
Aula Prática de 2001.02.12 [Ref:1]:
|
Sumário: Revisão de M.F.P.-I: Métodos indutivos de prova. Indução natural ( Nat0 =1 + Nat0)
e indução sobre sequências (A* =1 + A × A*).
Resolução dos exercícios 3.3, 3.4 e 3.5.
Aula Teórica de 2001.02.14 [Ref:2]:
|
Sumário: Apresentação da disciplina. Equipa docente.
Programa da disciplina e seu enquadramento no plano de estudos.
Regime de avaliação.
Bibliografia.
Informação electrónica sobre a disciplina:
www.di.uminho.pt/~jno/html/mii.html.
Introdução às técnicas de refinamento (reificação) de especificações
formais.
Antecendentes históricos.
Aula Prática de 2001.02.14 [Ref:3]:
|
Sumário: Métodos indutivos de prova. Indução natural ( Nat0 =1 + Nat0)
e indução sobre sequências (A* =1 + A × A*).
Resolução dos exercícios 3.3, 3.4 e 3.5.
Aula Prática de 2001.02.19 [Ref:1]:
|
Sumário: Resolução dos exercícios 3.3, 3.4 e 3.5 (cont.).
Métodos indutivos de prova. Indução sobre conjuntos (PA <=1 + A × PA).
Resolução de exercícios.
Aula Teórica de 2001.02.21 [Ref:2]:
|
Sumário: Introdução às técnicas de refinamento
(cont.)
:
Validação vs verificação formal.
Verificação estática vs dinâmica.
Semântica denotacional de linguagens de programação.
O porquê da programação estruturada.
Verificação vs cálculo de programas.
Aula Prática de 2001.02.21 [Ref:3]:
|
Sumário: Resolução dos exercícios 3.3, 3.4 e 3.5 (cont.).
Métodos indutivos de prova. Indução sobre conjuntos (PA <=1 + A × PA).
Resolução de exercícios.
Aula Prática de 2001.02.26 [Ref:1]:
|
Sumário: Relações binárias e funções finitas. Resolução de exercícios: definição das
funções dom, rng, A -> f, |s, , pap e ++
sob a forma de morfismos sobre A -> B.
Resolução dos exercícios 3.7 e 3.8.
Aula Teórica de 2001.02.28 [Ref:2]:
|
Sumário: Introdução às técnicas de refinamento
(cont.)
:
Especificação directa e reversa.
Compreensão de programas.
Exemplo de análise de um programa em C++ e conjectura da sua
especificação formal recorrendo a catamorfismos.
Aula Prática de 2001.02.28 [Ref:3]:
|
Sumário: Relações binárias e funções finitas. Resolução de exercícios: definição das
funções dom, rng, A -> f, |s, , pap e ++
sob a forma de morfismos sobre A -> B.
Resolução dos exercícios 3.7 e 3.8.
Aula Prática de 2001.03.05 [Ref:1]:
|
Sumário: Combinação de funções mutuamente dependentes.
A lei de Fokkinga. A lei de Banana-Split.
Resolução de exercícios.
Aula Teórica de 2001.03.07 [Ref:2]:
|
Sumário: Técnicas de refinamento algorítmico
:
Leis de fusão «horizontal» de processos algorítmicos.
Lei da recursividade mútua de Fokkinga.
Lei de «banana-split» e sua utilização na intercombinação de
ciclos.
Eliminação de estruturas de dados intermédias («desflorestação»).
Aula Prática de 2001.03.07 [Ref:3]:
|
Sumário: Combinação de funções mutuamente dependentes.
A lei de Fokkinga. A lei de Banana-Split.
Resolução de exercícios.
Aula Prática de 2001.03.12 [Ref:1]:
|
Sumário: Não houve aula (participação do docente em congresso internacional).
Aula Teórica de 2001.03.14 [Ref:2]:
|
Sumário: Não houve aula (participação do docente em congresso internacional).
Aula Prática de 2001.03.14 [Ref:3]:
|
Sumário: Não houve aula (participação do docente em congresso internacional).
Aula Prática de 2001.03.19 [Ref:1]:
|
Sumário: Aula laboratorial.
Definição das
funções dom, rng, A -> f, |s, , pap e ++,
escritas sob a forma de morfismos sobre A -> B, em VDM-SL.
Aula Teórica de 2001.03.21 [Ref:2]:
|
Sumário: Técnicas de refinamento algorítmico
:
Leis de fusão «vertical» de processos algorítmicos
(leis functoriais, de fusão e de absorção).
Introdução às técnicas de refinamento dos dados
:
Transformações isomorfas. Transformações sobrejectivas e injectivas. Invertibilidade à direita e à esquerda. Noções de abstracção e de representação.
Inequações da forma A <=B .
Exemplos.
Diagramas de refinamento de operações.
Abstração dos argumentos e representação dos resultados.
Esquema de síntese de uma implementação como solução
de um diagrama de refinamento.
Aula Prática de 2001.03.21 [Ref:3]:
|
Sumário: Aula laboratorial.
Definição das
funções dom, rng, A -> f, |s, , pap e ++,
escritas sob a forma de morfismos sobre A -> B, em VDM-SL.
Aula Prática de 2001.03.26 [Ref:1]:
|
Sumário: Aula laboratorial.
Definição, em VDM-SL, de funções paramétricas que permitem realizar catamorfismos
e anamorfismos sobre A*.
Aula Teórica de 2001.03.28 [Ref:2]:
|
Sumário: Refinamento formal de dados
:
Propriedades da relação
A <=B:
reflexividade, transitividade e monotonicidade.
Leis de representação (ou de refinamento) envolvendo tipos de dados
quasi-indutivos
(PA e A -> B):
PA =A -> 1
0 -> A =1
1 -> A =1 + A
(C+B) -> A =(C -> A) × (B -> A)
Aula Prática de 2001.03.28 [Ref:3]:
|
Sumário: Aula laboratorial.
Definição, em VDM-SL, de funções paramétricas que permitem realizar catamorfismos
e anamorfismos sobre A*.
Aula Prática de 2001.04.02 [Ref:1]:
|
Sumário:
Cálculo de simulações. Resolução de exercícios: simulação de ina
e de card. Refinamento algorítmico.
Algoritmos de pesquisa e sua eficiência. Padrões de recursividade
lineares vs bi-lineares. Resolução de exercícios: alteração do
padrão de recursividade da função belongsa.
Aula Teórica de 2001.04.04 [Ref:2]:
|
Sumário: Refinamento formal de dados
(cont.)
:
Repertório de leis e suas funções de abstracção e de
representação.
A -> B × C <=(A -> B) × (A -> C)
A -> D × (B -> C) <=
(A -> D) × ((A × B) -> C)
Aula Prática de 2001.04.04 [Ref:3]:
|
Sumário: Cálculo de simulações. Resolução de exercícios: simulação de ina
e de card. Refinamento algorítmico.
Algoritmos de pesquisa e sua eficiência. Padrões de recursividade
lineares vs bi-lineares. Resolução de exercícios: alteração do
padrão de recursividade da função belongsa.
Aula Teórica de 2001.04.18 [Ref:2]:
|
Sumário: Refinamento formal de dados
(cont.)
:
Invariantes («concretos») induzidos por representação.
Exemplos.
Cálculo de invariantes concretos.
Modelação formal versus modelação em sistemas de informação de
base relacional.
Semântica formal de diagramas E-R (entidade relação)
e seus invariantes.
Aula Prática de 2001.04.18 [Ref:3]:
|
Sumário: Representação de dados e refinamento. Invertibilidade à direita
e à esquerda. O cálculo de isomorfismo. Resolução de exercícios:
definição de funções de abstracção e suas inversas.
Invertibilidade apenas à direita. O cálculo inequacional.
Resolução de exercícios. Definição de funções de abstracção e de
representação.
Aula Prática de 2001.04.23 [Ref:1]:
|
Sumário:
Representação de dados e refinamento. Invertibilidade à direita
e à esquerda. O cálculo de isomorfismo. Resolução de exercícios:
definição de funções de abstracção e suas inversas.
Invertibilidade apenas à direita. O cálculo inequacional.
Resolução de exercícios. Definição de funções de abstracção e de
representação.
Aula Prática de 2001.04.30 [Ref:1]:
|
Sumário:
O cálculo inequacional (cont.). Introdução à reengenharia formal
de bases de dados relacionais. Resolução dos exercícios 4.1, 4.2,
4.3 e 4.4.
Aula Teórica de 2001.05.02 [Ref:2]:
|
Sumário: Semântica formal de diagramas E-R
(conclusão)
:
Exemplo - o problema PPD (árvores de produção e planeamento da
produção).
Lei do refinamento estrutural de tipos indutivos.
Exemplo:
relações de refinamento entre listas
(morfismos blast e embed).
Aula Prática de 2001.05.02 [Ref:3]:
|
Sumário: O cálculo inequacional (cont.). Introdução à reengenharia formal
de bases de dados relacionais. Resolução dos exercícios 4.1, 4.2,
4.3 e 4.4.
Aula Prática de 2001.05.07 [Ref:1]:
|
Sumário:
Apresentação da ferramenta de inversão formal de bases de
dados K-RF. Animação do cálculo de refinamento aplicado à
engenharia reversa de bases de dados.
Aula Teórica de 2001.05.09 [Ref:2]:
|
Sumário: Refinamento estrutural de tipos indutivos
(conclusão)
:
Prova por cálculo de morfismos.
Mais exemplos: síntese da implementação de GenDia à custa de DecTree.
Representação de tipos indutivos polinomais:
- Representação gramatical (BNF).
- Introdução de apontadores em linguagens tipo C/C++.
- Desrecursivação orientada a linguagens tipo SQL.
Teorema de desrecursivação genérica.
Exemplo: síntese da implementação de DecTree em SQL.
Aula Prática de 2001.05.09 [Ref:3]:
|
Sumário: Apresentação da ferramenta de inversão formal de bases de
dados K-RF. Animação do cálculo de refinamento aplicado à
engenharia reversa de bases de dados. Apresentação da ferramenta
de auditoria à qualidade dos dados KARMA. Validação de invariantes
em processos de limpeza de dados.
Aula Prática de 2001.05.14 [Ref:1]:
|
Sumário:
Apresentação da ferramenta
de auditoria à qualidade dos dados KARMA. Validação de invariantes
em processos de limpeza de dados.
Aula Teórica de 2001.05.16 [Ref:2]:
|
Sumário: Não houve aula (tolerância do Enterro da Gata).
Aula Prática de 2001.05.16 [Ref:3]:
|
Sumário: Não houve aula (tolerância do Enterro da Gata).
Aula Prática de 2001.05.21 [Ref:1]:
|
Sumário: Propriedades básicas do cálculo inequacional: reflexividade,
transitividade e monotonicidade. Resolução dos exercícios
4.6 (1) e 4.6 (2). Reificação para modelo relacional do modelo
PPD (árvores de produção e planeamento da produção).
Aula Teórica de 2001.05.23 [Ref:2]:
|
Sumário: Refinamento algorítmico
(conclusão)
:
Lei da introdução de parâmetros de acumulação.
Desrecursivação algorímica: cálculo de ciclos for/while.
Exemplo de utilização em engenharia reversa: análise do
programa em C wc.
Avaliação da disciplina.
Aula Prática de 2001.05.23 [Ref:3]:
|
Sumário: Propriedades básicas do cálculo inequacional: reflexividade,
transitividade e monotonicidade. Resolução dos exercícios
4.6 (1) e 4.6 (2). Reificação para modelo relacional do modelo
PPD (árvores de produção e planeamento da produção).
Aula Teórica (Suplementar) de 2001.06.04:
|
Sumário: Aula de dúvidas e preparação para o exame.
Voltar à página principal de MFP-II.
Outras disciplinas
leccionadas pelo DIUM
J. N. Oliveira
2002-03-21