1 Funkcje uniwersalne

Podobne dokumenty
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Trzy razy o indukcji

Korzystając z własności metryki łatwo wykazać, że dla dowolnych x, y, z X zachodzi

LOGIKA I TEORIA ZBIORÓW

Logika i teoria mnogości Wykład 14

Zasada indukcji matematycznej

Indukcja matematyczna

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych

Rozdział 4. Ciągi nieskończone. 4.1 Ciągi nieskończone

Dystrybucje, wiadomości wstępne (I)

Indukcja matematyczna, zasada minimum i maksimum. 17 lutego 2017

Uzupełnienia dotyczące zbiorów uporządkowanych (3 lutego 2011).

1 Działania na zbiorach

Rekurencyjna przeliczalność

O pewnych związkach teorii modeli z teorią reprezentacji

domykanie relacji, relacja równoważności, rozkłady zbiorów

Algebry skończonego typu i formy kwadratowe

. : a 1,..., a n F. . a n Wówczas (F n, F, +, ) jest przestrzenią liniową, gdzie + oraz są działaniami zdefiniowanymi wzorami:

Rozdział 6. Ciągłość. 6.1 Granica funkcji

LX Olimpiada Matematyczna

B jest liniowo niezależny V = lin (B) 1. Układ pusty jest bazą przestrzeni trywialnej {θ}. a i v i = i I. b i v i, (a i b i ) v i = θ.

Struktury formalne, czyli elementy Teorii Modeli

Wykład 10. Stwierdzenie 1. X spełnia warunek Borela wtedy i tylko wtedy, gdy każda scentrowana rodzina zbiorów domkniętych ma niepusty przekrój.

Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny:

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

Rodzinę F złożoną z podzbiorów zbioru X będziemy nazywali ciałem zbiorów, gdy spełnione są dwa następujące warunki.

7 Twierdzenie Fubiniego

Egzamin z logiki i teorii mnogości, rozwiązania zadań

Poprawność semantyczna

Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

R k v = 0}. k N. V 0 = ker R k 0

Zadanie 2. Obliczyć rangę dowolnego elementu zbioru uporządkowanego N 0 N 0, gdy porządek jest zdefiniowany następująco: (a, b) (c, d) (a c b d)

Twierdzenie Li-Yorke a Twierdzenie Szarkowskiego

W. Guzicki Zadanie IV z Informatora Maturalnego poziom rozszerzony 1

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Twierdzenie spektralne

Dwa równania kwadratowe z częścią całkowitą

Zbiory, relacje i funkcje

zbiorów domkniętych i tak otrzymane zbiory domknięte ustawiamy w ciąg. Oznaczamy

Rodzinę spełniającą trzeci warunek tylko dla sumy skończonej nazywamy ciałem (algebrą) w zbiorze X.

Topologia zbioru Cantora a obwody logiczne

Ciągi komplementarne. Autor: Krzysztof Zamarski. Opiekun pracy: dr Jacek Dymel

Funkcje rekurencyjne

Wykład 3. Miara zewnętrzna. Definicja 3.1 (miary zewnętrznej) Funkcję µ przyporządkowującą każdemu podzbiorowi

n=0 (n + r)a n x n+r 1 (n + r)(n + r 1)a n x n+r 2. Wykorzystując te obliczenia otrzymujemy, że lewa strona równania (1) jest równa

ZALICZENIE WYKŁADU: 30.I.2019

n=0 Dla zbioru Cantora prawdziwe są wersje lematu 3.6 oraz lematu 3.8 przy założeniu α = :

ALGEBRA Z GEOMETRIĄ BAZY PRZESTRZENI WEKTOROWYCH

2. Definicja pochodnej w R n

Uwaga 1.2. Niech (G, ) będzie grupą, H 1, H 2 < G. Następujące warunki są równoważne:

TEORETYCZNE PODSTAWY INFORMATYKI

jest ciągiem elementów z przestrzeni B(R, R)

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

Łatwy dowód poniższej własności pozostawiamy czytelnikowi.

Aproksymacja diofantyczna

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Grzegorz Bobiński. Wykład monograficzny Programowanie Liniowe i Całkowitoliczbowe

Matematyka dyskretna dla informatyków

i=0 a ib k i, k {0,..., n+m}. Przypuśćmy, że wielomian

Analiza matematyczna. 1. Ciągi

Dlaczego nie wystarczają liczby wymierne

System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10

Obliczenia iteracyjne

Definicja i własności wartości bezwzględnej.

