Wenn wir in der Berechenbarkeit beweisen wollen, dass ein Problem nicht rekursiv oder nicht rekursiv aufzählbar ist, können wir z. B. Reduktionen aus anderen nicht rekursiven oder nicht re-Problemen, dem Riceschen Theorem, dem Rice-Shapiro-Theorem usw. verwenden. Diese Techniken funktionieren dank oder basieren direkt auf der Existenz eines diagonalen Arguments (dh ein Programm verhält sich umgekehrt wie sein Eingabeprogramm M ' , so dass M = M ' widersprüchlich ist). Wenn wir in der Komplexität beweisen wollen, dass ein Problem in einiger Zeit nicht berechnet werden kann (unabhängig von unbewiesenen Behauptungen wie z. B. P ≠ N P.) verwenden wir Argumente, die letztendlich auf einem diagonalen Argument basieren (z. B. beweist der Satz der Zeithierarchie, dass vollständige Probleme nicht in P vorliegen , sondern dass der Satz auch durch Verwendung eines diagonalen Arguments bewiesen wird).
Meine Frage lautet also wie folgt. Sind alle wichtigen Unmöglichkeitsergebnisse in Bezug auf Berechenbarkeit und Komplexität (tatsächliche Unmöglichkeit, nicht Unmöglichkeit bis zu einem unbewiesenen Ergebnis) letztendlich auf ein diagonales Argument zurückzuführen? Das heißt, kommt all unser wichtiges "Unmöglichkeitswissen" in Bezug auf Berechenbarkeit und Komplexität von der Tatsache, dass Programme leistungsfähig genug sind, um Programme auszuführen?
Das einzige wichtige Unmöglichkeitsergebnis, das mir in den Sinn kommt und das letztendlich nicht auf einem diagonalen Argument beruht, ist, dass die Ackermann-Funktion nicht primitiv rekursiv ist. Vermisse ich andere wichtige Gegenbeispiele dieser offensichtlichen "Regel"?
EDIT (18. November): Es tut mir leid, dass meine Frage sich besonders auf das diagonale Argument selbst konzentriert hat, aber ich interessiere mich mehr für alle Argumente, die auf der Selbstreferenz von Programmen beruhen (einschließlich des diagonalen Arguments, des Berry-Paradoxons usw.). Für einfachere Sprachen (z. B. regulär oder kontextfrei) haben wir "strukturelle" Unmöglichkeitsargumente, die darauf basieren, wie diese Sprachen aufgebaut sind (z. B. Pumping Lemmas). Bei rekursiven oder re-Sprachen hängen die meisten Unmöglichkeitsergebnisse jedoch stark von der Selbstreferenz der Programme ab. Das habe ich gemeint.