mpri sémantique des langages de programmation …kesner/enseignement/master1/semantique/... ·...

23
xs(x) ̸=0

Upload: buixuyen

Post on 14-Sep-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Sémantique des langages de programmation

Master 1 - LP - MPRI

Delia Kesner

PPS, Université Paris-Diderot

Email : [email protected]

URL : www.pps.univ-paris-diderot.fr/~kesner

Informations générales

� Partiel Obligatoire : mars

� Note module : (Partiel + Examen)/ 2

� 2eme session : Examen

1

Motivations

Functional

Programming

Data Base

languagesConcurrent

Languages

Imperative

Programming

Proof

Assistants

Rewriting

ProgrammingObject-Oriented

Programming

Programminglanguages

2

Syntax vs Semantics

Syntax :

∀x s(x) ̸= 0

Semantics :

�Every positive natural number is di�erent from zero�

3

Page 2: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Semantics of programming languages

The meaning of programming languages.

Di�erent techniques :

Operational semantics

Denotational semantics

Axiomatic semantics

4

Operational semantics

The meaning of a program is the sequence of states of the

machine executing the program.

program = transition system

Example :

P1: a=1; b=0; P2: a=1; P3: b=0; a=1;

b=0;

P1 is equivalent to P2, but P1 is not equivalent to P3.

/ non equivalent programs may have the same result.

This notion can be re�ned in order to observe just a piece of

memory of the machine.

5

Denotational semantics

program = mathematical function

Argument of this function : the state of the memory before execution

Result of this function : the state of the memory after execution

Example :

P1:a=1; b=0; P2:a=1; P3:b=0; a=1; P4:a=1; b=1;

b=0;

P1, P2 and P3 are equivalent, but they are not equivalent to P4.

6

Axiomatic semantics

program = transformation of logical properties

This can be written for example in Hoare logic as

{P}Prog{Q}

Thus for example,

{vrai} a = 1; b = 0; {a ≥ 0 ∧ b ≥ 0}{vrai} b = 0; a = 1; {a ≥ 0 ∧ b ≥ 0}{vrai} a = 1; b = 1; {a ≥ 0 ∧ b ≥ 0}

are all equivalent.

7

Page 3: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Relation between di�erent semantics

Two syntactic equivalent programs are operational equivalent.

Two operational equivalent programs are denotational equivalent.

Two denotational equivalent programs are axiomatic equivalent.

The converse implications are in general false.

8

Operational Semantics

program = transition system

Rewriting systems are a natural tool to model transitions between

objects.

9

Example I : String rewriting

Rewriting system :

vert → orange

orange → rouge

rouge → vert

Reduction sequence :

vert → orange → rouge → vert → orange → . . .

10

Example II : String rewriting

Rewriting system :

◦ • → • ◦• • → • •• ◦ → ◦ •

Reduction Sequence :

◦ • • ◦ • • ◦ • •↓∗

• • • ◦ ◦ ◦ • • •

11

Page 4: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Example III : Term rewriting

Rewriting system for Peano arithmetic :

0 + y → y

s(x) + y → s(x + y)

0 ∗ y → 0

s(x) ∗ y → (x ∗ y) + y

Reduction sequence :

12

�2 ∗ 3� = s(s(0)) ∗ s(s(s(0))) →s(0) ∗ s(s(s(0))) + s(s(s(0))) →0 ∗ s(s(s(0))) + s(s(s(0))) + s(s(s(0))) →0 + s(s(s(0))) + s(s(s(0))) →s(s(s(0))) + s(s(s(0))) →s(s(s(0)) + s(s(s(0)))) →s(s(s(0) + s(s(s(0))))) →s(s(s(0 + s(s(s(0)))))) →s(s(s(s(s(s(0)))))) = �6�

13

Example IV : Equational Programming

Rewriting system :

nil[a/y] → nil

cons(a, x)[a/y] → cons(y, x[a/y])

cons(b, x)[a/y] → cons(b, x[a/y])

Reduction sequence :

cons(a, cons(b, cons(a, cons(b, nil))))[a/c][b/d] →∗

cons(c, cons(d, cons(c, cons(d, nil))))

14

Example V : Logical reasoning

