Egzamin z Rachunku Lambda.
Transkrypt
Egzamin z Rachunku Lambda.
Egzamin z Rachunku Lambda. Zadania będą jakoś punktowane. Zakładam, że bardzo dobry student powinien rozwiązać zadania za 75% punktów. 60% punktów powinno starczyć na ocenę bardzo dobrze, a 25% – na ocenę dostatecznie. Czas trwania egzaminu: 120 do 150 minut. 28 czerwca 2013 Zad. 1. Podaj definicje: λ-termu, operacji podstawiania ·[· := ·], β-redukcji →β i relacji → →β oraz =β . Postaraj się, aby definicje były precyzyjne i uwzględniały możliwie dużo szczegółów, w tym α-konwersję ≡. Rozwiązanie. W przypadku tego zadania ograniczę się do uwag i przykładowych definicji. W wielu przypadkach przytoczone definicje były z różnych powodów niepełne i nieprecyzyjne. Oczywiście, jedną z przyczyn tego może być brak wiedzy lub złe wyobrażenia. Mało kto pisał coś sensownego na temat α-konwesji. Brakowało informacji, jak podstawiamy za x w wyrażeniu λx . . .. Częstym błędem było opuszczenie w definicji β-redukcji warunków świadczących o jej zgodności. Takie usterki uznałbym za naturalne. Wiele wskazuje na to, że jedną z trudności w tym zadaniu była po prostu konieczność podania definicji. Większość definicji była zbyt lakoniczna. Podawane były fragmenty definicji, często nawet istotne, ale tylko fragmenty. Definicja powinna być możliwie krótka, ale powinna być też możliwie pełna. Definicja powinna umożliwiać precyzyjne sprawdzenie, czy coś jest rzeczą definiowanego rodzaju. Definicje nie muszą być pisane pełnymi zdaniami. Oto dwa przykłady definicji relacji β-redukcji: Relacja β-redukcji →β jest to najmniejsza relacja w zbiorze λ-termów spełniająca dla wszystkich termów M , M1 , M2 i N oraz zmiennych x następujące warunki: 1) (λx.M )N →β M 0 [x := N ], gdzie M 0 jest termem różniącym się od M wyłącznie nazwami zmiennych związanych (M 0 ≡α M ), w którym term N jest podstawialny za zmienną x, 2) jeżeli M1 →β M2 , to M1 N →β M2 N oraz N M1 →β N M2 , 3) jeżeli M1 →β M2 , to λx.M1 →β λx.M2 . Relacja β-redukcji →β jest to najmniejsza relacja zgodna mająca następującą własność: dla wszystkich termów M , M1 , M2 i N oraz zmiennych x zachodzi (λx.M )N →β M 0 [x := N ], gdzie M 0 jest termem różniącym się od M wyłącznie nazwami zmiennych związanych (M 0 ≡α M ), w którym term N jest podstawialny za zmienną x. Zad. 2. Dawno temu na egzaminie z programowania magisterskiego studenci dowodzili, że dla dowolnych λ-termów M , N i R, jeżeli M →β N , to M [x := R] → →β N [x := R]. Udowodnij ten fakt, a jeżeli potrafisz, to wzmocnij sformułowanie i udowodnij mocniejszą wersję tego faktu. Czy prawdziwa jest implikacja λ ` M =β N ⇒ λ ` M [x := R] =β N [x := R]? Możesz założyć, że w termie R nie ma zmiennych wolnych. Rozwiązanie. Nietrudno zauważyć, że rozwiązanie tego zadania polega na wykazaniu trzech rzeczy (druga to wspomniane wzmocnienie): 1) jeżeli M →β N , to M [x := R] → →β N [x := R], 2) jeżeli M →β N , to M [x := R] →β N [x := R], 3) jeżeli M =β N , to M [x := R] =β N [x := R]. Własność 1) wynika oczywiście z własności 2). Bardzo łatwo dowodzi się własność 3). Bierzemy relację R0 = {hM, N i ∈ Λ2 : M [x := R] =β N [x := R]}. Powinno być oczywiste, że jest to relacja zwrotna, symetryczna i przechodnia. Własność 2) oznacza, że R0 zawiera relację →β . Oznacza to na mocy definicji → →β , 0 że → →β ⊆ R . Z własności 3) wynika, że R2 zawiera relację → →β . Stąd i z definicji relacji =β otrzymujemy zawieranie =β ⊆ R0 , które jest równoważne własności 3). Dalej wystarczy dowieść własność 2). Aby to zrobić, stosujemy tę samą metodę. Definiujemy relację R = {hM, N i ∈ Λ2 : M [x := R] →β N [x := R]}. Łatwo dowodzi się, że jest to relacja zgodna (dowód pomijam), a cała trudność polega na wykazaniu, że do relacji R należą pary złożone z redeksu i reduktu. Jeżeli to uda nam się zrobić, to z definicji →β otrzymamy zawieranie →β ⊆ R, które jest równoważne własności 2). Weźmy redeks (λy.K)L i redukt K[y := L]. Ze względu na α-konwersję możemy założyć, że y 6= x. O tej redukcji mamy wykazać, że ((λy.K)L)[x := R] →β K[y := L][x := R]. Zauważmy, że ((λy.K)L)[x := R] = (λy.(K[x := R]))L[x := R] →β K[x := R][y := L[x := R] = K[y := L][x := R] Ostatnia równość wynika ze znanej własności podstawiania (patrz listy zadań) zachodzącej przy założeniu, że y 6∈ F V (R). Założenie to jest prawdziwe, bo R nie ma zmiennych wolnych. 2 Zad. 3. Czy w λ-rachunku zachodzi równość (λxyz.(xz)(yz))λu.u =β (λv.vλyzu.u)λx.x? Zad. 4. Czy w λ-rachunku jest prawdziwa równość (λy.(λx.M ))N = λx.((λy.M )N )? Ewentualnie, w jakich przypadkach ta równość jest prawdziwa? Oczywiście, x i y to różne zmienne. Rozwiązanie. Zauważmy, że (λy.(λx.M ))N →β (λx.M )[y := N ] = λx.M [y := N ] oraz λx.((λy.M )N ) →β λx.M [y := N ]. Wykonanie pierwszej β-redukcji jest możliwe przy założeniu, że term N jest podstawialny w λx.M za zmienną y, wykonanie drugiej – przy założeniu, że term N jest podstawialny w λx.M za zmienną y. Ponieważ drugie z założeń jest słabsze, więc przyjmijmy je. W takiej sytuacji mamy zagwarantowaną poprawność drugiej redukcji, a poprawność pierwszej na mocy definicji podstawialności zależy od tego, czy zmienne x i y występują odpowiednio w termach N i M . Jeżeli przynajmniej jedna nie występuje, to N będzie podstawialny za y w λx.M , pierwsza redukcja też będzie poprawna i interesujące nas termy będą równe w lambda rachunku. W przeciwnym razie, pierwsza z redukcji nie została wykonana poprawnie i nie wiemy, czy zachodzi równość z treści zadania. Łatwo jednak podać przykłady, że ta równość nie zachodzi. Przyjmijmy, że M = yx i N = x. Wtedy (λy.(λx.M ))N = (λy.(λx.yx))x ≡α (λy.(λz.yz))x →β λz.xz (musimy wykonać α-konwersję) oraz λx.((λy.M )N ) = λx.((λy.yx)x) →β λx.xx. Znaleźliśmy więc postacie normalne termów po obu stronach interesującej nas równości, są one różne, a więc na mocy twierdzenia Churcha-Rossera w tym przypadku tej równości nie da się dowieść. 2 Zad. 5. Dla liczby naturalnej n oblicz (λxyz. x(λpq.q(py))(Kz)I)cn+1 . Rozwiązanie. Ładne rozwiązanie tego zadania zaproponował Michał Przystupa. (λxyz. x(λpq.q(py))(Kz)I)cn+1 →β = → →β = → →β →β → →β = λyz. cn+1 (λpq.q(py))(Kz)I λyz. (λf x.f n+1 (x))(λpq.q(py))(Kz)I λyz. (λpq.q(py))n+1 (Kz)I λyz. (λpq.q(py))((λpq.q(py))n (Kz))I λyz. I((λpq.q(py))n (Kz))y λyz. (λpq.q(py))n (Kz)y λyz. y n (z) cn . Ostatnia redukcja wynika z wzoru (λpq.q(py))n (Kz)y →β y n (z) dla n > 0, łatwego do wykazania przez indukcję (dla n = 0 mamy równość). Drugi krok indukcyjny wykonujemy w następujący sposób: (λpq.q(py))n+1 (Kz)y = → →β → →β = (λpq.q(py))((λpq.q(py))n (Kz))y y((λpq.q(py))n (Kz)y) y(y n (z)) y n+1 (z). 2 Zad. 6. 1) Wymień własności redukcji termów z kolorowymi redeksami. Jakie własności różnią tę redukcję i β-redukcję. 2) Przypuśćmy, że M → →β N . Przyjmijmy, że λ-termy M 0 i N 0 otrzymujemy redukując odpowiednio w termach M i N najbardziej lewy (pierwszy) redeks. Pokaż, że M 0 → →β N 0 . Wskazówka: oczywiście, w tym zadaniu przydatne są termy z kolorowymi redeksami. Trudno jednak pokolorować redeksy od razu, na początku. Raczej trzeba to robić stopniowo. Rozwiązanie. Pierwszej części zadania dotyczą uwagi podobne do zamieszczonych w rozwiązaniu zadania 1. Oczekiwałem przytoczenia takich oto faktów: 1) Dla redukcji kolorowych redeksów zachodzi twierdzenie Churcha-Rossera, a więc dla dowolnych termów M , N1 i N2 z kolorowymi redeksami takich, że M → →kβ N1 oraz M → →kβ N2 istnieje term K taki, że N1 → →kβ K oraz N2 → →kβ K. Analogiczne twierdzenie zachodzi dla β-redukcji. 2) Nie istnieje nieskończony ciąg termów M1 , M2 , M3 , . . . z kolorowymi redeksami takich, że Mn →kβ Mn+1 dla wszystkich n ∈ N . Zwykła β redukcja nie ma tej własności. 3) Każdy term z kolorowymi redeksami może zostać zredukowany do postaci normalnej. Zwykła β redukcja nie ma tej własności. 4) Postać normalna termu z kolorowymi redeksami jest jednoznacznie wyznaczona. Dla zwykłej β-redukcji postać normalna jest tylko najwyżej jedna. 5) Term z n kolorowymi redeksami można zredukować w n krokach do postaci normalnej. Druga część zadania wiąże się trochę z twierdzeniem Churcha-Rossera. Jeżeli term M redukujemy na dwa sposoby, np. M →β M 0 oraz M →β N , to z twierdzenia Churcha Rossera otrzymujemy term N 0 taki, że M 0 → →β N 0 oraz N → →β N 0 . W tym zadaniu mamy trochę inną sytuację: wiemy, że M →β M 0 , M →β N oraz N →β N 0 , i chcemy wykazać, że M 0 → →β N 0 . To nie jest twierdzenie egzystencjalne. Taki fakt chyba trudno wyprowadzić z twierdzenia Churcha-Rossera. Z drugiej jednak strony, jedna z metod dowodu twierdzenia Churcha-Rossera może polegać na wykazaniu treści zadania (nawet jego fragmentu). Zadanie to może więc wynikać z odpowiednio prowadzonego dowodu twierdzenia Churcha-Rossera. Zadanie rozwiązujemy przez indukcję ze względu na liczbę kroków w redukcji od M do N . Przypuśćmy, że ta redukcja ma postać M → →β Mk →β N . Najpierw zajmujemy się ostatnim krokiem tej redukcji. Przyjmijmy, że w redukcji Mk →β N został zredukowany redeks Q, R oznacza pierwszy redeks termu Mk , a S - pierwszy redeks termu N . Ponieważ nic nie wiemy o redukcji M →β N , może się zdarzyć, że Q = R. Redukując w termie Mk redeks R otrzymujemy Mk0 . W rozważanym przypadku Mk0 = N i redukując w termie N redeks S otrzymujemy term N 0 . Założenie indukcyjne stosujemy do redukcji termu M do Mk . Wobec tego, term M 0 mogę zredukować do termu Mk0 = N i dalej do N 0 . Jeżeli Q 6= R, to wygodnie posłużyć się kolorowymi redeksami. W termie Mk mamy dwa redeksy Q i R. Możemy je pomalować na wybrany kolor. Redeks R leży na lewo od Q. Redukując najpierw redeks Q nic nie zmienia się przed R, w szczególności redeks R jakoś przekształca się, ale pozostaje pierwszym i – wobec tego – staje się redeksem S. Redukując S otrzymujemy term N 0 nie zawierający już kolorowych redeksów. Term N 0 jest więc postacią normalną termu Mk dla redukcji kolorowych redeksów. Term Mk możemy też redukować inaczej, zaczynając od redeksu R. Po pierwszym kroku otrzymujemy Mk0 , a redukując dalej kolorowe redeksy w końcu otrzymamy postać normalną termu Mk , czyli term N 0 . Tak, jak w poprzednim przypadku, korzystając z założenia indukcyjnego, konstruujemy redukcję świadczącą o tym, że M 0 → →β N 0 . 2 Zad. 7. Podaj term F spełniający równość F x = gx(F (px)). Oczywiście, pokaż, że wskazany przez Ciebie term spełnia tę równość. Rozwiązanie. Maksymalne oceny otrzymywały osoby, które podały konkretny term F . Dobre rozwiązanie mogło mieć postać: Przyjmijmy, że H = λf x.gx(f (px)), A = λaf.f (aaf ), Θ = AA, F = ΘH. Wtedy Fx = = → →β = → →β ΘHx = AAHx (λaf.f (aaf ))AHx H(AAH)x = H(ΘH)x = HF x (λf x.gx(f (px)))F x gx(F (px)). 2 Zad. 8. Rozważamy rachunek λ z typami (a la Curry). 1) Przytocz definicję relacji typowania. 2) Przedstaw algorytm, który dla danego λ-termu rozstrzyga, czy ma on typ i ewentualnie znajduje go. 3) Jakie własności mają typy znajdowane przez ten algorytm? Sformułuj odpowiednie twierdzenia. 4) Znajdź najogólniejszy typ termu CC dla C = λxyz.xzy. 5) Podaj formalne wyprowadzenie typu termu λxyz.x(yz). Rozwiązanie. Na razie tylko część 3). Przyjmijmy, że podany algorytm nazywa się A. 1) Jeżeli algorytm A uruchomiony z termem M zwróci kontekst Γ i typ σ, to Γ ` M : σ, a więc term M ma w kontekscie Γ typ σ, 2) Jeżeli term M ma typ w pewnym kontekscie, to algorytm A uruchomiony z termem M zakończy pracę podając pewien kontekst i pewien typ. 3) Jeżeli term M ∈ Λ0 (bez zmiennych wolnych) ma typ, to algorytm A uruchomiony z daną M zwróci pusty kontekst i najbardziej ogólny typ σ0 termu M , tzn. {σ ∈ T | ` M : σ} = {σ0 θ|θ jest dowolnym podstawieniem}. 2 4) W szczególności, jeżeli term M ∈ Λ0 (bez zmiennych wolnych) ma typ, to ma najbardziej ogólny typ, czyli taki, że {σ ∈ T | ` M : σ} = {σ0 θ|θ jest dowolnym podstawieniem}. 2