Motto:

    “W książce Stephena Hawkinga z 1988 Krótka historia czasu (ang. A Brief History of Time) na początku pierwszego rozdziału jest opisana następująca anegdota, wymiana zdań pomiędzy naukowcem i starszą panią:

Znany naukowiec (być może filozof Bertrand Russell) wykładał astronomię dla ogólnej publiczności. Opisywał, że Ziemia porusza się wokół słońca, słońce porusza się wokół centrum galaktyki.
Pod koniec wykładu starsza pani siedząca w końcu sali wstała : “Wszystko to co pan nam powiedział to są doprawdy głupoty. W rzeczywistości świat jest wielką płytą podtrzymywaną na grzbiecie wielkiego żółwia”
Naukowiec uśmiechnął się i z przekąsem zapytał “A na czym stoi żółw”?
“Jest pan bardzo sprytny młody człowieku”, odpowiedziała starsza pani, “Po prostu tam są żółwie aż do samego końca”.”

    Zakładam że czytelnik wie na czym polega pojęcie antynomii. W wielu znanych antynomiach, jak antynomii kłamcy czy antynomii Rusella klas samozwrotnych mamy do czynienia z sytuacją w której nie jesteśmy w stanie przypisać w niesprzeczny sposób wartości logicznej zdaniom związanym z tymi paradoksami. Sprawa jest omawiana przez wszystkie podręczniki teorii mnogości, logiki itp.W popularnej kulturze szczególnie głęboko zapisało sie zdanie „Ja kłamię” zwane antynomią kłamcy. Jeśli osoba wypowiadająca to zdanie mówi prawdę, czyli zdanie P=”ja kłamię” jest prawdziwe, to stwierdza że kłamie czyli wypowiada fałszywe zdanie co oznacza że kłamie mówiąc ze kłamie więc mi prawdę. Ogólnie przyjętym rozwiązaniem jest eliminacja z języka zdań samozwrotnych a więc wypowiadających treści na swój własny temat.

    Rozwiązanie takie jest kosztowne. Z języka zostają wyeliminowane nie tylko antynomie jak antynomia kłamcy, ale i zupełnie nieszkodliwe zdania jak „ja mówię prawdę”.

    Powstaje pytanie na ile rozwiązanie to jest skuteczne. Powszechnie uważa się że jest. Nic jednak dziwnego że pojawiają się próby wynajdywania antynomii bez samozwrotności. Przykładem właśnie takiej wynalazczości jest paradoks Yablo. Ma on postać następującego, nieskończonego, przeliczalnego, ciągu zdań (dalej będę ów ciąg oznaczał przez (Y)):

(Y0) dla każdego n>0 zdanie Yn jest fałszywe
(Y1) dla każdego n>1 zdanie Yn jest fałszywe
(Y2) dla każdego n>2 zdanie …..
.
.
itp.

    Zanim zaczniemy analizować (Y) rozpatrzmy prostsze przykłady.

    Pierwszym niech będzie tzw. koło kłamców. Jest to ciąg k>1 zdań, o następującej konstrukcji. Pierwsze zdanie K0 stwierdza że zdanie K1 jest fałszywe (lub że osoba K kłamie). Zdanie K1 stwierdza że zdanie K2 jest fałszywe. … Ostatnie zdanie Kk stwierdza że K0 jest prawdziwe Dla tak zadanego ciąg zdań nie jesteśmy w stanie przypisać wartościowania, które zdania są prawdziwe a które fałszywe, w konsystentny sposób. Proszę by czytelnik zabawił się tym ciągiem dla 2 zdań P i Q, następującej treści P=”~Q” Q=”P”.

    Powyższy przykład jest o tyle ważny, że samozwrotność jest w nim wmontowana w pośredni sposób. Żadne ze zdań Ki nie jest samozwrotne, ale dzięki konstrukcji całego ich zbioru ( ostatnie zdanie wypowiada treść na temat prawdziwości pierwszego ) uzyskujemy sprzeczność. Czyli wykluczenie zdań samozwrotnych „atomowo” nie rozwiązuje problemu. W celu likwidacji antynomii związanych z samozwrotnością, należy wykluczać cale zbiory zdań samozwrotnych. W wypadku zbiorów skończonych sprawa wydaje sie dosyć dobrze określona.

    W wypadku nieskończonych ciągów zdań, rzeczy mają sie jednak inaczej. Rozpatrzmy jako drugi przykład następujący zbiór zdań ( dobrany tak by przypominał nieco sekwencję Yablo (Y)):

