Programowanie funkcjonalne. Wykªad 12

Podobne dokumenty
Programowanie funkcjonalne

Programowanie funkcyjne Wykład 12. Funkcje rekurencyjne i rachunek lambda

Programowanie funkcyjne. Wykªad 13

Programowanie funkcyjne Wykład 14. Rachunek λ z typami prostymi

Logiczne podstawy informatyki 1. Wojciech Buszkowski. Zakład Teorii Obliczeń Wydział Matematyki i Informatyki UAM

Rachunek Lambda i J zyki Programowania

Teoretyczne Podstawy Informatyki

Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1

Podstawy matematyki dla informatyków. Logika formalna. Skªadnia rachunku zda« Skróty i priorytety. Wykªad 10 (Klasyczny rachunek zda«) 15 grudnia 2011

-termami -wyrażeń pre-termami abstrakcją aplikacją zmiennych wolnych zmienną związaną domknięte

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Rachunek lambda, zima

Indeksowane rodziny zbiorów

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Metody dowodzenia twierdze«

Logika intuicjonistyczna

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Teoretyczne Podstawy Języków Programowania Wykład 4. Siła wyrazu rachunku λ

Logika i teoria typów

x y x y x y x + y x y

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

O czym będzie ten wykład: Logika i teoria typów. Zbiory i funkcje. Powtórzenie z rachunku lambda. Ekstensjonalność (?) Beztypowy rachunek lambda

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Logika dla matematyków i informatyków Wykªad 1

Logika matematyczna (16) (JiNoI I)

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

Strategia czy intuicja?

Ukªady równa«liniowych

RACHUNEK LAMBDA DLA POCZĄTKUJĄCYCH

W poprzednim odcinku... Podstawy matematyki dla informatyków. Relacje równowa»no±ci. Zbiór (typ) ilorazowy. Klasy abstrakcji

rachunku kombinatorów logiką kom- binatoryczną Zmienne przedmiotowe Podstawienie słabej redukcji kombinatorami

Schematy i reguªy wnioskowania w logice rozmytej

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Metoda tablic semantycznych. 1 Metoda tablic semantycznych

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Funkcje wielu zmiennych

Metodydowodzenia twierdzeń

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Rachunek zda«. Relacje. 2018/2019

Podstawy matematyki dla informatyków

Podstawy modelowania w j zyku UML

Ekstremalnie maªe zbiory

Równowano modeli oblicze

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Hotel Hilberta. Zdumiewaj cy ±wiat niesko«czono±ci. Marcin Kysiak. Festiwal Nauki, Instytut Matematyki Uniwersytetu Warszawskiego

2 Liczby rzeczywiste - cz. 2

Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt:

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Algorytmy zwiazane z gramatykami bezkontekstowymi

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Wykład 2: Rachunek lambda

Automorzmy modeli i twierdzenie EhrenfeuchtaMostowskiego

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Mierzalne liczby kardynalne

ZADANIA. Maciej Zakarczemny

P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF

ALGORYTMIKA Wprowadzenie do algorytmów

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Zadanie 1. (8 punktów) Dana jest nast puj ca macierz: M =

Zbiory i odwzorowania

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

ELEMENTARNA TEORIA LICZB. 1. Podzielno±

Ekonometria - wykªad 8

Przekroje Dedekinda 1

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Arytmetyka pierwszego rz du

Materia ly do wyk ladu. Rachunek lambda. Pawe l Urzyczyn 25 września 2015

Formalizacja podstawowych pojęć rachunku lambda

Logika matematyczna w informatyce

Wnioskowanie Boolowskie i teoria zbiorów przybli»onych

Dokªadna arytmetyka liczb rzeczywistych w j zyku Python

Maªgorzata Murat. Modele matematyczne.

Matematyka dyskretna dla informatyków

Podstawy modelowania w j zyku UML

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Informatyka, matematyka i sztuczki magiczne

Elementy geometrii w przestrzeni R 3