Rewriting system :

p ⊃ q → ¬p ∨ q

¬(p ∧ q) → ¬p ∨ ¬q

¬(p ∨ q) → ¬p ∧ ¬q

¬¬p → p

Reduction sequence :

15

Page 5: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

¬(¬(¬p ⊃ q) ⊃ r) →¬(¬(¬¬p ∨ q) ⊃ r) →¬(¬(p ∨ q) ⊃ r) →¬((¬p ∧ ¬q) ⊃ r) →¬(¬(¬p ∧ ¬q) ∨ r) →¬((¬¬p ∨ ¬¬q) ∨ r) →¬((p ∨ ¬¬q) ∨ r) →¬((p ∨ q) ∨ r) →¬(p ∨ q) ∧ ¬r →(¬p ∧ ¬q) ∧ ¬r

16

Example VI : Functional Programming

The λ-calculus [Church]

(β) (λx.M)N → M{x/N}(η) λx.M x → M

(SP ) ⟨π1(M), π2(M)⟩ → M

17

Example VII : Object-Oriented Programming

The ς-calculus [Abadi & Cardelli]

An objet O is a collection of methods ⟨li ≡ ς selfi.Bi⟩i∈1...n.

Method invocation is given by the rewriting rules :

O.lj → Bj{selfj/O}

18

Example VIII : Mathematical reasoning

∃α.∀β.X → ∀β.∃α.X

T ∈ {α : A | P} → T ∈ A ∧ P{α/T}

19

Page 6: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Example IX : Pattern Matching

case(c1(L), λx1.M1, . . . , λxn.Mn) → M1{x1/L}...

...

case(cn(L), λx1.M1, . . . , λxn.Mn) → Mn{xn/L}

20

Example X : OCAML Programs

let rec length l = match l with

[] -> 0

| h::t -> length t + 1 ;;

let rec append l1 l2 = match l1 with

[] -> l2

| h::t -> h::append t l2;;

let rec map l f = match l with

[] -> []

| h::t -> (f h):: map t f ;;

21

Example XI : Concurrent Programming

The π-calculus [Milner & Parrow & Walker]

α⟨t⟩.P | α⟨x⟩.Q → P | Q{x/t}

22

Example XII :XSLT

A language to transform (by rewriting) XML documents.

See http://www.w3.org/Style/XSL/

23

Page 7: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Example XIV : development of plant structures

See http://algorithmicbotany.org/ for more details.

24

Formal de�nition of rewriting

Given a set of objects A, (abstract) rewriting is a relation

→ ⊆ A × A.

String rewriting : A is a set of words.

First-order rewriting : A is a set of algebraic terms.

Higher-order rewriting : A is a set of higher-order terms.

Graph rewriting : A is a set of graphs.

25

Main components of the rewriting model

� Objects

� Substitution

� Matching

26

Typical questions concerning a rewriting model

Consider a rewriting sequence

t1 →R t2 →R t3 →R . . .

� Is this computation terminating ? (always ? sometimes ?)

� Is there a result (e.g. canonical form) ?

� Is there uniqueness of results ?

27

Page 8: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

(Part of the) History

(Thue-1914) String rewrite systems

(Church-1936) Lambda calculus

(Gorn-1967) Term rewrite systems

(Klop-1980) Combinatory reduction systems

28

Plan du cours

� Introduction

� Notions mathématiques

� Relations bien fondées : dé�nitions et exemples

� Principe d'induction bien fondée

� Composition de relations bien fondées : lexicographique,

produit, multi-ensemble, etc

� Notions de réécriture abstraite

� Notions de Church-Rosser, con�uence, con�uence faible,

con�uence forte, normalisation faible et normalisation forte

� Quelques théorèmes fondamentaux

� Calculs fonctionnels

� Introduction au lambda calcul

29

� Lambda termes, substitutions, alpha-conversion

� Réduction beta et égalité beta

� Con�uence du lambda calcul (réductions parallèles)

� Lambda calcul typé : type, jugement de type, dérivation de

typage

� Propriétés : Unicité, décidabilité et préservation du typage,

normalisation forte du lambda calcul simplement typé

(méthode de réductibilité et preuve arithmétique)

