• Aucun résultat trouvé

INE 11

N/A
N/A
Protected

Academic year: 2022

Partager "INE 11"

Copied!
8
0
0

Texte intégral

(1)

Principes des lang. de progr.

INE 11

Michel Mauny

Inria-Paris

prénom.nom@inria.fr

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 1 / 24

Sémantique dénotationnelle

1 Sémantique dénotationnelle directe Domaines

Fonctions sémantiques

Instructions et aspects impératifs

2 Sémantique dénotationnelle à continuations

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 2 / 24

Sémantique

Syntaxe / sémantique notation

sens, dénotation Le sens d’un programme

ce qu’il calcule

l’objet mathématique qu’il représente comment il le calcule

Sur quoi faire reposer le sens d’un programme ? une description en langue naturelle

interprète : le langage d’implémentation de l’interprète

compilateur (traducteur) : langage cible, langage d’implémentation du compilateur

un formalisme mathématique

(2)

Le sens d’un langage doit (devrait) être

complet, cohérent, précis, non ambigu, concis, compréhensible Sémantique formelle

standardisation (non ambigu, précis, concis)

référence pour implémenteurs, contre les implémentations divergences du même langage

implémentation automatique : sémantique exécutable

référence pour programmeurs : savoir «ce que ça fait» sans le tester preuves de correction de programmes : raisonnement mathématique impossible sans sémantique formelle

meilleure compréhension de la conception des langages (distinguer ce qui est compliqué de ce qui ne l’est pas)

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 4 / 24

Sémantique(s)

Sémantique dénotationnelle[C. Strachey, D. Scott, ˜1960]

définir l’objet mathématique représenté par un programme syntaxe→domaines mathématiques

Sémantique axiomatique[T. Hoare, 1969]

définir l’action d’une construction par les propriétés de la mémoire avant et après son exécution

{p}S{q}, préconditions, postconditions Sémantique opérationnelle[G. Plotkin, 1981]

décrire le mécanisme d’évaluation/d’exécution des programmes plus précise que la sémantique dénotationnelle

⇒ présentation de la S.O. dans un des cours suivants

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 5 / 24

PCF

Catégories

c∈Const Constantes, incluant les fonctions primitives x∈Id Identificateurs

e∈Exp Expressions

Expressions e ::= c|x

| e1+e2|e1=e2|ife1 thene2 elsee3

| letx=e1 ine2|let rec x=e1 ine2

| (funx → e)|e1e2

Exemple

letrec fact=funn→ if n≤0 then1else n∗ fact(n−1) in fact(5)

(3)

Domaines

Domainespour les valeurs,etc.: ordres partiels complets (CPO) éléments partiellement indéfinis, voire totalement indéfini (⊥) relation d’ordre partiel «moins défini que»

toute chaîne croissante a une borne sup.

Autorise quelques définitions récursives «osées»

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 7 / 24

Domaines pour PCF

DomaineD

• INT : le domaine des entiers

• BOOL = {true,false}

• D = INT + BOOL + FUN: le domaine des valeurs

• FUN = D→D : les fonctions sur D

Environnements: fonctions associant des valeurs de D à des identificateurs de Id

• ENV = Id→D

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 8 / 24

Fonctions sémantiques

Sémantique des expressions

E : Exp→ENV→D Définition

E[[c]]ρ=dc pour chaquec∈Const E[[x]]ρ=ρ[[x]], pour x∈Id

E[[e1+e2]]ρ=E[[e1]]ρ+DE[[e2]]ρ E[[e1e2]]ρ= (E[[e1]]ρ)(E[[e2]]ρ)

E[[e1=e2]]ρ=true siE[[e1]]ρ=E[[e2]]ρ

=false dans le cas contraire E[[ife1 thene2 elsee3]]ρ=

siE[[e1]]ρ=truealorsE[[e2]]ρsinonE[[e3]]ρ

(4)

Sémantique des expressions(suite)