Macierze i Wyznaczniki

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

Arytmetyka zmiennopozycyjna

Zadania z analizy matematycznej - sem. II Rachunek ró»niczkowy funkcji wielu zmiennych

Uczenie Wielowarstwowych Sieci Neuronów o

R. D. Tennent, The Denotational Semantics of Programming Languages [1976]

Przeksztaªcenia liniowe

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

EGZAMIN MAGISTERSKI, r Matematyka w ekonomii i ubezpieczeniach

Funkcje wielu zmiennych

Funkcje wielu zmiennych

1 Bª dy i arytmetyka zmiennopozycyjna

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

Statystyka matematyczna - ZSTA LMO

Transkrypt:

Programowanie funkcjonalne. Wykªad 12 Podstawowe informacje o rachunku lambda Zdzisªaw Spªawski Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 1

Literatura Historia i niektóre zastosowania rachunku lambda Gramatyka i konwencje notacyjne Zmienne wolne i zwi zane Reguªy wnioskowania Semantyka operacyjna Strategie i grafy redukcji Twierdzenie Churcha-Rossera Twierdzenie o standardyzacji Programowanie funkcjonalne Zadania kontrolne Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 2

Literatura Literatura (wybrane pozycje) I H.P.Barendregt, The Lambda Calculus. Its Syntax and Semantics, North Holland, Amsterdam 1984 (revised edition). H.P.Barendregt, Functional Programming and Lambda Calculus, w J.van Leeuwen (ed.), Handbook of Theoretical Computer Science, vol. B, North Holland 1990, Ch.7, pp. 321-363 H.P.Barendregt, Lambda Calculi with Types, w: S.Abramsky, Dov M. Gabbay, T.S.E. Maibaum, Handbook of Logic in Computer Science, vol. 2, Clarendon Press, Oxford 1992, pp. 117-309, http://www.cs.ru.nl/henk/papers.html Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 3

Literatura Literatura (wybrane pozycje) II J.R.Hindley, Basic Simple Type Theory, Cambridge University Press, Cambridge 1997 J.L. Krivine, Lambda-Calculus, Types and Models, Masson, Paris 1993 P. Urzyczyn, Rachunek lambda, wykªad monograczny, http://www.mimuw.edu.pl/ urzy/lambda/ Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 4

Historia i niektóre zastosowania rachunku lambda Rachunek lambda (λ-rachunek) jest teori funkcji rozumianych konstruktywnie jako reguªy obliczania, tj. przeksztaªcania argumentu w wynik. λ-rachunek zostaª zaproponowany w latach trzydziestych ubiegªego wieku przez Alonzo Churcha jako cz ± systemu formalnego, stanowi cego alternatywn formalizacj podstaw matematyki. Chocia» caªy system okazaª si sprzeczny, nie dotyczy to λ-rachunku. Wcze±niej, w latach dwudziestych, Moses Schönnkel zaproponowaª inn teori funkcji, opart na kombinatorach. W latach trzydziestych Haskell Curry niezale»nie wprowadziª kombinatory, rozszerzyª teori Schönnkela oraz pokazaª,»e jest ona równowa»na rachunkowi lambda. Mniej wi cej w tym czasie udowodniono równowa»no± rachunku lambda, funkcji rekurencyjnych i maszyn Turinga. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 5

