date-created: 2024-06-13 10:28:35 date-modified: 2024-06-24 04:46:49
Satz von Rice
anchored to 112.00_anchor_overview
nichttriviale Metadaten über manche Sprachen kann man einfach nicht beschreiben und festlegen!?
Aus 112.17_reduktionen wissen wir, dass wir diverse Dinge nicht entscheiden können und ferner werden wir jetzt herausfinden, dass das auch für bestimmte Eigenscahften gilt.
Was sind interessante Eigenschaften?
Wir interessieren uns im Kontext der Berechenbarkeit nicht dafür, wie eine TM ein Ergebnis erreicht (ihre Implementierung), sondern nur für das Ergebnis / die Ausgabe. “Interessante” Eigenschaften sind also nur solche, die sich an der erkannten Sprache definieren lassen.
Definition | Semantisch
Wir wollen uns nochmals das Problem der Gleichheit anschauen, also sind äquivalent, wenn !
[!Definition]
Sei eine Sprache, deren Wörter alle Codes von TMS sind, also
wann nennen wir die Sprache nicht-trivial?, wann nennen wir sie jetzt semantisch? #card
Die Sprache heißt nicht-trivial, falls gilt:
- - also es gibt TMs, deren Code in L enthalten ist!
- -> also es gibt TMs, deren Code nicht in L enthalten ist ( also es muss wohl eine Ausnahme geben, dass nicht einfach alle enthalten sind!)
Wir nennen die Sprache jetzt semantisch, falls gilt: Wenn und äquivalent sind, dann sind entweder beide oder keine von beiden in enthalten
Also anders heißt das: oder
[!Definition] Satz von Rice:
Es gilt: Quasi alle interessanten Eigenschaften von TMs sind unentscheidbar!
Jedes semantische, nichtriviale Entscheidungsproblem ist unentscheidbar (brauch also Definition Semantisch)
Was meinen wir hier mit interessant? Was folgt hieraus? #card
Grundsätzlich ist beim Kontext von Berechenbarkeit selten die Implementierung (wie das Ergebnis geschaffen wird), sondern eher das Ergebnis relevant ( ob / was die Ausgabe ist / wäre).
Daher sind interessante Eigenschaften solche, die sich an einer erkannten Sprache definieren lassen –> wenn wir also eine Ausgabe erhalten können!
(Betrachten wir etwa): Zwei TMs sind Äquivalent, wenn gilt:
Sei dafür dann eine Sprache , deren Wörter alle Codes von TMs sind. Beschrieben haben wir sie mit:
Diese Sprache ist nicht trivial!, wenn folgend gilt:
- (also es gibt TMs, deren Code in enthalten ist!)
- ( also es gibt TMs, deren Code nicht in enthalten ist)
Diese Sprache heißt dann semantisch, falls hier folgend gilt:
- Wenn äquivalent sind, dann sind entweder beide oder keine von beiden ALSO:
anders formulierte Varianten des Satz von Rice wären etwa:
(Sipser): Sei p eine Eigenschaft rekursiv aufzählbarer Sprachen (d.h. von Turingmaschinen). Wenn p nicht-trivial ist (d.h. mindestens eine, aber nicht alle Sprachen haben p), dann ist nicht entscheidbar, ob die Sprache L(M) einer bestimmten Turingmaschine M die Eigenschaft p hat
oder (Schöning): Sei S eine beliebige Teilmenge von R, mit Ausnahme von und . Dann ist die Sprache unentscheidbar!
(die Gödelisierung ist beinahe bijektiv, weil sie präfix-frei ist etc.
Wir möchten jetzt zeigen, dass alle nichtrivialen Eigenschaften von Turingmaschinen (also alle semantische Eigenschaften) nicht entscheidbar sind!
Beweis Satz von Rice
Wir wollen diesen Beweis unter Anwendung einer Abbildungsreduktion beschreiben.
Wir wollen eine Reduktion von den Sprachen 112.17_reduktionen (die Sprachen, die auf dem leeren Wort halten / oder auf diesen nicht halten) auf umsetzen!
Zur Erinnerung: und ferner:
Da wären wir damit schon fertig. Allerdings werden wir sehen, dass dieser Ansatz nur funktioniert, wenn die TM die kein einziges Wort akzeptiert, also nicht in ist. (Das können auch viel verschiedene Sprachen sein, also die Äquivalenzklasse dazu!) –> Für den Fall machen wir stattdessen eine Reduktion auf das Komplement
(Problem): Wir haben keine konkrete Formulierung von , nur die Existenz von und weiter . Der Beweis muss also direkt über die Semantik laufen. (nicht über was konkretes, weil wir es ja nicht wirklich definiert haben) Wir müssen, dann also Leerheit semantisch äquivalent zu machen!.
Fall 1:
Sei also semantisch und nicht-trivial. Das heißt es gibt dann
- eine TM mit und ferner auch
- TM mit
Außerdem sei zunächst
Wir wollen also erst eine Abbildung bauen, die berechenbar abilden kann. Danach möchten wir zeigen, dass sie tatsächlich Berechenbar ist .
Wir konstruieren eine Reduktion folgend: (Sie also im Folgenden eine TM, welche entscheidet) Wir suchen eine Reduktionsabbildung:
- Mit Eingabe wollen wir entscheiden, ob auf hält!
- Wir Bilden demnach dann auf einen anderen String ab, den wir als Eingabe geben!
Jetzt soll ferner gelten: In der Umsetzung jetzt also:
Wir bauen jetzt eine TM zur Lösung von auf einer Eingabe !
–>
- Berechne die Gödelnumer der TM , welche folgend funktioniert:
Turingmaschine auf Eingabe :
- Simuliere hier (halteproblem!) und ferner
- Return (also die Ausgabe von auf z) ( als Erinnerung!)
- Anschließend geben wir folgend züruck: Anmerkungen hier:
- Die Maschine wird nicht ausgeführt –> wir wollen nur die Gödelnummer erhalten!
- Die Abbildung der Abbildungsreduktion besteht aus der Konstruktion von und der Berechnung von also –> Beide können wir natürlich berechnen!
- ist hart in einprogrammiert –> und wir konstruieren somit für jedes wieder eine neue TM , die aber in der Idee gleich ist!
Bemerkungen Auf beliebiger Eingabe macht sie das gleiche –> die Eingabe-TM auf dem leeren Wort simulieren (und eventuell halten, wenn sie das jemals tun sollte!)
Danach wird sie die Ausgabe von berechen (wir wissen, dass sie ist!)
Dadurch gibt diese neue Maschine dann die Gödelnummer der Maschine aus.
Wir nutzen die Semantik-Eigenschaft bei (Also die Ausgabe betrachten etc.)
Diese Gödelnummer wird dann an einen Entscheider gegeben, der prüft ob diese beschrieben TM in der Sprache liegt oder nicht!
(Was folgt): Diese TM macht folgendes: Sie verhält sich erstmal, wie eine TM, die nicht in der Sprache liegt - weil sie erstmal das leere Wort simuliert und schaut, ob sie anhält / oder nicht.
Ferner kann sie auch einfach nicht anhlaten unnd sich nicht wie verhalten.
– Wir haben gesagt, Abbildungsreduktion bestehen immer aus zwei Schritten: Erst checken, ob berechenbar und danach zeigen, dass sie ein Homomorphismus ist.
Was wir hier machen: Wir bekommen den Code einer TM. Wir bauen eine neue TM, die diesen Code nutzt, und auch den Code von ( weil wir wissen, dass sie existiert). –> Jetzt geht es nicht zwingend darum, ob sie jemals beenden / terminieren wird / oder nicht. Was wir hier eigentlich betrachten / erfahren möchten: -> wenn sie am Ende terminiert, dann ist sie ja äquivalent zu und somit gleich ihrer Eigenschaften.
Unsere Sprache ist, bei erfolgreicher Reduktion auf dann nicht entscheidbar (wie das )
Wir betrachten jetzt zwei Fälle für diesen Fall:
- Sei das heißt also -> also hält bei Eingabe an! In diesem Fall ist die dann äquivalent zur TM -> denn simuliert , welche hält und macht danach auf allen Eingaben genau das gleiche, wie ! –> sie liefert also genau die gleichen Ergebnisse
–> Es gilt (weil diesen beiden jetzt semantisch sind!) folgend: Aber was wir auch wissen: und somit gibt die TM das Ergebnis aus:
- Der zweite Fall sagt und das heist also: , also hält nicht bei einer Eingabe !
In diesem Fall ist die äquivalent zur TM ( denn simuliert auf allen Eingaben zunächst , welche dann hier nicht anhalt! –> Sie hält also ferner auf keiner einzigen Eingabe!)
Da ferner semantisch ist, folgt dann entsprechend:
Aber, was wir auch wissen: und somit liefert die TM das folgende Ergebnis:
[!Req] Was haben wir damit gezeigt?
Wir haben gezeigt, dass folgend:
das heißt also, dass die Reduktion das macht, was sie sol - sie ist berechenbar und kann passend reduzieren!
In diesem Fall haben wir gezeigt, dass und weil ist folgt auch, dass
Was der Trick war: Dass wir den Entscheider für zu einem Entscheider für H0 “umbauen” konnten, in dem wir einer Maschine (von der wir wissen , wir kennen also die Ausgabe des Entscheiders R) die zu entscheidende Maschine aus “vorschalten”.
Hierzu verwendeten wir die semantische Eigenschaft:
Weil die “vorgeschaltete” Maschine M semantisch äquivalent ist, muss der Entscheider R sie gleich entscheiden können
[!Attention] Das Ganze muss noch analog für gezeigt werden
Fall 2:
Dieser Fall ist analog, aber wir reduzieren von
Es ändern sich hier also nur zwei Dinge:
- Statt reduzieren wir !
- Statt der Sprache verwenden wir in der TM dann die Sprache
AAlso angenommen wir haben eine semantische / nicht triviale Sprachen. Die drin ist ist , die die semantisch ist, ist .
Wir konstruieren jetzt eine Reduktion vom Nullhalteproblem.
Gesucht ist also eine Abbildung von Gödelnummern nach Gödelnummern (TM die eine Gödelnummer baut, wenn sie eine bekommt):
Wir geben als ein und erhalten, ob auf hält oder nicht.
Dafür berechnen wir die Gödelnummer der TM : Wir simulieren dann und geben zurück
Warum verhält sie sich wie eine Sprache, die nicht in der Sprache ist?!
Sie akzeptiert keine Eingabe z. Warum? Weil sie imemr davor erstmal eine Eingabe und Berechnung durchführt die nicht beenden wird (also sie ist endloos!) –> Dadurch wird niemals berechnet!!
Bemerkung | Aussage von Theorem von Rice
[!Feedback] Aussage des Theorems
Das Theorem von Rice sagt uns jetzt folgend zwei Dinge aus:
welche zwei Aussagen können wir treffen, welche nicht? #card
Aber es gilt nicht die Umkehrung, also:
Es gibt unterscheidbare Sprachen, die nicht semantisch sind.
Es gilt hier eher “selbst semantische Sprachen sind unentscheidbar!” –> Alles was mit Implementierung zu tun hat - etwa kürzestes Programm möglich - ist tendenziell noch schwieriger
Ganz viele Eigenschaften von TMs sind eher eine Frage der Eigenschaft der Maschine, nicht den Sprachen selbst, sind unentscheidbar, außer triviale!
Die Aussage von Rice ist eine Aussage über –> Alle entscheidbare Sprachen und deren Eigenschaften sind trivial.
Wir haben aber eine ABbidlungsreduktion benutzt. Wir wissen, dass man damit auch Abbildungen auf größere Mengen machen kann –> Können wir auch was über sagen, nicht nur ?
Der Satz von Rice sagt, dass alle entscheidbaren Eigenschaften () von TMs trivial sind.
Geht ein analoger Satz/Beweis auch für die semi-entscheidbaren Eigenschaften (∈ RE) von TMs?
Ja! ( Satz von Rice–Shapiro: Jede semi-entscheidbare Eigenschaft von TMs ist durch eine endliche Teilmenge der TMs charakterisierbar.)
Konsequenzen
Wir können eine TM nicht anschauen, und sagen, ob sie gleich einem endlichen Automaten ist oder nicht ! Obwohl das einfach scheint!
Wir können nicht erkennen, ob mein Laptop eine Waschmaschine ist oder nicht!
[!Satz]
Die Eigenschaft ( oder auch ) ist nicht entscheidbar
warum folgt das? Wie beweisen wir das etwa? #card
Wir werden herausfinden, dass semantisch und nichtrivial ist!, denn
- Es gibt rekursiv auzählbare Sprachen und es gibt auch rekursiv aufzählbare Sprachen –> Hatten wir schon 112.06_nicht_reguläre_Sprachen 112.03_reguläre_sprachen
- Die Eigenschaft ist dann per Definition semantisch!
Und weil wir obig gerade gezeigt haben, dass etwas mit diesen beiden Parametern nicht entscheidbar ist –> ist die Frage das auch nicht!
Das hat dann tatsächlich praktische Implikationen!
- Es ist unentscheidbar ob ein bestimmtes Problem mit endlichem Speicher gelöst werden kann
- Es kann also keine allgemeine Routine geben, die entscheidet, ob eine TM irgendwann “Memory-Overflows” produzieren würde -> gibt es eine Schranke auf dem Band?!
- Allgemeine Verifikation von Programmen ist nicht möglich!
Folgerung für Realität:
Wenn wir Computer so schlecht verstehen, können wir uns dann überhaupt noch erlauben, sie für sicherheitskritische Aufgaben (Autopilot, Kraftwerkssteuerung, …) einzusetzen?
-
Der Satz von Rice ist eine Worst-Case Aussage: Unter allen TMs gibt es solche deren Eigenschaften wir nicht berechnen können. Aber natürlich gibt es Computerprogramme (also Untermengen der TMs), für die wir bestimmte, auch nichttriviale semantische Eigenschaften zeigen können.
-
Erinnerung: Wort-, Leerheits-, Endlichkeits-, …, -Problem von FAs sind entscheidbar (Vorlesung 6).112.03_reguläre_sprachen
-
Deshalb ist Software Verifikation natürlich dennoch eine Disziplin. Aber sie ist nur möglich wenn wir das Rechenmodell (und damit die Programmiersprache) einschränken!
-
Frage: Warum funktioniert unser Beweis nicht mehr, wenn wir das Rechenmodell auf eine Teilmenge der TMs einschränken?
Beweistechniken für Berechenbarkeit
Wie beweisen wir, ob eine Sprache rekursiv aufzählbar ist oder wie eine nicht rekursiv aufzählbar ist.
Rekursiv aufzählbar zeigen
Auch: “Probleme, deren Lösung man hinschreiben kann”
meist kann man die konstruktiv lösen und so zeigen, wie man sie eventuell strukturieren kann
[!Example]
Beispiel dazu:
Wie würde man das jetzt beweisen? #card
Beweistechnik hierfür:
- konstruiere explizit die TM, die das Problem entscheiden kann
- Hier wäre das etwa: Beginne bei , zähle dann bis zum ersten , dann bis zum ersten . W
- Wenn hier irgendwo was unerwartetes steht, verwerfen wir sofort. Sonst akzeptieren wir nach genau Schritten!
Rekursiv aufzählbar aber nicht entscheidbar
[!Definition]
Auch: “Probleme, die man manchmal aber nicht immer entscheiden kann”
Wir wollen diese Probleme jetzt beweisen / lösen:
Das macht man meist in zwei Schritten:
welche zwei Schritte durchlaufen wir dabei? #card
zuerst zeigen, dass sie aufzählbar sind.
–> Dafür zeigen, wir dass Wörter in der Sprache akzeptiert werden (müssen aber noch zeigen, dass sie nicht entscheidbar ist!) ( alo !)
Das können wir durch eine Reduktion umsetzen. Dabei nimmt man meist eine Abbildung zu einer Sprache, wo man weiß, dass sie garantiert nicht entscheidbar ist!
(etwa, dass die TM erst auf dem leeren Wort läuft und danach die ursprüngliche Sache betrachtet).
Alternativ kann man versuchen das Diagonalargument von Cantor wieder verwenden
Damit kann man dann ganz explizit konstruieren, wann diese Sprache entscheidet –> Dann, wenn die reduzierte Variante hat ( auch wenn es vielleicht nicht entscheidet!)
Und gleichzeitig hat man das “Problem” einbezogen, dass u.U. auch einfach nicht entscheidbar sein könnte –> weil es niemals hält etwa
[!example] Beispiel
Sei jetzt
Sei jetzt entsprechend gegeben –> ist das dann in ?
wie könnten wir das etwa beweisen? #card
Ansatz:
- Simuliere auf . Wenn jetzt , dann hält die Situation in einem akzeptierenden Zustand (top!)
- Das können wir realisiern! und somit !
Aber Wenn jetzt , dann hält die Simulation nie an und wir können auch niemals verwerfen! –> Damit folgt ist vermutlich nicht entscheidbar (das geht aber nicht) –> man könnte ja einen besseren algorithmus haben… (sodass er nicht mehr anhählt)
Besser 112.17_reduktionen!!
Wir definieren eine Reduktion vom Halteproblem zur Sprache: mit: –> alternativ auch das Diagonalargument selbst! –> Angenommen sie ist entscheidbar, dann könnte man damti die Tabelle also eine TM, die als Eingaben verschiedene Turingmaschinen finden / erkennen. –> Dann kann man hier einen Widerspruch erzeugen und somit auh damit argumentieren!
nicht Aufzählbare Sprachen
[!Definition]
mit nicht aufzählbaren Sprachen, meinen wir solche, die !
Auch “Probleme, bei denen jedes einzelne Element nicht entscheidbar ist”
Wie kann man solche Probleme zeigen? #card
Das kann man durch eine doppelte Reduktion umsetzen –> von Ursprung in das Halteproblem und dann auf reduzieren.
[!Example] Beispiel mit :
Wir betrachten nochmal die Sprache
wie könnten wir das angehen und bearbeiten? #card
- Sei gegeben. Ist dann jetzt ?!
Ansatz: Probiere nacheinander auf allen Worten aus.
(wir sehen, dass schon dieser Test für einen einzelnen Input ) niemals fertig wird –> niemals einen akzeptierenden Zustand erreicht ( weil wir halt Wörter haben können, wo sie nicht hält und eewig brauch) (also kein Ansatz für den Beweis!)
Alternativ:
- Doppelte Reduktion umsetzen, von
- Alternativ auch wieder das Diagonalargument
- Angenommen sei aufzählbar. Dann müssen wir zeigen, dass es dann eine entscheidbare Sprache also gibt, die in der Aufzählung von nicht vorkommt (Sipser, Aufgabe 4.30)