Podsumowanie: Zgodnie z twierdzeniem Rice'a wszystko jest niemożliwe. A jednak cały czas robię to , jak się wydaje, rzeczy niemożliwe !
Oczywiście twierdzenie Rice'a nie mówi po prostu „wszystko jest niemożliwe”. Mówi coś bardziej szczegółowego: „Każda właściwość programu komputerowego jest niepoliczalna”.
(Jeśli chcesz podzielić włosy, każdą właściwość „nietrywialną”. To znaczy właściwości, które posiadają wszystkie programy lub które nie posiadają żadnych programów, można w prosty sposób obliczyć. Ale żadnej innej właściwości nie można obliczyć.)
Właśnie to twierdzenie mówi lub wydaje się mówić. I przypuszczalnie duża liczba bardzo inteligentnych ludzi dokładnie zweryfikowała poprawność tego twierdzenia. Ale wydaje się całkowicie przeciwstawić logice! Istnieje wiele właściwości programów, których obliczenia są trywialne !! Na przykład:
Ile kroków wykonuje program przed zatrzymaniem? Decyzja, czy liczba ta jest skończona czy nieskończona, jest właśnie problemem zatrzymania, którego nie można obliczyć. Decyzja, czy liczba ta jest większa czy mniejsza niż jakieś skończone jest banalna! Wystarczy uruchomić program na maksymalnie kroków i sprawdzić, czy się zatrzyma, czy nie. Łatwy!
Podobnie, czy program wykorzystuje więcej lub mniej niż jednostek pamięci w pierwszych krokach wykonania? Trywialnie obliczalne.
Czy tekst programu wspomina o zmiennej o nazwie ? Trywialna analiza tekstowa ujawni odpowiedź.
Czy program wywołuje polecenie ? Ponownie zeskanuj tekst programu w poszukiwaniu nazwy tego polecenia.
Widzę wiele właściwości, które również wyglądają na nieobliczalne; np. ile dodatków wykonuje pełne uruchomienie programu? Cóż, to prawie tak samo, jak pytanie, ile kroków wykonuje program, co jest praktycznie problemem zatrzymania. Ale wygląda na to, że istnieje mnóstwo właściwości programu, które naprawdę, bardzo łatwo jest obliczyć. A jednak twierdzenie Rice'a twierdzi, że żadnego z nich nie da się obliczyć.
Czego tu brakuje?