Jak czarne dziury w informatyce. Możemy tylko wiedzieć, że istnieją, ale kiedy będziemy mieli jeden z nich, nigdy nie będziemy wiedzieć, że to jeden z nich.
halting-problem
correctness-proof
Otakar Molnár López
źródło
źródło
if T is true then halt else loop forever
if T is true
?For each string S in the (countable) universe of possible strings: If S is a syntactically valid proof of T, halt.
Odpowiedzi:
Rzeczywiście istnieją takie programy. Aby to udowodnić, załóżmy wręcz przeciwnie, że dla każdej maszyny, która się nie zatrzymuje, istnieje dowód, że się nie zatrzymuje.
Mamy więc algorytm decydujący o problemie zatrzymania, który zawsze się kończy. Wiemy jednak, że to nie może istnieć, więc nasze założenie, że zawsze istnieje dowód, że nie można zatrzymać, musi być fałszywe.
źródło
Dla bardziej konkretnego przykładu załóżmy, że teoria, której używamy do naszych dowodów, ma następujące (całkiem rozsądne, IMO) cechy:
Przy tych założeniach następujący program nigdy się nie zatrzyma, ale nie można udowodnić (w ramach stosowanej przez nas teorii), że się nie zatrzyma:
Kluczowym szczegółem tutaj jest pierwsze założenie powyżej, a mianowicie, że teoria, której używamy do naszych dowodów, jest spójna. Oczywiście musimy to założyć, aby nasze dowody były cokolwiek warte, ale drugie twierdzenie Gödela o niekompletności mówi, że dla jakiejkolwiek racjonalnie ekspresyjnej i skutecznie aksjatyzowanej teorii nie możemy tego faktycznie udowodnić (z wyjątkiem być może jakiejś innej teorii, której spójności wtedy trzeba założyć itp.).
źródło