(P0) ~P1 ^ ~P2
(P1) ~P2 ^ ~P3
(P2) ~P3 ^ ~P4
(P3) ~P4 ^ ~P5
.
.
itd

    Zdanie P0 stwierdza że P1 i P2 są fałszywe. Zdanie P1 nie odnosi się w żaden sposób do treści zdania P0, i żadne z wypisanych ( i możliwych do wypisania) zdań tego zbioru nie wypowie żadnej treści o zdaniu P0. Wygląda na to że nie ma tu żadnej samozwrotności. Czy możemy ustalić jaka jest prawdziwość zdań tego systemu? Załóżmy że zdanie P0 jest prawdziwe. Oznacza to że fałszywe są zdania P1 i P2. Skoro zdanie P1 jest fałszywe, to prawdziwe jest następujące zdanie ~P1 = ~(~P2 ^ ~P3) = P2 v P3 gdzie użyliśmy prawa de Morgana dla negacji koniunkcji. Ale zdanie P2 jest fałszywe ( bo stwierdza to zdanie P0) zatem zdanie P3 musi być prawdziwe ( a zdanie P2 fałszywe). Wypisując uzyskany ciąg wartości prawdziwości zdań ( P0P1P2 itp.) uzyskujemy następujący ciąg (0-fałsz, 1-prawda): 1001

    Zauważmy że w wypadku zdania P3 uzyskaliśmy orzeczenie że jest ono prawdziwe. Ponieważ konstrukcja zdań P4 i następnych jest taka sama jak zdań poprzednich, wartościowanie zdania P4 przy uzyskanej prawdziwości zdania P3 odbędzie sie wg. tych samych zasad ( tego samego rozumowania) co w wypadku zdania P1 przy założonej prawdziwości zdania P0. Udało nam sie tym samym ustalić wartościowanie pełnego ciągu zdań,w postaci:
1001001001001001…

    Wynik ten łatwo uogólnić posługując się następującym rozumowaniem. Jeśli mamy ciąg zdań jak powyżej to zakładając że pierwsze zdanie P0 jest prawdziwe uzyskujemy następującą treść dla zdania ~P1: „spośród dwóch następnych zdań co najmniej jedno jest prawdziwe”. Jednak zdanie P0 stwierdza że fałszywe są zdania P1 i P2 więc prawdziwe musi być zdanie P3. Łatwe uogólnienie ma następującą postać.

    Niech będzie dany nieskończony ciąg zdań (P) = {P0,P1…Pk,…} o następującej konstrukcji:

(P0) ~P1 ^ ~P2 ^ ~P3 ^ … ^ ~Pk
(P1) ~P2 ^ ~P3 ^ ~P4 ^ … ^ ~P(k+1)
.
.
(Ps) ~P(s+1) ^ ~P(s+2) ^ … ^ ~P(s+k)

.

.

.

 

    Wówczas wartościowanie w którym P0 jest prawdziwe, po czym następuje k zdań nieprawdziwych, po czym P(K+1) jest prawdziwe i reszta ciągu jest okresowa jest prawidłowym wartościowaniem ciągu zdań (P).

    Tu uwaga na temat drzewka. Wartościowanie dla pierwszego ciągu powyżej, P0 = ~P1 ^ ~P2 itd. można narysować za pomocą drzewa. Każdy węzeł drzewa odpowiada zdaniu Pi dla pewnego i. Wierzchołek drzewa odpowiada zdaniu P0. Kiedy zdanie jest prawdziwe – idziemy do lewego dziecka, kiedy jest fałszywe do prawego. Określenie konsystentnego wartościowania oznacza że zbiór zdań wyznacza pewną ścieżkę na drzewie. Zdania nie są samozwrotne więc nie ma żadnych cykli i cała procedura sprowadza sie do znalezienia właściwej ścieżki. Zdanie P0 oznacza że 2 następne ścieżki po nim muszą być w lewo. Wchodząc na drzewo zakładamy że P0 jest prawdziwe czyli drzewo wisi na gałęzi skierowanej w lewo i zaczepionej w P0 ( która jednak nie jest częścią drzewa) Skoro zdanie P0 jest prawdziwe spośród 2 następnych ścieżek po ) 1 jedna musi być w prawo. Stosowna ścieżka istnieje, a rysunek trzeba sobie zrobić samemu. Bardzo to przypomina drzewo Sterna Brocota które także jest zawieszone na 2 gałęziach które jednak nie reprezentują liczb, a są jedynie generatorami grupy wolnej rozpinającej drzewo…

