24.01.2014 Views

Formalny opis rachunku lambda i nie tylko, kolejna wersja

Formalny opis rachunku lambda i nie tylko, kolejna wersja

Formalny opis rachunku lambda i nie tylko, kolejna wersja

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Liczbę naturalną k będziemy w <strong>lambda</strong> <strong>rachunku</strong> reprezentować jako tzw. numerał<br />

Churcha c n dany wzorem<br />

c n = λfx.f n (x).<br />

Z twierdzenia Churcha-Rossera wynika, że różne liczby naturalne są reprezentowane<br />

przez numerały Churcha, o których w <strong>lambda</strong> <strong>rachunku</strong> <strong>nie</strong> można dowieść,<br />

że są równe.<br />

Numerały Churcha są oczywiście termami w postaci normalnej.<br />

Znane są też inne sposoby reprezentowania liczb naturalnych w <strong>lambda</strong> <strong>rachunku</strong>.<br />

Przyjrzyjmy się jeszcze numerałom Churcha. Ich intuicyjna interpretacja jest<br />

następująca:<br />

1) c n fx = f n (x) to n-krotne aplikowa<strong>nie</strong> funkcji f do x,<br />

2) c n f = λx.f n (x) to funkcja, która jest n-krotnym złoże<strong>nie</strong>m funkcji f,<br />

3) c n = λfx.f n (x) to abstrakcyjna operacja n-krotnego składania.<br />

Mamy wzór c n f(fx) = c n+1 fx. Stąd term S = λafx.af(fx) spełnia<br />

Sc n = λfx.c n f(fx) = λfx.f n+1 (x) = c n+1 .<br />

Tak więc term S definiuje operację następnika (przyporządkowującą liczbie naturalnej<br />

n liczbę n + 1). Mamy także<br />

(λafx.f(afx))c n = λfx.f(c n fx) = λfx.f(f n (x)) = c n+1 .<br />

Podob<strong>nie</strong>, z wzoru c n f(c m fx) = f n+m (x) wynika, że termy<br />

λabfx.af(bfx) oraz λabfx.bf(afx)<br />

definiują dodawa<strong>nie</strong> liczb naturalnych.<br />

Natomiast z wzoru c m (c n f)x = f mn (x) otrzymujemy, że termy<br />

λabfx.a(bf)x oraz λabfx.b(af)x<br />

definiują mnoże<strong>nie</strong> liczb naturalnych. Powyższy wzór, także przytoczona wyżej<br />

interpretacja numerałow Churcha sugerują także wzór: c m (c n f) = f mn . Zauważmy,<br />

że także<br />

(λabf.a(bf))c m c n = c mn .<br />

10.3 Lambda definiowalność wg Churcha<br />

Będziemy rozważać częściowe funkcje wielu zmiennych naturalnych przyjmujące<br />

wartości naturalne. Funkcje częściowe n zmiennych to takie, które <strong>nie</strong>ko<strong>nie</strong>cz<strong>nie</strong><br />

są określone dla wszystkich możliwych układów n liczb naturalnych. Funkcje określone<br />

dla dla wszystkich możliwych układów argumentów nazywamy całkowitymi.<br />

Tak więc funkcje całkowite są szczególnym przypadkiem funkcji częściowych.<br />

Funkcja częściowa dwóch zmiennych f : N 2 → N jest <strong>lambda</strong> definiowalna,<br />

jeżeli dla pewnego termu F ∈ Λ są spełnione dla dowolnych m, n ∈ N następujące<br />

warunki:<br />

25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!