� Sémantique opérationnelle

� Sémantique opérationnelle structurée (petits pas)

� Sémantique opérationnelle naturelle (grands pas)

� Exemple évaluation des nombres binaires

� Sémantique du lambda calcul : appel par nom et par valeur,

à petits pas et grands pas

30

� Propriétés : déterminisme, correspondance entre petits pas

et grands pas, héritage de la préservation de types et de la

normalisation forte

� Calculs algébriques

� Termes et Sigma algèbres

� Homomorphismes et substitutions

� Théorème de Birkho�

� Réécriture

� Égalité engendrée par une relation de réécriture

� Quelques techniques pour montrer la con�uence

� Quelques techniques pour montrer la terminaison

� Machines à environnement pour l'appel par nom

� Évaluateur simple

� Machine de Krivine

31

Page 9: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

� Sémantique dénotationnelle

� L'approche dénotationnelle de la sémantique

� Sémantique d'un langage fonctionnel simple

� Modéliser la non terminaison : les ordres partiels complets

(CPO)

32

Bibliographie

� Transparents et tableau

(consulter www.pps.jussieu.fr/~kesner régulièrement)

33

� Pour les calculs algébriques :

Term Rewriting and All That. 1998.

Franz Baader, Tobias Nipkow. Cambridge University Press

34

� Pour les calculs fonctionnels :

Lambda-calcul, types et modèles. 1997.

Jean-Louis Krivine. Masson

35

Page 10: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

The lambda calculus : its Syntax and Semantics. 1984. Henk

Barendregt. North-Holland

36

Notions mathématiques pour la sémantique

Notions mathématiques de base

Ensembles

Dé�nition : Soient deux ensembles A, B inclus dans U

Univers

.

L'intersection de A et B est A ∩ B = {e ∈ U | e ∈ A et e ∈ B}L'union de A et B est A ∪ B = {e ∈ U | e ∈ A ou e ∈ B}La di�érence de A et B est A \ B = {e ∈ U | e ∈ A et e /∈ B}Le complémentaire de A est A = U \ A = {e ∈ U | e /∈ A}P(A) est l'ensemble de toutes les parties de l'ensemble A.

(Lois de de Morgan) A ∪ B = A ∩ B A ∩ B = A ∪ B

Dé�nition : Le produit cartésien de n ensembles A1 . . . An est

l'ensemble de n-uplets A1 × . . . × An = {(a1, . . . , an) | ai ∈ Ai}.Si Ai = A pour tout i, on note An le produit A1 × . . . × An.

39

Page 11: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Relations

Dé�nition : Une relation n-aire sur A1 . . .An est un

sous-ensemble de A1 × . . . × An.

Dé�nition : Soit R ⊆ A × A une relation binaire.

� R est ré�exive ssi pour tout x ∈ A, (x, x) ∈ R.

R est irré�exive ssi pour tout x ∈ A, (x, x) /∈ R.

� R est symétrique si pour tout x, y ∈ A, (x, y) ∈ R implique

(y, x) ∈ R.

R est anti-symétrique si pour tout x, y ∈ A, (x, y) ∈ R et

(y, x) ∈ R implique x = y.

� R est transitive si pour tout x, y, z ∈ A, (x, y) ∈ R et

(y, z) ∈ R implique (x, z) ∈ R.

40

Notations

� (x, y) ∈ R peut s'écrire aussi x R y.

� On peut utiliser un symbole à la place de R :

Ainsi par exemple, si ≤ est une relation, alors

(x, y) ∈ ≤ s'écrit x ≤ y.

� On écrit y ≥ x lorsque x ≤ y.

41

Exemples

Example : La relation ≥ sur les entiers naturels est ré�exive, la

relation > sur les entiers naturels est irré�exive.

Example : La relation = sur les ensembles est symétrique, la

relation ≥ sur les entiers naturels est anti-symétrique.

Example : La relation ⊇ sur les ensembles est transitive.

42

Équivalence et Congruence

Dé�nition :

� R est une équivalence si elle est ré�exive, symétrique et

transitive.

Exercise : Montrer que ∼= {(x, y) | 3 est diviseur de x − y}est une équivalence.

