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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

10.6 Operacja minimum<br />

Operacją minimum nazywamy przyporządkowa<strong>nie</strong> funkcji naturalnej g : N n+1 →<br />

N funkcji f : N n → N oznaczanej wzorem<br />

f(k 1 , . . . , k n ) = µm(g(k 1 , . . . , k n , m) = 0)<br />

przyjmującą jako wartość f(k 1 , . . . , k n ) najm<strong>nie</strong>jszą liczbę m spełniającą warunek<br />

g(k 1 , . . . , k n , m) = 0.<br />

Definicja ta z kilku powodów może być <strong>nie</strong>jasna. Możemy ją stosować dla różnych<br />

rodzajów funkcji g. W najbardziej ogólnym przypadku, g może być dowolną<br />

naturalną funkcją częściową. Wtedy pojawiają się <strong>nie</strong>jasności związane z definicją<br />

wartości funkcji f. Jest jednak naturalny algorytm pozwalający na oblicza<strong>nie</strong><br />

wartości f. Algorytm ten przeszukuje kolejno liczby naturalne dopóty, dopóki <strong>nie</strong><br />

znajdzie wartości m spełniającej warunek g(k 1 , . . . , k n , m) = 0. Operacja minimum<br />

powinna być tak rozumiana, aby ten algorytm pozwalał na wylicza<strong>nie</strong> wartości<br />

funkcji definiowanych za pomocą tej operacji. Nietrudno zauważyć, że ten<br />

algorytm zawodzi w dwóch sytuacjach: jeżeli <strong>nie</strong> jest w sta<strong>nie</strong> obliczyć potrzebnej<br />

wartości funkcji g, (na przykład zawsze oblicza g(k 1 , . . . , k n , 0)), lub gdy funkcja g<br />

dla odpowiednich parametrów <strong>nie</strong> przyjmuje wartości 0. W tych dwóch przypadkach<br />

funkcja definiowana za pomocą operacji minimum <strong>nie</strong> jest określona.<br />

O operacji minimum mówimy, że jest efektywna, jeżeli stosujemy ją wyłącz<strong>nie</strong><br />

do całkowitych funkcji g takich, że<br />

∀k 1 , . . . , k n ∃m g(k 1 , . . . , k n , m) = 0.<br />

Będziemy też rozważać operację minimum ograniczoną do całkowitych funkcji<br />

g.<br />

10.7 Funkcje rekurencyjne<br />

Klasa całkowitych funkcji rekurencyjnych jest najm<strong>nie</strong>jszą klasą funkcji zawierającą<br />

Z, S oraz U n,k i zamkniętą ze na złoże<strong>nie</strong>, rekursję prostą i efektywną operację<br />

minimum.<br />

Klasa (częściowych) funkcji rekurencyjnych jest najm<strong>nie</strong>jszą klasą funkcji zawierającą<br />

Z, S oraz U n,k i zamkniętą ze na złoże<strong>nie</strong>, rekursję prostą i operację<br />

minimum.<br />

Definicja klasy funkcji rekurencyjnych wymaga wyjaś<strong>nie</strong>nia, co to jest złoże<strong>nie</strong><br />

funkcji częściowych i jak definiujemy przez rekursję prostą w przypadku takich<br />

funkcji. Te pojęcia można wyjaśnić podob<strong>nie</strong>, jak operację minimum, wskazując<br />

naturalne algorytmy, które powinny obliczać odpowied<strong>nie</strong> funkcje i żądając zgodności<br />

definicji i obliczeń za pomocą odpowied<strong>nie</strong>go algorytmu.<br />

Zgod<strong>nie</strong> z tezą Churcha, klasa częściowych funkcji rekurencyjnych jest klasą<br />

funkcji naturalnych, które są obliczalne w jakimkolwiek, intuicyjnym sensie.<br />

Klasę funkcji rekurencyjnych można definiować na wiele sposobów. Na przykład,<br />

można w definicji tej klasy <strong>nie</strong> wspominać o rekursji prostej. Rekursja prosta<br />

jest potrzebna do zdefiniowania trzech funkcji: dodawania, mnożenia i funkcji charakterystycznej<br />

relacji <strong>nie</strong>równości. Mając te trzy funkcje, możemy kodować ciągi<br />

liczb naturalnych za pomocą liczb naturalnych, a to z kolei pozwala rekursję prostą<br />

zastąpić operacją minimum.<br />

Można też ograniczać rolę operacji minimum. Można stosować ją wyłącz<strong>nie</strong> do<br />

funkcji całkowitych. Bardzo silny rezultat tego typu wyraża twierdze<strong>nie</strong> o postaci<br />

normalnej.<br />

29

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

Saved successfully!

Ooh no, something went wrong!