Cours 5 : Sémantique
Sémantique
Ex :
Sémantique de C :
Projet CompCert :
Deux grands styles de sémantique :
- Sémantiques opérationnelles :
- un programme = un gigantesque automate / graphe, dont les sommets sont les configuration
- ex: pour un ordinateur de
de RAM, il y a environ de configurations : beaucoup trop énorme pour représenter le graphe dans l’univers physique
- ex: pour un ordinateur de
- un programme = un gigantesque automate / graphe, dont les sommets sont les configuration
⟶ on s’autorise des graphes dont les sommets sont des configurations en nombre infini dénombrable.
De plus : on définit une relation binaire notée
transition de la configuration
Attention : “relation”, et pas “fonction”, car le graphe n’est pas forcément déterministe.
ex concret : on lit des sockets ⟶ on ne peut pas prédire ce qui sera stocké dans la chaîne (on ne sait ce qu’on va recevoir, à part si on a modélisé tout les univers possibles : pas faisable)
- Sémantiques dénotationnelles : les plus anciennes
Pour
- une expression
, on décrit sa valeur - une commande
, on décrit sa valeur
NB : opérateur
- Environnement :
-
NB : c’est du pipeau
Sémantique d’une commande :
on veut l’environnement à la fin de la commande.
:-
c’est la fonction qui :
- à
associe - à tout
associe
- à
expression / environnements vers les environnements
OU
commandes / environnements vers les environnements
NB :
En logique : “frame problem” : on est obligé de préciser systématiquement “
MAIS : produit de séparation résout ça
Gros problème :
while
: par bien fondé !
Comment on résout ce problème ? avec un théorème de point fixe fonctionnel.
Sémantique 0 (opérationnelle, petits pas)
Une configuration est :
- un couple
d’une commande et d’un environnement - OU :
(si on a terminé l’exécution)
NB :
en fait,
- commandes
intervalles - environnements
poteaux
NB :
aucun problème définitionnel, pour les sémantiques opérationnelles : ensemble de règles
Sémantique 1 (opérationnelle, petits pas)
Une configuration est :
- un couple
d’une liste de commandes et d’un environnement- NB :
est une configuration sans successeur : phénomène de terminaison
- NB :
- OU :
(si on a terminé l’exécution)
Deadlock : en programmation parallèle, on a deux threads qui manipulent une même variable
Pour éviter ça : systèmes de synchronisation :
- ex: les sémaphores de Djikstra :
, (en hollandais : “essayer d’acquérir, libérer”)- il n’y a pas deux processus qui peuvent acquérir le même sémaphore en même temps
Contrat : n’utiliser
Mais problème : 2 processus se battent pour deux sémaphores :
- le premier veut
, puis - le deuxième veut
, puis
chacun des deux veut acquérir le sémaphore de l’autre et attend que l’autre le lâche : il reste des trucs à faire, mais bloqué ⟶ deadlock.
Sémantique opérationnelle à grands pas
Plutôt que décrire l’exécution étape par étape élémentaires, ça nous décrit directement comment passer de la configuration initiale à la configuration finale.
NB : ne parle QUE des programmes qui temrminent.
C’est même une caractérisation : un programme termine ssi il existe une dérivation pour ce programme
Ce qu’on prétend :
les sémantiques opérationnelles à petit pas et grand pas font la même chose.
Si
alors
NB : attention,
HS : Lemme de Yoneda
Proposition :
Si
dans la sémantique à petits pas, alors : Pour tout environnement
tel que est dérivable en sémantique à grands pas, est aussi dérivable en sémantique à grands pas.
Adéquation :
Utiliser un lemme intermédiaire :
Par ex, pour (Seq) :
Optimisations d’un compilateur : se font par des techniques d’analyse statique basées sur les sémantiques.
Unique point pénible : assurer la terminaison.
Retour sur la sémantique dénotationelle
On a vu que
Treillis
- Treillis :
-
Ensemble ordonné dans lequel toute paire (d’éléments) admet une borne sup et une borne inf. (cf. diagramme de Hasse qd
non comparables). - Treillis complet :
-
Si, de plus, pour toute partie
, admet un borne sup et une borne inf.
Supposer que l’existence d’une borne sup suffit : l’existence d’une borne inf est un théorème.
Dém :
Considérons le sup
Si
Montrons que c’est le cas : pour tout
Si
NB : Un treillis complet a un plus grand (resp. petit) élément, puisque
Ex:
1)
2)
- Borne sup de
= - Borne inf de
=
3) Pour une topologie, l’ensemble des ouverts est un treillis complet (l’union d’ouverts reste un ouvert (borne sup)).
L’inf d’une famille d’ouverts, c’est l’intérieur de l’intersection.
- Point fixe d’une applcation
: -
Un élément
tq
Th de Knaster-Tarski : Soit
un treillis complet, monotone. Alors
admet un plus petit pt fixe, et un plus grand pt fixe.
NB :
- fonction “monotone” : c’est un anglicisme (pour dire “croissante”).
- en fait, on a même mieux : l’ensemble des points fixes est un treillis complet.
-
Heuristique :
est une suite croissante.- si en on note
le sup : on a - puis, avec les ordinaux :
- particularité des ordinaux : le sup d’une famille est un ordinal
- puis : paradoxe de Burali-Forti
- l’ensemble de tous les ordinaux est un ordinal : bizarre car cet ordinal est alors strictement plus grand que lui-même (à la Russel)
- en fait : il n’y a pas d’ensemble des ordinaux.
- donc ici : comme on a bien a affaire à un ensemble, on ne peut pas avoir stricte croissance de la suite précédente ⟶ il y a un point fixe.
Dém :
On pose
NB : un
On remarque que
Comme
Mq
Soit
Ainsi
Donc
Par monotonie de
Donc
Comme
(dém analogue pour la borne inf)
Application : Th de Cantor-Bernstein
Dém :
Soient
On pose
(
1) Mq
Soient
Par le th de Knaster-Tarski,
On définit
NB : Comme
Mq
Si
- Si
: par injectivité de - Si
: ont le même antécédent par , donc - Si
: , , donc .
Mq
Soit
- Si
, et - Si
Langages algébriques
Langages reconnus par automates à piles.
Ex :
Grammaire :
⟹ Langage
- Directed Complete Partial Order (DCPO) :
-
Un ensemble partiellement ordonné tel que toutes les familles dirigées aient des bornes sup.
- Famille dirigée
d’élément de : -
- famille non vide
- telle que :
Exs de DCPO :
- tout treilis complet
-
L’ensemble de Scott
muni de l’ordre
NB : ça n’est pas un treillis complet, à cause de l’ensemble vide.
est Scott-continue ssi :-
monotone dirigée dans ,
Notation : L’ensemble des fonctions Scott-continues de
NB :
- ça coïncide bien avec la continuité pour la topologie de Scott.
- la famille
est dirigée, d’où l’existence du sup -
pour vérifier cette égalité, on procède par double inégalité, sachant que
est toujours vraie- seule chose à démontrer, sachant que
monotone :
- seule chose à démontrer, sachant que
Th de Kleene : Soit
un dcpo pointé (i.e avec un plus petit élément ). Toute fonction Scott-continue
a un plus point fixe :
Posons
Alors :
(par Scott-continuité)
Donc :
Montrons que c’est le plus petit :
Si
(
Fait : Si
et sont des DCPO, alors reste un DCPO où :
NB : Selon Gordon Plotkin : en théorie des domaines, soit
- ça foire lamentablement
- ça réussit magnifiquement
Preuve :
Soit
Montrons que son sup est
lequel existe car :
-
, sont dirigées- projeter sur la première composante le majorant exhibé par la définition de “
est une famille dirigée”
- projeter sur la première composante le majorant exhibé par la définition de “
est un majorant : par déf-
c’est le plus petit :
- Si
, alors et . - Donc
et . - Donc
- Si
Proposition : Si
et sont des DCPO, l’ensemble des fonctions Scott-continues est un DCPO :
ssi - Pour toute famille dirigée
:
Dém :
Se déroule naturellement :
- bonne définition : évidente en montrant que
est dirigée - monotonie de
: caractérisation du sup - Scott-continuité de
: en utilisant le fait que (on fait commuter les quantificateurs universels) est un majorant des : en utilisant est plus petite que tout majorant des : en utilisant
Propriété : L’application
Dém :
monotone- Soit
dirigée dans .
On va avoir un problème : quantification sur
Il y a une inégalité claire.
L’autre vient du fait que la famille de couples considérée est dirigée.
NB : en topologie :
- notion de continuité séparément et de continuité conjointement
- Normalement : elles ne coïncident pas du tout (reprendre les exemples classiques d’analyse)
-
Mais ici, dans les DCPO avec la topologie de Scott : continuité séparément = continuité conjointement, ce qui est un miracle !
- c’est pour ça que tout va marcher, en sémantique !
- la catégorie des CPO avec la topologie de Scott est cartésienne close !
- Lifting du DCPO
, noté : -
c’est
muni d’un minimum , et ça reste un DCPO. - DCPO obtenu à partir d’un ensemble
: -
c’est le DCPO
- DCPO plat :
-
c’est un DCPO de la forme
, où est un ensemble.
Retour à la sémantique dénotationnelle
Donc en posant
Donc on pose :
On se place dans le DCPO
NB :
il faut montrer que la fonction
- en utilisant la cloture par composition des fonctions Scott-continues, et la continuité de la fonction
.
Miracle : en choisissant le plus petit point fixe, on va montrer l’équivalence des sémantiques dénotationnelle et opérationnelles.
NB :
-
le théorème de correction n’utilise que le fait que c’est un point fixe.
Équivalence contextuelle
Morris : deux programmes sont équivalents ssi on ne voit pas la différence : à toute entrée, ils donnent la même sortie.
Programme équivalents ⟺ ont le même comportement (i.e on observe les mêmes effets) dans le même contexte.
Mais dans notre cas : on prendra un critère beaucoup plus faible :
-
même comportement =
- terminent sur les mêmes entrées
- donnent zéro dans sur les mêmes entrées
⟶ mais par une réduction (en considérant les contextes qui plantent quand 0 est renvoyé), cela revient au même
Th
:
De la sémantique dénotationnelle de la séquence, on déduit :
Leave a comment