E[[let x=e1 ine2]]ρ=E[[e2]](ρ⊕[x 7→ E[[e1]]ρ]) E[[let rec f =e1 ine2]]ρ=E[[e2]]ρ0

oùρ0=ρ⊕[f 7→ E[[e1]]ρ0]

E[[funx → e]]ρ=f telle que f(v) =E[[e]](ρ⊕[x7→v])

Récursion: construction récursive de la valeur sémantique

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 10 / 24

PCF avec affectations

Langage enrichi par

des références (locations) correspondant aux variables une mémoire qui fait correspondre des valeurs à des locations Syntaxe

e∈Exp,défini pare ::= . . . |s;e s∈Stm,défini pars ::= x:=e|s1;s2

Domaines sémantiques

D = INT + BOOL + FUN

avec FUN = (D×STORE)→(D×STORE) et STORE = LOC→D

ENV = ID→LOC LOC

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 11 / 24

PCF avec affectations

Fonctions sémantiques

E : Exp→ENV→STORE→(D× STORE) S : Stm→ENV→STORE→STORE Définitions

E[[c]]ρσ= (dc, σ)pour chaquec∈Const

E[[x]]ρσ= (σ(ρ[[x]]), σ), pour x∈Id

E[[e1+e2]]ρσ=

soit(n1, σ1) =E[[e1]]ρσ soit(n2, σ2) =E[[e2]]ρσ1 (n1+n2, σ2)

(5)

PCF avec affectations

Définitions(suite)

E[[e1e2]]ρσ=

soit(f, σ1) =E[[e1]]ρσ soit(v, σ2) =E[[e2]]ρσ1 (f(v), σ2)

E[[e1=e2]]ρσ=

soit(v1, σ1) =E[[e1]]ρσ soit(v2, σ2) =E[[e2]]ρσ1

siv1=v2alors (true,σ2) sinon (false,σ2)

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 13 / 24

PCF avec affectations

Définitions(suite)

E[[ife1 thene2 elsee3]]ρσ= soit(v1, σ1) =E[[e1]]ρσ

ifv1=truethenE[[e2]]ρσ1elseE[[e3]]ρσ1

E[[let x=e1 ine2]]ρσ= soit(v1, σ1) =E[[e1]]ρσ soitl1une nouvelle référence E[[e2]](ρ⊕[x7→l1])(σ1⊕[l17→v1])

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 14 / 24

PCF avec affectations

Définitions(fin)

E[[let rec x=e1 ine2]]ρσ= soitl1une nouvelle référence

soit(v1, σ1) =E[[e1]](ρ⊕[x7→l1])(σ) E[[e2]](ρ⊕[x7→l1])(σ1⊕[l17→v1])

σ(l1)est indéfinie : le calcul dee1ne doit pas utiliserx

E[[funx → e]]ρσ=f telle quef(v, σ0) =

soitlx une nouvelle référence E[[e]](ρ⊕[x 7→lx])(σ0⊕[lx7→v])

(6)

Définitions(fin) E[[s;e]]ρσ=

soitσ0=S[[s]]ρσ E[[e]]ρσ0

S[[x:=e]]ρσ= soitlx =ρ[[x]]

soit(v, σ0) =E[[e]]ρσ σ0⊕[lx 7→v]

S[[s1;s2]]ρσ= soitσ1=S[[s1]]ρσ S[[s2]]ρσ1

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 16 / 24

PCF avec affectations et goto

Modéliser le calcul en identifiant le reste du calcul: la continuation goto:changer le reste du calcul

étiquette : identifier ce point de programme comme continuation potentielle

C’est quoi, le calcul ?

c’est transformer le «résultat» courant en résultat final l’état courant de la mémoire

la valeur courante Continuation

continuation d’instructions : Cc = STORE→STORE continuation d’expression :

Ec = (D×STORE)→(D×STORE)

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 17 / 24

PCF avec affectations et goto

Domaines et fonctions sémantiques

E : Exp→ENV→STORE→Ec→(D×STORE) S : Stm→ENV→STORE→Cc→STORE