Podajmy kolejny, bardziej złożony koncepcyjnie przykład. Weźmy nieskończony zbiór zdań (Z) = {Z0,Z1,Z2,…} o następującej konstrukcji:

 

(Z0) ~Z1

(Z1) ~Z2 ^ ~Z3

(Z2) ~Z3 ^ ~Z4 ^ ~Z5

(Z3) ~Z4 ^ ~Z5 ^ ~Z6 ^ ~Z7

.

.

itd

 

    Zdanie Z(n) zawiera n+1 wyrazów każdy będący zaprzeczeniem zdań o kolejnych numerach rozpoczynających się od n+1. Posługując się podobnym rozumowaniem jak w wypadku zdań (P) uzyskamy stosowne, niesprzeczne wartościowanie zdań (Z). W szczególności jeśli zdanie Z0 jest prawdziwe, to co najmniej jedno ze zdań Z2 i Z3 musi być prawdziwe. Może być to zdanie Z2 ale wówczas zdanie Z3 musi być fałszywe. czyli ciąg może zaczynać się tak: Z0-Z1-Z2-Z3 = 1010 itp. Jeśli założymy że zdanie Z3 jest prawdziwe, Zdanie Z2 ma dowolne wartościowanie. Jak widać system Z jest mniej sztywny niż system P który dla założenia wartości logicznej zdania P0 określał jednoznacznie wartości logiczne pozostałych zdań.

    Jesteśmy gotowi do rozważenia paradoksu Yablo. Temat ten ma bogatą literaturę. Paradoks ogłoszono w 1993 roku, w pracy „Paradox without Self-Reference”. Większość dyskusji wokół tego tematu dotyczy oświadczenia autora że paradoks nie zawiera zdań samozwrotnych. I rzeczywiście trudno się ich w zbiorze zdań (Y) dopatrzyć. Pojawiają się jednak analizy które starają się zapisać cały ów zbiór jako jedno zdanie z dodatkowym kwantyfikatorem po numerze zdania. Oczywiście tak powstałe zdanie jest samozwrotne ale nie jest paradoksem ogłoszonym przez Yablo. Inne próby obalenia paradoksu dotyczą dowodzenia że teoria typów zbudowana na zbiorze (Y) nie jest dobrze ufundowana ( nie spełnia aksjomatu ufundowania Teorii Mnogości), co może oznaczać że teorie w których da sie zapisać paradoks Yablo ( a które tym samym mogą być niebezpiecznie bliskie sprzeczności!) nie mają typów zgodnych z aksjomatyką teorii mnogości co jest zdecydowanie patologią. Nie czuję sie na siłach komentować tych wielu prac, a w większości przypadków nawet nie rozumiem dowodu że zdania (Y) prowadzą do paradoksu. Spójrzmy na przykład do tekstu rzetelnego źródła – Bolander, Thomas, „Self-Reference”, The Stanford Encyclopedia of Philosophy (Fall 2012 Edition), Edward N. Zalta (ed.) Autor widzi sprawę tak:

„We can then derive a contradiction as follows:

First we prove that none of the sentences Si can be true. Assume to obtain a contradiction that Si is true for some i. Then it is true that “for all j>i, Sj is not true”. Thus none of the sentences Sj for j>i are true. In particular, Si+1 is not true. Si+1 is the sentence “for all j>i+1, Sj is not true”. Since this sentence is not true, there must be some k>i+1 for which Sk is true. However, this contradicts that none of the sentences Sj with j>i are true.

