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
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