Valeurs fonctionnellesreçoivent une continuation

FUN = (D×STORE)→Ec→(D×STORE)

Les labels sont de simples identificateurs dont les valeurs (dans la mémoire) sont des continuations d’instructions. On aura donc :

D = INT + BOOL + FUN + Cc

(7)

PCF avec affectations et goto

Syntaxe

s∈Stm ets::=x:=e|s1;s2|lab:s |gotolab où

lab∈Id

dans “lab:s”,sest la portée delab, et peut donc contenir “gotolab”.

Définition

E[[c]]ρσk=k (dc, σ)pourc∈Const

E[[x]]ρσk=k (σ(ρ[[x]]), σ), pourx∈Id

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 19 / 24

PCF avec affectations et goto

Définition(suite)

E[[e1+e2]]ρσk = E[[e1]]ρσk1

oùk1 est définie park1(n1, σ1) =E[[e2]]ρσ1(k2 n1) oùk2 n1(n2, σ2) =k(n1+n2, σ2)

E[[e1e2]]ρσk = E[[e1]]ρσk1

oùk1(v1, σ1) =E[[e2]]ρσ1(k2v1) oùk2 v1 (v2, σ2) =v1(v2, σ2)k

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 20 / 24

PCF avec affectations et goto

Définition(suite)

E[[e1=e2]]ρσk =... laissé en exercice

E[[ife1 thene2 elsee3]]ρσk =... laissé en exercice E[[let x=e1 ine2]]ρσk =... laissé en exercice E[[let rec x=e1 ine2]]ρσk=... laissé en exercice

E[[funx → e]]ρσk = k(f, σ)

oùf est définie par

f (v, σ0)k0=E[[e]](ρ⊕[x7→lx])(σ0⊕[lx 7→v])k0 oùlx est une nouvelle référence

(8)

Définition(suite)

E[[s;e]]ρσk=

soitk0 définie park00) =E[[e]]ρσ0k S[[s]]ρσk0

S[[lab:s]]ρσk=

soitl une nouvelle référence soitk0 définie récursivement par

k00) =S[[s]](ρ⊕[lab7→l])(σ0⊕[l7→k0])k k0σ

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 22 / 24

PCF avec affectations et goto

Définition(fin) S[[x:=e]]ρσk=

soitk0 définie park0(v0, σ0) =k(σ0⊕[ρ[[x]]7→v0]) E[[e]]ρσk0

S[[s1;s2]]ρσk = S[[s1]]ρσk0

oùk0est définie park00) =S[[s2]]ρσ0k

S[[goto lab]]ρσk= k0σ

oùk0=σ(ρ[[lab]])

Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 23 / 24

Conclusion

Vision mathématique Ignore le calcul

Styles fonctionnels fonctions sémantiques continuations

À mettre en œuvre dans un langage fonctionnel de programmation

Références

Documents relatifs

où <condition> représente toute expression logique construite avec des constantes et des variables de V et <Bloc d’instructions> est le bloc d’instructions qui est

La propriété P est bien un invariant de boucle, elle est donc vraie au point 4 (juste à la sortie de la boucle). Par conséquent la fonction

découpage du programme en morceaux compilables indépendamment pour rendre les gros programmes compilables. donner de la structure

Comment produire un analyseur à partir d’une spécification traduction d’expressions rationnelles en automates finis non-déterministes.

Générateur d’analyseurs ascendants pour OCaml similaire à Yacc (pour C, mais aussi Java, etc) grammaires LALR(1) : LR(1) + compaction de tables grammaire + actions dans un

l'UNESCO a déclaré le 14 janvier de cette année comme. «Journée mondiale de

Le raisonnement s’exprime par le langage naturel, mais le langage naturel mélange la forme et le contenu et possède de l’ambiguïté, par conséquent le raisonnement exprimé par

Lascar, J-L Krivine : Logique mathématique 1, Calcul propositionnel, algébre de Boole, calcul des prédicats, Paris, Dunod 2005.