• Aucun résultat trouvé

Probl` emes de points fixes

Quel est le sens de ce point fixe maintenant ? On n’a h´elas pas de conti-nuit´e et de support compact, de fonctionsk-lipschiptziennes et autres, qui nous permettraient d’appliquer un des th´eor`emes de point fixe de l’analyse math´ ema-tique. Mais on a une structure partiellement ordonn´ee de fonctions partielles, et des th´eor`emes de points fixes pour ces structures, Tarski et Kleene, que nous allons d´ecrire tout de suite.

Le cadre g´en´eral est celui des ordres partiels. Un ordre partiel est un couple (P,≤) d’un ensembleP et d’une relation binaire≤d´efini surP (c’est-`a-dire que

≤⊆P×P) telle que≤est r´eflexive :∀p∈P, p≤p; transitive :∀p, q, r∈P, p≤ q&q≤r =⇒ p≤r; et anti-sym´etrique :∀p, q∈P, p≤q&q≤p =⇒ p=q.

Par exemple (R,≤) est un ordre partiel. En fait, on a mˆeme pour cet ordre partiel, la propri´et´e quex≤y ouy ≤xpour tout x, y∈ R. C’est ce que l’on appelle un ordre total. Un autre exemple est (℘(S),⊆), qui est l’ensemble des sous-ensembles d’un ensembleS, avec pour ordre partiel, l’inclusion ensembliste.

Dans les cas qui nous int´eressent, on peut d´efinir un ordre sur Env comme suit. Pourρ∈Env0 ∈Env,

ρ≤ρ0

si

ρ0(x) =ρ(x) siρ(x)6=⊥

(ρrestrictiondeρ0 `a un sous-domaine de Var ; ouρ0 extensiondeρ).

Dans un ordre partiel, il y a une notion de majorant, et de minorant. Soit (P,≤) un ordre partiel. PourX ⊆P :pest un majorant deX si∀q∈X, q≤p; pest le plus petit majorant (sup) si :pest un majorant deX et pour tous les majorants q de X, p ≤ q. Le plus petit majorant, s’il existe, est not´e : S

X.

De mˆeme (en renversant l’ordre), on d´efinit les minorants, et le plus grand des minorants (inf) s’il existe, et que l’on noteTX. Un treillis est un ordre partiel ayant un sup et uninf pour toutX `a deux ´el´ements (et par r´ecurrence, pour tout ensemble fini non videX)

Reprenons nos exemples. (R,≤) est non seulement un ordre total, mais en plus, un treillis (le sup de deux ´el´ements est leurmax, l’inf est leur min). De mˆeme, (℘(S),⊆) est un treillis : lesup de deux ´el´ements (ensembles) est leur union ensembliste, l’infde deux ´el´ements (ensembles) est leur intersection en-sembliste.

Donnons ´egalement des exemples d’ordres partiels qui ne sont pas des treillis.

(Env,≤) n’est pas un treillis : il suffit de consid´erer par exemple ρet σ uni-quement d´efinis surx∈Var, avecρ(x) = 1,σ(x) = 2. Que pourrait alors valoir ρ∪σ? On voit bien qu’on ne peut le d´efinir.

Malgr´e tout, ce dernier ordre partiel a d’autres bonnes propri´et´es, de CPO (acronyme de Complete Partial Order), comme nous allons le d´efinir dans la suite. PourP ordre partiel, une chaˆıne deP est p0≤p1≤. . .≤pn. De mˆeme, uneω-chaˆıne deP estp0≤p1≤. . .≤pn≤. . ., c’est-`a-dire est une suite infinie d’´el´ements deP.

6.2. PROBL `EMES DE POINTS FIXES 105 On dit qu’un ordre partiel (P,≤) est un CPO si touteω-chaˆıne (pi)i∈NdeP admet un suppour≤, et si (P,≤) admet un plus petit ´el´ement encore not´e⊥, c’est-`a-dire ∀p∈P,⊥ ≤p.

On dit ´egalement qu’un treillis est complet si tous ses sous-ensembles X admettent un sup et un inf (condition en fait redondante) ; en particulier, il admet toujours un plus petit ´el´ement : ⊥ = S∅, et un plus grand ´el´ement :

>=SP.

Ainsi, (R,≤) n’est pas un treillis complet, ni un CPO, maisR∪ {−∞,∞}est un treillis complet (donc un CPO). De mˆeme, (℘(S),⊆) est un treillis complet, avec ⊥=∅,> =S. (Env,≤) est un CPO tel que pour toute ω-chaˆıneρ0

A partir d’un CPO et d’un ensemble, on peut ais´ement construire un autre CPO, comme l’indique le lemme suivant :

Lemme 1. Supposons que C est un CPO, A est un ensemble. Alors CA (not´e aussi A → C) l’ensemble des fonctions de A vers C, muni de l’ordre : f ≤

Certaines fonctions vont jouer un rˆole particulier entre des CPOs : les fonc-tions continues, et les foncfonc-tions croissantes.

On dit qu’une fonctionF : D →E d’un CPO (D,v) vers un CPO (E,⊆) est croissante si∀d, d0∈D, dvd0⇒F(d)⊆F(d0).

Une fonctionF croissante est dite continue si pour toutes lesω-chaˆınesd0v d1v. . .vdnv. . .deD, on a :

L’appellation de continuit´e vient de l’analogie avec la topologie, que l’on peut rendre pr´ecise au moins partiellement ici. Tout d’abord, remarquons que l’en-semble des ouvertsO(X) d’un espace topologiqueX, muni de l’inclusion, forme un CPO. Maintenant, une fonction continue, au sens topologique du terme f : X →Y induit une fonction ˜f :O(Y)→ O(X) par ˜f(oY) =f−1(oY)∈ O(X).

106 CHAPITRE 6. S ´EMANTIQUE D ´ENOTATIONNELLE f˜est ainsi croissante, et continue, au sens des structures ordonn´ees. Il existe en fait des correspondances exactes entre structures ordonn´ees et topologies (sou-vent non Hausdorff). C’est un sujet qui se trouve au coeur de ladualit´e de Stone et de la th´eorie des domaines (fondement de la s´emantique d´enotationnelle de langages fonctionnels), que les ´etudiants int´eress´es pourront poursuivre en M22. Dans le cas de Env →Env, on peut se poser la question de caract´eriser les fonctions croissantes, cela nous sera utile par la suite (ainsi qu’au chapitre 10). Soit f : Env →Env croissante. On obtient que si ρ0 est une extension deρ,f(ρ0) est une extension de f(ρ).

De mˆeme, qu’est-ce qu’une fonction f : Env → Env continue ? C’est d´ej`a une fonction f croissante. Elle est en plus telle que pour toute ω-chaˆıne ρ0 ≤ ρ1 ≤ . . . ≤ ρn ≤ . . . les deux calculs suivants sont ´egaux, pour tout Remarque : les deuxi`emes membres plus haut sont bien d´efinis. Par exemple, pour le premier, si ∃j, f(ρj)(x)6=⊥, alors comme ρ0 ≤ρ1 ≤. . . ... et f crois-sante, f(ρ0)≤f(ρ1)≤... donc par d´efinition de notre ordre, si f(ρj)(x)6=⊥ tous les f(ρi)(x) sont ´egaux (`a f(ρj)(x)) puisque f(ρi) ≤ f(ρj) et f(ρj)(x) d´efini implique f(ρi)(x) =f(ρj)(x) (et de mˆeme pourf(ρj)≤f(ρi)).

