11
Základy Základy λ λ - - kalkulu kalkulu doc. Dr. Ing. doc. Dr. Ing. Miroslav Miroslav Beneš Beneš katedra informatiky, katedra informatiky, A-1007 A-1007 59 732 59 732 4213 4213

Základy λ - kalkulu

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

Page 1: Základy  λ - kalkulu

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

Page 2: Základy  λ - kalkulu

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)

Page 3: Základy  λ - kalkulu

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))

Page 4: Základy  λ - kalkulu

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á

Page 5: Základy  λ - kalkulu

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))

Page 6: Základy  λ - kalkulu

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

Page 7: Základy  λ - kalkulu

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.

Page 8: Základy  λ - kalkulu

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á

Page 9: Základy  λ - kalkulu

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)

Page 10: Základy  λ - kalkulu

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

Page 11: Základy  λ - kalkulu

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)