F t+ := s>t. F s = F t.

1. Definicja granicy właściwej i niewłaściwej funkcji.

Kolorowanie płaszczyzny, prostych i okręgów

Indukcja matematyczna. Zasada minimum. Zastosowania.

E-learning - matematyka - poziom rozszerzony. Funkcja wykładnicza. Materiały merytoryczne do kursu

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Skończone rozszerzenia ciał

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Funkcja wykładnicza kilka dopowiedzeń

Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność?

0 + 0 = 0, = 1, = 1, = 0.

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

Działanie grupy na zbiorze

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

9 Przekształcenia liniowe

Wykład z równań różnicowych

Teoria miary i całki

Układy równań i nierówności liniowych

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Indukcja matematyczna. Matematyka dyskretna

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych

Definicja odwzorowania ciągłego i niektóre przykłady

1. Funkcje monotoniczne, wahanie funkcji.

= b i M i [x], gdy charf = p, to a i jest pierwiastkiem wielomianu x n i

A i. i=1. i=1. i=1. i=1. W dalszej części skryptu będziemy mieli najczęściej do czynienia z miarami określonymi na rodzinach, które są σ - algebrami.

Transkrypt:

1 1 Funkcje uniwersalne 1.1 Konstrukcja funkcji uniweralnej Niech P będzie najmniejszym zbiorem liczb spełniającym warunki 1) 0, 2, 0, 0, 2, 1, 0, 2, 2 P, 2) 0, n, 3, k P dla wszystkich n > 0 oraz k takich, że 0 < k n, 3) 0, n, 4, k P dla wszystkich n > 0 oraz k, 4) jeżeli (p) 0 = 1, ((p) 2 ) 1 + 3 = lh(p), (p) 1 = ((p) 3 ) 1 oraz ((p) 3 ) 1 = ((p) i ) 1 i (p) i P dla wszystkich 2 < i < lh(p), a także (p) 2 P, to p P, 5) jeżeli (p) 0 = 2, ((p) 2 ) 1 = (p) 1 + 1 oraz (p) 2 P, to p P. Lemat 1.1 Zbior P jest rekurencyjny. Każdy element p P spełnia nierówności p > (p) 1 > 0. Teraz każdemu elementowi p P przyporządkujemy pewną funkcję częściową ϕ p : N (p) 1 N. Przyjmijmy, że 1) ϕ 0,2,0 (x, y) = x + y, 2) ϕ 0,2,1 (x, y) = x y, 3) ϕ 0,2,2 (x, y) = K < (x, y), 4) ϕ 0,n,3,k = I n,k, 5) ϕ 0,n,4,k ( x) = k dla wszystkich x N n, 6) jeżeli (p) 0 = 1, to ϕ p ( x) = ϕ (p)2 (ϕ (p)3 ( x),..., ϕ (p)lhp 1 ( x)) dla wszystkich x N (p) 1, 7) jeżeli (p) 0 = 2, to ϕ p ( x) = µy(ϕ (p)2 (y, x) = 0) dla wszystkich x N (p) 1. Przypomnijmy sobie, że posługujemy się kodowaniem za pomocą liczb naturalnych skończonych ciągów liczb naturalnych, które ma następujące własności: dla każda liczba p > 0 koduje ciąg o długości lh(p) < p o wyrazach (p) i < p. Te własności kodowania gwarantują poprawność definicji funkcji ϕ p. Zbiór P możemy interpretować jako pewnien język programowania: za pomocą liczb naturalnych zostały opisane definicje pewnych funkcji, funkcja ϕ p to funkcja opisywana za pomocą liczby (programu) p. Lemat 1.2 Zbiór {ϕ p : p P } jest równy klasie wszystkich funkcji rekurencyjnych. Twierdzenie 1.3 Istnieje funkcja rekurencyjna U : N 2 N taka, że 1) dla każdej (częściowej) funkcji rekurencyjnej f : N k N istnieje liczba p N taka, że dla wszystkich x N zachodzi równość (wartości funkcji częściowych) U (p, x) = f((x) 0,..., (x) (p)1 1), 2) dla każdej (częściowej) funkcji rekurencyjnej f : N k N istnieje całkowita funkcja s : N N taka, że dla wszystkich i, x N zachodzi równość f(i, (x) 0,..., (x) k 1 ) = U (s(i), x).

