1 Wokół pracy Gödla
Transkrypt
1 Wokół pracy Gödla
1 1 1.1 Wokół pracy Gödla Trochę o samej pracy Na początku XX w. coraz bardziej popularny wśród matematyków stawał się formalizm. Jest to pogląd, że matematyka polega na formalnym badaniu logicznych konsekwencji aksjomatów, które mogą wyrażać własności dowolnych, abstrakcyjnych pojęć, w tym związanej z teorią mnogości nieskończoności. Takie stanowisko z różnych powodów (kłopoty z teorią mnogości, istnienie mało intuicyjnej geometrii nieeuklidesowej) wymagało wyjaśnienia kwestii niesprzeczności aksjomatów. Wcześniej nie była ona istotna: matematyka, podobnie jak fizyka, miała opisywać istniejącą rzeczywistość i wydawało się, że podstawowe idee matematyczne mogą być weryfikowane przez odwołanie się do rzeczywistości. Nieskończoność nie występuje w naturze i nie może być badana bezpośrednio. Jest jednak bardzo ważna i nie powinna znajdować się poza zainteresowaniami matematyków. Już w 1900 roku podczas II Międzynarodowego Kongresu Matematyków David Hilbert postulował konieczność wykazania, że matematyka jest pewna i niezawodna. Później, w latach dwudziestych rozwijał program, który miał doprowadzić do wykazania środkami finitystycznymi, a więc pewnymi, że matematyka może bezpiecznie, nie popadając w antynomie, posługiwać się pojęciem nieskończoności. Kurt Gödel w swojej głownej pracy Über formal unentscheidbare Sätze der ’Principia Mathematica’ und verwandter Systeme, I podważył wykonalność programu Hilberta. Już to wystarczyło, by praca odegrała istotną rolę w rozwoju matematyki. Z punktu widzenia informatyki ważny był fakt wykorzystania w tej pracy funkcji, które zostały nazwane rekurencyjnymi, a dzisiaj nazywają się pierwotnie rekurencyjnymi. Wcześniej pojawiały się prace na ich temat, na przykład było już wiadomo, że funkcja Ackermanna nie jest pierwotnie rekurencyjna, ale dopiero Gödel znalazł znaczące zastosowanie tych funkcji. Klasa funkcji wykorzystywanych przez Gödla w krótkim czasie została rozszerzona do klasy funkcji rekurencyjnych, które okazały się formalizacją obliczalności. Tak więc Gödel pierwszy raz w historii otrzymał znaczący rezultat posługując się pojęciem obliczalności. 1.2 Funkcje rekurencyjne, potrzebne pojęcia i oznaczenia Będziemy rozważać funkcje (być może wieloargumentowe), które są określone dla pewnych argumentów będących liczbami naturalnymi i przyjmujące wartości naturalne. Jeżeli f jest taką funkcją, to będziemy pisać, że f : N k → N . Ten zapis ma więc znaczenie inne niż zwykle. Tak rozumiane funkcje nazywa się częściowymi. Funkcja F określona dla wszystkich układów ~x ∈ N k nazywa się całkowitą. Najczęściej dopiero z kontekstu będzie wynikać, czy mówimy o funkcjach całkowitych, czy częściowych. Przyjmijmy, że In,k (x1 , . . . , xk ) = xi oraz S(x) = x + 1. Funkcją charakterystyczą zbioru R ⊆ N k nazywamy całkowitą funkcję chR zdefiniowaną wzorem ( 0 jeżeli ~x ∈ R, chR (~x) = 1 w przeciwnym razie. Zamiast różnicą posługujemy sie raczej ograniczoną różnicą zdefiniowaną wzorem x − y = max{0, x − y} (obie różnice powinny być oznaczane różnymi symbolami, ale nie będą). 2 Będziemy też rozważać kilka sposobów definiowania nowych funkcji. Jeżeli mamy funkcję f : N k → N i k funkcji gi : N n → N , to możemy zdefiniować funkcję H przyjmując, że h(x1 , . . . , xn ) = f (g1 (x1 , . . . , xn ), . . . , gk (x1 , . . . , xn )). Ten sposób definiowania nazywamy składaniem funkcji. Oprócz składania czasem rozważa się podstawianie. Jest to operacja trudna do precyzyjnego zdefiniowania. Przykładem funkcji definiowanej za pomocą podstawiania jest na przykład funkcja h(x1 , . . . , xn , y, z) = f (y, g(x2 , x3 , . . . , xn ), x2 , g 0 (x1 , x2 ), g 00 (x1 , xn )). Najprościej przyjąć, że jeżeli możemy posługiwać się funkcjami In,k i potrafimy składać funkcje, to potrafimy także definiować funkcje za pomocą podstawiania. Mając dane funkcje f : N k+2 → N i g : N k → N , to możemy zdefiniować funkcję h : N k+1 → N przyjmując, że spełnia ona następujące równości: h(x1 , . . . , xk , 0) = g(x1 , . . . , xk ) h(x1 , . . . , xk , y + 1) = f (h(x1 , . . . , xk , y), y, x1 , . . . , xk ). O tak zdefiniowanej funkcji mówimy, że została zdefiniowana za pomocą (schematu) rekursji prostej. Schemat rekursji prostej stosujemy również dla k = 0. Wtedy przyjmuje on postać h(0) = c oraz h(y + 1) = f (h(y), y), gdzie c jest pewną liczbą naturalną. W końcu dla funkcji f : N k+1 → N definiujemy funkcję h(x1 , . . . , xk ) = µy(f (x1 , . . . , xk , y) = 0) przyjmującą jako wartość najmniejszą liczbę y taką, że f (x1 , . . . , xk , y) = 0. Mówimy o tak zdefiniowanej funkcji h, że została zdefiniowana za pomocą operacji minimum. Zajmujemy się też efektywną operację minimum, a więc taką, która jest stosowana pod pewnymi warunkami, tylko do całkowitych funkcji f , które dodatkowo dla każdych x1 , . . . , xk przyjmują dla pewnego y wartość f (x1 , . . . , xk , y) = 0. Z każdym przedstawionym sposobem definiowania nowych funkcji powinniśmy wiązać algorytm pozwalający na obliczanie wartości definiowanych w ten sposób funkcji. Aby obliczyć wartość złożenia, najpierw obliczamy wartości funkcji wewnętrznych dla danych argumentów, a następnie wartość funkcji zewnętrznej dla znalezionych wartości funkcji wewnętrznych. Obliczenie wartości h(~x, n) funkcji h definiowanej przez rekursję prostą polega na obliczeniu, dla i od 0 do n, zgodnie z podanymi w definicji wzorami, kolejnych wartości h(~x, i). Aby wyliczyć wartość h(~x) funkcji h zdefiniowanej za pomocą operacji minimum obliczamy kolejne wartości funkcji f (~x, i) występującej w definicji h dla kolejnych liczb naturalnych począwszy od 0, i robimy to tak długo, aż znajdziemy (pierwsze) y takie, że f (~x, y) = 0. W szczególności, wszystkie szczegóły w podanych definicjach trzech sposobów definiowania funkcji powinny zostać tak sprecyzowane, aby zapewnić zgodność definicji z możliwością obliczania wartości za pomocą podanych algorytmów. 1.3 Definicja klasy funkcji rekurencyjnych Definicje funkcji rekurencyjnych zmieniały się wraz z rozwojem badań. Pierwszą definicję podał Gödel. 3 Definicja 1.1 Rekurencyjnymi wg Gödla są następujące funkcje: następnik S, funkcje stałe, In,k i wszystkie funkcje, które można zdefiniować za pomocą składania i rekursji prostej używając wymienionych. Dzisiaj funkcje z tej klasy nazywamy pierwotnie rekurencyjnymi. Definicję Gödla zmodyfikował i uzupełnił Kleene zachowując jej styl. Przyjął on, że Definicja 1.2 Klasa funkcji rekurencyjnych to najmniejsza klasa funkcji zawierająca In,k , dodawanie, mnożenie, ch< i zamknięta ze względu na złożenie oraz efektywną operację minimum. Funkcje rekurencyjne według Kleene’ego są całkowite. W tamtych czasach unikano funkcji częściowych lub traktowane je jako coś dziwnego i gorszego. W tej sytuacji zdefiniowanie częściowych funkcji rekurencyjnych wymaga dodatkowych pojęć. Definicja 1.3 Zbiór X ⊆ N k jest rekurencyjny, jeżeli jego funkcja charakterystyczna chX jest rekurencyjna. Definicja 1.4 Zbiór X ⊆ N k jest rekurencyjnie przeliczalny, jeżeli jest rzutem zbioru rekurencyjnego, czyli można go zdefiniować warunkiem postaci ~x ∈ X ⇔ ∃y ∈ N R(~x, y) dla pewnej relacji rekurencyjnej R ⊆ N k+1 . Definicję Kleene’ego rozszerza się na funkcje częściowe przyjmując, że Definicja 1.5 Funkcja (częściowa) f jest rekurencyjna wtedy i tylko wtedy, gdy jej wykres Wf = {(~x, y) ∈ N k+1 : f (~x) jest określona i f (~x) = y} jest zbiorem rekurencyjnie przeliczalnym. Dzisiaj klasę (częściowych) funkcji rekurencyjnych definiujemy przyjmując, że Definicja 1.6 Funkcje In,k , dodawanie, mnożenie, ch< są rekurencyjne, a klasa funkcji rekurencyjnych jest najmniejszą zamkniętą ze względu na złożenie oraz operację minimum. Podana definicja ta jest równoważna definicji częściowych funkcji rekurencyjnych według Kleene’ego. Klasę funkcji rekurencyjnych można też zdefiniować przyjmując, że Definicja 1.7 Klasa funkcji rekurencyjnych jest najmniejszą klasą funkcji (częściowych) zawierająca funkcji In,k i zamknięta ze względu na składanie, rekursję prostą i operację minimum. 4 1.4 Kilka uwag Klasa funkcji rekurencyjnych (częściowych) została zdefiniowana na trzy sposoby. Można dowieść, że definicje 1.5, 1.6 oraz 1.7 są równoważne. W zastosowaniach najwygodniejsza jest chyba definicja 1.7 i tą będziemy się najczęściej posługiwać. Definicja 1.3 obowiązuje bez względu na to, jak są zdefiniowane funkcje rekurencyjne. Wobec tego zbiory rekurencyjne zostały zdefiniowane nawet na cztery sposoby. Wszystkie te definicje są równoważne. Także zbiory rekurencyjnie przeliczalne zawsze definiujemy zgodnie z definicją 1.4 i zawsze otrzymujemy to samo pojęcie. Dowodzi się również, że klasa całkowitych funkcji rekurencyjnych opisana defincją 1.5 jest równa klasie tych całkowitych funkcji, które są rekurencyjne np. zgodnie z definicją 1.7. Zdefiniowane pojęcia mają też odpowiedniki informatyczne. Klasa funkcji rekurencyjnych jest identyczna z klasą naturalnych funkcji obliczalnych. Zbiory rekurencyjne to zbiory rozstrzygalne. Zbiory rekurencyjnie przeliczalne pokrywają się ze zbiorami rozpoznawalnymi, czyli semirozstrzygalnymi. 1.5 Najprostsze własności funkcji rekurencyjnych (Posługujemy się definicją 1.7.) Całkowite funkcje stałe są rekurencyjne. Takie funkcje jednej zmiennej definiujemy przez rekursję prostą wzorami h(0) = c oraz h(n + 1) = I2,1 (h(n), n). Funkcje stałe wielu zmiennych definiujemy jako złożenia funkcji stałych jednej zmiennej i odpowiednich funkcji In,k . Funkcja f zdefiniowana wzorem f (n) = n−1 = max(n−1, 0) jest rekurencyjna, gdyż może zostać zdefiniowana w następujący sposób przez rekursję prostą: f (0) = 0 oraz f (n + 1) = I2,2 (f (n), n). Funkcja g zdefiniowana wzorem g(n, m) = n − m = max(n − m, 0) jest rekurencyjna, gdyż może zostać zdefiniowana w następujący sposób przez rekursję prostą: g(n, 0) = I1,1 (n) oraz g(n, m + 1) = f (I2,1 (g(n, m), n)), gdzie f oznacza wyżej zdefiniowaną funkcję. Funkcja k(n, m) = 1 − (m − n) jest rekurencyjna. Bardziej formalny dowód tego faktu wynika z wzoru k(n, m) = g(h(I2,1 (n, m)), g(I2,2 (n, m), I2,1 (n, m)), gdzie g jest wyżej zdefiniowaną funkcją, a h jest jednoargumentową funkcją stale równą 1. Nietrudno zauważyć, że k jest funkcją całkowitą przyjmującą dwie wartości: 0 i 1. Ponadto, warunek k(n, m) = 0 zachodzi wtedy i tylko wtedy, gdy n < m. Wobec tego, funkcja k jest funkcją charakterystyczną relacji mniejszości, czyli k(n, m) = ch< (n, m). Wynika stąd, że relacja mniejszości jest rekurencyjna, czyli zbiór {(n, m) ∈ N 2 : n < m} jest rekurencyjny. Rekurencyjna jest także funkcja zdefiniowana wzorem S(n) = µm(ch< (n, m) = 0). 5 Nietrudno sprawdzić, że S jest znaną operacją następnika, S(n) = n + 1. Bardzo często będziemy stosować definicje takie, jak powyższa, czyli postaci s(~n) = µm(chR (~n, m) = 0). Takie definicje będzie zapisywać krócej, w następującej formie: s(~n) = µm R(~n, m). W szczególności, aby zdefiniować następnik możemy napisać S(n) = µm(n < m). Rekurencyjność następnika pozwala wykazać, że rekurencyjnymi są także dodawanie, mnożenie, potęgowanie i wiele innych funkcji naturalnych. Mamy też Wniosek 1.8 Funkcje pierwotnie rekurencyjne są rekurencyjne. Matematycy na ogół nie posługują się funkcjami takimi, jak funkcja Ackermanna. Zdecydowana większość znanych, „zwykłych” całkowitych funkcji naturalnych to funkcje pierwotnie rekurencyjne, a więc także rekurencyjne. 1.6 Zbiory (relacje) rekurencyjne Klasa zbiorów rekurencynych jest zamknięta ze względu na dopełnienie i sumę mnogościową. Przypuśćmy, że R, S ⊆ N k . Wtedy funkcja charakterystyczna dopełnienia R wyraża się wzorem chN k \R (n1 , . . . , nk ) = 1 − chR (n1 , . . . , nk ), a funkcja charakterystyczna sumy R i S jest dana wzorem chR∩S (n1 , . . . , nk ) = chR (n1 , . . . , nk ) · chS (n1 , . . . , nk ). Co więcej, klasa zbiorów rekurencyjnych jest zamknięta ze względu na definiowanie za pomocą alternatywy (i negacji). W szczególności, jeżeli R i S są relacjami rekurencyjnymi pewnej liczby (np. dwóch) zmiennych, to relacja T = {(x, y, z, t) ∈ N 4 : (x, y) ∈ R ∨ (x, z) ∈ S} także jest rekurencyjna. Symbole x, y, z i t mogą oznaczać pojedyńcze liczby, a także układy liczb złożone z dowolnej ilości liczb: zera, jednej lub wielu liczb. Mamy bowiem chT (x, y, z, t) = chR (x, y) · chS (x, z) = = chR (I4,1 (x, y, z, t), I4,2 (x, y, z, t)) · chS (I4,1 (x, y, z, t), I4,3 (x, y, z, t)). Tak więc, jeżeli formuły atomowe definiują relacje rekurencyjne, to dowolna zbudowana z nich formuła rachunku zdań też definiuje relację rekurencyjną. Lemat 1.9 (o podstawianiu) Jeżeli f : N 2 → N jest całkowitą funkcją rekurencyjną, a R ⊆ N 3 jest relacją rekurencyjną, to zbiór S = {(x, y, z, t) ∈ N 4 : (f (x, y), x, z) ∈ R} też jest relacją rekurencyjną, jak również inne, analogicznie definiowane relacje. 6 Dowód. Funkcja charakterystyczna relacji S wyraża się wzorem chS (x, y, z, t) = chR (f (x, y), x, z). Założenia o całkowitości f nie można pominąć. Gwarantuje ono całkowitość wyżej zdefiniowanej funkcji chS . 2 Z poprzedniego rozdziału wynika, że relacja mniejszości < jest rekurencyjna. Lemat o podstawianiu implikuje, że także relacja większości > jest rekurencyjna. Ich dopełnienia, czyli relacje ¬ i też są rekurencyjne. Relacja równości jest rekurencyjna jako przekrój relacji ¬ i . To samo można powiedzieć o relacji różności 6=. Klasa relacji rekurencyjnych jest zamknięta ze względu na definiowanie przy użyciu kwantyfikatorów ograniczonych. Niech R ⊆ N 2 będzie relacją rekurencyjną. Wtedy rekurencyjne są także zbiory E = {(x, y) ∈ N 2 : ∃z < y (x, z) ∈ R} oraz A = {(x, y) ∈ N 2 : ∀z < y (x, z) ∈ R}. Aby się o tym przekonać zdefiniujmy funkcję i : N 2 → N przyjmując i(x, 0) = 1 oraz i(x, n + 1) = i(x, n) · chR (x, n). Nietrudnosprawdzić, że chE (x, y) = i(x, y), a więc E jest zbiorem rekurencyjnym. Podobnie, przechodząc przez dopełnienia można wykazać, że A jest zbiorem rekurencyjnym. Językiem arytmetyki będziemy nazywać język zawierający następujące symbole: 0, 1, +, ·, < i =. Bogatym językiem arytmetyki będziemy nazywać język arytmetyki rozszerzony o pewną listę symboli funkcyjnych. Korzystając z takiego języka będziemy zakładać, że że dodatkowe symbole funkcyjne oznaczają całkowite funkcje rekurencyjne. Niech ∆0 oznacza najmniejszą klasę formuł języka arytmetyki (ewentualnie bogatego języka) zawierającą formuły atomowe i zamkniętą ze względu na łączenie formuł za pomocą spójników, poprzedzanie negacją i dopisywanie kwantyfikatorów ograniczonych ∀x < t oraz ∃x < t, gdzie t jest termem, w którym nie występuje zmienna x. Formuła ϕ języka arytmetyki (także bogatego) z k zmiennymi wolnymi definiuje zbiór X ⊆ N k , jeżeli X = {(n1 , . . . , nk ) ∈ N k : N 0 |= ϕ[n1 , . . . , nk ]}, gdzie N 0 jest zwykłym modelem liczb naturalnych uzupełnionym w razie potrzeby o odpowiednie całkowite funkcje rekurencyjne. Wyniki tego rozdziału można podsumować w następujący sposób: Lemat 1.10 Formuły bogatego języka arytmetyki klasy ∆0 definiują zbiory rekurencyjne. 2 Przykład 1.11 Zbiór P liczb pierwszych jest zbiorem rekurencyjnym. Niech ϕ będzie formułą formalizującą zwykłą definicją pierwszości równą 1 < x ∧ ¬∃y < x∃z < x y · z = x. Oczywiście, P = {n ∈ N : N |= ϕ[n]}. 7 Ponieważ ϕ jest klasy ∆0 , więc P jest zbiorem rekurencyjnym. Zbiór P można też zdefiniować pisząc P = {n ∈ N : 1 < n ∧ ¬∃y < n∃z < n y · z = n}. Różnica między powyższymi równościami jest bardzo formalna. W pierwszej równości, występujące w ϕ symbole <, ∃, ∧ są symbolami formalnego języka arytmetyki, w drugiej – są skróconym zapisem zwykłych zwrotów języka naturalnego: „ jest mniejsze od”, „istnieje” oraz „i”. 1.7 Funkcja β i kodowanie ciągów Jeżeli n jest liczbą naturalną, to n jest przedstawieniem liczby n w języku arytmetyki, czyli termem zdefiniowanym w następujący sposób: 0 = 0 oraz n + 1 = n + 1. Wartością termu n zwykłym modelu liczb naturalnych jest liczba n. Jest też oczywiste, że następujące własności są równoważne: N |= ϕ[x ← n] oraz N |= ϕ[n]. Spełnianie formuły, w której zmienną x zastąpiliśmy termem o wartości n jest równoważne spełnianiu tej formuły przy wartościowaniu, które zmiennej x przypisuje wartość n. Twierdzenie 1.12 Istnieją formuła φ klasy ∆0 i całkowita funkcja rekurencyjna β : N 2 → N takie, że 1) β(a, i) = n wtedy i tylko wtedy, gdy N |= φ[x ← a][y ← i][z ← n], 2) β(a, i) ¬ a − 1 dla wszystkich a, i, 3) dla każdego ciągu a0 , . . . , ak−1 istnieje liczba a taka, że równości β(a, i) = ai są prawdziwe dla wszystkich i < k. Dowód. Zdefiniujmy funkcję (term) op przyjmując, że op(a, b) = (a + b)(a + b) + a + 1, relację (formułę) div taką, że div(a, b) = ∃c < a + 1 (a = b · c). oraz pomocniczą formułę δ = δ(x, y, z) = ∃u < x∃v < x(op(u, v) = x ∧ div(u, 1 + (op(z, y) + 1) · v)). Przyjmimy, że φ jest formułą φ = φ(x, y, z) = ((δ ∧ z < x − 1) ∨ (z = x − 1)) ∧ ∀t < z¬δ[z ← t]. Jest oczywiste, że jest to formuła klasy ∆0 . Teraz sprawdzimy, że definiuje w strukturze N pewną funkcję całkowitą. Niech a, i ∈ N . Są możliwe dwa przypadki. Przypadek 1: N |= ∀t < a − 1 ¬δ(a, i, t). W tym przypadku łatwo przekonać się, że N |= φ(a, i, a − 1). Przypadek 2: N |= ∃t < a − 1 δ(a, i, t). Teraz możemy wziąć najmniejszą liczbę n taką, że N |= n < a − 1 ∧ δ(a, i, n). Ponieważ jest to najmniejsza taka liczba, więc N |= ∀t < n ¬δ(a, i, t). Łatwo sprawdzić, że N |= φ(a, i, n). 8 Z przeprowadzonego rozumowania wynika, że dla każdych liczb a, i istnieje liczba n ¬ a − 1 taka, że N |= φ(a, i, n). Tak więc dowiedliśmy całkowitość β. Łatwo też przekonać się o tym, że formuła φ definiuje pewną funkcję. Jeżeli N |= φ(a, i, n) i N |= φ(a, i, m) dla liczb n ¬ a − 1 i m < n, to także N |= ¬δ(a, i, m) (z pierwszego warunku) oraz N |= δ(a, i, m) (z drugiego). Funkcja β została tak zdefiniowana, że relacja β(a, i) = n jest – na mocy lematu 1.10 – rekurencyjna. Taka funkcja jest rekurencyjna, gdyż może zostać zdefiniowana wzorem β(a, i) = µn β(a, i) = n. Oczywiście, zachodzi nierówność β(a, i) ¬ a − 1. Pozostało więc dowieść, że funkcja β ma własność 3). Przypuśćmy, że chcemy zakodować ciąg a0 , . . . , ak−1 . Wtedy bierzemy liczbę b taką, że b > op(ai , i) dla wszystkich i < k i tworzymy iloczyn c= Y (1 + (op(ai , i) + 1) · b!). i<n Zauważmy, że N |= δ(op(c, b!), i, ai ) dla wszystkich i < k. Gdyby natomiast N |= δ(op(c, b!), i, d) dla pewnej liczby d < ai , to z różnowartościowości op otrzymalibyśmy, że liczba 1 + (op(d, i) + 1) · b! dzieliłaby liczbę c. Liczba op(d, i) jest mniejsza od b, i co więcej, liczby postaci 1 + (j + 1) · b! dla j < b są parami względnie pierwsze. Stąd otrzymujemy, że liczba op(d, i) jest jedną z liczb op(aj , j) dla j < k. Teraz różnowartościowość op implikuje, że d = ai , co jest niemożliwe. 2 1.7.1 Funkcje związane z kodowaniem Mając funkcję β Gödla możemy kodować ciągi liczb naturalnych za pomocą liczb naturalnych. Przyjmujemy, że każda liczba koduje pewien ciąg, że długość ciągu kodowanego przez a znajdujemy obliczając lh(a) = β(a, 0), a i-ty wyraz ciągu kodowanego przez a jest równy (a)i = β(a, i + 1). Tak więc liczba a koduje ciąg (a)0 , . . . , (a)lh(a)−1 . Z własności funkcji β otrzymujemy, że każdy ciąg skończony jest kodowany przez przez pewną liczbę naturalną. Nietrudno zauważyć, że każdy ciąg jest kodowany przez nieskończonie wiele liczb. Kodem ciągu nazywamy najmniejszą liczbę kodującą ten ciąg. Dla ustalonego n symbolem h·i będziemy oznaczać funkcję przyporządkowującą n-ce liczb kod ciągu złożonego z tych liczb. Tak więc ^ ha0 , . . . , an−1 i = µx (lh(x) = n ∧ (x)i = ai ). i<n 1.8 Zbiory rekurencyjnie przeliczalne Jest oczywiste, że zbiory rekurencyjne są rekurencyjnie przeliczalne oraz, że klasa zbiorów rekurencyjnie przeliczalnych jest zamknięta ze względu na sumę mnogościową (definiowanie za pomocą alternatywy) i definiowanie za pomocą kwantyfikatora ograniczonego egzystencjalnego. Wynika to ze znanych praw prachunku kwantyfikatorów. Klasa zbiorów rekurencyjnie przeliczalnych jest również zamknięta ze względu na przekrój (definiowanie za pomocą koniunkcji), rzutowanie i definiowanie za pomocą kwantyfikatora ograniczonego ogólnego. Wynika to z możliwości kodowania 9 skończonych ciągów liczb naturalnych, w z twierdzenia 1.12 i lematu o podstawianiu 1.9. Niech dalej symbole R, R1 i R2 oznaczają relacje rekurencyjne. Zamkniętość ze względu na przekrój wynika z następującej równoważności: ∃n R1 (x, n) ∧ ∃n R2 (x, n) ⇔ ∃n (R1 (x, (n)0 ) ∧ R2 (x, (n)1 )), zamkniętość ze względu na rzutowanie – z równoważności ∃n∃m R(x, n, m) ⇔ ∃n R(x, (n)0 , (n)1 ), a zamkniętość ze względu na definiowanie za pomocą kwantyfikatora ograniczonego ogólnego – z następującego faktu: ∀n < t ∃m R(x, n, m) ⇔ ∃m ∀n < t R(x, n, (m)n ). Z problemem zamkniętości klasy zbiorów rekurencyjnie przeliczalnych ze względu na dopełnienie wiąże się następujące Twierdzenie 1.13 Jeżeli zbiór rekurencyjnie przeliczalny ma rekurencyjnie przeliczalne dopełnienie, to jest rekurencyjny. Dowód. Przypuśćmy, że zbiór X i jego dopełnienie są rekurencyjnie przeliczalne. Wtedy n ∈ X ⇔ ∃m R1 (n, m) oraz n 6∈ X ⇔ ∃m R2 (n, m) dla pewnych rekurencyjnych zbiorów R1 i R2 . Zdefiniujmy funkcję f : N → N taką, że f (n) = µm (R1 (n, m) ∨ R2 (n, m)). Funkcja f jest rekurencyjna, a specyficzny wybór relacji R1 i R2 gwarantuje, że jest to funkcja całkowita. Ponadto, dla wszystkich liczb naturalnych n prawdziwa jest alternatywa R1 (n, f (n)) ∨ R2 (n, f (n)). Rekurencyjność zbioru X wynika z następującej równoważności: n ∈ X ⇔ R1 (n, f (n)). Jeżeli R1 (n, f (n)), to także ∃m R1 (n, m) i – oczywiście – n ∈ X. Jeżeli natomiast n ∈ X, to nie może zajść warunek R2 (n, f (n)), gdyż w przeciwnym razie rozumowanie takie, jak wyżej, pozwalałoby dowieść, że x 6∈ X. Z podanej alternatywy wynika więc, że R1 (n, f (n)). 2 2 2.1 Definiowalność Kilka wyjaśnień Dwa poprzednie rozdziały sugerują związek rekurencyjności i przeliczalnej rekurencyjności z postacią definicji zbioru. Tak jest w rzeczywistości. Zbiory rekurencyjne i rekurencyjnie przeliczalne mają bardzo proste definicje. Ma to dwie konsekwencje. Znając taką prostą defincję zbioru X możemy bardzo łatwo napisać program odpowiadający na pytanie, czy dane n należy do X. Można nawet taki program utworzyć automatycznie. Można też taką definicję zbioru X uznać za program badający należenie do X, wystarczy napisać program interpretujący takie definicje. Z drugiej strony, z prostoty definicji powinno wynikać, że jest mało zbiorów tak definiowanych. Tak jest w rzeczywistości, zwiększając liczbę zmian kwantyfikatorów definiujemy coraz więcej zbiorów. Ponieważ zbiory rekurencyjnie przeliczalne są obliczalne, więc informatyka zajmuje się bardzo małą częścią zbiorów liczb naturalnych. 10 2.2 Przypomnienie pojęć Formuła ϕ definiuje zbiór X ⊆ N k , jeżeli (n1 , . . . , nk ) ∈ X ⇔ N |= ϕ[n1 , . . . , nk ] dla wszystkich n1 , . . . , nk ∈ N . Formuła definiuje funkcję f , jeżeli definiuje jej wykres Wf . Symbolem Σ1 oznaczamy najmniejszą klasę formuł języka arytmetyki zawierającą formuły klasy ∆0 i zamkniętą ze względu na łączenie formuł koniunkcję i alternatywą, dopisywanie ograniczonego kwantyfikatora ogólnego ∀x < t i kwantyfikatora egzystencjalnego. Twierdzenie 2.1 Funkcja jest rekurencyjna wtedy i tylko wtedy, gdy jest definiowalna formułą klasy Σ1 . Dowód. Istotny fragment dowodu to zamkniętość klasy funkcji definiowalnych formułami klasy Σ1 ze względu na operację minimum. Przypuśćmy więc, że funkcja f : N k+1 → N jest definiowana formułą ϕ ∈ Σ1 , formuła φ ∈ ∆0 definiuje funkcję Gödla β i h(~x) = µy (f (~x, y) = 0). Funkcja h jest definiowana formułą ψ(~x, z) = ϕ(~x, z, 0) ∧ ∃t ∀i < z ∃u < t (φ(t, i, u) ∧ u > 0 ∧ ϕ(~x, i, u)). 2 Wniosek 2.2 Zbiór X jest rekurencyjnie przeliczalny wtedy i tylko wtedy, gdy jest definiowalny formułą klasy Σ1 . 3 Związki funkcji rekurencyjnych z arytmetyką Symbolem A0 będziemy oznaczać prostą arytmetyką, złożoną z dziewięciu aksjomatów, zdefiniowaną wcześniej. Jeżeli n jest liczbą naturalną, to n jest przedstawieniem liczby n w języku arytmetyki, czyli termem zdefiniowanym w następujący sposób: 0 = 0 oraz n + 1 = n + 1. 3.1 Reprezentowalność Niech T będzie teorią zapisaną w języku arytmetyki. O formule ϕ mówimy, że reprezentuje w teorii T funkcję f : N k → N , jeżeli warunek f (n1 , . . . , nk ) = m implikuje, że T ` ϕ[x1 ← n1 ] . . . [xk ← nk ] ⇔ y = m dla wszystkich n1 , . . . , nk , m ∈ N . Funkcja jest reprezentowalna, jeżeli jest formuła reprezentująca tę funkcję. Formuła ϕ mocno reprezentuje zbiór X ⊆ N k , jeżeli 1) warunek (n1 , . . . , nk ) ∈ X implikuje, że T ` ϕ[x1 ← n1 ] . . . [xk ← nk ], 2) warunek (n1 , . . . , nk ) 6∈ X implikuje, że T ` ¬ϕ[x1 ← n1 ] . . . [xk ← nk ]. Formuła ϕ reprezentuje zbiór X ⊆ N k , jeżeli równoważne są warunki (n1 , . . . , nk ) ∈ X oraz T ` ϕ[x1 ← n1 ] . . . [xk ← nk ]. W oczywisty sposób definiujemy jeszcze zbiory mocno reprezentowalne i reprezentowalne. 11 Lemat 3.1 Przypuśćmy, że T ` 0 6= 1. Wtedy zbiór X jest reprezentowalny w T wtedy i tylko wtedy, gdy funkcja charakterystyczna chX jest reprezentowalna w T . Lemat 3.2 Jeżeli pewnien zbiór X 6= N k jest reprezentowalny w teorii T , to T jest niesprzeczna. Lemat 3.3 Jeżeli teoria T jest niesprzeczna, to każdy zbiór mocno reprezentowalny w T jest reprezentowalny w T . 3.2 Reprezentowalność funkcji rekurencyjnych Lemat 3.4 Każda formuła x < n + 1 ⇔ x = 0 ∨ x = 1 ∨ ... ∨ x = n ma dowód w arytmetyce A0 , a więc A0 ` x < n + 1 ⇔ x = 0 ∨ x = 1 ∨ . . . ∨ x = n. Lemat 3.5 W arytmetyce A0 i każdej obszerniejszej teorii są mocno reprezentowalne relacje równości i mniejszości, a także ich dopełnienia (negacje). Twierdzenie 3.6 W arytmetyce A0 i każdej obszerniejszej teorii są reprezentowalne wszystkie funkcje rekurencyjne. Wniosek 3.7 W arytmetyce A0 i każdej obszerniejszej teorii są mocno reprezentowalne wszystkie zbiory rekurencyjne. 4 4.1 Twierdzenie Gödla Kodowanie formuł i dowodów Oprócz ciągów, za pomocą liczb naturalnych będziemy kodować także znaki alfabetu, za pomocą którego zapisujemy formuły języka arytmetyki, w tym symbole zmiennych indywiduowych. Przyjmijmy, że SN (z) oznacza liczbę naturalną kodującą znak z. O tej funkcji zakładamy, że jest różnowartościowa i przyjmuje wartości parzyste wtedy i tylko wtedy, gdy argumentem jest zmienna. Ustalenie sposobu kodowania znaków umożliwia kodowanie termów i formuł. Dla termu t i formuły ϕ symbolami dte i dϕe będziemy oznaczać liczbę kodującą odpowiednio ten term i tę formułe. Niech hSN (t)i jeżeli t jest zmienną lub stałą, dte = hSN (+), dt1 e , dt2 ei jeżeli t = t1 + t2 , hSN (·), dt1 e , dt2 ei jeżeli t = t1 · t2 . Liczbę dϕe kodującą daną formułę ϕ definiujemy analogicznym wzorem. Lemat 4.1 Relacje T erm(a) ⇔ a = dte dla pewnego termu t oraz F orm(a) ⇔ a = dϕe dla pewnej formuły ϕ są rekurencyjne. Istnieje też rekurencyjna i całkowita funkcja Sub taka, że Sub(dϕe , SN (x), dte) = dϕ[x ← t]e dla wszystkich formuł ϕ, zmiennych x i termów t. 12 Teraz powinniśmy ustalić pewien system logiczny. Przyjmijmy, że będziemy zajmować się systemem z książki Shoenfielda. Niech ϕ1 , . . . , ϕn będzie dowodem w tym systemie. Kodem tego dowodu będziemy nazywać liczbę hdϕ1 e , . . . , dϕn ei. Lemat 4.2 Relacja PrfT (a, b) ⇔ istnieje formuła ϕ taka, że b = dϕe oraz a koduje jej dowód w teorii T jest rekurencyjna pod warunkiem, że zbiór aksjomatów teorii T jest rekurencyjny. 4.2 Twierdzenie Gödla Teoria T (w języku arytmetyki) jest ω-niesprzeczna, jeżeli zawsze w sytuacji, gdy T ` ϕ[x ← n] dla wszystkich liczb n ∈ N , w T nie można dowieść formuły ∃x ¬ϕ. Nietrudno zauważyć, że teorie ω-niesprzeczne są niesprzeczne, jak również, że ω-niesprzeczne są teorie, których aksjomaty są spełnione w naturalnym modelu arytmetyki N . Twierdzenie 4.3 (Gödel) Przypuśćmy, że T jest teorią zapisaną w języku arytmetyki z rekurencyjnym zbiorem aksjomatów i zawierającą teorię A0 . Jeżeli teoria T jest ω-niesprzeczna, to jest niezupełna. Dowód. Przedstawię teraz wersję orginalnego dowodu Gödla pokazującą, jak można wykorzystać następujący lemat przekątniowy. Lemat 4.4 Przyjmijmy, że U ⊆ N 2 oraz Ua = {b ∈ N : (a, b) ∈ U }. Wtedy zbiór P = {a ∈ N : (a, a) 6∈ U } jest różny od wszystkich zbiorów postaci Ua . W dowodzie Gödla można przyjąć, że U = {(a, b) ∈ N 2 : ∃ϕ ∈ F a = dϕe ∧ T ` ϕ[x ← b]}, gdzie x jest ustaloną zmienną, a F oznacza zbiór formuł. Dla takiego zbioru U , zbiór P z lematu przekątniowego spełnia równość P = {a ∈ N : ∀ϕ ∈ F (a = dϕe ⇒ T 6` ϕ[x ← a])}. Dowód przekątniowy zwykle polega na wykazaniu, że z pewnych założeń wynika, że zbiór P jest jednym ze zbiorów Ua . W ten sposób uzyskujemy sprzeczność z lematem przekątniowym świadczącą o fałszywość przyjętych założeń (zwykle założeń dowodu nie wprost). Zajmijmy się więc definicją P . Warunek ∀ϕ ∈ F (a = dϕe ⇒ T 6` ϕ[x ← a]) jest równoważny warunkowi ∀ϕ ∈ F (a = dϕe ⇒ ¬∃y ∈ N PrfT (y, Sub(dϕe , SN (x), dae))), który daje się zapisać w postaci F orm(a) ⇒ ¬∃y ∈ N PrfT (y, Sub(a, SN (x), dae)), a po prostych przekształceniach logicznych także w postaci ∀y ∈ N ¬(F orm(a) ∧ PrfT (y, Sub(a, SN (x), dae)). 13 Zbiór U został zdefiniowany jako zbiór tych liczb, o których coś tam można dowieść w teorii T . Naszym celem jest pokazanie równości P = Ua , a więc musimy znaleźć analogiczną definicję zbioru P . Jest to możliwe dzięki rekurencyjności relacji R(a, y) ⇔ F orm(a) ∧ PrfT (y, Sub(a, SN (x), dae) i reprezentowalności takich relacji. Weźmy więc formułę φ reprezentującą w teorii T relację R. Tak więc R(a, y) ⇒ T ` φ[x ← a][z ← y] oraz ¬R(a, y) ⇒ T ` ¬φ[x ← a][z ← y]. Jeżeli reprezentujemy w teoriach niesprzecznych, to podane implikacje można zastąpić równoważnościami. W szczególności mamy więc, że ¬R(a, y) ⇔ T ` ¬φ[x ← a][z ← y] i zbiór P można zdefiniować także w następujący sposób P = {a ∈ N : ∀y ∈ N T ` ¬φ[x ← a][z ← y]}. Chcielibyśmy jednak zdefiniować go w postaci P = {a ∈ N : T ` ψ[x ← a]} dla pewnej formuły ψ. Gdyby nam to się udało, to byłaby prawdziwa równość P = Udψe i uzyskalibyśmy sprzeczność. Musimy więc znaleźć kandydata na ψ i dowieść odpowiednią równoważność. Aby znaleźć ψ zauważmy, że ważnymi teoriami T są fragmenty teorii modelu standardowego, np. teoria A0 . Gdyby taka teoria była zupełna, to musiałaby być równa teorii modelu standardowego. Jeżeli wszystkie zdania postaci ¬φ[x ← a][z ← y] dla y ∈ N są prawdziwe w modelu standardowym, to jest w nim także prawdziwe zdanie ∀z ¬φ[x ← a] i za ψ można wziąć to ostatnie zdanie. Przedstawione rozumowanie dowodzi, że żadna rekurencyjna teoria zawarta w teorii modelu standardowego nie jest zupełna. Tak więc powinniśmy próbować dowieść równoważność ∀y ∈ N T ` ¬φ[x ← a][z ← y] ⇐⇒ T ` ∀z ¬φ[x ← a]. Implikacja w „w lewo” jest oczywista, implikacja „w prawo” pozwoli nam uzyskać sprzeczność. Załóżmy więc, że T ` ¬φ[x ← a][z ← y] dla wszystkich y ∈ N . Wtedy, na mocy ω-niesprzeczności, T 6` ∃z ¬¬φ[x ← a], czyli T 6` ¬∀z ¬φ[x ← a]. Jeżeli teraz założymy dla dowodu nie wprost, że teoria T jest zupełna, to jako wniosek otrzymamy, że T ` ∀z ¬φ[x ← a]. Z wcześniejszej analizy wiemy jednak, że ten wniosek prowadzi do sprzeczności. Tak więc teoria T jest niezupełna. Twiedzenie Gödla zostało więc dowiedzione, ale bez wskazania formuły, której nie da się ani dowieść, ani obalić. W dotychczasowych dowodach uzyskiwaliśmy sprzeczność pokazując, że P = Ud∀z ¬φe . Z dowodu lematu przekątniowego wiemy jednak, że te zbiory różnią się elementem m = d∀z ¬φe. Wiemy też, że Ud∀z ¬φe ⊆ P . Wobec tego, m ∈ P , ale m 6∈ Ud∀z ¬φe . Stąd otrzymujemy odpowiednio, że ∀y ∈ N T ` ¬φ[x ← m][z ← y] oraz T 6` ∀z ¬φ[x ← m]. 14 Korzystając z założenia ω-niesprzeczności możemy przekształcić pierwszy człon tej koniunkcji. Wtedy otrzymamy T 6` ¬∀z ¬φ[x ← m] oraz T 6` ∀z ¬φ[x ← m]. Oznacza to, że w teorii T nie potrafimy dowieść ani formuły ∀z ¬φ[x ← m], ani jej negacji. To kończy dowód twierdzenia Gödla polegający na konstrukcji odpowiedniej formuły. 2 5 Twierdzenie Gödla wegług Churcha Przyjmijmy, że T oznacza niesprzeczną teorię zapisaną w języku arytmetyki i zawierającą arytmetykę A0 . Niech U będzie zbiorem z dowodu twierdzenia Gödla: U = {(a, b) ∈ N 2 : ∃ϕ ∈ F a = dϕe ∧ T ` ϕ[x ← b]}. Twierdzenie 5.1 (Church) Zbiór U jest rekurencyjnie przeliczalny i nie jest rekurencyjny. Dowód. Rekurencyjna przeliczalność U jest oczywista. Sprowadzimy więc do sprzeczności założenie, że U jest rekurencyjny. Jak zwykle przyjmujemy, że P = {b ∈ N : (b, b) 6∈ U }. Jeżeli U jest rekurencyjny, to także P jest rekurencyjny i mocno reprezentowalny w T . Załóżmy, że ϕ mocno reprezentuje P . Ponieważ P jest mocno reprezentowalny w teorii niesprzecznej, więc b ∈ P ⇐⇒ T ` ϕ[x ← b]. Stąd wynika, że P = {b ∈ N : T ` ϕ[x ← b]} = {b ∈ N : (dϕe , b) ∈ U } = Udϕe . Z lematu przekątniowego wiemy jednak, że nie jest to możliwe. 2 Wniosek 5.2 Jeżeli T jest niesprzeczną teorią aksjomatyzowalną, to {a ∈ N : ∃ϕ ∈ F a = dϕe ∧ ϕ jest zdaniem ∧ T ` ϕ} oraz {a ∈ N : ∃ϕ ∈ F a = dϕe ∧ T ` ϕ} nie są rekurencyjne. W szczególności zbiory twierdzeń arytmetyki A0 i arytmetyki Peano nie są rekurencyjne. Dowód. Jeżeli drugi z tych zbiorów oznaczymy symbolem X i przyjmiemy, że jest rekurencyjny, to dzięki równoważności (a, b) ∈ U ⇐⇒ Sub(a, SN (x), dbe) ∈ X pokażemy, że U jest rekurencyjny. To jednak nie jest możliwe. 2 Lemat 5.3 Jeżeli T jest teorią niesprzeczną, zupełną i aksjomatyzowalną, to {a ∈ N : ∃ϕ ∈ F a = dϕe ∧ ϕ jest zdaniem ∧ T ` ϕ} jest rozstrzygalny. 15 Dowód. Niech A będzie zbiorem z tezy lematu i niech B = {a ∈ N : ∃ϕ ∈ F a = dϕe ∧ ϕ jest zdaniem ∧ T ` ¬ϕ}. Oba te zbiory są rekurencyjnie przeliczalne. Mamy więc a ∈ A ⇔ ∃n R(a, n) oraz a ∈ B ⇔ ∃n S(a, n) dla pewnych rekurencyjnych relacji R i S. Niech f będzie funkcją rekurencyjną taką, że f (a) = µn (R(a, n) ∨ S(a, n) ∨ ¬(F orm(a) ∧ n = 0)). Zupełność T implikuje, że jest to funkcja całkowita (F orm(a) powinno oznaczać, że a jest numerem zdania). Zauważmy, że a ∈ A ⇐⇒ R(a, f (a)), a to oznacza, że A jest relacją rekurencyjną. 2