TP 21/2, 11:00
Não houve aula. Motivo: participação no Simposium Doutoral do DI.
Universidade do Minho - DI/CCTC
Apresentação da disciplina, método de avaliação, e bibliografia aconselhada.
Introdução à Semântica das linguagens de programação.
Estudo de uma linguagem imperativa simples (LC). Definição de uma máquina abstracta. Conceitos básicos sobre relações de transição. Discussão dos inconvenientes da semântica operacional dada por esta máquina e motivação da abordagem estruturada de Plotkin.
Resolução de um exercício – redução de uma configuração da máquina abstracta para a linguagem imperativa simples (cálculo do factorial de um número).
Discussão da implementação da máquina abstracta em Haskell.
Técnicas de prova por indução: indução matemática, indução estrutural, e indução sobre regras de inferência. Prova de equivalência das duas últimas à indução matemática. Exemplificação: estruturas indutivas para as expressões e comandos da linguagem LC; sistema de inferência para a avaliação de expressões de LC.
Resolução de um exercício – transições de uma configuração da Semântica Operacional estrutural para a linguagem imperativa simples (cálculo do factorial de um número). Comparação com o exercício da aula anterior.
Discussão da implementação destas regras de transição em Haskell.
Continuação do assunto da aula anterior. Prova de uma propriedade da semântica de transições: carácter determinista da relação de transição. Introdução à semântica de avaliação.
Semântica Operacional de Avaliação: apresentação das regras de inferência e sua visão algorítmica. Propriedades. Referência ao "Halting Problem". Prova (por contradição) de não existência de uma derivação para a avaliação de um programa divergente.
Resolução de um exercício – aplicação da semântica de avaliação de uma configuração para a linguagem imperativa simples (cálculo do factorial de um número). Comparação com os exercícios das aulas anteriores.
Discussão da implementação destas regras de avaliação em Haskell.
Equivalência das semânticas de transição e de avaliação. Esboço da prova. Propriedades da semântica de avaliação, obtidas automaticamente a partir do resultado de equivalência.
Noção de equivalência induzida pela Semântica Operacional de Avaliação: prova de congruência. Exemplos de comandos semanticamente equivalentes. Apresentação de um sistema de tipos para a linguagem imperativa simples: asserções de tipagem e regras de inferência. Discussão sobre a utilidade dos tipos na linguagem. Reinterpretação de propriedades à luz do sistema de tipos.
Resolução de exercícios sobre equivalência semântica de programas da linguagem imperativa simples, e sobre assserções de tipos para expressões e comandos desta linguagem.
Não houve aula. Motivo: realização do evento ETAPS'07, cuja comissão de organização o docente integra.
Não houve aula. Motivo: realização do evento ETAPS'07, cuja comissão de organização o docente integra.
Não houve aula. Motivo: realização do evento ETAPS'07, cuja comissão de organização o docente integra.
Introdução ao estudo da Semântica Axiomática da linguagem imperativa simples. Lógica de Floyd-Hoare. Asserções de correcção parcial. Apresentação das regras de inferência. Linguagem de propriedades lógicas: discussão.
Resolução de exercícios sobre Lógica de Floyd-Hoare. Exercícios simples sobre a utilização do axioma da atribuição e a lei da consequência (fortalecimento de pré-condições). Caso de estudo: prova de correcção do programa para o cálculo do factorial de um número.