2 Dowód. Będziemy kodować obliczenia wartości funkcji ϕ m używając liczb a N, które są numerami ciągów liczb, które z kolei są numerami trójek p, x i y takich, że ϕ p (x) = y. Zdefiniujemy pomocniczą relację K(a, p, x), która, mówiąc intuicyjnie, stwierdza, że a koduje dostatecznie dużo informacji o obliczeniach, aby mając a można było ustalić wartość ϕ p ((x) 0,..., (x) lh(x) 1 ) i zweryfikować przeprowadzone obliczenia. Relacja K ma następujące własności: Fakt 1.4 Relacja K jest rekurencyjna. Fakt 1.5 Dla każdych p P i x N, jeżeli lh(x) = (p) 1 oraz wartość ϕ p ((x) 0,..., (x) lh(x) 1 ) jest określona, to istnieje a takie, że K(a, p, x). Fakt 1.6 Jeżeli K(a, p, x) oraz ((a) i ) 0 = p i ((a) i ) 1 = x dla jakiegoś i < lh(a), to ((a) i ) 2 = ϕ p ((x) 0,..., (x) lh(x) 1 ). Przyjmijmy, że U (p, x) = (µt(k((t) 0, p, x) (((t) 0 ) (t)1 ) 0 = p (((t) 0 ) (t)1 ) 1 = x (((t) 0 ) (t)1 ) 2 = (t) 2 (t) 1 < lh((t) 0 ))) 2. Zdefiniowana funkcja U jest rekurencyjna. Z przytoczonych faktów wynika, że ma własności podane w pierwszej części tezy twierdzenia. Aby dowieść drugą część tezy, weźmy (dla ustalonego k) funkcję s(i) = 1, k, p, 0, k, 3, 1,..., 0, k, 3, k, gdzie p P jest taki, że U (p, x) = f((x) 0,..., (x) k ). Przyjmijmy, że dla x N symbol x oznacza ciąg (x) 0,..., (x) k 1. Zauważmy, że U (s(i), x) = ϕ s(i) ( x) = ϕ p (ϕ 0,k,4,i ( x), ϕ 0,k,3,1 ( x),..., ϕ 0,k,3,k ( x)) = f(i, (x) 0,..., (x) k 1 ). 1.2 Funkcje uniwesalne Funkcję U : N k+1 U nazywamy uniwesalną dla klasy funkcji rekurencyjnych k zmiennych, jeżeli funkcja U jest rekurencyjna oraz dla dowolnej funkcji rekurencyjnej f : N k N istnieje n N taka, że dla wszystkich x 1,..., x k zachodzi równość f(x 1,..., x k ) = U(n, x 1,..., x k ). Lemat 1.7 Niech U spełnia tezę twierdzenia 1.3. Funkcja U : N k+1 N zdefiniowana wzorem U(n, x 1,..., x k )) = U (n, x 1,..., x k ) jest funkcją uniwersalną dla klasy funkcji rekurencyjnych k zmiennych. Dowód. Oczywiście, U jest rekurencyjna. Niech f : N k N będzie rekurencyjna. Wtedy, dla p z tezy twierdzenia 1.3, mamy U(p, x) = U (p, x 1,..., x k ) = f(( x 1,..., x k ) 0,..., ( x 1,..., x k ) k 1 ) = f(x 1,..., x k ). Dla funkcji uniwersalnej U : N 2 N i n > 1 przyjmijmy, że U n : N n+1 N oraz U n (p, x 1,..., x n ) = U(p, x 1,..., x n ).