We have now proved that none of the sentences Si are true. Then, in particular, we have that for all j>0, Sj is not true. This is exactly what is expressed by S0, so S0 must be true. This is again a contradiction.”

    Dalej zaś następują następujące, cokolwiek zagadkowe słowa: „Yablo’s paradox demonstrates that we can have logical paradoxes without self-reference – only a certain kind of non-wellfoundedness is needed to obtain a contradiction. There are obviously structural differences between the ordinary paradoxes of self-reference and Yablo’s paradox: the ordinary paradoxes of self-reference involve a cyclic structure of reference, whereas Yablo’s paradox involve an acyclic, but non-wellfounded, structure of reference. More precisely, the referential structure in self-referential paradoxes such as the liar is a reflexive relation on a singleton set, whereas the referential structure in Yablo’s paradox is isomorphic to the usual less-than ordering on the natural numbers, which is an irreflexive relation. Even though there is this difference, Yablo’s paradox still share most properties with the ordinary paradoxes of self-reference. When solving paradoxes we might thus choose to consider them all under one, and refer to them as paradoxes of non-wellfoundedness. In the following we will however stick to the term paradoxes of self-reference, even though most of what we say will apply to Yablo’s paradox and related paradoxes of non-wellfoundedness as well.”

    Jak zatem rozumieć sprzeczność w paradoksie Yablo? Może wcale nie mamy tu paradoksu skoro to jest złe ufundowanie? Co znaczy to bliżej nieokreślone pojęcie? Najwyraźniej autor hasła w zacytowanej encyklopedii ma problemy z określeniem co ono znaczy, choć oczywiście jakaś analogia z aksjomatem ufundowania wydaje się tu narzucać. Wydaje się że nie jest to przypadek, a w poprzednim, niezbyt udanym wpisie, pojawił się przykład eksploatujący układ teorii które być może, wymagają do konstrukcji, obiektów źle ufundowanych w sensie teorii mnogości ( czy tak jest pozostaje dla mnie otwartym problemem) .

    Moim zdaniem należy patrzeć na tą kwestię w następujący sposób.

    Początkowe zdania (Y) stwierdzają pewną treść o pozostałych zdaniach systemu. W szczególności zdanie Y0, stwierdza że każde zdanie w zbiorze zdań (Y1) = {Y1,Y2,…} jest fałszywe. Co mówi zdanie Y1? Zdanie Y1 stwierdza, że każde zdanie w zbiorze (Y2) = {Y2,Y3…} jest fałszywe. Wynika z tego, że oba te zdania stwierdzają, że zdania zbioru będącego częścią wspólną zbiorów (Y0) i (Y1) są fałszywe. Jednak jednocześnie zdanie Y0 stwierdza także że zdanie Y1 jest fałszywe. Innymi słowy nie mamy tu do czynienia z samozwrotnością, jak błędnie moim zdaniem twierdzą rozmaici autorzy, ale wprost z dwoma ( nieskończoną ilością) zdań zwyczajnie sprzecznych. Aby zobaczyć to jaśniej, zapiszmy nasze zdania w następującej postaci:

Y0= ~Y1 ^ ~(U)
Y1= ~(U)

    Gdzie przez (U) rozumiemy pewien zbiór zdań ( dokładnie {Y2,Y3,Y4,…} ) zaś ~(U) należy rozumieć jako koniunkcję zaprzeczenia wszystkich zdań składowych (U). Wynika z tego że Y0 i Y1 nie moga być jednocześnie prawdziwe lub jednocześnie fałszywe. Oczywiście dla skończonej ilości zdań ( gdyby w przykładzie powyżej rozumieć (U) jako zdanie a nie zbiór zdań), stosowne wartościowanie istnieje – możemy przyjąć że zdania Y0 i Y1 są fałszywe, zaś „zdanie” (U) prawdziwe i jest to możliwe dla dowolnej skończonej ilości zdań o konstrukcji podobnej jak zdania powyżej. Jednak (U) nie jest tu zdaniem a całym zbiorem zdań. Widać wyraźnie że paradoks nie pojawia się tu na skutek samozwrotności ale w wyniku pewnych własności nieskończonego zbioru zdań.

    I w tym miejscu pojawia się pewien pomysł. Jak wiadomo w arytmetyce wyrażenia postaci 1/0 nie mają określonego sensu ( ba! są jawnie niepoprawne lub niezdefiniowane). Niemniej istnieje możliwość określenia ich wartości w pewnego rodzaju warunkach, i właściwe używanie symbolu nieskończoności wraz z definicjami uzupełniającymi reguły arytmetyki mnożenia i dodawania, pozwala pewne rachunki prowadzić w sposób konsystentny. Nasze postępowanie mogłoby zatem polegać tu na zdefiniowaniu logicznych praw operowania nieskończonym zbiorem zdań (U) w rozumowaniach jak powyżej i na wykazaniu że tak zdefiniowany element pozwala na zapisanie paradoksu Yablo.

    Załóżmy zatem że obowiązują następujące zasady:

  1. nie wolno nam orzekać o prawdziwości zdania (U) – prawdziwość tego zdania jest tematem tabu;
  2. wszelkie rachunki logiczne przeprowadzamy w sposób klasyczny ale z końcowego wyniku, na każdym kroku wymazujemy (U)
  3. jeśli musimy w trakcie rozumowania rozpatrywać alternatywę przypadków, musimy dokonać założeń na temat zdań o największej nieokreśloności w stosunku do (U) czyli na przykład w wypadku dwu zdań t=~(U) oraz s = ~x ^ ~ (U) jeśli rozpatrujemy alternatywę t v s musimy przyjąć przypadek że s jest prawdziwe ( bo podobne założenie co do prawdziwości/fałszu t przenosiłoby się bezpośrednio na zdanie (U), w wypadku zdania s pozostaje/pozostają inne mozliwści )

    Punkt 3 stanie się jaśniejszy po rozpatrzeniu poniższych rachunków.

    Postępując w taki sposób rozpatrzmy zespół zdań:
Y0= ~Y1 ^ ~Y2 ^ ~ Y3 ^ ~(U)
Y1= ~Y2 ^ ~ Y3 ^ ~(U)
Y2= ~ Y3 ^ ~(U)
Y3 = ~(U)

    Załóżmy że zdanie Y0 jest prawdziwe, dostaniemy w ten sposób następujące rozumowanie ( każda następna linia wynika z poprzedniej):
Y0 =>
~Y1 ^ ~Y2 ^ ~ Y3 ^ ~(U) => ( wymażemy (U) – patrz reguła 2 )
~Y1 ^ ~Y2 ^ ~ Y3 => ( skoro koniunkcja to możemy wziąć jako zdanie prawdziwe ~Y1)
~Y1 =>
~( ~Y2 ^ ~ Y3 ^ ~(U) ) => (zastosujemy prawa de Morgana dla koniunkcji)
Y2 v Y3 v (U) => ( dalej wymażemy (U) – patrz reguła 2 )
Y2 v Y3 =>
sprzeczność z założeniem że Y0 jest prawdziwe.

    Czyli Y0 nie możę być prawdziwe.

    Odwrotnie załóżmy że Y0 jest fałszywe.
