|
Ten artykuł od 2020-12 wymaga zweryfikowania podanych informacji.Należy podać wiarygodne źródła w formie przypisów bibliograficznych. Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte.Sprawdź w źródłach:
Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary) Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu. |
Arytmetyka w rachunku lambda – rodzaj arytmetyki związanej z rachunkiem lambda, opierającej się na liczbach naturalnych Churcha.
Następnik
Funkcja następnika jest zdefiniowana następująco:
Procedura ta nie robi nic innego jak „dodaje” jeszcze jedno wywołanie funkcji do pewnej liczby, przez co staje się ona liczbą o jeden większą.
Dodawanie
Aby dodać dwie liczby naturalne Churcha i należy -krotnie zaaplikować funkcję następnika do liczby (lub na odwrót, dodawanie jest przemienne):
Z definicji liczb naturalnych Churcha wiemy, że wywołując funkcję pewnej liczby na dwóch argumentach – funkcji i zmiennej aplikujemy funkcję -krotnie do zmiennej
Mnożenie
Mnożenie w rachunku lambda zdefiniowane jest następująco:
Obliczając według tej funkcji iloczyn -krotnie powielamy term po czym podstawiając przy każdym -owym powieleniu, dostajemy wywołań – w sumie
Poprzednik
Poprzednikiem liczby nazywamy taką liczbę że następnikiem liczby jest (liczba nie ma poprzednika, przez co jest ona poprzednikiem siebie samej).
W zapisie matematycznym:
W rachunku lambda stworzenie takiej funkcji nie jest tak łatwe jak stworzenie funkcji następnika Do tego posługujemy się strukturami danych opisanymi w artykule rachunek lambda.
Tworzymy funkcję która z pary tworzy parę
Funkcja poprzednika liczby jest zdefiniowana jako -krotna aplikacja funkcji do pary a potem pobranie drugiego jej elementu:
Odejmowanie
Odejmowanie, podobnie jak w przypadku dodawania, jest zdefiniowane jako wielokrotna aplikacja funkcji poprzednika (w tym wypadku pamiętając o przemienności – odejmowanie przemienne nie jest):
Potęgowanie
Aby policzyć potęgę należy wykorzystać to, że jest naturalne. Wiadomo, że:
Tak więc na przykład w rachunku lambda będzie zapisane jako:
Widzimy, że jest to parokrotna aplikacja funkcji – można by posłużyć się podobnym algorytmem jak przy dodawaniu lub odejmowaniu, gdyby nie to, że jest funkcją dwuargumentową.
W takim wypadku możemy zdefiniować funkcję która pobiera parę i zwraca parę
Więc aplikując -krotnie funkcję do pary i zabierając jej pierwszy element otrzymamy