Historia i niektóre zastosowania rachunku lambda Pod koniec lat pi dziesi tych John McCarthy, zainspirowany rachunkiem lambda, opracowaª j zyk programowania LISP. We wczesnych latach sze± dziesi tych Peter Landin pokazaª, jak mo»na zinterpretowa Algol-60 w rachunku lambda. Opracowany przez niego prototypowy j zyk ISWIM wywarª wpªyw na projektantów zarówno j zyków funkcjonalnych, jak i imperatywnych. Wykorzystuj c te rezultaty Christopher Strachey poªo»yª podstawy semantyki denotacyjnej j zyków programowania. Techniczne problemy rozwi zaª ameryka«ski logik Dana Scott, opracowuj c teori dziedzin, która stanowi wa»ny rozdziaª informatyki teoretycznej. Curry i niezale»nie Howard zauwa»yli odpowiednio± mi dzy rachunkem lambda z typami a dowodami matematycznymi (izomorzm Curry'ego-Howarda). Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 6

Historia i niektóre zastosowania rachunku lambda Pod koniec lat siedemdziesi tych David Turner pokazaª,»e kombinatory równie» mog by u»ywane jako efektywne kody maszynowe dla programów funkcjonalnych. W latach osiemdziesi tych bardzo wiele uwagi po±wi cono typom w j zykach funkcjonalnych, co wywarªo znaczny wpªyw na in»ynieri oprogramowania. W ten sposób wywodz ce si z logiki matematycznej i stworzone jeszcze przed skonstruowaniem pierwszych komputerów rachunek lambda i teoria kombinatorów wywieraj coraz wi kszy wpªyw na wa»ne dziedziny informatyki, m.in. podstawy informatyki, projektowanie i semantyk j zyków programowania, in»ynieri oprogramowania (specykacje, poprawno±...). Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 7

Gramatyka i konwencje notacyjne Gramatyka i konwencje notacyjne Denicja. Zbiór λ-termów Λ deniuje si przy u»yciu niesko«czonego, przeliczalnego zbioru zmiennych V = {v, v, v,...} i dwóch podstawowych operacji aplikacji i abstrakcji funkcyjnej. V ::= v V Λ ::= V (ΛΛ) (λv.λ) Dla uproszczenia zapisu stosuje si nast puj ce konwencje notacyjne. Maªe litery (np. x, y, x 1 ) oznaczaj zmienne. Wielkie litery (np. M, N, P ) oznaczaj λ-termy. λx 1... x n.m oznacza (λx 1 (λx 2 (... (λx n (M))...))). (Abstrakcja wi»e w prawo.) M 1... M n oznacza (... (M 1 M 2 )... M n ). (Aplikacja wi»e w lewo.) Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 8

Zmienne wolne i zwi zane Zmienne wolne i zwi zane Denicja. Zbiór zmiennych wolnych termu M, oznaczany przez F V (M), i zbiór zmiennych zwi zanych, oznaczany przez BV (M), deniuje si przez indukcj po strukturze termu: F V (x) = {x} F V (MN) = F V (M) F V (N) F V (λx.m) = F V (M) \ {x} BV (x) = BV (MN) = BV (M) BV (N) BV (λx.m) = BV (M) {x} Przykªad. (λx.y x) (λy.x y). z: wolne wyst pienie zmiennej z. z: zwi zane wyst pienie zmiennej z. Term bez zmiennych wolnych nazywamy termem zamkni tym lub kombinatorem. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda 9

Zmienne wolne i zwi zane Podstawienie za zmienn woln M N oznacza tekstow identyczno± termów M i N z dokªadno±ci do zamiany nazw zmiennych zwi zanych. Denicja. Wynik podstawiania N za wolne wyst pienia zmiennej x w termie M, oznaczany przez M[x := N] lub M[N/x], mo»na zdeniowa indukcyjnie przez: x[x := N] N y[x := N] y (P Q)[x := N] (P [x := N])(Q[x := N]) (λx.p )[x := N] λx.p (λy.p )[x := N] λy.(p [x := N]) je±li y / F V (N) lub x / F V (P ) (λy.p )[x := N] λz.(p [y := z][x := N]) je±li y F V (N) i x F V (P ), gdzie z jest dowoln zmienn tak,»e z / F V (N) F V (P ) Przykªad. (λy.x(λx.xy))[x := yz] λw.yz(λx.xw) Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda10

Reguªy wnioskowania Reguªy wnioskowania dla rachunku lambda I β (λx.m) N = M[x := N] λx.m x = M η gdy x / F V (M) M = M Re N = M Sym M = N K = M K = N M = N Trans K = L M = N MonApp K M = L N M = N λx.m = λx.n MonAbs Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda11

Reguªy wnioskowania Reguªy wnioskowania dla rachunku lambda II Powy»szy rachunek nosi nazw rachunku λη (lub λβη). Je±li pominiemy reguª (η), to otrzymamy teori λ (lub λβ). Je±li w systemie λ mo»na wyprowadzi równo± M = N, to piszemy λ M = N. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda12

Reguªy wnioskowania Reguªy wnioskowania dla rachunku lambda III Przykªad. Dowód równo±ci termów (λxy.x) (λz.z) i (λx.x) (λyz.z). β (λxy.x) (λz.z) = λyz.z β (λx.x) (λyz.z) = λyz.z Sym λyz.z = (λx.x) (λyz.z) Trans (λxy.x) (λz.z) = (λx.x) (λyz.z) W celu sformalizowania zamiany zmiennych zwi zanych Church wprowadziª poni»sz reguª (α). α λx.m = λy.m[x := y] gdy y / F V (M) BV (M) Semantyka termów, ró»ni cych si tylko zmiennymi zwi zanymi jest identyczna, wi c zwykle reguªa (α) przenoszona jest do metaj zyka, a termy w rachunku lambda rozwa»ane s z dokªadno±ci do α-kongruencji. My równie» przyjmiemy tak konwencj. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda13

Semantyka operacyjna Redukcje W zbiorze lambda termów Λ denuje si relacj beta-redukcji jako najmniejsz relacj β (β-redukcja w jednym kroku lub kontrakcja) tak,»e: (λx.m)n β M[x := N] je±li M β N, to ZM β ZN, MZ β NZ oraz (λx.m) β (λx.n). Relacja β-redukcji β jest zwrotnym i przechodnim domkni ciem relacji β. Relacja β-konwersji = β jest relacj równowa»no±ci generowan przez β. Twierdzenie 1. λ M = N M = β N. Dowód. ( ) Przez indukcj po strukturze drzewa wywodu. ( ) Przez indukcj po sposobie generowania relacji = β. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda14

Semantyka operacyjna Posta normalna lambda termu I Niech M Λ. M jest w postaci β-normalnej (β-nf, ang. normal form), je±li nie zawiera β-redeksu (ang. redex = reducible expression), tj. podtermu (λx.p )Q. M jest w postaci βη-normalnej (βη-nf), je±li nie zawiera β- ani η-redeksu, tj. podtermów (λx.p )Q ani λx.p x, gdzie x F V (P ). M jest w czoªowej postaci normalnej (HNF, ang. head-normal form), je±li M λx 1... x n.yn 1... N m dla m, n 0. M jest w sªabej czoªowej postaci normalnej (WHNF, ang. weak head-normal form), je±li M λx.n lub M yn 1... N m dla m 0. M ma R-NF, je±li N.M = N i N jest w R-NF, gdzie R oznacza dowoln redukcj. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda15

Semantyka operacyjna Posta normalna lambda termu II Przykªad. λx.((λy.λz.fzy)x) nie jest w β-nf, ani w HNF, jest w WHNF. Lemat 2. Niech M b dzie w β-nf. Wówczas M β N N M Dowód. Oczywisty, je±li β jest β. Rezultat wynika z przechodnio±ci. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda16

Strategie i grafy redukcji Strategie redukcji I Zgodnie z powy»szymi denicjami lambda term mo»e zawiera kilka redeksów. Na przykªad term: (λx.xyxx)((λz.z)w) zawiera dwa β-redeksy (λx.xyxx)((λz.z)w) oraz (λz.z)w. Mo»na przeprowadza kontrakcje redeksów zgodnie z wybran strategi. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda17

Strategie i grafy redukcji Strategie redukcji II Redukcja normalna (ang. normal-order reduction, NOR) polega na kontrakcji lewostronnego zewn trznego redeksu, tj. redeksu, który zaczyna si najbardziej na lewo i nie jest zawarty w»adnym innym redeksie. Redukcja aplikatywna (ang. applicative-order reduction, AOR) polega na kontrakcji lewostronnego wewn trznego redeksu, tj. lewostronnego redeksu, nie zawieraj cego innych redeksów. S te» inne, mniej wa»ne strategie redukcji. Term jest silnie normalizowalny, je±li ka»da strategia redukcji doprowadza do postaci normalnej. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda18

Strategie i grafy redukcji Strategie redukcji III Poni»sze slogany uªatwiaj zapami tanie istoty najwa»niejszych strategii redukcji. Redukcja normalna: warto±ciuj ka»dy argument tyle razy, ile trzeba. Redukcja aplikatywna: warto±ciuj ka»dy argument dokªadnie raz. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda19

Strategie i grafy redukcji Strategie redukcji przykªady I (λx.xyxx)((λz.z)w) ((λz.z)w)y((λz.z)w)((λz.z)w) wy((λz.z)w)((λz.z)w) wyw((λz.z)w) wyww NOR (λx.xyxx)((λz.z)w) (λx.xyxx)w wyww AOR Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda20

Strategie i grafy redukcji Strategie redukcji przykªady II Niech ω λx.xx oraz Ω ωω. Ω ωω (λx.xx)(λx.xx) (λx.xx)(λx.xx)... (λx.xxy)(λx.xxy) (λx.xxy)(λx.xxy)y... (λx.y(λz.z))(ωω) y(λz.z) NOR (λx.y(λz.z))(ωω) (λx.y(λz.z))(ωω)... AOR Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda21

Strategie i grafy redukcji Grafy redukcji Denicja. Graf R-redukcji termu M (notacja G R (M)) jest zbiorem {N Λ M R N} ukierunkowanym relacj redukcji R. Je±li kilka redeksów powoduje przeksztaªcenie M 0 R M 1, to tyle samo ukierunkowanych kraw dzi prowadzi od M 0 do M 1 w G R (M)). Przykªad. G β (Ω), dla Ω (λx.xx)(λx.xx) Ω G β (W W W ), dla W λxy.xyy W W W (λy.yyy)w (λy.w yy)w (λy.(λz.yzz)y)w Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda22

