Jeśli problem zatrzymania jest zbyt niejasny, pomyśl o tym w ten sposób.
Weźmy matematyczny problem, który uważa się za prawdziwy dla wszystkich liczb całkowitych dodatnich n , ale nie udowodniono, że jest prawdziwy dla każdego n . Dobrym przykładem może być hipoteza Goldbacha , że każda dodatnia nawet liczba całkowita większa niż dwa może być reprezentowana przez sumę dwóch liczb pierwszych. Następnie (z odpowiednią biblioteką bigint) uruchom ten program (następuje pseudokod):
for (BigInt n = 4; ; n+=2) {
if (!isGoldbachsConjectureTrueFor(n)) {
print("Conjecture is false for at least one value of n\n");
exit(0);
}
}
Wdrożenie isGoldbachsConjectureTrueFor()
jest pozostawione jako ćwiczenie dla czytelnika, ale w tym celu może być prostą iteracją wszystkich liczb pierwszych mniejszych niżn
Teraz logicznie powyższe musi być równoważne z:
for (; ;) {
}
(tj. nieskończona pętla) lub
print("Conjecture is false for at least one value of n\n");
ponieważ hipoteza Goldbacha musi być albo prawdziwa, albo nieprawda. Gdyby kompilator zawsze mógł wyeliminować martwy kod, zdecydowanie byłby martwy kod do wyeliminowania w obu przypadkach. Jednak w ten sposób kompilator musiałby rozwiązać arbitralnie trudne problemy. Możemy dostarczyć problemy provably ciężko, że będzie musiał rozwiązać (np NP-zupełny problemów), aby określić, który fragment kodu do wyeliminowania. Na przykład, jeśli weźmiemy ten program:
String target = "f3c5ac5a63d50099f3b5147cabbbd81e89211513a92e3dcd2565d8c7d302ba9c";
for (BigInt n = 0; n < 2**2048; n++) {
String s = n.toString();
if (sha256(s).equals(target)) {
print("Found SHA value\n");
exit(0);
}
}
print("Not found SHA value\n");
wiemy, że program wydrukuje „Znaleziono wartość SHA” lub „Nie znaleziono wartości SHA” (punkty bonusowe, jeśli możesz mi powiedzieć, która z nich jest prawdziwa). Jednak, aby kompilator był w stanie racjonalnie zoptymalizować, przyjmowałby kolejność 2 ^ 2048 iteracji. Byłaby to świetna optymalizacja, ponieważ przewiduję, że powyższy program będzie (lub mógłby) działać aż do śmierci cieplnej wszechświata, zamiast drukować cokolwiek bez optymalizacji.