Solutionnaire - Polytechnique Montréal
Transcription
Solutionnaire - Polytechnique Montréal
LOG3300 Solutionnaire du Travail Dirigé 4 Prof. John MULLINS, Ph.D. Département de Génie Informatique École Polytechnique de Montréal Avril 2007 1 1.1 Rédaction de spécifications algébriques Les ensembles d’entiers naturels Body Axioms 1 (x = y) = true (x = y) = false (x = y) = true (x = y) = false del y empty x ∈ empty x = y = true x = y = false X ∪ empty X ∪ (ins y Y) X ∩ empty (x ∈ X) = true (x ∈ X) = false X \ empty X \ (ins y Y) X ∆ Y card empty (x ∈ X) = true (x ∈ X) = false empty? empty empty? (ins x X) ⇒ ⇒ ⇒ ⇒ = = ⇒ ⇒ = = = ⇒ ⇒ = = = = ⇒ ⇒ = = ins y (ins x X) = ins x X; ins y (ins x X) = ins x (ins y X); del y (ins x X) = del y X; del y (ins x X) = ins x (del y X); empty; false; x ∈ (ins y X) = true x ∈ (ins y X) = x ∈ X X; ins y (X ∪ Y); empty; X ∩ (ins x Y) = ins x (X ∩ Y); X ∩ (ins x Y) = X ∩ Y; X; del y (X \ Y); (X ∪ Y) \ (X ∩ Y); 0; card (ins x X) = card X; card (ins x X) = succ(card X); true; false; where X, Y: set; x, y: natural; End Set; 1.2 Files d’entiers naturels non bornées (FIFO) Body Axioms 2 remove(new) first(new) remove(add n new) remove(add nn (add n f)) first(add n new) first(add n f) # new # add n f n inside? new n inside? add nn f empty? new empty? (add n f) = = = = = = = = = = = = new; ;; Convention e; ;; Convention new; add nn remove(add n f); n; first(add nn (add n f)); 0; succ(# f); false; (n = nn) or (n inside? f); true; false; where f : fifo; n, nn : natural End Fifo; 2 Axiomatisations et modèles initiaux 1. (a) {[[a]], [f (a)]]} (b) ∅ 2. D’une part, on a: S(S(S(0))) + S(0) = S(S(S(S(0))) + 0) = S(S(S(S(0)))) Et d’autre part, on a: S(S(0)) · S(S(0)) (S(S(0)) · 0 + S(S(0))) + S(S(0)) S(0 + S(0)) + S(S(0)) S(S(0)) + S(S(0)) = S(S(S(0)) + S(0)) 3 Systèmes de réécriture 1. On oriente les axiomes de gauche à droite: 3 = = = = (S(S(0)) · S(0)) + S(S(0)) = (0 + S(S(0))) + S(S(0)) = S(S(0 + 0)) + S(S(0)) = S(S(S(S(0)) + 0)) = S(S(S(S0)))) (a) x + 0−→x (b) x + S(y)−→S(x + y) (c) x · 0−→0 (d) x · S(y)−→(x · y) + x À chaque étape de la réécriture, la règle utilisée pour la réduction est donné et le sous-terme réduit est souligné. (d) S(0) · S(S(0)) −→ (S(0) · S(0)) + S(0) (d) −→ ((S(0) · S(0)) + S(0)) + S(0) (c) −→ (0 + S(0)) + S(0) (b) −→ S(0 + 0) + S(0) (a) −→ S(0) + S(0) (b) −→ S(S(0) + 0) (a) −→ S(S(0)) 2. En orientant les règles, on obtient le système de réécriture suivant: 1. 2. 3. 4. f(a, b) f(c, g(x)) f(c, c) a −→ −→ −→ −→ c a f(c, g(b)) f(c, c) Dans ce système, la suite a −→ f(c, c) −→ f(c, g(b)) −→ a est nonterminante car elle est cyclique. 4