Contradiction

Class TheHaltingProblem { 

     //Prüfung eines beliebigen Programms p mit einer beliebigen Eingabe i auf die Eigenschaft,
     //in endlicher Zeit anzuhalten oder nicht. IsHalting selbst muß in endlicher Zeit antworten
     //und kann somit die Frage entscheiden.

     bool IsHalting(string p, string i) {
                   //Die Annahme ist, daß hier Code stehen könnte, der zu beliebigem p und i
                   //entscheiden kann, ob p(i) hält.
                  return new Random(DataTime.Now.Millisecond).Next(2) == 0 ? false : true;
                  //Damit der gesamte Quellcode compiliert werden kann, wird diese Fähigkeit hier
                  //simuliert, indem zufällig ein Wahrheitswert zurückgegeben wird.
         }
         //Destruktive Funktion, die hält, wenn IsHalting nicht hält und nicht hält, wenn IsHalting
         //hält.
         void Contradiction(string p) {
                   if (IsHalting(p, p)) //p(p) hält lt. IsHalting(p, p), dann:
                            while (true) ; //Endlosschleife, Contradiction(p) hält nicht
                   else //sonst:
                             return; //Contradiction(p) hält
         }
         //Gibt den Source Code (die Programmbeschreibung) von der Funktion Contradiction
         //zurück.
         String DescriptionOfContradiction() {
                   return „void Contradiction(string p) {“ +
                               „if (IsHalting(p, p))“ +
                                       „while (true) ;“ +
                               „else return;“ +
                     „}“; 
         }
         //Aufruf der Funktion Contradiction auf sich selbst
         public void Run() {
                   Contradiction(DescriptionOfContradiction());
                   //Dieser Aufruf von Contradiction hält genau dann, wenn IsHalting über dieses
                   //Programm aussagt, es halte nicht. Und umgekehrt: Wenn dieser Aufruf nicht
                   //beendet wird, hat IsHalting Contradiction eine endliche Laufzeit bescheinigt.

                   //Daher kann es eine solche Funktion IsHalting, die JEDES BELIEBIGE Programm
                   //auf die Eigenschaft, zu halten nicht geben, denn Contradiction ist eines dieser
                   //beliebigen Programme und hier irrt IsHalting
         }

 

(RR)