Introduction ` a la th´eorie de l’informatique
R´ ep´ etition 4
Ann´ ee acad´ emique 2013-2014
1. (a) Comparer le nombre de multiplications requis pour l’´evaluation eval(subst([3∗x],[1 + [x∗x]]),2)
dans le mod`ele d’environnement et dans le mod`ele de substitution.
(b) Donner un exemple d’´evaluation n´ecessitant 6 foismoins de multi- plications dans le mod`ele d’environnement que dans le mod`ele de substitution.
(c) Donner une exemple d’´evaluation n´ecessitant 6 foisplus de multi- plications dans le mod`ele d’environnement que dans le mod`ele de substitution.
2. SoitExpe l’extension du langage des expressions d´efinie par la forme BNF suivante :
E ∈Expe ::=n|true|false|(E+E)
Informellement la s´emantique du langage est la suivante : l’addition entre deux entiers a le sens classique de l’addition. L’addition entre deux bool´eens est assimil´ee `a un “ou logique” (disjonction). Lorsqu’on veut additionner un bool´een et un nombre, le bool´een est d’abord transform´e en un nombre, 1 pourtrueet 0 pourfalse, avant d’ex´ecuter l’addition. On a donc par exemple :
3 + 4 donne 7 true+false donne true
12 +true donne 13
(a) Donnez une d´efinition r´ecursive de Expe ´equivalente `a la forme BNF.
1
(b) En vous inspirant de la s´emantique d´enotationnelle deExpdonn´ee au cours th´eorique, ´ecrivez une s´emantique d´enotationnelle deExpe. Quel en est le domaine ?
(c) En vous inspirant de la s´emantique op´erationnelle deExp, ´ecrivez les r`egles d’une s´emantique op´erationnelle de Expe.
(d) Montrez par induction structurelle que pour toute expressionE ∈ Expe, il existe une valeurv ∈N∪ {true,false}telle queE →∗ v.
(e) Modifiez la s´emantique op´erationnelle pour ajouter un op´erateur
× dont la s´emantique serait la suivante :
— Si E1 et E2 sont des nombres, alors E1×E2 est le produit de ces deux nombres.
— Si E1 ou E2 est un bool´een, alors E1×E2 renvoie une erreur, c’est-`a-dire une valeur sp´eciale not´eeerror.
Par exemple, l’expression (1+2)×((3×false) +4) renverra une erreur.
2