� R est une congruence p.r. à f si R est une équivalence

compatible avec f , c'est à dire, si a1 R b1 . . . an R bn implique

f(a1, . . . , an) R f(b1 . . . bn).

Exercise : Montrer que ∼= {(x, y) | 3 est diviseur de x − y}est une congruence par rapport à + et à ∗.

43

Page 12: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Classes d'équivalence

La classe d'équivalence de a ∈ A par rapport à une équivalence R

est l'ensemble [a]R = {b ∈ A | aRb}.

44

Composition de relations

Dé�nition : Si R ⊆ A × B et S ⊆ B × C, alors la composition de

S avec R est une relation dans A × C t.q.

S ◦ R = {(x, y) ∈ A × C | ∃z ∈ B (x, z) ∈ R et (z, y) ∈ S}.

Dé�nition : Soit R ⊆ A × A. On note Rn la n-composition de

R avec elle même par induction comme suit :

R0 = {(a, a) | a ∈ A}Rn+1 = Rn ◦ R = R ◦ Rn = R ◦ . . . ◦ R︸ ︷︷ ︸

n+1 fois

45

Example : Soit A = {Paris, Lyon, Toulouse} et

R = {(Paris, Lyon), (Paris, Toulouse),

(Lyon, Paris), (Toulouse, Paris)},R2 = {(Paris, Paris), (Lyon, Lyon), (Toulouse, Toulouse),

(Lyon, Toulouse), (Toulouse, Lyon)},Calculer R3.

46

Les clôtures

Dé�nition : La clôture transitive d'une relation R est donnée par

R+ =

∞∪

n=1

Rn

La clôture ré�exive et transitive d'une relation R est donnée par

R∗ =

∞∪

n=0

Rn = R+ ∪ R0

Example : Dans l'exemple d'avant, R∗ = A × A.

47

Page 13: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Fonctions

Dé�nition : Une fonction f entre deux ensembles A et B, notéef : A → B, est une relation sur A × B t.q. pour tout x, y, z si

(x, y) ∈ f et (x, z) ∈ f , alors y = z.

Notation : On écrit f(x) pour dénoter l'unique élément y t.q.

(x, y) ∈ f et f(C) = {y ∈ B | ∃x ∈ C, f(x) = y}.On note idA la fonction identité sur A donnée par idA(x) = x.

Dé�nition : Soit f : A → B une fonction.

� Le domaine de f est Dom(f) = {x ∈ A | ∃y ∈ B, (x, y) ∈ f}� L'image de f est Im(f) = {y ∈ B | ∃x ∈ A, (x, y) ∈ f}� L'inverse

pas toujours une fonction

de f est f−1 = {(y, x) ∈ B × A | (x, y) ∈ f}

48

Composition de fonctions

Dé�nition :

� La composition de f : B → C avec g : A → B est la fonction

f ◦ g : A → C, où f ◦ g(x) = f(g(x)).

Example : f(x) = x2, g(x) = x + 4, f ◦ g(x) = (x + 4)2,

g ◦ f(x) = x2 + 4.

� La n-composition de f avec elle-même , notée fn, est dé�ni par

récurrence sur n :

� Si n = 0, alors f0 = id

� Si n > 0, alors fn = f ◦ fn−1

Example : f(x) = x + 2, f0(x) = x, f1(x) = x + 2,

f2(x) = x + 4, f3(x) = x + 6, . . ., fn(x) = x + 2.n.

49

Exercise : Soit n > 0. Montrer

Par induction, voir

la Section suivante

que fn = fn−1 ◦ f .

50

Propriétés des fonctions

Dé�nition : Une fonction f : A → B est injective ssi pour tout

x, y ∈ A, f(x) = f(y) implique x = y.

Example : f(x) = x + 2 sur les entiers est injective.

f(x) = x \ {3} sur les ensembles d'entiers n'est pas injective. Ainsi

f({2, 3, 4}) = f({2, 4}) mais {2, 3, 4} ̸= {2, 4}.

Dé�nition : Une fonction f : A → B est surjective ssi pour tout

y ∈ B il existe x ∈ A tel que f(x) = y.

Example : f(x) = x div 2 sur les entiers naturels est surjective.