Twierdzenie Churcha-Rossera Twierdzenie Churcha-Rossera Je±li M β P i M β Q, to dla pewnego N zachodzi P β N i Q β N. P β M β Q β N β Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda23

Twierdzenie Churcha-Rossera Wnioski z twierdzenia Churcha-Rossera I Wniosek 1. Je±li M = β N, to istnieje taki term L,»e M L i N L. Dowód. Przez indukcj po sposobie generowania relacji = β. Wniosek 2. (i) Je±li M ma N jako β-nf, to M β L. (ii) λ-term ma co najwy»ej jedn β-nf. Dowód. (i) Niech M = β N, gdzie N jest β-nf. Na podstawie Wniosku 1 M β L i N β L dla pewnego L. Wówczas N L na podstawie Lematu 2, a wi c M β N. (ii) Niech M ma N 1 i N 2 jako β-nf. Wówczas N 1 = β M = β N 2. Na podstawie Wniosku 1 N 1 β L i N 2 β L dla pewnego L wi c N 1 L N 2 na podstawie Lematu 2. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda24

Twierdzenie Churcha-Rossera Wnioski z twierdzenia Churcha-Rossera II Dalsze wnioski: (1) λ-rachunek jest niesprzeczny jako teoria równo±ciowa, tzn. nie mo»na w niej wyprowadzi wszystkich równo±ci, np. λ true = false, gdzie true λxy.x i false λxy.y. W przeciwnym razie true = β false na podstawie Tw.1, co jest niemo»liwe na podstawie Wniosku 2(ii), poniewa» true i false s ró»nymi β-nf. (2) W celu znalezienia β-nf termu M (je±li istnieje), ró»ne podtermy termu M mog by redukowane w dowolnej kolejno±ci. Je±li redukcja doprowadzi do β-nf, to na podstawie Wniosku 2(ii) β-nf jest jedyna. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda25