~Y0 =>
~(~Y1 ^ ~Y2 ^ ~ Y3 ^ ~(U)) => (stosujemy prawo de Morgana dla koniunkcji)
Y1 v Y2 v Y3 v (U) => ( wymażemy (U) – patrz reguła 2 )
Y1 v Y2 v Y3 => ( tu użyjemy reguły 3 i założymy że z tej alternatywy wynika że prawdziwe musi koniecznie być zdanie Y1 – bo w najmniej sztywny sposób określa warunki dla prawdziwości zdania (U)) ***
Y1 =>
~Y2 ^ ~ Y3 ^ ~(U) => ( dalej wymażemy (U) – patrz reguła 2 )
~Y2 ^ ~ Y3 =>
~Y2 =>
~ (~ Y3 ^ ~(U) ) => (prawa de Morgana)
Y3 v (U) => ( dalej wymażemy (U) – patrz reguła 2 )
Y3 =>
sprzeczność z linią stwierdzającą prawdziwość Y1 ( która wynikała z fałszywości Y0).

    Czyli Y0 nie może być fałszywe.

    Widać że rozumowanie powyższe od miejsca oznaczonego *** działa dokładnie tak jak pierwsza część dowodu ( dotycząca przypadku kiedy Y0 jest prawdziwe). Oczywiście rozumowanie to jest niepoprawne logicznie. nie mam także żadnej pewności że wprowadzenie reguł 1,2,3 nie prowadzi do jawnej sprzeczności w systemie „zwykła logika” + 1,2,3. Zapewne prowadzi. Celem przedstawionego rachunku nie było „udowodnienie” że paradoks Yablo jest paradoksem, bo to łatwo jest dowieść bez „sztucznych reguł”. Moim celem było zwrócenie uwagi na to, że realizacja tego paradoksu nie wymaga samozwrotności a jedyne istnienia „elementu tabu” który oczywiści imituje działanie „nieskończonego zbioru zdań” co samo w sobie pozwala na zapisanie paradoksu. Oczywiście najwięcej kontrowersji budzi skomplikowana reguła 3 która pozwala nam w dowodzie związanym z założeniem ~Y0 odtworzyć postępowanie dowodowe z części z opcją Y0. Jest to cena jaką płacimy za skończoną ilość wypisanych wyrażeń i rezygnację z użycia kwantyfikatorów. Jeśli czyta to wypracowanie zawodowy logik lub matematyk, uprzejmie proszę o zastanowienie się nad eksploatowaną tu analogią miedzy postulatami 1,2,3, a powodem wprowadzenia wartości dla symboli nieoznaczonych jak 1/0. W szczególności sensem wprowadzania 1,2,3 w moim wypadku miałoby być ich użycie w odniesieniu do predykatu prawdy Tarskiego, zwłaszcza w kontekście hierarchii języków-metajęzyków. W tym sensie 1,2,3 wypisane powyżej nalezy traktować jako hipotezę roboczą, nie twierdzę że sa one szczególnie szczęśliwie dobrane. To propozycja. Proszę podać własną!

    Czy przedstawiony powyżej rachunek jest użyteczny? Być może. Zrezygnujmy z założenia że (U) to zbiór zdań. W opisanym powyżej „dowodzie” nie używamy nigdzie tego założenia ( poza milczącym zakładaniem że wyrażenie postaci (x ^ (U)), (x v (U) ), ~(U) itp. mają sens, oraz że prawa logiki jak np. prawo de Morgana obowiązuje dla wyrażeń utworzonych z użyciem (U). W istocie (U) może być jakimkolwiek obiektem logicznym którego struktura wewnętrzna jest nam całkowicie obojętna, może być na przykład predykatem ( funkcją zdaniową) itp.

    Gdyby przyjąć że przedstawione tu podejście ma inne niż czysto heurystyczny sens, na przykład, że zasady 1,2,3 nie prowadzą do sprzeczności jeśli dodać je do klasycznego rachunku predykatów, moglibyśmy uzyskać dwie korzyści, jedną spodziewaną i pożądaną, druga zaskakująca ale niepożądaną.

    Korzyść pożądana to oczywiście wyjaśnienie pochodzenia paradoksu Yablo. Paradoks ten w myśl mojego pomysłu powstaje nie w wyniku samozwrotności ( co jest bardzo dyskusyjne, zapisanie wszystkich zdań paradoksu Yablo w jakiejś (meta)teorii jako predykat zależny od rozmaitych zmiennych, nie jest tym samym co możliwość wypisania wszystkich tych zdań jedno po drugim), ale w wyniku zwykłej sprzeczności, takiej samej jak w wypadku dwu zdań: „śnieg jest czarny”, „śnieg jest biały”. Powtórzmy – zdania Y0 i Y1 paradoksu Yablo stwierdzają coś o innych obiektach teorii – zdanie Y0 o Y1 i (U) zaś Y1 o (U) i treść tego stwierdzenia przeczą sobie wzajemnie. Wobec własności obiektu (U) ustalenie prawdziwości ich układu Y0, Y1… wymaga ustalenia prawdziwości na pewnym skończonym zbiorze zdań co jest niemożliwe bo zdania te przeczą sobie wzajemnie.

    „Korzyść niepożądana” dotyczy przykładu z poprzedniego, nieudanego wpisu na blogu. Niech Y0 będzie zdaniem pewnej teorii T, zbudowanym z użyciem predykatu prawdy dla podteorii T1 owej teorii. Wówczas obiekt (U) może być predykatem prawdy jaki teoria T’ buduje dla swoich podteorii T2 itd. W szczególności obiekt taki nie ma określonej prawdziwości ale chcąc łatać pod(pod…)teorie budowane w T możemy stosując zasady 1,2,3 ratować nasza koncepcję prawdy przed sprzecznością. Obiekt (U) może mieć postać ( w teorii T) „Teoria T1 mówi nieprawdę kiedy używa swojego predykatu prawdy w stosunku do predykatu prawdy teorii T2 kiedy ten orzeka o predykacie prawdy T3 kiedy ten orzeka o predykacie prawdy T4….” Widać wyraźnie że jest to bardzo źle zdefiniowany obiekt.

    Oczywiście z bzdur wynikają bzdury i być może status tych wszystkich rozważań jest bzdurą. Całość powyżej jest niewątpliwie szalenie wątpliwa ;-)

    Rozważmy jednak następujący, tym razem już ostatni, przykład. Weźmy bardzo rozwlekły i ogólny język programowania – nazwijmy go dla zachowania analogii Asemblerem. Rozpatrzmy w tym języku programowania rozmaite programy, niech wszystkie one mają nazwę która jest liczbą naturalną ( np. Program nr 18 a Asemblerze nazywa sie „A18” ) a w wyniku działania niech zwraca liczbę. Niech każdy z tych programów zawsze kończy obliczenia. Inne programy ( na przykład takie które nie kończą swoich obliczeń) nas nie interesują. Załóżmy ze dysponujemy Maszyną która uruchamia programy w Asemblerze więc możemy dla każdego z rozważanych programów poznać wynik jego działania. Co więcej Maszyna owa pozwala na porównanie wyników takich programów ( czyli sprawdzenie czy A19 =?= A20 ). Kluczowa własność w tym co piszę poniżej to właśnie owo porównywanie.

    Na bazie Asemblera zdefiniujemy język wyższego poziomu. Budowa owego języka ma wyłącznie postać makr ( a więc nietwórczych definicji). Nazwijmy ów język Basemblerem. Basembler ma swoje własne programy ( które rozwijają się oczywiście do Asemblera, to kluczowa własnośc która imituje właność językowej relacji teoria-metateoria, w tym pojecie przekłądu, a pośrednio prawdy), które mają własne nazwy, na przykład B18. Maszyna która uruchamia Asembler oczywiście potrafi uruchamiać Basembler ( wystarczy w tym celu rozkodować makra). Ale w niektórych wypadkach będzie używać maszyny Basemblerowej, która nie wie jak wyliczać wyrażenia w Asemblerze. Liczenie w Basemblerze idzie jej jednak znakomicie.

    Na bazie Basemblera, zdefiniujemy Casembler, za pomocą tych samych nietwórczych konstrukcji ( a więc znowu makra) i zbudujemy Casemblerową maszynę.

    Na bazie Casemblera, Dasembler i jego maszynę itd.

    Oczywiście powstanie w ten sposób pewna hierarchia makr i maszyn możliwa do ciągnięcia w nieskończoność. Na przykład w praktycznej realizacji makra Basemblera mogą wyliczać wyłącznie liczby parzyste – czyli postaci 2n i być nazywane za pomocą liczby n. Casembler może wyliczać wyłącznie liczby 4n i być nazywany n itp.

    Programy coś muszą liczyć. Cecha jaką chcemy wyliczyć jest całkowicie obojętna, ważne by jej wyliczanie było proste, łatwe, szybkie i przyjemne, oraz by nie ulegało żadnych wątpliwości że maszyna Asemblerowa, Basemblerowa i następne potrafią stosowne obliczenia wykonać, wraz ze stosownymi porównaniami. Nie budujemy żadnego dowodu przez diagonalizację, więc zbieżność N i XN w dalszych rozważaniach jest całkowicie nieistotna. Załóżmy ze chodziło o sprawdzenie że N = BN. Chcemy wyodrębnić wszystkie programy których wynik działania – liczba N jest taka sama jak numer programu w stosownym języku BN ( na przykład kiedy program A18 daje w wyniku 18, a program D20 daje w wyniku 20). Maszyna Asemblerowa jest w stanie sprawdzać programy w Basemblerze. Stworzono w tym celu specjalny program Asemblera, który wyliczał N, a następnie badał czy wynik programu Basemblera, BN jest jej równy. Uzyskano pewne wyniki, poprawne o tyle o ile poprawne jest wyliczanie N w Asemblerze ( można by rzec że wyniki sa zrelatywizowane do poprawności Asemblera co w istocie pozostaje poza tematem dyskusji). Sprawdzono tym sposobem wszystkie programy zbudowane w Basemblerze, Casemblerze, Dasemblerze i następnych językach. Niestety wynik wzbudzał wątpliwości. Dla kontroli chciano wykonać stosowne badania dla Casemblera. Oczywiście najprościej było stworzyć stosowny program w Basemblerze, który wyliczał N a następnie CN i sprawdzał zgodność uzyskanych liczb. Konstrukcję powtórzono dla Dasemblera i następnych języków. Z powodu nawału prac prace developerskie prowadzono jednocześnie, rozpisane one były na wiele zespołów, każdy zajmował się jednym językiem programowania i zatrudniał specjalistów z tej dziedziny. Programowano w technologii zwinnego programowania kowbojskiego i szczegóły implementacji zaginęły, a programiści zostali zwolnieni po zakończeniu testów. Do porównania wyników zatrudniono konsultantów Bardzo Drogiej Firmy Konsultingowej Arbiter Arythmeticsen Polska sp. z o.o

    Konsultanci wcale sie nie zdziwili. Wiadomo od dawna że programiści pracujący w Asemblerze nie maja zbyt dobrego zdania o specjalistach z Basemblerze. Wyniki zespołu Asemblerowego całkowicie potwierdziły ta opinie. testy zespołu Asemblerowego jasno pokazały że wszystkie porównania wyliczane w Basemblerze, także i te które dotyczyły programów Casemblerowych, Daemblerowych i następnych – były błędne! Lider zespołu Asemblerowego napisał nawet na marginesie: „ten margines jest zbyt krótki by wypisać wszystkie bugi jakie znaleźliśmy w Baseblmerze!” Arbiter Arythmeticsen znało zjawisko flame wars i nie był im obcy fakt że opinie wyrażane w takiej atmosferze bywają przejaskrawione.

    Rozpoczęto więc kolejny etap integracji wyników. Tym razem zajęto się Basemblerem. Zespół Basemblerowy przyjął jako aksjomat – czyli oczywistą prawdę – że Basembler pozwala na bezbłędne wyliczanie wartości N, o ile ktoś postępuje zgodnie ze składnią języka oczywiście. Zbudowani takim założeniem bardzo dokładnie przetestowali programy w Casemblerze, Dasemblerze i następnych językach. Wyniki nie napawały optymizmem. ‚Kim sa ci co tworzą te wszystkie „języki atrapy” zamiast używać sprawdzonych – jak Basembler – narzędzi” napisał Lider Zespołu Basemblera na marginesie raportu, który stwierdzał że każde porównanie jakiego dokonywali programiści języków wyższego rzędu było nieprawdziwe.

    Specjaliści Arythmeticsen Polska sp. z o.o. sprawdzili także kolejne raporty. Każdy stwierdzał to samo co poprzednie – zakładając poprawność konstrukcji języka programowania jakiego używali, specjaliści nie zostawiali suchej nitki na wszystkich językach wyższego poziomu stworzonych na jego bazie.

    Pomóż sporządzić konsultantom Arbiter Arythmeticsen Polska sp. z o.o końcowy raport.

    Drogi czytelniku który dotarłeś az do tego miejsca. Oto treść którą chciałbym abyś zapamiętał: istnieje możliwość że koncepcja prawdy ( zdefiniowanej jako predykat, według metody Tarskiego) ma sens wyłącznie lokalnie, to znaczy nie prowadzi do sprzeczności wyłącznie dla skończonego ciągu teorii, metateorii, metametateorii, … . chciałbym byś rozważył a może zapamiętał w tym zdaniu słowo lokalnie.