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