3 Lemat 1.8 Jeżeli U jest funkcją uniwersalną dla klasy jednoargumentowych funkcji rekurencyjnych i n > 1, to U n jest funkcją uniwesalną dla klasy n-argumentowych funkcji rekurencyjnych. Dowód. Niech f : N n N będzie funkcją rekurencyjną. Zdefiniujmy funkcję g : N N taką, że g(x) = f((x) 0,..., (x) n 1 ). Weźmy p takie, że U(p, x) = g(x) dla wszystkich x N. Zauważmy, że U n (p, x 1,..., x n ) = U(p, x 1,..., x n ) = g( x 1,..., x n ) = f(x 1,..., x n ). Zwykle będziemy mieć danę funkcję uniwersalną dla klasy jednoargumentowych funkcji rekurencyjnych i w razie potrzeby będziemy ją standardowo rozszerzać w podany sposób do funkcji uniwersalnej dla funkcji k argumentowych. Możemy dodatkowo przyjąć, że U 1 (n, x) = U(n, x). Wadą takiego podejścia jest niejednorodna definicja ciągu U 1, U 2, U 3,..., zaletą wygodne operowanie nimi w sytuacji, gdy najważniejsze są i najczęściej są wykorzystywane funkcje jednoargumentowe. 1.3 Akceptowalne systemy programowania Ciąg funkcji uniwersalnych U 1, U 2, U 3,... spełnia s m n-twierdzenie, jeżeli zachodzi następujące Twierdzenie 1.9 (s-m-n-twierdzenie) Dla dowolnych dodatnich liczb naturalnych n, m istnieje całkowita funkcja rekurencyjna s : N n+1 N taka, że dla wszystkich argumentów zachodzi równość U n+m (p, x 1,..., x n, y 1,..., y m ) = U m (s(p, x 1,..., x n ), y 1,..., y m ). Ciąg funkcji jedej zmiennej ϕ 0, ϕ 1, ϕ 2,... nazywamy nazywamy systemem programowania, jeżeli funkcja U(n, x) = ϕ n (x) jest funkcją uniwersalną dla klasy funkcji rekurencyjnych jednoargumentowych. Ciąg funkcji ϕ 0, ϕ 1, ϕ 2,... jest akceptowalnym systemem programowania, jeżeli jest systemem programowania i ciąg funkcji uniwersalnych U 1, U 2, U 3,... wyznaczony przez w standardowy sposób przez funkcję U (zdefiniowaną jak wyżej) spełnia s m n-twierdzenie. Wadą tej definicji jest uzależnienie jej od ciągu funkcji U 1, U 2, U 3,..., zaletą to, że wyraża istotne własności akceptowalnego systemu programowania. Ładniej akceptowalne systemy można zdefiniować zgodnie z następującą charakteryzacją: Twierdzenie 1.10 System programowania ϕ 0, ϕ 1, ϕ 2,... jest akceptowalny wtedy i tylko wtedy, gdy istnieje całkowita i rekurencyjna funkcja C : 2 N taka, że dla wszystkich n, m, x N. ϕ n (ϕ m (x)) = ϕ c(n,m) (x) Być może istnieją systemy programowania, które nie są akceptowalne. Wszystkie znane mi konstrukcje funkcji uniwersalnych prowadzą do akceptowalnych systemów programowania Twierdzenie 1.11 Jeżeli U spełnia tezę twierdzenia 1.3 i U(p, x) = U (p, x ) jest funkcją uniwersalną (zdefiniowaną zgodnie z lematem 1.7), to ciąg funkcji U 1, U 2, U 3,... spełnia s m n-twierdzenie.