Twierdzenie o standardyzacji Twierdzenie o standardyzacji Je±li term M ma posta normaln N to istnieje normalna redukcja z M do N. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda26

Programowanie funkcjonalne Programowanie funkcjonalne I Jak widzieli±my, beta redukcja wymaga zmiany zmiennych zwi zanych (stosuj c α-konwersj ) w przypadku koniktu nazw zmiennych, powoduj cego zwi zanie zmiennej wolnej w wyniku redukcji, np. λx.(λyx. + xy)x β λx.λz. + zx Taka operacja jest jednak kosztowna i w j zykach funkcjonalnych unika si jej, redukuj c wyra»enia do sªabej czoªowej postaci normalnej (WHNF). Powy»szy term jest ju» w WHNF. Warto±ciowanie zostanie przeprowadzone po zaaplikowaniu do argumentu, np. (λx.(λyx. + xy)x)5 β (λyx. + xy)5 β λx. + x5 Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda27

Programowanie funkcjonalne Programowanie funkcjonalne II W j zykach funkcjonalnych maj zastosowanie dwie strategie warto±ciowania: warto±ciowanie gorliwe (ang. eager evaluation) i warto±ciowanie leniwe (ang. lazy evaluation), b d ce sposobami implementacji strategii AOR i NOR. warto±ciowanie gorliwe = AOR do WHNF warto±ciowanie leniwe = NOR do WHNF + wspóªdzielenie + leniwe konstruktory Przy warto±ciowaniu leniwym ka»dy argument funkcji jest warto±ciowany co najwy»ej raz. Argumenty leniwych konstruktorów nie s warto±ciowane. Czasem stosuje si strategie mieszane, np. warto±ciowanie gorliwe + leniwe konstruktory. J zyk funkcyjny mo»na potraktowa jak rachunek lambda (beztypowy lub z typami) z dodanymi staªymi (z odpowiednimi reguªami redukcji) i du» ilo±ci lukru syntaktyczego. Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda28

