Sumários
Aula 1: 15.02.2018
Apresentação
Considerações gerais sobre o programa, bibliografia, funcionamento das
aulas e método de avaliação.
Aula 2: 20.02.2018
Programação Lógica e Prolog
Pequena revisão sobre Programação Lógica: programas lógicos, resolução
SLD, linguagem Prolog, máquina WAM (Warren's Abstract Machine).
Aula 3: 22.02.2018
Warren's Abstract Machine
A máquina M0 da WAM: representação de termos na Heap, registos e
compilação de queries, compilação de programas, desreferenciação,
instanciação de variáveis, e unificação.
Aula 4: 27.02.2018
Warren's Abstract Machine
A máquina M1 da WAM: instruções de controle, registos como argumentos,
e instruções para compilação de argumentos. A máquina M2 da WAM:
compilação de subgolos, variáveis permanentes, ambientes, e instruções
para ambientes.
Aula 5: 01.03.2018
Warren's Abstract Machine
Resolução de exercícios envolvendo as máquinas M0 e M1 da WAM.
Aula 6: 06.03.2018
Warren's Abstract Machine
A máquina M3 da WAM: pontos de escolha, protecção de ambientes,
trilha, backtracking, e instruções para pontos de escolha. Otimizações
à WAM: melhor representação de termos na heap, tratamento de
constantes e tratamento de listas.
Aula 7: 08.03.2018
Warren's Abstract Machine
Otimizações à WAM: tratamento de variáveis anónimas, melhor alocação
de registos, last call optimization, e indexação no primeiro
argumento.
Aula 8: 13.03.2018
Warren's Abstract Machine
Resolução de exercícios envolvendo a máquina M3 da WAM com
otimizações.
Aula 9: 15.03.2018
Tabulação em Programação Lógica
Motivação: ciclos infinitos e computações redundantes. Modelo básico
de execução. Principais estratégias de escalonamento. Principais
modelos de execução. O sistema Yap Prolog: extensões de suporte,
representação e organização da tabela.
Aula 10: 20.03.2018
Tabulação em Programação Lógica
O sistema Yap Prolog: suspensão/recuperação da computação, freeze
registers e forward trail, compilação de predicados tabelados, pontos
de escolha e dependency frames, as instruções de tabled subgoal call,
new answer, completion e answer resolution, cálculo e mudança de
líder. Apresentação do trabalho prático.
Aula 11: 22.03.2018
Tabulação em Programação Lógica
Aula de apoio ao trabalho prático.
Aula 12: 03.04.2018
Tabulação em Programação Lógica
O sistema Yap Prolog: global trie, agregação de soluções.
Aula 13: 05.04.2018
Tabulação em Programação Lógica
Aula de apoio ao trabalho prático.