4 Dowód. s m n-twierdzenie dowodzimy przez indukcję ze względu na n, a fragmenty tego dowodu przez indukcję ze względu na m. Teraz pokażę tylko, jak przy założeniu m > 1 dowieść wzór U 1+m (p, x, y 1,..., y m ) = U m (s(p, x), y 1,..., y m ). Niech k : N 2 N oznacza funkcję rekurencyjną, która ma następującą własność: Przyjmijmy, że c(x, y 1,..., y m ) = x, y 1,..., y m. f(i, y) = U ((i) 0, c((i) 1, y). Dla funkcji f korzystamy z twierdzenia 1.3 i znajdujemy całkowitą funkcję s taką, że f(i, (x) 0 ) = U (s(i), x). Zauwazmy, że dla tej funkcji zachodzą następujące wzory: oraz f(i, x) = U (s(i), x ) f(i, y 1,..., y m ) = U (s(i), y 1,..., y m ) = U 1 (s(i), y 1,..., y m ) = U m (s(i), y 1,..., y m ). Z drugiej strony, f( p, x, y 1,..., y m ) = U (p, c(x, y 1,..., y m ) ) = U (p, x, y 1,..., y m ) = Z dowiedzionych równości wynika, że = U 1 (p, x, y 1,..., y m ) = U 1+m (p, x, y 1,..., y m ). U 1+m (p, x, y 1,..., y m ) = U m (s( p, x ), y 1,..., y m ). 1.4 Własności systemów programowania Twierdzenie 1.12 Niech ψ 0, ψ 1,... będzie systemem programowania, a ϕ 0, ϕ 1,... akceptowalnym systemem programowania. Wtedy istnieje całkowita rekurencyjna funkcja t : N N taka, że ψ i = ϕ t(i) dla wszystkich i N. Twierdzenie 1.13 (o rekursji) Dla dowolnego akceptowalnego systemu programowania ϕ 0, ϕ 1,... i dowolnej całkowitej funkcji f : N N istnieje n N taka, że Dowód. Niech Przyjmijmy, że Wtedy ϕ n = ϕ f(n). F (x, y) = ϕ ϕx(x)(y). F (x, y) = ϕ g(x) (y) f(g(x)) = ϕ m (x) oraz n = g(m). ϕ f(n) (y) = ϕ f(g(m)) (y) = ϕ ϕm(m)(y) = F (m, y) = ϕ g(m) (y) = ϕ n (y). Twierdzenie 1.14 (jednostajne twierdzenie o rekursji) Dla dowolnego akceptowalnego systemu programowania ϕ 0, ϕ 1,... istnieje całkowita rekurencyjna funkcja n : N N taka, że ϕ n(x) = ϕ ϕx(n(x)). Twierdzenie 1.15 (Twierdzenie Rogersa o izomorfizmie) Niech ψ 0, ψ 1,... oraz ϕ 0, ϕ 1,... będą akceptowalnymi systemami programowania. Wtedy istnieje rekurencyjna bijekcja t : N N taka, że ψ i = ϕ t(i) dla wszystkich i N.

5 2 Twierdzenie o przyśpieszaniu Twierdzenie 2.1 (Ograniczone twierdzenie o przyśpieszaniu) Dla miary złożoności Φ 0, Φ 1,... takiej, że Φ s(i,x) (y) Φ i (x, y) dla wszystkich x, y N (s to funkcja z s n m twierdzenia) i dowolnej całkowitej, rekurencyjnej funkcji g : N 2 N spełniającej dla wszystkich argunentów nierówności g(x, y) g(x, y + 1) istnieje całkowita i rekurencyjna funkcja f : N N taka, że dla dowolnego (programu) i obliczającego f (a więc spełnijącego ϕ i = f) istnieje (program) j taki, że dla prawie wszystkich x zachodzą równość ϕ j (x) = f(x) oraz nierówność g(x, Φ j (x)) Φ i (x). Dowód. Krok 1. Będziemy definiować całkowitą funkcję rekurencyjną f : N 2 N, a właściwie ciąg funkcji f w określonych wzorami f w (x) = f(w, x) i program n obliczający f (taki, że f(w, x) = ϕ n (w, x)) spełniający równości oraz implikacje f w (x) = f w+1 (x) ϕ w = f g(x, Φ n (w + 1, x)) Φ w (x) dla prawie wszystkich x. Mając taki ciąg funkcji otrzymamy tezę twierdzenie. Wystarczy bowiem przyjąć, że f(x) = f(0, x). Jeżeli wtedy w będzie programem obliczającym f (czyli ϕ w (x) = f(x)), to funkcja f w+1 będzie prawie równa f i naturalny program obliczający f w+1, czyli s(n, w + 1), będzie mieć złożoność spełniającą nierówności g(x, Φ s(n,w+1) (x)) g(x, Φ n (w + 1, x)) Φ w (x) dla prawie wszystkich x. Krok 2. Przypuśćmy, że funkcję f(w, x) udało się nam zdefiniować dla w > 0. Wtedy wartość f(x) = f(0, x) możemy definiować tak, aby funkcja f( ) przyjmowała wartości różne od wartości złych funkcji, czyli takich funkcji ϕ i, które nie spełniają żądanej nierówności. Znając f w dla w > 0 łatwo powiedzieć, jakie funkcje ϕ i są złe. Są to funkcje spełniające nierówności Φ i (x) < g(x, Φ n (i + 1, x)). Tak więc funkcję f, stosując techniki znane z wcześniejszych twierdzeń, możemy definiować wzorem f(x) = f(0, x) = µy( i < x (Φ i (x) < g(x, Φ n (i + 1, x)) y ϕ i (x))). Pokaże teraz, że jest to dobry sposób definiowania funkcji f. Funkcja ta ma następującą włsność: x i < x (Φ i (x) < g(x, Φ n (i + 1, x)) f(x) ϕ i (x)). Niech i 0 będzie programem obliczającym f. Wtedy ϕ i0 (x) = f(x) dla wszystkich x oraz x (i 0 < x (Φ i0 (x) < g(x, Φ n (i 0 + 1, x)) f(x) f(x))).

6 Stąd otrzymujemy, że x (i 0 < x g(x, Φ n (i 0 + 1, x)) Φ i0 (x)), czyli żądaną nierówność. Krok 3. Aby obliczyć funkcję f 0 powinniśmy znać f w dla w > 0, a właściwie powinniśmy umieć wyliczyć złożoności obliczeń tych funkcji. Spróbujmy teraz znaleźć sposób obliczania funkcji f 1. Funkcja f 1 jest prawie równa funkcji f 0, może więc być obliczana w ten sam sposób na podstawie znajomości funkcji f w dla w > 1. Taki sposób myślenia prowadzi do następującej definicji funkcji f: f(w, x) = µy( i < x (w i Φ i (x) < g(x, Φ n (i + 1, x)) y ϕ i (x))). Ta definicja ma charakter indukcyjny, ale nie wygląda na poprawną definicję indukcyjną. Można ją jednak poprawić. Krok 4. Przytoczoną ideę można jednak poprawić. Funkcje f w dla w > 0 nie muszą być równe funkcji f 0, wystarczy, aby były jej prawie równe. To pozwala każdą z tych funkcji określić arbitralnie na zbiorze skończonym, np. definiując f w robimy to na zbiorze tych argumentów x, które nie przekraczają w. Możemy więc przyjąć, że { 0 jeżeli x w, f(w, x) = µy( i < x (w i Φ i (x) < g(x, Φ n (i + 1, x)) y ϕ i (x))) gdy x > w. Zauważmy też, że przy okazji, po wprowadzeniu tej zmiany zastosowany schemat indukcyjny staje się poprawny: dla ustalonego x są określone wszystkie funkcje f w o indeksach w x (mamy 0 = f x (x) = f x+1 (x) = f x+2 (x),...) i możemy indukcyjnie obliczać kolejno wartości f x 1 (x), f x 2 (x), f x 3 (x),..., f 0 (x). Mamy jednak jeszcze jeden kłopot. Krok 5. Można spodziewać się, że dla pewnego k nierówności Φ k (x) < g(x, Φ n (k + 1, x)) zachodzą dla wszystkich x. Wtedy definiując f k (x) musi uwzględnić, że jest to wartość ϕ k (x). Ponieważ zachodzą oczywiste nierówności f w (x) f w+1 (x), ta sytuacja może spowodować, że f 0 (x) f k (x) > f k+1 (x) dla niektórych x. Tych x może być jednak nieskończenie wiele. W takim przypadku, funkcje f 0 i f k+1 różniłyby się dla nieskończenie wielu argumentów. Zauważmy jednak, że jeżeli zachodzi nierówność Φ k (x) < g(x, Φ n (k + 1, x)), to naszą intencją jest spowodowanie, że f(x) ϕ k (x) i zapewnienie prawdziwości tezy twierdzenia przez spowodowanie, że poprzednik występującej w niej implikacji stanie się fałszywy dla i = k. Aby to jednak zrobić, wystarczy spowodować, że f(x) ϕ k (x) dla jednego x. Nie musimy tego gwarantować dla wszystkich x spełniających nierówność Φ k (x) < g(x, Φ n (k +1, x)): wystarczy, że zrobimy to dla pierwszego takiego x. Krok 6. Przedstawiony sposób myślenia prowadzi więc do definicji funkcji f o własnościach i o postaci opisanej w niżej podanym lemacie. Zgodnie z tym lematem, ten sposób definiowania gwarantuje, że zdefiniujemy ciąg f 0, f 1, f 2,... prawie równych funkcji. Lemat 2.2 Przypuśćmy, że C(w, x) oznacza rodzinę zbiorów skończonych takich, że oraz Niech x y C(w, x) C(w, y) = i C(w, x) i C(0, x) i w. f(w, x) = µy ( i (i C(w, x) ϕ i (x) y)). Wtedy dla wszystkich w równość f(w, x) = f(0, x) zachodzi dla prawie wszystkich x.

7 Dowód. Ustalmy w. Zbiory C(0, x) i C(w, x) nie różnią się elementami i w. Jeżeli są różne, to element i, który je różni, należy do C(0, x) \ C(w, x) i jest mniejszy od w. Ponieważ zbiory C(0, x) są parami rozłączne, to elementy i < w należą do skończenie wielu takich zbiorów. Przyjmijmy, że należą do zbiorów C(0, x) dla x < m w. Wobec tego i < w x m w i C(0, x). Stąd, dla x m w zachodzą równości C(0, x) = C(w, x). Nietrudno zauważyć, że równość tych zbiorów implikuje równość f(0, x) = f(w, x). Ta ostatnia równość zachodzi więc dla wszystkich x m w. Krok 7. Możemy już przystąpić do realizacji opisanego planu definiowania f. Funkcja ta ma być definiowana przez indukcję. Tak więc najpierw zdefiniujemy z parametrem n, jako funkcję trzech zmiennych f(n, w, x) (zamiast f(w, x)), a następnie dobierzemy n tak, aby f(n, w, x) = ϕ t(n) (w, x) = ϕ n (w, x) = f(w, x) (a więc, aby n użyty w definicji stał się programem obliczającym f). Istnienie takiego n wyniknie z twierdzenia o rekursji. Początek konstrukcji f. Krok 8. Będziemy kodować skończone zbiory liczb naturalne za pomocą liczb naturalnych. Każda liczba koduje skończony ciąg liczb naturalnych. Umawiamy się, że liczba c będzie też kodować zbiór wyrazów ciągu kodowanego przez c. W szczególności przyjmujemy, że i c t < lh(c) i = (c) t. Niech f 0 (x, a, c) = µy ( i < x (i c y (a) i )). Jest oczywiste, że funkcja f 0 jest rekurencyjna. Łatwo dowodzi się, że jest to funkcja całkowita: warunku podanego w definicji funkcji nie spełnia najwyżej skończenie wiele liczb naturalnych y. Będzie nam jeszcze potrzebna funkcja F : N 3 N taka, że { jeżeli w x, F (n, w, x) = Φ n (w + 1, x), Φ n (w + 2, x),..., Φ n (x, x) w przeciwnym razie. Aby formalnie zdefiniować taką funkcję F zdefiniujmy funkcję pomocniczą { jeżeli w x, F 0 (k, n, w, x) = konkatenacja( Φ n (w + 1, x), ϕ k (n, w + 1, x)) w przeciwnym razie. Jest to częściowa funkcja rekurencyjna. Dalej przyjmujemy, że F (n, w, x) = F 0 (k, n, w, x) dla k takiego, że F 0 (k, n, w, x) = ϕ k (n, w, x). Fakt 2.3 Zdefiniowana wyżej funkcja F : N 3 N jest rekurencyjna i ma następujące własności: 1) jeżeli w x, to F (n, w, x) =, 2) jeżeli w < x, to F (n, w, x) = konkatenacja( Φ n (w + 1, x), F (n, w + 1, x)), 3) jeżeli w < x, to wartość F (n, w, x) jest określona wtedy i tylko wtedy, gdy są określone wartości Φ n (i, x) dla wszystkich i takich, że w < i x.

8 Krok 9. Niech teraz C 0 : N 5 N będzie funkcją taką, że C 0 (n, w, x, c, f) = kod({i < x : w i i c Φ i (x) < g(x, (f) w i )}). Bardziej formalna definicja stwierdza, że C 0 (n, w, x, c, f) jest najmniejszą liczbą kodującą ciąg, którego wyrazami są dokładnie liczby należące do zbioru podanego w powyższej definicji. Fakt 2.4 Funkcja C 0 : N 5 N jest całkowita i rekurencyjna. Ponadto, oraz 1) jeżeli i C 0 (n, w, x, c, f), to wartość ϕ i (x) jest określona, 2) i C 0 (n, w, x, c, f) wtedy i tylko wtedy, gdy i C 0 (n, 0, x, c, f) oraz i w. Dowód tego faktu wymaga skorzystania z własności miary złożości Φ 0, Φ 1,... Krok 10. Przez indukcję definiujemy teraz funkcję C 1 : N 3 N przyjmując C 1 (n, w, 0) = C 1 (n, w, x + 1) = konkatenacja(c 0 (n, w, x, C 1 (n, w, x), F (n, w, x)), C 1 (n, w, x)). Przyjmijmy, że Zauważmy, że C(n, w, x) = C 0 (n, w, x, C 1 (n, w, x), F (n, w, x)). Fakt 2.5 Funkcja C 1 : N 3 N jest rekurencyjna oraz 1) wartość C 1 (n, w, x) jest określona wtedy i tylko wtedy, gdy wartości F (n, w, y) są określone dla wszystkich y < x, 2) jeżeli wartość C 1 (n, w, x) jest określona, to określone są wartości C 1 (n, w, y) dla wszystkich y < x oraz C 1 (n, w, x) = C(n, w, y). Lemat 2.6 Jeżeli wartości C 1 (n, w, x) oraz F (n, w, x) są określone i y < x, to każde i takie, że i C(n, w, x) spełnia warunek i C(n, w, y). Dowód. Z założeń wynika, że liczba C(n, w, x) jest określona. Weźmy i C(n, w, x). Wtedy i C 0 (n, w, x, C 1 (n, w, x), F (n, w, x)). Z definicji C 0 otrzymujemy, że i C 1 (n, w, x). Na mocy poprzedniego lematu, i C(n, w, y). Lemat 2.7 Jeżeli wartości C 1 (n, 0, x) oraz F (n, 0, x) są określone, to 1) wartości C 1 (n, w, y) oraz F (n, w, y) są określone dla wszystkich y x oraz w, 2) dla wszystkich y x oraz wszystkich w warunek i C 1 (n, w, y) jest równoważny warunkowi i w i C 1 (n, w, y). 3) dla wszystkich y x oraz wszystkich w warunek i C(n, w, y) jest równoważny warunkowi i w i C(n, 0, y). y<x