Zadania kontrolne Zadanie 1. W poni»szym termie wska» wszystkie beta-redeksy. (λx.x)((λx.x)(λz.(λx.x)z) Zadanie 2. Przeprowad¹ normalizacj poni»szego termu. Zwró uwag na konieczno± zmiany nazwy zmiennej zwi zanej. (λx.xx)(λyz.yz) Zadanie 3. Przeprowad¹ normalizacj poni»szych termów, je±li to mo»liwe. Poka» wszystkie mo»liwe ±cie»ki redukcji (w postaci grafu redukcji). (λx.x)(λz.z) (λx.y)(λz.z) (λx.xx)(λz.z) (λx.(λy.yx)z)(zw) (λx.x)((λx.x)(λz.(λx.x)z) (λuv.v)((λx.xx)(λx.xx)) (λx.xx)(λx.xx) (λx.xxy)(λx.xxy) Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda29

Zadania kontrolne Zadanie 4. Narysuj graf β-redukcji dla termu MM, gdzie M λx.(λy.yy)x Zadanie 5. Znajd¹ lambda termy, posiadaj ce poni»sze grafy β-redukcji. a) b) Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda30

Zadania kontrolne Zadanie 6. Udowodnij,»e w rachunku lambda reguª (η) mo»na zast pi poni»sz reguª ekstensjonalo±ci: Mx = Nx (ext) M = N x F V (M) F V (N) Poka»,»e w λβη mo»na wywie± reguª (ext) i odwrotnie, w λβ + (ext) mo»na wywie± (η). Zdzisªaw Spªawski: Programowanie funkcjonalne. Wykªad 12, Podstawowe informacje o rachunku lambda31