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.