Cours de sémantique
L'objectif de ce cours est d'introduire les étudiants aux différentes
techniques utilisées pour décrire exactement le comportement des
programmes. Ce cours est organisé en 6 séances de 2 heures,
accompagnées de 6 séances de Travaux dirigés sur machine.
Première séance
La première séance a pour objectif de présenter la sémantique
naturelle. Les notes de cours ont la forme d'un article d'une
dizaine de pages, postscript
compressé.
TD de la première séance
Dans ces TD, nous construisons des dérivations d'exécution pour
plusieurs programmes. Nous tâcherons d'évaluer la taille de ces
dérivations et nous verrons comment automatiser la
construction. Nous nous reposerons sur l'utilisation d'un
système de démonstration sur ordinateur appelé
Jape.
Ce système est disponible sur la majeure partie des machines
Unix et MacIntosh. Nous utiliserons pour notre cours un
fichier de configuration appelé little.jt (aussi en postscript compressé).
Deuxième séance
La deuxième séance a pour objectif de présenter la sémantique
dénotationelle. Les notes de ce cours sont disponibles en
postscript compressé.
TD de la deuxième séance
Dans ces TD, nous construisons un programme en Scheme qui implémente
les différentes fonctions mathématiques décrite dans la première
partie du cours. L'objectif est donc de construire:
- Des environnements, c'est à dire des fonctions partielles des noms
de variable (des symboles de scheme) vers les valeurs
entières.
- L'environnement vide sera représenté par une fonction à un
argument qui retourne toujours une erreur.
- Un environnement peut être modifié grâce à la fonction update, qui
reçoit, dans cet ordre, un environnement e, un nom de
variable v, et une valeur entière n, et retourne un
environnement qui se comporte comme l'environnement
e partout sauf en la variable v, pour
laquelle ce nouvel environnement retourne n.
- La sémantique des expressions arithmétiques sera représentée par
une fonction denote-a qui prend un argument e
qui est une expression et retourne une fonction des
environnements vers les valeurs entières. La fonction
denote-a représente la fonction écrite dans le cours
avec le A majuscule en lettre ronde.
- La sémantique des expressions booléennes sera représentée par une
fonction denote-b qui prend un argument e qui
est une expression booléenne et retourne une fonction des
environnements vers l'ensemble {true, false}. La fonction
denote-b représente la fonction écrite dans le cours
avec le B majuscule en lettre ronde.
- La sémantique des instructions sera représentée par une fonction
denote-i qui prend un argument i qui est une
instruction et retourne une fonction des environnements vers
les environnements. La fonction
denote-i représente la fonction écrite dans le cours
avec le I majuscule en lettre ronde.
-
Pour la sémantique des instructions de boucle on se reposera sur une
fonction fix-point qui prend en argument une fonction
F d'un ensemble de fonctions dans lui-même et qui retourne un
élement invariant par cette fonction, c'est à dire que
mathématiquement les valeurs fix-point(F) et
F(fixpoint(F)) sont deux fonctions égales en tout point. On
étudiera également les moyens de construire cette fonction
fix-point en scheme.
La solution de ces travaux dirigés est disponible.
Troisième séance
La troisième séance a pour objectif de montrer les correspondances
entre les deux descriptions sémantiques du langage. Les notes
de ce cours sont disponibles en postscript compressé
TD de la troisième séance
Dans cette séance, nous montrerons comment décrire la sémantique
naturelle pour un langage fonctionnel pur (liaison statique et
appel par valeurs) en utilisant le
programme
Jape
déjà utilisé en première séance de TD.
Alternativement, nous pourrons utiliser la sémantique naturelle comme
ligne guide pour écrire un interprète pour ce langage
fonctionnel en scheme.
La solution de ces TD est disponible: sémantique naturelle en
format Jape (aussi en postscript
compressé), ou bien programme scheme
pour l'interprète du langage fonctionnel.
quatrieme seance
Notes du cours
Exercices
Voici quelques exercices qui auraient pu servir d'examen
exercices2.ps.gz et leurs
reponses2.ps.gz.
Yves Bertot
Last modified: Thu Aug 23 17:27:19 MEST 2001