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

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

Logika i teoria mnogości Wykład 14

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

Zbiory, relacje i funkcje

Definicja i własności wartości bezwzględnej.

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

1. Wykład NWD, NWW i algorytm Euklidesa.

domykanie relacji, relacja równoważności, rozkłady zbiorów

1 Działania na zbiorach

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

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

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1

System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Języki, automaty i obliczenia

Uwaga 1.2. Niech (G, ) będzie grupą, H 1, H 2 < G. Następujące warunki są równoważne:

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

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

LOGIKA I TEORIA ZBIORÓW

- Dla danego zbioru S zbiór wszystkich jego podzbiorów oznaczany symbolem 2 S.

0 + 0 = 0, = 1, = 1, = 0.

Indukcja matematyczna. Zasada minimum. Zastosowania.

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Matematyczne Podstawy Informatyki

. : a 1,..., a n F. . a n Wówczas (F n, F, +, ) jest przestrzenią liniową, gdzie + oraz są działaniami zdefiniowanymi wzorami:

Liczby zespolone. x + 2 = 0.

Wykład z równań różnicowych

Matematyka dyskretna. 1. Relacje

F t+ := s>t. F s = F t.

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

Teoria automatów i języków formalnych. Określenie relacji

Programowanie funkcyjne. Wykªad 13

Matematyka dyskretna dla informatyków

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

1 Funkcje uniwersalne

Funkcje dwóch zmiennych

5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.

Relacje. opracował Maciej Grzesiak. 17 października 2011

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Języki, automaty i obliczenia

Grupy, pierścienie i ciała

Złożoność obliczeniowa. wykład 1

Podstawowe struktury algebraiczne

Hierarchia Chomsky ego Maszyna Turinga

Algebra. Jakub Maksymiuk. lato 2018/19

Maszyna Turinga języki

Obliczenia inspirowane Naturą

ZALICZENIE WYKŁADU: 30.I.2019

Algebra liniowa z geometrią

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Analiza funkcjonalna 1.

Grupy. Permutacje 1. (G2) istnieje element jednostkowy (lub neutralny), tzn. taki element e G, że dla dowolnego a G zachodzi.

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

1 Zbiory i działania na zbiorach.

A i. i=1. i=1. i=1. i=1. W dalszej części skryptu będziemy mieli najczęściej do czynienia z miarami określonymi na rodzinach, które są σ - algebrami.

Języki, automaty i obliczenia

1 Przestrzeń liniowa. α 1 x α k x k = 0

020 Liczby rzeczywiste

Rachunek prawdopodobieństwa i statystyka

Rekurencyjna przeliczalność

n=0 Dla zbioru Cantora prawdziwe są wersje lematu 3.6 oraz lematu 3.8 przy założeniu α = :

dr inż. Ryszard Rębowski 1 WPROWADZENIE

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

Funkcje rekurencyjne

7. CIĄGI. WYKŁAD 5. Przykłady :

Układy równań i nierówności liniowych

LOGIKA ALGORYTMICZNA

O pewnych związkach teorii modeli z teorią reprezentacji

KONKURS MATEMATYCZNY KOMA 2018

Przestrzenie wektorowe

Rodzinę spełniającą trzeci warunek tylko dla sumy skończonej nazywamy ciałem (algebrą) w zbiorze X.

7 Twierdzenie Fubiniego

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

1. Liczby zespolone. Jacek Jędrzejewski 2011/2012

Rozdział 1. Wektory losowe. 1.1 Wektor losowy i jego rozkład

Korzystając z własności metryki łatwo wykazać, że dla dowolnych x, y, z X zachodzi

Logika i teoria typów

n=0 (n + r)a n x n+r 1 (n + r)(n + r 1)a n x n+r 2. Wykorzystując te obliczenia otrzymujemy, że lewa strona równania (1) jest równa

1. ZBIORY PORÓWNYWANIE ZBIORÓW. WYKŁAD 1

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Lista zadań - Relacje

Arytmetyka. Działania na liczbach, potęga, pierwiastek, logarytm

Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Zajęcia nr. 3 notatki

Wykład 3 Równania rózniczkowe cd

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Uzgadnianie formuł rachunku predykatów

Przykładowe zadania z teorii liczb

Struktury formalne, czyli elementy Teorii Modeli

Temperatura w atmosferze (czy innym ośrodku) jako funkcja dł. i szer. geogr. oraz wysokości.

Transkrypt:

11. Wykład 11: Rachunek λ. Obliczenia i obliczalność. Rachunek λ jest systemem pozornie bardzo prostym. Abstrakcja i aplikacja wydają się trywialnymi operacjami, i może się zdawać, że niczego ciekawego nie da się z nich uzyskać. Okazuje się jednak, że siła wyrazu tego rachunku jest tak duża jak moc obliczeniowa maszyn Turinga. Zaczniemy od dość paradoksalnej własności rachunku lambda. Każde równanie stałopunktowe ma w nim rozwiązanie. Odpowiedzialny za to jest na przykład taki term: Y := λf.(λx.f(xx))(λx.f(xx)). Główna własność termu Y jest taka: Dla dowolnego termu F zachodzi β-równość: (1) F (Y (F )) = β Y (F ). Rzeczywiście: Y (F ) = β (λx.f (xx))(λx.f (xx)) = β F ((λx.f (xx))(λx.f (xx)) = β F (Y (F )). Termy o własności (??) nazywamy kombinatorami punktu stałego. Stwierdzenie 1. Dla dowolnego termu M istnieje taki term N, że N = β M[x := N]. Dowód. Wystarczy przyjąć N = Y (λx.m). Przykłady: (1) Istnieje taki term M, że Mxy = β MyxM. Można przyjąć M = Y (λmxy.myxm). Wtedy M = β λxy.myxm, skąd także Mxy = β MyxM. (2) Istnieje taki term M, że dla dowolnego N zachodzi MN = β MNN, na przykład M = Y (λmx.mxx). Teraz pokażemy jak w rachunku λ można zinterpretować pewne proste konstrukcje. Zaczniemy od wartości logicznych true = λxy.x oraz false = λxy.y i instrukcji warunkowej if P then Q else R = P QR. Łatwo sprawdzić, że if true then Q else R β Q oraz if false then Q else R β R. Następna konstrukcja to para uporządkowana. Przyjmiemy M, N = λx.xmn; π i = λx 1 x 2.x i dla i = 1, 2. Jak należy się spodziewać, mamy M1, M2 π i β M i. Zauważmy jednak, że nie zachodzi równość Mπ 1, Mπ 2 = β M, tj. nasza para uporządkowana nie jest surjektywna. Dodanie do rachunku lambda surjektywnej pary uporządkowanej powoduje utratę własności Churcha- Rossera. Oznacza to w szczególności, że w (beztypowym) rachunku lambda nie można takiej operacji zdefiniować. Liczby naturalne reprezentujemy w rachunku lambda jako tzw. liczebniki Churcha: c n = λfx.f n (x), gdzie notacja f n (x) oznacza oczywiście term f(f(... (x)...)), w którym f występuje n razy. Zwykle zamiast c n będziemy pisać n, co jest mniej precyzyjne ale wygodne. Więc na przykład: 0 = λfx.x; 1

2 1 = λfx.fx; 2 = λfx.f(fx), i tak dalej. Zauważmy, że 1 = βη I, ale 1 β I. Powiemy, że funkcja częściowa f : N k N (tzn. relacja f określona na iloczynie kartezjańskim A B, gdzie A i B są dowolnymi zbiorami, taka że każdy element z A jest w relacji z najwyżej jednym elementem z B: a A b 1, b 2 Bafb 1 afb 2 b 1 = b 2 ) jest definiowalna w beztypowym rachunku λ (λ-definiowalna ) jeżeli istnieje term zamknięty F, spełniający dla dowolnych liczebników n 1,..., n k N następujące warunki: Jeżeli f(n 1,..., n k ) = m, to F n 1... n k = β m; Jeżeli f(n 1,..., n k ) jest nieokreślone, to F n 1... n k nie ma postaci normalnej. Mówimy oczywiście, że F definiuje lub reprezentuje funkcję f w rachunku λ. W przypadku, gdy dodatkowo dla wszystkich n 1,..., n k N spełniony jest warunek Jeżeli f(n 1,..., n k ) jest określone, to F n 1... n k ma własność silnej normalizacji, to powiemy, że F dobrze definiuje funkcję f, którą nazwiemy dobrze definiowalną. Kilka przykładów termów definiujących pewne funkcje podamy poniżej. Przykłady: Następnik: succ = λnfx.f(nfx); Dodawanie: add = λmnfx.mf(nfx); Mnożenie: mult = λmnfx.m(nf)x; Potęgowanie: exp = λmnfx.mnfx; Test na zero: zero = λm.m(λy.false)true; Funkcja k argumentowa stale równa zeru: Z k = λm 1... m k.0; Rzut k argumentowy na i tą współrzędną: Π i = λm 1... m k.m i. Przypomnijmy, że funkcje częściowo rekurencyjne tworzą najmniejszą klasę funkcji częściowych nad N zawierającą funkcje bazowe: następnik, succ(n) = n + 1; rzuty, Π i k (n 1,..., n k ) = n i ; funkcje stale równe zeru, Z k (n 1,..., n k ) = 0, i zamkniętą ze względu na składanie, rekursję prostą i operację minimum. Na wszelki wypadek, przypomnijmy też znaczenie tych terminów. (1) Funkcja f : N k N powstaje przez składanie funkcji h : N l N z funkcjami g 1,..., g l : N k N, gdy Dom(f) = { n : n Dom(g i ) dla wszystkich i, oraz (g 1 ( n),..., g l ( n)) Dom(h)}; f( n) = h(g 1 ( n),..., g l ( n)), dla dowolnego n Dom(f). (2) Funkcja f : N k+1 N powstaje przez rekursję prostą z funkcji h : N k+2 N i funkcji g : N k N, jeżeli dla dowolnego n N i dowolnego n N k spełnione są równania f(0, n) = g( n); f(n + 1, n) = h(f(n, n), n, n), przy czym równanie uważamy za spełnione, gdy obie strony są określone i równe, lub obie strony są nieokreślone. Wartość wyrażenia h(f(n, n), n, n) jest określona wtedy i tylko wtedy gdy (n, n) Dom(f) oraz (f(n, n), n, n) Dom(h).

(3) Funkcja f : N k N powstaje z funkcji h : N k+1 N przez zastosowanie operacji minimum, co zapisujemy f( n) = µy[h( n, y) = 0], gdy dla dowolnego n N k : Jeśli istnieje takie m, że h( n, m) = 0 oraz wszystkie wartości h( n, i) dla i < m są określone i różne od zera, to f( n) = m. Jeśli takiego m nie ma, to f( n) jest nieokreślone. Klasa funkcji pierwotnie rekurencyjnych to najmniejsza klasa funkcji całkowitych (tzn. po prostu funkcji, ale żeby nie pozajączkowały nam się z funkcjami częściowymi używanymi w tym rozdziale, będziemy mówili o funkcjach całkowitych) nad N zawierająca funkcje bazowe i zamknięta ze względu na składanie i rekursję prostą. Przykłady: Szczególne funkcje pierwotnie rekurencyjne to funkcja pary (m + n)(m + n + 1) p(m, n) =, 2 + m i dwie funkcje left i right, takie że dla dowolnego n, czyli funkcje odwrotne do funkcji pary. Mamy następujące: n = p(left(n), right(n)), Twierdzenie 1 (o postaci normalnej Kleene go). Każdą funkcję częściowo rekurencyjną można przedstawić w postaci f( n) = left(µy[g( n, y) = 0]), gdzie g jest funkcją pierwotnie rekurencyjną. Udowodnimy teraz, że każda funkcja częściowo rekurencyjna jest definiowalna w rachunku λ. Zaczynamy od najłatwiejszego. Lemat 1. Funkcje bazowe są lambda-definiowalne. Dowód. Wynika to wprost z jednego z dyskutowanych przykładów. Lemat 2. Jeśli funkcja całkowita f powstaje przez składanie λ definiowalnych funkcji całkowitych, to też jest λ definiowalna. Dowód. Wynika to wprost z faktu, że mamy tu do czynienia z funkcjami! Lemat 3. Jeśli funkcja całkowita f powstaje przez rekursję prostą z λ definiowalnych funkcji całkowitych, to też jest λ definiowalna. Dowód. Załóżmy, że f jest zdefiniowana równaniami f(0, n) = g( n); f(n + 1, n) = h(f(n, n), n, n), i że funkcje g i h są definiowalne odpowiednio za pomocą termów G i H. Zdefiniujmy pomocnicze termy Step = λp. succ(pπ 1 ), H(pπ 2 )(pπ 1 )x 1... x m ; Init = 0, Gx 1... x m. Funkcja f jest wtedy definiowalna termem F = λxx 1...x m.xstepinitπ 2. 3

4 Ta definicja wyraża następujący algorytm obliczania wartości funkcji f : generujemy ciąg par (0, a 0 ), (1, a 1 ),..., (n, a n ), gdzie a 0 = g(n 1,..., n m ), każde a i+1 to h(a i, i, n 1,..., n m ) oraz a n = f(n, n 1,..., n m ). Wniosek 1. Funkcje pierwotnie rekurencyjne są λ definiowalne. Ponieważ mamy twierdzenie Kleene go, więc pozosta je już (prawie) tylko pokazać λ definiowalność funkcji określonych przez minimum. Można do tego wykorzystać kombinator punktu stałego Y, rozwiązując odpowiednie równanie stałopunktowe. My to zrobimy trochę delikatniej... Twierdzenie 2. Wszystkie funkcje częściowo rekurencyjne są λ definiowalne. Dowód. Niech f( n) = left(µy[g( n, y) = 0]), gdzie g jest funkcją pierwotnie rekurencyjną. Na mocy poprzedniego wniosku, zarówno g jak left są λ definiowalne pewnymi termami G i L. Określimy pomocniczy term W = λy.ifzero( Gxy)thenλw.Lyelseλw.w(succy)w. Funkcja f jest definiowana termem F = λ x.w 0W. Rzeczywiście, przypuśćmy najpierw, że µy[g( n, y) = 0] = n, oraz left(n) = r. Wtedy mamy taki ciąg redukcji: F n β W 0W β W 1W β... β W nw β Ln β r, gdzie W oznacza wynik podstawienia n na x w termie W. Jeśli minimum jest nieokreślone, to znaczy, że wszystkie wartości g( n, m) są określone i różne od zera, bo funkcja g jest całkowita. Wtedy mamy nieskończony ciąg redukcji F n β W 0W β W 1W β... β W nw β... Ten ciąg jest quasi-lewostronny, a zatem na mocy postaci normalnej nie ma. Co to wszystko ma wspólnego z maszynami Turinga...? Okazuje się, że obliczeniowo rachunek λ jest tak samo dobry. Przypomnijmy, że (deterministyczną, jednotaśmową) maszynę Turinga nad alfabetem A można zdefiniowaś jako algebrę M =, Q, δ, q 0, q a, q r, gdzie: jest skończonym alfabetem, zawierającym A oraz symbol B / A (blank); Q jest skończonym zbiorem stanów; q 0 Q jest stanem początkowym; q a Q jest stanem akceptującym; q r Q jest stanem odrzucającym; δ : (Q \ {q a, q r }) Q { 1, 0, +1} jest funkcją przejścia. Zakładając, że zbiory i Q są rozłączne, można zdefiniować konfigurację maszyny jako trójkę postaci (q, i, w), gdzie q Q, i N oraz w, przy czym utożsamiamy konfiguracje (q, i, w) oraz (q, i, wb). Interpretacja tej definicji jest następująca. Taśma maszyny jest nieskończona w prawo. Na początku taśmy zapisane jest słowo w, dalej w prawo są same blanki, a głowica maszyny zna jduje się w pozycji i. Konfigurację postaci C w = (q 0, 0, w), gdzie w A, nazywamy początkową. Konfiguracje akceptujące (odp. odrzucające ) są zaś postaci (q a, i, w) (odp. (q r, i, w)). Jeśli C = (q, i, w) oraz w = a 0... a k, to następna konfiguracja C jest określona tak: Jeśli δ(q, a) = (b, p, +1) to C = (p, i + 1, w[i b]); Jeśli δ(q, a) = (b, p, 0) to C = (p, i, w[i b]);

Jeśli δ(q, a) = (b, p, 1) to C = (p, i 1, w[i b]). Piszemy C M C, a symbolem M oznaczamy przechodnio-zwrotne domknięcie relacji M. Jeżeli C w M C, gdzie C jest konfiguracją akceptującą (odp. odrzucającą) to mówimy, że maszyna akceptuje (odp. odrzuca) słowo w. Maszyna zatrzymuje się dla wejścia w, wtedy i tylko wtedy, gdy słowo w jest akceptowane lub odrzucane. Obliczenie rozpoczynające się od konfiguracji C 0 to skończony lub nieskończony ciąg konfiguracji C 0 M C 1 M C 2 M... Obliczenie skończone jest akceptujące lub odrzucające, w zależności od ostatniego stanu. Oczywiście maszyna deterministyczna ma obliczenie nieskończone rozpoczynające się od C w wtedy i tylko wtedy, gdy nie zatrzymuje się dla wejścia w. Przez L(M) oznaczamy język złożony ze wszystkich słów akceptowanych przez maszynę M. Zbiór słów L A jest częściowo obliczalny wtedy i tylko wtedy, gdy L = L(M) dla pewnej maszyny M. Jeśli dodatkowo maszyna odrzuca dokładnie te słowa, które nie należą do L, to mówimy, że L jest obliczalny. Jeśli A = {1}, a każdą liczbę naturalną n zinterpretujemy jako ciąg jedynek długości n, to język L(A) można uważać za podzbiór N. Możemy też użyć maszyny Turinga do definiowania funkcji f M : N N. Jeśli M zatrzymuje się dla wejścia n, to za wartość funkcji f M przyjmujemy pozycję głowicy w odpowiedniej konfiguracji końcowej. W przeciwnym razie wartość f M uważamy za nieokreśloną. Twierdzenie 3. Funkcja częściowa f : N k N jest częściowo obliczalna, wtedy i tylko wtedy, gdy jest postaci f M dla pewnej maszyny M. Każda funkcja (częściowo) rekurencyjna jest też (częściowo) obliczalna. 5