Pour la s´emantique des boucles que l’on essaie de construire, le domaine d’int´erˆet est D = Env → Env. L’ordre partiel sur ce domaine est d´efini comme suit. Pour φ∈ D,ψ∈ D, φ≤ψ, si pour tout ρ∈Env, φ(ρ)≤ψ(ρ), c’est-`a-dire si pour tout ρ∈Env,φ(ρ) est une restriction deψ(ρ) `a un sous-domaine de Var. C’est un CPO par le lemme 1.

D´efinissons maintenant ce que sont les points fixes, les pr´e-points fixes, et les post-points fixes.

Soit f :D →D croissante pour un ordre partielD. Un point fixe de f est un ´el´ement ddeD tel quef(d) =d. Un post-point fixe def est un ´el´ement d de D tel que f(d)v d. Un pr´e-point fixe de f est un ´el´ement d de D tel que dvf(d).

On a alors deux th´eor`emes de point fixe tr`es classiques (on se servira surtout du deuxi`eme dans ce cours) :

Th´eor`eme 1. (Tarski) Soit f :D→D une fonction croissante sur un treillis completD. Alorsf admet au moins un point fixe. De plus, l’ensemble des points fixes def est un treillis complet, ainsi il existe toujours un unique plus petit point fixe, not´elf p(f) («least fixed-point») et un plus grand point fixe, not´egf p(f) («greatest fixed-point»).

2. On pourra consulter avec int´erˆet [1].

6.3. S ´EMANTIQUE DE LA BOUCLEWHILE 107

Dernier argument :m est d´efini comme ´etant l’infd’un ensemble contenant en particulier tous les points fixes def, doncmest non seulement un point fixe maisle plus petit point fixe de f.

Th´eor`eme 2. (Kleene) Soitf :D→D une fonction continue sur un CPO D (avec un plus petit ´el´ement ⊥). Alors,

f ix(f) = G

n∈N

fn(⊥) est le plus petit point fixe def (qui existe ainsi !).

Preuve. Par continuit´e def :

f(f ix(f)) = f F

6.3 S´ emantique de la boucle while

Revenons `a l’interpr´etation des boucleswhile.

Par r´ecurrence sur les termesc du langage, on suppose [[c]]∈ D, alors pour φ∈ D:

On commence par en prouver la croissance. Pour φ ≤D ψ, on v´erifie que F(φ)≤D F(ψ) ; pour toutρ∈Env, par exemple dans le cas [[b]]ρ=true(les autres cas sont triviaux) :

F(φ)(ρ) = φ([[c]]ρ)

≤ ψ([[c]]ρ)

= F(ψ)(ρ)