Notes du cours introductif

Transcription

Notes du cours introductif
Notes de cours
Cours introductif sur la théorie des domaines
Paul-André Melliès
Modèles des langages de programmation
Master Parisien de Recherche en Informatique
1
Ensembles ordonnés
Definition 1.1 (ensemble ordonné) Une relation d’ordre ≤ sur un ensemble A est une relation binaire reflexive:
∀a ∈ A,
a≤a
transitive:
∀a, b, c ∈ A,
(a ≤ b et b ≤ c) ⇒ a ≤ c
et antisymétrique:
∀a, b ∈ A,
(a ≤ b et b ≤ a) ⇒ a = b.
Un ensemble A muni d’une relation d’ordre ≤ est appelé un ensemble ordonné.
Definition 1.2 (fonction monotone) Une fonction monotone
f
(A, ≤A )
:
−→
(B, ≤B )
−→
B
est une fonction
f
:
A
entre les ensembles sous-jacents, telle que
∀a1 , a2 ∈ A,
a1 ≤A a2
⇒
f (a1 ) ≤B f (a2 ).
Exercice. Montrer que les ensembles ordonnés et les fonctions monotones
définissent une catégorie.
Exercice∗ .
Montrer que cette catégorie est cartésienne fermée.
1
2
Bornes supérieures
Nous fixons ici un ensemble ordonné (A, ≤) et un sous-ensemble F de A.
Definition 2.1 (majorant) On appelle majorant de F un élément m ∈ A
tel que
∀a ∈ F,
a ≤ m.
Notation.
On écrit F ≤ m lorsque m est un majorant de F.
Definition 2.2 (borne supérieure) On appelle borne supérieure de F tout
élément m ∈ A qui vérifie les deux propriétés suivantes:
• m est un majorant de F
• tout majorant de F est supérieur à m.
Exercice.
Montrer que l’ensemble F a au plus une borne supérieure.
Notation.
Lorsqu’elle existe, on note cette borne supérieure
W
F.
Ainsi, lorsqu’elle
existe, la borne supérieure d’un ensemble F est l’unique
W
élément F qui vérifie les deux propriétés suivantes:
_
F≤
F
∀a ∈ A,
F ≤a
⇒
_
F ≤ a.
Propriété. Si F est un sous-ensemble de (A, ≤A ) qui dispose d’une borne
supérieure, et
f : (A, ≤A ) −→ (B, ≤B )
est une fonction monotone, alors
f (F)
≤B
_
f ( F).
En particulier, si f (F) dispose d’une borne supérieure dans (B, ≤B ), alors
_
_
f (F) ≤B f ( F).
2
Démonstration. Soit un élément x ∈ f (F). Par définition de f (F),
W il
existe a ∈ F tel que x = f (a). Du fait que a ∈ F, on déduit que a ≤AW F.
Du fait que la fonction f est monotone,
W on déduit que f (a) ≤B f ( F).
De cela, on déduit que f (F) ≤B f ( F) puisque x = f (a) a été choisi
arbitrairement dans f (F). Pour obtenir
la seconde propriété, il suffit de
W
remarquer que la borne supérieure Wf (F) est le plus petit des majorants
de f (F) lorsqu’elle existe, et que f ( F) est un majorant de f (F) par la
propriété que nous venons d’établir.
3
Flots
Definition 3.1 Soit un ensemble ordonné (A, ≤A ). On note
Flot(A)
=
N ⇒ A
l’ensemble des fonctions totales des entiers naturels dans A. Cet ensemble
est ordonné par la relation ≤ définie comme suit:
∀f, g ∈ Flot(A),
f ≤g
⇐⇒
∀n ∈ N,
f (n) ≤A g(n).
Definition 3.2 (ordre plat) Pour tout ensemble X, on définit l’ensemble
X⊥ = X ∪ {⊥} muni de la relation d’ordre ≤ définie comme suit:
∀x ∈ X,
∀x, y ∈ X,
⊥≤x
x ≤ y ⇒ x = y.
Autrement dit, l’élément ⊥ est le plus petit élément de X⊥ et tous les
éléments de X sont incomparables. Cet ensemble ordonné est appelé l’ordre
plat associé à l’ensemble X.
Exercice. Expliquer en quoi tout élément de Flot(N⊥ ) peut être vu comme
une fonction partielle des entiers dans les entiers. Préciser quelle est la
relation d’ordre entre deux telles fonctions. Donner l’exemple d’un sousensemble
F de l’ensemble ordonné Flot(N⊥ ) tel que F a une borne supérieure
W
F qui n’appartient pas à l’ensemble F.
4
Filtres
On définit la notion de filtre sur un ensemble ordonné (A, ≤A ).
Definition 4.1 On appelle filtre de (A, ≤A ) tout sous-ensemble F non vide
de A tel que
∀a, b ∈ F, ∃c ∈ F,
a ≤ c et b ≤ c.
3
Propriété.
Si
f
:
(A, ≤A )
−→
(B, ≤B )
une fonction monotone et F est un filtre de l’ensemble ordonné (A, ≤A ),
alors f (F) est un filtre de l’ensemble ordonné (B, ≤B ).
Démonstration. Soient x, y deux éléments de f (F). Par définition de
f (F), il existe deux éléments a, b de F tels que x = f (a) et y = f (b). Par
définition de la notion de filtre, il existe un élément c ∈ F tel que a ≤A c
et b ≤A c. Du fait que f est monotone, on déduit que f (a) ≤B f (c) et
f (b) ≤B f (c). On conclut du fait que f (c) est un élément de f (F) qui
majore les deux éléments x et y que nous avions choisis arbitrairement dans
f (F).
5
Domaines
Definition 5.1 Un domaine (D, ≤) est un ensemble ordonné tel que
• il existe un plus petit élément noté ⊥,
• tout filtre F de (D, ≤) dispose d’une borne supérieure.
Propriété. Supposons que (D, ≤D ) est un domaine. Alors l’ensemble ordonné Flot(D) est lui-même un domaine.
Démonstration. Le plus petit élément de Flot(D) est donné par la fonction constante qui associe à tout entier l’élément ⊥. Reste à montrer que
tout filtre de (Flot(D), ≤) dispose d’une borne supérieure. Une manière
simple d’établir la propriété est d’utiliser la fonction de projection
πn
:
Flot(D)
−→
D
qui transporte toute suite (xn )n∈N en son n-ième élément xn . Cette fonction
πn est monotone et donc transporte tout filtre F de Flot(D) en un filtre
que nous noterons Fn du domaine de D. Ce filtre est défini de la sorte:
Fn
=
{ xn
|
(xn )n∈N ∈ F
}
Par hypothèse
W que (D, ≤D ) est un domaine, ce filtre Fn possède une borne
supérieure Fn . On peut ainsi définir le flot
_
_
ϕ = ( F0 , · · · , Fn , · · · ).
4
défini par ces bornes supérieures. Par construction, cette suite ϕ majore
tous les éléments de F. De plus, si ψ est un majorant de F, alors
_
Fn ≤ πn (ψ)
du fait que πn est monotone. La propriété étant vraie pour tout entier n,
on déduit que
φ ≤ ψ
ce qui établit que φ est la borne supérieure du filtre F.
Exercice. Utiliser la même démonstration pour établir que l’ensemble ordonné A ⇒ B est un domaine lorsque B est un domaine. Ici, l’ensemble
ordonné A ⇒ B est défini pour des ensembles ordonnées (A, ≤A ) et (B, ≤B )
comme l’ensemble des fonctions monotones ordonnés par
f ≤g
⇐⇒
∀a ∈ A,
f (a) ≤B g(a).
Exercice∗ . En déduire que la catégorie des domaines et des fonctions
monotones est une catégorie cartésienne fermée.
6
Fonctions continues
On définit la notion de fonction continue entre domaines.
Definition 6.1 (fonctions continues) Soit une fonction monotone
f
:
(D, ≤D )
−→
(E, ≤E )
entre domaines. La fonction f est dite continue lorsque
_
_
f (F) = f ( F)
pour tout filtre F du domaine (D, ≤).
Propriété.
L’ensemble D ⇒ E des fonctions continues muni de l’ordre
f ≤g
⇐⇒
∀a ∈ D,
définit un domaine.
5
f (a) ≤E g(a)
Démonstration. Comme précédemment, le plus petit élément est défini
comme la fonction constante qui associe ⊥ à tout élément de D. Soit maintenant un filtre F de D ⇒ E. On construit aisément une fonction
ϕ
:
−→
D
E
définie par
ϕ
:
_
7→
a
Fa
où Fa est le filtre obtenu en projetant le filtre F sur la composante a. On
peut montrer que la fonction ϕ est monotone. En effet,
a1 ≤D a2
⇒
Fa1 ≤ Fa2
où Fa1 ≤ Fa2 signifie que
∀x ∈ Fa1 ∃y ∈ Fa2 ,
x ≤E y.
De cela, on déduit que
a1 ≤D a2
⇒
_
Fa1 ≤E
_
Fa2
ce qui établit que la fonction ϕ est monotone. Montrons maintenant que la
fonction ϕ est continue. Soit G un filtre de D. Du fait que la fonction ϕ est
monotone, on sait qu’elle satisfait l’inégalité suivante:
_
_
ϕ(G) ≤ ϕ( G).
Reste donc à montrer que
ϕ(
autrement dit que
W
ϕ( G) =
=
=
G)
≤
_
ϕ(G)
W W
F G
W W
W{fW( G)|f ∈ F}
{ f (G)|f ∈ F}
par définition de ϕ
par définition de Fa
par continuité de f ∈ F
o
{f (x)|x ∈ G} f ∈ F
par définition
o
{f (x) | f ∈ F} x ∈ G
par propriété de Fubini
=
WnW
=
WnW
=
=
_
W
{φ(x)|x
∈ G}
W
φ(G)
6
par définition de ϕ
par définition.
Exercice∗ . En déduire que la catégorie des domaines et des fonctions continues est cartésienne fermée.
7
Motivation informatique
L’intuition est que parmi toutes les fonctions
f
:
−→
Flot(N)
Flot(N)
seules les fonctions que l’on peut étendre en une fonction
ϕ
:
−→
Flot(N⊥ )
Flot(N⊥ )
peuvent être implémentées par un algorithme. Typiquement, la fonction
f
:
(xn )n∈N
7→
(xn + xn+1 )n∈N
s’étend en la fonction continue
ϕ
où
yn
:
(xn )n∈N

 xn + xn+1
⊥

⊥
=
7→
(yn )n∈N
si xn ∈ N et xn+1 ∈ N.
si xn = ⊥
si xn+1 = ⊥
Or, cette fonction f est calculable (au sens paresseux) par un algorithme qui
pour chaque case n en sortie calcule yn = xn + xn+1 et boucle si l’une des
valeurs n’est pas disponible dans le flot d’entrée. Par contre, il est impossible
d’implémenter la fonction
(xn )n∈N
si (xn )n∈N est bornée
f : (xn )n∈N 7→
(0)n∈N
sinon
parce que celle-ci ne peut pas être étendue en une fonction continue
ϕ
:
−→
Flot(N⊥ )
Flot(N⊥ )
Remarque. Pour établir la propriété de manière formelle et rigoureuse, il
faut interpréter tout programme d’un langage de programmation spécifique
en une fonction continue. De là, on en déduit qu’une fonction non continue
ne peut pas être implémentée dans le langage.
7