Principes des lang. de progr.
INE 11
Michel Mauny
Inria-Paris
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 1 / 31
Le lambda-calcul
1Termes du λ-calcul
2Propriétés
3Programmer en λ-calcul
4Stratégies d’évaluation
Stratégies internes/externes
Réduction faible
Stratégie externe gauche, standardisation
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 2 / 31
Le λ-calcul
Système formel basé sur les fonctions
Alonzo Church, 193x
problème de décision – de validité de formules logiques –
fonctions calculables
Alan Turing : machines fonctions calculables
λ-calcul machines de Turing
Utilité
fondement des langages de programmation (bloc, fonction/procédure)
fondement des langages fonctionnels
sémantique dénotationnelle
systèmes de spécification et de preuves de programmes
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 3 / 31
1
Termes
Grammaire Les termes du λ-calcul, aussi appelés λ-termes, sont donnés
par la grammaire suivante :
M,e::= xidentificateurs
|e e applications
|λx.eabstractions (eest le corps
la portée de x)
Lire «λx.e» comme «fun xe»
Syntaxe concrète
l’application «associe à gauche» :
e1e2e3(e1e2)e3
l’abstraction «porte» aussi loin que possible :
λxyz.xzyz λx.(λy.(λz.xzyz))
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 4 / 31
Variables, occurrences
Occurrences de variables
Occurrences liantes : là où on introduit une variable (λ)
Occurrences liées : se rapportant à une occurrence liante
Occurrences libres : pas d’occurrence liante correspondante
freeVars(x) = {x}
freeVars(e1e2) = freeVars(e1)freeVars(e2)
freeVars(λx.e) = freeVars(e)− {x}
Exemple : (les occurrences rouges sont libres)
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 5 / 31
Substitution
La substitution d’un terme Mà une variable xdans le terme e, notée
[M/x]e, est définie comme le terme résultant du remplacement de toutes
les occurrences libres de xpar Mdans e:
[M/x]x=M
[M/x]y=y,pour y6=x
[M/x](e1e2) = ([M/x]e1)([M/x]e2)
[M/x](λx.e) = (λx.e)
[M/x](λy.e) = λy.[M/x]epour x6=yet y6∈ freeVars(M)
[M/x](λy.e) = λz.[M/x]([z/y]e)
pour z6∈ freeVars(e)freeVars(M)
et z6=xet y6=x
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 6 / 31
2
Équivalences, réductions
α-équivalence
le nom des variables liées (les variables muettes) importe peu
on peut les renommer à volonté, mais de façon cohérente
α-équivalence (ou α-conversion)
(α)λx.eλy.[y/x]e,
pour yn’apparaissant ni libre, ni liée dans e
relation d’équivalence
passage au contexte
Les λ-termes sont (presque toujours) considérés modulo
α-équivalence
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 7 / 31
Équivalences, réductions
β-équivalence
passage d’argument à une fonction de paramètre formel x
β-équivalence (ou β-conversion)
(β) (λx.e)M[M/x]e
sens : avancer dans le calcul
sens : factoriser M
La règle importante du λ-calcul
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 8 / 31
Équivalences, réductions
η-équivalence
egalité entre fet x7→ f(x)
η-équivalence (ou η-conversion)
(η)λx.ex e,si x6∈ freeVars(e)
en OCaml :
changer fact en (fun nfact(n))
changer e: () en (fun () e())
pour évaluer eà chaque application
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 9 / 31
3
Notations
Utilisation des conversions (équivalence, réduction)
«candidat à réduction» appelé radical
passage au contexte : réduire des sous-termes quelconques
fermeture transitive : chaînes de conversions
Notation
M=αN
M
N
M
βN
Vocabulaire
terme irréductible / normalisé / en forme normale
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 10 / 31
Questions
Utiliser la règle βpour réduire (calculer)
choisir un (sous-terme) radical
le réduire nouveau terme
recommencer
Questions
comment choisir le prochain radical (stratégie) ?
cela termine-t-il toujours ?
le résultat final dépend-il de ce choix ?
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 11 / 31
Terminaison
Cela termine-t-il toujours ? Non !
la réduction de (λx.xx)(λx.xx)ne termine pas
pas étonnant (expressivité théorique)
Définitions
Normalisation forte
eest dit fortement normalisant
si
toutes les réductions partant de e
sont finies.
Normalisation faible
eest dit faiblement normalisant
si
une réduction finie de emenant à
un terme irréductible.
(λxy.y)((λx.xx)(λx.xx))est faiblement normalisant
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 12 / 31
4
Confluence
Théorème
Si M
βNet M
βP, alors Qtel que N
βQet P
βQ
M
NP
Q
**
**
Corollaire
Les formes normales, quand elles
existent, sont uniques
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 13 / 31
Programmer en λ-calcul
Booléens True λxy.x
False λxy.y
If λabc.a b c
On a : If True B C
βB
If False B C
βC
Paires/Listes Pair λabp.p a b
First λa.aTrue
Rest λa.aFalse
On a : First (Pair A B)
βA
Rest (Pair A B)
βB
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 14 / 31
Programmer en λ-calcul
Liste vide Nil λx.True
Cons Pair
Null λa.a(λxy.False)
On a : Null Nil
True
Null (Cons A B)
False
Nombres Zero λfx.x
One λfx.f x
Two λfx.f(f x)
Three λfx.f(f(f x))
. . .
Succ λnfx.f((n f )x)
Michel Mauny (Inria-Paris) INE 11 pré[email protected] 15 / 31
5
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !