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