1   Introduction

2   Rappels fondamentaux

Relations bien fondées
définitions et exemples
Principe d'induction bien fondée
et preuve
Composition de relations bien fondées
lexicographique, produit etc
Termes, et sigma-algebres
notion de sigma algebre, de homomorphisme, termes et substitutions, theoremes de Birkhoff Notes preliminaires de cours
Réécriture
notion de relation de Réécriture abstraite,
Propriétés des systèmes de réécriture abstraits
confluence faible, confluence, confluence forte, normalisation faible et normalisation forte.
Propositions
Lemme de Newman (confluence faible + normalisation forte implique confluence), prouvé par induction bien fondée
Egalite engendree par une relation de réécriture
propriété de Church-Rosser, et équivalence avec la confluence.
Introduction au lambda calcul
lamda termes, substitution, notion de reduction b et d'égalité b

3   Lambda calcul non typé et typé

Confluence du lambda calcul
preuve par le biais de la technique des reductions parallèles
Définitions de base
type, jugement de typage, derivation de typage
Propriétés
unicité de la derivation de typage, decidabilité de la typabilité,
Subject Reduction
preuve par induction sur la derivation de typage
Inférence de type
esquisse de la methode de reconstruction de type par resolution d'équations engendrées sur les noeuds de la squelette de l'arbre de derivation

4   Réductibilité, Relations logiques

Normalisation forte du lambda calcul simplement typé
par la méthode dite de réductibilité, qui utilise des relations logiques.

5   Sémantique Opérationnelle

Généralités
sur la Sémantique operationnelle structurée (SOS, ou à la Plotkin, ou des petits pas, ou small steps), et sur la Sémantique opérationnelle naturelle (à la Khan, big steps ou des grands pas)
Exemple
évaluation des nombres binaires
Sémantique du lambda calcul
appel par nom et par valeur, en style SOS et naturel, avec définition de la notion de valeur (les abstractions)
Propriétés
determinisme, correspondence entre SOS et naturelle, heritage des propriétés de subject reduction et de normalisation forte de la version typée

6   Machines à environnement pour l'appel par nom

evaluateur simple
critique de l'opération de substitution
machine de Krivine
: notion de fermeture (Closure), environnement et pile; définition d'état (c,e,s) et de la table de transition
propriétés
: définition de depliage d'une fermeture et de relecture d'un état.
théorème de correction
si (c,e,s) transite sur (c',e',s'), alors les relectures sont b équivalentes.
raffinement du théorème
si (c,e,s) transite sur (c',e',s'), alors soit les relectures sont identiques, soit la prémière reduit en une étape b sur la deuxième
raffinement ultérieure
l'eventuelle étape b est bien une étape de reduction en appel par nom. Ceci donne enfin une partie de la correction de la machine.

7   Semantique denotationnelle

  l'approche denotationnelle de la semantique
survol
semantique d'un langage fonctionnel simple
approche simple avec les ensembles
modeliser la non terminaison:
les ordres partiels complets (CPO)
extension du langage:
erreurs, exceptions, etat
les continuations:
modelisation des sauts

8   Construction modulaire d'evaluateurs et compilateurs via les monades

les monades
une programmation fonctionnelle structuree
interpreteur
fonctions, etat, erreurs, exceptions
construction modulaire de l'interpreteur
transformateurs de monades