9 Dowód. Część 2 i 3 dowodzimy przez jednoczesną indukcję ze względu na y. Zauważmy, że i C 1 (n, w, 0) i w i C 1 (n, 0, 0). Dalej, jeżeli to także oraz Stąd i C 1 (n, w, y) i w i C 1 (n, 0, y), i C 1 (n, w, y) i < w i C 1 (n, 0, y) i w i C 1 (n, w, y) i w i C 1 (n, 0, y). i C 0 (n, w, y, C 1 (n, w, y), F (n, w, y)) i w i C 0 (n, 0, y, C 1 (n, 0, y), F (n, 0, w)), Ostatecznie otrzymujemy Z własności C 1 otrzymujemy także i C(n, w, y) i w i C(n, 0, y). i C 1 (n, w, y + 1) i w i C 1 (n, 0, y + 1). Lemat 2.8 Jeżeli i C(n, w, x), to wartość ϕ i (x) jest określona. Dowód. Jeżeli i C(n, w, x), to w szczególności zachodzi pewna nierówność postaci Φ i (x) < a. Ta nierówność implikuje, że zarówno Φ i (x), jak i ϕ i (x) są określone. Krok 11. Definiujemy przez rekursję prostą funkcję v 0 : N 3 N: v 0 (0, a, x) = oraz v 0 (j + 1, a, x) = konkatenacja(v 0 (j, a, x), ϕ (a)j (x) oraz v(a, x) = v 0 (lh(a), a, x). Fakt 2.9 Funkcja v jest rekurencyjna. Jeżeli wartości ϕ i (x) są określone dla wszystkich i a, to wartość v(a, x) jest określona i dla takich i zachodzi równość (v(a, x)) i = ϕ i (x). Krok 12. W końcu możemy zdefiniować f(n, w, x) = f 0 (x, v(c(n, w, x), x), C(n, w, x)). Od tego miejsca liczba n będzie miała następującą własność: f(n, w, x) = ϕ n (w, x) = f(w, x). Lemat 2.10 Funkcja f : N 2 N jest rekurencyjna i całkowita.

Dowód. Jeżeli w x, to C 0 (n, w, x, c, f) jest kodem zbioru pustego, więc to samo jest prawdą dla C(n, w, x). Stąd v(c(n, w, x)) jest określone i f(w, x) = 0. Teraz pokażemy, że jeżeli określone są wartości f(w + 1, x) oraz f(w, x 1), to także jest określona wartość f(w, x). f(w, x) jest określona wtedy i tylko wtedy, gdy jest określona C(n, w, x) (jeżeli C(n, w, x) jest określona, to także v(c(n, w, x)) jest określona na mocy lematów. C(n, w, x) jest określona wtedy i tylko wtedy, gdy są określone wartości C 1 (n, w, x) oraz F (n, w, x). Z założeń więc mamy, że są określone wartości C 1 (n, w+1, x), F (n, w+1, x), C 1 (n, w, x 1) oraz F (n, w, x 1). Teza zostanie zaś wykazana, jeżeli dowiedziemy, że są określone wartości C 1 (n, w, x) oraz F (n, w, x). Z definicji C 1, funkcja ta jest określona dla argumentów n, w, x jeżeli są określone C 1 (n, w, x 1) oraz F (n, w, x 1). Tak więc C 1 (n, w, x) jest określona. Z definicji F, aby była określana wartość F (n, w, x) muszą być określone wartości Φ n (w + 1, x) oraz F (n, w + 1, x). Druga z tych wartości jest określona na mocy założenia, a pierwsza ponieważ jest określona wartość f(w + 1, x) = ϕ n (w + 1, x). 10