1 TDs de λ-calcul 2 Grammaire 3 Règles de déparenthésage

1 TDs de λ-calcul
Je recommande en lecture parallèle du TD, le polycopié de cours sur le λ-calcul.
2 Grammaire
N={S}
X={λ ,,}{variales }{constantes }
atomes
S xx
(atomes)
S (S S)application
S (λxS) abstraction x
(variables)
variables : x,y,z,a,b,c …
constantes : S,K,I,...
λ-termes : A,B, … M,N,P,... X,Y,Z
3 Règles de déparenthésage
(1) l'application associe à gauche
X Y Z = ( X Y ) Z
X ( Y Z )
(2) l'abstraction associe à droite
λx λy Z = λx ( λy Z )
(3) application prioritaire sur l'abstraction
λx Y Z = λx ( Y Z )
( λx Y ) Z
(4) suppression des parenthèses externes
Remarque (3) la portée (ou champ) d'une abstraction s'étend
jusqu'à la fin de l'expression en l'absence de parenthèses
jusqu'à la parenthèse fermant l'expression contenant le λ sinon
exemples de portées :
λx λy ((λz z) x) y x λx x u λy y x (λz z)) x y
4 Variables libres et liées
Une occurrence x est liée dans un terme si elle est dans le champ de λx. sinon elle dite libre
Liée par le λy le plus immédiatement à gauche
Libre en vert
Variable libre : au moins 1 occurrence libre de x, y, z
Variable liée : au moins une occurrence de liée : x, y
5 exercice 1
---- application associe à gauche
---- abstraction associe à droite
---- application prioritaire sur abstraction
---- parenthèse externe
5.1 Question 1
a) ( λx ( x (λy ( y x ) ) ) ) b) ( (λx x) (λy ( y x ) ) )
c) ( λx ( ( x (λy y) ) x ) )d) ( ( (λx x) (λy y) ) x )
e) ( λx ( x ((λy y) x ) ) )f) ( (λx x) ((λy y) x ) )
g) ( λx ( x ( λy y)) ) x )h) ( λx ( λy ( λz ((x y) z) ) ) )
5.2 Question 2
h-
( ( (λx (λy (y x))) (λx x) ) ( λx (x x)) )
( (λx (λy (y x))) (λx x) ) ( λx (x x))
( (λx (λy y x)) (λx x) ) ( λx x x )
( (λx λy y x ) (λx x) ) ( λx x x )
(λx λy y x ) (λx x) ( λx x x )
N.B : dès qu'une parenthèse limite la porté d'un λ alors on ne peut pas l'enlever
y (λy λx λy y x) x z
occurrence
liée
occurrence
libre
i-
( λx ( ( λy (x y)) (λy (y x)) ) )
λx ( ( λy (x y)) (λy (y x)) )
λx ( ( λy x y ) (λy y x ) )
λx ( λy x y ) ( λy y x )
6 Substitution
[ N/x ] M
substituer les termes N aux occurrences libres de x dans M
variable : [N/x] x = N
[N/x] y = y si
xy
application : [N/x] (M P) = ( [N/x] M ) ( [N/x] P )
abstraction : [N/x] (λx M) = λx M puisqu'il n'y a pas d'occurrences libres de x dans λx M
[N/x] (λy M) = λy( [N/x] M ) si x ≠ y et y non libre dans N:
soit y n'apparait pas dans N
soit toutes les occurrences de y dans N sont liées
N.B : Si y est libre dans N, on ne peut pas faire directement la substitution [N/x] (λy M)
[ y z /x ] ( λy x )
λ y ( [ y z / x ] x ) = λy y z
Capture de la variable y !
Elle n'est plus libre alors qu'elle le devrait.
7 contractions
Introduction :
j'ai une expression : 2 + 3 . Si je la calcul je réduit en 5. Il y a une différence syntaxique entre : 5 et 2 + 3
mais égalité sémantique (sens). En λ-calcul on peut réduire des expressions ainsi tout en conservant le sens
7.1 α-contraction : renommage des variables liées
L' α-contraction est noté
α
c'est un renommage des variables liées.
α: λx M
α
λy ( [y/x] M ) est une α-contraction avec y étant une variable non utilisé
Exemple :
λx x z
α
λy [y/x] x z = λy y z
α
λz [z/x] x z = λz z z
7.2 β-contraction
β:λx
paramètre formel
M
corps
fonction
N
arguments
β[N/x]M
L'argument (ou paramètre réel) est substitué au paramètre formel dans le corps de la fonction
On peut faire le parallèle avec un appel de fonction. Les paramètres lors de l'appel remplace les arguments.
7.3 η-contraction
η: λx M x
η
M si x non libre dans M
ça ressemble à une β-contraction : λx M x [x/x] M
M car x
M
Exemple 1 :
λx y
M
x
η y
car x non libre dans y
On vérifie : (λx y x) A
β
[ A / x ] y x = y A
(λx y x) A
η
y A
y A = y A
les termes λx y x et y, considérés comme fonctions, produisent le même résultat lorsqu'on les applique à un
argument quelconque.
Exemple 2 :
capture
λx x
M
x
η x
car x libre dans x
(λx x x) A
β
A A
x A = x A
α
est réflexive, symétrique et transitive.
λx x
α
λx ([x/x] x) = λx x
λx x
α
λy y
α
λx x
β
et
η
ne sont ni réflexive, ni symétriques et ni transitives.
(λx x) a
β
a
a
β
(λx x) a
Ces propriétés sont utiles pour les calculs
donc on étend les contractions en réductions en leurs ajoutant ces propriétés :
On a 2 extensions utiles :
réduction (noté )
fermeture contextuelle, réflexive et transitive des α, β, η-contractions
On peut travailler sur des sous-expressions
l'équivalence (ou égalité ou conversion) notée =
fermeture symétrique de la réduction
Exemple :
(λx x) y y mais y (λx x) y
(λx x) y = y et y = (λx x) y
1 / 35 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 !