f(x) = x + 2 sur les entiers naturels n'est pas surjective.

51

Page 14: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Dé�nition : Une fonction est bijective ssi elle est injective et

surjective.

Example : Soit A l'ensemble de mots de longueur 3 contenant

uniquement 0 et 1. Soit B = {0 . . . 7}. Soitf(”b2b1b0”) = b2.2

2 + b1.21 + b0.20. Cette fonction est injective et

surjective, donc bijective.

52

Fonction caractéristique

Dé�nition : Soit A un ensemble inclus dans un univers U . La

fonction caractéristique de A dans U est la fonction

χ : U → {0, 1} telle que

∀a ∈ U .χ(a) = 1 ssi a ∈ A

53

Préordres, ordres

Dé�nition :� Un préordre est une relation ré�exive et transitive.

Example :

R = {(2, 2), (3, 3), (4, 4), (3, 2), (2, 3), (2, 4), (3, 4)}.� Un ordre ou ordre partiel est une relation ré�exive,

anti-symétrique et transitive.

Notation : ≥

Example : R n'est pas un ordre car (3, 2), (2, 3) mais 2 ̸= 3.

S = {(2, 2), (3, 3), (4, 4), (2, 3), (2, 4), (3, 4)} est un ordre.

Dé�nition : Un ordre strict est une relation irré�exive et

transitive.

54

Notation : >

Example : > sur les entiers, ⊃ sur les ensembles.

Dé�nition : Un ordre strict est bien fondé ssi il n'existe aucune

chaîne in�nie (i.e., de la forme a0 > a1 > a2 > . . .).

Example : > sur les entiers naturels est bien fondé. > sur tous

les entiers n'est pas bien fondé. ⊃ sur les ensembles est bien fondé.

55

Page 15: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Majorants/minorants et bornes supérieures/inférieures

Soit E un ensemble muni d'un ordre ≤. Soit A ⊆ E .Dé�nition :

Un majorant de A est un x ∈ E t.q. pour tout y ∈ A, y ≤ x.

Un minorant de A est un x ∈ E t.q. pour tout y ∈ A, x ≤ y.

La borne supérieure de A, notée sup(A), est le plus petit des

majorants de A (si z est un majorant de A alors sup(A) ≤ z).

La borne inférieure de A, notée inf(A), est le plus grand des

minorants de A (si z est un minorant de A alors z ≤ inf(A)).

Example : Soit A = {1, . . . , 10}. Tous les entiers dans {10, . . .}sont des majorants de A et 10 est la borne supérieure.

56

Example : Si a ≤ c, a ≤ d, b ≤ c, b ≤ d, alors a et b sont des

minorants, mais comme ils sont incomparables il n'y a pas de

borne inférieure.

Example : Si Ei sont des ensembles dans P(E), alors le sup est∪i Ei et le inf

∩i Ei.

57

Fonctions monotones et points �xes

Dé�nition : Soit f : A → B une fonction et soient ≤A, ≤B deux

ordres sur A et B respectivement.

La fonction f est monotone ssi x ≤A y implique f(x) ≤B f(y).

Example : f(x) = x + 3.

Dé�nition : Soit f : A → A une fonction.

Un point �xe de f est un élément x ∈ A t.q. f(x) = x.

Example : Soit f(x) = x2. Alors x = 1 est un point �xe.

Le plus petit point �xe de f est inf({x ∈ A | f(x) = x}).

Le plus grand point �xe de f est sup({x ∈ A | f(x) = x}).

58

Dé�nitions Inductives

Page 16: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Dé�nitions inductives en informatique

� Syntaxe concrete

� Syntaxe abstraite

� Règles de typage

� Règles d'évaluation

60

Le principe

Une dé�nition inductive est caracterisée par :

� Une ou plusieures assertions

� Un ensemble de règles d'inférence pour dériver ces assertions

Example :

� Assertion : "X est naturel" ou "X nat"

� Règles d'inférence :

R1 : 0 est naturel

R2 : Si n est naturel, alors succ(n) est naturel.

61

Notation

Les règles d'inférence sont notées

Hypothèse1 . . . Hypothèsen(Nom de la règle)

Conclusion

