Elementy teorii obliczalności
Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki
Elementy teorii obliczalności
Jerzy Mycka
Lublin 2011
Instytut Informatyki UMCS Lublin 2011
Jerzy Mycka (Instytut Matematyki UMCS)
Elementy teorii obliczalności Recenzent: Stanisław Grzegórski Opracowanie techniczne: Marcin Denkowski Projekt okładki: Agnieszka Kuśmierska
Praca współfinansowana ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego
Publikacja bezpłatna dostępna on-line na stronach Instytutu Informatyki UMCS: informatyka.umcs.lublin.pl.
Wydawca Uniwersytet Marii Curie-Skłodowskiej w Lublinie Instytut Informatyki pl. Marii Curie-Skłodowskiej 1, 20-031 Lublin Redaktor serii: prof. dr hab. Paweł Mikołajczak www: informatyka.umcs.lublin.pl email:
[email protected]
Druk ESUS Agencja Reklamowo-Wydawnicza Tomasz Przybylak ul. Ratajczaka 26/8 61-815 Poznań www: www.esus.pl
ISBN: 978-83-62773-12-1
Spis treści
vii
Przedmowa 1 Pojęcia wstępne 1.1. Zagadnienia teorii obliczeń . . . . . . . . . . . . . . . . . . . . 1.2. Obliczalność, rozstrzygalność i algorytmy . . . . . . . . . . . 1.3. Notacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Funkcje częściowo rekurencyjne 2.1. 2.2. 2.3. 2.4.
Funkcje pierwotnie rekurencyjne . . . . . . . . . . . . . . . . Minimalizacja nieograniczona i funkcje częściowo rekurencyjne Struktura zbioru funkcji częściowo rekurencyjnych . . . . . . Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Inne modele obliczeniowe 3.1. 3.2. 3.3. 3.4. 3.5. 3.6.
Maszyna Turinga . . . . . . Warianty maszyny Turinga λ-rachunek . . . . . . . . . Maszyny licznikowe . . . . . Teza Churcha . . . . . . . . Zadania . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1 2 3 4 7 8 11 14 25 27 28 31 33 36 38 40
4 Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne
41 4.1. Zbiory i relacje rekurencyjne . . . . . . . . . . . . . . . . . . 42 4.2. Zbiory rekurencyjnie przeliczalne . . . . . . . . . . . . . . . . 45 4.3. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5 Uniwersalność, numeracje i nierozstrzygalność 5.1. 5.2. 5.3. 5.4.
Postać normalna . . . . . . . . . . . Funkcje i zbiory uniwersalne . . . . . Numeracje . . . . . . . . . . . . . . . Rozstrzygalność i nierozstrzygalność
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
51 52 56 62 64
vi
SPIS TREŚCI 5.5. Funkcje częściowo rekurencyjne a zbiory rekurencyjnie przeliczalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.6. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 73 6.1. Twierdzenia o punkcie stałym . . . . . . . . . . . . . . . . . . 74 6.2. Różne zastosowania . . . . . . . . . . . . . . . . . . . . . . . . 77 6.3. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6 Twierdzenia o punkcie stałym
7 Redukcje i stopnie 7.1. 7.2. 7.3. 7.4. 7.5. 7.6.
Redukowalność rekurencyjna . . . . . . . . . . . . . Redukowalność zbiorów rekurencyjnie przeliczalnych Definicja i własności m-stopni . . . . . . . . . . . . . Zbiory kreatywne i produktywne . . . . . . . . . . . Teoria stopni . . . . . . . . . . . . . . . . . . . . . . Zadania . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
81 82 84 86 91 95 99
101 8.1. Hierarchia arytmetyczna . . . . . . . . . . . . . . . . . . . . . 102 8.2. Własności hierarchii arytmetycznej . . . . . . . . . . . . . . . 107 8.3. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8 Hierarchia arytmetyczna
111 A.1. Arytmetyka Peana PA . . . . . . . . . . . . . . . . . . . . . . 112 A.2. Reprezentowalność relacji w PA . . . . . . . . . . . . . . . . . 115 A.3. Własności PA . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
A Obliczalność a arytmetyka Peana
B Równoważność obliczeniowa maszyn Turinga i funkcji częściowo rekurencyjnych
129 B.1. Arytmetyzacja maszyn Turinga . . . . . . . . . . . . . . . . . 130 B.2. Obliczanie funkcji rekurencyjnych . . . . . . . . . . . . . . . . 132
C Spis podstawowych oznaczeń i konwencji
135
Bibliografia
139
Skorowidz
141
Przedmowa Sed omnia in mensura, et numero, et pondere disposuisti. Liber Sapientiae, XI,21
Accidit autem quantitati aut numero praeexistenti, inquantum huiusmodi, quod ei addatur quantitas aut unitas. Unde in huiusmodi nihil prohibet rationem procedere in infinitum św. Tomasz z Akwinu, Summa Theologiae, I-II,q.1,a.41
Teoria obliczalności jest działem z pogranicza matematyki i informatyki. Waga tej dyscypliny związana jest z jednej strony ze sformułowaniem solidnych podstaw teoretycznych dla informatyki, z drugiej zaś strony z wprowadzeniem ścisłego pojęcia obliczenia efektywnego (wraz z jego analizą) do matematyki i logiki. Ten skrypt prezentuje ogólne wprowadzenie do teorii obliczalności. Siłą rzeczy wybór materiału jest dość podstawowy i oparty na ważnych, klasycznych wynikach. Nie zostały uwzględnione zagadnienia złożoności, które za względu na swój zakres zasługują na osobną prezentację. W niektórych punktach zrezygnowano z zagłębienia się w detale problemu, aby nie zaciemnić znaczenia zasadniczych rezultatów teorii obliczeń. W skrypcie wybrano metodę prezentacji opartą na teorii funkcji częściowo rekurencyjnych. Dzięki temu uzyskano możliwość precyzyjnego i przejrzystego przedstawienia głównych pojęć i wyników. Jak się wydaje, podejście to daje dobre warunki do takiej realizacji wykładu teorii obliczeń, która ułatwi słuchaczom przyswojenie i opanowanie materiału. W miarę możliwości, do sformułowań matematycznych dołączono bardziej intuicyj1 Jest to rzecz przygodna, aby pewna wielkość została jakoś powiększona, albo aby liczba była zwiększona o jedność. Dlatego w sprawach takich jak te nic nie przeszkadza umysłowi prowadzić nieskończone operacje.
viii
Przedmowa ne wyjaśnienia, które mają pomóc w uzyskaniu najważniejszego efektu zrozumienia głównych idei teorii procesów obliczalnych. Rozdziały skryptu ułożone zostały w porządku liniowym i - z drobnymi wyjątkami - należy je czytać po kolei. Dwa dodatki nieco rozszerzają materiał prezentując ważne konsekwencje teorii funkcji częściowo rekurencyjnych (w tym twierdzenie G¨ odla) oraz wskazując związki bardziej intuicyjnego modelu obliczeń (maszyn Turinga) z funkcjami częściowo rekurencyjnymi. Skorowidz i spis oznaczeń stanowią uzupełnienie ułatwiające orientację w tekście. Bibliografia zawiera spis pozycji pokrywających całość lub fragment zagadnień omówionych w skrypcie. Niektóre wymienione w niej podręczniki pełniły także rolę źródeł przy powstawaniu poszczególnych części. Sam tekst skryptu nie zawiera odniesień do spisu literatury ze względu na swój podręcznikowy charakter i klasyczny charakter wyników. Należy pamiętać, że skrypt powstał na podstawie wykładów, które z kolei zwykle odwoływały się do już istniejących opracowań związanych z teorią obliczalności; w tym kontekście szczególną rolę odegrały dzieła polskich autorów: prof. A. Grzegorczyka i prof. R. Murawskiego. Autor chciałby podziękować prof. Z. Grodzkiemu za wprowadzenie go przed laty w ten piękny dział nauki, a także wszystkim, którzy pomagali w klaryfikowaniu się materiału tego skryptu, w tym recenzentowi prof. St. Grzegórskiemu oraz studentom - słuchaczom wykładów. Szczególną wdzięczność wyrażam moim bliskim: Agnieszce, Michałowi, Annie i Janowi, bez których wsparcia ta praca nie mogłaby powstać.
Rozdział 1 Pojęcia wstępne
1.1. Zagadnienia teorii obliczeń . . . . . . . . . . . . . . . . 1.2. Obliczalność, rozstrzygalność i algorytmy . . . . . . . . 1.3. Notacja . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 3 4
2
1. Pojęcia wstępne
1.1. Zagadnienia teorii obliczeń Teoria obliczeń jest działem matematyki zajmującym się precyzyjną, matematyczną analizą procesów obliczalnych. Jej rozwój rozpoczął się w XX wieku i w oczywisty sposób jest związany z pojawieniem się i wzrastającą rolą komputerów w przetwarzaniu informacji. Jednak już wcześniej rozpoczęły się badania, które związane były z używanym w matematyce pojęciem efektywnej metody obliczeniowej. Jednym z najsłynniejszych przykładów zagadnienia związanego z efektywnymi obliczeniami był 10 problem Hilberta: czy istnieje algorytm sprawdzający istnienie rozwiązań równań diofantycznych. Tego rodzaju pytania wskazywały na konieczność precyzyjnego określenia pojęcia algorytmu, rozumianego jako mechaniczna i efektywna metoda rozwiązywania postawionego problemu. Innego rodzaju punkt zaczepienia stanowiło badanie natury poprawnego dowodu matematycznego. Tutaj także szukano jednoznacznych oraz możliwie mechanicznych sposobów na sprawdzanie sformalizowanych rozumowań matematycznych. Tego rodzaju sytuacja wywołała jako skutek pojawienie się matematycznych modeli (formalizacji) mających odwzorowywać różne rozumienie procesów obliczeniowych. Pośród nich pojawiły się jako najważniejsze modele: funkcje częściowo rekurencyjne, maszyny Turinga, λ-rachunek, różnego typu abstrakcyjne maszyny matematyczne. Porównywanie możliwości obliczeniowych oraz badania własności poszczególnych modeli i ich wariantów stanowiły istotną składową teorii obliczeń. Inne pole badań związane było z poklasyfikowaniem problemów matematycznych ze względu na ich podatność na zalgorytmizowanie. Jest oczywiste, że liczba kardynalna wszystkich możliwych algorymów to ℵ0 . Porównując ten wynik z mocą zbioru liczb rzeczywistych (c) natychmiast otrzymujemy jako wniosek istnienie liczb rzeczywistych, których nie można wyliczać algorytmicznie. Ten przykład pokazuje możliwość wskazania zagadnień, których rozwiązań nie można wyznaczyć ciągiem mechanicznych obliczeń. Gdzie znajdować takie nieobliczalne zagadnienia, w jaki sposób je rozpoznawać oraz czy można je uszeregować według stopnia trudności - te pytania stały się polem intensywnych badań tej części teorii obliczeń, która jest nazywana teorią rozstrzygalności. Podobne problemy klasyfikacji zagadnień algorytmicznych ze względu na różne parametry procesu obliczeń są badane w ramach teorii złożoności. W tym przypadku ogranicza się badania do zagadnień, które mogą być algorytmicznie rozwiązane, jednak szczególna uwaga skupiona zostaje na zasobach, które są wykorzystywane w toku obliczeń. Najważniejszymi z tych zasobów są czas i przestrzeń (pamięć). W tym kontekście prowadzone są badania szukające ograniczeń złożonościowych dla poszczególnych problemów,
1.2. Obliczalność, rozstrzygalność i algorytmy budowane są modele wyrażające własności złożoności poszczególnych klas algorytmów, poszukiwane są wzajemne relacje różnych klas algorytmów. Oprócz powyżej wyliczonych zagadnień teoria obliczeń zajmuje się hipotetycznymi możliwościami obliczeniowych modeli niestandardowych (np. analogowych, kwantowych, membranowych), stosuje swoje techniki w innych działach matematyki, analizuje problemy obliczalności w logice oraz teorii dowodu. Niektóre z jej wyników znajdują praktyczne zastosowania przy konstrukcji języków programowania, kompilatorów oraz w badaniu niezawodności oprogramowania. Specyficzne techniki wykorzystywane są do analizy procesów współbieżnych i równoległych. Część badań w dziedzinie teorii obliczeń zahacza także o teorię języków formalnych, zagadnienia definiowalności i teorii mnogości.
1.2. Obliczalność, rozstrzygalność i algorytmy Krokiem wstępnym do rozważania procesów obliczalnych jest ustalenie warunków, które pozwalają określić pewne metody rozwiązywania problemów jako metody algorytmiczne. Jak się okazuje, proponując różne modele obliczeń opartych na koncepcji przetwarzania w dyskretnych krokach zwykle przyjmowano dość jednolite założenia o możliwościach konstrukcji realistycznych urządzeń liczących. Dość typową prezentację tego rodzaju warunków stanowi poniższy spis: dyskretność: algorytm jest procesem sukcesywnego konstruowania wartości tak, aby zbiór wartości w następnej chwili był uzyskany przez zastosowanie jasno określonych reguł do wartości z chwili poprzedniej; determinizm: wartości uzyskane w każdym momencie są otrzymane w jednoznaczny sposób; elementarność: przekształcanie wartości odbywa się przy pomocy reguł o prostym oraz lokalnym charakterze; pełność: dane początkowe mogą pochodzić z nieskończonego zbioru wartości; zorientowanie: po zatrzymaniu procesów obliczeniowych istnieje jasne wskazanie, co ma być uważane za wynik algorytmu. Do powyższego zestawu można dodawać inne warunki, które nie są w niewątpliwy sposób wyprowadzane z powyższych (np. powtarzalność albo brak losowości). Alan Turing skonkretyzował rozważania warunków efektywnych obliczeń poprzez sformułowanie następujących założeń: obliczenie ma być dokonywane poprzez zapis na papierze podzielonym na podobne bloki, w toku zapisu i odczytu obiekt zapisujący przyjmuje pewne rozróżnialne stany. Dla poprawności procesu obliczeń potrzebne są warunki skończoności: liczby zapisywanych symboli, liczby obserwowanych bloków tekstu, liczby stanów.
3
4
1. Pojęcia wstępne Ponadto muszą zachodzić warunki lokalności: zapis może być zmieniony tylko w jednym bloku i zmiana może dotyczyć co najwyżej jednego symbolu, blok wybrany do przetwarzania w kolejnym kroku musi być w obrębie z góry określonej odległości od poprzednio obserwowanego bloku, wyniki zapisu muszą zależeć tylko od obserwowanych symboli i stanów pojawiających się w toku przetwarzania danych. Dodatkowo przyjętym warunkiem jest determinizm obliczeń (chociaż znana metoda symulacji procesów niedeterministycznych przez deterministyczne czyni ten warunek niekoniecznym). Przekładając te warunki na bardziej konkretny opis obliczenia otrzymujemy model obliczalności nazywany maszyną Turinga nieformalnie określony następująco: maszyna składa się z nieskończonej taśmy, podzielonej na identyczne komórki, służącej do przechowywania danych wejściowych, wyjściowych oraz informacji roboczych. Wszystkie elementy znajdujące się na taśmie są napisami (ciągami znaków), przy czym obowiązuje zasada umieszczania jednego znaku w jednej komórce. Bez utraty ogólności wybiera się zwykle pewien alfabet jako zasób znaków dopuszczalnych przy budowaniu napisów. Praktycznie często wybór pada na alfabet binarny (zerojedynkowy) pozwalający na względnie wygodną i zwięzłą reprezentację danych. Ponadto konstrukcja maszyny wymaga określenia skończonego zbioru stanów, z którego pochodzi element wskazujący na bieżącą sytuację (stan) maszyny. Oczywiście nie jest to jedyny model jaki można wypracować rozważając specyfikę procesów obliczeń efektywnych. Jednak posiadanie opisu takiego modelu wystarcza do - na razie nieformalnego - wprowadzenia pojęć rozstrzygalności i obliczalności. Dowolny problem będziemy nazywali problemem decyzyjnym, jeżeli rozwiązanie tegoż będzie się sprowadzało do udzielania jednej z dwóch odpowiedzi (zwykle sprowadza się to do wyboru pomiędzy akceptacją: wariant pozytywny, a odrzuceniem: wariant negatywny) najprościej opisanych alternatywą TAK/NIE. Jeżeli problem decyzyjny znajduje odpowiedź za pomocą procesu obliczalnego (względem wybranego modelu obliczeń efektywnych) to problem nazywamy rozstrzygalnym. Z kolei dowolną funkcję nazywać będziemy obliczalną jeżeli jej wartości mogą być wyznaczane - tak jak powyżej - przy użyciu procesów obliczalnych. Funkcję będziemy nazywali częściowo obliczalną jeżeli będzie ona obliczalna w swojej dziedzinie, zaś dla argumentów spoza dziedziny proces liczący nie będzie przynosił żadnej wartości.
1.3. Notacja Algebra funkcyjna jest użyteczną strukturą pomocną przy opisie zbioru funkcji generowanych za pomocą domknięcia indukcyjnego dokonywanego
1.3. Notacja ze względu na wyszczególnione operatory. To pojęcie jest często w użyciu w teorii funkcji częściowo rekurencyjnych oraz teorii obliczeń. Definicja 1.1. Niech F będzie pewnym zbiorem funkcji, zaś F ⊆ F pewnym ustalonym podzbiorem F . Ponadto niech O ⊆ ∪k∈N {O : F k → F } będzie zbiorem operatorów. Wówczas domknięciem indukcyjnym funkcji ze zbioru F dla zbioru operatorów O, oznaczonym przez A = [F, O], będziemy nazywali najmniejszy zbiór zawierający F taki, że jeżeli f1 , . . . , fk ∈ A są w dziedzinie k-argumentowego operatora O ∈ O, wówczas zachodzi O(f1 , . . . , fk ) ∈ A (czyli wynik działania operatora O ∈ O na argumenty f1 , . . . , fk ∈ A także będzie należał do zbioru A). Para [A, O] będzie nazywana algebrą funkcyjną. Algebra funkcyjna jest nazywana przeliczalną jeżeli oba zbiory F i O są co najwyżej przeliczalne. W naszym zapisie A = [F, O] ze względu na prostotę notacji będzie mogło oznaczać zarówno domknięcie indukcyjne [F, O] jak i wyliczenie zbiorów F oraz O, co będzie jasne w zależności od kontekstu wystąpienia.
5
Rozdział 2 Funkcje częściowo rekurencyjne
2.1. Funkcje pierwotnie rekurencyjne . . . . . . . . . . 2.2. Minimalizacja nieograniczona i funkcje częściowo rekurencyjne . . . . . . . . . . . . . . . . . . . . . 2.3. Struktura zbioru funkcji częściowo rekurencyjnych 2.4. Zadania . . . . . . . . . . . . . . . . . . . . . . . .
. . .
8
. . . . . . . . .
11 14 25
8
2. Funkcje częściowo rekurencyjne Należy rozróżniać pomiędzy obliczalnością w sensie intuicyjnym (tym co wydaje się możliwe do policzenia w praktyce), a precyzyjną definicją funkcji częściowo rekurencyjnych, które będą przez nas rozważane w dalszej części pracy. Jednak jest oczywiste, że ta matematyczna formalizacja jaką jest pojęcie funkcji częściowo rekurencyjnych powstała z naturalnej interpretacji procesu obliczeń. Dlatego rozważmy poniżej kilka funkcji w oczywisty sposób możliwych do obliczenia i kilka metod prowadzenia obliczeń wykorzystujących zadane funkcje obliczalne. Rozważmy najpierw kwestię jakiego rodzaju argumenty powinny posiadać te funkcje, co do których łatwo się zgodzić, iż można efektywnie obliczyć i wydrukować ich wynik. Jest oczywiste, że podstawą od której zależy (oczywiście nie wyłącznie) możliwość tworzenia procedur obliczających wartości jest właściwy dobór dziedziny i przeciwdziedziny funkcji. Najprostszym zbiorem o elementach zapisywanych w skończonej reprezentacji będzie oczywiście zbiór liczb naturalnych N. Chociaż można wskazać inne zbiory także odpowiadające naszemu celowi (na przykład liczby całkowite czy wymierne) to warto zauważyć, iż nie wszystkie zbiory liczbowe mają taką cechę. Zbiór liczb rzeczywistych uniemożliwia efektywne obliczanie nawet prostych funkcji nie dając możliwości skończonego zapisu liczb niewymiernych.
2.1. Funkcje pierwotnie rekurencyjne Rozpoczniemy od rozważenia kilku funkcji o argumentach i wynikach naturalnych dla których istnieją oczywiste metody wyznaczania ich wartości. W uzasadnianiu obliczalności poszczególnych funkcji dla ustalenia uwagi możemy przyjąć notację binarną jako zadany sposób reprezentacji liczb naturalnych. — Funkcja zerowania Z : N → N, Z(x) = 0, jest wyliczana przez proste wpisanie zera jako wyniku. — Funkcja następnika S : N → N, S(x) = x + 1 musi być obliczona nieco bardziej skomplikowaną metodą: poczynając od ostatniej cyfry wymieniaj wszystkie jedynki argumentu na zera aż do napotkania cyfry zero lub wyczerpania wszystkich cyfr. Jeśli napotkano zero zastąp je jedynką, jeśli w liczbie nie ma zer dopisz na początku jedynkę. Innymi funkcjami, do których podobną metodą można określić (mniej lub bardziej skomplikowane) przepisy obliczania są dla przykładu:
2.1. Funkcje pierwotnie rekurencyjne
9
— funkcja rzutowania (projekcji) Ini : Nn → N
( gdzie 1 ≤ i ≤ n),
Ini (x1 , ..., xn ) = xi ; — funkcja dodawania + : N × N → N, +(x, y) = x + y; — funkcja mnożenia · : N × N → N, ·(x, y) = xy; — funkcja odejmowania ograniczonego ˙ : N × N, − x − y x ≥ y, ˙ −(x, y) = 0 x < y. Zauważmy, że wyliczone powyżej funkcje mogą być podstawą do określania innych funkcji obliczalnych. Wystarczy w tym celu wprowadzić operacje definiujące nowe funkcje na podstawie zadanych funkcji, które będą zachowywać cechę obliczalności: to znaczy jeżeli funkcje będące argumentami są obliczalne to i nowozdefiniowana funkcja będzie miała tą cechę. Zilustrujmy to na przykładach. Niech f (x) = (x + 1)2 , f : N → N. Aby obliczyć wartość funkcji f dla pewnego argumentu należy obliczyć najpierw jego następnik, a następnie użyć wyniku dwa razy jako argumentów funkcji mnożenia. Funkcja f jak widać z powyższego opisu jest obliczalna, a to dzięki temu iż jest złożeniem dwóch funkcji obliczalnych. Stąd jako pierwszą z operacji zachowujących obliczalność możemy zaproponować złożenie (superpozycję) funkcji f (x1 , . . . , xn ) = h(g(x1 , . . . , xn )), gdzie dla danych funkcji g, h będziemy poprzez złożenie definiowali nową funkcję f . Formalna definicja operatora złożenia wygląda następująco. Definicja 2.1. Dla zadanej funkcji g : Nm → N oraz ciągu funkcji h1 , . . . , hm : Nn → N funkcję f : Nn → N będziemy nazywali złożeniem g oraz h1 , . . . , hm i oznaczali c m (g, h1 , . . . , hm ) wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn ∈ N zachodzi: f (x1 , . . . , xn ) = g(h1 (x1 , . . . , xn ), . . . , hm (x1 , . . . , xn )).
10
2. Funkcje częściowo rekurencyjne Innego rodzaju operację wykorzystamy dla obliczania funkcji silni x!. Tutaj postępowanie przy obliczaniu polega na odwoływaniu się do wartości tej samej funkcji ale dla innych (mniejszych) argumentów. Aby wyznaczyć 5! musimy pomnożyć 5 przez 4!, co oznacza konieczność wcześniejszego obliczenia 4! przez podobne rozpisanie 4 · 3! aż do 0!, które przyjmujemy jako równe 1. Jak widać obliczanie silni sprowadza się do wielokrotnego wykorzystywania funkcji mnożenia. Ten sposób budowania obliczeń efektywnych nazywamy rekursją prostą. Pełna definicja operatora rekursji prostej zapisana jest poniżej. Definicja 2.2. Dla zadanych funkcji g : Nn → N oraz h : Nn+2 → N funkcję f : Nn+1 → N będziemy nazywali wynikiem rekursji prostej na g i h i oznaczali r (g, h) wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn ∈ N zachodzi: f (x1 , . . . , xn , 0) = g(x1 , . . . , xn ) f (x1 , . . . , xn , y + 1) = h (x1 , . . . , xn , y, f (x1 , . . . , xn , y)) . Dodajmy, że w przypadku definiowania funkcji jednoargumentowych po prawej stronie będziemy wstawiali wartość funkcji g(x) w punkcie 0, aby zachować zgodność liczby argumentów (g(0) jako stała może być traktowana jako ’funkcja zeroargumentowa’). Używając wprowadzonej wcześniej terminologii możemy teraz zdefiniować zbiór funkcji pierwotnie rekurencyjnych, który na mocy powyższych rozważań będzie zawierał pewne funkcje efektywnie obliczalne w intuicyjnym sensie. Definicja 2.3. Zbiorem funkcji pierwotnie rekurencyjnych nazywamy domknięcie indukcyjne określone następująco: PRIM = [{Z, S, Ink : k, n ∈ N, k ≤ n}, {r , c m : m ∈ N, m ≥ 1}]. Jak widać z powyższej definicji każda funkcja pierwotnie rekurencyjna może być przedstawiona w postaci ciągu kolejnych operacji złożenia i rekursji prostej budowanych na fundamencie funkcji podstawowych wybranych spośród funkcji zerowania Z, następnika S i rzutowania Ink . Warto zauważyć, że zarówno funkcje podstawowe są wszędzie zdefiniowane, jak i operacje pierwotnie rekurencyjne prowadzą od funkcji wszędzie zdefiniowanych do funkcji wszędzie zdefiniowanych. Stąd wynika, że dziedzina każdej funkcji pierwotnie rekurencyjnej jest odpowiednim iloczynem kartezjańskim liczb naturalnych Nk , k ≥ 1; w teorii obliczeń takie funkcje (zdefiniowane dla każdego argumentu) będziemy nazywali funkcjami całkowitymi.
2.2. Minimalizacja nieograniczona i funkcje częściowo rekurencyjne Przykład 2.4. Pokażemy,że funkcja dodawania + : N×N → N jest funkcją pierwotnie rekurencyjną. Naturalną własnością dodawania jest spełnianie poniższych warunków: x + 0 = x, x + (y + 1) = (x + y) + 1. Używając zapisu odpowiadającego funkcjom podstawowym wprowadzonym w definicji PRIM oraz rekursji prostej i złożenia otrzymamy (dla większej precyzji prezentując także dodawanie w notacji prefiksowej): +(x, 0) = I11 (x) +(x, y + 1) = S(I33 (x, y, +(x, y)), co ostatecznie może być zapisane jako: r (I11 , c 1 (S, I33 )). Jak się okazuje, bardzo wiele funkcji użytecznych w praktyce obliczeniowej mieści się właśnie w zbiorze funkcji pierwotnie rekurencyjnych. W szczególności powszechnie znane operacje arytmetyczne zawarte są w zbiorze PRIM.
2.2. Minimalizacja nieograniczona i funkcje częściowo rekurencyjne Operacją o znacząco innym charakterze jest minimalizacja nieograniczona, zwana czasem także µ-rekursją. Dla ilustracji zastanówmy się nad obliczalnością następującej funkcji f : N → N: f (x) = y ⇐⇒ (y 2 ≥ x) i nie istnieje z < y takie, że z 2 ≥ x. Aby praktycznie wyliczyć wartość takiej funkcji dla pewnego x najprościej będzie użyć następującej metody: kolejne argumenty z (poczynając od zera) będziemy podnosić do kwadratu i odejmować od x, w chwili otrzymania 0 wynikiem stanie się ostatnio rozważana wartość z. Inaczej mówiąc bę˙ 2 względem z dziemy szukali najmniejszego miejsca zerowego funkcji x−z dla zadanego x. Jest to jak widać kolejna metoda wykorzystywania funkcji obliczalnych do definiowania nowych funkcji obliczalnych. Oto ogólny opis operacji minimalizacji nieograniczonej.
11
12
2. Funkcje częściowo rekurencyjne Definicja 2.5. Dla zadanej funkcji g : Nn+1 → N funkcję f : Nn → N będziemy nazywali wynikiem minimalizacji nieograniczonej na g i oznaczali µ(g) wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn ∈ N zachodzi: f (x1 , . . . , xn ) = y ⇐⇒ g(x1 , . . . , xn , y) = 0 i dla każdego z < y funkcja g(x1 , . . . , xn , z) jest zdefiniowana oraz g(x1 , . . . , xn , z) 6= 0.
W powyższej definicji należy zwrócić uwagę na wymóg zdefiniowania funkcji g dla wszystkich argumentów mniejszych od miejsca zerowego y. Ma to gwarantować zgodność definicji z intuicją mówiącą, że gdyby dla pewnego z < y funkcja g była niezdefiniowana, to obliczenia g(x1 , . . . , xn , z) zawiodłoby (na przykład przez użycie pętli nieskończonej) i nie sposób byłoby obliczyć kolejnych wartości: g(x1 , . . . , xn , z + 1),. . ., g(x1 , . . . , xn , y). W przypadku tej operacji mogą jednak pojawić się problemy braku miejsc zerowych funkcji g i w konsekwencji niezdefiniowanie funkcji f dla pewnych argumentów. Przykład 2.6. Rozważając przypadek funkcji g(x, y) = x + y widać, że funkcja f = µ(g) dla x = 0 będzie równa f (0) = 0 jednak dla pozostałych wartości x ∈ N − {0} funkcja f (x) będzie niezdefiniowana. W tym kontekście wprowadzimy wygodne skróty notacyjne: jeżeli funkcja f jest określona dla pewnego argumentu x będziemy to zapisywali f (x) ↓, jeżeli funkcja nie jest zdefiniowana dla jakiegoś argumentu z wówczas oznaczamy to jako f (z) ↑. Przy zachowywaniu tej konwencji funkcja jednoargumentowa jest całkowita (w znaczeniu wprowadzonym w poprzednim paragrafie) wtedy i tylko wtedy (∀x)f (x) ↓. Uzupełnieniem tej terminologii jest pojęcie funkcji częściowej: funkcję f : k N → N nazywamy funkcją częściową jeżeli f jest określona we właściwym podzbiorze Nk , to znaczy istnieją takie x1 , . . . , xn , że f (x1 , . . . , xn ) ↑. Korzystając z powyżej wprowadzonej operacji minimalizacji możemy teraz określić zbiór funkcji częściowo rekurencyjnych: będą to funkcje, które co prawda mogą być funkcjami częściowymi, ale w obrębie swej dziedziny pozostają nadal obliczalne. Definicja 2.7. Zbiorem funkcji częściowo rekurencyjnych nazywamy domknięcie indukcyjne określone następująco: PREC = [{Z, S, Ink : k, n ∈ N, k ≤ n}, {µ, r , c m : m ∈ N, m ≥ 1}].
2.2. Minimalizacja nieograniczona i funkcje częściowo rekurencyjne Pokażemy jako przykład, że dzielenie całkowite jest funkcją częściowo rekurencyjną. Przykład 2.8. Zdefiniujmy x/y jako poprzednik pierwszej takiej liczby naturalnej z, której iloczyn z y przekracza x: ˙ x/y = (µg(x, y, z))−1, ˙ ∗ z. gdzie g(x, y, z) = (x + 1)−y Należy zwrócić uwagę, że powyższa definicja daje wynik nieokreślony dla dzielenia przez 0. Przy dodaniu arbitralnie narzuconego założenia x/0 = 0 dla dowolnych x ∈ N można podać także taką definicję funkcji /, która używa rekursji prostej, wówczas / ∈ PRIM. W sposób oczywisty zbiór PREC jest właściwym nadzbiorem PRIM ze względu na to, że PREC zawiera funkcje częściowe (choćby takie jak w Przykładzie 2.6), podczas gdy PRIM zawiera wyłącznie funkcje całkowite . Wniosek 2.9. Zbiór funkcji pierwotnie rekurencyjnych zawiera się właściwie w zbiorze funkcji częściowo rekurencyjnych: PRIM ( PREC. W związku z tym pojawia się naturalne pytanie czy zbiór PRIM zawiera wszystkie funkcje częściowo rekurencyjne, które są całkowite. To pytanie prowadzi do następujących modyfikacji powyższej definicji. Funkcję całkowitą f : Nn+1 → N spełniającą następujący warunek: (∀(x1 , . . . , xn ) ∈ Nn )(∃y ∈ N)f (x1 , . . . , xn , y) = 0 nazywamy funkcją regularną. Operację minimalizacji ograniczoną do funkcji regularnych będziemy nazywali minimalizacją efektywną i oznaczali jako µr . Powyższa konstrukcja gwarantuje, że minimalizacja efektywna definiuje zawsze funkcje całkowite (wychodząc od funkcji całkowitych). Definicja 2.10. Zbiorem funkcji rekurencyjnych nazywamy domknięcie indukcyjne określone następująco: REC = [{Z, S, Ink : k, n ∈ N, k ≤ n}, {µr , r , c m : m ∈ N, m ≥ 1}]. Przykładem funkcji rekurencyjnej (elementu zbioru REC) jest dzielenie całkowite, którego definicja poprzez minimalizację efektywną znajduje się w Przykładzie 2.8. Powyższa definicja gwarantuje, że REC ( PREC. Łatwo też zauważyć, że każda funkcja częściowo rekurencyjna, która jest całkowita mieści się w REC. Kwestię relacji zachodzącej pomiędzy zbiorami PRIM i REC pozostawimy do następnego paragrafu. Jak się okazuje, klasę funkcji częściowo rekurencyjnych można zdefiniować na różne sposoby. Operacja minimalizacji jest niezbędna ze względu
13
14
2. Funkcje częściowo rekurencyjne na definiowanie w ogólny sposób funkcji, które zachowując warunek efektywnej obliczalności mogą być częściowe. Jednak przez wzmocnienie funkcji początkowych można pominąć operację rekursji prostej. W poniższej definicji przyjmiemy nietypową konwencję określania funkcji charakterystycznej, w której to liczba 0 pełni rolę wartości wskazującej przypadek pozytywny (należenie do zbioru, spełnianie relacji). Definicja 2.11. Rozważmy funkcje dodawania +, mnożenia · oraz funkcję charakterystyczną mniejszości 0 x < y, K< (x, y) = 1 x ≥ y. Wówczas zbiór PREC1 określimy jako następujące domknięcie indukcyjne : PREC1 = [{+, ·, K< }, {µ, c m : m ∈ N, m ≥ 1}]. Poprzez technikę wzajemnego zdefiniowania funkcji podstawowych obu zbiorów (funkcji podstawowych PREC w PREC1 i vice versa) oraz wyrażenie operatora rekursji prostej poprzez operator minimalizacji dowodzi się identyczności obu zbiorów. Twierdzenie 2.12. Definicje 2.7 i 2.11 definiują identyczny zbiór funkcji: PREC = PREC1 .
2.3. Struktura zbioru funkcji częściowo rekurencyjnych Rozpocznijmy od wskazania jak notację algebr funkcyjnych można wykorzystać do opisu pewnej rodziny zbiorów funkcyjnych. Przy spełnieniu dodatkowych warunków: mianowicie przeliczalności tejże rodziny zbiorów oraz możliwości wprowadzenia liniowego porządku względem relacji zawierania, będziemy w takim przypadku mówili o hierarchii zbiorów. W celu budowy takiej hierarchii będziemy używali ciągu funkcji szczególnej postaci. Definicja 2.13. Następujący ciąg funkcji będziemy nazywali ciągiem funkcji Grzegorczyka: f0 (x, y) = y + 1, f1 (x, y) = x + y, f2 (x, y) = (x + 1)(y + 1)
2.3. Struktura zbioru funkcji częściowo rekurencyjnych oraz dla n ≥ 2: fn+1 (0, y) = fn (y + 1, y + 1), fn+1 (x + 1, y) = fn+1 (x, fn+1 (x, y)). Korzystając z powyżej zdefiniowanego ciągu możemy teraz wprowadzić hierarchię zbiorów funkcji rekurencyjnych zwaną hierarchią Grzegorczyka. Przedtem jednak zdefiniujmy nowy operator na funkcjach będący modyfikacją znanej już rekursji prostej i nazywany rekursją ograniczoną. Definicja 2.14. Dla zadanych funkcji g : Nn → N, j : Nn+1 → N oraz h : Nn+2 → N funkcję f : Nn+1 → N będziemy nazywali wynikiem rekursji ograniczonej na g i h i oznaczali r< (g, h, j) wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn , y ∈ N zachodzi: f (x1 , . . . , xn , 0) = g(x1 , . . . , xn ) f (x1 , . . . , xn , y + 1) = h (x1 , . . . , xn , y, f (x1 , . . . , xn , y)) f (x1 , . . . , xn , y) ≤ j(x1 , . . . , xn , y). Konstrukcja rekursji ograniczonej ma gwarantować, że nowozdefiniowane funkcje nie będą ’trudniejsze’ do obliczenia od funkcji z których są definiowane w takim znaczeniu, iż procedura obliczająca zwykle wiąże czas i pamięć użytą do obliczeń z rzędem wyliczanej wartości. Teraz możemy już podać definicję hierarchii Grzegorczyka. Definicja 2.15. Niech ciąg (f0 , f1 , . . . , fn , . . .) będzie ciągiem funkcji Grzegorczyka. Zdefiniujmy następujące domknięcie indukcyjne: : Ei = [{Z, S, I11 , I21 , I22 , fi }; {r< , c m : m ∈ N, m ≥ 1}}], Wówczas rodzinę zbiorów {Ei : i ∈ N} będziemy nazywali hierarchią Grzegorczyka. Prosty przykład pokazuje, że mnożenie należy do klasy E2 . Przykład 2.16. Zdefiniujmy f (x, y) poprzez następującą rekursję ograniczoną: f (x, 0) = Z(x), f (x, y + 1) = I21 (x, y) + f (x, y), f (x, y) ≤ f2 (x, y). Łatwo zauważyć, że funkcja f (x, y) = x · y i że spełnia ona warunki przynależności do E2 pod warunkiem, iż dodawanie także zawiera się w E2 . Jednak kolejne wykorzystanie rekursji ograniczonej g(x, 0) = I11 (x), g(x, y + 1) = S(I22 (I21 (x, y), g(x, y))), g(x, y) ≤ f2 (x, y) prowadzi nas do potrzebnego rezultatu g(x, y) = x + y ∈ E2 .
15
16
2. Funkcje częściowo rekurencyjne Funkcje z ciągu Grzegorczyka mają szereg istotnych własności, z których kilka przydatnych w dalszych rozważaniach zaprezentujemy poniżej. Lemat 2.17. Zachodzą nastepujące nierówności: dla każdego n > 1: (∀x)y < fn (x, y), dla każdego n ≥ 0: (∀x, y)fn (x, y) < fn (x + 1, y), dla każdego n > 0: (∀x, y)fn (x, y) < fn (x, y + 1), (∀x, y)fn (x, y) < fn+1 (x, y). Dowód. Wszystkie nierówności można pokazać za pomocą indukcji podwójnej: najpierw stosując indukcję względem n, a wewnątrz indukcję względem x. Dla przykładu pokażemy ten sposób postępowania dla pierwszej nierówności. Niech n = 2, wówczas f2 (x, y) = (x + 1)(y + 1) > y. Przyjmijmy teraz założenie indukcyjne, że nierówność zachodzi dla n = k. W tym przypadku użyjemy indukcji względem x. Dla x = 0 uzyskujemy nierówności fk+1 (0, y) = fk (y + 1, y + 1) > y + 1 > y dzięki założeniu indukcyjnemu dla n. Teraz jako założenie indukcyjne przyjmujemy stwierdzenie o zachodzeniu nierówności dla x = m. Stąd otrzymujemy fk+1 (m + 1, y) = fk+1 (m, fk+1 (m, y)) > fk+1 (m, y) > y co kończy dowód indukcyjny względem x i n równocześnie. Pozostałe nierówności można udowodnić podobnie. Powyższe własności ciągu funkcji mogą posłużyć do pokazania, że rodzina zbiorów {Ei : i ∈ N} jest rzeczywiście hierarchią: to znaczy, że kolejne zbiory tej rodziny zawierają się w sobie w sposób właściwy. Twierdzenie 2.18. Dla każdego n ≥ 0 zachodzi następujące zawieranie właściwe En ( En+1 . Szkic dowodu. Powyższe twierdzenie jest w rzeczywistości połączeniem dwóch faktów: dla każdego n ≥ 0 zachodzi En ⊂ En+1 oraz dla każdego n ≥ 0 zachodzi En 6= En+1 . Rozpoczniemy od wskazania przebiegu dowodu zawierania. W tym celu wystarczy pokazać, że dla każdego i < n zachodzi fi ∈ En . Dla i = 0 jest
2.3. Struktura zbioru funkcji częściowo rekurencyjnych to prawdą dla każdego n bo f0 (x, y) = y + 1 = S(y) ∈ En . Załóżmy teraz indukcyjnie dla dowolnego n, że dla pewnego k < n − 1 mamy fk ∈ En . Należy teraz pokazać, że fk+1 ∈ En . Mamy przy tym: fk+1 (0, y) = fk (y + 1, y + 1), fk+1 (x + 1, y) = fk+1 (x, fk+1 (x, y)), fk+1 (x, y) < fn (x, y). Aby zakończyć dowód trzeba sprowadzić przywołaną powyżej definicję funkcji fk+1 - używającą rekursji podwójnej, to znaczy rekursji względem dwóch zmiennych x, y - do zwykłej rekursji ograniczonej. Technika takiej redukcji (wykorzystująca szczególną postać minimalizacji) zostanie pokrótce omówiona w dalszej części skryptu. Do dowodu En 6= En+1 wykorzystuje się fakt, że funkcja fn+1 (x, x) rośnie szybciej niż jakakolwiek funkcja jednoargumentowa należąca do En i w związku z tym fn+1 nie może należeć do En . Fakt ten dowodzi się za pomocą indukcji względem n. W toku dalszych rozważań będziemy nazywać funkcję f funkcją rzędu k jeżeli f jest funkcją inicjalną i k = 0 lub jeżeli k = 1 + max{k1 , . . . , km } gdzie k1 , . . . , km są rzędami funkcji g1 , . . . , gm z których bezpośrednio za pomocą pewnej operacji zdefiniowano f . Dla n = 0 mamy pokazać, że f1 (x, x) = 2x rośnie szybciej niż dowolna jednoargumentowa funkcja f z E0 . Zauważmy, że jeśli f jest rzedu k to f (x) < x + 1 + 2k . Ale od pewnego p dla x > p zachodzi x + 1 + 2k < 2x. Dla n = 1 należy udowodnić, że f2 (x, x) = (x + 1)2 rośnie szybciej niż dowolna jednoargumentowa funkcja f z E1 . W tym przypadku jednak mamy k dla f rzedu k: f (x) ≤ (x + 1)22 . Ale znów od pewnego p dla x > p mamy k (x + 1)22 < (x + 1)2 . Dla n ≥ 2 możemy poprowadzić dowód przez indukcję względem k. Gdy k = 0 to rozpatrujemy przypadek funkcji inicjalnych a one będą mniejsze od f3 (0, x) czyli także od fn+1 (0, x). Zakładając, że warunek zachodzi dla k = s rozważmy przypadek funkcji g rzędu s + 1. Ponieważ g została zdefiniowana przez operację złożenia lub rekursji ograniczonej z funkcji rzędu k wystarczy pokazać dziedziczenie własności przez te operacje, co zarówno dla rekursji ograniczonej jak i złożenia jest oczywiste. Obserwując wcześniej podaną alternatywną definicję funkcji częściowo rekurencyjnych PREC1 można zauważyć, że kluczową operacją w powyższej algebrze funkcyjnej jest operacja minimalizacji. Jednak - jak wskazano już przy wprowadzaniu tego operatora - w swojej ogólnej formie minimalizacja może prowadzić do nieokreśloności definiowanej funkcji. Warte rozważania
17
18
2. Funkcje częściowo rekurencyjne wydaje się jak zmodyfikowanie operatora minimalizacji mogłoby w każdej sytuacji zagwarantować zatrzymanie procesu obliczeniowego i w efekcie zapewnić całkowitość nowozdefiniowanej funkcji. Definicja 2.19. Dla zadanej funkcji g : Nn+1 → N funkcję f : Nn+1 → N będziemy nazywali wynikiem minimalizacji ograniczonej na funkcji całkowitej g i oznaczali µ< (g) wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn ∈ N zachodzi: f (x1 , . . . , xn , z) = y ⇐⇒ (y < z) ∧ g(x1 , . . . , xn , y) = 0 i dla każdego w < y mamy g(x1 , . . . , xn , w) 6= 0, f (x1 , . . . , xn , z) = z ⇐⇒ dla każdego w < z zachodzi g(x1 , . . . , xn , w) 6= 0. Korzystając z powyżej wprowadzonej operacji minimalizacji ograniczonej możemy teraz określić zbiór funkcji elementarnie rekurencyjnych: będą to funkcje, generowane w podobny sposób do funkcji zbioru PREC1 (choć z inaczej dobranymi funkcjami podstawowymi), ale zachowujące warunek skończonego obliczenia (czyli całkowite). Czasem zamiast minimalizacji z nierównością ostrą będziemy używali minimalizacji µ≤ odpowiadającej definicji µ< z parametrem z + 1. Ponadto w zapisie zwykle będziemy zaznaczali po której zmiennej dokonujemy minimalizacji. Definicja 2.20. Zbiorem funkcji elementarnie rekurencyjnych nazywamy domknięcie indukcyjne określone następująco: ˙ xy }, {µ< , c m : m ∈ N, m ≥ 1}]. EREC = [{S, −, Podajmy teraz wynik wiążący ze sobą w nietrywialny sposób wprowadzone powyżej podklasy funkcji rekurencyjnych. Twierdzenie 2.21. Zachodzi następująca zależność ∞ [
En ⊂ PRIM.
n=0
S Dowód. Analizując zależność ∞ n=0 En ⊂ PRIM rozpoczniemy od pokazania, że dla każdego n mamy En ⊂ PRIM. Biorąc pod uwagę definicję En wystarcza pokazać, że fn należy do PRIM. Zauważmy, że dla f0 (x, y) = y+1, f1 (x, y) = x+y, f2 (x, y) = (x+1)(y+1) jest to oczywiste. Dlatego wystarczy poprowadzić dalej dowód indukcyjny i pokazać, że przy założeniu fk ∈ PRIM, k ≥ 2 mamy także fk+1 ∈ PRIM. Rozważmy pomocniczo problem funkcji h zdefiniowanej następująco: h(0, x) = g(x) h(S(y), x) = h(y, h(y, x)).
2.3. Struktura zbioru funkcji częściowo rekurencyjnych y
Nietrudno spostrzec, że h(y, x) = g 2 (x), czyli jeżeli g ∈ PRIM to otrzymamy, że h ∈ PRIM (korzystając z opisanego spostrzeżenia wiążącego funkcje g i h łatwo funkcję h wyrazić poprzez rekursję). Ponieważ mamy: fk+1 (0, y) = fk (y + 1, y + 1), fk+1 (S(x), y) = fk+1 (x, fk+1 (x, y)), to przy oznaczeniu g(y) = fk (y + 1, y + 1) otrzymujemy identyczny z poprzednio omówionym schemat definicyjny. Z założenia indukcyjnego mamy fk ∈ PRIM czyli i g ∈ PRIM. Stąd już wynika, że także fk+1 ∈ PRIM. Tak zakończyliśmy dowód indukcyjny faktu: dla każdego n ∈ N zachodzi En ∈ PRIM koncząc tym samym cały dowód. S∞ W rzeczywistości zachodzi n=0 En = PRIM, ale dowód tego faktu wykracza poza zakres tego skryptu. Bardzo ciekawym faktem jest identyczność zbioru funkcji elementarnie rekurencyjnych oraz zbioru E3 . Zauważając, że f3 (x, y) = g(2x , y), gdzie g(0, y) = y, g(S(x), y) = (g(x, y) + 2)2 , 22x
oraz wskazując ograniczenie g(x, y) < (y + 2)2 otrzymujemy jako wniosek należenie g do EREC (ponieważ rekursja ograniczona nie wyprowadza poza zbiór funkcji elementarnie rekurencyjnych), co oznacza, iż f3 także należy ˙ S(x) należą do EREC. Z kolei nie jest trudno dostrzec, że funkcje xy , x−y, do E3 ze względu na możliwość ich zdefiniowania przy użyciu klasycznych definicji rekurencyjnych. Trudnością do rozwiązania jest tylko wskazanie funkcji z E3 majoryzującej xy . Jak się okazuje tą majorantą jest właśnie f3 (można indukcyjnie pokazać, że xy ≤ f3 (x, y)). Finalnym krokiem jest pokazanie wzajemnej zastępowalności rekursji ograniczonej oraz minimum ograniczonego co pozostawimy jako ćwiczenie. W ten sposób jako wniosek z powyższych rozważań pojawia się następujące twierdzenie. Twierdzenie 2.22. Zachodzi identyczność zbioru funkcji elementarnie rekurencyjnych ze zbiorem E3 : E3 = EREC. Z powyżej podanych twierdzeń otrzymujemy jako wniosek relację zbiorów funkcji elementarnie i pierwotnie rekurencyjnych.
19
20
2. Funkcje częściowo rekurencyjne Twierdzenie 2.23. Klasa funkcji elementarnie rekurencyjnych zawiera się właściwie w klasie funkcji pierwotnie rekurencyjnych: EREC ( PRIM. Ważnym przykładem funkcji elementarnie rekurencyjnych są funkcje kodowania użyteczne w wielu zastosowaniach (zwłaszcza w redukowaniu liczby zmiennych używanych jako argumenty funkcji rekurencyjnych). Lemat 2.24. Istnieje funkcja kodowania par J : N × N → N oraz funkcje dekodowania J1 , J2 : N → N, które należą do EREC takie, że (∀x, y ∈ N)J(x, y) = z ⇐⇒ J1 (z) = x ∧ J2 (z) = y. Dowód. Można łatwo pokazać, że dzielenie całkowite przez 2 jest funkcją elementarnie rekurencyjną. Wykorzystując teraz diagonalne trawersowanie nieskończonej tabeli par liczb naturalnych możemy zdefiniować: J(x1 , x2 ) =
(x + y)(x + y) + 3x + y . 2
J zdefiniowane w ten sposób podaje numer pary liczb naturalnych w tak zwanej numeracji Cantora. Przyjmijmy od tego miejsca, że ( 0 x = y, K= (x, y) = 1 x 6= y. Teraz J1 , J2 uzyskamy prostą metodą sprawdzenia wszystkich par (wykorzystującą minimalizację ograniczoną) J1 (z) = µx≤z K< (µy≤z K= (z, J(x, y)), z + 1), J2 (z) = µx≤y K< (µx≤z K= (z, J(x, y)), z + 1). Dokończmy analizę struktury zbioru PREC poprzez zbadanie relacji zbioru funkcji pierwotnie rekurencyjnych do funkcji całkowitych zawartych w REC. W naszych rozważaniach wykorzystamy taką operację definiowania funkcji, która była wprowadzona przy definiowaniu ciągu funkcji Grzegorczyka: będzie to rekursja względem dwóch zmiennych (rekursja podwójna). Jak się okazuje, taka operacja w ogólnej postaci nie może być sprowadzona do rekursji prostej. Co więcej, analogicznie do rekursji względem dwóch zmiennych, można definiować nowe funkcje używając schematu rekursji względem trzech, czterech i ogólnie n zmiennych (gdzie n ∈ N). Można
2.3. Struktura zbioru funkcji częściowo rekurencyjnych wykazać, że schemat rekursji względem n parametrów nie może być przekształcony w schemat rekursji względem mniejszej liczby zmiennych. Co ciekawe, istnieją jednak także takie funkcje rekurencyjne (całkowite), których nie da się zdefiniować za pomocą operacji rekursji według jakiejkolwiek liczby zmiennych, co oznacza że operacja minimalizacji efektywnej jest operacją silniejszą niż rekursja względem dowolnej liczby zmiennych. Używając rekursji podwójnej wprowadzimy teraz funkcję, która pozwoli nam okazać, że PRIM ( REC. Definicja 2.25. Funkcją Ackermmana będziemy nazywali funkcję A : N2 → N określoną w poniższy sposób: A(0, m) = m + 1, A(S(n), 0) = A(n, 1), A(S(n), S(m)) = A(n, A(S(n), m)). Podamy teraz kilka własności funkcji Ackermanna potrzebnych nam przy okazaniu, że A 6∈ PRIM. Twierdzenie 2.26. Funkcja Ackermanna spełnia następujące warunki: 1. 2. 3. 4. 5. 6.
(∀n, m)m < A(n, m), (∀n, m)A(n, m) < A(n, S(m)), (∀n, m)A(n, S(m) ≤ A(S(n), m), (∀n, m)A(n, m) < A(S(n), m), (∀m)A(1, m) = m + 1, (∀m)A(2, m) = 2m + 3.
Dowód. Pokażemy tylko dwa pierwsze przypadki pozostałe jako analogiczne pozostawiając czytelnikowi. 1. Skorzystamy najpierw z indukcji względem n. Dla n = 0 mamy A(0, m) = m + 1 > m. Załóżmy, że warunek zachodzi dla n = j, w takim przypadku użyjemy ponownie dowodu indukcyjnego, ale tym razem po m. Dla m = 0 mamy A(S(j), 0) = A(j, 1) > 1, gdzie ostatnia nierówność powstaje na mocy założenia warunku indukcyjnego dla n = j. Ostatecznie otrzymujemy A(S(j), 0) > 0. Załóżmy teraz, że dla m = k zachodzi rozważany warunek (w ramach indukcji po m). Wówczas otrzymamy A(S(j), S(k)) = A(j, A(S(j), k)) > A(S(j), k), gdzie ostatnia nierówność wynika z założenia dla indukcji po n. Ponieważ A(S(j), k) > k na mocy założenia dla indukcji po m, to otrzymujemy razem A(S(j), S(k)) > A(S(j), k) > k co daje nierówność A(S(j), S(k)) > S(k) i kończy dowód indukcyjny.
21
22
2. Funkcje częściowo rekurencyjne 2. Dla n = 0 mamy A(0, S(m)) = m + 2 > m + 1 = A(0, m). Rozważmy teraz dowolne k > 1, wówczas istnieje j takie, że S(j) = k. Wystarczy zauważyć, że dla dowolnych k > 1 oraz m mamy A(k, S(m)) = A(S(j), S(m)) = A(j, A(S(j), m)) > A(S(j), m) = A(k, m), przy czym nierówność uzyskaliśmy z poprzednio udowodnionej własności.
Kolejne oszacowania można uzyskać w podobny sposób.
Dowiedziemy teraz jeszcze jeden lemat ważny przy dowodzie głównego twierdzenia tego paragrafu. Lemat 2.27. Dla każdych n1 , . . . , nk ∈ N istnieje c ∈ N, takie, że (∀m)
k X
A(ni , m) ≤ A(c, m).
i=1
Dowód. Przeprowadzimy ponownie dowód indukcyjny po k. Dla k = 1 mamy c = n1 . Przyjmijmy teraz założenie indukcyjne, że warunek zachodzi dla k = s. Wówczas s+1 X i=1
A(ni , m) =
s X
A(ni , m) + A(ns+1 , m).
i=1
Ps+1 Z załozenia indukcyjnego mamy i=1 A(ni , m) ≤ A(c, m) + A(ns+1 , m). Niech c∗ = max(c, ns+1 ), oszacujmy teraz prawą stronę ostatniej nierówności: A(c, m) + A(ns+1 , m) ≤ 2A(c∗ , m) < 2A(c∗ , m) + 3 = A(2, A(c∗ , m)) < A(c∗ +2, A(c∗ , m)) < A(c∗ +2, A(c∗ +3, m)) = A(c∗ +3, m+1) ≤ A(c∗ +4, m). Ps+1 Czyli i=1 A(ni , m) < A(c∗ + 4, m) co kończy drugą część dowodu indukcyjnego i także cały dowód. Udowodnimy teraz kluczowe twierdzenie, które pokazuje że funkcja Ackermanna majoryzuje każdą z funkcji pierwotnie rekurencyjnych. Twierdzenie 2.28. Dla każdej funkcji f ∈ PRIM, istnieje takie c ∈ N, że n
(∀(x1 , . . . , xn ) ∈ N )f (x1 , . . . , xn ) < A(c,
n X
xi )
i=1
Dowód. Przeprowadzimy ten dowód w sposób indukcyjny względem formy, w której zdefiniowana może być dowolna funkcja pierwotnie rekurencyjna (taka postać indukcji strukturalnej jest równoważna standardowej technice dowodów indukcyjnych). Najpierw musimy pokazać, że funkcje S, Z, Ini spełniają warunek podany w tezie twierdzenia, a następnie udowodnić, nowe funkcje wprowadzone przez rekursję lub złożenie także zachowują ten warunek (o ile spełniały go funkcje na bazie których była budowana definicja).
2.3. Struktura zbioru funkcji częściowo rekurencyjnych 1. 2. 3. 4.
23
S(m) = A(0, m) < A(1, m) czyli c = 1; Z(m) = 0 < A(0, m) czyli P Pn c = 0; i In (x1 , . . . , xn ) = xi ≤ j=1 xj < A(0, nj=1 xj ) czyli c = 0; złożenie: niech h, g1 , . . . , gn spełniają tezę twierdzenia przy pierwszym argumencie A równym odpowiednio c0 , c1 , . . . , cn oraz niech f (x1 , . . . , xk ) = h(g1 (x1 , . . . , xk ), . . . , gn (x1 , . . . , xk )). Wówczas f (x1 , . . . , xk ) < A(c0 ,
n X
gj (x1 , . . . , xk )) < A(c0 ,
j=1
n X
A(cj ,
j=1
k X
xi )).
i=1
Korzystając z Lematu 2.27 można zapisać nierówności bazujące na poprzednich wynikach, w szczególności na Twierdzeniu 2.26. A(c0 ,
n X
A(cj ,
j=1
k X
xi )) < A(c0 , A(c0 ,
i=1
0
0
≤ A(c0 + c , A(c0 + c + 1,
k X
xi ))
i=1
k X
0
xi )) = A(c0 + c + 1, 1 +
k X
i=1
xi )
i=1 0
≤ A(c0 + c + 2,
k X
xi )
i=1
czyli c = c0 + c0 + 2 5. rekursja: niech g1 , g2 spełniają tezę twierdzenia przy pierwszym argumencie A równym odpowiednio c1 , c2 oraz niech f (x1 , . . . , xk , 0) = g1 (x1 , . . . , xk ) f (x1 . . . , xk , S(y)) = g2 (f (x1 , . . . , xk , y), x1 , . . . , xk , y). Przeprowadzimy teraz dowód przy tych założeniach rozbijając rozumowanie na kilka części. Rozpoczniemy od spostrzeżenia, że g1 (x1 , . . . , xk ) +
k X
xi = g1 (x1 , . . . , xk ) +
i=1
≤ A(c1 ,
k X i=1
xi ) +
k X
Iki (x1 , . . . , xk )
i=1 k X i=1
A(0,
k X i=1
xi ) <
A(c∗1 ,
k X i=1
xi ).
24
2. Funkcje częściowo rekurencyjne W ten sam sposób można pokazać, że g2 (z, x1 , . . . , xk , y) + z + y +
k X
xi < A(c∗2 , z + y +
i=1
k X
xi ).
i=1
Wykorzystamy te dwa wyniki do pokazania, że f (x1 , . . . , xk , y) + y +
k X
xi < A(c∗ , y +
i=1
k X
xi ),
i=1
gdzie za c∗ przyjmiemy max(c∗1 , c∗2 ) + 1. Dowiedziemy tej nierówności poprzez indukcję względem y. Dla y = 0 mamy f (x1 , . . . , xk , 0) + 0 +
k X
k X
xi = g1 (x1 , . . . , xk ) +
i=1
≤ A(c∗1 ,
k X
xi
i=1
xi ) ≤ A(c∗ ,
i=1
k X
xi ).
i=1
Zakładając, że warunek zachodzi dla y = m otrzymamy f (x1 , . . . , xk , m + 1) + m + 1 +
k X
xi
i=1
= g2 (f (x1 , . . . , xk , m), x1 , . . . , xk , m) + m + 1 +
n X
xi
i+1
≤ g2 (f (x1 , . . . , xk , m), x1 , . . . , xk , m) + f (x1 , . . . , xk , m) + m +
n X
xi + 1
i+1
< A(c∗2 , f (x1 , . . . , xk , m) + m +
n X
xi ) + 1 < A(c∗2 , A(c∗ , m +
i+1
≤ A(c∗ − 1, A(c∗ , m +
k X
k X
xi )) + 1
i=1
xi )) + 1 = A(c∗ , m + 1 +
i=1
k X
xi ) + 1.
i=1
Ponieważ w ciągu nierówności wystąpiły dwukrotnie nierówności ostre to możemy mieć pewność, że f (x1 , . . . , xk , m + 1) + m + 1 +
k X i=1
∗
xi < A(c , m + 1 +
k X i=1
xi )
2.4. Zadania
25
co kończy dowód indukcyjny tej części. Zachowywanie tezy dowodzonego twierdzenia przez operację rekursji wynika z prostego spostrzeżenia, że f (x1 , . . . , xk , y) ≤ f (x1 , . . . , xk , y) + y +
k X
xi < A(c∗ , y +
i=1
k X
xi ).
i=1
W ten sposób poprzez rozpatrzenie wszystkich stosownych przypadków zakończyliśmy cały dowód. Możemy teraz wykorzystać własności funkcji A aby dowieść, że istnieje funkcja rekurencyjna jednoargumentowa rosnąca szybciej od dowolnej jednoargumentowej funkcji pierwotnie rekurencyjnej, to znaczy (∃A0 : N → N)(∀f : N → N ∈ PRIM)(∃k ∈ N)(∀x ≥ k)A0 (x) > f (x). Twierdzenie 2.29. Funkcja A0 : N → N zdefiniowana jako A0 (x) = A(x, x) należy do REC i rośnie szybciej niż dowolna jednoargumentowa f ∈ PRIM. Szkic dowodu. Po pierwsze zauważmy, że funkcja Ackermanna A jest zdefiniowana poprzez rekursję podwójną - taką operację można zastąpić przez odpowiednio skonstruowaną operację minimalizacji efektywnej - stąd zarówno A, jaki i A0 (x) = A(x, x) należą do REC. Teraz rozpatrzmy dowolną jednoargumetową f ∈ PRIM. Z Twierdzenia 2.28 mamy (∃c ∈ N)(∀x ∈ N)f (x) < A(c, x). Zauważmy teraz że dla x > c A0 (x) = A(x, x) ≥ A(c, x) > f (x). Oczywistym wnioskiem z tego twierdzenia jest, że A0 6∈ PRIM i dalej że PRIM ( REC (gdyby bowiem PRIM = REC to otrzymalibyśmy A0 ∈ PRIM, co prowadzi do sprzeczności).
2.4. Zadania Ćwiczenie 2.1. Udowodnić, że poniżej wypisane funkcje arytmetyczne są funkcjami pierwotnie rekurencyjnymi: 1. mnożenie, 2. poprzednik: P (x + 1) = x, P (0) = 0, 3. odejmowanie ograniczone,
26
2. Funkcje częściowo rekurencyjne 4. dzielenie całkowite, 5. reszta z dzielenia całkowitego, 6. potęgowanie. Ćwiczenie 2.2. Pokazać, że funkcje podstawowe PREC należą do P REC1 oraz że K< należy do PREC. Ćwiczenie 2.3. Rozważyć symulację rekursji prostej w algebrze funkcyjnej PREC1 . Ćwiczenie 2.4. Udowodnić, że kodowanie pary liczb naturalnych (x, y) jako pojedynczej liczby z = J(x, y), przypisuje parom ich indeks w ciągu utworzonym według następującego porządku: para (x1 , y1 ) poprzedza (x2 , y2 ) wtedy i tylko wtedy, gdy x1 + y1 < x2 + y2 lub x1 + y1 = x2 + y2 i x1 < y1 . Ćwiczenie 2.5. Pokazać równoważność algebry PREC1 z algebrą funkcyjną ˙ xy }, {µ< , c m : m ∈ N, m ≥ 1}] [{S, −, Ćwiczenie 2.6. Udowodnić, Py Qyże dla f (x, y) ∈ PRIM funkcje h1 (x, y) = f (x, i) oraz h (x, y) = 2 i=o i=o f (x, i) także należą do PRIM. Ćwiczenie 2.7. Wykazać wzajemną zastępowalność operacji minimum ograniczonego oraz rekursji ograniczonej.
Rozdział 3 Inne modele obliczeniowe
3.1. 3.2. 3.3. 3.4. 3.5. 3.6.
Maszyna Turinga . . . . . Warianty maszyny Turinga λ-rachunek . . . . . . . . . Maszyny licznikowe . . . . Teza Churcha . . . . . . . Zadania . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
28 31 33 36 38 40
28
3. Inne modele obliczeniowe
3.1. Maszyna Turinga Inną klasę funkcji obliczalnych można określić odwołując się do pojęcia maszyny Turinga. Wspomniana już wcześniej idea opisu procesów obliczalnych doprowadziła do następującej, matematycznie precyzyjnej definicji. Definicja 3.1. Maszyną Turinga będziemy nazywali strukturę: M = (Q, Σ, Γ, δ, q0 , qA , qR ) gdzie Q, Σ, Γ są zbiorami skończonymi o następujących własnościach: — Q jest zbiorem stanów; — Σ jest zbiorem symboli wejściowych (alfabetem); — Γ jest zbiorem symboli taśmowych, gdzie Σ ⊂ Γ, ponadto Γ zawiera specjalny symbol t 6∈ Σ (blank); — δ : Q × Γ → Q × Γ × {←, →} jest funkcją przejścia; — q0 ∈ Q jest stanem początkowym; — qA ∈ Q jest stanem akceptującym; — qR ∈ Q jest stanem odrzucającym; przy czym oba te stany muszą być różne: qA 6= qR . Obliczenia maszyny Turinga można zilustrować następująco. Na początku na taśmę niegraniczonej długości zbudowanej z identycznych komórek zawierających co najwyżej jeden symbol jest wpisywane słowo s1 . . . sn , gdzie si ∈ Σ dla i = 1 . . . n; reszta komórek jest pusta, przy czym przyjmujemy, że komórki puste wypełnione są symbolami specjalnymi t. Głowica prowadząca zapis i odczyt danych z taśmy znajduje się nad pierwszym z zapisanych symboli wejściowych. W kolejnych krokach maszyna postępuje zgodnie z zapisem funkcji przejścia: po ustaleniu bieżącego stanu q oraz oglądanego symbolu s zgodnie z wartością δ(q, s) zostaje zmieniony stan, zastąpiony dotychczasowy symbol oraz głowica przesuwa się do sąsiedniej komórki po lewej lub po prawej stronie (zgodnie z kierunkiem strzałki). Pełny opis sytuacji w której znajduje się prowadząca obliczenie maszyna wymaga wskazania stanu q maszyny Turinga, zawartości taśmy oraz bieżącego położenia głowicy. Definicja 3.2. Konfiguracją nazywamy pełny opis ustalonej chwili obliczeń maszyny Turinga w następującej notacji: ωl qωr , gdzie ωl , ωr są słowami zbudowanymi z symboli Γ (dopuszczalne są słowa puste): ωl jest zawartością taśmy po lewej stronie głowicy, ωr to ciąg symboli poczynając od symbolu pod głowicą poprzez kolejne symbole w prawo, do ωl , ωr nie włączamy nieskończonych ciągów t występujących przed pierwszym i za ostatnim symbolem na taśmie różnym od t; zaś q określa obecny stan maszyny Turinga.
3.1. Maszyna Turinga Powyższy opis maszyny Turinga łączy z sobą dwa różne typy pojęć z jednej strony mamy do czynienia z intuicyjnymi sformułowaniami takimi jaki taśma czy głowica; z drugiej strony pojawiają się precyzyjne matematyczne oznaczenia i definicje osadzone w teorii mnogości. Należy pamiętać, że pełna deskrypcja maszyny Turinga wyrażona jest w terminach matematycznych, a sugestywne sformułowania mają tylko dopomóc w zrozumieniu jej działania. Sformalizujemy teraz obliczenia maszyny Turinga poprzez podanie stosownych definicji. Definicja 3.3. Mówimy, że w ustalonej maszynie Turinga M konfiguracja C przechodzi w konfigurację C 0 wtedy i tylko wtedy, gdy spełniony jest jeden poniższych przypadków (a, b, c ∈ Γ, u, v to napisy zbudowane z symboli Γ, qi , qj ∈ Q): — C = uaqi bv, C 0 = uqj acv oraz funkcja przejścia maszyny M spełnia δ(qi , b) = (qj , c, ←); — C = uaqi bv, C 0 = uacqj v oraz funkcja przejścia maszyny M spełnia δ(qi , b) = (qj , c, →); — C = qi bv, C 0 = qj t cv oraz funkcja przejścia maszyny M spełnia δ(qi , b) = (qj , c, ←); — C = qi bv, C 0 = cqj v oraz funkcja przejścia maszyny M spełnia δ(qi , b) = (qj , c, →); — C = uaqi , C 0 = uacqj oraz funkcja przejścia maszyny M spełnia δ(qi , t) = (qj , c, →); — C = uaqi , C 0 = uqj ac oraz funkcja przejścia maszyny M spełnia δ(qi , t) = (qj , c, ←). Zwykle oznacza się przejścia pomiędzy kolejnymi konfiguracjami C oraz przy pomocy zapisu C ⇒ C 0 . Teraz możemy wprowadzić pełną definicję obliczenia. Przyjmijmy jeszcze, że konfigurację nazywamy akceptującą, gdy jej stanem jest stan qA ; odrzucającą, gdy jej stanem jest qR . Ponadto konfiguracja jest konfiguracją początkową, gdy należy do niej stan q0 oraz obliczenia rozpoczynają się od pierwszego symbolu danych ω, to znaczy C0 = q0 ω. Możemy teraz zdefiniować przebieg obliczeń ustalonej maszyny Turinga dla pewnych danych. C0
Definicja 3.4. Mówimy, że maszyna M dokonuje obliczenia akceptującego dla danych ω wtedy i tylko wtedy, gdy istnieje ciąg obliczeń pewnej długości n następującej postaci: — Co = q0 ω, — dla każdego i < n zachodzi: Ci ⇒ Ci+1 , — Cn jest konfiguracją akceptującą.
29
30
3. Inne modele obliczeniowe Mówimy, że pewne dane zostaną zaakceptowane przez maszynę Turinga, gdy obliczenia dla tych danych prowadzą do konfiguracji akceptującej. Jeżeli obliczenie ma - oprócz informacji o akceptacji - podać wynik, wówczas dla konfiguracji końcowej Cn = ωl qA ωr za wynik będziemy przyjmowali słowo ωl ωr . Ponieważ wcześniejsze rozważania procesów obliczalnych prowadziliśmy dla funkcji na liczbach całkowitych warto byłoby podjąć próbę obliczania takich funkcji na maszynach Turinga. W tej sytuacji należy rozpocząć od przyjęcia prostej reprezentacji liczb naturalnych w ustalonym alfabecie. Wygodnym wyborem będzie prezentowanie liczb naturalnych w notacji unarnej: liczbę n ∈ N reprezentować będzie ciąg oznaczony n ¯ składający się z (n + 1) cyfr jedynek: |1 .{z . . 1}. Aby rozważać funkcje wieloargumentowe cyfrę 0 pon+1
traktujemy jako separator argumentów. W tej sytuacji maszyna Turinga będzie używać alfabetu Σ = {0, 1}. Oczywiście jest to tylko jedna z możliwych konwencji - w dalej prowadzonych rozważaniach będziemy używali takich reprezentacji, które będą dogodne dla konkretnego problemu. Przykład 3.5. Opiszemy maszynę Turinga obliczającą sumę dwóch liczb naturalnych. Biorąc pod uwagę reprezentację sumy m + n jako napisu binarnego 1| .{z . . 1} 0 |1 .{z . . 1} najprostszy algorytm będzie polegał na usunięciu dwóch m+1
n+1
pierwszych znaków oraz - jeżeli żaden z nich nie był separatorem 0 - na zamianie separatora 0 na 1. Przy takim rozwiązaniu uzyskujemy następującą maszynę Turinga: (Q = {q0 , q1 , q2 , qA , qR }, Σ = {0, 1}, Γ = Σ ∪ {t}, q0 , qA , qR ), gdzie funkcję przejścia możemy opisać w często używanej notacji wyliczającej poszczególne instrukcje: δ: q0 , 1 −→ q1 , t, → q1 , 1 −→ q2 , t, → q1 , 0 −→ qA , t, → q2 , 1 −→ q2 , 1, → q2 , 0 −→ qA , 1, →
przy czym stan qR nie występuje w funkcji przejścia (jako zbyteczny przy poprawnie skonstruowanych danych).
3.2. Warianty maszyny Turinga Przy przyjęciu powyższej konwencji możemy teraz podać definicję tych funkcji na liczbach naturalnych, które są obliczane przez maszyny Turinga. Definicja 3.6. Funkcję f : Nn → N nazywamy obliczalną przez maszynę Turinga, wtedy i tylko wtedy, gdy istnieje taka maszyna Turinga M , że f (x1 , . . . , xn ) = y ⇐⇒ obliczenie M dla x ¯1 0 . . . 0¯ xn dochodzi do konfiguracji qA z wynikiem y¯, f (x1 , . . . , xn ) ↑ ⇐⇒ obliczenie M dla x ¯1 0 . . . 0¯ xn nie uzyskuje konfiguracji ze stanem qA . Okazuje się, iż przy przyjęciu powyższej definicji zachodzi następujący bardzo ważny fakt: Twierdzenie 3.7. Każda funkcja w zbiorze liczb naturalnych jest obliczalna przez maszynę Turinga wtedy i tylko wtedy, gdy jest funkcją częściowo rekurencyjną. Dowód tego twierdzenia wykracza poza treść tego rozdziału, jego opis znajduje się w Dodatku B. Wspomnimy tylko, że jedna część dowodu wymaga skonstruowania maszyn Turinga dla funkcji podstawowych oraz wskazania sposobu symulacji operacji na funkcjach przez maszyny Turinga. W drugiej części dowodu wykorzystana jest technika arytmetyzacji, która pozwala opisać poszczególne składowe konfiguracji jako liczby naturalne i symulować obliczenie za pomocą stosownych funkcji częściowo rekurencyjnych.
3.2. Warianty maszyny Turinga Z różnych powodów wprowadzane były do teorii obliczeń różne modyfikacje powyższej definicji maszyny Turinga. Dla przykładu rozważano równoczesne przekształcenia kilku napisów, co prowadziło do tak zwanej wielotaśmowej maszyny Turinga, w której definicji główną zmianą było inne określenie funkcji przejścia δ : Q × Γk → Q × Γk × {←, →}k , gdzie k odpowiada liczbie taśm w intuicyjnym modelu maszyny. Jednak szczególnie ważną modyfikacją jest rezygnacja z deterministycznego wyboru następnej konfiguracji w ciągu obliczeń. W tym przypadku otrzymujemy następującą definicję. Definicja 3.8. Niedeterministyczną maszyną Turinga będziemy nazywali strukturę: M = (Q, Σ, Γ, δ, q0 , qA , qR ) gdzie Q, Σ, Γ są zbiorami skończonymi o następujących własnościach: — Q jest zbiorem stanów;
31
32
3. Inne modele obliczeniowe — Σ jest zbiorem symboli wejściowych (alfabetem); — Γ jest zbiorem symboli taśmowych, gdzie Σ ⊂ Γ, ponadto Γ zawiera specjalny symbol t 6∈ Σ (blank); — δ : Q × Γ → P (Q × Γ × {←, →}) jest funkcją przejścia; — q0 ∈ Q jest stanem początkowym; — qA ∈ Q jest stanem akceptującym; — qR ∈ Q jest stanem odrzucającym; przy czym oba te stany muszę być różne: qA 6= qR , zaś P(X) oznacza zbiór potęgowy (zbiór wszystkich podzbiorów) zbioru X. Przy takim określeniu pojedyncza konfiguracja może mieć wiele następujących po niej konfiguracji. W tej sytuacji obliczenie przekształca się z liniowego ciągu w drzewo, którego różne gałęzie odpowiadają różnym możliwym ścieżkom obliczeń maszyny M , zależnym od poszczególnych niedeterministycznych wyborów. Dane początkowe są akceptowane wówczas, gdy przynajmniej jedna gałąź obliczeń jest skończona i prowadzi do konfiguracji zawierającej stan qA . Powyższy model obliczeniowy nie jest modelem realistycznym - nie jest jasne jak w praktyce należałoby zapewnić w pełni niedeterministyczny (losowy) wybór dokonywany przez urządzenie liczące. Ponadto, o ile dopuszczenie niedeterminizmu pozwala na głębszą i interesującą analizę złożoności procesów obliczeniowych, jednak bardzo komplikuje możliwość definiowania funkcji - z powodu wymagania uzyskania identycznego wyniku we wszystkich gałęziach obliczeń. Tylko w celu zamknięcia naszych skrótowych rozważań niedeterministycznej maszyny Turinga zauważmy, że w świetle definicji obu wariantów maszyny Turinga można formalnie uznać każdą (deterministyczną) maszynę Turinga za szczególnie prosty przypadek niedeterministycznej maszyny, w której wszelkie wybory są w praktyce jednowariantowe. Co więcej zachodzi także wynik w pewnym sensie przeciwny. Twierdzenie 3.9. Dla każdej niedeterministycznej maszyny Turinga N istnieje równoważna jej deterministyczna maszyna Turinga M taka, że dla każdych danych ω maszyna N akceptuje ω wtedy i tylko wtedy, gdy M akceptuje ω. Pominiemy powyższy dowód, wskazując tylko, że sprowadzenie obliczenia do deterministycznej postaci wymaga wskazania metody przekształcenia drzewa obliczeń w ciąg. Do tego celu łatwo użyć jednego z algortymów trawersowania drzewa, przy czym, aby uniknąć utknięcia w nieskończonej gałęzi drzewa wystarczy przeszukiwać drzewo wszerz.
3.3. λ-rachunek
3.3. λ-rachunek Innego rodzaju opis procesów obliczalnych jest wykorzystany w zaproponowanym przez A. Churcha λ-rachunku. Trzymając się ściśle ustalonych reguł konstruowane są specyficznego wyrażenia, które mogą być przetwarzane według kilku prostych zasad (tak zwanych redukcji). Rozpoczniemy od określenia składni λ-rachunku: będziemy budowali λ-termy używając symboli zmiennych x, y, z, . . . (w razie potrzeby dodając do nich indeksy), oprócz tego jeszcze tylko symbolu abstrakcji λ, nawiasów i kropki. Reguły budowy termów λ-rachunku zostaną podane poniżej. Definicja 3.10. Termem λ-rachunku nazywamy każde i wyłącznie takie wyrażenie, które jest określone w poniższej wskazany sposób: — każda zmienna jest termem; — wyrażenie (λx.M ) jest termem, jeśli M jest termem, takie wyrażenie nazywamy λ-abstrakcją; — wyrażenie (M N ) jest termem, jeśli M, N są termami, w tym przypadku mówimy o aplikacji termów. Dla uproszczenia zapisu i możliwości opuszczania niektórych nawiasów będziemy przyjmowali zasadę lewostronnej łączności aplikacji. Identyczność dwóch termów M, N będziemy oznaczali poprzez notację M ≡ N . Do dalszych rozważań potrzebne będzie rozróżnienie pomiędzy zmiennymi wolnymi i związanymi w termach λ-rachunku. Oczywistą intuicję mówiącą, że zmienna jest związana, gdy znajduje się w zakresie (to jest po kropce) pewnej abstrakcji łatwo przekształcić w precyzyjną definicję zbiorów zmiennych wolnych i związanych w danym termie. Zbiór zmiennych związanych VB (M ) dla termu M można wprowadzić indukcyjnie: VB (x) = ∅, VB (λx.M ) = VB (M ) ∪ {x}, VB (M N ) = VB (M ) ∪ VB (N ). Analogicznie zbiór zmiennych wolnych zdefiniujemy następująco: VF (x) = {x}, VF (λx.M ) = VF (M ) − {x}, VF (M N ) = VF (M ) ∪ VF (N ). Główną operacją wykorzystywaną przy redukcji λ-termów jest podstawienie za zmienną. Wynik M [x := L] podstawienia termu L za zmienną wolną x w termie M można opisać jak następuje: ( L x ≡ y, x[y := L] ≡ x w przeciwnym razie; ( (λx.M ) x ≡ y, (λx.M )[y := L] ≡ (λx.M [y := L]) w przeciwnym razie; (M N )[y := L] ≡ (M [y := L] N [y := L]). Należy jednak pamiętać, że podstawienie nie zaburzy formy termu, jeżeli w jego wyniku żadna ze zmiennych wolnych nie zamieni się w zmienną
33
34
3. Inne modele obliczeniowe związaną. Ten warunek bezpiecznego podstawienia odpowiada rozłączności zmiennych wolnych w podstawianym termie ze zmiennymi związanymi w termie modyfikowanym: M [y := L] jest bezpieczne, wtedy i tylko wtedy, gdy VB (M ) ∩ VF (L) = ∅. Teraz pozostaje podać reguły konwersji, których stosowanie będzie redukowało λ-wyrażenia. Pierwsza z konwersji: α-konwersja ma zapobiegać kolizji zmiennych, poprzez ich bezpieczne przemianowanie w λ-abstrakcji: α
(λx.M ) → (λy.M [x := y]), przy zachowaniu warunku, że y w ogóle nie występuje w M . Wyrażenia, które można do siebie sprowadzić poprzez α-konwersję zwykle nie będą przez nas rozróżniane (gdyż przemianowanie zmiennych pełniących rolę parametrów nie ma znaczenia dla struktury termów). Najważniejsza z konwersji β-konwersja upraszcza term będący aplikacją λ-abstrakcji do dowolnego termu: β
(λx.M )N → M [x := N ], zakładając, że dokonywane podstawienie będzie bezpieczne. Jest to zawsze możliwe do spełnienia poprzez przemianowanie zmiennych. Z kolei η-konwersja skraca trywialne przypadki: η
(λx.(M x)) → M, przy założeniu, że x 6∈ VF (M ). Oto proste przykłady konwersji. β
Przykład 3.11. (λx.(λy.xy))(zz) → (λy.(zz).y) α
β
(λx.(λy.xy))y → (λx.(λz.xz))y → λz.yz Mówimy, że term M redukuje się do termu N i oznaczamy to przez M → N , jeżeli można dokonać jednej z powyżej wyjaśnionych konwersji M do N . Term λ-rachunku jest w postaci normalnej, jeśli nie można dokonać na nim redukcji (pomijając nieistotne α-konwersje przemianowujące tylko nazwy zmiennych). Pojęcie pojedynczej redukcji w trywialny sposób można rozszerzyć na całe ciągi redukcji (poprzez zastosowanie domknięcia tranzytywnego). Po dokonaniu powyższych rozróżnień można już wprowadzić relację równości termów M = N : przyjmiemy, że dwa termy są równe, jeżeli można każdy z nich sprowadzić do drugiego poprzez odpowiednią liczbę redukcji lub odwrotności redukcji (tak zwanych rozszerzeń).
3.3. λ-rachunek
35
Rachunek Churcha ma szereg ważnych i interesujących własności wartych prezentacji. Warto chociażby rozważyć wpływ porządku redukcji na wynik czy własność braku postaci normalnej niektórych termów (na przykład (λx.(xx)) (λx.(xx)). Ponieważ jednak interesuje nas głównie związek λ-rachunku z funkcjami na liczbach naturalnych musimy wprowadzić jakąś reprezentację liczb naturalnych w postaci szczególnych termów. Definicja 3.12. Numerałem Churcha będziemy nazywali każdy term jednej z poniższych postaci: λx.λy.y albo dla n ≥ 1: λx.λy.x(n) y = λx.λy. x(· · · (x y) · · · ). | {z } n
W zależności od liczby n wystąpień zmiennej x po kropce będziemy takie wyrażenie oznaczać przez n ¯. Jak się okazuje można stosunkowo łatwo symulować obliczenia arytmetyczne na tak zaproponowanych numerałach. Przykład 3.13. Oznaczmy przez M = λw.λx.λy.λz.wy(xyz). Jak można łatwo prześledzić, działanie M na numerałach n ¯ i m ¯ będzie prowadziło do redukcji generujących numerał n + m. Dla przykładu sprawdzimy M dla numerałów ¯2 i ¯3: M¯ 2¯ 3 = λw.λx.λy.λz.wy(xyz)¯2¯3 ¯ ¯ → λy.λz.((2y)(( 3y)z)) → λy.λz.((λy1 .(y 2 y1 ))(λy2 .(y 3 y2 )z)) → λy.λz.((λy1 .(y 2 y1 ))(y 3 z)) → λy.λz.y 2 (y 3 z) = λx.λy.(x5 y) = ¯5 Wykorzystując powyżej wprowadzone pojęcia możemy teraz zdefiniować zbiór funkcji naturalnych, których obliczenia można symulować termami λ-rachunku. Definicja 3.14. Funkcję f : Nn → N nazywamy λ-obliczalną, wtedy i tylko wtedy, gdy istnieje taki λ-term M , że f (x1 , . . . , xn ) = y ⇐⇒ gdy M x ¯1 . . . x ¯n można zredukować do postaci normalnej y¯, f (x1 , . . . , xn ) ↑ ⇐⇒ gdy M x ¯1 . . . x ¯n nie ma postaci normalnej.
36
3. Inne modele obliczeniowe Okazuje się iż zachodzi następujący ważny fakt. Twierdzenie 3.15. Każda funkcja w zbiorze liczb naturalnych jest λ-obliczalna wtedy i tylko wtedy, gdy jest funkcją częściowo rekurencyjną. Istotnym z wielu względów modelem obliczeniowym jest rachunek kombinatorów, który można rozważać w ścisłym powiązaniu z λ-rachunkiem. Wprowadzając następujące stałe: K ≡ λx.λy.x, S ≡ λx.λy.λz.xz(yz) oraz I ≡ λx.x oraz dopuszczając jako termy dowolne aplikacje stałych S, K, I oraz zmiennych uzyskamy następujące reguły redukcji: KP Q → P, SP QR → P R(QR), IP → P, gdzie P, Q, R są dowolnymi termami rachunku kombinatorów. Należy zwrócić uwagę, że chociaż λ-rachunek oraz rachunek kombinatorów są ściśle ze sobą powiązane, to jednak nie sprowadzają się tylko do różnych form zapisu. Dla przykładu wyrażenie SK nie jest redukowalne, podczas, gdy odpowiadający mu λ-term można zredukować. Dlatego używaną w rachunku kombinatorów redukcję nazywamy słabą redukcją i wykorzystywana ona może być do modelowania odrębnego typu obliczeń. Chociaż jako bazę rachunku kwantyfikatorów można obierać inne kombinatory niż S, K, I (I zresztą może być wyeliminowane jako równoważne SKK) to - w podobny do powyżej wskazanego sposobu - otrzymujemy ponownie wniosek, że moc obliczeniowa rachunku kombinatorów jest równoważna obliczeniom prowadzonym z użyciem funkcji częściowo rekurencyjnych.
3.4. Maszyny licznikowe Ostatnim z zaprezentowanym przez nas modeli obliczeniowych będą tak zwane maszyny licznikowe. Są one idealizacją obliczeń asemblerowych, w których poszczególne liczniki (rejestry) mogą przechowywać liczby naturalne. Istnieje wiele wariantów takich maszyn, poniżej wprowadzimy jeden z nich. Definicja 3.16. Programem maszyny licznikowej nazywamy ciąg etykietowanych instrukcji wykorzystujących nieskończony ciąg liczników (rejestrów) Ri , i ∈ N−{0}, etykiety należą do zbioru {Ni : i ∈ N}, zaś każda z instrukcji jest jednej z poniższych postaci: — INC Ri , — DEC Ri ,
3.4. Maszyny licznikowe — CLR Ri , — Ri ←- Rj , — JMPa Ni , — JMPb Ni , — Rj JMPa Ni , — Rj JMPb Ni , — STOP. przy czym ostatnią z instrukcji programu jest instrukcja STOP, a każda z instrukcji JMP posiada argument Ni będą etykietą jednej z należącej do programu instrukcji.
Instrukcje wykonywane są kolejno od pierwszej do ostatniej, chyba, że skok powoduje zmianę naturalnego porządku przebiegu obliczeń. Każda z instrukcji odpowiada za modyfikację pewnego licznika lub zmianę kolejności wykonywania instrukcji: — INC Ri : zwiększa zawartość Ri o jeden, — DEC Ri : jeżeli zawartość Ri jest różna od zera instrukcja zmniejsza Ri o jeden, — CLR Ri : wstawia do Ri liczbę zero, — Ri ←- Rj : wstawia do Ri zawartość rejestru Rj , — JMPa Ni : jako następna instrukcja wykonywana jest pierwsza z instrukcji o etykiecie Ni znajdująca się powyżej bieżącej instrukcji, — JMPb Ni : jako następna instrukcja wykonywana jest pierwsza z instrukcji o etykiecie Ni znajdująca się poniżej bieżącej instrukcji, — Rj JMPa Ni : jeżeli rejestr Rj zawiera zero, wówczas jako następna instrukcja wykonywana jest pierwsza z instrukcji o etykiecie Ni znajdująca się powyżej bieżącej instrukcji, w przeciwnym razie wykonywana jest następna instrukcja poniżej bieżącej, — Rj JMPb Ni : jeżeli rejestr Rj zawiera zero, wówczas jako następna instrukcja wykonywana jest pierwsza z instrukcji o etykiecie Ni znajdująca się poniżej bieżącej instrukcji, w przeciwnym razie wykonywana jest następna instrukcja poniżej bieżącej, — STOP: kończy poprawnie działanie programu. Możemy teraz podać definicję funkcji naturalnych obliczanych z pomocą maszyn licznikowych.
Definicja 3.17. Funkcja f : Nn → N jest obliczalna przez maszynę licznikową wtedy i tylko wtedy, gdy istnieje program maszyny licznikowej P taki,
37
38
3. Inne modele obliczeniowe że f (x1 , . . . , xn ) = y ⇐⇒ gdy P rozpoczynający obliczenia z wartościami x1 , . . . , xn umieszczonymi w R1 , . . . , Rn oraz z wartością 0 w Rj , dla j > n kończy poprawnie działanie z wartością y w R1 ; f (x1 , . . . , xn ) ↑ ⇐⇒ gdy P rozpoczynający obliczenia z wartościami x1 , . . . , xn umieszczonymi w R1 , . . . , Rn oraz z wartością 0 w Rj , dla j > n nie kończy poprawnie działania.
Jak się już łatwo domyśleć (w wyniku poprzednich przykładów modeli obliczeniowych) i w tym przypadku otrzymujemy identyczność zbioru funkcji obliczalnych przez maszyny licznikowe oraz funkcji częściowo rekurencyjnych. Twierdzenie 3.18. Dowolna funkcja na liczbach naturalnych jest obliczalna przez maszyny licznikowe wtedy i tylko wtedy, gdy jest ona funkcją częściowo rekurencyjną. Także powyższy model podlega wielu modyfikacjom, ponieważ każde obliczenie używa tylko skończonej liczby liczników można zrezygnować z nieskończonego ciągu rejestrów (używając odpowiednio dobranych, unikalnych identyfikatorów liczników) oraz zmniejszyć liczbę instrukcji (na przykład do instrukcji zwiększania i zmniejszania licznika o 1, zerowania oraz skoku warunkowego).
3.5. Teza Churcha Powyższe przykłady sugerują zachodzenie ważnej prawidłowości. Wydaje się bowiem, że jakkolwiek opiszemy uniwersalny model obliczeniowy to zawsze uzyskamy taką samą moc obliczeniową jaką posiada zbiór funkcji częściowo rekurencyjnych. Rzeczywiście okazało się prawdą dla jeszcze innych rozważanych modeli obliczeń. Wśród nich można wspomnieć algorytmy Markowa, funkcje Herbranda-G¨ odla oraz systemy Posta. Tak jak powyżej opisane modele także i one okazują się równoważne funkcjom częściowo rekurencyjnym. Obserwacja, że ostateczna moc modelu obliczeniowego (jeżeli tylko ów model ma odpowiednio uniwersalną charakterystykę) okazuje się niezależna od języka i techniki użytej przy jego formułowaniu stała się podstawą do sformułowania mocnej hipotezy.
3.5. Teza Churcha Nazwijmy funkcję f : Nk → N efektywnie obliczalną, jeżeli istnieje opis algorytmu, który może być użyty do wyznaczania wartości f (x1 , . . . , xk ) dla wszystkich argumentów (x1 , . . . , xk ), dla których funkcja f jest zdefiniowana. Przy takiej terminologii teza Churcha może być sformułowana następująco: każda funkcja jest efektywnie obliczalna wtedy i tylko wtedy, gdy jest funkcją częściowo rekurencyjną. Warto zauważyć, iż wynikanie efektywnej obliczalności z częściowej rekurencyjności jest oczywiste: definicja funkcji używająca operacji minimalizacji, złożenia i rekursji prostej w oczywisty sposób określa algorytm obliczania wartości. Istotny problem pojawia się więc przy rozważaniu własności funkcji efektywnie obliczalnych, a w szczególności możliwości ich zdefiniowania w zbiorze PREC. Ponieważ intuicyjne pojęcie efektywnej obliczalności nie posiada jasno określonego matematycznego charakteru tezy Churcha nie można traktować jako hipotezy matematycznej. Co więcej, ta niejasność pojęcia efektywnej obliczalności prowadzi do możliwości interpretowania tej tezy na różne sposoby (na przykład w znaczeniu ekstensjonalnym lub intensjonalnym). Co ciekawe, choć teza nie może być matematycznie udowodniona, wydaje się, że jednak może ona być obalona poprzez czysto matematyczną konstrukcję modelu obliczeniowego przekraczającego swoimi możliwościami uznane i równoważne sobie modele (a w tym przede wszystkim modeli funkcji częściowo rekurencyjnych i maszyn Turinga). Wypada zauważyć także, iż sposób sformułowania wielu wyników dotyczących zagadnień obliczalnych czy rozstrzygalnych zależy od uwzględnienia tezy Churcha. Przyjmując tezę Churcha zwykle mówi się o nierozstrzygalności pewnego zagadnienia (na przykład problemu stopu). Jednak kierując się czysto matematycznymi przesłankami należałoby mówić wyłącznie o nierozstrzygalności ze względu na zbiór funkcji częściowo rekurencyjnych (nierozstrzygalność rekurencyjna). Czasem zdarza się, że wprowadza się tak zwaną pragmatyczną (czy praktyczną) wersję tezy Churcha. W tym przypadku ograniczamy się do stwierdzenia: odpowiednio precyzyjny nieformalny opis algorytmu obliczającego wyniki funkcji wystarczy do uznania tej funkcji za obliczalną w konkretnym modelu. Podstawą takiego stwierdzenia jest doświadczenie wskazujące, że przy dobrym opisie algorytmu czysto mechaniczne techniki pozwalają przekształcić go w formalną definicję wymaganą przez założony model. Ten sposób postępowania jest w praktyce wykorzystany do dowodów pozwalając na uniknięcie niepotrzebnej technicznej złożoności, która czasem może zaciemniać zasadniczą ideę konstrukcji algorytmicznej.
39
40
3. Inne modele obliczeniowe
3.6. Zadania Ćwiczenie 3.1. Skonstruować maszynę Turinga (w wariancie jednotaśmowym i wielotaśmowym) obliczającą iloczyn dwóch liczb. Ćwiczenie 3.2. Skonstruować maszyny Turinga: dodającą i odejmującą (w sensie odejmowania ograniczonego) liczby naturalne w reprezentacji binarnej. Ćwiczenie 3.3. Niech taśma zawiera reprezentację jedynkową układu liczb naturalnych: n ¯ 0¯ n1 0 . . . 0¯ nk , skonstruować niedeterministyczną maszynę Turinga akceptującą dane wtedy i tylko wtedy, gdy X ∃(I ⊂ {1 . . . k}) ni = n. i∈I
Ćwiczenie 3.4. Opisać λ-termy obliczające różnicę ograniczoną, iloczyn oraz potęgę liczb naturalnych reprezentowanych jako numerały. Ćwiczenie 3.5. Zdefiniować maszyny licznikowe obliczające podstawowe działania arytmetyczne wymienione w Ćwiczeniu 2.1.
Rozdział 4 Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne
4.1. Zbiory i relacje rekurencyjne . . . . . . . . . . . . . . . 4.2. Zbiory rekurencyjnie przeliczalne . . . . . . . . . . . . . 4.3. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . .
42 45 50
42
4. Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne W tym rozdziale pojęcie obliczalności zostanie zastosowane do zbiorów i relacji. Jak zobaczymy istnieją dwa różne podejścia wiążące teorię mnogości z procesami efektywnie obliczalnymi. Jedno z nich analizuje możliwość sprawdzania warunków przynależności do zbioru, drugie koncentruje się na sposobach generowania (wypisywania) kolejnych elementów zbioru.
4.1. Zbiory i relacje rekurencyjne W naszych rozważaniach, tak jak do tej pory, będziemy precyzowali pojęcie obliczalności poprzez używanie definicji funkcji częściowo rekurencyjnych. Z jej wykorzystaniem rozpoczniemy od zdefiniowania tych zbiorów i relacji, które mają obliczalny charakter i które będziemy nazywać rekurencyjnymi. Następnie podamy podstawowe własności tych modeli. Definicja 4.1. Zbiór S ⊂ N liczb naturalnych będziemy nazywali rekurencyjnym wtedy i tylko wtedy, gdy istnieje taka funkcja (całkowita) rekurencyjna KS : N → N, KS ∈ REC, że 0 n ∈ S, Ks (n) = 1 n 6∈ S. W podanej powyżej definicji użyliśmy wartości 0 dla przypadku pozytywnego n ∈ S; zaś 1 dla przypadku negatywnego n 6∈ S. Jest to w sprzeczności ze zwykle używaną konwencją w przypadku funkcji charakterystycznych. W rzeczywistości dobór wartości jest obojętny, o ile tylko są to dwie różne wartości. Dla nas ze względu na używane dalej operacje na funkcjach dogodniejszy będzie sposób opisany powyżej. Należy wspomnieć, iż innym często używanym określeniem zbiorów zdefinowanych powyżej jest nazwa zbioru rozstrzygalnego. Powyższą definicję można łatwo uogólnić na relacje na liczbach naturalnych (rozumiane jako podzbiory iloczynów kartezjańskich Nn ). Definicja 4.2. Relację R ⊂ Nn będziemy nazywali relacją rekurencyjną wtedy i tylko wtedy, gdy istnieje funkcja rekurencyjna KR : Nn → N, KR ∈ REC taka, że 0 R(x1 , . . . , xn ), KR (x1 , . . . , xn ) = 1 ¬R(x1 , . . . , xn ). Dodajmy tutaj jeszcze oczywiste uściślenia: jeżeli KR ∈ EREC to relację nazywamy elementarnie rekurencyjną, a jeśli KR ∈ PRIM, to relację nazywamy relacją pierwotnie rekurencyjną. Analogiczna terminologia będzie dotyczyła także zbiorów. Dla przykładu wyliczymy poniżej kilka zbiorów i relacji w oczywisty sposób rekurencyjnych.
4.1. Zbiory i relacje rekurencyjne Przykład 4.3. Poniżej wybrane zbiory i relacje są rekurencyjne: — S1 = {n} dowolny zbiór jednoelementowy jest rekurencyjny, KS1 (x) = K= (n, x); — niech S2 = {n1 , . . . , nk }, k ≥ 1 będzie dowolnym zbiorem skończonym. Wówczas S2 jest rekurencyjny (wystarczy przyjąć jako KS2 (x) = K= (x, n1 ) · . . . · K= (x, nk ); — relacja =⊂ N2 jest rekurencyjna, bo K= ∈ PREC — relacja <⊂ N2 także jest rekurencyjna (K< ∈ PREC). Zbadamy teraz proste (ale istotne i przydatne) własności zbiorów i relacji rekurencyjnych. Lemat 4.4. Niech R ⊂ Nn będzie relacją rekurencyjną i niech f1 , . . . , fn : Nm → N będą funkcjami rekurencyjnymi. Wówczas Q(x1 , . . . , xm ) = R(f1 (x1 , . . . , xm ), . . . , fn (x1 , . . . , xn )) jest także relacją rekurencyjną. Dowód. Ponieważ R jest rekurencyjna, więc istnieje KR ∈ PREC. Możemy zdefiniować łatwo KQ (x1 , . . . , xm ) = KR (f1 (x1 , . . . , xm ), . . . , fn (x1 , . . . , xm )). Na mocy założeń lematu otrzymujemy, że KQ ∈ REC czyli Q jest relacją rekurencyjną. Teraz zbadamy związek obliczalności z operacjami logicznymi stosowanymi na relacjach. W analogiczny sposób te same własności zachodzą dla zbiorów: wystarczy pamiętać, że koniunkcja relacji odpowiada iloczynowi (przecięciu) zbiorów, alternatywa sumie, zaś negacja relacji jest odpowiednikiem dopełnienia do zbioru pełnego N. Lemat 4.5. Niech P i Q będą relacjami rekurencyjnymi. Wówczas relacje ¬P, P ∧ Q, P ∨ Q, P → Q, P ⇐⇒ Q także są rekurencyjne. Dowód. Wystarczy zauważyć następujące, łatwe związki funkcji charakterystycznych: ˙ P (x), KP ∨Q (x) = KP (x) · KQ (x). K¬P (x) = 1−K Pozostałe relacje można przedstawić za pomocą dwóch określonych powyżej: KP ∧Q (x) = K¬(¬P ∨¬Q) (x),
43
44
4. Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne KP →Q (x) = K¬P ∨Q (x), KP
⇐⇒ Q (x)
= K(P →Q)∧(Q→P ) (x).
Powyższe twierdzenie możemy wypowiedzieć w sposób bardziej techniczny następująco: klasa relacji rekurencyjnych ze względu na operacje logiczne tworzy algebrę Boole’a. Rozważymy teraz problemy kwantyfikowania relacji za pomocą kwantyfikatorów ograniczonych. Rozpocznijmy od precyzyjnego określenia znaczenia kwantyfikatorów ograniczonych: (∃z < t)R(z, x1 , . . . , xn ) ≡ (∃z)[(z < t) ∧ R(z, x1 , . . . , xn )], (∀z < t)R(z, x1 , . . . , xn ) ≡ (∀z)[(z < t) → R(z, x1 , . . . , xn )]. Zdefiniujmy teraz nowe relacje z użyciem kwantyfikacji ograniczonej: R∃ (t, x1 , . . . , xn ) ⇐⇒ (∃z < t)R(z, x1 , . . . , xn ), R∀ (t, x1 , . . . , xn ) ⇐⇒ (∀z < t)R(z, x1 , . . . , xn ). Możemy teraz sformułować następujący, ważny lemat: Lemat 4.6. Jeśli R jest relacją rekurencyjną, to relacje R∃ , R∀ określone jak powyżej też są rekurencyjne. Dowód. Dowód można szybko przeprowadzić odwołując się do rekursji prostej oraz wzajemnego związku skwantyfikowanych relacji: KR∃ (0, x1 , . . . , xn ) = 1, KR∃ (y + 1, x1 , . . . , xn ) = KR (y + 1, x1 , . . . , xn ) · KR∃ (y, x1 , . . . , xn ). oraz KR∀ = K¬R∃0 , gdzie R∃0 = (∃z < t)¬R(z, x1 , ..., xn ). Na podstawie dowodów Lematów 4.5 i 4.6 możemy wysnuć wniosek sformułowany w postaci poniższego lematu: Lemat 4.7. Jeżeli relacje R i Q są pierwotnie rekurencyjne to relacje ¬R, R ∧ Q, R ∨ Q, R → Q, R ⇐⇒ Q oraz Q∀ , Q∃ są także pierwotnie rekurencyjne.
4.2. Zbiory rekurencyjnie przeliczalne
4.2. Zbiory rekurencyjnie przeliczalne Teraz przejdziemy do drugiego typu zbiorów związanych z procesami efektywnymi. W tym przypadku będziemy modelowali sytuację, gdy elementy zbioru (w dowolnym porządku i z możliwymi powtórzeniami) będą wypisywane przez pewną funkcję obliczalną. Definicja 4.8. Zbiorem rekurencyjnie przeliczalnym będziemy nazywali zbiór pusty lub zbiór S ⊂ N, wtedy i tylko wtedy, gdy istnieje funkcja całkowicie rekurencyjna fS ∈ REC o następującej własności: fS (N) = S (przeciwdziedziną funkcji są wszystkie elementy zbioru S). Zauważmy, że powyższa definicja odpowiada takiemu określeniu zbiorów rekurencyjnie przeliczalnych, iż S jest rekurencyjnie przeliczalnym zbiorem niepustym, jeśli istnieje taka funkcja fS ∈ REC, że y ∈ S ⇐⇒ (∃x ∈ N)[fS (x) = y]. Funkcję fS nazywamy funkcją generującą lub przeliczającą zbiór S. Poniższe twierdzenie podaje ważny związek pomiędzy zbiorami rekurencyjnymi a rekurencyjnie przeliczalnymi. Twierdzenie 4.9. Zbiór S jest zbiorem rekurencyjnym wtedy i tylko wtedy, gdy zbiór S oraz zbiór ¬S(= N−S) są zbiorami rekurencyjnie przeliczalnymi. Dowód. Rozpoczniemy od pokazania, że rekurencyjność zbioru S gwarantuje rekurencyjną przeliczalność S i ¬S. Z tego, że S jest rekurencyjny wynika istnienie funkcji KS : N → N, takiej że 0 n ∈ S, KS (n) = 1 n 6∈ S. Musimy skonstruować funkcje fS i f¬S generujące odpowiednio S i ¬S. Dla zbioru skończonego S = {a0 , . . . , ak } wystarczy przyjąć fS (x) = a0 K= (x, 0)+. . .+ak−1 K= (x, k −1)+ak K≥ (x, k). Dla zbioru nieskończonego rozważmy następujące definicje rekurencyjne: fS (0) = µm [KS (m)], fS (n + 1) = µm [K< (fS (n), m) + KS (m)], oraz f¬S (0) = µm [K= (KS (m), 1)], f¬S (n + 1) = µm [K< (f¬S (n), m) + K= (KS (m), 1)]. Można zauważyć, że fS (N) = S oraz f¬S (N) = ¬S i ponadto użyta minimalizacja jest efektywna co kończy dowód pierwszej części twierdzenia.
45
46
4. Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne Pozostaje nam pokazać, że jeżeli S jest rekurencyjnie przeliczalny oraz ¬S jest rekurencyjnie przeliczalny to S jest zbiorem rekurencyjnym. Na mocy założenia istnieją fS , f¬S generujące odpowiednio S i ¬S. Oczywiście zachodzi N = S ∪ ¬S = fS (N) ∪ f¬S (N). Rozpocznijmy od zdefiniowania funkcji g, takiej że i parzyste, fS ( 2i ) g(i) = f¬S ( i−1 ) i nieparzyste. 2 Zauważmy, że przeciwdziedzina tak zdefiniowanej g obejmuje wszystkie liczby naturalne oraz g ∈ REC. Zdefiniujmy funkcję h : N → N, która dla zadanej liczby n będzie podawała jej indeks i w ciągu wartości g, czyli h(n) = i ⇐⇒ g(i) = n. Niech więc h(n) = µi [K= (g(i), n)], oczywiście h tak zdefiniowane także należy do REC. Pozostaje tylko zauważyć, że jeżeli n należy do S to n ma w ciągu wartości g indeks parzysty, a jeżeli n 6∈ S to n ma w tymże ciągu indeks nieparzysty. W takim razie wystarczy zdefiniować KS (n) = K|2 (h(n)) gdzie K|2 (x) =
0 x jest parzyste, 1 x jest nieparzyste.
Wówczas funkcja KS będzie znajdowała indeks n w ciągu wartości funkcji g za pomocą funkcji h, a nastepnie sprawdzała jego parzystość - co w świetle powyższych rozważań wystarczy do zbudowania funkcji charakterystycznej zbioru S. Dodajmy, że ponieważ g(N) = N to KS będzie funkcją całkowitą. Ponieważ K|2 jest rekurencyjna (co łatwo pokazać), to funkcja KS należy do REC co kończy dowód całego twierdzenia. Powyższe twierdzenie prowadzi natychmiast do wniosku, że każdy zbiór rekurencyjny jest rekurencyjnie przeliczalny. Natomiast pozostaje jeszcze do rozważenia problem czy istnieją zbiory rekurencyjnie przeliczalne, które nie są rekurencyjne, to znaczy (na mocy powyższego twierdzenia) zbiory które są rekurencyjnie przeliczalne, a ich dopełnienia nie są rekurencyjnie przeliczalne. Twierdzenie 4.10. Istnieje zbiór rekurencyjnie przeliczalny S, taki że ¬S nie jest rekurencyjnie przeliczalny.
4.2. Zbiory rekurencyjnie przeliczalne Nie podamy w tym miejscu dowodu tego twierdzenia pozostawiając podobne rozważania do tej części skryptu, która omawiać będzie bardziej szczegółowo zagadnienia nierozstrzygalne (w tym zbiory, które nie są rozstrzygalne). Jednak możemy od razu jako wniosek z powyższych twierdzeń wyprowadzić, iż klasa zbiorów rekurencyjnie przeliczalnych zawiera w sposób właściwy klasę zbiorów rekurencyjnych. Podamy jeszcze jeden przydatny i ciekawy wynik. Twierdzenie 4.11. Każdy zbiór rekurencyjnie przeliczalny jest dziedziną pewnej częściowej funkcji rekurencyjnej. Dowód. Niech zbiór S będzie rekurencyjnie przeliczalny. Wówczas S = f (N) dla pewnej funkcji f ∈ REC. Zdefiniujmy teraz po prostu g(x) = µz (K= (f (z), x)). Jak łatwo zauważyć dziedzina g ∈ PREC odpowiada przeciwdziedzinie f . Dodajmy, że zbiór pusty jest dziedziną funkcji całkowicie niezdefiniowanej, która także jest klasy PREC. Zachodzi także twierdzenie odwrotne. Twierdzenie 4.12. Dziedzina każdej funkcji częściowo rekurencyjnej tworzy zbiór rekurencyjnie przeliczalny. Zamiast w pełni formalnego dowodu podamy pozbawione technicznych szczegółów wyjaśnienie. Interesuje nas - jako nietrywialny - wyłącznie przypadek zbioru niepustego. Idea dowodu opiera się na ograniczeniu obliczeń funkcji f ∈ PREC o dziedzinie A ⊂ N do skończonej liczby kroków oraz do kontrolowania poprawności uzyskiwanego wyniku. Wybierzmy więc dla funkcji f jej definicję, czyli pełny opis konstrukcji f z funkcji podstawowych za pomocy odpowiednich operacji. W tej definicji zastąpmy operatory minimalizacji - będące potencjalnym powodem częściowości f - poprzez minimalizację ograniczoną parametrem t. Ponadto uznajmy za wartość przekazującą komunikat o niepowodzeniu minimalizacji ograniczonej liczbę 0, podczas gdy poprawne wartość dla odróżnienia powiększmy o 1. Oznaczając taką funkcję F będziemy mieli z F : N2 → N, F ∈ REC spełniającą: f (x) = y ⇐⇒ (∃t)[F (x, t) = y + 1], f (x) ↑ ⇐⇒ (∀t)[F (x, t) = 0]. Jeżeli a jest dowolnym ustalonym elementem A to dla funkcji fA : N → N określonej następująco: ( a F (J1 (z), J2 (z)) = 0, fA (z) = J1 (z) F (J1 (z), J2 (z)) 6= 0,
47
48
4. Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne łatwo wykazać, że fA jest całkowicie rekurencyjna jak i fakt, że fA generuje A, to znaczy fA (N) = A. Rozwiniemy temat podając jeszcze kilka własności zbiorów rekurencyjnie przeliczalnych. Twierdzenie 4.13. Każdy nieskończony zbiór rekurencyjnie przeliczalny posiada nieskończony podzbiór rekurencyjny. Dowód. Niech A będzie zbiorem rekurencyjnie przeliczalnym. Na mocy definicji istnieje f ∈ REC, taka że f (N) = A. Zdefiniujmy g : N → N następująco: g(0) = 0, g(i + 1) = f (µy [K> (f (y), g(i))]). Tak zdefiniowane g należy do REC i ma nieskończoną przeciwdziedzinę taką, że g(N) ⊂ A. Ponieważ g jest funkcją rosnącą to jako funkcję charakterystyczną g(N) można wziąć Kg(N) = K= (g(µy [K≥ (g(y), z)]), z). Teraz rozważmy całą klasę zbiorów rekurencyjnie przeliczalnych. Twierdzenie 4.14. Klasa zbiorów rekurencyjnie przeliczalnych jest częściowo uporządkowana ze względu na relację zawierania i jest zamknięta ze względu na operacje sumy i iloczynu teoriomnogościowego. Dowód. Łatwo dostrzec, że zawieranie jest częściowym porządkiem, a ponadto najmniejszym elementem w tym porządku jest ∅, największym jest N. Jeśli A, B są rekurencyjnie przeliczalne to można je przedstawić w postaci A = fA (N), B = fB (N) dla fA , fB ∈ REC. Wówczas A ∪ B jest obrazem funkcji fA ( x2 ) x parzyste, fA∪B (x) = fB ( x−1 ) x nieparzyste. 2 Teraz wypada rozważyć A ∩ B. W tym celu wystarczy rozważyć funkcje fA0 , fB0 ∈ PREC takie, że A, B są ich dziedzinami. Łatwo zauważyć, że dziedziną fA0 + fB0 będzie właśnie przecięcie zbiorów A i B. Jednak to, iż A ∩ B tworzy zbiór rekurencyjnie przeliczalny można uzasadnić także bez odwoływania się do Twierdzenia 4.12. W tym przypadku należy zachowywać informacje o wszystkich wygenerowanych do pewnego etapu elementach A i B oraz sprawdzać, czy pojawiają się wśród nich wspólne elementy. Funkcje pamiętające wszystkie wyniki fA oraz fB poniżej pewnego argumentu mogą być zdefiniowane rekurencyjnie: FAt (0) = fA (0), FAt (x + 1) = J(FAt (x), fA (x + 1)) i analogicznie dla FBt . Wówczas definiując ˙ fA∩B (x) = min{y :y 6∈ {fA∩B (0), . . . , fA∩B (x−1)} y
oraz y jest zakodowane w FAt (x) i FBt (x)}
4.2. Zbiory rekurencyjnie przeliczalne można wykazać, że fA∩B ∈ REC oraz fA∩B (N) = A ∩ B.
49
Jak się okazuje dla zbioru rekurencyjnie przeliczalnego A oraz f ∈ PREC mamy f −1 (A) = {x : f (x) ↓ ∧f (x) ∈ A}. Na mocy tego wzoru f −1 (A) jest przecięciem dziedziny f oraz zbioru {x : f (x) ∈ A}. Pierwszy z tych zbiorów jest rekurencyjnie przeliczalny. Rozważmy drugi z nich: {x : f (x) ∈ A} = {x : (∃y)K= (f (x), fA (y)) = 0}. Niech g(x, y) = K= (f (x), fA (y)), wówczas g ∈ PREC zaś f −1 (A) jest dziedziną µy [g(x, y)], czyli też jest zbiorem rekurencynie przeliczalnym. Wykazanie, że f (A) jest rekurencyjnie przeliczalne dla f ∈ PREC pozostawimy jako ćwiczenie - powyższe uwagi prowadzą do wniosku, że własność rekurencyjnej przeliczalności jest zachowywana przez obraz i przeciwobraz funkcji klasy PREC. Pokazaliśmy, że rekurencyjność zbioru jest zależna od rekurencyjnej przeliczalności tego zbioru i jego dopełnienia. Pojawia się naturalne pytanie czy rekurencyjność zbiorów można wyrażać poprzez jakieś cechy innej pary rozłącznych zbiorów (niekoniecznie zbioru i jego dopełnienia). Poniższe rozważania prowadzą do wyniku odpowiadającego na to pytanie poprzez wzmocnienie Twierdzenia 4.9. Definicja 4.15. Rozłączne zbiory A, B ⊂ N nazywamy rekurencyjnie rozdzielonymi jeżeli istnieje rekurencyjny zbiór C ⊂ N taki, że A ⊆ C i B ⊆ ¬C. Zbiory A, B są rekurencyjnie nierozdzielone jeżeli nie są rekurencyjnie rozdzielone. Twierdzenie 4.16. Zbiór A ⊂ N jest rekurencyjny wtedy i tylko wtedy, gdy zbiory A, ¬A są rekurencyjnie rozdzielone. Dowód. Jeżeli A jest rekurencyjny, to wystarczy przyjąć C = A aby stwierdzić, że A i ¬A są rekurencyjnie rozdzielone. Załóżmy teraz, że A i ¬A są rekurencyjnie rozdzielone. Istnieje wówczas rekurencyjny zbiór C taki, że A ⊆ C i ¬A ⊆ ¬C. Ponieważ ¬A ⊆ ¬C ⇐⇒ C ⊆ A więc otrzymujemy A = C, czyli A jest rekurencyjny. Okazuje się, że także wynik o istnieniu zbioru rekurencyjnie przeliczalnego ale nie będącego rekurencyjnym można wzmocnić. Twierdzenie 4.17. Istnieją dwa rozłączne rekurencyjnie nierozdzielone zbiory rekurencyjnie przeliczalne. Zamiast dowodu przybliżmy jedną z linii możliwego rozumowania uzasadniającego powyższe twierdzenie. Przyjmijmy, że funkcja f : N → {0, 1}
50
4. Zbiory i relacje rekurencyjne i rekurencyjnie przeliczalne jest funkcją klasy PREC. Załóżmy, że nie istnieje całkowite rekurencyjne rozszerzenie f , to znaczy taka funkcja g ∈ REC, że: (∀x ∈ N)[f (x) ↓⇒ f (x) = g(x)]. Wówczas zbiory A = {x : f (x) = 0}, B = {x : f (x) = 1} są zarówno rekurencyjnie przeliczalne (z powyżej omówionych własności zbiorów rekurencyjnie przeliczalnych) jak i nierozdzielne. Gdyby bowiem zbiór C rekurencyjnie rozdzielał zbiory A i B, to funkcja Kc byłaby - wbrew założeniu - całkowitym rozszerzeniem f . Istnienie funkcji częściowo rekurencyjnych bez całkowitego rozszerzenia rekurencyjnego wynika dość łatwo z wyników zamieszczonych w dalszych częściach skryptu. W przypadku pojęcia rekurencyjności rozważaliśmy zarówno zbiory jak i relacje rekurencyjne. Było to możliwe na mocy definicji, która pozwalała łatwo na oba rodzaje odniesień. Inaczej jest dla pojęcia rekurencyjnej przeliczalności. Definicja, którą wprowadziliśmy dla zbiorów rekurencyjnie przeliczalnych nie da się wprost przenieść na relacje. Dlatego skorzystamy z możliwości, którą pokazuje nam Twierdzenie 4.11 i zdefiniujemy relacje rekurencyjnie przeliczalne poprzez odwołanie do dziedzin wieloargumentowych funkcji częściowo rekurencyjnych. Definicja 4.18. Relację n-argumentową R ⊂ Nn nazywamy relacją rekurencyjnie przeliczalną, wtedy i tylko wtedy, gdy istnieje taka funkcja n-argumentowa f klasy PREC, że dla każdego (x1 , . . . , xn ) ∈ Nn zachodzi R(x1 , . . . , xn ) ⇐⇒ f (x1 , . . . , xn ) ↓ .
4.3. Zadania Ćwiczenie 4.1. Udowodnić, że zbiór liczb parzystych oraz nieparzystych są rekurencyjne. Ćwiczenie 4.2. Udowodnić, że zbiór liczb pierwszych jest rekurencyjny. Ćwiczenie 4.3. Udowodnić, że dla dwóch zbiorów rekurencyjnie przeliczalnych X oraz Y istnieją dwa rozłączne zbiory X 0 ⊂ X oraz Y 0 ⊂ Y takie, że X ∪ Y = X 0 ∪ Y 0. Ćwiczenie 4.4. Udowodnić, jeżeli funkcja generująca zbiór rekurencyjnie przeliczalny A jest funkcją rosnącą, to zbiór A jest zbiorem rekurencyjnym. Ćwiczenie 4.5. Udowodnić, że jeśli f należy do PREC oraz zbiór A jest rekurencyjnie przeliczalny to f (A) jest także zbiorem rekurencyjnie przeliczalnym.
Rozdział 5 Uniwersalność, numeracje i nierozstrzygalność
5.1. 5.2. 5.3. 5.4. 5.5.
Postać normalna . . . . . . . . . . . . . . . . . . . . . . Funkcje i zbiory uniwersalne . . . . . . . . . . . . . . . Numeracje . . . . . . . . . . . . . . . . . . . . . . . . . Rozstrzygalność i nierozstrzygalność . . . . . . . . . . . Funkcje częściowo rekurencyjne a zbiory rekurencyjnie przeliczalne . . . . . . . . . . . . . . . . . . . . . . . . . 5.6. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . .
52 56 62 64 69 71
52
5. Uniwersalność, numeracje i nierozstrzygalność Istotną własnością modeli obliczalnych jest cecha uniwersalności obliczeniowej. Odpowiada ona praktycznej możliwości konstruowania kompilatorów, które pozwalają na generowanie dowolnych programów w oparciu o zadany kod źródłowy. Poniższy rozdział poświęcimy zarówno badaniu funkcji uniwersalnych w zbiorze funkcji częściowo rekurencyjnych jak i wskazaniu konsekwencji istnienia takich funkcji. Poczynając od niniejszej części skryptu przyjmiemy dwa dogodne oznaczenia notacyjne. Dla uczynienia zapisu czytelniejszym wektory (x1 , . . . , xn ) będziemy w oczywistych kontekstach zastępowali zapisem ~x. Ponadto dla funkcji częściowych zapis ' będzie oznaczał równość wyrażeń występujących po obu stronach rozumianą jako zachodzenie jednego z dwóch przypadków: albo obie strony są zdefiniowane i mają identyczne wartości, albo oba wyrażenia są równocześnie niezdefiniowane.
5.1. Postać normalna Zanim rozważymy w pełni własność uniwersalności w zbiorze funkcji częściowo rekurencyjnych musimy rozpocząć od wskazania pewnej kanonicznej postaci definiowanych funkcji ze zbioru PREC. W tej części rozdziału dowiedziemy najpierw twierdzenie prezentujące taką postać i mające wiele zastosowań w dalszej części pracy. Twierdzenie 5.1. Dla każdej funkcji f : Nn → N należącej do REC, istnieją funkcje elementarnie rekurencyjne Kf0 , Kf00 : Nn+2 → N, g : Nn+1 → N, h : N → N takie, że f (~x) = y ⇐⇒ (∃z)Kf0 (~x, y, z) = 0, f (~x) = y ⇐⇒ (∀z)Kf00 (~x, y, z) = 0, f (~x) = h(µy [g(~x, y)]). Dowód. Rozważmy klasę funkcji rekurencyjnych (całkowitych) określoną tak jak w definicji klasy funkcji częściowo rekurencyjnych PREC1 z dodatkowym warunkiem efektywności nałożonym na operację minimalizacji. W przeprowadzeniu dowodu ograniczymy się najpierw do dwóch pierwszych warunków wypisanych w tezie. Rozumowanie będzie polegało na pokazaniu, że: — funkcje wyjściowe rozważanej definicji spełniają rozważane warunki, — operacje superpozycji i minimalizacji efektywnej zachowują powyżej wspomniane warunki.
5.1. Postać normalna Przypomnijmy, że funkcje wyjściowe w tym przypadku to: +, ·, K< . Najpierw rozważymy dodawanie. Zauważmy, że funkcja 0 x + y = z, K+ (x, y, z) = 1 x + y 6= z, jest funkcją elementarnie rekurencyjną, bo K+ (x, y, z) = K+ (x+y, z). Teraz wystarczy jako funkcję z warunku pierwszego wybrać 0 K+ (x, y, z, t) = K+ (x, y, z) + K= (t, 0),
a jako funkcję z warunku drugiego 00 K+ (x, y, z, t) = K+ (x, y, z) + K≥ (t, 0).
Obie te funkcje należą do EREC i spełniają dwa pierwsze warunki twierdzenia. Analogiczne rozważania dowodzą spełnianie tych warunków przez funkcje · i K< . Pozostaje nam pokazać zachowawczość tych warunków względem operacji superpozycji i minimalizacji. Przeanalizujemy najpierw przypadek superpozycji dwóch funkcji g i h, które spełniają dwa pierwsze warunki twierdzenia. Bez utraty ogólności możemy rozważyć taki przypadek złożenia, w którym h : Nn → N zaś g : N → N Niech wówczas nowa funkcja f będzie opisana jako f (~x) = g(h(~x)). Ponieważ, jak wspomniano, dla g i h warunki są spełnione na mocy założenia, to dla pewnych Kg0 , Kg00 , Kh0 , Kh00 mamy: g(x) = y ⇐⇒ (∃t)Kg0 (x, y, t) = 0 ⇐⇒ (∀t)Kg00 (x, y, t) = 0, h(~x) = y ⇐⇒ (∃t)Kh0 (~x, y, t) = 0 ⇐⇒ (∀t)Kh00 (~x, y, t). Zauważmy teraz, że f (~x) = y ⇐⇒ g(h(~x)) = y ⇐⇒ (∃z)[h(~x) = z ∧ g(z) = y] oraz także f (~x) = y ⇐⇒ g(h(~x)) = y ⇐⇒ (∀z)(h(~x) = z → g(z) = y). Korzystając z powyższych tożsamości otrzymamy: f (~x) = y ⇐⇒ (∃z)[(∃t)Kh0 (~x, z, t) = 0 ∧ (∃u)Kg0 (z, y, u) = 0] ⇐⇒ ∃z∃t∃u[Kh0 (~x, z, t) = 0 ∧ Kg0 (z, y, u) = 0] ⇐⇒ ∃v[Kh0 (~x, J1 (v), J2 (v)) = 0 ∧ Kg0 (J1 (v), y, J3 (v)) = 0] ⇐⇒ ∃vKf0 (~x, y, v) = 0,
53
54
5. Uniwersalność, numeracje i nierozstrzygalność gdzie Kf0 jest funkcją elementarnie rekurencyjną, bo Kf0 (~x, y, v) = Kh0 (~x, J1 (v), J2 (v)) + Kg0 (J2 (v), y, J3 (v)), gdzie dla kodowania J 0 (x, y, z) = J(J(x, y), z) wprowadzimy odpowiednie funkcje dekodujące J1 , J2 , J3 , które znajdują się w klasie EREC. Tak więc wszystkie składowe powyższego wzoru po prawej stronie znaku równości są elementarnie rekurencyjne. Teraz pozostaje drugi przypadek: f (~x) = y ⇐⇒ ∀z[∃tKh0 (~x, z, t) = 0 → ∀uKg00 (z, y, u) = 0] ⇐⇒ ∀z∀t∀u[Kh0 (~x, z, t) = 0 → Kg00 (z, y, u) = 0] ⇐⇒ ∀v[Kh0 (~x, J1 (v), J2 (v)) = 0 → Kg00 (J1 (v), y, J3 (v)) = 0], gdzie implikację można standardowo wyrazić poprzez koniunkcję i negację, a następnie łatwo sprowadzić do wyrażenia arytmetycznego, które ze składników elementarnie rekurencyjnych zbuduje funkcję elementarnie rekurencyjną. Teraz chcemy pokazać, że te dwa warunki są zachowywane przy definiowaniu przez operację minimalizacji. Przyjmijmy, że funkcja f jest zdefiniowana następująco: f (~x) = y ⇐⇒ y = µz [g(~x, z)]. przy czym dla g oba pierwsze warunki są spełnione g(~x, z) = s ⇐⇒ ∃t[Kg0 (~x, z, s, t) = 0] ⇐⇒ ∀t[Kg00 (~x, z, s, t) = 0] Zapis rozumowania dla pierwszego z warunków wygląda następująco: f (~x) = y ⇐⇒ ∃t[Kg0 (~x, y, 0, t) = 0] ∧ (∀z < y)∃u¬[Kg00 (~x, z, 0, u) = 0]. Skorzystamy z następującej łatwej do okazania równoważności: (∀z < y)∃u[K(z, u) = 0] ⇐⇒ ∃w(∀z < y)[K(z, Jz (w)) = 0], gdzie z powodu kodowania ciągu liczb naturalnych o nieustalonej długości n +1 wprowadzamy metodę kodowania hx1 , . . . , xn i = px0 1 +1 · · · pxn−1 , gdzie pi to i-ta liczba pierwsza. Wówczas łatwo okazać, że Ji (hx1 , . . . , xn i) = xi dla 0 ≤ i ≤ n oraz samo kodowanie z = hx1 , . . . , xn i są funkcjami klasy EREC. Korzystając z powyżej opisanych faktów otrzymamy: f (~x) = y ⇐⇒ ⇐⇒ ∃t[Kg0 (~x, y, 0, t) = 0] ∧ ∃w(∀z < y)¬[Kg00 (~x, z, 0, Jz (w)) = 0] ⇐⇒ ∃t∃w([Kg0 (~x, y, 0, t) = 0] ∧ (∀z < y)¬[Kg00 (~x, z, 0, Jz (w)) = 0]) ⇐⇒ ∃s([Kg0 (~x, y, J1 (s)) = 0] ∧ (∀z < y)¬[Kg00 (~x, z, 0, Jz (J2 (s))) = 0]) ⇐⇒ ∃sKf000 (~x, y, s) = 0,
5.1. Postać normalna
55
gdzie Kf000 (~x, y, s) = 0 ⇐⇒ ([Kg0 (~x, y, J1 (s)) = 0] ∧ (∀z < y)¬[Kg00 (~x, z, 0, Jz (J2 (s))) = 0]). Ponieważ kwantyfikatory ograniczone nie wyprowadzają poza relacji elementarnie rekurencyjnych uzyskujemy stwierdzenie, że tak określona Kf000 jest elementarnie rekurencyjna, co kończy dowód tego fragmentu. Skoncentrujmy się teraz na drugim z warunków: f (~x) = y ⇐⇒ g(~x, y) = 0 ∧ (∀z < y)g(x, z) 6= 0. Z założenia, iż funkcja g spełnia tezę twierdzenia możemy zapisać: f (~x) = y ⇐⇒ (∀t[Kg00 (~x, y, 0, t) = 0]) ∧ (∀z < y)∀u¬[Kg00 (~x, z, 0, u) = 0]). Powyższa formuła jest równoważna następującemu wyrażeniu: ∀t∀u([Kg00 (~x, y, 0, t) = 0] ∧ (∀z < y)¬[Kg00 (~x, z, 0, u) = 0]). Kodując t, u w v otrzymamy kolejne równoważne formuły: ∀v([Kg00 (~x, g, 0, J1 (v)) = 0] ∧ (∀z < y)¬[Kg00 (~x, z, 0, J2 (u)) = 0]) ⇐⇒ ∀v[Kf0000 (~x, y, v) = 0], gdzie Kf0000 (~x, y, v) = 0 ⇐⇒ ([Kg00 (~x, g, 0, J1 (v)) = 0] ∧ (∀z < y)¬[Kg00 (~x, z, 0, J2 (u)) = 0]. i podobne rozumowanie jak dla Kf000 daje nam gwarancję, że Kf0000 jest elementarnie rekurencyjna. Tak kończy się dowód zachodzenia dwóch pierwszych warunków twierdzenia. Pozostaje nam tylko wykazać prawdziwość warunku trzeciego. W tym celu wystarczy zauważyć, że z warunku pierwszego mamy: f (~x) = y ⇐⇒ ∃t[Kf0 (~x, y, t) = 0] co jest równoważne spełnianiu ∀~x∃y∃t[Kf0 (~x, y, t) = 0]. Kodując t, y jako v = J(t, y) otrzymamy z kolei ∀~x∃v[Kf0 (~x, J2 (v), J1 (v)) = 0] czyli po przyjęciu za g(~x, v) = Kf0 (~x, J2 (v), J1 (v)) uzyskujemy ∃v[g(~x, v) = 0], co prowadzi do wzoru: f (~x) = J2 (µv [g(~x, v) = 0]) który daje oczekiwaną postać warunku trzeciego.
56
5. Uniwersalność, numeracje i nierozstrzygalność Jako kolejne twierdzenie podamy wniosek z ostatniej części powyższego twierdzenia uzyskany przez osłabienie założeń dotyczących funkcji f . Twierdzenie 5.2. Dla każdej częściowo rekurencyjnej funkcji f : Nn → N ze zbioru PREC, istnieją funkcje elementarnie rekurencyjne g : Nn+1 → N, h : N → N takie, że f (~x) ↓ ⇐⇒ ∃t[g(~x, t) = 0] oraz f (~x) =
h(µy [g(~x, y)]) µy [g(~x, y)] ↓, niezdefiniowana µy [g(~x, y)] ↑ .
Dowód tego twierdzenia pomijamy jako stosunkowo oczywistą modyfikacją powyżej opisanego rozumowania.
5.2. Funkcje i zbiory uniwersalne Rozważane w poprzednich rozdziałach podklasy funkcji częściowo rekurencyjnych EREC i PRIM są wyraźnie prostsze w konstrukcji od klasy PREC. Łatwo jest zauważyć - choćby na podstawie samej definicji że oba te zbiory są podzbiorami zbioru funkcji częściowo rekurencyjnych: EREC ⊆ PREC jak i PRIM ⊆ PREC. W tej sytuacji powstaje naturalne pytanie czy zawieranie to jest właściwe, czy może zachodzi równość zbiorów EREC, PRIM i PREC. Problem był już przez nas rozważany, teraz jednak wykorzystamy nową technikę ważną dla rozwiązania zarówno tego problemu jak i istotną w innych zagadnieniach. W tym celu wprowadzimy pojęcie funkcji uniwersalnej. Rozważmy dowolną podklasę F klasy funkcji rekurencyjnych REC. Niech Fn oznacza podzbiór F złożony z funkcji co najwyżej n-argumentowych. Definicja 5.3. Funkcję fF : Nn+1 → N będziemy nazywali funkcją uniwersalną dla zbioru F, jeśli zachodzi równoważność: g ∈ Fn ⇐⇒ (∃k ∈ N)(∀~x) ∈ Nn g(~x) = fF (k, ~x). Twierdzenie 5.4. Niech F będzie podklasą klasy funkcji rekurencyjnych REC zawierającą funkcję następnika S, funkcje rzutowania Ini , 0 ≤ i ≤ n ∈ N oraz zamkniętą ze względu na składanie. Wówczas dla dowolnego n ∈ N funkcja uniwersalna dla Fn nie należy do F. Dowód. Niech F : Nn+1 → N będzie funkcją uniwersalną dla Fn . Przypuśćmy, że F ∈ F. Zdefiniujmy teraz h(x1 , . . . , xn ) = F (x1 , x1 , . . . , xn ).
5.2. Funkcje i zbiory uniwersalne
57
Zauważmy, że traktowanie xi jako Ini (x1 , . . . , xn ), 1 ≤ i ≤ n prowadzi do konstatacji, iż h jest rezultatem złożenia f i odpowiednich Ini , skąd otrzymujemy h ∈ F i oczywiscie h ∈ Fn . Skoncentrujmy uwagę na funkcji h(x1 , . . . , xn )+1. Na mocy jej należenia do Fn mamy (∃k ∈ N)(∀(x1 , . . . , xn ) ∈ Nn )F (k, x1 , . . . , xn ) = h(x1 , . . . , xn ) + 1. Podstawmy x1 = . . . = xn = k. Wtedy F (k, . . . , k ) = h(k, . . . , k ). Ale to | {z } | {z } n+1
n
oznacza, że h(k, . . . , k) = F (k, . . . , k) = h(k, . . . , k) + 1, skąd otrzymujemy sprzeczność, a to oznacza, że założenie o należeniu F do F było fałszywe. Powyższe twierdzenie daje oczywisty wniosek, że funkcja uniwersalna klasy REC nie należy do tejże klasy. To samo twierdzenie wykorzystamy do nowego dowodu, że PRIM ( REC. Będziemy szukali takiej funkcji f ∈ REC, która nie należy do PRIM. Gdyby istniała funkcja uniwersalna dla podklasy n-argumentowych funkcji PRIM to na mocy powyższego twierdzenia nie mogłaby ona należeć do tego zbioru funkcji. Skonstruujemy więc funkcję uniwersalną dla podzbioru dwuargumentowych funkcji pierwotnie rekurencyjnych. W celu uproszczenia dowodu pokażemy najpierw, że taki zbiór może być zdefiniowany w szczególny sposób. Niech exp(x, y) oznacza największą taką liczbę n ∈ N, że y n |x. Twierdzenie 5.5. Klasa dwuargumentowych funkcji pierwotnie rekurencyjnych PRIM2 jest najmniejszą klasą zawierającą następujące funkcje: Z(x) = 0, I(x) = x, S(x) = x+1, pyx , exp(x, py ), x·y, x+y oraz zamkniętą ze względu na składanie funkcji nie wyprowadzające poza funkcje 2-argumentowe oraz rekursję w następującej postaci: h(x, 0) = f (x), h(x, y + 1) = g(h(x, y), 2x+1 3y+1 ). Dowód. Klasę określoną warunkami twierdzenia oznaczymy jako PRIMr2 Fakt, że PRIMr2 ⊂ PRIM2 wynika wprost z definicji PRIMr2 : łatwo pokazać, że wszystkie funkcje podstawowe są z PRIM, operacje są także szczególnym przypadkiem operacji użytych w definicji PRIM.
58
5. Uniwersalność, numeracje i nierozstrzygalność Teraz pozostaje nam pokazać, że PRIM2 ⊂ PRIMr2 . W tym celu pokażemy, że dla każdej funkcji f ∈ PRIM, istnieje f 0 ∈ PRIMr2 jednoargumentowa taka, że: n +1 (∀(x1 , ..., xn ) ∈ Nn )f (x1 , . . . , xn ) = f 0 (2x1 +1 3x2 +1 · . . . · pxn−1 ).
Dla funkcji Z, S, Ini stwierdzenie to jest oczywiste, wykażemy, że stwierdzenie to dziedziczy się ze względu na operacje składania funkcji i rekursji. Niech f : Nn → N, g1 , . . . , gn : Nk → N spełniają wymienione stwierdzenie, to znaczy, że istnieją dla nich odpowiednie funkcje f 0 , g10 , . . . , gn0 . Wówczas dla h(x1 , . . . , xk ) = f (g1 (x1 , . . . , xk ), . . . , gn (x1 , . . . , xk )). możemy skonstruować funkcję h0 postaci: g 0 (z)+1
h0 (z) = f 0 (p01
g 0 (z)+1
n . . . pn−1
).
Podobnie, niech dla f : Nn → N, g : Nn+2 → N istnieją f 0 , g 0 spełniające interesujące nas stwierdzenie. Dla h zdefiniowanego z f, g za pomocą rekursji prostej istnieje wówczas odpowiednie h0 zdefiniowane jako ˙ exp(z, 3)−1), ˙ h0 (z) = H(exp(z, 2)−1, gdzie zwykłą rekursję prostą definiującą h przekodowujemy do wymaganej postaci w następujący sposób H(x, 0) = f 0 (2x+1 ), H(x, y + 1) = G(H(x, y), 2x+1 3y+1 ), G(w, z) = g 0 (2w+1 3exp(z,2) 5exp(z,3) ) To kończy indukcyjny dowód istnienia odpowiedniej funkcji jednoargumentowej f 0 ∈ PRIMr2 dla każdej f ∈ PRIM. Niech teraz f ∈ PRIM2 . Wtedy istnieje f 0 ∈ PRIMr2 taka, że f (x, y) = f 0 (2x+1 3y+1 ). Skoro f 0 należy do PRIMr2 oraz 2x+1 3y+1 należy do PRIMr2 to i f należy do PRIMr2 co kończy cały dowód. Dla czytelności zapisu od tej chwili zamiast zapisywać wprost wyraxn +1 żenie 2x1 +1 3x2 +1 · . . . · pn−1 będziemy używali wprowadzonego wcześniej zapisu hx1 , . . . , xn i, warto zwrócić uwagę, iż wówczas Ji (hx1 , . . . , xn i) = ˙ = xi dla 1 ≤ i ≤ n. Ponieważ funkcja poprzednika exp(hx1 , . . . , xn i, pi−1 ˙ )−1 r ˙ x−1 należy do PRIM2 , to w definicji klasy PRIMr2 funkcję exp(x, pi ) można zastąpić funkcją Ji (x) traktowaną jako funkcja dwóch argumentów i, x ∈ N. Wykorzystamy powyższe określenie klasy dwuargumentowych funkcji pierwotnie rekurencyjnych do udowodnienia twierdzenia.
5.2. Funkcje i zbiory uniwersalne Twierdzenie 5.6. Istnieje funkcja G uniwersalna dla klasy PRIMr2 , która należy do REC. Dowód. Musimy podać konstrukcję funkcji uniwersalnej G : N3 → N dla klasy PRIMr2 , postępowanie będziemy prowadzili w sposób indukcyjny: od najprostszych przypadków do funkcji zdefiniowanych poprzez bardziej skomplikowane operacje. Określimy najpierw poprzez G funkcje podstawowe: G(0, x, y) = Z(x), G(1, x, y) = I(x), G(2, x, y) = S(x), G(3, x, y) = pyx , G(4, x, y) = Jx (y), G(5, x, y) = x · y, G(6, x, y) = x + y. Teraz pozostaje określić nam związek kolejnych poziomów funkcji G (to znaczy funkcji o wyższych wartościach pierwszego argumentu) z wynikami operacji składania i rekursji. Rozważmy teraz przypadek n ≥ 6 przyjmując następujące oznaczenia: l = J1 (n), k = J2 (n), m = J3 (n). Wówczas możemy określić — dla m < 3: m = 0, G(l, y, x) G(l, x, x) m = 1, G(n + 1, x, y) = G(l, x, G(k, x, y)) m = 2; — dla m ≥ 3: G(n + 1, 0, y) = G(l, y, y), G(n + 1, S(x), y) = G(k, G(n + 1, x, y), hx, yi). Skomentujmy powyższy zapis, jeśli mamy dwie funkcje f, g ∈ PRIMr2 takie, że f (x, y) = G(l, x, y), g(x, y) = G(k, x, y), to pierwszy warunek daje nam G(n, x, y) = G (l, x, G(k, x, y)) = f (x, g(x, y), gdzie (z definicji l, k, m ) mamy n = hl, k, 2i+1. Ponieważ z kolei f (g(x, y), y) można uzyskać przez przestawienie zmiennych przy m = 0, to oznacza, że wszystkie funkcje uzyskane przez składanie funkcji reprezentowanych przez G także są reprezentowane przez G.
59
60
5. Uniwersalność, numeracje i nierozstrzygalność Teraz rozważmy przypadek funkcji f, g które definiują nową funkcję używając schematu rekursji z Twierdzenia 5.5. Załóżmy, że f, g są już określone poprzez funkcję G z numerami l, k: G(l, y, y) = f (y), G(k, x, y) = g(x, y). Wtedy funkcja h zdefiniowana poprzez wspomniany schemat rekursji otrzymuje w G numer równy hl, k, mi+1, to znaczy h(x, y) = G(hl, k, mi+1, x, y), gdzie m jest dowolną liczbą większą lub równą 3. Na mocy powyższych rozważań, mamy pewność, że wszystkie funkcje PRIMr2 są opisywane przez G (oraz ponadto dla każdego i ∈ N funkcja G(i, x, y) należy do PRIMr2 ) to znaczy G jest rzeczywiście funkcją uniwersalną. Pozostaje jednak problem, czy G ∈ REC, bowiem G zostało określone za pomocą takiego typu operacji, który nie był użyty przy definicji REC (jest to co prawda rekursja, ale dokonywana względem dwóch zmiennych n i x równocześnie - czyli tak zwana rekursja podwójna). Dlatego musimy jeszcze pokazać, że wynik tego typu operacji da się tak zdefiniować, aby pozostał w obrębie klasy REC. W tym celu (podobnie jak przy wyrażaniu rekursji przez minimalizację) użyjemy kodowania. Powiemy, że liczba sA ∈ N reprezentuje funkcję G w zbiorze argumentów A = An × Ax × Ay (An , Ax , Ay ⊂ N), wtedy i tylko wtedy, gdy Jhn,x,yi = G(n, x, y) + 1. dla każdej trójki (n, x, y) ∈ An × Ax × Ay . Jedynka jest dodawana z prawej strony aby odróżnić argumenty dla których wartość G jest równa zeru i które są umieszczone w liczbie sA od pozostałych argumentów (nie zapisanych w sA ). Wprowadźmy teraz funkcję Kc (s) taką, że 0 s reprezentuje G w pewnym A i dla każdych (n, x, y) ∈ A trójki (n0 , x0 , y 0 ) konieczne do obliczenia G(n, x, y) są w A, Kc (s) = 1 w przeciwnym razie. Wówczas łatwo zauważyć, że ˙ G(n, x, y) = Jhn,x,yi (µs [Kc (s) + K6= (Jhn,x,yi (s), 0)])−1. Pozostaje tylko do zamknięcia dowodu wykazać, że funkcja Kc (s) jest funkcją rekurencyjną. Wystarczy tutaj zwrócić uwagę na fakt, że Kc (s) jest sumą funkcji Kc1 (s), Kc2 (s) i Kc3 (s) które odpowiadają kolejnym przypadkom definiowania G(n, x, y) odpowiednio dla n ≤ 6, n > 6 i m < 3 oraz n > 6 i m > 3. Omówmy teraz pokrótce konstrukcję tych przypadków.
5.2. Funkcje i zbiory uniwersalne Funkcja Kc1 (s) jest równa zeru wtedy i tylko wtedy, gdy dla wszystkich n, x, y ≤ s jeśli K6= (Jhn,x,yi (s), 0) (to znaczy G dla (n, x, y) jest reprezentowana w s) zachodzą równości: — dla n = 0 mamy Jhn,x,yi (s) = 1 (czyli G(n, x, y) = Z(x)); — dla n = 1 mamy Jhn,x,yi (s) = x + 1 (czyli G(n, x, y) = I(x)); — dla n = 2 mamy Jhn,x,yi (s) = x + 2 (czyli G(n, x, y) = S(x)); — dla n = 3 mamy Jhn,x,yi (s) = pyx + 1 (czyli G(n, x, y) = pyx ); — dla n = 4 mamy Jhn,x,yi (s) = Jx (y) + 1 (czyli G(n, x, y) = Jx (y)); — dla n = 5 mamy Jhn,x,yi (s) = x · y + 1 (czyli G(n, x, y) = x · y); — dla n = 6 mamy Jhn,x,yi (s) = x + y + 1 (czyli G(n, x, y) = x + y). Łatwo zauważyć, że wszystkie opisane tu operacje można zapisać za pomocą funkcji rekurencyjnych: kwantyfikacja ograniczona była już reprezentowana jako funkcja rekurencyjna, koniunkcję można traktować jako sumę funkcji charakterystycznych, alternatywę jako iloczyn, negację jako odejmowanie od jedynki, zaś implikację p → q można przedstawić w postaci ¬p ∨ q, więc także w postaci odpowiedniej kombinacji funkcji charakterystycznych. Na mocy tych uwag Kc1 (s) jest więc rekurencyjna. Z kolei Kc2 (s) jest równe zeru wtedy i tylko wtedy, gdy dla wszystkich n, x, y ≤ s spełniających n ≥ 6 oraz m < 3: jeśli K6= (Jhn+1,x,yi ), 0) (to znaczy G dla (n + 1, x, y) jest reprezentowana w s) to kolejne wartości spełniają warunki — dla m = 0 mamy Jhn+1,x,yi (s) = Jhl,y,xi (s), (czyli G(n + 1, x, y) = G(l, y, x)); — dla m = 1 mamy Jhn+1,x,yi (s) = Jhl,x,xi (s), (czyli G(n + 1, x, y) = G(l, x, x)); — dla m = 2 jeśli mamy Jhk,x,yi (s) 6= 0 to zachodzi Jhn+1,x,yi (s) = Jhl,x,Jhk,x,yi (s)−1i ˙ (s). Tak zdefiniowana Kc2 (s) - na mocy tych samych spostrzeżeń co dla Kc1 (s) - jest również funkcją rekurencyjną. Pozostała nam do zdefiniowania funkcja charakterystyczna Kc3 (s), którą określimy jako równą zeru wtedy i tylko wtedy, gdy dla wszystkich n, x, y ≤ s spełniających n ≥ 6 oraz m ≥ 3: jeśli zachodzi K6= (Jhn+1,x,yi (s), 0) - to znaczy G dla (n + 1, x, y) jest reprezentowana w s - wówczas — Jhn+1,0,yi (s) = Jhl,y,yi (s) (czyli G(n + 1, 0, y) = G(l, y, y)) — oraz jeśli Jhn+1,x+1,yi (s) 6= 0 to zachodzi Jhn+1,x,yi (s) 6= 0 oraz jest spełniona równość Jhn+1,x+1,yi (s) = Jhk,Jhn+1,x,yi (s)−1,hx,yii (s) ˙ (czyli G(n + 1, x + 1, y) = G(k, G(n + 1, x, y), hx, yi)).
61
62
5. Uniwersalność, numeracje i nierozstrzygalność Tak jak w pozostałych przypadkach ten sposób określenia funkcji Kc3 (s) gwarantuje jej rekurencyjność, co kończy cały dowód. Nietrudno zauważyć, że podobne rozważania można przeprowadzić dla przypadku funkcji pierwotnie rekurencyjnych o dowolnej liczbie argumentów budując dla nich odpowiednie funkcje uniwersalne. Łatwo z powyższego twierdzenia oraz Twierdzeń 5.4 i 5.5 wywnioskować następujący fakt. Twierdzenie 5.7. Funkcja G określona jak powyżej jako funkcja uniwersalna dla klasy PRIMr2 nie należy do zbioru REC. Oczywistą konsekwencją tego twierdzenia jest z kolei zawieranie właściwe klasy PRIM w REC.
5.3. Numeracje W wielu rozważaniach pojawia się konieczność jednorodnej prezentacji całego zbioru lub pewnych podzbiorów funkcji częściowo rekurencyjnych. Na mocy przeliczalności zbioru funkcji PREC można funkcje częściowo rekurencyjne poindeksować (ponumerować) kolejnymi liczbami naturalnymi. Jednak istotny problem ukryty jest w wymaganiu, aby sposób przypisania indeksów było konstruktywny i pozwalał na podstawie indeksu pewnej funkcji wyliczać jej wartości. Poprzednio podane wyniki będziemy wykorzystywali do podania twierdzeń określających konstruktywne numeracje (poprzez indeksy funkcji dobrane z ustalonych funkcji uniwersalnych) dla zbioru funkcji częściowo rekurencyjnych PREC. Rozpoczniemy od następującego twierdzenia. Twierdzenie 5.8. Niech G(n, x, y) będzie funkcją uniwersalną klasy funkcji pierwotnie rekurencyjnych dwuargumentowych. Wówczas funkcja częściowo rekurencyjna F (n, x, y) określona wzorem F (n, x, y) ' J2 (µs [G(n, J(x, y), s)]) jest funkcją uniwersalną dla klasy funkcji częściowo rekurencyjnych dwuargumentowych. Dowód. Rozpocznijmy od oczywistego stwierdzenia, że dla każdej f dwuargumentowej z klasy PREC istnieje funkcja g jednoargumentowa z klasy PREC, która ma tą własność, że f (x, y) = g(J(x, y)) dla wszystkich x, y ∈ N, funkcja J jest zdefiniowana jak w Lemacie 2.24 i wraz z funkcjami J1 , J2 jest elementarnie rekurencyjna.
5.3. Numeracje
63
Wiemy, że dla każdej g należącej do PREC istnieje h elementarnie rekurencyjna taka, że zachodzi g(z) ' J2 (µs [h(z, s)]). Oczywiście h jest także pierwotnie rekurencyjna i na mocy Twierdzenia o funkcji uniwersalnej dla klasy PRIMr2 mamy (∃n)[h(z, s) = G(n, z, s)]. Stąd otrzymujemy, że dla każdej funkcji f dwuargumentowej z PREC istnieje n takie, że f (x, y) ' J2 (µs [G(n, J(x, y), s)]). Czyli funkcja F zadana wzorem F (n, x, y) ' J2 (µs [G(n, J(x, y), s)]) jest funkcją uniwersalną dla funkcji dwuargumentowych z klasy PREC. Zauważmy, że powyższe twierdzenie pokazuje, jak wyznaczyć takie funkcje U oraz T2 , iż każdą częściowo rekurencyjną funkcję dwuargumentową daje się przedstawić poprzez złożenie postaci U (µz T2 (n, x, y, z)). Powyższy wynik można łatwo uogólnić na funkcje o dowolnej liczbie argumentów. Twierdzenie 5.9. Istnieją funkcja U : N → N oraz ciąg funkcji Tn : Nn+2 → N należących do REC takie, że dla każdej funkcji f : Nn → N z klasy PREC istnieje e ∈ N zwane indeksem funkcji f spełniające warunki: U (µz Tn (e, ~x, z)) (∃z)Tn (e, ~x, z) = 0, f (~x) = ↑ w pozostałych przypadkach. Dowód. Jest to oczywista konsekwencja Twierdzenia 5.8 oraz możliwości kodowania ~x = (x1 , . . . , xn ) w postaci dwóch liczb hx1 , . . . , xk i i hxk+1 , . . . , xn i przy wyborze dowolnego k ∈ N spełniającego 1 < k < n. Definicja 5.10. Wprowadźmy następująco oznaczenie: {e}n jest e-tą częściową funkcją rekurencyjną wtedy i tylko wtedy, gdy U (µz Tn (e, ~x, z)) (∃z)Tn (e, ~x, z) = 0, {e}n (~x) = ↑ w pozostałych przypadkach. Przez {e}ns oznaczymy taką funkcję, w której obliczanie wyniku jest ograniczone poprzez pewną stałą s: {e}n (~x) (∃z < s)Tn (e, ~x, z) = 0, n {e}s (~x) = 0 w przeciwnym razie. Wskaźnik n = 1 będziemy zwykle opuszczali dla skrócenia zapisu. Możemy teraz jako bezpośrednią konsekwencję dotychczasowych wyników podać twierdzenie o numeracji.
64
5. Uniwersalność, numeracje i nierozstrzygalność Twierdzenie 5.11. Ciąg n-argumentowych funkcji {e}n dla e przebiegającego zbiór N jest częściowo rekurencyjną numeracją funkcji o n-argumentach z PREC w tym sensie, że — dla każdego e ∈ N funkcja {e}n należy do PREC, — jeśli f jest n-argumentowa i f ∈ PREC to istnieje e takie, że f w {e}n , — istnieje funkcja g ∈ PREC mająca (n + 1) argumentów taka, że g(e, ~x) w {e}n (~x). Na podstawie poprzednich wyników wystarczy przyjąć definicję g(e, ~x) w U (µz Tn (e, ~x, z)) aby uzyskać wszystkie pożądane warunki twierdzenia.
5.4. Rozstrzygalność i nierozstrzygalność Problemem decyzyjnym będziemy teraz nazywali zagadnienie, które polega na wyznaczaniu odpowiedzi na następujące pytanie: czy dla zadanego podzbioru liczb naturalnych S ⊂ N i pewnego n ∈ N zachodzi n ∈ S? Problem tego typu w rzeczywistości może być uogólniony do dowolnych zbiorów przeliczalnych (a nawet - w pewnym sensie - do tych wszystkich problemów w których wynik jest jednym z dwóch stanów, zwykle kojarzonych z odpowiedzią TAK lub NIE). Definicja 5.12. Mówimy, że problem decyzyjny dla zbioru S jest rozstrzygalny jeżeli S jest zbiorem rekurencyjnym. Problem decyzyjny jest nierozstrzygalny jeżeli nie jest rozstrzygalny. Oczywiście, jeżeli zbiór S jest rekurencyjnie przeliczalny, ale nie rekurencyjny to problem decyzyjny dla S będzie także nierozstrzygalny. Rozpocznijmy od następującego twierdzenia (będącego rekurencyjną wersją twierdzenia Cantora): Twierdzenie 5.13. Nie istnieje funkcja klasy REC wyliczająca wszystkie funkcje rekurencyjne całkowite. Dowód. Przeprowadzimy dowód metodą reductio ad absurdum. Załóżmy, że f ∈ REC jest funkcją rekurencyjną taką, że {f (x)} przebiega wszystkie funkcje klasy REC dla x ∈ N. Teraz przyjmijmy: ˙ (x)}(x). g(x) = 1−{f Z powyższej definicji oraz z założeń o f wynika, że g jest także funkcją rekurencyjną całkowitą. W takim razie g ma pewien indeks f (e). Jednak ˙ (e)}(e). wówczas g(e) = {f (e)}(e) z jednej strony, ale z definicji g(e) = 1−{f Tak otrzymana została sprzeczność oznaczająca, że f nie należy do klasy REC.
5.4. Rozstrzygalność i nierozstrzygalność Powyższy wynik można także wyrazić w sposób zgodny z poprzednimi rozważaniami mówiąc, że zbiór REC nie posiada funkcji uniwersalnej, która byłaby całkowitą funkcją rekurencyjną. Jako wniosek z powyższego twierdzenia otrzymamy rezultat związany z zagadnieniami rozstrzygalności. Twierdzenie 5.14. Problem decyzyjny polegający na sprawdzaniu czy liczba naturalna koduje funkcję rekurencyjną całkowitą jest nierozstrzygalny. Dowód. Niech T = {n : {n} ∈ REC}. Jeśli problem decyzyjny określony w twierdzeniu byłby rozstrzygalny to T byłby rekurencyjny, czyli także rekurencyjnie przeliczalny. Zbiór T byłby więc przeciwdziedziną pewnej funkcji rekurencyjnej całkowitej fT . Jednak poprzednie twierdzenie pokazuje, że taka funkcja nie istnieje. Na mocy Twierdzenia o numeracji problem, czy pewien zbiór S ⊂ N jest rekurencyjnie przeliczalny sprowadza się do pytania o istnienie takiego i ∈ N, że dziedzina {i} jest równa S. Rozwiniemy tę kwestię wprowadzając definicję pewnego szczególnego zbioru. Definicja 5.15. Przez zbiór K oznaczymy zbiór K = {i : {i}(i) ↓}. Zbiór K określony jak powyżej ma ciekawe własności. Poniżej podamy podstawową spośród nich. Twierdzenie 5.16. Zbiór K jest rekurencyjnie przeliczalny, ale nie jest rekurencyjny. Dowód. Zdefiniujmy funkcję g : N → N taką, że g(x) = {x}(x). To wystarcza, aby zbiór K można było określić jako dziedzinę funkcji g, gdzie funkcja g jest częściowo rekurencyjna jako prosta modyfikacja funkcji uniwersalnej klasy PREC w przypadku funkcji jednoargumentowych. Pokażemy teraz, że K nie jest rekurencyjny używając metody nie wprost. Gdyby K był zbiorem rekurencyjnym, to KK będąca funkcją charakterystyczną K byłaby także rekurencyjna. Stąd funkcja 0 KK (x) = 1, f (x) = ↑ KK (x) = 0, byłaby częściowo rekurencyjna oraz odpowiadałaby pewnej funkcji {i}. Ale wówczas {i}(i) = f (i) = 0 byłoby zdefiniowane, gdy i 6∈ K, czyli gdy {i}(i) niezdefiniowane. Sprzeczność wskazuje, że K nie jest rekurencyjne. Kolejny wynik z zakresu nierozstrzygalności jest prostym wnioskiem z Twierdzenia 5.16.
65
66
5. Uniwersalność, numeracje i nierozstrzygalność Twierdzenie 5.17. Problem decyzyjny należenia do zbioru K jest problemem nierozstrzygalnym. Zdefiniujmy teraz inny szczególnie ważny zbiór K0 . Definicja 5.18. Zbiór K0 jest zbiorem liczb postaci J(x, e) takich, że funkcja {e} jest zdefiniowana dla argumentu x. Twierdzenie 5.19. Problem należania kodu J(x, e) do zbioru K0 (nazywany problemem stopu) jest nierozstrzygalny. Dowód. Zbiór K0 jest zbiorem kodów takich liczb x, e ∈ N, że {e}(x) ↓. Na mocy Twierdzenia 5.11 istnieje taka funkcja częściowo rekurencyjna f , że f (J(x, e)) ↓ ⇐⇒ {e}(x) ↓. Zbiór K0 jest dziedziną tej funkcji, a więc jest zbiorem rekurencyjnie przeliczalnym. Załóżmy, że K0 jest rekurencyjny, wówczas z powodu równoważności J(x, x) ∈ K0 ⇐⇒ x ∈ K, zbiór K także będzie rekurencyjny. Otrzymujemy sprzeczność z wcześniej otrzymanym wynikiem, czyli K0 nie może być rozstrzygalne. Wprowadźmy teraz definicję pozwalającą na analizę problemów rozstrzygalnych w stosunku do zbiorów funkcji częściowo rekurencyjnych. Poniżej otrzymane wyniki pozwolą nam pokazać jak ważną rolę gra pojęcie nierozstrzygalności w teorii obliczeń. Definicja 5.20. Zbiór IF ⊂ N nazywamy zbiorem indeksowym klasy F funkcji częściowo rekurencyjnych jeśli IF = {n : {n} ∈ F}. Klasę F funkcji częściowo rekurencyjnych nazywamy zupełnie rekurencyjną jeżeli IF jest rekurencyjny. Powyższe pojęcia pozwalają na sformułowanie bardzo istotnego twierdzenia. Twierdzenie 5.21. Klasa F funkcji częściowo rekurencyjnych jest zupełnie rekurencyjna wtedy i tylko wtedy, gdy F = ∅ lub F = PREC. Dowód. Jeżeli F jest zbiorem pustym lub całą klasą funkcji częściowo rekurencyjnych to zbiór indeksowy IF jest odpowiednio zbiorem pustym lub zbiorem liczb naturalnych, czyli F jest zupełnie rekurencyjny. Teraz wystarczy pokazać, że każda klasa zupełnie rekurencyjna jest klasą pustą lub całą klasą PREC. Pokażemy to metodą reductio ad absurdum. Niech F będzie zbiorem zupełnie rekurencyjnym i takim, że dla pewnych n1 , n2 ∈ N mamy {n1 } ∈ F zaś {n2 } 6∈ F.
5.4. Rozstrzygalność i nierozstrzygalność Niech funkcja całkowicie niezdefiniowana o indeksie e0 nie należy do F. Zdefiniujmy teraz funkcję częściowo rekurencyjną f taką, że {n1 }(z) x ∈ K, f (x, z) = {e0 }(z) x 6∈ K. Zauważmy, że dowolna liczba x należy do K wtedy i tylko wtedy gdy f (x, z) traktowana jako funkcja zmiennej z należy do F. W takim razie, gdyby F był zupełnie rekurencyjny to sprawdzając przynależność indeksu funkcji fx takiej, że fx (z) = f (x, z) do IF rozstrzygalibyśmy przynależność x ∈ K. Ponieważ jednak zbiór K nie jest rekurencyjny to IF nie może być rekurencyjny. Pozostaje nam rozważyć przypadek gdy funkcja całkowicie niezdefiniowana należy do F. Wówczas można zdefiniować funkcję częściowo rekurencyjną g następująco: {n2 }(z) x ∈ K, g(x, z) = {e0 }(z) x 6∈ K. Podobne rozumowanie jak powyżej prowadzi do wniosku, że IF nie może być rekurencyjny. Tak więc zbiór funkcji częściowo rekurencyjnych F jeśli jest zupełnie rekurencyjny to albo nie zawiera żadnej funkcji (zbiór pusty ∅) albo zawierając choć jedną funkcję musi zawierać dowolną inną funkcję częściowo rekurencyjną (zbiór pełny PREC). Powyższe twierdzenie można wypowiedzieć krócej mówiąc, że zbiór F funkcji częściowo rekurencyjnych jest zupełnie rekurencyjny wtedy i tylko wtedy, gdy jest trywialny. Poszczególne klasy funkcji można wyróżnić poprzez wskazanie pewnych właściwości funkcji należących do tych klas. Jak więc się okazuje wszystkie własności poza trywialnymi (żadna funkcji, dowolna funkcja) są nierozstrzygalne. Poniżej prezentujemy wybór kilku wniosków z Twierdzenia 5.21. Interpretując zbiór liczb naturalnych N jako zbiór indeksów funkcji częściowo rekurencyjnych i definiując podzbiory tych indeksów na podstawie wybranych własności funkcji możemy określić przykładowe problemy nierozstrzygalne. Przykład 5.22. Następujące problemy są nierozstrzygalne: — całkowite niezdefiniowanie funkcji częściowo rekurencyjnej, — zdefiniowanie funkcji częściowo rekurencyjnej dla przynajmniej jednego argumentu, — posiadanie przez funkcję częściowo rekurencyjną pewnej liczby w zbiorze wartości, — całkowitość funkcji częściowo rekurencyjnej,
67
68
5. Uniwersalność, numeracje i nierozstrzygalność — pierwotna rekurencyjność funkcji, — elementarna rekurencyjność funkcji, — różnowartościowość funkcji częściowo rekurencyjnej, — identyczność obrazu funkcji częściowo rekurencyjnej z wybranym zbiorem. Warto rozróżnić tutaj pomiędzy semantycznymi a syntaktycznymi właściwościami funkcji. Własności semantyczne związane są z wynikiem obliczanym przez funkcję (czyli odpowiadają własnościom działania programu). Z kolei własności syntaktyczne odpowiadają własnościom indeksów funkcji (co odpowiadałoby analizie wyglądu kodu programu). Twierdzenie 5.21 wyklucza rozstrzygalność problemów związanych z własnościami semantycznymi, nie wyklucza jednak rozstrzygania zagadnień odnoszących się do własności syntaktycznych. Wynika to z faktu, że indeksy wybierane w sposób syntaktyczny nie tworzą zbiorów indeksowych. Omówmy jeszcze w sposób nieformalny pewien klasyczny i ważny problem. Definicja 5.23. Relację R ⊂ Nn nazywamy relacją diofantyczną, gdy istnieje taki wielomian p o współczynnikach całkowitych, że R(x1 , . . . , xn ) ⇐⇒ (∃y1 , ..., yn ∈ N)p(x1 , ..., xn , y1 , ..., yn ) = 0. Bez dowodu podamy poniżej twierdzenie wiążące diofantyczność z rekurencyjną przeliczalnością. Lemat 5.24. Relacja R jest diofantyczna wtedy i tylko wtedy, gdy jest rekurencyjnie przeliczalna. Na początku 20 wieku sformułowany został ważny problem: znaleźć metodę pozwalającą dla zadanego wielomianu o współczynnikach całkowitych odpowiedzieć czy ma on rozwiązanie w liczbach całkowitych. Na mocy znanych wyników (każda liczba całkowita to różnica dwóch liczb naturalnych, każda liczba naturalna to suma kwadratów czterech liczb całkowitych) wystarczy rozważać wyłącznie rozwiązania naturalne. Gdyby problem miał pozytywne rozwiązanie to wówczas każda relacja diofantyczna byłaby rekurencyjna. Co oznaczałoby, że każda relacja rekurencyjnie przeliczalna byłaby rekurencyjna - to jednak, jak widzieliśmy, nie jest prawdą. Stąd jako wniosek otrzymujemy twierdzenie. Twierdzenie 5.25. Problem sprawdzania przynależności pewnego wielomianu p o współczynnikach całkowitych do zbioru wielomianów o współczynnikach całkowitych i posiadających rozwiązania całkowite jest nierozstrzygalny.
5.5. Funkcje częściowo rekurencyjne a zbiory rekurencyjnie przeliczalne
5.5. Funkcje częściowo rekurencyjne a zbiory rekurencyjnie przeliczalne Podsumowaniem bieżącego rozdziału będzie twierdzenie pokazujące szczególny związek funkcji częściowo rekurencyjnych oraz zbiorów rekurencyjnie przeliczalnych. Najpierw jednak wprowadzimy przydatne oznaczenie: dla ustalonej numeracji częściowo rekurencyjnych funkcji n-argumentowych przez Wen (~x) będziemy oznaczali relację spełnioną wyłącznie przez elementy dziedziny funkcji {e}(~x), to znaczy Wen (~x) ⇐⇒ {e}(~x) ↓ . Dla n = 1 uzyskamy jako szczególny przypadek numerację W0 , W1 , . . . , Wn , . . . obejmującą wszystkie zbiory rekurencyjnie przeliczalne. Podamy teraz przydatne twierdzenie, które rzuca nowe światło na problem kwantyfikatorów nieograniczonych stosowanych na relacjach rekurencyjnych. Twierdzenie 5.26. Relacja n-argumentowa R ⊂ Nn jest rekurencyjnie przeliczalna wtedy i tylko wtedy, gdy istnieje (n + 1)-argumentowa relacja rekurencyjna P ⊂ Nn+1 taka, że R(~x) ⇐⇒ (∃y)P (~x, y). Dowód. Zauważmy, że na podstawie rekurencyjnej przeliczalności relacji R można zapisać następujące równoważne warunki: R(~x) ⇐⇒ Wen (~x) ⇐⇒ (∃y)Tn (e, ~x, y) = 0, gdzie e jest indeksem funkcji, takiej iż R jest jej dziedziną. Oznaczmy teraz relację, której Tn jest funkcją charakterystyczną przez TnR . Wówczas nasz warunek w twierdzeniu można zapisać jako R(~x) ⇐⇒ Wen (~x) ⇐⇒ (∃y)TnR (e, ~x, y). Teraz możemy przejść do dowodu. Jeśli R jest rekurencyjnie przeliczalna, to istnieje e, takie że {e}n (~x) ↓ ⇐⇒ R(~x). Na mocy Twierdzenia 5.9 mamy {e}n (~x) ↓ ⇐⇒ (∃y)TnR (e, ~x, y). Ponieważ TnR jest klasy PRIM, to jest także rekurencyjna i za relację P (~x, y) wystarczy przyjąć TnR (e, ~x, y). Odwrotnie, jeśli P jest rekurencyjna, to jej funkcja charakterystyczna KP jest funkcją rekurencyjną. Zdefiniujmy f (~x) w µy (KP (~x, y)). Na mocy tej definicji otrzymujemy, że f jest klasy PREC i relacja R jest dziedziną funkcji f .
69
70
5. Uniwersalność, numeracje i nierozstrzygalność Tak jak zapowiadaliśmy, istnieje fundamentalny związek pomiędzy zbiorami (i relacjami) rekurencyjnie przeliczalnymi a funkcjami częściowo rekurencyjnymi. Aby precyzyjnie wysłowić te zależności rozpocznijmy od przypomnienia definicji grafu funkcji: grafem funkcji f : Nn → N nazywamy relację Gf ⊂ Nn+1 taką, że Gf (~x, y) ⇐⇒ f (~x) = y. Twierdzenie 5.27. Funkcja f należy do klasy PREC wtedy i tylko wtedy, gdy jej graf Gf jest relacją rekurencyjnie przeliczalną. Dowód. Rozważmy dowolną funkcję f ∈ PREC, wówczas istnieje jej indeks e ∈ N, (czyli funkcja {e} w f ). Możemy teraz zapisać ciąg równoważności: (~x, y) ∈ Gf ⇐⇒ {e}(~x) = y ⇐⇒ U (µz TnR (e, ~x, z)) = y ⇐⇒ (∃z)[TnR (e, ~x, z) ∧ (∀t < z)¬TnR (e, ~x, t) ∧ K= (U (z), y)]. Relacja wiązana przez kwantyfikator ∃z jest rekurencyjna, więc na mocy poprzedniego Twierdzenia 5.26 relacja Gf jest rekurencyjnie przeliczalna. Rozważmy teraz implikację przeciwną: niech relacja Gf będzie rekurencyjnie przeliczalna. Wówczas istnieje taka relacja rekurencyjna R, że Gf (~x, y) ⇐⇒ (∃z)R(~x, y, z). Stąd łatwo zauważyć, iż f (~x) ↓ ⇐⇒ (∃y)(∃z)R(~x, y, z). Niech t = J(y, z) koduje parę liczb w pojedynczą liczbę naturalną, możemy łatwo zakończyć tę część dowodu zauważając równość dwóch funkcji f (~x) w J1 (µt [KR (~x, J1 (t), J2 (t))]. Stosując podobne rozumowanie do powyższego, można ponadto pokazać w przypadku relacji przeliczalnie rekurencyjnych istnieje możliwość skojarzenia funkcji z relacją. Twierdzenie 5.28. Jeśli R jest relacją rekurencyjnie przeliczalną, to istnieje funkcja f ∈ PREC taka, że (∃y)R(~x, y) ⇒ f (~x) ↓ ∧R(~x, f (~x)). Dowód. Ponieważ R(~x, y) ⇐⇒ (∃z)P (~x, y, z), gdzie P jest relacją rekurencyjną, to wystarczy przyjąć jako definicję funkcji f już nam znaną konstrukcję: f (~x) w, J1 (µt [KP (~x, J1 (t), J2 (t))] t = J(y, z), aby zakończyć dowód.
5.6. Zadania
5.6. Zadania Ćwiczenie 5.1. Wyrazić definicję zbioru K i K0 za pomocą oznaczeń używanych w Twierdzeniu o numeracji. Ćwiczenie 5.2. Pokazać, że istnieją funkcje częściowo rekurencyjne nie posiadające rekurencyjnego rozszerzenia całkowitego. Ćwiczenie 5.3. Udowodnić, że zbiór indeksów funkcji częściowo rekurencyjnych takich, że dla każdego n ∈ N zachodzi {e}(2n) ↓ oraz {e}(2n + 1) ↑ nie jest rekurencyjny. Ćwiczenie 5.4. Wykazać, że jeżeli nieskończony zbiór liczb naturalnych nie zawiera nieskończonych podzbiorów rekurencyjnych to nie zawiera także nieskończonych zbiorów rekurencyjnie przeliczalnych.
71
Rozdział 6 Twierdzenia o punkcie stałym
6.1. Twierdzenia o punkcie stałym . . . . . . . . . . . . . . 6.2. Różne zastosowania . . . . . . . . . . . . . . . . . . . . 6.3. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . .
74 77 79
74
6. Twierdzenia o punkcie stałym Jako osobną część pracy przedstawimy grupę wyników, które pozwalają używać indeksów funkcji częściowo rekurencyjnych jako argumentów w innych funkcjach obliczalnych. Te nieco powikłane własności grają istotną rolę w wielu zastosowaniach i umożliwiają eleganckie uzasadnianie wielu twierdzeń.
6.1. Twierdzenia o punkcie stałym Jest oczywiste, że z zadanej funkcji częściowo rekurencyjnej poprzez ustalenie części zmiennych można zdefiniować nową funkcję. Okazuje się przy tym, iż funkcje częściowo rekurencyjne mają tą własność, iż w sposób efektywny można ustalać indeks tak uzyskanej funkcji. Twierdzenie 6.1. Dla każdych m, n ≥ 1 istnieje taka funkcja Snm : Nm+1 → N, która jest pierwotnie rekurencyjna PRIM i jednoznaczna oraz spełnia warunek: dla dowolnej funkcji ze zbioru PREC, o indeksie {i} takiej, że {i} : Nm+n → N zachodzi {i}(x1 , . . . , xn , xn+1 , . . . , xm+n ) w {Snm (i, x1 , . . . , xn )}(xn+1 , . . . , xm+n ). Dowód. Od tego momentu będziemy rozważali funkcje Tk0 wyłącznie specjalnej postaci: o wartościach będących wyłącznie 1 z co najwyżej jednym zerem. Że takie funkcje istnieją i mogą pełnić rolę przypisaną im w twierdzeniach z poprzedniej części wynika wprost z wzoru: 0 Tk (j, x1 , . . . , xk , z) = 0 Tk0 (j, x1 , . . . , xk , z) = ∧(∀t < z)Tk (j, x1 , . . . , xk , t) 6= 0, 1 w pozostałych przypadkach. Przez ustalenie w funkcji {i} zmiennych x1 , . . . , xn poprzez użycie liczb naturalnych c1 , . . . , cn otrzymujemy pewną funkcję rekurencyjną f . Zgodnie z Twierdzeniem 5.11 ma ona pewien indeks e, to znaczy jest równa 0 U (µz [Tm (e, xn+1 , . . . , xn+m , z)]). 0 Z kolei {i} może być zapisana jako U (µz [Tm+n (i, x1 , . . . , xn+m , z)]), po ustaleniu zmiennych otrzymamy więc nowy opis f jako 0 U (µz [Tm+n (i, c1 , . . . , cn , xn+1 , . . . , xn+m )]).
Korzystając z funkcji kodowania możemy z funkcji 0 Tm+n (i, c1 , . . . , cn , xn+1 , . . . , xn+m )
6.1. Twierdzenia o punkcie stałym utworzyć 0 0 T km (s, xn+1 , . . . , xn+m ) = Tm+n (i, c1 , . . . , cn , xn+1 , . . . , xn+m )
dla s = hi, c1 , . . . , cn i. Ponieważ dla dowolnych ustalonych c1 , . . . , cn i dla 0 0 dowolnych xn+1 , . . . , xn+m mamy oczywiste równości funkcji Tm+n i Tm 0 0 oraz funkcji Tm+n i T km stąd ostatecznie będziemy mieli równość pomię0 (e, x 0 dzy Tm n+1 , . . . , xn+m , z) oraz T km (s, xn+1 , . . . , xn+m ). Teraz ze sposo0 0 bu określenia Tm i T km wynika, że e = hi, x1 , . . . , xn i, co oznacza że na mocy opisanych przekształceń Snm staje się funkcją kodowania. Z takiego określenia Snm wynikają w sposób oczywisty jednoznaczność oraz pierwotna rekurencyjność tej funkcji. Z powyższego twierdzenia wynika kolejny ciekawy rezultat znany w wielu wariantach, a nazywany twierdzeniem o punkcie stałym. Tutaj podajemy ten wynik w stosunkowo prostej formie. Twierdzenie 6.2. Dla każdej jednoargumentowej funkcji rekurencyjnej f ∈ REC istnieje takie k ∈ N, że {k}(~x) w {f (k)}(~x) dla wszystkich ~x ∈ Nn . Dowód. Zdefiniujmy funkcje h : Nn+1 → N następująco: {{u}(u)}(~x) {u}(u) ↓, h(u, ~x) = niezdefiniowana w przeciwnym razie. Z Twierdzenia 5.11 o numeracji wynika, że h jest funkcją należącą do PREC, z czego z kolei wynika istnienie takiego indeksu i, że h(u, ~x) w {i}n+1 (u, ~x). Konsekwencją jest więc równość {{u}(u)}(~x) {u}(u) ↓, n+1 {i} (u, ~x) = niezdefiniowana w przeciwnym razie. Stosując powyżej podane Twierdzenie 6.1 otrzymamy {i}n+1 (u, ~x) = {S11 (i, u)}n (~x), a ponieważ S11 ∈ PRIM ⊂ PREC to istnieje indeks k taki, że S11 (i, u) w {k}2 (i, u). Stąd ponownie stosując to samo twierdzenie możemy zapisać S11 (i, u) w {k}2 (i, u) w {S11 (k, i)}(u). Tę ostatnią funkcję oznaczymy przez G, czyli G(u) w {S11 (k, i)}(u). Korzystając z powyższych oznaczeń i równości będziemy więc mieli: {i}n+1 (u, ~x) w {G(u)}n (~x).
75
76
6. Twierdzenia o punkcie stałym Weźmy teraz dowolną f ∈ PREC, f : N → N. Wówczas złożenie f i G też jest w PREC, a więc znów istnieje indeks p taki, że f (G)(z) w {p}(z)). W takim razie możemy zapisać: {f (G(z))}n (~x) w {{p}(z)}n (~x). Podstawiając za z = p uzyskamy {f (G(p))}n (~x) w {{p}(p)}n (~x) w h(p, ~x) w {i}n+1 (p, ~x) w {G(p)}n (~x). Wystarczy przyjąć za poszukiwane k liczbę równą G(p), aby spełnić tezę twierdzenia. Podobną treść zawiera poniższe twierdzenie będące inną wersją wyników tego typu, a nazywane czasem twierdzeniem o rekursji. Twierdzenie 6.3. Jeśli f : Nn+1 → N jest funkcją klasy PREC, to istnieje indeks e ∈ N taki, że dla wszystkich ~x ∈ Nn {e}n (~x) w f (e, ~x). Dowód. Weźmy dowolną funkcję h : N → N z klasy REC. Dla funkcji f (h(e), ~x), która jest częściowo rekurencyjna istnieje oczywiscie indeks a. Na mocy Twierdzenia 6.1 zachodzi {a}n+1 (e, ~x) w {S11 (a, e)}n (~x), czyli f (h(e), ~x) w {S11 (a, e)}n (~x). Ponieważ powyższe rozumowanie było prowadzone dla dowolnego h możemy więc przyjąć h(e) = S11 (e, e). Otrzymamy wówczas f (S11 (e, e), ~x) w {S11 (a, e)}n (~x). Przyjmując e = a mamy f (S11 (a, a), ~x) w {S11 (a, a)}n (~x), stąd poszukiwanym indeksem jest S11 (a, a).
6.2. Różne zastosowania
6.2. Różne zastosowania Pokażemy poniżej różne konteksty w których mogą pojawiać się związki z twierdzeniami bazującymi na własnościach stałopunktowych. Rozpocznijmy od rozważenia dowolnej relacji równoważności na liczbach naturalnych (oznaczonej przez x ≡ y). Wykażemy, że nie jest możliwe aby równocześnie zachodziły następujące warunki: — dla dowolnej funkcji częściowo rekurencyjnej f ∈ PREC (jednoargumentowej) istnieje funkcja całkowicie rekurencyjna g ∈ REC taka, że jeżeli f (x) ↓ to wówczas f (x) ≡ g(x); — istnieje funkcja rekurencyjna h ∈ REC, która nie posiada punktu stałego (względem relacji ≡): to znaczy dla każdego x ∈ N zachodzi x 6≡ h(x). Powyższe stwierdzenie można uzasadnić poprzez konstrukcję odwołującą się do funkcji diagonalizującej funkcję uniwersalną funkcji częściowo rekurencyjnych jednoargumentowych d(x) = {x}(x). Taka funkcja d ma z każdą funkcją częściowo rekurencyjną przynajmniej jeden punkt wspólny, to znaczy dla każdej f ∈ PREC istnieje taki x ∈ N, że albo f (x) = d(x), gdy zarówno f (x) ↓ i d(x) ↓ albo obie funkcji są w punkcie niezdefiniowane: f (x) ↑ i d(x) ↑. Załóżmy, że istnieje g, które spełnia pierwszy z powyżej wymienionych warunków rozszerzając funkcję d względem zadanej relacji ≡. Niech h będzie z kolei funkcją opisaną w warunku drugim, wówczas f (x) = h(g(x)) różni się zawsze od d: jeżeli bowiem d(x) = {x}(x) ↑ to f (x) ↓, jeżeli zaś d(x) ↓ to d(x) = g(x) 6≡ h(g(x)) = f (x), czyli d(x) 6= f (x). To jednak oznaczałoby, że funkcja d różni się - wbrew swojej definicji - od pewnej funkcji rekurencyjnej w każdym punkcie. Ten ciekawy związek własności stałopunktowych z możliwościami konstruowania rozszerzenia może być nawet wykorzystany do przedstawienia alternatywnego dowodu Twierdzenia o punkcie stałym. Nie wchodząc w szczegóły wystarczy określić relację x ≡ y w następujący sposób (∀z){x}(z) ' {y}(z), aby uzyskać zachodzenie pierwszego z warunków, co będzie implikowało negację drugiego z nich. Inna prosta a ważna obserwacja dotyczy liczby punktów stałych dla funkcji częściowo rekurencyjnych. Lemat 6.4. Każda funkcja częściowo rekurencyjna posiada nieskończenie wiele punktów stałych. Wyjaśnienie powyższego wyniku jest bardzo proste. Gdyby funkcja f posiadała tylko skończoną liczbę punktów stałych wówczas przez odpowiednią zmianę wartości funkcji f w tych punktach można byłoby wyeliminować wszystkie punkty stałe - co przeczyłoby Twierdzeniu 6.2. Warto jednak
77
78
6. Twierdzenia o punkcie stałym wskazać, że zbiór punktów stałych oprócz nieskończonej mocy posiada inną ważną własność: kolejne punkty stałe mogą być efektywnie wyznaczone. Oczywiście w naturalny sposób można przenieść wyniki dotyczące funkcji częściowo rekurencyjnych i ich własności stałopunktowych na zbiory przeliczalnie rekurencyjne. Przywołując znaną konwencję oznaczania dziedziny funkcji {e} ∈ PREC przez We otrzymujemy naturalny zapis twierdzenia o punkcie stałym dla zbiorów rekurencyjnie przeliczalnych. Lemat 6.5. Dla każdej funkcji rekurencyjnej (całkowitej) f ∈ REC istnieje punkt n ∈ N taki, że: Wn = Wf (n) . Powyższy rezultat można łatwo udowodnić w sposób wzorowany na rozważaniach zaprezentowanych na początku tego paragrafu. Podajmy jeszcze przykład ciekawego wykorzystania twierdzeń stałopunktowych. Rozważane przez nas Twierdzenie 5.21 można w prosty (choć nietrywialny) sposób uzasadnić przy pomocy własności stałopunktowych. Przypomnijmy, że twierdzenie to mówi, iż zbiór indeksowy nietrywialnego zbioru funkcji częściowo rekurencyjnych jest nierozstrzygalny. Przyjmijmy, że indeksy p, q w stosunku do zadanego zbioru indeksowego IF spełniają: p ∈ IF , q 6∈ IF . Przyjmijmy definicję funkcji h : N → N: ( q x ∈ IF , h(x) = p x 6∈ IF . Gdyby zbiór IF był zbiorem rekurencyjnym otrzymalibyśmy w powyższy sposób funkcję h, która byłaby rekurencyjna, zaś z drugiej strony nie posiadałaby punktu stałego. Ta sprzeczność wyklucza rekurencyjny charakter zbioru IF . Twierdzenie o rekursji znajduje inne zastosowanie w dowodzie twierdzenia o izomorfizmie funkcji uniwersalnych . Nazwijmy permutacją obliczalną każdą funkcję rekurencyjną i : N → N która wśród wartości zawiera wszystkie liczby naturalne bez powtórzeń (inaczej mówiąc jest to rekurencyjna bijekcja zbioru N w zbiór N). Twierdzenie 6.6. Niech f1 , f2 : N2 → N będą dwoma częściowo rekurencyjnymi funkcjami uniwersalnymi dla zbioru PREC. Wówczas istnieje taka permutacja obliczalna i : N → N, że spełniona jest następująca równość: i(f1 (x, y)) = f2 (i(x), i(y)). Powyższa własność pokazuje, że - w intuicyjnej interpretacji - wyniki pracy dwóch kompilatorów (traktowanych jako realizacje funkcji uniwersalnych) można w pewien mechaniczny sposób wzajemnie przekładać na siebie.
6.3. Zadania
79
Rozważmy jeszcze na prostym przykładzie związek jaki zachodzi pomiędzy konstruowaniem funkcji poprzez rekursję prostą a zagadnieniami stałopunktowymi. Niech funkcja f będzie zdefiniowana następująco: ( g(x) y = 0, f (x, y) = ˙ ˙ h(f (x, y −1), x, y −1) y 6= 0, gdzie g i h są zadanymi funkcjami częściowo rekurencyjnymi. Wprowadźmy nową funkcję F wzorując się na powyższym wzorze: ( g(x) y = 0, F (e, x, y) = ˙ ˙ h({e}(x, y −1), x, y −1) y 6= 0. Funkcja F jest funkcją częściowo rekurencyjną (co widać szczególnie jasno, gdy zamiast {e} zapiszemy odpowiednią funkcję uniwersalną z argumentem e), jednak należy zauważyć, że nie jest to definicja rekurencyjna. Na mocy Twierdzenia 6.3 istnieje taka liczba e0 ∈ N, że zachodzi: F (e0 , x, y) = {e0 }(x, y). To oznacza, że ( g(x) y = 0, {e0 }(x, y) = ˙ ˙ h({e0 }(x, y −1), x, y −1) y = 6 0, czyli funkcje f i {e0 } są identyczne (f w {e0 }). Jak widać, każdą funkcję zdefiniowaną przez rekursję prostą można traktować jako szczególnego rodzaju punkt stały.
6.3. Zadania Ćwiczenie 6.1. W wybranym języku programowania napisać program drukujący swój kod źródłowy. Ćwiczenie 6.2. Niech Wi , i ∈ N będzie numeracją zbiorów rekurencyjnie przeliczalnych. Udowodnić, że istnieje taki indeks k ∈ N, że Wk = {k}. Ćwiczenie 6.3. Przy takich samych założeniach jak w poprzednim zadaniu udowodnić, że istnieją takie liczby k, l, że Wk = {l} oraz Wl = {k}. Ćwiczenie 6.4. Udowodnić, że dla każdej funkcji f ∈ REC, f : Nn+1 → N istnieje funkcja g ∈ REC, g : Nn → N taka, że dla każdego ~x ∈ Nn oraz z ∈ N zachodzi: {f (g(~x), ~x)}(z) w {g(~x)}(z).
Rozdział 7 Redukcje i stopnie
7.1. 7.2. 7.3. 7.4. 7.5. 7.6.
Redukowalność rekurencyjna . . . . . . . . . . . . . Redukowalność zbiorów rekurencyjnie przeliczalnych Definicja i własności m-stopni . . . . . . . . . . . . Zbiory kreatywne i produktywne . . . . . . . . . . . Teoria stopni . . . . . . . . . . . . . . . . . . . . . . Zadania . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
82 84 86 91 95 99
82
7. Redukcje i stopnie
7.1. Redukowalność rekurencyjna Powróćmy do pojęcia definicji funkcji częściowo rekurencyjnych. Definiowane były one poprzez zbiór funkcji podstawowych (inicjalnych) oraz poprzez operacje generujące nowe funkcje: superpozycję, rekursję i minimalizację. Możemy zatem rozważyć naturalną kwestię: czy wynikowy zbiór funkcji zmieniłby się po rozszerzeniu zbioru funkcji podstawowych? W celu rozwiązania tego problemu wprowadźmy najpierw potrzebne nowe pojęcia. Definicja 7.1. Niech g : Nk → N będzie funkcją całkowitą. Zbiorem funkcji całkowicie rekurencyjnych w g będziemy nazywali najmniejszy zbiór funkcji F taki, że — funkcje S, Z, Ink , g ∈ F — F jest zamknięta ze względu na operacje złożenia, rekursji oraz minimalizacji efektywnej. Zbiorem funkcji rekurencyjnych w A ⊂ N nazywamy zbiór funkcji rekurencyjnych w KA (funkcji charakterystycznej A). Powyższą definicję można precyzyjnie opisać w języku algebraicznym w następujący sposób: F = [{g, Z, S, Ink : k, n ∈ N, k ≤ n}, {µr , r , c m : m ∈ N, m ≥ 1}]. Dodajmy ponadto, że zbiór B będziemy nazywali rekurencyjnym w A, wtedy i tylko wtedy, gdy funkcja charakterystyczna KB jest całkowicie rekurencyjna w KA . Definicję tę w oczywisty sposób można rozszerzyć na przypadek zbiorów funkcji częściowych. Definicja 7.2. Niech g : Nk → N będzie dowolną funkcją (całkowitą lub częściową). Zbiorem funkcji częściowo rekurencyjnych w g będziemy nazywali najmniejszy zbiór funkcji F taki, że — funkcje S, Z, Ink , g ∈ F — F jest zamknięta ze względu na operacje złożenia, rekursji oraz minimalizacji. W tym przypadku algebraiczny zapis modyfikuje tylko rodzaj minimalizacji: F = [{g, Z, S, Ink : k, n ∈ N, k ≤ n}, {µ, r , c m : m ∈ N, m ≥ 1}]. Wypada zwrócić uwagę, że dla funkcji g ∈ REC (lub odpowiednio g ∈ PREC) wynikowe, nowoutworzone zbiory F będą identyczne z omawianymi wcześniej zbiorami REC (lub PREC).
7.1. Redukowalność rekurencyjna Możemy teraz porównać ze sobą funkcje naturalne ze względu na stopnień ich obliczalności (czy patrząc z innej strony nieobliczalności). Należy zwrócić uwagę, że nie ograniczamy się teraz do funkcji częściowo rekurencyjnych, ale możemy odwoływać się do zupełnie dowolnych funkcji o argumentach i wynikach naturalnych. Definicja 7.3. Mówimy, że f : Nk → N jest redukowalna w sensie Turinga (T-redukowalna) do g : Nm → N i zapisujemy to jako f ≤T g, wtedy i tylko wtedy, gdy f jest całkowicie rekurencyjna w g. Mówimy, że f : Nk → N jest równoważna w sensie Turinga (T-równoważna) funkcji g : Nm → N i zapisujemy to jako f ≡T g, wtedy i tylko wtedy, gdy f ≤T g i g ≤T f . Analogiczne rozumowanie możemy zastosować do zbiorów otrzymując w wyniku następujące definicje. Definicja 7.4. Mówimy, że zbiór A jest redukowalny w sensie Turinga (T-redukowalny) do B (oznaczenie A ≤T B), wtedy i tylko wtedy, gdy KA ≤T KB . Mówimy, że zbiór A jest równoważny w sensie Turinga (T-równoważny) B i zapisujemy to jako A ≡T B, wtedy i tylko wtedy, gdy A ≤T B i B ≤T A. Łatwo można okazać, iż definicja relacji ≤T gwarantuje, że jest ona relacją porządku częściowego. Warto także zapamiętać, że zapis A ≤T B oznacza rekurencyjność zbioru A w B. Teraz możemy użyć powyżej wprowadzonych pojęć względnej obliczalności (nieobliczalności) dla całych klas funkcji i zbiorów. Aby rozumowanie mogło przebiegać równolegle dla zbiorów i funkcji ograniczymy klasy rozpatrywanych funkcji do tych, które zawierają wyłącznie funkcje całkowite (w dotychczasowym znaczeniu funkcji wszędzie zdefiniowanych). Definicja 7.5. Stopniami Turinga (T-stopniami) nazywamy klasy równoważności całkowitych funkcji naturalnych (lub zbiorów) ze względu na relację T-równoważności. Wyjaśnimy ponadto, że redukcję A ≤T B można rozumieć (szczególnie w kontekście bardziej mechanicznych modeli obliczeń takich jak maszyna Turinga) jako procedurę testowania przynależności do zbioru A, która to procedura wykorzystuje wyrocznię odpowiadającą nieomylnie na pytania o przynależność elementów do zbioru B. Dlatego czasem zagadnienia redukowalności określa się także jako problemy obliczeń z wyroczniami.
83
84
7. Redukcje i stopnie
7.2. Redukowalność zbiorów rekurencyjnie przeliczalnych Wprowadzimy teraz nazwy dla podstawowych stopni Turinga zbiorów liczb naturalnych. Definicja 7.6. Przez T-stopień 0 oznaczymy stopień Turinga do którego należy dowolny zbiór rekurencyjny. Przez T-stopień 00 oznaczymy stopień Turinga do którego należy zbiór K. Łatwo zauważyć, że relacja T-redukowalności może być rozszerzona z dziedziny zbiorów (lub funkcji) do klas równoważności tych zbiorów (czy funkcji). W tym przypadku będziemy używali tego samego oznaczenia i mówili, że porządek wśród klas równoważności został indukowany przez relację ≤T . Lemat 7.7. T-stopień 0 jest najmniejszym T-stopniem ze względu na częściowy porządek indukowany przez relację ≤T w klasie T-stopni. Dowód. Załóżmy, że istnieje T-stopień mniejszy od 0. To oznacza, że istniałyby zbiory do których nie da się zredukować zbiorów rekurencyjnych. Wówczas funkcje rekurencyjne nie znajdowałyby się klasie F funkcji rekurencyjnych w KA , gdzie A byłby reprezentantem stopnia mniejszego od 0. Ponieważ z samej definicji klasy F wynika, że zawiera ona wszystkie funkcje rekurencyjne, otrzymaliśmy sprzeczność. Twierdzenie 7.8. Niech A będzie dowolnym zbiorem rekurencyjnie przeliczalnym. Wówczas A ≤T K. Dowód. Udowodnimy, że dla dowolnego zadanego zbioru rekurencyjnie przeliczalnego istnieje rekurencyjna funkcja f taka, że x ∈ A ⇐⇒ f (x) ∈ K. Dodajmy, iż z definicji zbioru K prawa część równoważności odpowiada stwierdzeniu, że f (x) należy do dziedziny funkcji o indeksie f (x). Ponieważ A jest zbiorem rekurencyjnie przeliczalnym, to jest dziedziną pewnej funkcji fA ∈ PREC. Zdefiniujmy teraz g(x, y) = fA (x)+y. Dziedziną g jest oczywiście A×N. Przyjmijmy, że funkcja g ma indeks e w zbiorze dwuargumentowych funkcji częściowo rekurencyjnych. Na mocy Twierdzenia 6.1 istnieje taka funkcja pierwotnie rekurencyjna S11 , że zachodzi równość: {e}(x, y) w {S11 (e, x)}(y). Oznaczmy przez f (x) funkcję S11 (e, x), na mocy takiej definicji f jest całkowitą funkcją rekurencyjną. Zauważmy, że f będzie spełniać warunki: — jeśli x ∈ A to {f (x)}(y) jest zdefiniowana dla wszystkich y ∈ N; — jeśli x 6∈ A to {f (x)}(y) jest niezdefiniowana dla wszystkich y ∈ N.
7.2. Redukowalność zbiorów rekurencyjnie przeliczalnych Oznaczmy tak jak dotychczas przez Wn dziedzinę funkcji {n}. Możemy zapisać więc następującą równość: Wówczas możemy zapisać N x ∈ A, Wf (x) = ∅ x 6∈ A. Mamy teraz dwa ciągi implikacji: x ∈ A ⇒ Wf (x) = N ⇒ f (x) ∈ Wf (x) ⇒ f (x) ∈ K oraz f (x) ∈ K ⇒ f (x) ∈ Wf (x) ⇒ Wf (x) 6= ∅ ⇒ x ∈ A W ten sposób pokazaliśmy, iż x ∈ A ⇐⇒ f (x) ∈ K. Wystarczy teraz przyjąć KA (x) = KK (f (x)), aby otrzymać wniosek, że funkcja charakterystyczna KA zbioru A jest rekurencyjna w KK , czyli A ≤T K. Powyższy wynik można wyrazić jako stwierdzenie mówiące, że każdy zbiór rekurencyjnie przeliczalny jest rekurencyjny w K. Naturalnym pytaniem, które pojawia się w tym momencie rozważań jest kwestia zależności odwrotnej: czy zbiór K da się zredukować do każdego zbioru rekurencyjnie przeliczalnego. Tak sformułowane zagadnienie prowadzi nas do użytecznej definicji. Definicja 7.9. Zbiór A ⊂ N jest T-zupełny wtedy i tylko wtedy, gdy A jest rekurencyjnie przeliczalny i należy do stopnia 00 . Ponieważ wiemy już, że każdy zbiór A z 00 można T-zredukować do zbioru K, to powyższa definicja jest równoważna faktowi, iż A jest rekurencyjnie przeliczalny oraz K ≤T A. Wprowadzimy teraz kolejne pojęcie będące adaptacją na gruncie teorii rekurencyjności względnej znanego nam już wcześniej terminu. Definicja 7.10. Zbiór A jest rekurencyjnie przeliczalny w B jeżeli A = ∅ lub istnieje funkcja fA : N → N taka, że fA (N) = A oraz fA jest rekurencyjna w KB . Podajmy teraz lemat związany z wprowadzonymi powyżej pojęciami. Lemat 7.11. Jeżeli zbiory A i B są rekurencyjnie przeliczalne, wówczas A ≤T B wtedy i tylko wtedy, gdy zarówno A i N − A są rekurencyjnie przeliczalne w B.
85
86
7. Redukcje i stopnie Dowód. Jeżeli A jest rekurencyjny w B, to oznacza, że funkcje charakterystyczne KA , KN−A są rekurencyjne w KB . Na podstawie tych funkcji łatwo zbudować funkcje fA , fN−A o przeciwdziedzinach odpowiednio równych A i N − A, które będą rekurencyjne w KB . Wystarczy w tym celu zastosować postępowanie z dowodu Twierdzenia 4.9. Dowód tego samego Twierdzenia 4.9 można użyć w przypadku, gdy fA , fN−A o przeciwdziedzinach równych A i N − A są rekurencyjne w KB , aby zdefiniować funkcję charakterystyczną KA rekurencyjną w KB .
7.3. Definicja i własności m-stopni Poprowadzimy teraz dalsze rozważania relatywizujące rekurencyjność używając nieco innego podejścia. Wprowadzimy mianowicie taki rodzaj redukcji, który w sposób bardziej szczegółowy analizuje zależność pomiędzy zbiorami. Definicja 7.12. Zbiór A nazywamy m-redukowalnym do zbioru B (oznaczenie A ≤m B) wtedy i tylko wtedy, gdy istnieje taka funkcja rekurencyjna f : N → N, że spełniony jest poniższy warunek: (∀x)[x ∈ A ⇐⇒ f (x) ∈ B]. Zbiory A i B nazywamy m-równoważnymi (oznaczenie A ≡m B) wtedy i tylko wtedy, gdy zarówno A ≤m B jak i B ≤m A. Możemy od razu udowodnić prostą zależność, pokazującą iż m-redukowalność jest podporządkiem (uszczegółowieniem) T-redukowalności. Lemat 7.13. Dla dowolnych zbiorów A, B ⊂ N spełniony jest następujący warunek: jeżeli zachodzi A ≤m B, to zachodzi A ≤T B. Dowód. Skoro mamy zależność A ≤m B to z definicji m-redukowalności wynika, że istnieje funkcja rekurencyjna f taka, że ∀x(x ∈ A ⇐⇒ f (x) ∈ B). Jeżeli teraz KB jest funkcją charakterystyczną zbioru B, to wystarczy przyjąć KA (x) = KB (f (x)), aby uzyskać rekurencyjność A w B. Dodajmy, że łatwo można wykazać, iż warunkami równoważnymi do warunku podanego w definicji m-redukowalności są: — A = f −1 (B), — f (A) ⊂ B ∧ f (N − A) ⊂ N − B.
7.3. Definicja i własności m-stopni Ponieważ (podobnie jak dla T-redukowalności) m-redukowalność jest relacją zwrotną i przechodnią, prosta obserwacja prowadzi do wniosku, że m-równoważność jest relacją równoważności. Dlatego znowu możemy wyznaczyć podział zbiorów liczb naturalnych na klasy równoważności. Definicja 7.14. Klasę zbiorów będziemy nazywali m-stopniem wtedy i tylko wtedy, gdy ta klasa jest klasą równoważności zbiorów liczb naturalnych ze względu na relację ≡m . Analogicznie jak w przypadku T-stopni wprowadzimy oznaczenia wyróżnionych m-stopni. Przez 0m oznaczymy m-stopień zbiorów rekurencyjnych z wykluczeniem zbioru pustego i zbioru wszystkich liczb naturalnych. Przez 00m oznaczymy m-stopień zbioru K. Można teraz zauważyć, że w przypadku m-stopni mamy trzy stopnie, które zawierają zbiory rekurencyjne: {∅}, {N}, 0m . Dwa pierwsze są mniejsze od 0m i wzajemnie nieporównywalne. Zbadamy teraz czy zbiory rekurencyjnie przeliczalne mogą się znajdować w wyższych niż 00m . Twierdzenie 7.15. Zbiór A jest rekurencyjnie przeliczalny, wtedy i tylko wtedy, gdy A ≤m K. Dowód. Jeżeli A jest zbiorem rekurencyjnie przeliczalnym, to funkcja f zadana jak w dowodzie Twierdzenia 7.8 spełnia warunek z definicji pojęcia m-redukowalności, gdy rozważamy redukcję do zbioru K, czyli A ≤m K. Jeżeli natomiast A ≤m K to mamy zagwarantowane istnienie funkcji rekurencyjnej f takiej, że x ∈ A ⇐⇒ f (x) ∈ K. Ponieważ K jest zbiorem rekurencyjnie przeliczalnym, to istnieje funkcja częściowo rekurencyjna g taka, że zbiór K jest jej dziedziną. Oczywiście funkcja g(f (x)) jest także częściowo rekurencyjna i jej dziedziną jest zbiór A co oznacza, że zbiór A jest rekurencyjnie przeliczalny. Przeniesiemy teraz używane wcześniej pojęcie zupełności do obecnych rozważań związanych z m-stopniami. Definicja 7.16. Zbiór A jest m-zupełny wtedy i tylko wtedy, gdy A jest rekurencyjnie przeliczalny oraz K ≤m A (czyli A ∈ 00m ). Pamiętamy z wcześniejszych rozważań, że każdy zbiór rekurencyjny jest zarazem zbiorem rekurencyjnie przeliczalnym. To oznacza, że przynajmniej częściowo wskazaliśmy m-stopnie, które zawierają zbiory rekurencyjnie przeliczalne. Skoncentrujemy się teraz na następującym problemie: czy istnieją takie zbiory rekurencyjnie przeliczalne, które nie są zbiorami rekurencyjnymi ani nie są zbiorami m-zupełnymi. Twierdzenie 7.17. Jeżeli A jest zbiorem m-zupełnym to zbiór N − A zawiera nieskończony podzbiór rekurencyjnie przeliczalny.
87
88
7. Redukcje i stopnie Dowód. Rozważymy najpierw przypadek zbioru K, który jest oczywiście m-zupełny. Załóżmy, że Wx ⊂ N − K, wówczas dla x ∈ Wx mielibyśmy z definicji zbioru K własność x ∈ K, zaś z zawierania Wx ∈ N − K otrzymalibyśmy x ∈ N − K, co daje sprzeczność. Stąd x 6∈ Wx , co równocześnie oznacza x 6∈ K. Tak więc otrzymaliśmy implikację Wx ⊂ N − K ⇒ x ∈ (N − K) − Wx . Powyższa implikacja mówi nam, że indeks rekurencyjnie przeliczalnego podzbioru B zbioru N − K (to jest indeks funkcji częściowo rekurencyjnej, której dziedziną jest B) należy do N − K, ale nie należy do B. Korzystając ze wspomnianej zależności możemy zdefiniować następującą funkcję rekurencyjną w której kolejne en są różne: f (0) = e0 ⇐⇒ We0 = ∅, f (n + 1) = en+1 ⇐⇒ Wen+1 = {f (0), . . . , f (n)}, której przeciwdziedzina jest nieskończona i nie zawiera się w K. Teraz możemy przejść do rozważenia przypadku dowolnego zbioru m-zupełnego A. Oczywiście mamy x ∈ K ⇐⇒ g(x) ∈ A dla pewnego g ∈ REC. Zdefiniujmy teraz kolejną funkcję rekurencyjną następująco: h(0) = g(e0 ) ⇐⇒ We0 = ∅, h(n + 1) = g(en+1 ) ⇐⇒ Wen+1 = g −1 ({h(0), . . . , h(n)}). Ponieważ We0 ⊂ N − K to zachodzi należenie elementu e0 ∈ N − K, z czego wynika, iż g(e0 ) ∈ N − A. Dalej możemy zauważyć, iż skoro Wen+1 = g −1 ({h(0), . . . , h(n)}) to wiedząc, że h(0), . . . , h(n) 6∈ A wnioskujemy {h(0), . . . , h(n)} ⊂ N − A czyli g −1 ({h(0), . . . , h(n)} ⊂ N − K. Dlatego otrzymujemy, że en+1 ∈ N − K − g −1 ({h(0), . . . , h(n)}, a stąd wynika, że g(en+1 ) ∈ N − A oraz g(en+1 ) 6∈ {h(0), . . . , h(n)}. Na mocy powyższych rozważań przeciwdziedzina h jest nieskończona. Mamy także pewność jej zawierania w zbiorze N − A, a ponadto w oczywisty sposób jej rekurencyjną przeliczalność. Rozważmy teraz klasę zbiorów rekurencyjnie przeliczalnych zdefiniowanych w sposób, który ma eksponować własności przeciwne do wykorzystanych w powyższym twierdzeniu. W ten sposób będziemy mogli się zbliżyć do konstrukcji zbiorów rekurencyjnie przeliczalnych różnych od zbiorów m-zupełnych. Definicja 7.18. Zbiór A ⊂ N nazywamy zbiorem prostym wtedy i tylko wtedy, gdy A jest zbiorem rekurencyjnie przeliczalnym i jego dopełnienie N− A jest nieskończone i nie zawiera nieskończonych podzbiorów rekurencyjnie przeliczalnych.
7.3. Definicja i własności m-stopni Zauważmy, że sama definicja gwarantuje nam pozytywną odpowiedź na nasz problem: mianowicie zbiory proste stanowią takie zbiory rekurencyjnie przeliczalne, który nie są rekurencyjne ani m-zupełne. Pozostaje jednak problem, czy definicja jest niesprzeczna (czyli czy takie zbiory istnieją). Lemat 7.19. Istnieje zbiór prosty. Dowód. Podamy poniżej opis konstrukcji zbioru prostego A. Niech We oznaczają kolejne zbiory rekurencyjnie przeliczalne (przy czym przebiegając indeksem e przez zbiór liczb naturalnych N przeliczamy wszystkie zbiory rekurencyjnie przeliczalne). Niech teraz B ⊂ N × N będzie zdefiniowany następująco: B = {(i, x) : x ∈ Wi ∧ (x > 2i)}. Zbiór par B (czy inaczej mówiąc relacja B ) jest także rekurencyjnie przeliczalny jako część wspólna zbioru W = {(i, x) : x ∈ Wi } oraz zbioru rekurencyjnego {(i, x) : x > 2i}, przy czy zbiór W jest dziedziną funkcji uniwersalnej g(e, x) = {e}(x), czyli W jest także rekurencyjnie przeliczalny. Niech teraz C ⊂ B oznacza podzbiór (łatwy do uzyskania) w którym umieszczamy wybrane pary z B w taki sposób, aby w C nie było dwóch par (i1 , x1 ) i (i2 , x2 ) takich, że i1 = i2 . Zbiór C jest także rekurencyjnie przeliczalny. Ostatni krok konstrukcji polega na przyjęciu za A zbioru drugich składowych par z C: A = {x : (i, x) ∈ C}. Łatwo zauważyć, że A ma niepustą część wspólną z każdym zbiorem We - jest to x ∈ A pochodzące z pary (e, x) zbioru C ⊂ B. To oznacza, że żaden nieskończony zbiór We nie jest zawarty w N − A. Z drugiej strony A ma nieskończone dopełnienie, albowiem co najwyżej n + 1 liczb ze zbioru {0, 1, . . . , 2n} mogło być włączonych do A. Wynika to stąd, że zbiory Wi , i > n nie mogą dać elementów zbioru {0, . . . , 2n}, czyli tylko zbiory W0 , . . . , Wn mogą być podstawą do włączenia liczb z {0, . . . , 2n} do A i ponadto każdy z tych zbiorów daje co najwyżej jeden element do A. To oznacza, iż z każdego zbioru {0, 1, . . . , 2n} co najmniej n liczb należy do N − A. A te oba warunki gwarantują nam, że zbiór A jest prosty. Dodajmy na marginesie, że istnienia zbioru prostego można dowodzić używając ważnej techniki nazywanej metodą priorytetu. Nie wnikając w szczegóły tej techniki wskażemy tylko na zapis warunków (pozytywnych i negatywnych), określających pożądane własności zbioru A: Pe : (|We | = ∞ ⇒ We ∩ A 6= ∅), Ne : (|A ∩ {0, 1, . . . , 2e}| < e).
89
90
7. Redukcje i stopnie Określając ciąg własności P0 > N0 > P1 > N1 > . . . z tak przyznanymi im priorytetami spełniania kolejnych warunków, aby nie utracić zachodzenia własności poprzednio spełnionych możemy skonstruować zbiór prosty. Pokażemy teraz ciekawy przykład zbioru prostego, ważny ze względu na związane z nim pojęcia. Najpierw krótko wprowadźmy pojęcia liczb losowych. Za opis liczby naturalnej uznamy najmniejszy indeks funkcji częściowo rekurencyjnej wyliczającej tę liczbę. Dlatego miarą złożoności K dla liczby x będziemy nazywali funkcję K(x) = mine [{e}(0) = x]. Przy takiej terminologii liczbę będziemy nazywali losową, jeżeli jej najkrótszy opis nie jest od niej mniejszy. Definicja 7.20. Liczbę x ∈ N nazywamy losową wtedy i tylko wtedy, gdy x ≤ K(x). Bardzo interesującym faktem okazuje się twierdzenie, które mówi, iż zbiór liczb nielosowych (czyli liczb, które nie są losowe w świetle powyższej definicji) jest zbiorem prostym. Twierdzenie 7.21. Zbiór {x : x > K(x)} liczb nielosowych jest prosty. Dowód. Oznaczmy przez A zbiór określony jak w tezie twierdzenia. Zauważmy, że A jest rekurencyjnie przeliczalny, bo x ∈ A ⇐⇒ (∃e < x)[{e}(0) = x]. Pokażemy teraz, że zbiór N − A jest nieskończony, inaczej mówiąc, że zbiór liczb losowych jest nieskończony. Wybierzmy dowolne n ∈ N. Rozważmy teraz ciąg {0}(0), {1}(0), . . . , {n}(0). Dla każdego x nie znajdującego się wśród wartości tego ciągu mamy K(x) ≥ n + 1. Niech x0 będzie najmniejszą spośród liczb nie znajdujących się w powyższym ciągu, zawsze będziemy mieli spełniony warunek x0 ≤ n + 1. Stąd mamy x0 ≤ n + 1 ≤ K(x0 ). Czyli dla każdego n istnieje liczba losowa ze złożonością co najmniej n + 1, stąd zbiór N − A nieskończony. Pozostaje nam pokazać, iż zbiór N − A nie zawiera nieskończonych podzbiorów rekurencyjnie przeliczalnych. Inaczej mówiąc będzie musieli dowieść, że nie istnieją rekurencyjnie przeliczalne zbiory liczb losowych. Wykorzystamy w tym celu metodę nie wprost. Załóżmy, że B jest pewnym rekurencyjnie przeliczalnym zbiorem liczb losowych. Niech h będzie funkcją rekurencyjną taką, że {h(e)}(0) = minx [(x ∈ B) ∧ x > e]. Na mocy Twierdzenia 6.2 istnieje jednak takie n, iż {n}(z) = {h(n)}(z) dla dowolnego z ∈ N. Stąd mamy z jednej strony {n}(0) = {h(n)}(0) jest liczbą losową (bo należy do zbioru B), czyli {n}(0) musi być mniejsze lub równe n. Z drugiej strony z samej definicji {h(e)}(0) jest większe od e, czyli w szczególności {n}(0) = {h(n)}(0) > n.
7.4. Zbiory kreatywne i produktywne W ten sposób otrzymaliśmy sprzeczność, co dowodzi, że rekurencyjnie przeliczalne zbiory liczb losowych nie istnieją. Wykazane powyżej własności gwarantują, że zbiór A jest prosty.
7.4. Zbiory kreatywne i produktywne Rozważymy z kolei pewne nowe typy zbiorów rekurencyjnie przeliczalnych i ich podstawowe własności. Punktem wyjścia będzie próba analizowania cech decydujących, że zbiór A nie jest rekurencyjny. Jak wiadomo N − A musi być wówczas zbiorem, który nie jest rekurencyjnie przeliczalny. Ten ostatni warunek możemy wyrazić wyrażeniem (∀x)(∃y)[y ∈ A ⇐⇒ y ∈ Wx ]. Ogólnie rzecz biorąc, rozważymy sposoby wyznaczania odpowiedniego y względem ustalonego x (które nie muszą być zadane efektywnie, to znaczy poprzez funkcję rekurencyjną). Definicja 7.22. Zbiór A ⊂ N nazywamy całkowicie produktywnym, wtedy i tylko wtedy, gdy istnieje funkcja rekurencyjna f : N → N taka, że (∀x)f (x) 6∈ A ⇐⇒ f (x) ∈ Wx . Zbiór B ⊂ N jest nazywany efektywnie nierekurencyjnym, jeżeli B jest rekurencyjnie przeliczalny i równocześnie zbiór N − B jest całkowicie produktywny. Jak widać, całkowita produktywność zbioru A gwarantuje, że dla każdego indeksu x zbioru rekurencyjnie przeliczalnego Wx potrafimy podać wartość f (x), która rozróżnia zbiory A i Wx . Lemat 7.23. Zbiór K jest efektywnie nierekurencyjny. Dowód. Oczywiście K jest rekurencyjnie przeliczalny, zaś z definicji x ∈ K ⇐⇒ x ∈ Wx czyli mamy spełniony prosty warunek I11 (x) 6∈ N − K ⇐⇒ I11 (x) ∈ Wx . Stąd wynika, że zbiór N − K jest całkowicie produktywny. Okazuje się teraz, iż ten nowy sposób analizowania nieobliczalności prowadzi do znanego nam już pojęcia. Twierdzenie 7.24. Zbiór A ⊂ N jest efektywnie nierekurencyjny wtedy i tylko wtedy, gdy zbiór A jest zbiorem m-zupełnym. Dowód. Pokażemy najpierw, że efektywna nierekurencyjność pociąga m-zupełność. Skoro zbiór A jest efektywnie nierekurencyjny, to N − A jest całkowicie produktywny. Stąd istnieje funkcja rekurencyjna taka, że ∀x[f (x) ∈ A ⇐⇒ f (x) 6∈ N − A ⇐⇒ f (x) ∈ Wx ].
91
92
7. Redukcje i stopnie Zdefiniujmy rekurencyjną funkcję g : N → N jako funkcję, której wartości potraktowane jako indeksy spełniają: N x ∈ K, Wg(x) = ∅ x 6∈ K. Uzasadnimy teraz, że g ∈ REC. Rozpocznijmy od wprowadzenia funkcji: ( y x ∈ K, G(x, y) = ↑ x 6∈ K, jest to funkcja klasy PREC i posiada pewien indeks e. Możemy więc zapisać korzystając z Twierdzenia 6.1: G(x, y) w {e}2 (x, y) w {S11 (e, x)}(y). Jeżeli przyjmiemy g(x) = S11 (e, x) to otrzymamy g ∈ REC oraz {g(x)}(y) = y dla x ∈ K i {g(x)}(y) ↑ dla x 6∈ K co spełnia opis nałożony na dziedziny Wg(x) . Wówczas otrzymujemy, że jeśli x ∈ K to Wg(x) = N, czyli w szczególności spełniony jest warunek przynależności f (g(x)) ∈ Wg(x) . Na mocy całkowitej produktywności N − A ten ostatni warunek jest równoważny f (g(x)) ∈ A. Z kolei warunek f (g(x)) ∈ A pociąga f (g(x)) ∈ Wg(x) co oznacza, że Wg(x) 6= ∅, co z definicji funkcji g implikuje x ∈ K. Ostatecznie otrzymaliśmy równoważność x ∈ K ⇐⇒ h(x) ∈ A, która zachodzi dla h(x) = f (g(x)), przy czym h ∈ REC co dowodzi m-zupełności A. Przyjmijmy teraz m-zupełność A. Mamy wówczas x ∈ K ⇐⇒ f (x) ∈ A dla pewnej funkcji f ∈ REC. Zdefiniujemy teraz pewną funkcję g 0 ∈ REC określoną warunkiem z ∈ Wg0 (x) ⇐⇒ f (z) ∈ Wx . Rekurencyjność g 0 można uzasadnić podobnie jak powyżej odwołując się do Twierdzenia 6.1 oraz modyfikując funkcję {x}(f (z)). Dla h0 określonego jako złożenie f i g 0 otrzymamy następujący ciąg równoważności: h0 (x) 6∈ N − A ⇐⇒ h0 (x) ∈ A ⇐⇒ g 0 (x) ∈ K ⇐⇒ g 0 (x) ∈ Wg0 (x) ⇐⇒ f (g 0 (x)) ∈ Wx ⇐⇒ h0 (x) ∈ Wx . W ten sposób pokazaliśmy, że N − A jest całkowicie produktywny, czyli w konsekwencji A jest efektywnie nierekurencyjny. Inny sposób zagwarantowania nierekurencyjności wiąże się z zachodzeniem własności: (∀x)[Wx ⊂ N − A ⇒ ∃y(y ∈ (N − A) − Wx )]. Także i ten warunek zbadamy w kontekście dodania wymagania obliczalności (czyli rekurencyjności) metody znajdowania odpowiednich y.
7.4. Zbiory kreatywne i produktywne
93
Definicja 7.25. Zbiór A ⊂ N będziemy nazywali produktywnym, jeżeli istnieje funkcja częściowo rekurencyjna f taka, że ∀x[Wx ⊂ A ⇒ [f (x) ↓ ∧f (x) ∈ A − Wx ]. Zbiór A nazywamy kreatywnym, jeżeli A jest rekurencyjnie przeliczalny i jego dopełnienie jest produktywne. Lemat 7.26. Zbiór K jest kreatywny. Dowód. Załóżmy, że Wx ⊂ N − K. Jeżeli x byłby w K, to stąd wynika, że x ∈ Wx i na mocy założenia otrzymamy x ∈ N − K. Sprzeczność, którą otrzymaliśmy prowadzi do wniosku, że Wx ⊂ N−K implikuje x 6∈ K. Z kolei warunek x 6∈ K pociąga x 6∈ Wx . W takim razie możemy zapisać implikację ∀x[Wx ⊂ N − K ⇒ I11 (x) ∈ (N − K) − Wx ] co dowodzi produktywności N − K.
Jak poprzednio udaje się powiązać niedawno wprowadzone pojęcie kreatywności z m-zupełnością. Twierdzenie 7.27. Zbiór jest kreatywny wtedy i tylko wtedy, gdy jest zbiorem m-zupełnym. Dowód. Niech zbiór A będzie zbiorem m-zupełnym. Wtedy istnieje taka funkcja g ∈ REC, że x ∈ K ⇐⇒ g(x) ∈ A. Określmy h w sposób podobny do definicji w poprzednim dowodzie: z ∈ Wh(x) ⇐⇒ g(z) ∈ Wx . Korzystając z dwuargumentowej funkcji uniwersalnej możemy wprowadzić H ∈ PREC jako H(x, z) = {x}(z). Wówczas przyjmując e jako indeks H można zdefiniować: h(x) = S11 (e, x), co oznacza, że h ∈ REC oraz zachodzą równoważności: z ∈ Wh(x) ⇐⇒ {h(x)}(z) ↓ ⇐⇒ H(x, z) ↓
⇐⇒ {S11 (e, x)}(z) ↓ ⇐⇒ {e}(x, z) ↓ ⇐⇒ {x}(g(z) ↓ ⇐⇒ g(z) ∈ Wx .
Mamy więc Wx ⊂ N−A ⇒ Wh(x) ⊂ N−K. Rozumowanie przeniesione z poprzedniego lematu daje nam na podstawie powyższego zawierania wniosek h(x) ∈ (N − K) − Wh(x) . Na podstawie własności funkcji g i h otrzymamy h(x) ∈ (N − K) − Wh(x) ⇒ g(h(x)) ∈ (N − A) − Wx ,
94
7. Redukcje i stopnie co kończy tę część dowodu pokazując produktywność N − A poprzez funkcję g(h(x)). Teraz przyjmiemy kreatywność zbioru A. Istnieje więc f ∈ PREC taka, że Wx ⊂ N − A ⇒ f (x) ∈ (N − A) − Wx . Poszukiwać będziemy takiej funkcji rekurencyjnej h ∈ REC, że z ∈ K ⇐⇒ h(z) ∈ A. Zdefiniujmy funkcję g tak, aby zachodził warunek {f (g(z))} z ∈ K, Wg(z) = ∅ z 6∈ K. Mamy teraz następujący ciąg implikacji: z ∈ N − K ⇒ Wg(z) = ∅ ⇒ Wg(z) ⊂ N − A ⇒ f (g(z)) ∈ N − A. Jeśli jednak przyjmiemy f (g(z)) ∈ N − A to oczywiście jako konsekwencję otrzymamy {f (g(z))} ⊂ N − A. Jeżeli zachodziłaby równość Wg(z) = {f (g(z))} to z kreatywności zbioru A, otrzymalibyśmy f (g(z)) ∈ (N − A) − {f (g(z))} czyli sprzeczność. To prowadzi do wniosku, że Wg(z) = ∅ co z kolei pociąga z ∈ N − K. Podsumowując otrzymujemy f (g(z)) ∈ N − A ⇒ z ∈ N − K. Tak więc wystarczy przyjąć h(x) = f (g(z)) aby dowieść m-zupełności zbioru A, pod warunkiem, że odpowiednie g istnieje oraz g ∈ REC i h ∈ REC. Rozpocznijmy tę część dowodu od zdefiniowania ( 1/(K6= (y, f (x))) z ∈ K, F (z, x, y) = ↑ z 6∈ K. Taka funkcja F należy do PREC, a ponadto dla x ∈ K funkcja F jest zdefiniowana tylko dla argumentów postaci (x, f (x), f (x)). Stosując Twierdzenie 6.1 otrzymamy istnienie takiego H ∈ REC, że {H(z, x)}(y) = F (z, x, y). Jako konsekwencja twierdzenia o punkcie stałym (a dokładnie jego wariantu przytoczonego w Ćwiczeniu 6.4) istnieje funkcja g : N → N, która należy do zbioru REC taka, że {H(z, g(z))} w {g(z)}. Wstawiając x = g(z) otrzymamy następujące równości: {g(z)}(y) w {H(z, g(z))}(y) w F (z, g(z), y). Stąd zachodzi oczekiwany związek: ( {f (g(z))} z ∈ K, Wg(z) = ∅ z∈ 6 K.
7.5. Teoria stopni Oczywiście h(z) = f (g(z)) należy do zbioru PREC. Ponadto f (g(z)) musi być zdefiniowane dla każdego z ∈ N, ponieważ gdyby f (g(z)) ↑ to Wg(z) = ∅ ⊂ N − A, co z kolei na mocy produktywności N − A gwarantowałoby, że f (g(z)) ↓. To pokazuje, że h(z) = f (g(z)) ∈ REC, co kończy dowód.
7.5. Teoria stopni W ostatniej części tego rozdziału zasygnalizujemy podstawowe wiadomości o dalszych możliwościach rozbudowy hierarchii zbiorów względnie rekurencyjnych. Rozpocznijmy od rozważenia klasy funkcji dwuargumentowych pierwotnie rekurencyjnych rozszerzonych o funkcję charakterystyczną KA pewnego zbioru A ⊂ N. Definicja 7.28. Przez PRIMA 2 określimy klasę funkcji dwuargumentowych zawierającą funkcje I11 , I21 , I22 , Z, S, KA oraz zamknięty ze względu na operacje składania i rekursji prostej. Za pomocą wnioskowania analogicznego jak to, które przeprowadziliśmy dla klasy PRIM można uzyskać twierdzenie, które gwarantuje istnienie całkowitej funkcji uniwersalnej GA (n, x, y) dla klasy PRIMA 2 , która to funkcja będzie rekurencyjna w A. W tym celu wystarczy zmienić w niewielkim stopniu dowody Twierdzeń 5.5 oraz 5.6 z tą zamianą, że zamiast G będziemy rozważać zmodyfikowaną funkcję GA spełniającą warunek GA (7, x, y) = KA (x) aby uzyskać pożądany rezultat. Powtórzenie kolejnych rozważań wzorowanych na dowodach odpowiednich twierdzeń doprowadzi do nastepującego rezultatu. Twierdzenie 7.29. Istnieje funkcja U : N → N należąca do PRIM oraz ciąg funkcji TnA : Nn+2 → N rekurencyjnych w A takich, że dla każdej funkcji f : Nn → N rekurencyjnej w A istnieje e ∈ N zwane indeksem f takie, że zachodzą poniższe warunki: U (µz TnA (e, ~x, z)) ∃zTnA (e, ~x, z) = 0, f (~x) = ↑ w pozostałych przypadkach. Korzystając z poprzedniego twierdzenia można wprowadzić definicję indeksującą funkcje częściowo rekurencyjne w zbiorze A. Definicja 7.30. {e}A,n jest e-tą częściową n-argumentową funkcją rekurencyjną w A wtedy i tylko wtedy, gdy U (µz TnA (e, ~x, z)) µz TnA (e, ~x, z) ↓, {e}A,n (~x) = ↑ µz TnA (e, ~x, z) ↑ .
95
96
7. Redukcje i stopnie Korzystając z przed chwilą wprowadzonych pojęć i wyników przenoszących znane rezultaty na grunt rekurencyjności względem pewnego zbioru A możemy zaproponować relatywizację zbioru K względem tego A. Definicja 7.31. Skokiem zbioru A ⊂ N będziemy nazywali zbiór A0 określony jak poniżej: x ∈ A0 ⇐⇒ {x}A (x) ↓ . Analogicznie jak dotąd dziedzinę funkcji o indeksie x częściowo rekurencyjnej w A będziemy oznaczali WxA . Używając tego oznaczenia zbiór A0 = {x : x ∈ WxA } (w tej notacji K = ∅0 ). Rozszerzymy teraz nowe pojęcie na stopnie Turinga. Definicja 7.32. Skokiem stopnia Turinga a będziemy nazywali stopień Turinga a0 taki, że A0 ∈ a0 dla pewnego A ∈ a. Strukturę stopni Turinga oznaczymy (D, ≤,0 ), gdzie D jest zbiorem stopni Turinga, ≤ częściowym porządkiem indukowanym przez relację ≤T , zaś 0 jest operatorem skoku. Operację skoku można łatwo iterować zarówno dla zbiorów: A(0) = A, = (A(n) )0 jak i dla stopni Turinga. Wyjaśnijmy jeszcze, że w odniesieniu do stopni symboli ∩, ∪ będziemy używali jako oznaczeń odpowiednio kresu dolnego i kresu górnego dwóch stopni, to znaczy:
A(n+1)
a ∪ b = c ⇐⇒ (a ≤ c) ∧ (b ≤ c) ∧ ∀d[(a ≤ d) ∧ (b ≤ d) ⇒ c ≤ d], a ∩ b = c ⇐⇒ (c ≤ a) ∧ (c ≤ b) ∧ ∀d[(d ≤ a) ∧ (d ≤ b) ⇒ d ≤ c]. Wprowadźmy teraz definicję sumy rozłącznej zbiorów. Dla przeliczalnej rodziny zbiorów {Ai }i∈I będziemy używali operatora ⊕ zdefiniowanego jak poniżej: ⊕i∈I Ai = {J(i, x) : i ∈ I ∧ x ∈ Ai }. W przypadku dwóch zbiorów będziemy przyjmowali A ⊕ B = {2x : x ∈ A} ∪ {2x + 1 : x ∈ B}. Lemat 7.33. Dla danych stopni a i b stopień a ∪ b jest stopniem A ⊕ B, gdzie A ∈ a i B ∈ b. Dowód. Po pierwsze pokażemy, że a, b ≤ c, gdzie c jest stopniem A ⊕ B. W tym celu należy pokazać A, B ≤T A ⊕ B. Jednak z oczywistych związków KA (x) = KA⊕B (2x), KB (x) = KA⊕B (2x + 1) mamy zagwarantowaną rekurencyjność A i B w A ⊕ B. Teraz wystarczy pokazać, że dla każdego stopnia d takiego, że a, b ≤ d zachodzi c ≤ d, czyli że dla dowolnego D ∈ d mamy A ⊕ B ≤T D. Skoro
7.5. Teoria stopni
97
mamy A, B ≤T D to oznacza, że zarówno KA jak i KB są rekurencyjne w D. Oznaczmy przez K|2 funkcję charakterystyczną zbioru liczb parzystych, przez f|2 część całkowitą z dzielenia przez 2, są to - co łatwo okazać - funkcje rekurencyjne. Wystarcza zdefiniować K|2 (x)KA (f|2 (x)) + (1 − K|2 (x))KB (f|2 (x)) aby uzyskać funkcję charakterystyczną zbioru A ⊕ B rekurencyjną w D, stąd A ⊕ B ≤T D. W ten sposób pokazaliśmy, że c = a ∪ b. Jak się okazuje kres górny stopni z jednej strony a operacja skoku z drugiej są ze sobą powiązane w sposób zademonstrowany przez poniższe twierdzenie. Twierdzenie 7.34. Dla dowolnych stopni a, b są spełnione poniższe warunki: a ≤ b ⇒ a0 ≤ b0 , (a ∪ b)0 ≤ a0 ∪ b0 . Dowód. Niech zbiory A, B będą reprezentantami odpowiednio klas a i b, czyli A ∈ a i B ∈ b. Załóżmy, że A ≤T B. Poniżej prowadzone rozważania będą się odwoływały do znanych wyników z zakresu teorii zbiorów rekurencyjnych i relatywizowały je względem pewnego zbioru. Rozpocznijmy od przypomnienia wyniku mówiącego, że zbiór K jest rekurencyjnie przeliczalny. Relatywizując dowód tego faktu względem zbioru A otrzymamy wniosek, że zbiór A0 jest rekurencyjnie przeliczalny w A; łatwo zauważyć, iż z A ≤T B wynika, że A0 jest także rekurencyjnie przeliczalny w B. Dowiedliśmy wcześniej w Twierdzeniu 7.8, że każdy zbiór rekurencyjnie przeliczalny jest rekurencyjny w K. Przez relatywizację tego dowodu tym razem względem zbioru B otrzymamy twierdzenie, że każdy zbiór rekurencyjnie przeliczalny w B jest rekurencyjny w B 0 . W ten sposób otrzymaliśmy, że A0 ≤T B 0 . Drugi warunek jest prostą konsekwencją pierwszego i własności kresu górnego. Z a, b ≤ a ∪ b wynika a0 , b0 ≤ (a ∪ b)0 . Ponieważ a0 ∪ b0 jest kresem górnym a0 i b0 to musi być a0 ∪ b0 ≤ (a ∪ b)0 . Rozważymy teraz przykładowo pewne zagadnienie z zakresu teorii stopni używając do tego techniki skończonego rozszerzenia. Definicja 7.35. Łańcuchem nazywamy funkcję częściową σ : N → {0, 1} taką, że jej dziedzina jest skończona. Łańcuch σ, którego dziedzina jest zbiorem {0, . . . , k} dla pewnego k ∈ N nazywamy segmentem początkowym.
98
7. Redukcje i stopnie Możemy porównywać różne łańcuchy z sobą. W tym celu wprowadzimy naturalne definicje. Niech σ 0 , σ będą dowolnymi łańcuchami, wówczas łańcuch σ 0 nazywamy rozszerzeniem łańcucha σ, jeżeli (∀x ∈ N)[σ(x) ↓⇒ σ 0 (x) ↓ ∧ σ(x) = σ 0 (x)]. Łańcuch σ 0 nazywamy nieporównywalnym z σ, jeżeli istnieje takie x ∈ N, że σ(x) ↓ ∧ σ 0 (x) ↓ ∧ σ(x) 6= σ 0 (x). Posiadając już przygotowany odpowiedni aparat pojęciowy możemy sformułować ważny wynik dotyczący własności operatora skoku. Twierdzenie 7.36. Operator skoku nie jest jednoznaczny. Dowód. Planujemy znaleźć taki stopień a, że a > 0 (czyli a ≥ 0 oraz a 6≤ 0) i przy tym a0 = 00 . Zbudujemy zbiór reprezentujący ten stopień A ∈ a za pomocą poniższych dwóch wymogów (warunków) dających nam pożądane własności A poprzez zapewnienie dla wszystkich e ∈ N: R2e : KA 6w {e}, R2e+1 : {e}A (e) ↓ . Warunek R2e gwarantuje, że funkcja charakterystyczna KA jest różna od każdej z funkcji rekurencyjnych (czyli zbiór A nie jest rekurencyjny, a 6∈ 0). Warunek R2e+1 zapewni, że skok A0 konstruowanego zbioru A będzie w 00 . Przeprowadzimy teraz konstrukcję A za pomocą pewnych segmentów początkowych σk a następnie uzyskamy ostateczny zbiór o pożądanych właS snościach sumując segmenty: A = k∈N σk . Konstrukcja będzie przebiegać w etapach, na każdym etapie będziemy wykorzystywać kolejny z wprowadzonych wymogów. Rozpoczniemy od etapu zerowego. Wówczas funkcja σ0 jest całkowicie niezdefiniowana (identyfikując funkcję z jej dziedziną otrzymamy σ0 = ∅). Na etapie k + 1 przyjmujemy, że poprzednie etapy określiły segment σk . Teraz jeżeli k = 2e to zapewnimy spełnienie wymogu R2e , w następujący sposób: niech x będzie najmniejszym elementem, dla którego σk niezdefiniowana. Wówczas ˙ 1−{e}(x) {e}(x) ↓, σk+1 (x) = 0 {e}(x) ↑ . Jeżeli natomiast k = 2e + 1 to jako σk+1 wybieramy najmniejsze takie rozszerzenie σ segmentu początkowego σk , że {e}σ (e) ↓. Jeżeli takie σ nie istnieje to σk+1 = σk .
7.6. Zadania
99
Z powyższej konstrukcji otrzymujemy zbiór A, który nie jest rekurencyjny z powodu spełniania warunku R2e dla wszystkich e ∈ N. Możemy więc zapisać a > 0. Łatwo zauważyć, że dla ustalonego e można rekurencyjnie przeliczalnie wygenerować wszystkie rozszerzenia σ danego σk dla których {e}σ (e) ↓ . Biorąc pod uwagę równoważności e ∈ A0 ⇐⇒ {e}A (e) ↓ ⇐⇒ {e}σ2e+2 (e) ↓, i korzystając z obserwacji, że konstrukcja σ2e+2 jest rekurencyjna w K i ponadto sprawdzenie warunku {e}σ2e+2 (e) ↓ także jest rekurencyjne w K otrzymamy, iż A0 ≤T K, czyli także a0 ≤ 00 . Ponieważ jednak z a ≥ 0 wynika a0 ≥ 00 to ostatecznie dostajemy a0 = 00 .
7.6. Zadania Ćwiczenie 7.1. Udowodnić, że relacje ≤T oraz ≤m są relacjami porządku częściowego. Ćwiczenie 7.2. Pokazać, że jeżeli A ≤m B i B jest zbiorem rekurencyjnie przeliczalnym, to A także jest zbiorem rekurencyjnie przeliczalnym. Ćwiczenie 7.3. Pokazać, że dla każdego zbioru nierozstrzygalnego A zachodzi A 6≤m N − A. Ćwiczenie 7.4. Udowodnić, że każdy zbiór produktywny A ⊂ N zawiera nieskończony podzbiór rekurencyjnie przeliczalny. Skonstruować funkcję rekurencyjną generującą ten podzbiór. Ćwiczenie 7.5. Wykazać, że dla naturalnego rozszerzenia pojęcia rekurencyjności równolegle w zbiorach A i B można skonstruować taki zbiór C, że f jest rekurencyjne w (A, B) wtedy i tylko wtedy, gdy f jest rekurencyjne w C. Ćwiczenie 7.6. Na podstawie wyników z obecnego rozdziału uzasadnić następujące stwierdzenie: nie istnieje największy stopień Turinga.
Rozdział 8 Hierarchia arytmetyczna
8.1. Hierarchia arytmetyczna . . . . . . . . . . . . . . . . . 102 8.2. Własności hierarchii arytmetycznej . . . . . . . . . . . 107 8.3. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
102
8. Hierarchia arytmetyczna Niniejszy rozdział poświęcony jest ważnej klasyfikacji zbiorów i relacji liczbowych mającej silne powiązania z teorią obliczeń.
8.1. Hierarchia arytmetyczna Pamiętając o możliwości wykorzystania kwantyfikatora szczegółowego do zdefiniowania nowego typu zbiorów (ze zbiorów rekurencyjnych można w ten sposób otrzymać zbiory rekurencyjnie przeliczalne) poszerzymy operacje z użyciem kwantyfikatorów na zbiorach i relacjach rekurencyjnych. W ten sposób skonstruujemy hierarchię powiązaną z dotychczas wprowadzonymi klasami relacji: relacjami rekurencyjnymi i rekurencyjnie przeliczalnymi. Rozpoczniemy od definicji indukcyjnie określającej poszczególne klasy tej hierarchii. Definicja 8.1. Relacja R ⊂ Nk należy do klasy — Σ0n+1 wtedy i tylko wtedy, gdy istnieje relacja Q ⊂ Nk+1 klasy Π0n taka, że R(x1 , . . . , xk ) ⇐⇒ (∃t)Q(t, x1 , . . . , xk ). — Π0n+1 wtedy i tylko wtedy, gdy istnieje relacja Q ⊂ Nk+1 klasy Σ0n taka, że R(x1 , . . . , xk ) ⇐⇒ (∀t)Q(t, x1 , . . . , xk ). — Σ00 oraz Π00 wtedy i tylko wtedy, gdy R jest relacją rekurencyjną. Relacja R należy do klasy ∆0n jeżeli R ∈ Σ0n i równocześnie R ∈ Π0n . Powyższa definicja określa nam rodzinę klas relacji zwaną hierarchią arytmetyczną. Prostym wnioskiem z tej definicji jest lemat oparty na wcześniej uzyskanych wynikach. Lemat 8.2. Σ01 to klasa relacji rekurencyjnie przeliczalnych. Lemat wynika wprost z definicji i Twierdzenia 5.26. Poszczególne piętra hierarchii arytmetycznej mają szereg interesujących i przydatnych własności. Podamy poniżej kilka spośród nich ciekawych samych w sobie oraz przydatnych w dalszych rozważaniach. Twierdzenie 8.3. Każde piętro hierarchii arytmetycznej (to znaczy Σ0n lub Π0n ) jest zamknięte ze względu na koniunkcję i alternatywę. Dowód. W naturalny sposób użyjemy metody dowodu przez indukcję matematyczną skorelowaną z poziomami zdefiniowanej hierarchii. — Dla n = 0 musimy rozpatrzeć klasy Π00 , Σ00 odpowiadające klasie relacji rekurencyjnych, która to klasa jest zamknięta ze względu na koniunkcję i alternatywę.
8.1. Hierarchia arytmetyczna
103
— Pozostaje nam teraz rozważyć dla k ≥ 1 zachodzenie implikacji: P, Q ∈ Σ0k ⇒ P ∨ Q ∈ Σ0k , P, Q ∈ Σ0k ⇒ P ∧ Q ∈ Σ0k , P, Q ∈ Π0k ⇒ P ∨ Q ∈ Π0k , P, Q ∈ Π0k ⇒ P ∧ Q ∈ Π0k . Przyjmijmy założenie indukcyjne o zachodzeniu powyższych implikacji dla k − 1. Skoro P, Q ∈ Σ0k , k ≥ 1 to istnieją P 0 , Q0 ∈ Π0k−1 takie, że P (~x) ⇐⇒ (∃t)P 0 (t, ~x),
Q(~x) ⇐⇒ (∃t)Q0 (t, ~x).
Wówczas mamy (P ∨ Q)(~x) ⇐⇒ (∃t)P 0 (t, ~x) ∨ (∃t)Q0 (t, ~x) ⇐⇒ (∃t)(P 0 (t, ~x) ∨ Q0 (t, ~x)) oraz (P ∧ Q)(~x) ⇐⇒ (∃t1 )P 0 (t1 , ~x) ∧ (∃t2 )Q0 (t2 , ~x, ) ⇐⇒ (∃t)(P 0 (J1 (t), ~x) ∧ Q0 (J2 (t), ~x)) gdzie t = J(t1 , t2 ). Ponieważ relacje P 00 (t, ~x) = P 0 (J1 (t), ~x) oraz Q00 (t, ~x) = Q0 (J2 (t), ~x) pozostają w klasie Π0k−1 , to wykorzystując założenie indukcyjne otrzymujemy, że P ∨ Q, P ∧ Q są relacjami klasy Σ0k . Dwie ostatnie implikacje wyprowadzimy analogicznie: P, Q ∈ Π0k , k ≥ 1 więc istnieją P 0 , Q0 ∈ Σ0k−1 dla których P (~x) ⇐⇒ (∀t)P 0 (t, ~x),
Q(~x) ⇐⇒ (∀t)Q0 (t, ~x).
Dalej otrzymujemy następujący ciąg równoważności (P ∧ Q)(~x) ⇐⇒ (∀t)P 0 (t, ~x) ∧ (∀t)Q0 (t, ~x) ⇐⇒ (∀t)(P 0 (t, ~x) ∧ Q0 (t, ~x)) (P ∨ Q)(~x) ⇐⇒ (∀t1 )P 0 (t1 , ~x) ∨ (∀t2 )Q0 (t2 , ~x) ⇐⇒ (∀t)(P 0 (J1 (t), ~x) ∨ Q0 (J2 (t), ~x)) gdzie t = J(t1 , t2 ). Tak jak powyżej otrzymujemy, że P ∨ Q, P ∧ Q są także relacjami klasy Π0k . Udowodnienie prawdziwości wypisanych implikacji daje nam na mocy indukcji matematycznej prawdziwość całego twierdzenia.
104
8. Hierarchia arytmetyczna Pokażemy teraz związek pomiędzy klasami z tego samego poziomu hierarchii: Π0n i Σ0n , równocześnie wykorzystując logiczną negację do relacji. Definicja 8.4. Niech X będzie dowolnym zbiorem relacji. Zbiorem uzupełnień zbioru X oznaczonym przez CX będziemy nazywali zbiór określony następująco: relacja R należy do CX wtedy i tylko wtedy, gdy istnieje relacja P należąca do X taka, że R(~x) ⇐⇒ ¬P (~x). Twierdzenie 8.5. Zachodzą następujące tożsamości Σ0n = CΠ0n , Π0n = CΣ0n . Dowód. Użyjemy ponownie metody indukcji, łatwo stosującej się do zagadnień związanych z hierarchią arytmetyczną. — Dla n = 0 otrzymujemy, że Σ00 = Π00 jest zbiorem relacji rekurencyjnych. Ponieważ negacja relacji rekurencyjnej jest także relacją rekurencyjną to otrzymujemy: CΠ00 = Σ00 , CΣ00 = Π00 . — Rozważmy pewną relację R ∈ Σ0n+1 . Wówczas istnieje P ∈ Π0n takie, że R(~x) ⇐⇒ (∃t)P (t, ~x). Zauważmy, że ¬R(~x) ⇐⇒ (∀t)¬P (t, ~x). Skoro na mocy założenia indukcyjnego przyjmiemy, że CΠ0n = Σ0n i CΣ0n = Π0n to z tego wynika, że ¬R należy do Π0n+1 . Analogicznie można pokazać, że dla pewnej relacji Q ∈ Π0n+1 relacja ¬Q jest w Σ0n+1 . Aby w sposób właściwy używać terminu hierarchia do rodziny klas Π0n , gdzie n ∈ N wypada pokazać zawieranie poszczególnych klas oraz rozważyć problem nieskończonego charakteru tejże rodziny. Rozpoczniemy od wskazania zawierania się poszczególnych klas odsuwając problem charakteru tego zawierania (właściwe czy niewłaściwe) na później. Σ0n ,
Twierdzenie 8.6. Dla każdego n ≥ 0 prawdziwe są inkluzje Σ0n ⊂ Π0n+1 , Π0n ⊂ Σ0n+1 , Σ0n ⊂ Σ0n+1 , Π0n ⊂ Π0n+1 .
8.1. Hierarchia arytmetyczna
105
Dowód. Zauważmy najpierw, że inkluzje Π0n ⊂ Σ0n+1 , Σ0n ⊂ Π0n+1 , są oczywiste przy skorzystaniu z faktu, że kwantyfikowanie po zmiennych nie występujących w rozważanych relacjach zachowuje relację niezmienioną. Wystarczy więc zapisać R(~x) ∈ Π0n ⇒ (∃t)R(~x) ∈ Σ0n+1 , i analogicznie R(~x) ∈ Σ0n ⇒ (∀t)R(~x) ∈ Π0n+1 , aby otrzymać dwie pierwsze inkluzje. Teraz zastosujemy równoległą indukcję w celu wykazania dwóch pozostałych inkluzji. — Dla n = 0 będziemy mieli Π00 = Σ00 ⊂ Π01 , Σ00 = Π00 ⊂ Σ01 . — Przy założeniu indukcyjnym Π0n ⊂ Π0n+1 ,
Σ0n ⊂ Σ0n+1
rozważamy relację R ∈ Π0n+1 . Istnieje wówczas P ∈ Σ0n taka, że R(~x) ⇐⇒ (∀t)P (t, ~x). Z kolei mamy zagwarantowane zachodzenie zawierania P ∈ Σ0n ⊂ Σ0n+1 na mocy założenia indukcyjnego, a stąd otrzymamy R ∈ Π0n+2 . Tak oto wykazaliśmy, że Π0n+1 ⊂ Π0n+2 . Dla pokazania Σ0n+1 ⊂ Σ0n+2 wystarczy przeprowadzić analogicznie rozumowanie. Teraz możemy wzmocnić powyższe twierdzenie pokazując, że wykazane wyżej zawieranie klas relacji jest właściwe. Najpierw jednak musimy wprowadzić pojęcie relacji uniwersalnej, która będzie przydatna do wskazania które z relacji klas Π0n (lub Σ0n ) nie należą z pewnością do niższych pięter hierarchii arytmetycznej.
106
8. Hierarchia arytmetyczna Definicja 8.7. Relacją uniwersalną klasy relacji X dla relacji n-argumentowych będziemy nazywali relację U ⊂ Nn+1 wtedy i tylko wtedy, gdy dla każdego P ∈ X, P ⊂ Nn istnieje t ∈ N takie, że P (~x) ⇐⇒ U (t, ~x). Teraz krótko rozważymy własności relacji uniwersalnych. Lemat 8.8. Dla każdego k > 0 każda relacja uniwersalna klasy Σ0k należy do Σ0k oraz każda relacja uniwersalna klasy Π0k należy do Π0k . Dowód. Pokażemy najpierw, że relacja uniwersalna klasy Σ01 należy do klasy Σ01 . W tym celu udowodnimy na początek, że dowolną n-argumentową relację P należącą do Σ01 da się przedstawić w postaci P (~x) ⇐⇒ (∃t)Q(t, ~x), gdzie KQ ∈ EREC. Ponieważ P ∈ Σ01 to istnieje relacja Q0 ∈ Σ00 taka, że P (~x) (∃t)Q0 (t, ~x). Wówczas korzystając z Twierdzenia 5.1 mamy
⇐⇒
0 x, t, y, z) = 0 KQ0 (t, ~x) = y ⇐⇒ (∃z)KQ 0 (~ 0 ∈ EREC, czyli Q0 (t, ~ 0 (~ dla pewnej funkcji KQ x) ⇐⇒ (∃z)[KQ 0 0 x, t, 0, z) = 00 0]. Niech Q (t, z, ~x) będzie relacją spełnioną wtedy i tylko wtedy, gdy za0 (~ chodzi równość KQ 0 x, t, 0, z) = 0. Otrzymamy wówczas
P (~x) ⇐⇒ (∃t)(∃z)Q00 (t, z, ~x). Kodując u = J(t, z) mamy ostatecznie P (~x) ⇐⇒ (∃u)R(u, ~x), gdzie R(u, ~x) ⇐⇒ Q00 (J1 (u), J2 (u), ~x), przy czym funkcja charakterystyczna relacji R jest klasy EREC Teraz możemy zapisać P (~x) ⇐⇒ (∃u)[{e0 }(u, ~x) = 0], gdzie e0 jest indeksem funkcji KR . Korzystając z Twierdzenia 5.11 mamy zapewnione istnienie funkcji g ∈ PREC takiej, że {e}(u, ~x) w g(e, u, ~x), co prowadzi do równoważności: P (~x) ⇐⇒ (∃u)g(e0 , u, ~x) = 0. Zatem określając relację U w następujący sposób: U (e, ~x) ⇐⇒ (∃u)g(e, u, ~x) = 0 otrzymaliśmy relację klasy Σ01 będącą relacją uniwersalną dla relacji n-argumentowych w Σ01 . Możemy teraz zakończyć dowód zauważając, że na mocy znanych nam wyników relacja ¬U będzie relacją uniwersalną dla Π01 . Dalej już łatwo zauważyć, że jeżeli pewna relacja U będzie relacją uniwersalną dla klasy Σ0n to relacja (∀t)U będzie relacją uniwersalną dla klasy Π0n+1 , zaś jej negacja: (∃t)¬U będzie relacją uniwersalną dla klasy Σ0n+1 .
8.2. Własności hierarchii arytmetycznej Jako wniosek z powyżej udowodnionych wyników uzyskamy następne twierdzenie. Warto zwrócić uwagę, iż zapewnia ono także nieskończony charakter hierarchii arytmetycznej, to znaczy dla żadnego n ∈ N nie będziemy mieli Π0n = Π0k ani Σ0n = Σ0k dla k > n. Twierdzenie 8.9. Dla każdego k ≥ 0 zachodzą następujące warunki Π0k 6= Π0k+1 , Σ0k 6= Σ0k+1 , Π0k 6= Σ0k . Dowód. W celu pokazania tych faktów wykorzystamy wprowadzoną powyżej relację uniwersalną. Zacznijmy od pokazania, że Π0k 6= Σ0k . Przyjmijmy - dla celów metody nie wprost - że Π0k = Σ0k . Wiemy, że dla dowolnej relacji P ∈ Σ0k możemy wyrazić ją poprzez relację uniwersalną U ∈ Σ0k jako P (~x, y) ⇐⇒ U (e, ~x, y), gdzie e to indeks relacji P . Skoro Π0k = Σ0k to relacja ¬U także należy do Σ0k . Dalej mamy: ¬U (t, ~x, t) ∈ Σ0k stąd ma ona swój indeks e0 . Stąd ¬U (t, ~x, t) ⇐⇒ U (e0 , ~x, t). Po podstawieniu za t indeksu e0 otrzymamy sprzeczność, która wskazuje, że nie może zachodzić Π0k = Σ0k . Teraz rozpatrzymy dwa pierwsze warunki wykorzystując ponownie metodę reductio ad absurdum. Przyjmijmy znów, że Σ0k = Σ0k+1 , co pociąga (poprzez równość zbiorów dopełnień) Π0k = Π0k+1 . Ponieważ Σ0k ⊂ Π0k+1 to Σ0k ⊂ Π0k oraz podobnie ponieważ Π0k ⊂ Σ0k+1 to Π0k ⊂ Σ0k . Stąd otrzymujemy Σ0k = Π0k , co daje oczekiwaną sprzeczność i kończy dowód.
8.2. Własności hierarchii arytmetycznej Jak się okazuje hierarchia arytmetyczna rozszerzając zbiór relacji rekurencyjnych poprzez wykorzystanie kwantyfikatorów wprowadza wiele punktów odniesienia do wcześniej omawianych zagadnień rekurencyjności względnej. Jednak zacznijmy od podania ważnego lematu, który wiąże jedną z klas hierarchii arytmetycznej z wyznaczaniem granic funkcji rekurencyjnych.
107
108
8. Hierarchia arytmetyczna Lemat 8.10. Niech R ⊂ Nk będzie pewną relacją. Jeżeli funkcja charakterystyczna tej relacji spełnia KR (~x) = lim g(~x, t) t→∞
gdzie funkcja g ∈ REC to relacja R należy do klasy ∆02 . Dowód. Jeżeli KR (~x) = limt→∞ g(~x, t) to ~x ∈ R ⇐⇒ lim g(~x, t) = 0 ⇐⇒ (∃s)(∀n)[n > s ⇒ g(~x, n) = 0]. t→∞
To oznacza, że zachodzi należenie R ∈ Σ02 . Z drugiej strony mamy ~x ∈ R ⇐⇒ lim g(~x, t) = 0 ⇐⇒ (∀s)(∃n)[n > s ∧ g(~x, n) = 0]. t→∞
Stąd z kolei otrzymujemy R ∈ Π02 . Zbierając te wyniki możemy zapisać R ∈ ∆02 .
Jak się okazuje powyższy wynik można wzmocnić uzyskując identyczność zbioru relacji klasy ∆02 z relacjami określonymi poprzez przejście graniczne na funkcjach rekurencyjnych. W dość naturalny sposób można więc określić klasę ∆02 jako klasę relacji, które mogą być rekurencyjnie aproksymowane przez ciągi skończonych zbiorów. Pozostaje nam jeszcze wskazać związek poszczególnych poziomów hierarchii arytmetycznej z wprowadzonymi wcześniej stopniami Turinga. Twierdzenie 8.11. Dla każdego n ≥ 1 klasa Σ0n jest identyczna z klasą wszystkich zbiorów rekurencyjnie przeliczalnych w 0n−1 (zbiorów 0n−1 -rekurencyjnie przeliczalnych). Dowód (którego nie będziemy tu przeprowadzali) pokazuje, że każdy zbiór z Σ0n jest 0n−1 -rekurencyjnie przeliczalny poprzez wykorzystanie indukcji matematycznej. Łatwo zauważyć, że przypadkiem wyjściowym do tej indukcji jest znany nam fakt, że zbiór Σ01 jest zbiorem relacji rekurencyjnie przeliczalnych. Inkluzję przeciwną można pokazać odwołując się do nieomawianych tutaj własności relacji rekurencyjnie przeliczalnych (takich jak reprezentacja za pomocą skończonych segmentów rekurencyjnych). Jednak natychmiastowym wnioskiem, który podsumuje tę część będzie następujące twierdzenie. Twierdzenie 8.12. Dla każdego n ≥ 1 klasa ∆0n jest identyczna z klasą wszystkich zbiorów rekurencyjnych w 0n−1 (zbiorów 0n−1 -rekurencyjnych).
8.3. Zadania
109
Dowód. Oczywiście możemy wykorzystać twierdzenie relatywizujące znany wynik, iż zbiór A jest rozstrzygalny (rekurencyjny) wtedy i tylko wtedy, gdy zbiór A oraz jego dopełnienie N − A są rekurencyjnie przeliczalne. Stąd otrzymujemy, że zbiór A jest 0n−1 -rekurencyjny wtedy i tylko wtedy, gdy A jest 0n−1 -rekurencyjnie przeliczalny oraz jego dopełnienie jest także 0n−1 -rekurencyjnie przeliczalne. Poprzednie twierdzenie mówi nam, że ten ostatni warunek zachodzi wtedy i tylko wtedy, gdy A ∈ Σ0n oraz N − A ∈ Σ0n (co w ostatnim przypadku jest równoważne A ∈ Π0n ).
8.3. Zadania Ćwiczenie 8.1. Udowodnić, że jeżeli zbiór A należy do klasy Σ0n to iloczyn kartezjański A × A także należy do klasy Σ0n . Ćwiczenie 8.2. Rozważmy dowolny skończony zbiór A = {a0 , . . . , an }, przy czym przyjmiemy, że zachowany jest naturalny porządek indeksowania elementów A, to znaczy ai < aj dla i < j. Wprowadźmy liczbę kodującą ten zbiór w następujący sposób: x = 2a0 +1 · · · pann +1 , gdzie pn , n ∈ N to n-ta liczba pierwsza. Niech teraz Dx oznacza zbiór zakodowany przez liczbę x ∈ N, dla x ∈ {0, 1} przyjmiemy Dx = ∅. Zdefiniujmy szczególny zbiór Af reprezentujący wszystkie skończone podzbiory zadanego A: x ∈ Af ⇐⇒ Dx ⊂ A. Wykazać, że jeżeli zbiór A należy do Σ0n , to Af także należy do Σ0n . Ćwiczenie 8.3. Wykazać, że zbiór indeksów pustych funkcji częściowo rekurencyjnych (to znaczy takich, że dla każdego x mamy {e}(x) ↑) należy do klasy Π01 . Ćwiczenie 8.4. Wykazać, że zbiór indeksów funkcji częściowo rekurencyjnych identycznych z funkcją zerowania (to znaczy takich, że dla każdego x mamy {e}(x) = Z(x)) należy do klasy Π02 .
Dodatek A Obliczalność a arytmetyka Peana
A.1. Arytmetyka Peana PA . . . . . . . . . . . . . . . . . . 112 A.2. Reprezentowalność relacji w PA . . . . . . . . . . . . . 115 A.3. Własności PA . . . . . . . . . . . . . . . . . . . . . . . 123
112
A. Obliczalność a arytmetyka Peana
A.1. Arytmetyka Peana PA W tej części chcemy pokazać jak istotną rolę odgrywa pojęcie obliczalności w matematyce ilustrując to krótkim rozważaniem prowadzącym do niezwykle ważnego wyniku logiki: mianowicie twierdzenia G¨odla. Ze względu na to, że wynik ten mówi o wewnętrznych ograniczeniach teorii matematycznych zalicza się go do dziedziny metamatematyki. W tym dodatku znaczna część pojęć oraz wyników zostanie podana w sposób nie w pełni formalny, co ma pozwolić na koncentrację na głównych ideach unikając przy tym szczegółowego przestrzegania czasem skomplikowanych formalizmów. Rozpoczniemy od sprecyzowania opisu arytmetyki liczb naturalnych sformalizowanej w system zwany arytmetyką Peana. Arytmetyka Peana jest teorią sformalizowaną, będziemy ją oznaczać przez PA, a w celu jej dokładnego określenia będziemy musieli najpierw podać jej język, a następnie opisać używany aparat wnioskowania. Definicja A.1. Alfabetem języka PA będziemy nazywać zbiór zawierający: — stałe logiczne: ¬, ∨, ∧, ⇒, ⇐⇒ , ∃, ∀; — zmienne indywiduowe: x, y, z, x1 , y1 , z1 , . . .; — stałą indywiduową 0; — predykat dwuargumentowy =; — symbol funkcyjny jednoargumentowy S; — symbole funkcyjne dwuargumentowe +, ·; — symbole pomocnicze (, ). Oczywiście wprowadzone powyżej symbole będziemy zwykle interpretowali w naturalny sposób wiążąc je ze standardowymi oznaczeniami logiki i operacji w zbiorze liczb naturalnych. Za pomocą znaków określonego powyżej alfabetu możemy zbudować najprostsze wyrażenia języka PA. Definicja A.2. Termem PA nazywamy wyłącznie takie wyrażenie, które posiada jedną z poniższych postaci: — zmienną indywiduową, — stałą 0, — S(α), gdzie α jest termem PA — (α) + (β), (α) · (β), gdzie α, β są termami PA. Jak widać termy reprezentują wyrażenia liczbowe (zawierajace stałe lub zmienne) w zbiorze liczb naturalnych. W praktyce będziemy w sposób zgodny z intuicją opuszczali część nawiasów na mocy standardowych konwencji matematycznych. Poniższy przykład ilustruje wprowadzone pojęcia. Przykład A.3. Termami są wszystkie poniższe wyrażenia: SSS0, SS0 + x1 · x2 , (x1 + x2 ) · SS0.
A.1. Arytmetyka Peana PA Teraz możemy już wprowadzić definicję formuł, czyli pełnych zdań arytmetyki Peana PA. Definicja A.4. Formułą PA nazywamy wyrażenia: — (α) = (β), gdzie α, β są termami PA — (φ), ¬(φ), (φ) ∧ (ψ), (φ) ∨ (ψ), (φ) ⇒ (ψ), (φ) ⇐⇒ (ψ), gdzie φ i ψ są formułami PA, — ∀x(φ), ∃x(φ), gdzie φ jest formułą PA. Tak jak poprzednio także i tutaj w dalszym zapisie nie będziemy uwzględniali część nawiasów opuszczając je w zgodzie ze zwyczajowym rozumieniem formuł. Po ustaleniu języka arytmetyki Peana przechodzimy do określenia drogi wyznaczania twierdzeń w PA. Musimy w obrębie aparatu wnioskowania określić dwa elementy: aksjomatykę PA oraz reguły wnioskowania PA. Zaczniemy oczywiście od wprowadzenia aksjomatów dzieląc je na kilka grup. Tam, gdzie w zapisie pojawia się oznaczenie formuły PA tak naprawdę w grę wchodzi nie pojedynczy aksjomat, ale nieskończony układ aksjomatów uzyskanych w wyniku podstawienia za oznaczoną formułę dowolnych formuł PA. Podobnie w przypadku zmiennych indywiduowych możemy zastępować je dowolnymi termami. Dlatego będziemy w tym przypadku mówi raczej o schematach aksjomatycznych. Definicja A.5. Poniższe grupy formuł PA oraz schematów formuł PA będziemy nazywali aksjomatyką arytmetyki Peana: — aksjomaty logiczne: 1. φ ⇒ (ψ ⇒ φ); 2. (φ ⇒ (ψ ⇒ γ)) ⇒ ((φ ⇒ ψ) ⇒ (φ ⇒ γ)); 3. ((¬φ ⇒ ¬ψ) ⇒ (ψ ⇒ φ)); 4. ∀xφ(x) ⇒ φ(t); 5. φ(t) ⇒ ¬∀x(¬φ(x)), gdzie w obu powyższych przypadkach t jest dowolnym termem PA, zaś φ(t) jest wynikiem podstawienia termu t za zmienną x do φ(x), przy czym x jest zmienną niezwiązaną kwantyfikatorem oraz po podstawieniu t do φ żadnie niezwiązane zmienne termu t nie zostaną związane; — aksjomaty równości: 1. x = x; 2. x = y ⇒ y = x; 3. x = y ∧ y = z ⇒ x = z; 4. x = y ⇒ S(x) = S(y); 5. x = y ⇒ z + x = z + y; 6. x = y ⇒ x + z = y + z; 7. x = y ⇒ x · z = y · z;
113
114
A. Obliczalność a arytmetyka Peana 8. x = y ⇒ z · x = z · y; — aksjomaty arytmetyczne: 1. S(x) = S(y) ⇒ x = y; 2. ¬(0 = S(x)); 3. x + 0 = x; 4. x + S(y) = S(x + y); 5. x · 0 = 0; 6. x · S(y) = x · y + x; — aksjomat indukcji: φ(0) ∧ ∀x[φ(x) → φ(S(x))] ⇒ ∀xφ(x). Ponieważ w grupie aksjomatów logicznych pojawiły się tylko symbole ¬, ⇒, ∀, zaś w innych formułach występować mogą także inne funktory logiczne, dlatego użyjemy zwykłych zasad konwersji wyrażeń logicznych: — ∃xφ(x) = ¬∀x¬φ(x), — φ ∨ ψ = ¬φ ⇒ ψ, — φ ∧ ψ = ¬(¬φ ∨ ¬ψ), — φ ⇐⇒ ψ = (φ ⇒ ψ) ∧ (ψ ⇒ φ). Pozostaje nam wskazać tylko reguły wnioskowania prowadzące do twierdzeń rozważanej teorii. Definicja A.6. Regułami wnioskowania PA będą — reguła odrywania: φ, φ ⇒ ψ ; ψ — reguła warunkowego wprowadzenie kwantyfikatora generalnego: φ ⇒ ψ(x) ; φ ⇒ ∀xψ(x) — reguła warunkowego wprowadzenie kwantyfikatora szczegółowego: ψ(x) ⇒ φ ; ∃xψ(x) ⇒ φ gdzie x nie jest związane kwantyfikatorem w formule ψ oraz x nie występuje jako zmienna niezwiązana w φ. Teraz dopiero możemy formalnie określić jakiego rodzaju formuły wyróżnimy jako twierdzenia teorii PA. Definicja A.7. Formuła φ będzie nazwana twierdzeniem PA (oznaczenie PA ` φ) wtedy i tylko wtedy, gdy istnieje jej dowód, to znaczy skończony ciąg formuł φ0 , . . . , φn spełniający warunki: — φn = φ
A.2. Reprezentowalność relacji w PA
115
— dla 0 ≤ i ≤ n albo φi jest aksjomatem PA albo φi jest otrzymane za pomocą reguł wnioskowania na podstawie formuł tego dowodu o indeksach mniejszych od i. Dodajmy jeszcze uwagę notacyjną: termy postaci SS . . . S} 0 (które bę| {z n
¯ dziemy nazywali liczebnikami) zapiszemy jako n ¯ , na przykład SSS0 to 3. Używając aparatu arytmetyki Peana mamy otwarte możliwości wprowadzania nowych predykatów i symboli funkcyjnych. Przydatny będzie dla nas zwłaszcza predykat mniejszości zdefiniowany następująco: x < y = (∃z)[¬(z = 0) ∧ x + z = y]. Predykat relacji mniejsze lub równe łatwo można uzyskać jako: x ≤ y = x < y ∨ x = y. Powyżej zaprezentowany dobór aksjomatów i reguł wnioskowania nie jest jedyny - każda poprawna konstrukcja rachunku predykatów pierwszego rzędu może być wykorzystana jako podstawa do określenia arytmetyki Peana. Przy wnioskowaniu można używać także niektórych użytecznych reguł, które można wyprowadzić jako pochodne reguł podstawowych: na przykład reguły wprowadzania i opuszczania kwantyfikatorów, czy faktu, iż dowody dwóch twierdzeń gwarantują istnienie dowodu ich koniunkcji. Oczywiście w toku wyprowadzania twierdzeń będziemy także używali wszystkich przydatnych tautologii rachunku zdań oraz podstawień za zmienne (które mogą być interpretowane jako wykorzystanie schematów aksjomatycznych w odpowiedniej dobranej postaci).
A.2. Reprezentowalność relacji w PA W tej części pokażemy związek między relacjami i funkcjami rekurencyjnymi a arytmetyką Peana. Rozpocząć musimy od zdefiniowania związku między między relacjami a ich formalną reprezentacją. Definicja A.8. Mówimy, że formuła φ arytmetyki PA o n zmiennych wolnych mocno reprezentuje relację R ⊂ Nn wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn ∈ N mamy jeśli R(x1 , . . . , xn ) to PA ` φ(¯ x1 , . . . , x ¯n ) oraz jeśli ¬R(x1 , . . . , xn ) to PA ` ¬φ(¯ x1 , . . . , x ¯n ). Mówimy, że formuła φ o (n+1) zmiennych wolnych reprezentuje funkcję f : Nn → N wtedy i tylko wtedy, gdy dla każdych x1 , . . . , xn ∈ N P A ` (∀y)[φ(¯ x1 , . . . , x ¯n , y) ⇐⇒ y = f (x1 , . . . , xn )].
116
A. Obliczalność a arytmetyka Peana W dalszych rozważaniach przydatnymi wynikami związanymi z powyższymi pojęciami będą poniższe lematy. Lemat A.9. Dla dowolnej formuły φ arytmetyki Peana i dla dowolnego n ∈ N, jeżeli dla każdego i < n PA ` ¬φ(¯i) oraz PA ` φ(¯ n) to zachodzi PA ` (φ(x) ∧ (∀y)[y < x ⇒ ¬φ(y)]) ⇐⇒ (x = n ¯ ). Dowód. Dowiedziemy najpierw pomocniczo takiego oto twierdzenia teorii PA: PA ` φ(0) ∧ . . . ∧ φ(n − 1) ∧ x < n ¯ ⇒ φ(x). Wykorzystamy w tym celu indukcję. Dla n = 0 otrzymujemy w poprzedniku dowodzonej implikacji x < 0, łatwo można pokazać PA ` ¬(x < 0) i na tej podstawie uzyskać PA ` (x < 0) ⇒ φ(x). Teraz przyjmując jako założenie indukcyjne prawdziwość powyższej tezy dla pewnego n dowiedziemy jej dla n + 1. Wykorzystując dwa twierdzenia PA: PA ` x < n + 1 ⇒ x < n ¯∨x=n ¯ PA ` x = n ¯ ⇒ φ(x) = φ(¯ n) oraz założenie indukcyjne otrzymamy (używając tautologii rachunku zdań) n) ∧ x < n + 1 ⇒ φ(x). PA ` φ(0) ∧ . . . ∧ φ(n − 1) ∧ φ(¯ Teraz możemy przejść do dowodu naszej głównej tezy. Dla wygody wyrażenie φ(x) ∧ (∀y)[y < x ⇒ ¬φ(y)] oznaczmy przez ψ(x). Przed chwilą dowiedliśmy, że zachodzi następujący fakt: PA ` ¬φ(0) ∧ . . . ∧ ¬φ(n − 1) ∧ y < n ¯ ⇒ ¬φ(y). Opuszczając prawdziwe na mocy założeń składniki koniunkcji i wprowadzając kwantyfikator ogólny otrzymamy: PA ` (∀y)[y < n ¯ ⇒ ¬φ(y)]. Oprócz tego mamy z założenia PA ` φ(¯ n), łącząc ze sobą koniunkcyjnie te dwa twierdzenia mamy: PA ` ψ(¯ n). Wykorzystując teraz PA ` (x = n ¯ ) ⇒ ψ(x) ⇐⇒ ψ(¯ n), na mocy właściwych tautologii rachunku zdań otrzymamy PA ` (x = n ¯ ) ⇒ φ(x) ∧ (∀y)[y < x ⇒ ¬φ(y)].
A.2. Reprezentowalność relacji w PA
117
Pozostaje nam dowieść implikacji w przeciwną stronę. Na mocy aksjomatu (∀x)ξ(x) ⇒ ξ(¯ n) możemy napisać: PA ` (∀y)[y < x ⇒ ¬φ(y)] ⇒ (¯ n < x ⇒ ¬φ(¯ n)). Przekształcając (¯ n < x ⇒ ¬φ(¯ n)) w alternatywę ¬(¯ n < x) ∨ ¬φ(¯ n)) i wykorzystując założenie φ(¯ n) do opuszczenia fałszywego składnika alternatywy otrzymamy: PA ` ψ(x) ⇒ ¬(¯ n < x). Z drugiej strony możemy wykorzystać PA ` x < n ¯ ⇒ ¬φ(x), co z użyciem prawa kontrapozycji daje nam PA ` φ(x) ⇒ ¬(x < n ¯ ). Wzmacniając poprzednik tej implikacji otrzymamy PA ` φ(x) ∧ (∀y)[y < n ¯ ⇒ ¬φ(y)] ⇒ ¬(x < n ¯ ), czyli w skrócie PA ` ψ(x) ⇒ ¬(x < n ¯ ). Korzystając z rachunku zdań oraz z faktu PA ` (x < n ¯ ) ∨ (x = n ¯ ) ∨ (¯ n < x) dojdziemy do pożądanego wniosku PA ` ψ(x) ⇒ (x = n ¯ ), co kompletuje dowód.
Lemat A.10. Relacja R ⊂ Nn jest mocno reprezentowalna w PA wtedy i tylko wtedy, gdy funkcja charakterystyczna KR jest reprezentowalna w PA. Dowód. Przyjmijmy najpierw, że R ma formułę φ mocno ją reprezentującą w PA. Zbudujmy formułę ψ(x1 , . . . , xn , y) o n+1 zmiennych jako wyrażenie: (φ(x1 , . . . , xn ) ∧ y = 0) ∨ (¬φ(x1 , . . . , xn ) ∧ y = ¯1). Pokażemy, że ψ reprezentuje KR . Niech dla pewnych y1 , . . . , yn ∈ N zachodzi KR (y1 , . . . , yn ) = 0, stąd wynika, że prawdą jest R(y1 , . . . , yn ). Ponieważ R jest mocno reprezentowalna przez φ to mamy PA ` φ(¯ y1 , . . . , y¯n ). Odwołując się do odpowiednich tautologii mamy także twierdzenie: PA ` φ(¯ y1 , . . . , y¯n ) ⇒ [(y = 0) ⇒ (φ(¯ y1 , . . . , y¯n ) ∧ y = 0)]. Za pomocą reguły odrywania otrzymamy więc wniosek: PA ` (y = 0) ⇒ (φ(¯ y1 , . . . , y¯n ) ∧ y = 0). Łatwo tę formułę - znowu z użyciem prostych tautologii - sprowadzić do postaci: PA ` (y = 0) ⇒ [(φ(¯ y1 , . . . , y¯n ) ∧ y = 0) ∨ (¬φ(¯ y1 , . . . , y¯n ) ∧ y = ¯1)]
118
A. Obliczalność a arytmetyka Peana czyli PA ` (y = 0) ⇒ ψ(y1 , . . . , yn , y). Implikacja odwrotna zostanie wyprowadzona z tautologii p ⇒ [((p ∧ r) ∨ (¬p ∧ q)) ⇒ r]. Po dokonaniu podstawień: p/φ(¯ x1 , . . . , x ¯n ), q/y = ¯1, r/y = 0 otrzymamy: PA ` φ(¯ x1 , . . . , x ¯n ) ⇒ [ψ(¯ x1 , . . . , x ¯n , y) ⇒ (y = 0)]. Ten wniosek po wykorzystaniu reguły odrywania da nam pożądane twierdzenie. Analogicznie można postępować dla takich y1 , . . . , yn , że zachodzi KR (y1 , . . . , yn ) = 1 co zakończy pierwszą część dowodu. Teraz przyjmiemy, że funkcja KR jest reprezentowana w PA przez formułę ψ(x1 , . . . , xn , y). Pokażemy intuicyjnie oczywisty fakt, że formuła arytmetyki Peana ψ(x1 , . . . , xn , 0) mocno reprezentuje relację R. Niech dla pewnych liczb y1 , . . . , yn zachodzi R(y1 , . . . , yn ). Oczywiście wówczas funkcja charakterystyczna KR (y1 , . . . , yn ) = 0, czyli mamy PA ` (y = 0) ⇐⇒ ψ(¯ y1 , . . . , y¯n , 0). Po podstawieniu za y liczebnika zero oraz po przekształceniu tej równoważności na implikację można oderwać pierwszą część (korzystając z twierdzenia PA ` 0 = 0) i otrzymać PA ` ψ(¯ y1 , . . . , y¯n , 0). Gdyby zaś rozważać liczby y1 , . . . , yn takie, że ¬R(y1 , . . . , yn ), to wtedy KR (y1 , . . . , yn ) = 1 czyli mamy PA ` (y = ¯ 1) ⇐⇒ ψ(¯ y1 , . . . , y¯n , y). Po podstawieniu za y zera i opuszczeniu w równoważności jednej z implikacji otrzymamy PA ` ψ(¯ y1 , . . . , y¯n , 0) ⇒ (0 = ¯1). Z prawa kontrapozycji wynika więc: PA ` ¬(0 = ¯ 1) ⇒ ¬ψ(¯ y1 , . . . , y¯n , 0). ¯ to używając reguły odrywania uzyskamy w Skoro jednak PA ` ¬(0 = 1) tym przypadku PA ` ¬ψ(¯ y1 , . . . , y¯n , 0) co ostatecznie kończy dowód. Rozważmy teraz relację równości. Dowiedziemy, że zachodzą dwie poniższe implikacje: (z = u) ⇒ PA ` (¯ z=u ¯), (z 6= u) ⇒ PA ` ¬(¯ z=u ¯). Zauważmy, że w pierwszym przypadku równość z i u pociąga identyczność liczebników z¯, u ¯. Wystarcza więc użyć aksjomatu x = x aby otrzymać PA ` (¯ z=u ¯).
A.2. Reprezentowalność relacji w PA Rozważmy więc przypadek drugi, czyli z 6= u. Dla ustalenia uwagi przyjmijmy u < z. Będziemy dalej prowadzić dowód metodą indukcji względem u. Dla u = 0 wystarczy skorzystać z aksjomatu ¬(S(x) = 0), aby mieć zapewnione ¬(¯ z = 0). Niech teraz będzie spełnione u > 0 i jako założenie indukcyjne niech PA ` ¬(z − 1 = u − 1). Używając aksjomatu S(x) = S(y) ⇒ x = y z prawa kontrapozycji i podstawienia x/z − 1, y/u − 1 otrzymujemy PA ` ¬(z − 1 = u − 1) ⇒ ¬(¯ z=u ¯). Wystarczy teraz dokonać oderwania założenia indukcyjnego, aby otrzymać PA ` ¬(¯ z = u ¯) jako konsekwencję z 6= u. Tak oto w dowodzie indukcyjnym prowadzonym dla dowolnego z ∈ N udowodniliśmy dla każdego u ∈ N zachodzenie drugiej z rozważanych implikacji. To oznacza, że wykazaliśmy mocną reprezentowalność relacji równości. Podstawowym wynikiem dotyczącym reprezentowalności relacji i funkcji w zbiorze liczb naturalnych w teorii arytmetyki Peana jest poniższe twierdzenie. Twierdzenie A.11. Każdej funkcji rekurencyjnej odpowiada formuła PA reprezentująca ją w PA, każdej relacji rekurencyjnej odpowiada formuła PA mocno reprezentująca ją w PA. Dowód. W celu dowiedzenia tego twierdzenia należy pokazać, że relacja < są mocno reprezentowalna w PA (na mocy poprzedniego lematu da nam to reprezentowalność jej funkcji charakterystycznej w PA), dalej, że funkcje +, · są reprezentowalne w PA, a następnie, iż wyniki operacji superpozycji i minimalizacji efektywnej zastosowanych do funkcji reprezentowalnych w PA są także reprezentowalne w PA. W ten sposób zastosujemy postępowanie (zwane indukcją strukturalną), które będzie dawało gwarancję reprezentowalności dla wszystkich funkcji całkowitych z klasy PREC1 - czyli dla funkcji (całkowicie) rekurencyjnych. Pierwszą częścią dowodu będzie pokazanie, że funkcja dodawania liczb naturalnych jest reprezentowana w PA przez formułę x1 + x2 = x3 . Najpierw dowiedziemy użyteczny fakt, że dla dowolnych z, u ∈ N mamy PA ` z¯ + u ¯ = z + u. Użyjemy ponownie indukcji względem u. Dla u = 0 wystarczy skorzystać z aksjomatu x + 0 = x aby po podstawieniu x/¯ z uzyskać PA ` z¯ + 0 = z + 0. Teraz niech założeniem indukcyjnym będzie PA ` z¯ + u ¯ = z + u. Pokażemy, że PA ` z¯ + u + 1 = z + u + 1. Najpierw zauważmy, iż z aksjomatu x = x możemy wywieść PA ` S(¯ z +u ¯) = z + u + 1. Z aksjomatu x + S(y) = S(x + y) mamy z kolei z¯ + u + 1 = S(¯ z+u ¯). Po prostych podstawieniach w aksjomacie x = y ∧ y = z ⇒ x = z i oderwaniu poprzednika otrzymujemy PA ` z¯ + u + 1 = z + u + 1, co kończy dowód indukcyjny własności PA ` z¯ + u ¯ = z + u.
119
120
A. Obliczalność a arytmetyka Peana Teraz weźmy u, v, w ∈ N takie, że u + v = w. Rozpocznijmy od uwagi, że z aksjomatów x = y ∧ y = z ⇒ x = z oraz x = y ⇒ y = x łatwo otrzymać PA ` (x = z) ⇒ (x = y ⇒ y = z). Dokonamy podstawienia x/¯ u + v¯, z/w. ¯ Mamy wówczas PA ` (¯ u + v¯ = w) ¯ ⇒ (¯ u + v¯ = y ⇒ y = w). ¯ Ponieważ pokazaliśmy powyżej, że relacja równości jest reprezentowana w PA przez znak =, to z u + v = w można wywnioskować PA ` u + v = w ¯ i korzystając z poprzedniego akapitu w którym wywnioskowaliśmy PA ` u+v =u ¯ + v¯ ostatecznie otrzymujemy: PA ` u ¯ + v¯ = w. ¯ Możemy więc użyć reguły odrywania, aby uzyskać PA ` u ¯ + v¯ = y ⇒ y = w. ¯ Podstawiając teraz z/¯ u + v¯, x/w ¯ podobną drogą rozumowania uzyskamy PA ` y = w ¯⇒u ¯ + v¯ = y co pozwala nam napisać PA ` u ¯ + v¯ = y ⇐⇒ y = w. ¯ Wprowadzenie kwantyfikatora ogólnego do tej formuły kończy dowód reprezentowalności dodawania w arytmetyce Peana. Z kolei rozważymy funkcję mnożenia. W tym przypadku postępowanie będzie bardzo podobne do przypadku dodawania. Rozpoczniemy od okazania metodą indukcji, że PA ` u ¯ · v¯ = u · v. Dla v = 0 wystarczy dokonać podstawienia do aksjomatu x · 0 = 0 aby otrzymać u ¯ · 0 = 0. Teraz jako założenie indukcyjne przyjmijmy PA ` u ¯ · v¯ = u · v. Chcemy pokazać PA ` u ¯ · v + 1 = u · (v + 1). Najpierw wykorzystamy aksjomat x · S(y) = x · y + x podstawiając x/¯ u,y/¯ v co nam da: PA ` u ¯·v+1=u ¯ · v¯ + u ¯, co korzystając z założenia indukcyjnego możemy doprowadzić do postaci: PA ` u ¯·v+1=u·v+u ¯. Wiedząc, że liczby u · (v + 1),u · v + u są równe i korzystając z aksjomatu x = x otrzymamy PA ` u · (v + 1) = u · v + u. Korzystając z wcześniej pokazanego faktu PA ` u · v + u = u · v + u ¯, możemy wyprowadzić ¯. PA ` u · (v + 1) = u · v + u
A.2. Reprezentowalność relacji w PA Z aksjomatu x=y∧y =z ⇒x=z przy podstawieniach x/¯ u · v + 1,y/u · v + u ¯, z/u · (v + 1) po użyciu reguły odrywania otrzymamy ostatecznie PA ` u ¯ · v + 1 = u · (v + 1), co kończy indukcyjny dowód faktu PA ` u ¯ · v¯ = u · v. Dalej (odpowiednio tylko modyfikując podstawienia) postępowanie takie jak dla dodawania dokończy dowód tej części twierdzenia. Ostatnim krokiem dla funkcji podstawowych jest pokazanie, że funkcja charakterystyczna relacji mniejszości jest reprezentowalna w PA. Na mocy poprzedniego lematu wystarczy tylko okazać, że relacja < jest mocno reprezentowalna w PA. Musimy więc pokazać następujące implikacje: — jeżeli u < v to PA ` u ¯ < v¯, — jeżeli ¬(u < v) to PA ` ¬(¯ u < v¯). Będziemy stosowali indukcję względem v ∈ N. Gdy u < v to dla v = 0 na mocy fałszywości poprzednika pierwsza implikacja jest spełniona. Gdy ¬(u < v) to mamy u ≥ 0, skorzystajmy z faktu PA ` ¬(x < 0) aby poprzez podstawienie x/¯ v udowodnić zachodzenie drugiej z implikacji. Przyjmijmy teraz założenie indukcyjne mówiące o zachodzeniu tych implikacji dla indeksu v. Pokażemy ich zachodzenie dla v + 1. Skorzystajmy z faktu PA ` u ¯ < v + 1 ⇐⇒ u ¯ < v¯ ∨ u ¯ = v¯. Rozpocznijmy od pierwszej implikacji, czyli przyjmijmy, że zachodzi warunek u < v + 1. Jeżeli co więcej zachodzi u < v to z założenia indukcyjnego mamy PA ` u ¯ < v¯, co na mocy dołączania członów alternatywy prowadzi do wniosku PA ` u ¯ < v + 1. Z kolei dla u = v mamy (jak dowiedliśmy powyżej) PA ` u ¯ = v¯. Ponownie rozszerzając alternatywę uzyskamy PA ` u ¯ < v + 1. Dla drugiej implikacji mamy ¬(u < v + 1), co oznacza, że ¬(u < v) i ¬(u = v). Z założenia indukcyjnego otrzymamy dla pierwszego z tych warunków PA ` ¬(¯ u < v¯). Z mocnej reprezentowalności relacji równości = drugi z warunków daje nam PA ` ¬(¯ u = v¯). Mamy więc PA ` ¬(¯ u < v¯) ∧ ¬(¯ u = v¯), ¯ < v¯ ∨ u ¯ = v¯ i prawa de co ostatecznie (z lematu PA ` u ¯ < v + 1 ⇐⇒ u Morgana) daje nam pożądane twierdzenie: PA ` ¬(¯ u < v + 1). Powyższe rozważania kończą dowód indukcyjny mocnej reprezentowalności relacji mniejszości w PA, co na mocy poprzedniego lematu oznacza także reprezentowalność funkcji charakterystycznej K< w teorii PA.
121
122
A. Obliczalność a arytmetyka Peana Zgodnie z zapowiedzią - po wykazaniu reprezentowalności funkcji +, ·, K< - pozostaje nam pokazać zachowywanie reprezentowalności poprzez superpozycję i minimalizację efektywną. Niech f (u1 , . . . , un ) = g(h1 (u1 , . . . , un ), . . . , hk (u1 , . . . , un )) dla argumentów u1 , . . . , un ∈ N oraz niech funkcja g będzie reprezentowana przez formułę ψ, zaś funkcje hi przez formuły φi przy indeksie i ≤ k. Do reprezentacji funkcji f wystarczy przyjąć formułę ξ(x1 , . . . , xn , y) zdefiniowaną jako (∃y1 ) . . . (∃yn )φ1 (x1 , . . . , xn , y1 ) ∧ . . . ∧ φk (x1 , . . . , xn , yk ) ∧ ψ(y1 , . . . , yk , y). Dowiedziemy teraz tego faktu: niech hi (u1 , . . . , un ) = vi (1 ≤ i ≤ k), g(v1 , . . . , vk ) = w. Mamy wówczas (z reprezentowalności hi i g) dla i ∈ {1, . . . , k} PA ` φi (¯ u1 , . . . , u ¯n , y) ⇐⇒ y = v¯i oraz PA ` ψ(¯ v1 , . . . , v¯k , y) ⇐⇒ y = w. ¯ Pamiętając o definicji ξ, odwołamy się teraz do następującego faktu: PA ` ξ(¯ u1 , . . . , u ¯n , y) ⇐⇒ (∃y1 ) . . . (∃yn )y1 = u ¯1 ∧. . .∧yn = u ¯n ∧ψ(y1 , . . . , yn , y). Eliminując z prawej strony kwantyfikatory i korzystając z równości yi = u ¯i możemy za odpowiednie yi wstawiać u ¯i co nas doprowadzi do twierdzenia PA ` ξ(¯ u1 , . . . , u ¯n , y) ⇐⇒ ψ(¯ u1 , . . . , u ¯n , y). Biorąc jednak po uwagę PA ` ψ(¯ v1 , . . . , v¯k , y) ⇐⇒ y = w ¯ i łącząc to z poprzednią równoważnością otrzymamy PA ` ξ(¯ u1 , . . . , u ¯n , y) ⇐⇒ y = w, ¯ co dowodzi nam, że ξ reprezentuje funkcję f . To oznacza, że superpozycja prowadzi od funkcji reprezentowalnych w PA do funkcji reprezentowalnych w PA. Pozostaje nam pokazać to samo dla minimalizacji efektywnej. Niech więc teraz f (u1 , . . . , un ) = µx [g(u1 , . . . , un , x)] przy czym g jest reprezentowana przez formułę φ. Tym razem jako formułę reprezentującą f wybierzemy ξ(x1 , . . . , xn , y) zdefiniowane jako: φ(x1 , . . . , xn , y, 0) ∧ (∀z)[z < y ⇒ ¬φ(x1 , . . . , xn , z, 0)].
A.3. Własności PA
123
Niech więc f (u1 , . . . , un ) = w oraz g(u1 , . . . , un , i) = vi . Mamy wówczas dla wszystkich i ∈ N: PA ` φ(¯ u1 , . . . , u ¯n , ¯i, y) ⇐⇒ y = v¯i . Ponieważ interesuje nas przypadek y = 0, to zauważmy, że powyższe twierdzenie przyjmie następującą postać dla każdego i < w (korzystając przy tym z faktu vi 6= 0): PA ` ¬φ(¯ u1 , . . . , u ¯n , ¯i, 0). Z kolei z faktu vw = 0 wynika PA ` φ(¯ u1 , . . . , u ¯n , w, ¯ 0). Te dwa spostrzeżenia wraz z Lematem A.9 prowadzą nas do wniosku PA ` ξ(¯ u1 , . . . , u ¯n , y) ⇐⇒ y = w, ¯ co kończy dowód reprezentowalności w PA funkcji uzyskanych przez operację minimalizacji efektywnej na funkcjach reprezentowalnych w PA. W ten sposób po zakończeniu analizy wszystkich przypadków zakończyliśmy także dowód całego twierdzenia.
A.3. Własności PA Wykorzystamy teraz związek między funkcjami rekurencyjnymi a arytmetyką Peana do wykazania faktów o wielkiej doniosłości w matematyce. Ponieważ zagadnienia te nie należą bezpośrednio do teorii funkcji rekurencyjnych, ale są prezentowane raczej jako ilustracja użyteczności funkcji rekurencyjnych, dlatego w pewnych fragmentach ograniczymy się do skrótowych i nieformalnych omówień zamiast pełnych dowodów. Pierwszym problemem do rozwiązania będzie uzyskanie możliwości precyzyjnego matematycznego opisu związków między formułami, ich dowodami oraz wykorzystanymi w dowodach regułami wnioskowania. W tym celu należy wyrazić formuły jako liczby. Proces powyższy nazywa się arytmetyzacją. Arytmetyzację języka PA przeprowadzimy według procedury opisanej poniżej. W pierwszym etapie przyporządkujemy liczby naturalne wszystkim elementom alfabetu PA. Przykładowo: zadajmy kolejne liczby parzyste jako kody zmiennych, zaś kolejne liczby nieparzyste jako kody pozostałych symboli wprowadzonych w alfabecie PA. Tak więc zdefiniowaliśmy funkcję SN o argumentach z alfabetu PA, a wartościach w zbiorze liczb naturalnych. Techniczny opis takiej funkcji nie jest szczególnie istotny. W drugim etapie będzie dążyli do rozszerzenia kodowania na wszystkie formuły i termy. Dla łatwiejszego kodowania będziemy dokonywali translacji wyrażeń o strukturze opisanej przez nas w definicji języka PA na wyrażenia o strukturze prefiksowej. Przekład taki jest zarówno mechaniczny jak i jednoznaczny. Pozwala on nam uzyskać wyrażenia, w których zawsze
124
A. Obliczalność a arytmetyka Peana na pierwszym miejscu będzie spójnik logiczny, kwantyfikator, predykat lub symbol funkcyjny. Każda formuła φ będzie więc postaci s φ1 . . . φn , gdzie s to spójnik logiczny, kwantyfikator, predykat lub symbol funkcyjny, zaś φ1 , . . . , φn to podwyrażenia będące argumentami dla s. Numerem G¨odla dowolnej formuły (lub termu) φ będziemy nazywali liczbę naturalną oznaczoną przez dφe i wyznaczoną indukcyjnie: SN(s)+1 dφ1 e+1 n e+1 dφe = p0 p1 · · · pdφ , n gdzie dφi e, 1 ≤ i ≤ n są numerami G¨ odla podformuł lub termów φi , przy czym dla φi będących elementami alfabetu przyjmiemy: dφi e = SN(φi ). W powyższy sposób związaliśmy formuły i termy teorii PA z liczbami naturalnymi. Pozwala nam to wszystkie związki między formułami wyrazić w postaci zwykłych relacji liczbowych. Arytmetyzacja opisana jak powyżej pozwala także na sprawdzenie, czy zadana liczba n ∈ N jest numerem G¨odla pewnego wyrażenia PA i (w przypadku odpowiedzi twierdzącej) na konstrukcję tego wyrażenia na podstawie liczby n. Drugim problemem, który należy rozwiązać w toku naszego rozważania jest samo wyrażenie w postaci relacji i funkcji liczbowych istotnych dla nas cech wyrażeń języka PA i związków pomiędzy nimi. Poniżej wyliczymy te relacje i funkcje, które będą dla nas użyteczne: — Zm ⊂ N jest relacją, która stwierdza czy dana liczba jest numerem G¨odla zmiennej; — Term ⊂ N jest relacją, która mówi czy jej argument jest numerem G¨odla termu; — Fr ⊂ N to relacja sprawdzająca czy liczba jest numerem G¨odla pewnej formuły; — Wl ⊂ N2 jest spełniona jeżeli pierwszy argument jest numerem G¨odla formuły o zmiennej wolnej, której numerem G¨odla jest drugi argument; — Pd : N3 → N jest funkcją, która daje nam jako wynik numer G¨odla formuły uzyskanej przez podstawienie termu o numerze będącym trzecim argumentem do formuły o numerze będącym pierwszym argumentem za zmienną o numerze podanym jako drugi argument Pd; — Mp ⊂ N3 jest relacją, której argumentami są numery G¨odla formuł będących przesłankami i wynikiem reguły odrywania; — KwA, KwE ⊂ N2 są relacjami analogicznymi do Mp odpowiadającymi regułom wprowadzenia kwantyfikatorów; — Ak ⊂ N jest relacją mówiącą czy argument jest numerem G¨odla aksjomatu PA. Wszystkie powyższe relacje i funkcje można wyrazić w sposób rekurencyjny (wykorzystując metodę kodowania formuł w numery G¨odla) - szczegóły techniczne ich zdefiniowania zgodnie z zapowiedzią pomijamy. Prowadzi to
A.3. Własności PA
125
do ważnego wniosku, że istnieją w arytmetyce Peana formuły reprezentujące wszystkie powyżej wymienione relacje i funkcje. Nietrudno zauważyć, że z pomocą tych relacji i odwołując się do metody kodowania numerów G¨ odla można zdefiniować dwie kolejne relacje: u0 +1 Dow(u, v), która dla u = p0 · · · pnun +1 mówi czy ciąg formuł o numerach u0 , . . . , un jest dowodem formuły o numerze v. Za jej pomocą już łatwo zdefiniować relację Tw(v) ⇐⇒ (∃u)Dow(u, v), która mówi czy formuła o numerze v ma dowód w PA (czyli czy ta formuła jest twierdzeniem PA). Należy zauważyć, że relacja Tw z powodu użycia kwantyfikatora nieograniczonego nie jest relacją rekurencyjną (natomiast należy do klasy Σ01 ). Aby prowadzić dalsze rozważania musimy przyjąć podstawowe założenie o niesprzeczności arytmetyki Peana. Najpierw sformalizujmy to pojęcie: Definicja A.12. Teorię PA będziemy nazywali niesprzeczną wtedy i tylko wtedy, gdy dla żadnej formuły φ nie zachodzi równocześnie PA ` φ i PA ` ¬φ. Gdyby warunek niesprzeczności nie był spełniony w PA dla choć jednej formuły ψ, to reguła odrywania zastosowana do (ψ ∧ ¬ψ) ⇒ ξ, ξ dowolna formuła, pozwala na udowodnienie każdej formuły w PA. Stąd powyższa definicja jest równoważna faktowi, że w PA istnieje choć jedna formuła, która nie jest twierdzeniem PA. W dalszych rozważaniach (dla ułatwienia dowodu twierdzenia G¨odla) odwołamy się do mocniejszego pojęcia niesprzeczności: Definicja A.13. Arytmetykę Peana PA będziemy nazywali ω-niesprzeczną, wtedy i tylko wtedy gdy, dla każdej formuły φ(x) zachodzi: jeśli PA ` φ(¯ n), dla każdego n ∈ N to PA 6` (∃x)¬φ(x). To, że pojęcie ω-niesprzeczności jest silniejsze od pojęcia niesprzeczności pokażemy w poniższym twierdzeniu. Lemat A.14. Jeżeli arytmetyka Peana jest ω-niesprzeczna to jest także niesprzeczna. Dowód. Wskażemy - co będzie wystarczające na mocy uwagi zapisanej po definicji pojęcia niesprzeczności - istnienie takiej formuły, która nie jest twierdzeniem PA. Pokażemy, że taką formułą jest formuła: (∃x)¬(x = x ⇒ x = x). Oczywiście mamy PA ` x = x ⇒ x = x. Stąd dla dowolnego n ∈ N jest PA ` n ¯ = n ¯ ⇒ n ¯ = n ¯ . Dzięki ω-niesprzeczności otrzymujemy stąd PA 6` (∃x)¬(x = x ⇒ x = x).
126
A. Obliczalność a arytmetyka Peana Teraz możemy już podać jeden z najistotniejszych wyników w dziedzinie podstaw matematyki: twierdzenie G¨ odla mówiące o niezupełności arytmetyki Peana. Jak się okazuje, w obrębie arytmetyki Peana istnieje formuła, której nie można dowieść ani zaprzeczyć (nie można dowieść jej negacji). Twierdzenie A.15. Jeśli arytmetyka Peana PA jest ω-niesprzeczna, to istnieje formuła χ taka, że PA 6` χ oraz PA 6` ¬χ. Dowód. Rozpocznijmy od zdefiniowania relacji R ⊂ N2 takiej, że R(m, n) ⇐⇒ Fr(m) ∧ Wl(m, dxe) ∧ Dow(n, Pd(m, dxe, Num(m))), gdzie Num w rekurencyjny sposób nadaje numery G¨odla kolejnym liczebnikom. Takie określenie relacji R oznacza, iż R(m, n) zachodzi wtedy i tylko wtedy, gdy m jest numerem pewnej formuły PA o zmiennej wolnej x, a n jest numerem dowodu tej formuły, w której za zmienną wolną x podstawiono liczebnik m ¯ (odpowiadający numerowi tej formuły). Ze sposobu w jaki R jest zdefiniowana wynika, że R jest relacją rekurencyjną, więc - na mocy głównego twierdzenia poprzedniego paragrafu - można ją reprezentować mocno w PA. Oznaczymy formułę, która ją reprezentuje przez φ i wtedy zgodnie z definicją reprezentowalności będą zachodziły poniższe własności: R(m, n) ⇒ PA ` φ(m, ¯ n ¯ ), ¬R(m, n) ⇒ PA ` ¬φ(m, ¯ n ¯ ). Zbudujmy teraz formułę χ(x) jako (∀y)¬φ(x, y). Ta formuła ma oczywiście swój numer G¨ odla, który oznaczymy przez p, czyli p = d(∀y)¬φ(x, y)e. Ostatnim krokiem jest podanie formuły χ bez zmiennych wolnych, która spełni tezę twierdzenia. Będzie ona następującej postaci: (∀y)¬φ(¯ p, y). Zdanie to jest zwykle zwane zdaniem G¨odla. Zauważmy, iż χ(x) odpowiada sformułowaniu: formuła o jednej zmiennej wolnej i numerze x w przypadku podstawienia pod tą zmienną liczebnika odpowiadającego numerowi tej formuły nie ma dowodu. Mając to w pamięci łatwo dopowiedzieć, że formuła χ jest samozwrotna i odnosi się do siebie samej. Jest tak ponieważ znaczenie χ, które odpowiada zdaniu: ’formula χ nie ma dowodu’ można intuicyjnie zinterpretować jako stwierdzenie χ: ’ja (czyli formuła χ) nie mam dowodu’. Wystarczy pokazać, że tak zadane χ spełnia tezę twierdzenia. Rozpoczniemy od pokazania, że PA 6` χ. Poprowadzimy dowód dążąc do sprzeczności. Załóżmy więc, że zachodzi PA ` χ. Wówczas istnieje dowód χ, niech numerem tego dowodu będzie liczba k, ponieważ χ ma numer p to R(p, k),
A.3. Własności PA
127
¯ Poniewięc na mocy mocnej reprezentowalności R mamy PA ` φ(¯ p, k). waż jednak zachodzi PA ` χ to fakt ten oznacza, że otrzymamy także PA ` (∀y)¬ϕ(¯ p, y). Powyższa zależność pociąga w szczególnym przypadku ¯ dla k zachodzenie: P A ` ¬φ(¯ p, k). Okazuje się więc, że PA jest sprzeczna, co z kolei neguje ω-niesprzeczność teorii PA, stąd wynika fałszywość założenia PA ` χ. Tak więc ostatecznie otrzymaliśmy PA 6` χ. Teraz pozostaje pokazać drugą część tezy twierdzenia: PA 6` ¬χ. Wiemy już, że PA 6` χ. Stąd dla dowolnego k ∈ N zachodzi ¬R(p, k), więc PA ` ¯ dla dowolnego k. Dlatego z założonej ω-niesprzeczności PA wynika ¬φ(¯ p, k) PA 6` ∃y¬(¬φ(¯ p, y)). Powyższe wyrażenie jest równoważne faktowi: PA 6` ¬(∀y)¬φ(¯ p, y). Tak więc PA 6` ¬χ, co kończy cały dowód.
Pewne modyfikacje rozumowania pozwalają udowodnić to twierdzenie także przy słabszym założeniu zwykłej niesprzeczności arytmetyki Peana. Podane powyżej twierdzenie ma swoje dalej idące konsekwencje. Przy dodatkowych założeniach dotyczących formuły reprezentującej relację Tw można udowodnić, że zdanie G¨ odla jest w arytmetyce Peana równoważne zdaniu wyrażającemu niesprzeczność PA. Prostym przykładem zdania, które może wyrażać niesprzeczność teorii PA może być na przykład negacja formuły reprezentującej Tw(d0 = ¯ 1e). Ponieważ - jak pokazaliśmy - zdanie G¨odla nie ma dowodu w teorii PA to okazuje się, że i formuła wyrażająca niesprzeczność PA nie jest twierdzeniem arytmetyki Peana PA. Powyższy wynik jest treścią tak zwanego drugiego twierdzenia G¨ odla. Podamy teraz kolejny ważny wynik o arytmetyce Peana poprzedzając go jednak potrzebnym w dowodzie lematem. Lemat A.16. Dla każdej formuły φ(x) arytmetyki Peana z jedną zmienną wolną istnieje formuła ψ taka, że φ(dψe) jest równoważna na gruncie PA formule ψ. Do celu dowodu tego lematu wystarczy wziąć jako ψ formułę ψ(¯ p), gdzie ψ(x) jest formułą (∀y)[ξ(x, dxe, x, y) ⇒ φ(y), przy czym ξ(¯ u, v¯, w, ¯ z¯) reprezentuje z = Pd(u, v, w) zaś p jest numerem G¨odla formuły ψ(x). Teraz już możemy podać twierdzenie Tarskiego. Twierdzenie A.17. Jeżeli arytmetyka Peana nie jest sprzeczna, to nie istnieje formuła Θ(x) arytmetyki Peana taka, że PA ` ψ ⇐⇒ Θ(dψe).
128
A. Obliczalność a arytmetyka Peana Dowód. Znowu posłużymy się metodą niewprost. Przyjmijmy mianowicie, że taka formuła istnieje. Wówczas możemy rozważać także jej negację ¬Θ(x). Dzięki Lematowi A.16 wiemy, że istnieje dla niej formuła φ taka, że PA ` φ ⇐⇒ ¬Θ(dφe). Jednak z definicji formuły Θ mamy PA ` φ ⇐⇒ Θ(dφe), co prowadziłoby do sprzeczności teorii PA. Wynik powyższy można interpretować jako stwierdzenie, że nie istnieje formuła, która rozpoznawałaby numery G¨odla tych formuł PA, które są zdaniami prawdziwymi w standardowym modelu teorii PA, czyli w dziedzinie liczb naturalnych z naturalnie określonymi operacjami następnika, dodawania i mnożenia. Zakończymy podaniem jeszcze kilku uwag dotyczących rozstrzygalności różnych teorii matematycznych a w szczególności arytmetyki Peana. Rozpocznijmy od definicji. Definicja A.18. Teorię formalną nazywamy rozstrzygalną, jeżeli zbiór numerów jej twierdzeń jest zbiorem rekurencyjnym. Teorię formalną nazywamy nierozstrzygalną, jeżeli nie jest rozstrzygalna. Wychodząc z twierdzenia o mocnej reprezentowalności relacji (czyli i zbiorów) rekurencyjnych w PA można pokazać następujący fakt. Twierdzenie A.19. Jeżeli arytmetyka Peana PA jest niesprzeczna, to arytmetyka Peana PA jest nierozstrzygalna. Formalizując inne działy matematyki możemy otrzymać ściśle określone teorie formalne, do których można odnieść podobne rozważania jak do arytmetyki Peana. Nie wchodząc w szczegóły określania poszczególnych teorii wskażemy tylko jako przykłady teorii rozstrzygalnych teorię liczb rzeczywistych, teorię algebr Boole’a oraz arytmetykę dodawania (arytmetykę Presburgera). Z kolei jako przykłady teorii nierozstrzygalnych można wypisać rachunek predykatów I rzędu oraz sformalizowaną geometrię rzutową czy teorię mnogości Zermelo-Fraenkla.
Dodatek B Równoważność obliczeniowa maszyn Turinga i funkcji częściowo rekurencyjnych
B.1. Arytmetyzacja maszyn Turinga . . . . . . . . . . . . . 130 B.2. Obliczanie funkcji rekurencyjnych . . . . . . . . . . . . 132
130
B. Równoważność obliczeniowa maszyn Turinga i funkcji częściowo rekurencyjnych W tym dodatku zaprezentujemy krótki zarys dowodów prezentujących wzajemną równoważność dwóch podstawowych modeli obliczeniowych: mianowicie maszyn Turinga oraz funkcji częściowo rekurencyjnych.
B.1. Arytmetyzacja maszyn Turinga Nie prezentując szczegółowo wraz ze wszystkimi technicznymi detalami dowodu faktu, iż obliczenia maszyn Turinga mogą być symulowane przez funkcje częściowo rekurencyjne podamy opis, który wyjaśni sposób dowodu oraz pozwoli go - w razie potrzeby - zrekonstruować w matematycznie wyczerpującej postaci. Pierwszym etapem musi być skojarzenie danych oraz zawartości pamięci maszyny Turinga z liczbami naturalnymi. Ponieważ także taśma pusta powinna odpowiadać liczbie naturalnej (najlepiej zeru) należy wybrać pewien system wzajemnie jednoznacznego przekładu ciągów binarnych i liczb naturalnych. Jednym z prostszych pomysłów jest skojarzenie liczby n ∈ N z zapisem binarnym liczby (n+1) z którego wykreślono wiodącą jedynkę. Tak więc liczbie 0 odpowiada napis pusty, liczbie 1 odpowiada napis 0, liczbie 2 odpowiada napis 1, liczbie 3 napis 00 i dalej według tej samej zasady. Konfigurację maszyny Turinga można teraz opisać układem 4 liczb naturalnych nl , nr , ns , nz , gdzie nl , nr kodują części taśmy na lewo od głowicy oraz na prawo od głowicy, przyjmiemy przy tym, że - dla wygody obliczeniowej - prawa część taśmy będzie odczytywana od prawej do lewej (na przykład napis 011 będzie interpretowany jako 110). Pozostałe liczby to ns będąca po prostu numerem stanu, zaś nz znakiem (a dokładnej liczbą kodującą ten znak) pod głowicą. Łatwo zauważyć, że pojedyncze przejście konkretnej maszyny Turinga może być teraz opisane poprzez cztery funkcje fl , fr , fs , fz : N4 → N z których każda na podstawie bieżącego opisu liczbowego konfiguracji (nl , nr , ns , nz ) wyznacza jedną składową nowej konfiguracji po wykonaniu jednego kroku obliczeniowego: fl (nl , nr , ns , nz ) = n0l - wyznacza nową zawartość lewej części taśmy, fr (nl , nr , ns , nz ) = n0r - wyznacza nową zawartość prawej części taśmy, fs (nl , nr , ns , nz ) = n0s - wyznacza nowy stan, fz (nl , nr , ns , nz ) = n0z - wyznacza nowy symbol w komórce, która znajdowała się pod głowicą. Używając funkcji przejścia maszyny Turinga oraz prostych operacji arytmetycznych (dzielenie całkowite, mnożenie, dodawanie) można zdefiniować wszystkie te funkcje jako funkcje pierwotnie rekurencyjne: fl , fr , fs , fz ∈ PRIM. Kolejny etap polega na opisaniu wielokrokowej funkcji przejścia. W tym przypadku wystarcza dołączenie piątej zmiennej określającej liczbę kroków obliczenia do rozszerzonych funkcji iterujących przejścia maszyny Turinga:
B.1. Arytmetyzacja maszyn Turinga Fl , Fr , Fs , Fz : N5 → N, gdzie odpowiednio: Fl (nl , nr , ns , nz , t) wyznacza zawartość taśmy przed głowicą po t krokach obliczeniowych z konfiguracją początkową nl , nr , ns , nz ; Fr (nl , nr , ns , nz , t) wyznacza zawartość taśmy za głowicą po t krokach; Fs (nl , nr , ns , nz , t) wyznacza stan maszyny Turinga uzyskany po t krokach; Fz (nl , nr , ns , nz , t) wyznacza znak pod głowicą po t krokach. Zdefiniowanie takich funkcji Fl , Fr , Fs , Fz na podstawie fl , fr , fs , fz wymaga wykorzystania rekursji łącznie definiującej wszystkie funkcje Fl , Fr , Fs , Fz . Jednak taka postać rekursji może być sprowadzona do klasycznego schematu rekursji prostej poprzez wykorzystanie kodowania wartości kilku funkcji w jedną liczbę. To oznacza, że także funkcje Fl , Fr , Fs , Fz są funkcjami pierwotnie rekurencyjnymi. Aby wyznaczyć wynik obliczeń maszyny Turinga należy określić liczbę kroków koniecznych do dojścia do stanu finalnego. W tym celu wystarczy użyć operacji minimalizacji na funkcji Fs . Wówczas liczba kroków obliczenia t0 jest równa t0 = µt [Fs (nl , nr , ns , nz , t) ∈ F ], gdzie F jest zbiorem stanów finalnych maszyny Turinga. Dlatego składowe ostatecznego wyniku powstaną poprzez wstawienie wartości t0 do omówionych funkcji przejścia wielokrokowego, zaś pozostałe argumenty nl , nr , ns , nz należy ustawić zgodnie z początkowymi składowymi: nl odpowiada napisowi pustemu, nz to pierwszy znak danych, nr to reprezentacja odwróconej reszty danych, ns to numer stanu początkowego. Jak się więc w końcu okazuje wartość t0 jest wyznaczona za pomocą funkcji częściowo rekurencyjnej (uzyskanej z funkcji pierwotnie rekurencyjnej za pomocą operacji minimalizacji). Po wstawieniu t0 do wszystkich czterech funkcji Fl , Fr , Fs , Fz uzyskamy częściowo rekurencyjne funkcje wyznaczające wszystkie składowe wyniku. Przekształcenie tychże składowych w reprezentację całości wyniku na taśmie jest także prostym wykorzystaniem operacji arytmetycznych. Stąd jako wniosek otrzymamy istnienie takiej funkcji częściowo rekurencyjnej, która symuluje obliczenia zadanej maszyny Turinga. Dodatkowo warto zwrócić uwagę na to, że jeżeli maszyna Turinga nie kończy swojego działania (nie wchodzi w stan finalny) dla pewnych danych, to operacja minimalizacji jest niezdefiniowana - czyli funkcja symulująca także nie jest zdefiniowana dla tych danych wejściowych. To pozwala nam sformułować jako wniosek z powyższych rozważań następujące twierdzenie podsumowujące tę część rozważań.
Twierdzenie B.1. Funkcja obliczana przez dowolną maszynę Turinga (w zadanym kodowaniu) jest funkcją częściowo rekurencyjną.
131
132
B. Równoważność obliczeniowa maszyn Turinga i funkcji częściowo rekurencyjnych
B.2. Obliczanie funkcji rekurencyjnych W tej części pozostało nam uzasadnić, że funkcje częściowo rekurencyjne nie wnoszą dodatkowej mocy obliczeniowej w stosunku do możliwości obliczeniowych maszyn Turinga. Ponieważ różne warianty deterministycznych maszyn Turinga są wzajemnie równoważne można - stosownie do wygody programistycznej - korzystać z każdej dogodnej dla nas postaci (wielotaśmowej lub jednotaśmowej) maszyn Turinga. Rozważając możliwość obliczania funkcji częściowo rekurencyjnych przy użyciu maszyn Turinga możemy wybrać jedną z kilku równoważnych definicji zbioru funkcji częściowo rekurencyjnych. Jednym z wygodniejszych wariantów jest poniższa algebra funkcyjna : PREC1 = [{+, ×, K< }, {µ, c m : m ∈ N, m ≥ 1}]. W tym przypadku możemy pokazać poprzez stosunkowo proste konstrukcje (przy wybranym kodowaniu liczb naturalnych za pomocą napisów binarnych) jak zrealizować za pomocą maszyn Turinga dodawanie, mnożenie i badanie relacji mniejszości dwóch liczb. Ponieważ chodzi tutaj tak naprawdę o zaprogramowanie funkcji przejścia maszyn Turinga, rozważane zagadnienie staje się nietrudnym ćwiczeniem programistycznym. Kolejnym krokiem byłoby wykazanie, że jeżeli pewne funkcje mają odpowiedniki w postaci obliczających je maszyn Turinga, to funkcja, która będzie ich złożeniem także może być obliczona przez pewną maszynę Turinga. Bez utraty ogólności można rozpatrywać dwie funkcje jednoargumentowe f, g : N → N oraz ich złożenie h(x) = f (g(x)). Jest to ponownie dość oczywiste zadanie - wystarczy skleić dwie funkcje przejścia składanych maszyn Turinga Mf oraz Mg poprzez przenumerowanie ich stanów tak, aby stany obu maszyn tworzyły zbiory rozłączne, zaś stan finalny Mg odpowiadał stanowi początkowemu Mf (należy przy tym uwzględnić przesunięcie głowicy Mg tak, aby przy starcie Mf znajdowała się ona na początku danych). Wówczas uzyskamy funkcję przejścia maszyny Mh obliczającej pożądane złożenie funkcji. Ostatni etap polega na skonstruowaniu maszyny Turinga realizującej operację minimalizacji. Tak jak powyżej dla czytelności rozumowania rozważymy podstawowy przypadek minimalizowania funkcji f : N2 → N, dla której to funkcji istnieje odpowiadająca jest jednotaśmowa maszyna Turinga Mf . Wystarczy teraz zmodyfikować tę maszynę to postaci trzytaśmowej: pierwsza taśma służyłaby do obliczeń Mf druga do przechowywania inicjalnej wartości x, zaś trzecia taśma ustawiona na początku na liczbę 0 byłaby zwiększana w kolejnych cyklach o jeden. Zasadniczy układ obliczeń wyglądałby wówczas następująco:
B.2. Obliczanie funkcji rekurencyjnych 1. wykasuj zawartość pierwszej taśmy, a następnie przekopiuj na nią zawartość drugiej i trzeciej taśmy; 2. wykonaj na taśmie pierwszej obliczanie zaprogramowane w maszynie Turinga Mf ; 3. jeżeli obliczenia się zakończyły i otrzymanym wynikiem jest reprezentacja 0 zakończ obliczenia z wynikiem równym zawartości trzeciej taśmy; 4. jeżeli obliczenia się zakończyły z wynikiem różnym od 0 zwiększ liczbę na trzeciej taśmie o jeden i powróć do kroku 1. Łatwo zauważyć, że konstrukcja takiej maszyny Turinga jest kolejnym, dość oczywistym (choć nieco żmudnym) ćwiczeniem programistycznym. Tak skonstruowana maszyna Turinga będzie obliczała kolejne wartości f (x, 0), f (x, 1), f (x, 2), . . . aż do wyznaczenie takiej wartości y ∈ N, że f (x, y) = 0. Jak widać powyżej opisana maszyna Turinga realizuje programistycznie operację minimalizacji. Gdyby funkcja f była nieokreślona dla pewnej wartości f (x, i) występującej przed wyznaczeniem zera, lub f nigdy nie przyjmowałaby wartości 0 wówczas obliczenie tej maszyny Turinga także nie dawałoby żadnego poprawnego wyniku. Powyższe uwagi w pełni uzasadniają wniosek, że maszyny Turinga są w stanie obliczyć każdą funkcję częściowo rekurencyjną. Twierdzenie B.2. Dla każdej funkcji częściowo rekurencyjnej f : Nk → N, f ∈ PREC istnieje maszyna Turinga obliczająca wartości tej funkcji.
133
Dodatek C Spis podstawowych oznaczeń i konwencji
136
C. Spis podstawowych oznaczeń i konwencji N - zbiór liczb naturalnych, N = {0, 1, 2, . . . , n, . . .} x, x0 , . . . , xn , . . . - zmienne w zbiorze N ~x - wektor zmiennych naturalnych i, j, k, n, . . . - liczby naturalne (zwykle używane jako indeksy lub parametry) a ∈ A - relacja przynależności do zbioru A ⊂ B, A ⊆ B, A ( B - zawieranie zbiorów, zawieranie lub równość zbiorów, zawieranie właściwe A ∪ B, A ∩ B, ¬A = N − A - suma zbiorów, iloczyn zbiorów, dopełnienie zbioru do zbioru N c m - operator złożenia funkcji m-argumentowej z ciągiem funkcji r - operator rekursji prostej µ - operator minimalizacji (nieograniczonej) µr - operator minimalizacji efektywnej µ< - operator minimalizacji ograniczonej PRIM - zbiór funkcji pierwotnie rekurencyjnych PREC, PREC1 - zbiór funkcji częściowo rekurencyjnych REC - zbiór funkcji rekurencyjnych (całkowicie rekurencyjnych) EREC - zbiór funkcji elementarnie rekurencyjnych Ei - i-ta klasa hierarchii Grzegorczyka KA , KR - funkcja charakterystyczna zbioru A (lub relacji R) K= - funkcja charakterystyczna relacji równości K< - funkcja charakterystyczna relacji mniejszości A - funkcja Ackermanna ˙ - odejmowanie ograniczone − Q - zbiór stanów maszyny Turinga Σ - zbiór symboli (alfabet) maszyny Turinga t - symbol komórki pustej (blank) λx.M - abstrakcja termu M względem x w rachunku Churcha α → - α-konwersja β
→ - β-konwersja γ → - γ-konwersja fA - funkcja generująca zbiór A J - funkcja kodowania pary (lub wektora) liczb naturalnych J1 , J2 - funkcje dekodujące składowe zakodowanej pary Tm - funkcje numeracyjne {e} - funkcja o indeksie e w zadanej numeracji IF - zbiór indeksowy zbioru F pi - i-ta liczba pierwsza exp(x, y) - największa liczba n ∈ N spełniająca y n |x K(x) - miara złożoności liczby x ∈ N A0 - skok zbioru A
137 A ≤T B - T -redukowalność zbioru A do zbioru B A ≤m B - m-redukowalność zbioru A do zbioru B σ - segment początkowy Σ0n , Π0n , ∆0n - klasy (poziomy) hierarchii arytmetycznej CX - rodzina dopełnień klasy X T ` φ - φ jest twierdzeniem teorii T dφe - numer G¨ odla formuły φ W całym skrypcie pojęcia klasy i zbioru używane są wymiennie jako nazwy równoważne. Kolejność argumentów we wprowadzonych operatorach (w szczególności rekursji prostej i minimalizacji) dobierana jest według wygody i nie musi być identyczna ze specyfikacją w definicji (choć zawsze może być sprowadzona stosownym przekształceniem do postaci z definicji).
Bibliografia [1] G.S.Boolos, R.C. Jeffrey, Computability and Logic, Cambridge University Press, 1989. [2] Church’s Thesis After 70 Years, eds. A. Olszewski, J. Woleński, R. Janusz, Ontos Verlag, 2006. [3] N. Cutland, Computability: An Introduction to Recursive Function Theory, Cambridge University Press, 1980. [4] S.B. Cooper, Computability Theory, Chapman and Hall/CRC, 2004. [5] M. Davis, Computability and Unsolvability, McGraw-Hill, 1958. [6] A. Grzegorczyk, Zarys logiki matematycznej, Biblioteka Matematyczna, PWN, 1961. [7] Handbook of Computability Theory, ed. E.R. Griffor, Elsevier, 1999. [8] J.R. Hindley, J.P. Seldin, Introduction to Combinators and λ-Calculus, Cambridge University Press, 1986. [9] J.E. Hopcroft, R. Motwani, J.D. Ullman, Wprowadzenie do teorii automatów, języków i obliczeń, Wydawnictwo Naukowe PWN, 2005. [10] E. Mendelson, Introduction to Mathematical Logic, Chapman and Hall/CRC, 2009. [11] R. Murawski, Funkcje rekurencyjne i elementy metamatematyki, Wydawnictwo Naukowe UAM, 2010. [12] P. Odifreddi, Classical Recursion Theory, Volume I, II, Elsevier, 1989, 1999. [13] H. Rogers, Jr., Theory of Recursive Functions and Effective Computability, McGraw-Hill, 1967. [14] U. Sch¨oning, R. Prium, Gems of Theoretical Computer Science, Springer, 1998. [15] A. Shen, N.K. Vereshchagin, Computable Functions, Student Mathematical Library, AMS, 2003. [16] M. Sipser, Introduction to the Theory of Computation, PWS Publishing Company, 1997. [17] C.H. Smith, A Recursive Introduction to the Theory of Computation, Springer-Verlag, 1994. [18] R.M. Smullyan, Recursion Theory for Metamathematics, Oxford Uni-
140
Bibliografia versity Press, 1993. [19] R.I. Soare, Recursively Enumerable Sets and Degrees, Springer-Verlag, 1987. [20] J. Stillwell, Roads to Infinity, A.K.Peters, Ltd., 2010. [21] R.S. Wolf, A Tour through Mathematical Logic, The Carus Mathematical Monographs, MAA, 2005. [22] A. Yasuhara, Recursive Function Theory and Logic, Academic Press, 1971.
Skorowidz
Algebra funkcyjna, 4, 5, 14, 17, 26, 132 Arytmetyka Peana, 112–115 termy, 112 własności, 123–128
ciągów liczbowych, 60, 109 par, 20, 70 Konwersje λ-rachunku, 34
Domknięcie indukcyjne, 4, 5, 10, 12–15, 18
Maszyny Turinga, 4, 28–31, 130–133 jednotaśmowa, 28 niedeterministyczna, 31 wielotaśmowa, 31 Minimalizacja efektywna, 13, 21 nieograniczona, 11–14 ograniczona, 13, 18
Funkcja Ackermanna, 21, 22 uniwersalna, 56–63, 65, 77, 78, 95 Funkcje całkowite, 10, 12, 13, 18, 20, 46, 82, 83 częściowe, 4, 12 częściowo rekurencyjne, 5, 8, 11–14, 17, 31, 36, 38, 39, 42, 50, 52, 56, 62, 63, 65–67, 69–71, 74, 76–78, 82–84, 87, 88, 90, 109, 130–133 definicja, 13, 14, 82 elementarnie rekurencyjne, 18–20, 42, 52–54, 56, 63 definicja, 18 pierwotnie rekurencyjne, 8–11, 13, 19, 20, 22, 25, 42, 57, 58, 62, 63, 74, 95, 130, 131 definicja, 10, 57 rekurencyjne, 13, 20 definicja, 13 reprezentowalne w PA, 119 Hierarchia arytmetyczna, 102–108 Grzegorczyka, 15 Indeks funkcji, 63, 64 Kodowanie
Liczby losowe, 90, 91
Numeracje, 62–64 funkcji, 63, 64 zbiorów i relacji, 69, 89 Permutacja obliczalna, 78 Postać normalna, 52–56 Rachunek Churcha (λ-rachunek), 33–36 Rachunek kombinatorów, 36 Redukowalność, 84–86 m-redukowalność, 86, 87 T-redukowalność, 83, 84, 86 Rekursja prosta, 10, 20 Relacja uniwersalna, 105, 106 Relacje rekurencyjne (rozstrzygalne), 42–44 definicja, 42 rekurencyjnie przeliczalne, 50 definicja, 50 reprezentowalne w PA, 115–123 Skok zbioru, 96 Stopnie m-stopnie, 86, 87
142
Skorowidz Turinga (T-stopnie), 83, 84 Teza Churcha, 38–39 Twierdzenie G¨ odla, 126 o braku funkcji uniwersalnej, 56 o funkcji Ackermanna, 25 o istnieniu funkcji uniwersalnej dla klasy PREC, 63 o istnieniu funkcji uniwersalnej dla klasy PRIM, 59, 62 o numeracji, 64 o punkcie stałym, 75 o rekurencyjności (rozstrzygalności) zbioru, 45 o rekursji, 76 o zbiorach indeksowych, 66 o zbiorach rekurencyjnie nierozdzielonych, 49 s-m-n, 74 Warunki efektywnej obliczalności, 14, 39 Złożenie funkcji (superpozycja), 9 Zbiór uniwersalny, 89 Zbiory całkowicie produktywne, 91 indeksowe, 66 kreatywne, 93 produktywne, 93 proste, 88 rekurencyjne (rozstrzygalne), 42–44 definicja, 42 rekurencyjnie przeliczalne, 45–50, 69, 70, 102 definicja, 45 rekurencyjnie rozdzielone, 49