Documente Academic
Documente Profesional
Documente Cultură
FLP2023 C02
FLP2023 C02
C02
Denisa Diaconescu
Traian S, erbănut, ă
1
Lambda calcul - elemente de bază
Lambda calcul
• Un model de calculabilitate
• Un limbaj formal
2
Lambda termeni
Example
3
Funct, ii anonime în Haskell
4
Lambda termeni - definit, ie alternativă
Mult, imea lambda termenilor este cea mai mică submult, ime Λ ⊆ A ∗
astfel încât:
[Variabilă] V ⊆ Λ
[Aplicare] dacă M , N ∈ Λ atunci (M N ) ∈ Λ
[Abstractizare] dacă x ∈ V s, i M ∈ Λ atunci (λx .M ) ∈ Λ
5
Convent, ii
6
Exercit, ii
Exercit, iu. Scriet, i termenii de mai jos cu cât mai put, ine paranteze s, i
folosind convent, iile de mai sus, fără a schimba sensul termenilor:
1. x x x x
2. λx .x λy .y
7
Exercit, ii
Exercit, iu. Scriet, i termenii de mai jos cu cât mai put, ine paranteze s, i
folosind convent, iile de mai sus, fără a schimba sensul termenilor:
1. x x x x
2. λx .x λy .y
7
Exercit, ii
Exercit, iu. Scriet, i termenii de mai jos cu cât mai put, ine paranteze s, i
folosind convent, iile de mai sus, fără a schimba sensul termenilor:
1. x x x x
2. λx .x λy .y
7
Exercit, ii
Exercit, iu. Scriet, i termenii de mai jos cu cât mai put, ine paranteze s, i
folosind convent, iile de mai sus, fără a schimba sensul termenilor:
1. x x x x Corect: (((x x ) x ) x )
2. λx .x λy .y
7
Exercit, ii
Exercit, iu. Scriet, i termenii de mai jos cu cât mai put, ine paranteze s, i
folosind convent, iile de mai sus, fără a schimba sensul termenilor:
1. x x x x Corect: (((x x ) x ) x )
7
Variabile libere s, i variabile legate
De exemplu, în termenul
M ≡ (λx .xy ) (λy .yz )
• x este legată
• z este liberă
• y are s, i o aparit, ie legată, s, i una liberă
• mult, imea variabilelor libere ale lui M este {y , z }
8
Variabile libere
FV (x ) = {x }
FV (M N ) = FV (M ) ∪ FV (N )
FV (λx .M ) = FV (M ) \ {x }
• FV (λx .x y ) = FV (x y ) \ {x } = (FV (x ) ∪ FV (y )) \ {x }
= ({x } ∪ {y }) \ {x } = {y }
• FV (x λx .x y ) = {x , y }
9
Redenumire de variabile
x hy /x i ≡ y ,
z hy /x i ≡ z , dacă x , z
(M N )hy /x i ≡ (M hy /x i) (N hy /x i)
(λx .M )hy /x i ≡ λy .(M hy /x i)
(λz .M )hy /x i ≡ λz .(M hy /x i), dacă x , z
Observat, i că acest tip de redenumire înlocuies, te toate aparit, iile lui x
cu y, indiferent dacă este liberă, legată, sau de legare.
11
α-echivalent, ă
Convent, ia Barendregt:
variabilele legate sunt redenumite pentru a fi distincte.
12
Substitut, ii
13
Substitut, ii
De exemplu, fie M ≡ λx .y x s, i N ≡ λz .x z.
Totus, i, nu este ceea ce am vrea să obt, inem, deoarece x este liber
în N, iar în timpul "substitut, iei" a devenit legată.
Trebuie să luăm în calcul că x-ul legat din M nu este x-ul liber din N,
s, i de aceea redenumim variabilele legate înainte de substitut, ie.
x [N /x ] ≡ N
y [N /x ] ≡ y dacă x , y
(M P )[N /x ] ≡ (M [N /x ]) (P [N /x ])
(λx .M )[N /x ] ≡ λx .M
(λy .M )[N /x ] ≡ λy .(M [N /x ]) dacă x , y s, i y < FV (N )
(λy .M )[N /x ] ≡ λy 0 .(M hy 0 /y i[N /x ]) dacă x , y, y ∈ FV (N )
s, i y 0 variabilă nouă
15
Exercit, ii
1. (λz .x )[y /x ]
2. (λy .x )[y /x ]
16
Exercit, ii
2. (λy .x )[y /x ]
16
Exercit, ii
16
Exercit, ii
16
Quiz time!
https://tinyurl.com/C02-Quiz1
17
Pe săptămâna viitoare!
18