Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage...

23
Partie II Partie II Sémantique Sémantique

Transcript of Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage...

Page 1: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Partie IIPartie IISémantiqueSémantique

Page 2: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Qu’est-ce que c’est ?

• La sémantique donne le sens d’un langage

• Pour un langage de programmation, elle permet de prévoir le comportement du programme

• Pour un langage séquentiel, on suppose que le seul comportement observable est le résultat final.

Page 3: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

A quoi ca sert ?

La sémantique permet de:– décider ce que doit faire un programme dans

des cas complexes– calculer si des programmes sont équivalents, ce

qui permet à un compilateur de remplacer l’un par l’autre.

– dériver la plupart des analyses de programmes– construire des compilateurs fiables

Page 4: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Types de sémantique

• Sémantique opérationnelle : décrit comment un programme peut s’exécuter

• Sémantique dénotationnelle : donne un objet (p.ex. une fonction des données vers les résultats) comme sens d’un programme

• Sémantique axiomatique : donne des règles pour raisonner sur les programmes

Page 5: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Liens

les 3 types de sémantique ont leur utilité:– la sémantique opérationnelle facilite la construction

de compilateurs– la sémantique dénotationnelle donne les concepts

du langage– la sémantique axiomatique est la plus utile pour les

programmeurs

On peut passer de l’une à l’autre en démontrant leur équivalence.

Page 6: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

SémantiqueSémantiqueOpérationnelle Opérationnelle

StructuréeStructurée

Page 7: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Sémantique opérationnelleSémantique opérationnelle = on donne le sens du programme en donnant un ensemble d’exécutions possibles.

+ Avantages :

+ intuition claire+ facilité de construire un interpréteur+ traitement du non-déterminisme

Inconvénients fréquents :

non compositionnel : on ne peut pas donner de sens à certaines parties

peu abstrait : difficile de prouver que 2 programmes sont équivalents.

difficile de construire un compilateur optimisant.

Page 8: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Sémantique Opérationnelle Structurée

• On évite les inconvients habituels en ajoutant:– Compositionalité : On donne des règles

d’inférences qui donnent les exécutions possibles en fonction de celles des composants.

– Abstraction : On ajoute des règles de similarités disant quelles exécutions sont équivalentes.

Page 9: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Système de déduction

Une règle d’inférence est de la forme :

1

0

F F

Fn ... prémisses

conclusion

« Si on a prouvé F1 ... Fn on peut déduire F0 ».

(Ici les Fi décriront des exécutions possibles)

S’il n’y a pas de prémisses, on l’appelle un axiome.

Une règle peut contenir des méta-variables càd des variables qui représentent n’importe quel texte d’une catégorie syntaxique donnée. On l’appelle alors un schéma de règle.

Une preuve est un arbre fini composé de règles d’inférences ; elle a une conclusion à la racine, appelée théorème.

La théorie d’un système de déduction est l’ensemble des théorèmes.

Page 10: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Exemple : un système de déduction pour la syntaxe

• Les formules sont de la forme T : VN (le texte T dérive de VN).

• Chaque règle non contextuelle, par exemple

S if E then S1 else S2

peut se traduire en une règle d’inférence :

E : expression S1 : instruction S2 : instruction

if E then S1 else S2 : instruction

Page 11: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Exemple : déduction syntaxique

5 : constante5 : expression

x : variable

x : expression5 = x : expression

x : variablex : l - expr

3 : constante

3 : expressionx := 3 : instruction ...

5 = x then x := 3 else x := 4 : instructionif

Une preuve dans ce système est un arbre syntaxique :

Les règles d’inférences peuvent aussivérifier des conditions de contexte, p.ex. les types :

1 2E E

X :

: expr(entier) : expr(réel)

E E : expr(réel)

variable(T) E : expr(T)

X := E : instruction

1 1+

Page 12: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Sémantique Opérationnelle Structurée : Définition

Les formules qui nous intéressent:

e1 e2

« dans l’état e1 par un pas d’exécution on arrive dans l’état  e2 »

Page 13: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Etats

Les états doivent contenir l ’information nécessaire à l ’exécution :– la valeur des variables– le point d’exécution dans le programme (ici, on

le représente par la partie du programme restant à exécuter)

– l’état de la pile de récursion– etc.

Page 14: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Exemple : expressions Pascal

• on ne traite d’abord que des expressions sans variables et sans effet de bord, donc la mémoire n’est pas (encore) nécessaire.

Page 15: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Règles

• de congruence : on peut simplifier n ’importe quelle sous-expression en Pascal :

• de calcul : pour chaque opérateur Pascal, on donne des règles pour calculer la valeur du résultat à partir de la valeur des arguments– par exemple :

not true false

not false true

),..,,..,( ),..,,..,(

e e

'

i11

'

i

eeeeee

mmi

i

ff →

Page 16: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Exemple

• 7 + (4 * 5) 7 + 20 27

• le premier pas est la règle de congruence pour le 2ème argument; sa prémisse est justifiée par la règle de calcul pour *.

• le second pas est le calcul de +.

Page 17: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Expressions avec mémoire

Un état a maintenant 2 composantes:– l’expression à évaluer;

– l’état de la mémoire : une fonction Identificateur Valeur

• de congruence : on peut simplifier une sous-expression

• de calcul :

(not true, m) (false, m)

(not false, m) (true, m)

• de recherche de valeur en mémoire: (id, m) (m(id) , m)

)'),,..,,..,(( )),,..,,..,((

)m' ,( ) ,(

e e

'

i11

'

i

mfmf

m

eeeeee

nni

i

Page 18: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Exemple : expression

m) y),*(5 + 5)*((4 ) ),*5( )*4((m) 5,*(4 ) ,*4(

m) (5, m) (x,

→+→→

myxmx

congruence

recherchecongruence

calcul *

( * , )(( * ) (5* ), )

4 54 5

m (4 *20, m) m (20 + (5* y), m)

→+ →y congruence

m) 2),*(5 + (20 ) ),*5( 20(m) 2,*(5 ) ,*5(

m) (2, m) (y,

→+→→

mymy congruence

recherche

congruence

(5* , )( (5* ), )

220 2

m (10, m) m (20 + 10, m)

→+ →

calcul *

congruence

( , )20 10 m (30, m)+ → calcul +

Page 19: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

InstructionsAffectation : 1. (e, m) (e’, m ’)

congruence(id := e, m) (id := e’, m ’)

calcul :=2. (id := n, m) (skip, update (id, n, m))

instruction videConditionnelle : 1. (e, m) (e’, m)

(if e then S1 else S2m) (if e’ then S2 else S2m)

2.1 (if true then S1 else S2, m) (S1, m)

2.2 (if false then S1 else S2, m) (S2, m)abréviation

(if e then S1, m) (if e then S1 else skip, m)

Boucle : (while e do S, m) (if e then begin S ; while e do S end, m)

Séquence : (S1, m) (S’ 1, m’)

(S1 ; S2, m) (S’1 ; S2, m’)

(skip ; S, m) (S, m)

e : exprid : identificateurn : const

Page 20: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Système de transitions

• Les règles de la SOS définissent une machine à états infinis, qu’on appelle aussi un système de transitions

Page 21: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Questions importantes

• 1. Il y a-t-il plusieurs suites de flèches partant d’un même état ? (déterminisme)

• 2. Certaines de ces suites sont-elles infinies ? (terminaison)

• 3. Aboutissent-elles toutes au même état ? (confluence)

• 4. Quelle forme ont les états finals ? Les état finals corrects ?

Déf. : C final = il n’y a pas de C’ : C C’ (forme normale)

• 5. Les flèches préservent-elles les types ?

Page 22: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Equivalence sémantique

• La SOS détaille les calculs, donc peu de programme sont équivalents

• Deux programmes P,Q sont équivalents ssi:– ils mènent aux mêmes états finaux

– ils bouclent dans les mêmes circonstances

Page 23: Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Exempleif e then S1 else S2 if not(e) then S2 else S1

1. Si (e, m) * (true, m’)

alors 1) (if e then S1 else S2, m)

* (if true then S1 else S2, m’)

(S1, m’)

2) (e, m) * (true, m’)

(not(e), m) * (not(true), m’)

* (false, m’)

(if not(e) then S2 else S1, m)

(if false then S2 else S1, m’)

(S1, m’)

2. si (e, m) * (false, m’) : preuve symétrique

congruence

2.1

congruence

calcul not

congruence

2.2.