Upload
isabella-adrian
View
31
Download
0
Embed Size (px)
DESCRIPTION
Základy λ - kalkulu. doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213. λ -kalkul. 1930 Alonzo Church netypovaný λ -kalkul matematická teorie funkcí Základ všech funkcionálních jazyků Některé konstrukce i v imperativních jazycích (např. Python). - PowerPoint PPT Presentation
Citation preview
Základy Základy λλ--kalkulukalkulu
doc. Dr. Ing. doc. Dr. Ing. Miroslav BenešMiroslav Beneš
katedra informatiky, A-1007katedra informatiky, A-1007
59 732 59 732 42134213
22ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
λλ-kalkul-kalkul
1930 Alonzo Church1930 Alonzo Church netypovaný netypovaný λλ-kalkul-kalkul matematická teorie funkcímatematická teorie funkcí
Základ všech funkcionálních jazykůZáklad všech funkcionálních jazyků
Některé konstrukce i v imperativních Některé konstrukce i v imperativních jazycích (např. Python)jazycích (např. Python)
33ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
Syntaxe Syntaxe λλ-kalkulu-kalkulu
ProměnnéProměnné x, y, z, f, g, …x, y, z, f, g, …
λλ-abstrakce-abstrakce ((λλx . e)x . e)
AplikaceAplikace (e(e11 e e22))
Konvence pro závorkyKonvence pro závorky λλx . x . λλy . ey . e11 e e22 = ( = (λλx . (x . (λλy . ey . e11 e e22)))) ee11 e e2 2 ee33 = ((e = ((e11 e e22) e) e33))
44ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
ProměnnáProměnná
označuje libovolnou hodnotuoznačuje libovolnou hodnotu
v daném kontextu označuje vždy tutéž v daném kontextu označuje vždy tutéž hodnotu (neexistuje možnost přiřazení)hodnotu (neexistuje možnost přiřazení)
vázaná a volná proměnnávázaná a volná proměnná
λλ x . f x x . f x
vázaná volná
55ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
λλ-abstrakce-abstrakce
λλ xx . . ee funkcfunkcee s parametrem s parametrem xx a tělem a tělem ee
λλ x y . e x y . e funkce s parametry funkce s parametry xx,, y y a tělem a tělem ee ekvivalentnekvivalentní zápisu í zápisu λλ xx . ( . (λλ yy . . ee))
λλ e . e e . e ((λλ f x (f x x) f x (f x x)) () (λλ f x (f x x)) f x (f x x))
66ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
AplikaceAplikace
((ee11 ee22)) aplikace funkce aplikace funkce ee11 na argument na argument ee22
((f x yf x y)) aplikace funkce (aplikace funkce (f xf x) na argument ) na argument yy aplikace funkce aplikace funkce ff na argumenty na argumenty xx a a yy
77ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
SubstituceSubstituce
ee11 [[ee22/x]/x] nahrazennahrazení všech volných výskytů proměnné í všech volných výskytů proměnné xx
ve výrazu ve výrazu ee11 za výraz za výraz ee22
substituce mussubstituce musí být í být platná platná (volná proměnná (volná proměnná ve výrazu ve výrazu ee22 se nesmí stát vázanou) se nesmí stát vázanou)
((λλ x y . x y . f x y) [g z / f] = f x y) [g z / f] = λλ x y . x y . (g z) x y(g z) x y
((λλ x y . x y . f x y) [g z / f x y) [g z / xx] = ] = λλ x y . f x y x y . f x y
((λλ x y . x y . f x y) [g f x y) [g yy / / ff] = ] = není platná subst.není platná subst.
88ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
Vyhodnocování Vyhodnocování λλ-výrazů-výrazů
αα-redukce-redukce λλ x . e ↔ x . e ↔ λλ y . e y . e[ y / x ][ y / x ] ppřejmenování vázané proměnnéřejmenování vázané proměnné substituce musí být platnásubstituce musí být platná
ββ-redukce-redukce ((λλ x . e x . e11) e) e22 ↔ ↔ ee11 [ e [ e22 / x ] / x ] ““volvolání funkce“ – nahrazení parametru ání funkce“ – nahrazení parametru
hodnotou argumentu hodnotou argumentu substituce musí být platnásubstituce musí být platná
99ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
Vyhodnocování Vyhodnocování λλ-výrazů-výrazů
ηη-redukce-redukce λλ x . f x ↔ f x . f x ↔ f odstranění abstrakceodstranění abstrakce proměnná proměnná x x nesmí být volná vnesmí být volná v f f Funkce jsou ekvivalentní, pokud pro všechny Funkce jsou ekvivalentní, pokud pro všechny
hodnoty parametrů dávají tentýž výsledek.hodnoty parametrů dávají tentýž výsledek. uumožňuje definovat možňuje definovat řezyřezy funkcí funkcí
(+1) = (+1) = λλ x . (x + 1)x . (x + 1)
1010ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
PříkladyPříklady((λλ f x f x . f x x) (. f x x) (λλ x y . p y x) x y . p y x) ==ββ λλ x . ( x . (λλ x y . p y x) x x x y . p y x) x x ==αα λλ z . ( z . (λλ x y . p y x) z z x y . p y x) z z ==ββ λλ z . ( z . (λλ y . p y z) z y . p y z) z ==ββ λλ z . p z z z . p z z
((λλ f x f x . f x x) (. f x x) (λλ x y . p y x) x y . p y x)==ηη ( (λλ f x f x . f x x) (. f x x) (λλ y . p y) y . p y)==ηη ( (λλ f x f x . f x x) p. f x x) p==ββ λλ x. p x x x. p x x
1111ÚDPJ - Základy λ-kalkuluÚDPJ - Základy λ-kalkulu
Normalizační teorémyNormalizační teorémy
redexredex --- --- redreducible ucible exexpressionpression výraz, kterývýraz, který lze dále redukovat; lze dále redukovat; αα-redex, -redex, ββ-redex-redex
normální formanormální forma v výýrazurazu vvýraz neobsahuje žádný ýraz neobsahuje žádný ββ-redex-redex
Church-Rosserovy teorémyChurch-Rosserovy teorémy Pokud e1 Pokud e1 ↔ ↔ e2, pak existuje výraz e takový, žee2, pak existuje výraz e takový, že
e1 e1 →→ e e aa e2 e2 → → ee Pokud e1 Pokud e1 →→ e2 a e2 je v normální formě, pak existuje redukční e2 a e2 je v normální formě, pak existuje redukční
posloupnost z e1 do e2 (posloupnost z e1 do e2 (normální redukční posloupnostnormální redukční posloupnost))
Pokud existuje normální forma, lze k ní dojít normální Pokud existuje normální forma, lze k ní dojít normální redukční posloupností (leftmost outermost redex)redukční posloupností (leftmost outermost redex)