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

Documents pareils