Programmation, langages, compilation 3 – Sémantique E. Lozes Exercice 1 – Définitions récursives et points fixes 1. Pour chacune des fonctions CAML suivantes, définir sa fonctionnelle τ : (N → N) → (N → N) et chercher les points fixes : a) let rec f x = if x > 100 then x − 10 else f (f (x + 11)) b) let rec f x = if x mod 2 = 0 then x + 1 else f (f (x − 1)) c) let rec f x = match x with d) let rec f x = match x with 0 → 1 | 2 → 2 | x → f (x + 1) ∗ f (x − 1) 1 → 1 | 2n → f (n) | 2n + 1 → f (3n + 2) W 2. Soit (D, ≤, , ⊥) un ω-c.p.o, autrement W W dit ≤ est un ordre partiel, ⊥ est le plus petit élément, et : (xn )n∈N → n xn définit la borne sup de toute suite croissante (xn )n∈N . (a) montrer que D → D admet une structure naturelle de ω-c.p.o. W (b) τW : D → D est dite continue si elle est croissante et τ ( n xn ) = n τ (xn ). Montrer que l’ensemble des points fixes de τ admet un plus petit élément, noté µ(τ ). 3. Application : on note N⊥ le ω-d.c.p.o. de domaine N ∪ {⊥} ordonné par ⊥ < n pour tout n, et n, m sont incomparables. Chercher les plus petits points fixes des fonctionnelles précédentes. Moraliser. ExerciceV 2W– Point fixe de Tarsky Soit (X, , ) un treillis complet, et f : X → X une fonction croissante : V 1. W Montrer que {x : f (x) ≤ x} définit le plus petit point fixe de f (resp. {x : x ≤ f (x)} le plus grand). 2. Montrer que l’ensemble des points fixes de f est un treillis complet. Exercice 3 – Sémantique opérationnelle et dénotationnelle de TOY On considère le langage TOY : c ::= a | skip | c; c | if b then c else c | while b do c 1 où a désigne une action sur un environnement de type Σ (“la mémoire”). On se donne la sémantique dénotationnelle [a] : Σ → Σ (modification d’un état mémoire) et [b] : Σ → {0, 1} (évaluation d’expression dans un état mémoire). 1. Rappeler ce qu’est la sémantique opérationnelle (grands pas ou petits pas) et en proposer une pour ce langage. 2. Rappeler ce qu’est la sémantique dénotationnelle et en proposer une pour ce langage. Exercice 4 – Preuves en logique de Hoare On se place dans la logique de Hoare, constituée des assertions {P re} c {P ost} signifiant : ∀σ, σ |= P re et [c](σ) 6= ⊥ ⇒ [c](σ) |= P ost. On rappelle les règles de déduction suivantes : {b ∧ I} c {I} {I} while b do c {¬b ∧ I} {A{x := e}} x := e {A} |= A0 ⇒ A {A0 } c {B 0 } |= B ⇒ B 0 {A} c {B} 1. Rappeler la règle du “ ;”. 2. Etablir la preuve de {n ≥ 0} Cube {z = n3 } où Cube est le programme : x :=0 ;y :=0 ;z :=0 ;while not (x=n) do z :=z+3y+3x+1 ;y :=y+2x+1 ; x :=x+1 3. Etablir la preuve de {n ≥ 0} Sqrt {x2 ≤ n < (x + 1)2 } où Sqrt est le programme : x :=0 ;y :=1 ;z :=1 ;while (y ≤ n) do x :=x+1 ;z :=z+2 ;y :=y+z 4. Montrer que la logique de Hoare est indécidable. Exercice 5 – Topologie de Scott 1. Soit (X, O) un espace topologique. On pose : x ≤O y si ∀O ∈ O, x ∈ O ⇒ y ∈ O Montrer que ≤O est un ordre ssi X vérifie l’axiome T0 : ∀x, y ∈ X ∀O ∈ O. x ∈ O ⇔ y ∈ O ⇒ x = y Dans ce cas, on appelle ≤O l’ordre de spécialisation. Quel est cet ordre si X est séparé ? W W 2. Soit (X, ≤, ) un ensemble ordonné tel que la borne sup n xn de toute suite croissante soit définie (on appelle une telle structure un ω-d.c.p.o). Une partie O ⊂ X est un ouvert de Scott si elle vérifie : ∀x, y ∈ X. x ≤ y et x ∈ O ⇒ y ∈ O et ∀(xn ) ∈ X N croissante, 2 W n xn ∈ O ⇒ ∃n. xn ∈ O (a) Quelle est la topologie de Scott sur R ? (b) On considère un ω-d.c.p.o quelconque (X, ≤). Montrer que Ox = {y ∈ X | y 6≤ x} est un ouvert de Scott ; en déduire que ≤ est l’ordre de spécialisation de la topologie de Scott. (c) Montrer que les fonctions Scott W W continues sont croissantes et qu’elles vérifient de plus f ( n xn ) = n f (xn ). Exercice 6 – Une topologie sans points On étudie ici une autre correspondance entreWordres et W W topologie. On appelle frame une structure (X, ≤, ∧, ) telle que a ∧ B = b∈B a ∧ b. 1. Vérifier que l’ensemble des ouverts d’un espace topologique X est une frame (spatialisation). 2. Respectivement, si O est une frame, montrer que l’on peut donner une structure d’espace topologique aux morphismes de frame p : O → {>, ⊥} (localisation). 3. On pose Spat : Topo → Frame et Loc : Frame → Topo. Que vaut Im(Spat) ? Montrer que TopoT1 ⊂ Im(Loc) ⊂ TopoT0 . Exercice 7 – Plus faible précondition On se place dans la sémantique axiomatique de TOY. On note w(c, A) = {σ : [c](σ) |= A} la plus faible précondition de (c, A). On dit que A caractérise l’ensemble d’états w si σ |= A ⇔ σ ∈ w. 1. Donner une formule qui caractérise w(x := e, A). 2. On admet que le langage d’assertion est expressif, i.e. pour tout (c, A), il existe Fc,A qui caractérise w(c, A). Montrer que {Fc,A } c {A} est prouvable pour tout A et c. En déduire que ce système est complet. 3. Montrer qu’il n’existe pas de système de preuve vérifiable qui soit complet pour la logique de Hoare. En déduire qu’il n’y a pas de système de preuve complet pour les assertions valides (i.e. les A t.q. σ |= A pour tout σ). 3