� Conclusion est une assertion

� Hypothèse1 . . . Hypothèsen sont des assertions

� En général n ≥ 0. Si n = 0 la règle est un axiome

62

Exemple (règle unaire)

Les entiers naturels

(Nat0)0 est naturel

n est naturel(Nat+)

succ(n) est naturel

63

Page 17: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Exemple (règle binaire)

Les arbres binaires

(Abin-nil)vide est un arbre binaire

A1 est un arbre binaire A2 est un arbre binaire(Abin-ind)

node(A1, A2) est un arbre binaire

64

Exemple

Les mots sur un alphabet A

ϵ mot

a ∈ A n mot

a.n mot

65

Exemple (plusieurs axiomes, règles unaires et binaires)

Les expressions de la logique propositionnelle sur l'alphabet A

p ∈ A

p expr

A1 expr A2 expr

A1 ∨ A2 expr

A1 expr A2 expr

A1 ∧ A2 expr

A1 expr A2 expr

A1 ⊃ A2 expr

A expr

¬A expr

66

Exemple (plusieures assertions)

Les forêts de type T

avide ∈ arbre T fvide ∈ foret T

t ∈ T f ∈ foret T

node(t, f) ∈ arbre T

A ∈ arbre T f ∈ foret T

add(A, f) ∈ foret T

67

Page 18: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Dérivation d'une assertion

Une assertion A est dérivable ssi

� A est un axiome

A

� ou il y a une règle de la forme

A1 An

A

telle que A1, . . . , An sont dérivables

68

Exercise :

1. Montrer que succ(succ(succ(0))) nat est dérivable.

2. Donner le terme qui dénote la forêt suivante et montrer

comment la construire avec les règles précédentes :

avide 3 6

/ \ / | \

44 6 6 7 8

| | / | \

avide avide avide 5 avide

/ \

avide avide

69

Ensemble inductif

Un ensemble inductif est le plus petit ensemble engendré par un

système de règles d'inférence.

70

Preuves par Induction

Page 19: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Preuves par induction

� Induction sur les entiers

� Induction mathématique

� Induction complète

� Équivalence

� Induction bien fondée

� Induction structurelle

� Induction sur un ensemble inductif

72

Induction sur les entiers I (induction mathématique)

Theorem : Soit P une propriété sur les entiers. Supposons

(CB) P (0),

(CI) ∀n ∈ IN.P (n) ⊃ P (n + 1),

alors ∀n ∈ IN.P (n)

73

Exemples

1)

n∑

i=1

i =n ∗ (n + 1)

22) n2 =

n∑

i=1

(2i − 1)

Mais comment prouver

1. �Tout entier est décomposable en produit de nombres

premiers�

2. �Si n est divisible par 3, alors fib(n) est pair, sinon fib(n) est

impair�.

74

Induction sur les entiers II (induction complète)

Theorem : Soit P une propriété sur les entiers. Supposons

(CB) P (0),

(CI) ((∀k ∈ IN.(k < n ⊃ P (k))) ⊃ P (n)),

alors ∀n ∈ IN.P (n)

75

Page 20: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Équivalence des deux principes

Malgré l'apparente supériorité du deuxième principe, on prouve

Theorem : Induction mathématique et complète sont

équivalentes.

76

Théorème fondamental du cours

Theorem : Tous le monde est d'accord avec le professeur.

Proof. On montre, par induction sur le nombre de personnes dans

l'amphi, que tout groupe de n personnes contenant le professeur

est d'accord avec lui.

Cas de base : il y a seulement le professeur, trivial.

Cas inductif : on suppose l'enoncé vrai pour tout groupe de n

personnes, et on le prouve pour tout groupe de n + 1.

Numérotons de 1 à n + 1 les personnes en question, de façon que

le professeur soit le numéro n, et considérons le groupe A des

premières n et le groupe B des dernières n personnes.

Les deux groupes contiennent le professeur et sont de taille

77

n < n + 1, donc on peut appliquer l'hypothèse d'induction et en

déduire qu'ils sont tous d'accord avec le professeur (qui est dans

les deux), ce qui nous permet de conclure.

Corollary : Le professeur a toujours raison.

vrai ou faux ?

78

Principe d'induction bien fondée

Un ensemble A, un ordre strict > et une propriété P sur APrincipe d'induction :

Si

(CB) Pour tout élément minimal y ∈ A.P (y).

(CI) ((∀z ∈ A.(z < x ⊃ P (z))) ⊃ P (x))

�le fait que P (z) soit véri�ée pour tout élément z<x implique

P (x)�

alors

∀x ∈ A.P (x)

79

Page 21: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Ce principe est-il toujours bien dé�ni ?

Soit > un ordre strict.

Theorem :

Si > est bien fondé, alors le principe d'induction est correct.

Theorem :

Si le principe d'induction est correct, alors > est bien fondé.

Corollary : Le principe d'induction est correct pour les ensembles

inductifs.

Corollary : Le principe d'induction structurelle est correct.

80

Exemples

� Les mots :

P (m) est la propriété :

concat(concat(m, v1), v2), = concat(m, concat(v1, v2))

� Les arbres binaires :

P (a) est la propriété : feuilles(a) = noeuds_internes(a) + 1

81

Induction sur Quelques sur d'ordres bien fondés

� Ordre lexicographique

� Ordre multi-ensemble

� Combinaisons

82

Ordres lexicographiques

Soit >Ai un ordre strict sur l'ensemble Ai.

Ordre lexicographique sur le produit de 2 ensembles :

(x, y) >lex (x′, y′) ssi (x >A1 x′) ou (x = x′ et y >A2 y′)

Example :

(4, ”abc”) >lex (3, ”abc”) >lex (2, ”abcde”) >lex (2, ”bcde”) >lex

(2, ”e”) >lex (1, ”e”) >lex (0, ϵ)

83

Page 22: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Ordre lexicographique sur le produit de n ensembles

Si chaque >Ai est un ordre strict sur l'ensemble Ai, alors >lex est

un ordre strict qui permet de comparer deux n-uplets de la manière

suivante :

(x1, . . . , xn)>lex(x′1, . . . , x

′n) ssi ∃1 ≤ j ≤ n

(xj >Aj x′j and ∀1 ≤ i < j xi = x′

i)

Theorem : Si chaque >Ai est un ordre strict bien fondé sur Ai,

alors l'ordre lexicographique >lex sur le produit de A1 × . . . × An

est un ordre strict bien fondé sur A1 × . . . × An.

Avertissement : >lex n'est pas l'ordre du dictionaire ! !

84

Exemple : la fonction d'Ackerman

Montrer par induction que la fonction suivante termine.

Ackerman(0,n) = n+1

Ackerman(m+1,0) = Ackerman(m,1)

Ackerman(m+1,n+1) = Ackerman(m,Ackerman(m+1,n))

85

Les multi-ensembles

Dé�nition : Soit A un ensemble. Un multi-ensemble de base Aest une fonction M : A → IN. Le multi-ensemble M est �ni si

M(x) > 0 seulement pour un nombre �ni d'éléments de A.

Notation : {{a, a, b}}.

86

Ordres multi-ensembles

Dé�nition : M >mul N ssi N s'obtient à partir de M en

appliquant la règle suivante un nombre �ni de fois : enlever un

élément x de M et le remplacer par un nombre �ni d'éléments

plus petits que x (par rapport à l'ordre >).

Notation :

{{5, 3, 1, 1}}

Example :

{{5, 3, 1, 1}} >mul {{4, 3, 3, 1}}

Theorem : Si >A est un ordre strict bien fondé sur A, alors >mul

est un ordre strict bien fondé sur les multi-ensembles de base A.

87

Page 23: MPRI Sémantique des langages de programmation …kesner/enseignement/master1/semantique/... · Sémantique des langages de programmation Master 1 - LP - MPRI Delia Kesner PPS, Université

Exemple

Un homme possède une somme d'argent en euros. Chaque jour il

procède de la façon suivante :

� soit il jette une pièce de monnaie dans une fontaine,

� ou bien il change l'un de ses billets à la banque par un nombre

arbitraire de pièces de monnaie de valeur quelconque.

Montrer que ce processus termine, c'est à dire, que dans un temps

�ni l'homme est ruiné.

88