der Vorlesung. Würden Sie dann nochmal oben die Tür bitte zumachen?
Das wäre sehr nett. Dankeschön. Wir hatten ja in
der letzten Stunde LTL behandelt als erstes Beispiel einer temporalen Sprache
und da am Schluss den Vergleich von LTL mit Büschi-Automaten,
die wir ja vorher kennengelernt hatten.
Keine Reaktion
Ja, und das wichtigste Ergebnis war, dass man zu
jeder LTL-Formel ein Büschi-Automaten konstruieren kann, der also dieselbe Sprache.
Das heißt also, dieselben Traces beschreibt oder erkennt. Nicht nur,
dass es für das Model-Checking von großer Wichtigkeit,
weil ja,
die Spezifikation häufig durch eine LTL-Formel gegeben ist und die Prozedur
fürs Model-Checking dann in der Konstruktion mit einem Büschi-Automat
besteht und dann dieser Satz eben ausgenutzt
Problematisch ist allerdings, dass die Zeit- und Platzkomplexität
sehr groß ist, exponentiell in der Größe der Formel.
Und dass man die nicht wesentlich verbessern kann, weil es
dieses Ergebnis gibt. Nicht umgekehrt ist es so,
dass die Formel ja in vielen Fällen nicht sehr groß ist,
sodass das dann also weniger erschlimm ist.
Nicht die andere Frage ist, ob jetzt nun die Büschi-Automat-Raden echt mächtiger sind als LTL-Formel.
Und dazu hatten wir jetzt nochmal diese Sprache,
11 von 11 formuliert und einen Büschi-Automat konstruiert,
für den es keine LTL-Formel gibt. Und er ist denkbar einfach,
der ist sogar deterministisch und nutzt nicht mal die besondere Akzeptierungsweise für mit den Endzuständen aus,
die wir ja heute nochmal bei der Fairness besonders ausnutzen.
Und die Argumentation war die folgende, wenn wir also diese Sprache,
dieses Bushy-Automaten betrachten, ist die ja der Gestalt,
dass in jedem Zweiten das A enthalten ist und die Frage,
ob wir das möglicherweise durch so eine Formel beschreiben können,
hatten sie ja auch richtig erkannt, dass wir da,
wie jetzt hier rot dargestellt haben, ein Gegenbeispiel haben,
aber das ist natürlich kein Beweis,
sodass wir dieses Ergebnis hier nur zitieren,
dass eben diese Sprache eben nicht durch eine LTL-Formel dargestellt werden kann
Ja, und dann hatten wir mit CTL angefangen,
der Computation Triologic und gesehen, dass dieses sich sehr gut mit Bonn beschreiben lässt.
Und deswegen, weil es die neuen modalen oder temporalen Quantoren
A und E gibt, die bedeuten für alle Pfade,
die von einem gegebenen Zustand eben ausgehen.
Und wenn wir dann von einem deutschen Zustand ausgehen,
haben wir ja in dieser Baumdarstellung alle möglichen Pfade repräsentiert,
genauso für das EP,
wo es nur um einen Pfad geht,
der dort eben startet
Ja, und für diese Formel würde das eben beispielsweise bedeuten,
dass eben für alle Pfade, die hier ausgehen,
die atomare Formel-Aussage eben pegelt. Nicht, und das andere Beispiel,
das beginnt, ist jetzt gedacht für den Anfangszustand,
wenn wir mal das selber mit G machen,
würde das bedeuten, dass überall eben,
das ist nur, dass es einen Pfad geht,
auf dem überall das P eben gilt.
Also A heißt für alle Pfade von S
aus und E heißt für
mindestens einen Pfad
Ja, und dann hatten wir das ganze Palette der Möglichkeiten durchgespielt.
AG Roth heißt ja für alle Pfade immer, also überall.
AF Roth heißt, für alle Pfade ist es möglich.
Jetzt bezogen auf den Anfangszustand. EF heißt,
es gibt einen Pfad, wo wir auf Rot kommen.
Und E-Geroth heißt, es gibt einen Pfad,
wo immer rot ist. Und E-Grün,
Ante und Roth bedeutet, es gibt einen Pfad,
der immer grün ist,
bis er rot wird und
das Rot wird tatsächlich mal eingenommen
Und AG, A, Grün, Antelroth heißt,
dass das für alle Pfade eben gilt. Ja,
damit hatten wir, haben wir das jetzt sozusagen auf Bäumen bezogen,
noch nicht auf Gripgestrukturen und der Übergang wird also durch eine sogenannte Abwicklung gewährleistet,
ähnlich wie wir eine Waldschleife abwickeln können,
können wir auch eine Gripgestruktur abwickeln,
indem wir bei der Darstellung und beim Übergang der Transaktionen,
die dann erreichten Zustände immer wieder neu hinzeichnen und
keine Schleifen erzeugen
Ja, auf diese Art und Weise kriegen wir jetzt mit
diesen beiden Zustandsquantoren und den schon bekannten und hier behandelten vier Pfadquantoren,
acht Kombinationen, die dann so eben aussehen.
Also hier in der ersten Spalte stehen alle mit A und das war halt nicht bald,
alle mit E und in der ersten Zeile X, dein F, G und Ante. Ja,
und die Syntaxbeschreibung, wie spiegelt das also wieder,
dass wir hier dieses Alternieren haben, dass wir,
also wenn wir zum Beispiel diese Formel hier, EFP ableiten wollen,
eben mit der In der Backosnower-Form so anfangen können,
wie wir dem blauen Fall dargestellt,
dann für dem F in die zweite Zeile gehen,
dann mit dem Geh wieder zurück und dann zu dem Pech springen.
Das heißt also, in CTL, CTL wird dieser Einsatz,
dieser Zustandsquatoren auf diese Kombinationen eingeschränkt, was man nicht machen muss,
wie wir später bei CTL Stern gesehen haben,
wo das nicht der Fall gemacht wird.
Aber hier bei CTL führt das eben zu einer besseren Analysekomplexität. Ja,
die Semantik ist auch jetzt, nachdem Sie jetzt schon einiges
von Temporaler Lüge kennengelernt haben, Nicht mehr schwer einzusehen,
nicht die der Aussagen logischer Teil ist wie bisher.
Und bei dem E und dem Arm steht jetzt hier nun
noch mal natürlich sprachlich, es gibt einen Pfad,
den es beginnt und für alle Pfade.
Das heißt also, für diese Pfade Pi hatten wir ja
vorher in dem LTL-Teil schon eben definiert, was das gilt.
Und darauf beziehen wir uns jetzt. Ja, dann hatten
wir da auch einige Beispiele kennengelernt. Dieses AFQ,
das Nicht-EGP, das AGAFR, das AGP oder Q
und hatten das an dieser Krypto-Struktur dann eben erläutert
Dann gab es hier noch eine Folie mit Äquivalenzen,
die also relativ naheliegend sind und auch gut so merken,
sind wir da auf die letzte,
von der wohl keiner erwartet, dass sie die lernen.
Aber die anderen sind relativ einfach, nämlich hier,
dass das Verschiebendes Negationszeichen, die E&A in ihre Partner
verwandelt und bei dem X das unberührt lässt.
Dann hatten wir euch früher ja schon mal gesehen,
dass das du Antill G gleich dem FG ist und das bleibt auch erhalten,
wenn da ein E davor steht.
Das ist nochmal das entsprechende und das auch
Ja, nicht. Und diese Äquivalent bezieht sich da drauf,
eine semantische Äquivalenz, dass sie also in allen Kribbelstaturstrukturen die linke Seite,
genau dann Geld gilt ja in die rechte Seite, gilt.
Nun hatten wir ja noch weitere spezielle Äquivalenzen,
die auch nicht im Skript stehen und die jetzt hier nur dafür sind,
wenn sie sich noch mal ein bisschen weiter orientieren wollen.
Ja, dann wichtiger ist, dass wir diese acht Kombinationen
zurückführen können auf drei, die wir dann später beim Model-Checking benutzen.
Und ich habe darauf hingewiesen, dass sie so gewählt sind,
dass sie vorne immer eh steht,
weil sozusagen die Existenz eines Pfades einfacher zu überprüfen ist,
als dies für alle Pfade machen zu müssen.
Ja, und dieses, und dieses kann man leicht ausrechnen,
dass man alle diese zurückführen kann auf diese drei,
wenn man die Äquivalenzen auf der Seite vorher eben benutzen.
Ja, dann hatten wir ja was zur Trendschärfe von LTL kennengelernt,
nicht, dass alle Folgen äquivalenten Kriegstrukturen, dass dort LTL-Formen gleichermaßen gelten.
Etwas ähnliches haben wir jetzt hier bei CTL,
wo jetzt die Äquivalenz jetzt durch die Bisimilarität eben ersetzt wird
Also Bisimilare-Modelle können von keiner CTL-Formel unterschieden werden.
Das hatten wir uns an unserem klassischen Beispiel,
das Getränkeautomaten überlegt. Nämlich insbesondere an diesem Zustand,
in denen wir vom Anfangszustand mit dem AX kommen.
Und wenn wir dann EX, Alpha 2 wählen,
hätten wir das hier in dem Fall gegeben.
Aber in dem Fall hier nicht.
Und deswegen würden da unterschiedliche Ergebnisse kommen. Nee,
weil mit dem AX müssen wir ja auch prüfen,
ob das für R6 eben gilt.
Im Gegensatz zum B-Semilarenfall,
wo das dann wiedergegeben ist
Ja, dann sind wir zur CTL Stern gekommen,
wo wir sozusagen alle Kombinationen erlauben und um ein Beispiel zu geben,
so was hier zum Beispiel kann man dann schreiben,
was ja keine CTL-Formeln wäre, also hier nochmal das Bildungsgesetz,
nicht eine in der CTL formeln müsste vor dem U auch wieder ein E oder ein A stehen,
so wie hier rechts,
sodass das hier die linke Formel in CTL Stern,
aber nicht in CTL ist.
Nicht, das benutzen wir aber jetzt nur so sagen,
als Ober aber als Oberlogik um LTL und CTL
miteinander zu vergleichen und gehen da nicht weiter drauf ein.
Ja, dann hatten wir hier nochmal einen Vergleich von CTL und LTL,
zunächst mal hier die Syntax. Wobei wir uns klargemacht haben,
dass wir LTL-Firmen auch schreiben können,
indem wir den jetzt nun bekannten Quantor für alle Pfade vorneweg schreiben können,
aber nicht müssen, weil ja in der Definition von LTL-Formel gesagt wurde,
für alle Pfade,
die im Anfangszustand beginnen,
soll das
eben gelten
Steckt also in der Definition von LTL schon drin.
Haben wir aber damals nur so formuliert und jetzt,
wo wir das A kennen, können wir das auch schreiben.
Aber zur Erinnerung nochmal nur in Klammern dastehend. Ja,
und nicht, und das bezieht sich auch jetzt auf eine Aufgabe,
die Sie, glaube ich, lösen sollen in den Übungen,
wo gefragt ist, ob man diese beiden trennen kann,
ähnliches Beispiel, wie wir eben schon hatten.
Erstmal die Ergänzung, auch für die Negation. Nicht,
das werden wir erst später bei dem Model-Checking auch durchführen,
dass wir nämlich ausnutzen, dass in denen,
an den Positionen, wo eine atomare Formel nicht steht,
entsprechend die Negation gilt,
sodass wir das explizit
nochmal so erweitern können
Gut, dann wissen wir ja, dass LTL sich nicht unterscheiden lässt in Bezug auf die Folgen.
Und dass wir, wenn wir so eine Formel hier wählen,
die dann im rechten Beispiel genauso gelten muss,
weil das ja dieselben Folgen sind,
jetzt bezog eben auf die Mengen der atomaren Aussage.
Also genauer gesagt, müssten jetzt hier immer Mengen stehen in der Kurzschreibweise,
stehen die nur ohne Mengen, Klammern so, da nebeneinander.
Ja, und das sieht natürlich anders aus in CTL,
weil die beiden nicht Bitte Milar sind.
Und das ist so eine Formel,
die jetzt die beiden unterscheidet,
weil aus dem gleichen Argument wie eben hier
der rechte Teil eben nicht gilt
So, dann hatten wir tatsächlich eine CTL-Formel zitiert,
die... Nee, eine LTL-Formel zitiert, mit dem Klarmarmen wieder,
wie eben diskutiert, zu der es keine CTL-Formeln ergibt.
Und wir hatten jetzt auch überlegt,
ob das nicht vielleicht Äquivalent dazu ist und gesehen,
dass das nicht der Fall ist,
wenn wir hier dieses Beispiel hier nehmen.
Nicht, weil nämlich, das bedeutet ja in jedem Zustand,
den wir erreichen können,
können wir immer abbiegen zu dem
Und hier unten, dass auf alle Pfade bezogen ist,
wo es ja auch den Pfad gibt,
der hier Linkslauf lang geht und wo nie ein EP gilt.
Das ist jetzt sozusagen nicht auf eine Gripgestruktur bezogen.
Und auf der letzten nächsten Form haben wir gewesen,
was war das denn dasselbe, nochmal dargestellt in Bezug auf die Gripgestrukturen,
K1 und K2. Nicht, dass die erste Aussage,
jede LTL-Formel, die in K1 gilt,
gilt auch in K2, Fragezeichen, wieso?
Ich habe das nochmal etwas deutlicher gemacht, indem ich mir überlegt habe,
dass sozusagen K1 in ihrem Verhalten eine Obermenge von Etikettfolgen.
Also Traces hat im Vergleich zu K2. Das heißt,
jede Folge, die rechtsmöglich ist,
in Bezug auf die Etikette, ist auch linksmöglich.
Und dann ist klar, dass alles,
was in K1 gilt, auch in K2 gelten muss,
weil das ja eine Untermenge ist.
Nicht mit der Schreibweise tue ich mich an der Stelle noch ein bisschen schwer.
Wir hatten ja früher diese Etikettenfolgen mit E bezeichnet.
Und später wird das auch mit L bezeichnet, also diese Traces.
Deswegen habe ich das hier nochmal beides hingeschrieben.
Nicht heute im weiteren Verlauf benutzen wir da eher das
Ja, und umgekehrt kann man die in CTL wieder unterscheiden,
so wie eben in dem Beispiel eben auch.
Und das Bild, so sagen die,
die Abwicklung ist genau die gleiche wie hier,
über das jetzt hier Pay und Co. miteinander vertauscht sind.
Ja, und dann hatten wir hier diesen Satz nochmal zitiert,
der eine Methode oder eine partielle Methode angibt,
wie man CTL-Formeln in LTL-Formeln transformieren kann in Äquivalente.
Und zwar kann man das ja so machen,
indem man einfach
die Pfadquantoren weglässt
Ja, und der Satz sagt, entweder ergibt dieses Weglassen eine Äquivalente,
LDL-Formel oder wenn das keine Äquivalente gibt, dann gibt es auch keine.
Wenn ich das enthebt an, also nicht der Notwendigkeit,
zu prüfen, ob die Äquivalenz gilt,
wenn man das aber einmal ausgeschlossen hat, weiß man,
es gibt keine andere Wahl, um das auch noch prüfen zu messen.
Insofern ist das schon eine Erleichterung. Ja,
das können wir jetzt auch wieder auf unseren Fall hier anwenden,
wo wir jetzt hier diese Formel haben und nicht,
und wenn wir hier das E- und A streichen,
kriegen wir diese Formel und dass das nicht äquivalent ist,
sehen wir an dieser Kripri-Struktur und hatten wir ja auch schon früher diskutiert.
Ja, nun der globale Vergleich von CTL und LTL,
das sieht dann so aus, nicht,
dass wir die große Obermenge CTL Stern haben. Das ist CTL-Formeln,
ihr gebt die Nicht-Äquivalenz zu einer LTL-Formel sind und umgekehrt,
das ist natürlich einen gemeinsamen Durchschnitt,
gibt es zum Beispiel die Aussagenlogik,
aber es gibt auch temporale Formeln,
die in beiden semantisch Äquivalent sind und man kann natürlich auch hier zum Beispiel einfach durch Disjunktionen,
aber es gibt natürlich auch andere Formeln,
konstruieren,
die in CTL
Stern sind und in keiner der beiden
Bin ich aber aus praktischen Gründen beschränkt man sich auf CTL
oder LTL und deswegen behandeln wir hier auch beides.
Ja, das war jetzt meine Wiederholung. Haben Sie da
noch mal eine Frage zu? Sonst geht es jetzt weiter.
Und zwar mit dem Begriff der Fairness. Wir hatten ja gesehen,
Fairness ist fürs Mortal-Checking insofern wichtig, weil oft die Gültigkeit
nur davon abhängt, ob wir ein faires Verhalten hatten.
Nicht, wenn wir beim Alternative-Protokoll davon ausgehen müssen,
dass der gestörte Kanal ab einem Zeitpunkt permanent gestört ist,
dann können wir auch die Korrektheit nicht beweisen.
Und dieses können wir so sagen als Fairness-Eigenschaft auffassen.
Klassischer ist jetzt folgende Interpretation für Fairness. Wenn ich eine
Alternative habe von zwei Aktionen, die sich ständig wiederholt,
dann soll keine diese Alternativen ständig permanent nicht gewählt werden,
sondern jede soll auch mal gewählt werden
Und eine andere Interpretation, das war eben das Alarnierbeete-Protokoll,
ein gestörter Kanal, übermittelt immer wieder einmal eine Nachricht, korrekt.
Und da kommen gleich nochmal Beispiele dazu. Und wichtig ist,
dass in CTL Stern, und genauer gesagt sogar in LTL,
wir dieses ausdrücken können, aber in CTL eben nicht.
Und wenn man aus Gründen zum Beispiel Komplexität,
CTL gerne einsetzen will und diese Fairness-Eigenschaften auch überprüfen will,
muss man einen Trick anwenden,
den wir
gleich dann behandeln werden
Zunächst einmal nochmal zu dem Fairness in LTL.
Da hatten wir ja gesehen, unendlich oft und irgendwann mal,
immer hatten wir durch GF und FG FI dargestellt,
was sozusagen eine sehr allgemeine Eigenschaft von Fairness.
Also genauer haben gesagt, hängt ja Fairness da mehr zusammen,
dass wenn eine Aktion stattfinden kann, dann soll sie auch stattfinden.
Dazu muss ich auch ausdrücken können, dass sie stattfinden kann.
Und dazu dient zum Beispiel das Prädikat enabled
Nicht, wenn ich zum Beispiel einen Übergang,
eine Transition K habe, dann soll bedeuten,
dass in einem Zustand Enabled von K, gilt,
wenn diese Transition im Zustand möglich ist,
nicht in der Grip geschockt, Struktur heißt das,
das ist von diesem Zustand, eine Kante gibt,
die zu dieser Transition, zu dieser Aktion eben gehört.
Naja, und wenn die ausgeführt wird,
das heißt also, wenn ich im dynamischen Ablauf,
die auch tatsächlich ausführe,
könnte ich das als Executed K bezeichnen
Ja, nicht um diese eine Form der Fanness-Aussagen sagt,
folgendes, dass jede Transition, die oft genug bereit ist, auch oft genug ausgeführt wird.
Wobei dieses oft genug jetzt noch informell ist und dem folgenden jetzt spezifiziert wird. So,
da haben wir zunächst die sogenannte Starke Fairness,
die sagt, wenn also diese Aktion unendlich oft,
nicht das GEF heißt ja unendlich oft, aktiviert ist,
dann soll sie auch mal ausgeführt werden,
wo hier jetzt unendlich oft steht,
was keinen Unterschied macht,
zu einmal,
weil das ja immer wieder auch
iteriert werden kann
Nee, und das ist natürlich eine Eigenschaft,
die man sozusagen praktisch nie überprüfen kann,
weil man ein konkretes System ja nicht unendlich lang beobachten kann.
Deswegen könnte man sich vorstellen,
dass diese Fairness-Annahmen auch nur auf ein endliches Intervall bezogen werden.
Das ist aber unpraktisch, weil man dann die weiß,
wie lange das sinnvoll ist.
Das heißt, wenn wir in einer Krebgestruktur sind,
können wir ja anhand der Schleifen trotzdem Aussagen über unendliche Paarde machen.
Und insofern ist also auch diese Aussage eben anwendbar
Ja, das könnte man zum Beispiel folgendermaßen veranschaulichen. Nicht,
wenn ich hier so eine Kripke-Struktur habe,
wo die Aktion jetzt hier durch so ein Kästchen dargestellt ist,
dann könnte zum Beispiel der nächste Zustand S2 oder S3 sein.
Das heißt, wir haben hier so einen Konflikt.
Welche und Fairness bedeutet, immer dann,
wenn ich hier im Zustand S1 will,
ist ja sozusagen A oder B enabled.
Und die starke Fairness sagt, das soll heutzutage nicht permanent
nur die eine ausgeführt werden.
Das heißt, so ein Pfad zum Beispiel
nur obenrum soll ausgeschlossen werden
Nicht, das kann man zum Beispiel bei Protokollen,
die endlos laufen und wo wir eine Waldschleife haben,
zum Beispiel dazu ausnutzen, um zu spezifizieren,
dass sie irgendwann mal verlassen werden soll oder dergleichen.
Aber ich glaube, es ist unmittelbar klar,
dass es eine sinnvolle Erforderung ist.
Und wodurch das geschieht, das bleibt hier eben offen.
So, der starken Fairness kann man jetzt die schwache Fairness gegenübersetzen.
Da sehen Sie, da wird die das
unendlich oft durch das
irgendwann ersetzt
Was hier unten nicht gegeben wäre,
hier ist ja weder A noch permanent, irgendwann mal aktiviert.
Und das hat zum Beispiel eine folgende Anwendung, wenn wir so ein System haben,
nehmen wir mal an, drei völlig ungekoppelte, sequenzielle Systeme.
Und wenn zu sagen, der eingenommene Zustand ist der,
wo hier so eine Marke liegt,
dann wären ja hier im Ersten, wäre diese Aktion aktiviert,
in dem Zweiten wäre ja oben die Aktion aktiviert und in dem Dritten die Aktion aktiviert.
Und durch diese schwache Fairness wäre zum Beispiel ausgeschlossen,
dass Nur hier der linke Prozess immer weiterläuft.
Und die rechten nie. Ich glaube,
wir hätten die sagen, ja, in einem normalen Prozessor,
wo jeder irgendwie in einem Mikrosekunde oder sowas Ausführungszeit hat,
passiert das ja eh nicht, weil ja der Skedular-Leute,
den alles mal zuteilt. Das ist zwar richtig,
aber in unseren Kripka-Strukturen haben wir aber die Möglichkeit gegeben,
dass wir nur Pfade betrachten, die jetzt dieses Verhalten,
wie eben beschrieben, beschreiben.
Und um gerade diese Beziehung zwischen dem,
was von der Hardware oder von den praktischen Beispielen
sinnvoll ist und der abstrakten Betrachtung in Kripke-Strukturen herzustellen,
benutzt man hier die Eigenschaft der schwachen Fähren ist.
Und wir hatten das ja an der Kripke-Struktur mit dem wechselseitigen Ausschluss
ja auch schon artikuliert. Ja, und dann kann man
als letztes noch diese unbedingte Fairness hinnehmen, die ohne dieses Enabled auskommt.
Und da war ja das Beispiel des Alternier-Pit-Protokolls.
Und in diesem Zusammenhang, da wird sinnvoll,
dass man das vielleicht auch als Fairness mit hinzunehmen kann.
Okay. Oder Frage dazu? Ja, und jetzt nochmal
also zu diesem CTL-Problem. Wenn ich dieses Fairness nicht In dem,
na, ich gehe nämlich mal wieder zurück, damit sie da nicht abgelenkt sind.
Wenn ich diese Fairness nicht in meiner Logik ausdrücken kann,
sie aber trotzdem in meinem System, in meinem Modelchecking berücksichtigt haben will,
dann kann ich auch so vorgehen, dass ich sage,
ich betrachte überhaupt nur Abläufe, die diese Fairness-Bedingungen erfüllen.
Das heißt, Bevor ich überhaupt das Model-Checking mache,
schränke ich das Verhalten meiner Kryptostruktur so ein, dass nur einer dieser Fairness-Bedingungen gilt.
Und dann mache ich weiter wie vorher und dann ist natürlich auch gewährleistet,
dass meine formale Darstellung des Verhaltens zwischen der Kriptostruktur, diese Fairness-Bedingung erfüllt.
Ich würde euch natürlich in dem Sinne einen Trick,
weil wir ja so sagen, das Väters-Problem ausgelagert haben.
Ja, und die zugehörige Grippestruktur, die heißt dann faire Grippestruktur.
Und die arbeitet jetzt mit Endzuständen und diese Endzustände,
Die haben jetzt genau dieselbe Bedeutung, wie wir das von den Büchi-Automaten erkennen.
Hier wäre sozusagen ein Beispiel eines solchen Mengen von Endzuständen.
Und das eingeschränkte Verhalten bedeutet jetzt eben,
dass wir nur solche unendlichen Folgen betrachten, bei denen unendlich oft dieser Endzuständ,
also eine solcher Menge von Endzuständen besucht werden.
Und der verallgemeinerte Büchi-Automate sagt ja, wenn wir mehrere solche
Mengen von Endzuständen haben, dann muss das für alle gelten.
Genau aus diesem Grunde hatten wir früher auch noch diesen Verallgemeinheiten Büchi-Automaten betrachtet,
weil das hier für diese Betrachtung, eben relevant ist.
Nicht um das Interessante dabei ist, dass eben diese Fairness-Bedingungen,
die wir vorher hatten und auch noch andere Varianten,
eben durch diese Art von Endzustände in der Krypto-Struktur darstellbar sind.
Also das, was man unabhängig davon schon in den Pushy-Automaten definiert hatte.
Das passt also zusammen. Sie sehen hier in der Definition ist es ja auch so,
nicht, dass so ein Pfad fair heißt,
wenn er alle diese Endzustandsmengen unendlich oft besucht. Ja,
Und die entsprechende Notation ist jetzt die folgende,
das ist ja das semantische Gültigkeitszeichen,
das ließ sich also für die Gripri-Struktur M und den Zustand S
gilt jetzt diese Formel hier und wenn ich da noch ein F dranschreibe,
dann soll das bedeuten,
dass nur die fairen Pfade betrachtet werden,
wo ich also
diese Einschränkung habe
Digga, also hier haben wir noch keinen modalen Apparate dafür,
dann gilt das für den ersten Zustand.
Bei E heißt es, es gibt einen fairen Pfad und bei
den A für alle beginnenden Vater. Welches Beispiel haben wir hier,
man könnte zum Beispiel als diese Endzustandsmenge nehmen, die Menge der Zustände,
wo wir also Not Sand E oder Receive E für den Kanal E haben.
Nicht, dass hier so viel wie Sand E impliziert, Receiv E.
Das heißt, wenn gesendet wird, wird es auch empfangen.
Nämlich, und wenn man mehrere Kanäle haben,
haben wir ja mehrere solche Bedingungen und von daher ist es auch sinnvoll,
dass wir mehrere solche Mengen von Endzuständen dann eben brauchen
Ja, das ist jetzt ein kleines Intermetto.
Da kommen wir dann später ja nochmal drauf zurück,
wenn wir das Model-Checking und insbesondere das faire Model-Checking behandeln werden.
Zunächst mal kommen wir jetzt erstmal zum LTL-Model-Checking. Ja,
Sie erinnern sich ja an diesen Ansatz, Verifikation heißt,
das Systemverhalten muss die Systemspezifikation erfüllen. Das heißt,
alle Abläufe, die ihr im System möglich sind,
sollen auch in der Spezifikation gegeben Ich habe da mal in einem Buch eine nette Gegenüberstellung gefunden,
wo das Modelchecking, dem Seering-Proving, dem Gegenüber gestellt wird,
einfach nur um die Besonderheit dieses Modelchecking deutlich zu machen.
Syrien-Brufung bedeutet, ich schreibe für das Systemverhalten eine logische Throne,
zum Beispiel Prädikaten-logisch oder auch Temperal-logisch.
Und aus dem für die Systemspezifikation und dieser Pfeil,
der mutiert dann zu einer Implikation, nicht wenn links,
dann rechts. Und dann habe ich eine logische Formel,
die ich verifiziere und dann kann ich dann
zum Beispiel einen automatischen Beweiser oder dergleichen einsetzen
Nicht, also Siri-Broofing könnte man Englisch so formulieren.
Systems formular, emplies, property for mula. Das heißt also,
wir haben eine Implikation, wobei die Prämisse, eine Formel ist,
die das Systemverhalten beschreibt und die Conclusio eine Formel ist,
die die Eigenschaft, die Spezifikation beschreibt.
Welche und im Model-Checking würde man dann entsprechend sagen,
Systems and Samantics is model of property for mula.
Sie kennen vielleicht den Begriff des Modells,
auch aus der Logik, das ist ja eine Struktur,
die eine Formel erfüllt
Und das haben wir ja hier gerade, die Situation,
dass das korrekt ist, wenn eben das Verhalten des Systems,
die Formel eben erfolgt,
in dem Sinne kann man das System als Modell betrachten.
Das ist dann speziell das Modell, wäre dann die Kripke-Struktur. Ja,
in Zeichen wäre in den Formeln wäre das so,
nicht wenn wir die Systemformel durch Fieber 3 beschreiben oder die Eigenschaft durch F,
wäre das eine logische Implikation beispielsweise.
Und während wir hier unten die Gültigkeiten haben,
das wäre ja hier die semantische Gültigkeit
Also wir können diese Implikation natürlich auch in der Logik semantisch überprüfen,
aber ein Modelchecker macht das natürlich, sind taktisch.
Insofern wäre das auch eine Gegenüberstellung von Syntax oben gegen Semantik eben unten.
Ja, das ist nun mal nur allgemein und konkret jetzt beim Modelchecking,
beim LTL Modelchecking, haben wir jetzt folgende Aufgabe.
Für eine gegebene Gripgestruktur M,
nicht wie immer bestehend aus Zuständen, Anfangszuständen,
Transaktionsrelation und Etiketten und eine gegebene temporallogische Formel F ist zu berechnen,
die Menge aller Zustände,
in denen
diese Formel eben gilt
Welche Hürden sagen, ja, das ist ja viel zu viel.
Eigentlich wollen wir das ja nur wissen, ob das in den Anfangszuständen gilt.
Es zeigt sich aber, dass die meisten Verfahren eben so funktionieren,
dass man diese Eigenschaft eben für alle Zustände ausrechnet und dann hinterher guckt,
ob es auch für die Anfangszustände eben gilt.
Und daher diese Formulierung. Ja,
und der letzte Satz, der bedeutet Folgendes,
diese Gripgestruktur ist, die sozusagen gegeben, als Gripgestruktur,
also ob die Gripgestruktur als Graph oder als Tuppel gegeben ist,
ist hier nicht gemeint, sondern das soll abheben gegenüber der Tatsache,
dass das System ja auch zum Beispiel durch ein Programm gegeben sein kann.
Und bei einem praktischen Model-Checker würde das so aussehen,
ich habe eine Programmsprache, sei es direkt Java oder eine künstliche,
die der Model-Checker versteht und in einem Pre-Processing wird aus dieser
Programmsprache dann erst die Kripostruktur gebildet und dann geht's los.
Neben diesem ersten Schritt, den lassen wir hier weg,
sondern fangen gleich mit der Kripostruktur nebenan.
Ja, nicht und gesucht ist jetzt eben ein solcher Algorithmus
für solche LTL-Formeln
Ja, da haben wir ja schon Vorarbeit geleistet.
Sie erinnern sich ja ganz am Anfang bei den Transitionssystemen,
hatten wir ja das Ganze auf diese Inklusion zurückgeführt.
Und insbesondere betont, dass wir diese Inklusion ja auch durch
einen Durchschnitt darstellen können. Jetzt erinnern sich,
das bezog sich ja auf dieses Diagramm, das nämlich eine,
dass diese Menge P genau dann in Kuh enthalten ist,
wenn P mit dem Kompliment der Menge
In dem Kompliment der Menge Kuh einen leeren Durchschnitt hat,
wozu ich also die Gesamtmenge eher natürlich erkennen müssen,
in Bezug auf die das Kompliment eben gebildet wird.
Ja, nicht nur, wenn ich das für den Fall
hier übersetze, würde dann aus diesem Durchschnitt folgendes werden.
Nicht das als P,
nehme ich das Systemverhalten und auf diesem zweiten Teil der Durchschnitte
ist nämlich das Kompliment des Verhaltens der Spezifikation
und prüfe das auf Entdeutschnitten
Ja, dieses Verfahren ist folgendermaßen motiviert. Achso,
hier nochmal der Algorithmus, der würde dann eben so aussehen,
haben wir noch eine Prozedur-Check, LTS von Süss,
11 von TVNS Speck, also wir machen Model-Checking in Bezug auf
die Sprache des Transitionssystems für das System und das Transitionssystem der Spezifikation.
Wir konstruieren das Kompliment des Transitionssystems für die Spezifikation und konstruieren
dann den Produktautomaten für den Durchschnitt und prüfen dann,
ob die entsprechende Sprache das Verhalten leer ist
Welche? Und wenn es leer ist,
geben wir im Wahr zurück und sonst False.
Und auch dann eben noch dieses Counter-Assemble-Accounter-Ixabel, was ja später nochmal darstellen.
Ja, dieses Verfahren hat jetzt folgende Vorteile. Wir hatten ja gesehen,
der Durchschnitt eines Akzeptierendes eines, der Durchschnitt von des Verhaltens
von zwei Transitionssystemen ist relativ einfach darzustellen durch ein eigenes.
Das war ja die Konstruktion mit dem Fleck,
mit dem 1 und 2. Nicht,
das ist für sie vielleicht am Anfang gar nicht so einfach,
aber im Prinzip ist es ein einfaches Verfahren.
Und was hat auch eine relativ niedrige Zeitkomplexität,
nämlich quadratisch
Ja, und auch dieser Durchschnittsbildung ist relativ einfach.
Das kann man in linearer Zeit also prüfen, ob eben
dieser Durchschnitt leer ist. Man muss ja nur sehen,
ob man überhaupt ein Pfad zu einem Endzustand findet und einen Zyklus dort.
Ja, dann bleibt also noch das Kompliment. Das ist natürlich oft schwierig,
aber nicht so schwierig, wenn wir, ja,
da muss ja nicht so schwierig, wenn wir ein deterministisches System haben,
dann können wir oft einfach das nur so machen,
indem wir die Endzustände komplementieren.
Aber in vielen Fällen ist es nicht deterministisch und dann wird es schwierig.
Ja, und dann betrachten wir also den Durchschnitt.
Und das hatten wir ja schon mal an diesem Transaktionssystem am Anfang untersucht.
Sie erinnert sich an den gestörten Kanal zwischen Sender und Empfänger
. Da hatten wir dann als System, Transaktionssystem folgendes,
wir haben ja hier das Lesen im Kanal A,
des Datums D und die Abgabe im Kanal C.
Und wir haben dann noch die Möglichkeit, diesen Fehler abzumt abzugeben.
Nicht, das ist jetzt schon das Transitionssystem für das externe Verhalten dieses Beispiels.
Ja, und die Spezifikation sieht ja gerade so aus,
dass dieser Fehler hier nicht auftritt.
Und wenn wir da jetzt diese Methoden anwenden,
müssen wir also überprüfen,
dass jetzt sozusagen die Sprache von dem Linken enthalten ist in dem Rechten,
was natürlich nicht gilt,
weil wir ja gerade die
. .
Und ich wachte jetzt mal ab, ob das jetzt so bleibt.
Also, wir wollen ja überprüfen,
ob das Verhalten des linken Transitionssystems ein Unterverhalten des Rechtens ist.
Und nach der eben beschriebenen Methode bilden wir ja dann den Durchschnitt
des linken Transaktionssystems oder des Willen-Produkt-Transaktionssystems mit dem Kompliment des Rechten.
Und dazu stellen wir erstmal jetzt das Komplimente dar,
also das Kompliment von dem PS Spec,
das ist jetzt hier durch den Oberstrich hier dargestellt.
Und die sehen, da haben wir jetzt noch einen weiteren
Zustand für die Übergänge, die hier nicht da sind.
Und die Endzustände sind komplementiert hier
So, und dann bilden wir den Durchschnitt,
also das Produkttransitionssystem zwischen dem hier und dem hier, was sie daran erkennen,
dass wir jetzt hier diese Paare von Bezeichnern haben. Ja,
und sie sehen, dieses Produkttransitionssystem hat ein Verhalten, was nicht leer ist,
denn wenn wir hier hingehen und zunächst mal auch endliche Folgen betrachten,
genauso auch mit unendlichen Folgen, sehen wir,
dass wir einen solchen Pfad haben,
der das Verhalten beschreibt und der aber auch gleichzeitig ein solches Counter-Example gibt,
weil der in der Tat ein Pfad ist,
der dann zu dieser fehlerhaften Transition eben führt.
Nicht und das erlaubt es dann Ich weiß,
bei diesem einfachen Beispiel auf der Hand liegt,
aber bei komplizierten Fällen diesen Fehler eben aufzuspüren.
So, jetzt sind wir aber bei temporaler Logik und da
ersetzen wir jetzt die Spezifikation hier durch eine temporale Formel,
also im Augenblick durch ein LTL.
Und Sie können sich vielleicht fragen, wie die jetzt aussehen könnte.
Die könnte ja zum Beispiel so aussehen, immer dann,
wenn ich hier ein Datum in A lese,
wird das
auch in C abgegeben
Und das gilt auch am Anfang. Und das könnte zum Beispiel drin eine Formel sein,
immer dann, wenn ich in Großa ein Datum lese,
dann wird es im nächsten Schritt nicht,
weil das ganze Jahr auf Folgen bezogen ist,
wird es im nächsten Schritt auch auf D geschrieben.
Und am Anfang lese ich auf A. Das wäre dann die Formel,
die dann jetzt hier dieses Transitionssystem eben ersetzt.
Und dann würde hier in der Konstruktion auf der rechten Seite
ein Transitionssystem für diese Formel dann eben stehen
Okay. Ja, und wenn wir das jetzt aber machen,
also wie vorher beschrieben, dann bemerken wir zunächst mal,
dass das natürlich ineffizient ist,
weil diese Komplimentbildung im Fall eines nicht-diterministischen Transaktionssystems sehr aufwendig ist.
Und der Ausweg besteht jetzt darin, dass wir statt
des Transitionssystems, wie gerade beschrieben, die Formel nehmen.
Nämlich, wenn wir das Verhalten eines Transitionssystems komplementieren wollen, ist das schwierig.
Aber wenn wir sozusagen das Verhalten einer Formel komplementieren wollen,
ist das einfach, dann brauchen wir nur einen Haken davor zu schreiben.
Also die Negation. Das heißt, wenn wir die Spezifikation
eh schon vorliegen haben als Formel, brauchen wir nur die,
die Negation zu nehmen und dann dazu das Transaktionssystem gleich für die Negation zu konstruieren.
Das heißt also, dieser Schritt hier,
der bleibt kompliziert, aber es war vorher auch schon,
aber sozusagen die Komplimentbildung wird jetzt durch diesen Trick einfacher,
was jetzt in unserem Schema jetzt so aussieht,
wir bilden jetzt das Produkt von mit den Transaktionssystemen für das Verhalten des Systems,
mit dem Traditionssystem,
für die Negation der Spezifikationsformel.
Und der Gegenüber, ganz am Anfang haben wir jetzt hier
auch das Ganze jetzt wieder auf unendliche Folgen bezogen,
was der Exponent Omega angeht,
was wir sozusagen bei dem Transaktionssystem am Anfang ja zunächst
noch nicht hatten
So, nicht. Und deswegen sieht jetzt
das Model-Checking für LTL oder für Büchi-Automaten jetzt folgendermaßen aus.
Wir haben ja also auf der einen Seite das System und auf der
anderen Seite fangen wir dann gleich mit der Negation der Eigenschaft an.
Das ist ja nur egal, wie wir die Frage am
System erstellen. Und der erste Schritt besteht eben darin,
dass wir ein Modell für das System erzeugen,
also zum Beispiel eine Krippestruktur.
Das kann auch zum Beispiel, wenn wir von einem Programm kommen,
erst den Zustandsgrafen und daraus die Skriptgestruktur.
Nicht nur auf der rechten Seite könnte diese Eigenschaft ja
irgendwie umgangssprachlich gegeben sein,
formalisieren wir dann als negierte LTL-Formel
So, und dann geht's links weiter, indem wir dieses Modell
als Büchi-Automaten schreiben, da ist natürlich keine große Sache.
Und dass wir auf der rechten Seite zu der LTL-Firmel auch den entsprechenden Büchi-Automaten konstruieren,
da kommt dann zwischendurch möglicherweise dieser generalisierte Büchi-Automaten vor und vielleicht
auch noch andere Zwischenschritte, die wir hier nicht weiter behandeln.
Ja, und dann kommt die Durchschnittsbildung in Form des Produktautomaten
, das würde so aussehen
Und dann prüfen wir, ob das Verhalten leer ist.
Wenn ja, dann ist das System korrekt. Und wenn
nein, dann geben wir ein Gegenbeispiel an zur Fehlerkorrekturkorrektur.
Ja, das seht ihr alles jetzt schlicht und einfach aus.
Ist aber so kompliziert, dass wir es hier in der Vorlesung nicht behandeln können.
Also die Konstruktion eines Büchi-Automaten aus einer Formel.
Das ist nicht ganz trivial. Das können sie zum Beispiel
in dem Buch mit der Mit dem Raketenstart der Ariane,
was ich zitiert habe, schön nachlesen. Das ist,
wie gesagt, also nicht so einfach und hat auch eine große Komplexität.
Aber das Grundschema ist so, wie hier beschrieben.
Und das ist also in dem Sinne ganz anders als beim CTL-Model-Checking,
was wir heute noch kennenlernen werden,
weil wir beim CTL-Model-Checking nicht Bushy-Automaten betrachten werden.
Okay, aber jetzt nochmal zur Komplexität.
Dieses Verfahren haben wir jetzt die nächste Folie.
So sah das ja aus
Und wir fragen also, wie groß die Komplexität ist.
Da müssen wir ja bereits, dass wir zu jeder LTL-Formel
einen äquivalenten Büchi-Automaten konstruieren werden kann, der Gestalt,
dass die Zeit- und Platzkomplexität dieses Algorithmus zwei hoch in der Größe der Formel ist.
Und das ist einfach schon daran zu sehen,
dass der Automat zwei hoch in Größe der Formel Zustände besteht.
Es gibt ja Probleme, wo wir ein kleines Ergebnis haben,
zum Beispiel ja oder nein, aber trotzdem der Algorithmus exponentiell ist.
Hier ist es sogar so, also dass das Ergebnis exponentiell ist.
Wenn wir nur ein Ja-Nein-Algorithmus haben,
wäre ja die Größe des Ergebnisses nur ein Bit. So,
der nächste Schritt ist, der Produktautomat,
da war ja diese Geschichte mit diesen Flex,
da hätten wir dann zweimal das Produkt von der Größe des Automaten,
den wir hier oben konstruiert haben und dem Transitionssystem für das System.
Das heißt also, M war ja jetzt die Gripke-Struktur,
die wir aus der Spezifikationsform genauer gesagt,
der Negation gebildet hat.
Das haben wir ja
nur in
etwas anderen
So, und der letzte Punkt war ja die Feststellung der Lehrheit.
Und da brauchen wir höchstens so viel Platz und Zeit,
wie der Produktautomat Zustände er hat.
Das heißt, insgesamt haben wir hier also o von
der Größe des Traditionssystems mal zwei hoch,
o von
Ja, wie gesagt, da könnte man also der Meinung sein,
dass er zwei Hoch-UVNF die ganze Geschichte dominiert.
Das kann auch der Fall sein. Aber wie gesagt,
in vielen Fällen ist also diese Formel klein,
sodass die ganze Geschichte von der Größe des Transaktionssystems dominiert wird.
Das heißt, von der Zustandsexplosion von dem Programm zum Erreichbarkeitsgraf oder der Grip-Grip-Struktur.
Und die entsprechende Formel jetzt für das CTL-Model-Checking wird so aussehen,
dass der vordere Teil gleich ist.
Aber hier steht jetzt einfach nur, die Größe der Formel,
also ohne zwei hoch. Nicht so,
dass man auf den ersten Blick sagen können,
CTL ist sehr viel einfacher, aber bei kleineren Formeln,
wie wir das hier zum Beispiel haben, tut sich das eben nichts.
Ja, haben Sie dazu noch eine Frage?
Sonst würde ich jetzt dann weitergehen und wir kommen jetzt zu
dem dualen Problem, nämlich dem CTL-Model-Checking.
Ja, dann haben wir dieselbe Ausgangssituation, jetzt nur für eine CTL-Formel.
Das heißt, wir suchen jetzt einen Algorithmus für eine CTL-Formel
Und dieser Algorithmus, sie sieht also, wie gesagt,
völlig anders aus, als bisher behandelt.
Und der ist in dem Sinne einfacher, dass wir
ihnen ihr auch vorführen können, anders als die Bücherautomatkonstruktion.
Und die ist gleichzeitig auch einsichtig, nicht? Also manche
Konstruktionen kann man ja vorführen, aber man hat hinterher kaum einen Erkenntnisgewinn.
Hier lernen wir auch noch eine ganze Menge über CTL-Formeln,
so nebenbei erkennen. Ja, und der Algorithmus,
der setzt jetzt hier bei den Etiketten an
Und zwar werden diese Etikette, die wir ja in
den Formeln stehen haben, jetzt schrittweise zu Formeln erweitert.
Wenn ich diese Etikette, das waren ja Mengen von atomaren Formeln,
was wir auch als Konjunktion auffassen können, was ja schon eine Formel ist.
Und das wird jetzt schrittweise zu temporalen Formeln erweitert,
bis wir am Schluss bei der Formel sind, die wir prüfen werden.
Und die kann jetzt dann nach dem Verfahren in einigen Zuständen stehen oder nicht.
Und in den Zuständen, wo sie steht,
für die gilt dann diese Formel. Und wenn sie dann,
wenn unter diesen Zuständen, weil alle Anfangszustände sind,
dann wissen wir, sie gilt dann für diese Gripku-Struktur.
Ja, und diese neuen Etikette werden jetzt also als Label
von S bezeichnet, um da eine Unterscheidung zu haben.
Nicht, das heißt Label von S soll also semantisch,
alle sollen Teilformeln der gegebenen Formeln sein,
die in diesem Zustand wahr sind.
Nicht nur, das haben wir regikursiv oder induktiv über die Schachtelungstiefe.
Wir fangen bei den einfachsten Formeln an und gehen Entsprechung
der Schachtelungstiefe vor, sodass entsprechend auch die Konstruktion eben aussieht
Ja, dann haben wir zunächst mal die Prozedur Check F.
Das heißt für den Fall, dass unsere Formel F eine atomare Formel ist.
Ja, da ist fast nichts zu tun. Da gehen wir so vor,
dass wir einfach diese atomare Formel jetzt als Label übernehmen.
Wir nehmen die alten Label nicht, das könnt ihr auch irgendwie
in einem späteren Zustand angewandt werden und nehmen jetzt einfach nur die Formel noch hinzu.
Das heißt, wir benennen einfach das EVNS in Label von
... Also diese Seite zeigt jetzt diesen CTL-Algorithmus abstrakt.
Da sollten sie aber nicht die Flinte ins Korn werfen.
Wir machen gleich noch ein ganz einfaches Beispiel,
wo sie das dann vielleicht noch besser verstehen.
Aber manchmal mag das jetzt vielleicht lieber so abstrakt das mal haben.
So, der nächste Fall wäre, wenn unsere Formel,
die wir betrachten, die Negation einer anderen Formel F1 ist.
Nicht, dann machen wir das,
was wir auch schon häufig gemacht haben, Wir suchen Zustände,
wo dieses F1 nicht drinsteht und unsere Interpretationspretation war ja,
wenn das nicht zu dem Etikett gehört oder den Formeln,
die wir mittlerweile haben, dann ist die Bedeutung,
dass die Formel nicht gilt.
Also wenn F1 nicht gilt, dann gilt eben F und deswegen
führen pügen wir das jetzt zu diesen Labeln hinzu. Ja,
entsprechend machen wir das mit oder, wenn die Formel der Gestalt ist,
dass sie eine Disjunktion ist von F1 oder F2,
dann schauen wir nach,
Ob eben in einem Zustand F-1 oder F-2 gilt und wenn das der Fall ist,
dann fügen wir diese Formel hinzu.
Manchmal ist jetzt in der Darstellung auch so und auch in unserer Konstruktion,
dass wir dasselbe auch für die Konjunktion machen, aber wie wir wissen,
können wir das hier ja perdemorgern durch oder und nicht ausdrücken.
Manchmal nutzen wir das aber. Dann würde dann jetzt ja
hier statt dem oder auch in uns stehen,
was dann natürlich praktischer ist
So, das war der Aussagen, logische Teil.
Und jetzt kommen wir zu dem Temporal logischen Teil,
wo ja die einfachste Situation die ist, wo wir EEX F1 haben.
Das heißt, wenn unsere Formel die Gestalt hat, EEX F1,
dann können wir ja in einen gegebenen Zustand F reinschreiben,
wenn wir einen Pfeil finden, der von diesem Zustand ausgeht,
in einen anderen Zustand, wo F1 gilt.
Das heißt, dass Check F1 sagt folgendes für alle Zustände machen wir.
Wir betrachten die Zustand Transitionsrelation, nicht das könnte zum Beispiel
so sein. Und wenn dieses F1 in dem Ziel,
in dem Ende des Pfeiles, des Überganges gilt,
und wenn doch F1 gilt,
dann schreiben wir EX F1 auch zu dem S. Das heißt,
wir fügern das auch zu dieses F dann auch zu dem Label von S hinzu.
Und bei dem E wegen des E brauchen wir also
nur einen solchen Übergang zu haben.
Wenn ich am Ende A stelle, müssten wir
das für alle Übergänge überprüfen
So, dann kommen noch die komplett komplexeren Temporallogischen Apparatoren,
das Antel. Da prüfen wir also erst F1 und F2
und dann haben wir hier die Prozedur Check EU F1 F2.
Die wird jetzt aus dieser Folie ausgegliedert,
weil das ein bisschen komplizierter ist wie Vergleich sehen werden.
Genauso für das EG. Nicht das heißt,
wir prüfen F1 und haben dann die Prozedur EG F1,
was wir jetzt gesondert dann eben behandeln.
Sie sehen aber jetzt bei dem Algorithmus haben wir statt der
8 Kombination nur die Treibe benutzt, nämlich EX,
EU und EG sowie früher also beschrieben
Das steht jetzt noch einmal auf der nächsten Formel, Folie drauf.
Das heißt also, wir haben jetzt hier,
wir brauchen nur diese drei zu überprüfen,
wobei jetzt für EU und EEG das ausgegliedert ist,
das EX ist aber ausführlich eben in der Folien,
im Algorithmus vorher beschrieben worden.
Gut, also jetzt nach der abstrakten Darstellung machen wir
das Ganze jetzt nochmal an einem kleinen Beispiel.
Und zwar sei jetzt unsere Formel EXA oder nicht
Und unsere Kripke-Struktur sei also diese hier, wo wir in S1
gar nichts haben, in S2A und in S3 RB.
Ja, und unser erster Schritt war ja,
wo wir jetzt die Atome untersuchen. Das heißt,
der erste Schritt war ja, wir setzen die Artur,
wir übernehmen die Atome jetzt in unserem Label.
Und das bedeutet ja hier in unserem Falle,
dass wir die gleich übernehmen können,
was jetzt hier in diesem Schritt, also nichts zu machen ist,
wo ich aus Versehen jetzt die Folie weiter geschaltet habe.
Nicht in unserer Formel kommt ja A und B vor,
ganz unten in der tiefsten Schachtelungstiefe.
Wir haben hier A und B, was wir vorher
als Etikett hatten, das übernehmen wir jetzt als Label.
Ich also dieses L hier ist noch ein Druckfehler aus früheren Zeiten.
Das soll also jetzt diese Etikettfunktion sein und wir überführen das
jetzt in diese Label-Funktion
So, nächster Schritt war ja diese Negation. Das heißt,
wir gucken jetzt überall, wo nicht B gilt und führen das ein.
Also zum Beispiel in S2 gilt nicht B,
weil ja B nicht darstellt. Also haben wir da nicht
B ein. Und NS1 gilt auch nicht B,
also fügen wir, dass da eben ein.
Jetzt mal die Frage an Sie. Sie erwarten jetzt vielleicht,
dass wir das auch für nicht A machen.
Erwarten Sie das oder erwarten Sie das nicht?
Sie schütteln deinen Kopf? Nein. Warum machen wir das
nicht für nicht A
Ja, ne, weil in der Formel F kommt gar kein Nicht-A drin vor.
Und wenn wir das für alle Kombinationen machen würden,
dann würden wir ja Teufelsküche kommen, weil das ja so viele gibt.
Das heißt, unsere Konstruktion ist genau auf diese Formel bezogen. Das heißt,
wir fangen mit den Atomaren an und dann gehen wir induktiv
der Formelstruktur immer höher und da kommt ja ein Nicht-B vor,
deswegen machen wir das,
aber kein Nicht-A. Nicht nur den nächsten Schritt betrachten wir
A oder nicht
Aber nicht etwa A. und nicht B. Und kommt ja
gar nicht drin vor. Das ist also wichtig,
dass das sozusagen dieses Verfahren in Betrug auf eine Formel ist.
Ja, also bei drittens haben wir jetzt also die Discos,
die Disjunktion und wir gucken überall,
wo A oder nicht B-Geld und Führungen da eben A oder nicht B hinzu.
Das ist also an dieser Stelle, wo wir A haben,
also gilt da A oder nicht B und wir kriegen also
solche Mengen jetzt von Formeln.
Und bei Nicht-B haben wir auch A oder nicht B
und bei S3 haben wir weder A noch nicht B,
also kommt da nichts hinzu
So kommt jetzt der vierte Schritt,
weil wir ja jetzt hier noch das EX haben.
Bin ich bei dem EX, war es ja so,
dass wir dann immer die Pfeile rückwärts gehen müssen,
weil ja das EX sagt, im nächsten Schritt sollten das gelten.
Also, wenn wir jetzt diese Formel haben,
müssen wir die Position oder die Zustände suchen,
wo wir A oder nicht B haben und einen Pfeil zurückgehen.
Ja, und wer kann jetzt sagen, an welchen Stellen
wird jetzt also dieses EX A oder nicht B eingetragen,
also schon unser ganzes F?
Ja, bitte
Ja, gucken wir das nochmal im Einzelnen. Nicht wir gehen,
wenn wir von S2 zurückgehen, dann,
weil wir ja A-O oder nicht B haben,
dann tragen wir das hier bei S1 ein und ihr in,
hier haben wir ja auch A oder nicht B und wir tragen das hier unten ein.
Sonst hätte man natürlich auch in der umgekehrten Reihenfolge hätte ich das zeigen können,
erst plaudern grün, das ist unabhängig,
das sieht jetzt nur so ein bisschen aus,
als würde das voneinander abhängig.
Gut, dann sind wir jetzt also mit dieser Formel schon fertig.
Und wir sehen genau, in welchem Zustand unsere Formel nämlich gilt,
nämlich in allen den Zuständen, wo die Formel jetzt steht.
Und das ist ja jetzt S1 und S3 und nicht in S2.
Und wenn ihr zum Beispiel S1 der Anfangszustand wäre,
dann würde das für die Kripka-Struktur eben gelten.
So, jetzt geht es weiter mit dem Ante,
was ja jetzt in unserer Formel nicht vorkommt.
Da habe ich dafür jetzt eine neue Formel gebildet,
wo jetzt das, was wir eben hatten,
hinter dem Antil stand.
Und vorne haben wir noch ein
Nicht nur eine neue Kripo-Struktur,
wo jetzt hier der hintere Teil eben steht. Ja,
kann jetzt jemand schon mal intuitiv sagen, am Ende unseres Verfahrens,
in welchen Zuständen würde dann die Formel F stehen?
Lassen Sie sich ruhig ein bisschen Zeit.
Ja, bitte? S3 S3 S4 S5 und S1
Das ist so eine Randbedingung, aber wenn Sie die Definition angucken,
dann gilt das Antil auch schon, wenn das F-2 gilt, also auch da, nicht? Das heißt,
also ich wiederhole noch, weil Sie gesagt haben,
die Erwartung ist, das sollte in S1 gelten, S3,
S4, S5 und die Begründung ist, hier in S1 gilt es,
weil ja da die Formel gilt, hier in S3,
weil ja da das B gilt und ich einen Weg dahin habe und für alle Wege,
wo unterwegs immer B gilt und wo ich am Ende da gilt,
gilt diese Formel F,
also nicht in
So, im Einzelnen geht das so aus,
das war diese Beschreibung, und das bedeutet ja,
dann, wenn ich diese Formel hier habe,
wo der hintere Teil F2 ist,
dann gilt auch das Antil nach Definition,
können Sie noch mal nachschlagen.
Und dann gehe ich rückwärts die Pfeile, solange wo ich
auf ein F1 treffe und kann da eben auch dieses Antil eben eintragen.
Das wäre sozusagen der Einschritt-Fall, und dasselbe gilt natürlich auch für den Mehrschritt-Fall.
Nicht, das heißt also, ich fange wieder an,
gehe einen Schritt zurück und so weiter,
solange wie es geht, nicht,
und da die Grippestruktur endlich ist,
muss das dann auch irgendwann mal aufhören
Ja, das heißt jetzt in unserem Fall hier,
diese Formel gilt hier in S1, wie gerade beschrieben,
dann gehe ich den Pfeil rückwärts nach S3,
weil wir da auch B haben,
dann den Fall rückwärts nach S4,
weil ich da auch B habe und den Fall rückwärts nach S5,
weil ich da auch B habe und S2 bleibt draußen vor,
weil dort A ist.
Und jetzt haben wir auch wieder die Situation am Ende des Verfahrens,
habe ich genau die Zustände berechnet,
in denen die Formel F gilt,
nämlich diejenigen,
wo die Formel eben steht
Ja, und für diejenigen, die es gerne nochmal
algorithmisch haben, würde diese Prozedur jetzt so aussehen.
Check EU F112. Ich bilde am Anfang die Menge der Zustände,
wo die Hinterreformel gilt, dann schreibe ich in aller Formel,
in alle Zustände, wo die gilt, das schon mal rein.
Und dann wähle ich einen Zustand aus diesem Tee,
neben dem Zustand heraus und betrachte einen Vorgängerzustand.
Da haben wir ja einen Pfeil von T nach
Und wenn doch, in dem Vorgängerzustand, dass F1 gilt,
dann kommt dieses E-Antel F1 F1 F2 wieder dazu.
Und ich muss dann hinterher ja das neue Tee,
das neue Klientee, auch mit berücksichtigen.
Das kommt dann zum großen Tee davor dazu. Und das
mache ich so lang, wie es überhaupt eben geht.
Also das war das Ernte, war ja auch gar nicht so schlimm.
Okay. So, dann kommen wir jetzt also zu dem,
zu der, zu dem entsprechenden jetzt für Das EG.
Da habe ich erst mal diese wilde Gripri-Struktur jetzt nur als Beispiel aufgemalt.
Und wir wollen jetzt die Prozedur für EGF überprüfen,
wo wir jetzt in manchen Zuständen schon mal ein F haben und andere nicht.
Und wo dieser fett umrandete Zustand der Anfangszustand ist. Ja,
kann jeder mal sagen, ob jetzt dieses EGF gilt oder nicht gilt?
Was meinen Sie? Ja, Sie waren schon mal öfters mal,
ich finde die hinteren Ränge übersehe ich immer gerne.
Haben wir nicht,
also sie
Ja. Ein bisschen noch mal ein ausführlicher, ja?
Ja, die Frage ist, ob dieses EGF im Anfang zustand gilt.
Das heißt ja, ob es einen Pfad gibt,
wo immer, ja, und warum geht es einen Pfad,
wo immer F gilt
Ja, nicht, also kein Hier zum Beispiel lah lang gehen und so weiter.
Oder ich kann auch hier runtergehen und so. Nun ist es so,
dass diese Pfadsuche, wie sie vorgeschlagen haben, nicht sehr effektiv ist.
Und wir können uns doch besser erstmal so vorgehen,
dass wir unsere Grippestruktur für den Fall vereinfachen,
wo wir diese Knoten streichen,
wo wir gar nicht F drin haben und arbeiten damit.
So, und wer hat eine Idee, wie man jetzt
solche Grafen untersuchen kann, wo wir unendliche Pfade suchen müssen.
Jetzt nicht, dass wir jetzt diese Vater durchprobieren,
denn sie können ja sich vorstellen mit Backdracking,
gibt das eine ziemlich große Anzahl und muss wieder zurück.
Es gibt eine Abzweigung, wo sich die auch wieder berücksichtigen und so weiter.
Was für eine Gesamtvorstellung würde helfen, wenn ich dieses Verfahren
effektiver machen will? Wir haben ja die Situation,
ein unendlicher kann in einem unendlichen Pfad in einer solchen Kripprestruktur,
können da alle Zustände verschieden sein?
Nein, natürlich nicht, weil ich nur endliche Zustände
habe,
ja bitte
Das ist ja versteckt. Ja, wir müssen Schleifen suchen.
Also ich hole mal die Tafel hier. So. Also ich
suche Schleifen. Ich fange hier mit meinem Anfangszustand an.
Gehe jetzt irgendwie und suche dann die Schleife.
Ja, kann ich aber auch an viele Stellen gehen.
Und da gibt es noch Varianten. Und das ist erstmal
der erste Schritt. Wie kann ich die ganze Geschichte denn
jetzt weiter strukturieren? Einen Überblick über alle möglichen Schleifen kriegen.
In einem solchen Graf
Sagt Ihnen, der Begriff strenger Zusammenhangskomponente etwas? Sie nicken
noch jemand anderes? Woanders? Ja, bitte? Nee
, so ein bisschen. Eine strenge Zusammenhangskomponente ist eine,
wo jeder Knoten, also das ist eine Teilmenge,
wo jeder Knoten mit jedem durch einen Pfad verbunden ist.
Das ist so eine Art Cluster. Wenn das hier jetzt
zum Beispiel die Zustände sind, Dann wäre das eine strenge Zusammenhangskomponente,
aber auch der würde dazu gehören oder der würde dazu gehören oder der würde dazu gehören.
Das heißt also, wenn ich die,
ja und zum Beispiel der hier, die würden nicht dazu gehören,
weil ich von, wenn ich einmal hier gewesen bin,
komme ich hier nicht mehr zurück,
auch wenn ich hier eine Schleife hätte,
würde ich nicht mehr in diese strenge Zusammenhangskomponente kommen.
Das heißt also, in so einer strengen Zusammenhangskomponente habe ich
jede Menge von Zyklen
Ich kann die Sache wesentlich vereinbaren, das zeigen auch die Komplexitätsergebnisse,
dass wenn ich die sogenannten strengen Zusammenhangskomponente,
manchmal sagt man auch starke Zusammenhangskomponente, bilde,
dass ich dann schon fast fertig bin.
Ich muss nur vom Anfang Zustand gucken,
ob ich überhaupt in eine solche hineinkomme.
Das heißt also, ich bilde die sogenannten strengen Zusammenhangskomponenten,
SZK. Und das könnte ja zum Beispiel so aussehen.
Also in dieser Menge kommen wir von jedem zu jedem,
mit dieser auch. Und wie ist es denn mit der
unteren? Ist das eine strenge Zusammenhangskomponente
Ist es bei dem unteren Biolettenkasten so,
dass ich von jedem Zustand zu jedem kommen kann?
Bitte? Ja, aber das kommt durch diese Streichung.
Also vorher ja, aber hinterher nein,
weil ich hier jetzt sozusagen hier blockiert bin.
Das heißt also, die strengen Zusammenhangskomponenten würden in diesem Fall
so aussehen
Also ich mache die mal wirklich erst mal weg,
damit wir ein einfaches Bild haben. Dann sieht man das natürlich
sehr viel deutlicher. Und dann würden die streng im Zusammenhangskomponenten
eben so aussehen. Ja, und jetzt sehen wir,
dass nicht alle strengen Zusammenhangskomponenten relevant sind. Denn diese hier,
die erlauben Zyklen, aber die hier unten nicht,
die würden sich ja wahrscheinlich auch gar nicht als solche bezeichnen.
Die heißen aber trotzdem so, aber zur Diskriminierung heißen sie
dann triviale, strenge Zusammenhangskomponenten.
Und die anderen nicht triviale. Und die Aussage ist die,
man suche jetzt alle nicht trivialen Strängen,
Ja, nicht? Und das ist jetzt auch schon
das Verfahren. Ich suche also, konstruiere alle Strängen,
nicht revialen, strengen Zusammenhangskomponenten und überprüfe,
ob ich vom Anfangszustand einen Pfad da rein kriege und die Komplexität ist also erstaunlich niedrig,
sollten sie sich mal angucken in einem Buch über Grafen.
Theorie, wie das funktioniert mit den Strengen Zusammenhangskomponenten
Müssen wir jetzt also nur noch nachtragen, die formale Definition.
Wir haben ja jetzt hier einen gerichteten Grafen. Das muss
ja keine Kripke-Struktur sein, sondern das gilt ja allgemein.
Und eine Teilmenge von Knoten, die heißt Zusammenhangskomponente,
falls ich für je zwei Elemente A- und A-Strich aus Großa
einem Pfad von A nach A-Strich habe,
nicht wenn man die Kanten durch eine Relation beschreibt,
dann würde sozusagen die reflexive, transitive Hülle die Pfade beschreiben.
Das heißt also, wenn wir mal so ein abstraktes Bild haben wie sowas,
dann wäre das hier Eine strenge, nee, eine Zusammenhangskomponente.
Ich, aber das ist noch nicht das, was wir
gerne wollen, sondern wir wollen ja die Maximalen haben.
Das heißt also, wir haben ja auch noch die Zirkel hier runter.
Und das haben wir jetzt unter B, zu einer Zusammenhangskomponente
heißt jetzt streng oder stark, wenn sie maximal ist.
Das heißt also, wenn das noch hinzukommt,
wenn ich ja zum Beispiel das hier,
den Knoten kann ich nicht mehr hinzunehmen, die Roten kann ich nicht noch vergrößern.
Welche und die ist also Dann maximal, ich mache nochmal zurück,
weil wir dann die Definition erklären können. Das heißt,
die wäre eben nicht maximal, wenn es noch einen Knoten gab,
wie diesen hier Git Kleinkarr, der mit allen anderen Überwege verbunden ist,
wo es für alle anderen Knoten gilt,
das ist ein Weg von dem anderen,
zu dem man hingibt oder von dem weggibt und zu dem hingibt.
Und wenn es sowas nicht gibt,
dann ist sie eben maximal
So, und Tee promissen wir jetzt erst noch mit den Trivialen oder Nicht-Trivialen.
Also die heißt jetzt nicht trivial, wenn also diese Größe,
also die Mächtigkeit größer als eins ist, dann haben wir mindestens einen Zyklus.
Oder, aber es eine, eine Kante ergibt,
wo ich wieder zurückkomme, so wie hier unten.
Also das erlaubt ja auch eine Schleife,
die will ich nicht ausschließen,
aber alle die, wo ich keine Schleife bilde,
wie der hier zum Beispiel,
das würde dann zu einer trivialen Zusammenhangskomponente
eben führen
Ja, und nicht, und damit haben wir jetzt auch das Befahren für EG.
Wir aus unserer gegebenen Gripge-Struktur konstruieren wir das gestrichene System.
Nicht, was darin besteht, dass wir von den Zuständen
nur diejenigen nehmen, in denen F1 gilt.
Das war ja die Formel, die das Argument hier ist.
Wir nehmen, wir schränken natürlich die Pfeile auch ein auf
diese Menge und wir schränken die Etikette eben ein.
Und das Ganze nennen wir jetzt die Einschränkung von M, in der F1 gilt.
Also das, was wir vorher durch wegstreichen, der Knoten gemacht haben. Ja,
und die entscheidende Aussage ist jetzt,
In der ursprünglichen Grip-Grip-Struktur, in einem Zustand S,
gilt die Formel EGF 1, genau dann,
wenn erstens der Zustand selber in der gestrichenen Menge ist,
das heißt, es gilt F1 und es gibt einen Pfad von M1,
der von S zu einer nicht-Rivialen starken Zusammenhangskomponente eben führt.
Das heißt, in Bezug auf mein Bild,
an der Tatel könnte das hier mein S sein und
das hier könnte meine strenge Zusammenhangskomponente sein,
nicht in allen denen muss dieses F1 gelten
Das musst du sagen, ein Anfangsstück geben, wo keine Schleife durchlaufen wird.
Und dann komme ich in eine strenge Zusammenhangskomponente und da brauche ich mich
nicht mehr darum zu kümmern, welche Schleife wir eben nehmen.
Nicht, was ich an der Tafel,
falls sie das nicht so gut lesen können,
haben wir hier auch nochmal grafisch dargestellt,
sozusagen in dem Zustand S gilt das F1.
Und ich komme in eine strenge Zusammenhangskomponente,
wo es verschiedene Möglichkeiten geben kann.
Und das S könnte natürlich auch schon selber in
einer strengen Zusammenhangskomponente legen
Ich meine, unser ursprüngliches Spiel war ja so,
nicht wenn das der Anfangszustand ist,
dann muss ich hier nur in so eine strenge Zusammenhangskomponente kommen.
Diese beiden, die fallen dann eben raus. Ja,
und der Algorithmus zur Entscheidung dieser Formel EGF1 zieht,
dann jetzt folgendermaßen aus. Ich konstruiere das eingeschränkte Gripkühlstruktur,
wo ich nur die Zustände habe, wo F1 gilt.
Dann konstruiere ich die strengen Zusammenhangskomponenten von M1. Und hier steht das Ergebnis,
das ist der Algorithmus von Tarian, der schafft das also
in O von Mächtigkeit von S-Strich plus Mächtigkeit von R-Strich.
Das heißt, wenn ich die Anzahl der Zustände nehme und die Anzahl der Kanten dahin zunehme,
dann ist die Zeitkomplexität sozusagen asymptotisch, gleich schließen wert,
wobei es allerdings noch eine Konstante geben kann,
das ist ja diese EU-Notation.
Welche und das ist natürlich besser als vielleicht exponentiell,
was man vielleicht hätte befürchten können
Ja, dann finde ich, die Zustände in nicht trivialen,
strengen Zusammenhangskomponente und suche von diesen dann rückwärts wieder alle Zustände,
die dorthin hinführen.
Und der Punkt zwei, der dominiert die ganze Geschichte,
sodass sie gesamtkomplexität, also O von S plus RS.
Ja, und jetzt, Ganze jetzt wieder als Prozedur ausgedrückt
, würde dann so aussehen.
Check, EGF1, sieht so aus.
Ich bilde erstmal die Untermenge der Zustände,
wo F1 gilt
Dann bilde ich die strengen Zusammenhangskomponenten, das bezieht sich jetzt
hier auf die englische Bezeichnung, SCC heißt Strongly, connected, components.
Das sind also die Mengen der Teilmengen, wo C eine nicht triviale,
strenge Zusammenhangskomponente ist. Ich binde die Vereinigung aller dieser,
nenne das T und von diesen in allen diesen S,
schreibe ich meine Formel schon mal rein, innerhalb der Streckenzusammenhangskomponenten gilt das natürlich.
So, dann muss ich jetzt noch diese Rückwärtsbewegung auf dieser Pfade hier außerhalb machen.
Das ist so ähnlich wie bei dem Antel. Ich nehme mir also irgendwelche Zustände,
die eine Kante nach S haben,
was schon in dem Tee liegt, nehme das S dann raus,
damit ich es nicht mehrfach mache und prüfe nach,
ob vorher auch schon F1 Nee, wollen wir jetzt sagen,
noch nicht EGF1 drin steht, dann tue ich es rein.
F1 muss ja schon drinstehen, weil ich die anderen ja vorher schon rausgeschmissen habe.
Okay. Ja, die Komplexität habe ich jetzt eigentlich schon behandelt, behandelt.
Das steht jetzt hier eigentlich jetzt nochmal, ach so,
das war jetzt ja die Komplexität von, nur von dem,
von dem einzelnen Operator, was also jetzt noch bleibt,
das wäre ja die Komplexität von dem gesamten Model Checking.
Das heißt,
ich muss dann natürlich alle Fälle betrachten und mein Fehler,
dass ich dachte, ich sei schon fertig,
liege da dran,
weil das natürlich hier der komplizierteste Fall war,
der dominiert alles ja bitte
Ja, ja, ja, ja, ja, ja,
ja, ja, ja, ja, ja, ja,
ja, ja, ja, ja, ja, ja.
Ja, wenn ich die Knoten rausgestrichen habe,
habe ich ja nur noch diejenigen,
da wo F1 gilt und die, die rausgestrichen haben,
die sind ja nicht mehr, die kann natürlich bedeuten,
dass gar keiner übrig bleiben, ne?
Wollen wir hinterher nochmal drüber sprechen, ne?
So, also jetzt nochmal
die Gesamtkomplexität
Ja, und das war ja der Gesamtalgorithmus, wo wir
also jetzt einmal einerseits die Unterprozeduren hatten mit dem EU.
Und wir hatten die Unterprozedur mit dem EG irgendwie beschrieben.
Und der Gesamtalgorithmus wird jetzt allerdings die Komplexität dominiert durch diese Geschichte mit den strengen Zusammenhangskomponenten.
Das heißt, der Satz ist, es gibt einen Algorithmus,
der für eine Krippestruktur und eine CDL-Formel in der Ordnung
F mal S-Plus R-Zeit-Komplexität entscheidet, ob ein F für M gilt,
ob das also so der Fall ist. Also das hier,
das erkennen wir ja, das kommt von den strengen Zusammenhangskomponenten.
Aber es kann ja durchaus sein, dass wir den Algorithmus mehrfach anwenden müssen.
Wer kann denn sagen, warum da nicht irgendwie was anderes steht,
also sondern nur das einmal? Ja,
das liegt natürlich an der U-Notation,
weil sich da ja noch ein konstanter Faktor drin verbirgt und
das kann ja nur endlich oft noch geschehen,
weil wir ja eine Formel haben,
die eine endliche Tiefe eben hat oder endliche Größe
Ja, und das beantwortet jetzt auch schon,
woher dieser Therm kommt, weil ja ich diese ganzen Prozeduren,
die ich gerade gezeigt habe, höchstens zu oft anwenden muss,
wie ich Zeichen in meiner Formel habe, noch im Normalform,
ein Stück weniger, aber als obere Abschätzung genügt das.
Ja, das steht jetzt hier auch und kann ich noch mal vorlesen,
wenn man den Algorithmus auf die Grippestruktur an,
dann wird für jede Teilformel von F eine Superprozedur gestartet,
die Anzahl der Teilformeln ist durch Ofernbetrag von F begrenzt,
für jeden Teil vorne benötigt,
die jeweilige Superprozedur maximal so und so viele Operationen,
wie wir,
weil nämlich das Suchverfahren für das Antel Nur jeden Knoten einmal und für die strengen Zusammenhangskomponenten,
mit diesen Algorithmus von Tarjan, das entsprechend so abzuschätzen ist.
Gut, das werden wir jetzt also für den Mikrowellenofen mal anwenden,
damit wir das auch immer ganz konkret eben sehen.
Also, und zwar stellen wir jetzt zunächst mal,
nehmen wir diese Formel, versuchen wir die erst mal zu verstehen.
Das ist sozusagen ein AG, das können wir immer einfach verstehen.
Das heißt, es gilt immer in allen, in allen Zuständen.
Und die Formel sagt, wenn Start gilt, Dann gilt für alle Pfade,
dass wir irgendwann mal nach Heat kommen. Ja,
da hatten wir ja schon früher schon mal gesehen,
dass das nicht gilt,
weil wir ja hier in diesen Teil hier kommen können,
wo wir hier diesen Fehler gemacht haben und den Ofen gestartet haben,
bevor wir die Tür geöffnet haben.
Und dann gibt es ja diesen Pfad,
der hier immer weiter durchgeht und dann würde eben vor diesem Pfad eben nicht gelten,
dass wir mal zu Heat kommen,
weil wir Heat hier nur auf der rechten Seite haben.
So, die erste Frage wäre jetzt,
können wir jetzt auf diese Formel jetzt
unseren Algorithmus schon anwenden
Ja, bitte. Genau,
wir müssen erst die Normalform herstellen mit den drei Operatoren.
Nicht, das war für unsere Beweise natürlich angenehm,
aber jetzt ist es lästig, weil wir erst diese Transformation durchführen müssen.
Und wie machen wir das? Ja, das machen wir
folgendermaßen. Ja, das sind jetzt hier schon,
glaube ich, mehrere Schritte. Und zwar Dieses AGF 1,
ja, das können wir ja zunächst mal so umformen,
dass wir vor das F1 zweimal das Negationszeichen schreiben.
Und dann ziehen wir das Fördere, Negationszeichen raus.
Und dadurch wird aus dem AG ein EF, ne?
So, dann hätten wir hier nur nochmal zu ersetzen,
das F1 sollte jetzt also das Rote hier sein,
was diese Implikation ist.
Diese Implikation können wir ja umformen durch eine Disjunktion in
Nicht-Start- oder AFHE.
Das haben wir auch schon gemacht
So, dann können wir nach dem Morgan hier dieses Nicht-Zeichen reinziehen.
Und wir bekommen da, also dieses hier reinziehen,
aus dem Nicht-Start wird Start, aus dem Oder wird ein Und.
Und hier kommt das Nicht-Zeichen davor. Und jetzt sehen wir
auch noch das Nicht-Zeichen hier rein. Das heißt,
aus dem A wird ein Ehen, aus dem Erfürchten NG. Das heißt,
wir haben jetzt eine Formel, die äquivalent ist zu unserer ursprünglichen Formel,
das heißt, eigentlich müssen hier jetzt die dreifachen Striche stehen.
Und es kommt nur drin vor, EF,
EG und EG und die Aussagen logischen,
wobei wir für EF es nur eine Kurzschreibweise für das Antel,
also für EU, das ist ja irgendwie ein bisschen lästig,
EF immer so zu schreiben, das können wir nur so sagen,
zur Vereinfachung eben nachher.
Ja, das hätten wir dann also. Das heißt,
wir arbeiten jetzt wie dieser Formel, die also ein Äquivalent ist.
So, und was ist jetzt der nächste Schritt,
den wir jetzt machen müssen?
Wenn Sie an das Verfahren denken, was wir gerade behandelt
haben.
Ja, bitte
Ja, nee, wir müssen,
ich wiederhole noch mal die Beschriftung mit den Teilformeln machen.
Und da fangen wir natürlich an mit den Atomen, mit dem Start und dem Heat.
Also zunächst mal in meinem Beispiel hier mit dem Heat.
Das heißt, wir gucken mal an, die Zustände,
wo das, also Notiz sogar, wo das Notheat steht.
Also wir könnten mit dem Heat anfangen. Und dann würden wir
das umändern in Notheat. Und da haben wir dir Bezeichnung,
S for Notheat, das ist die Menge der Zustände,
in denen Notheat eben gilt,
was wir auf diese Art und Weise bekommen würden.
Nicht wir würden also kommen, würden anfangen mit S von Heat,
das wären die beide. Und dann S for Notheat,
das wären hier diese Roten, nicht wobei wir jetzt neuerdings
das S von umgewandelt haben in satt von Notheat.
Das heißt also, statt Ess von Alpha,
schreiben wir jetzt immer satt, nicht von Satisfize,
Alpha, weil das ist die Bezeichnung,
wie sie in dem Buch von Clark drin vorkommt.
Und das ist eine Bezeichnung, wie so neuerdings in Büchern
benutzt wird und wie sie eigentlich auch sozusagen intuitiver ist,
weil es kommt ja häufiger in verschiedenem Kontext vor.
Und in der Aufgabe benutzen wir da
dieses Zeit
Ja, ich glaube, das genügt für das erste Mal.
An der Stelle mache ich dann am Freitag weiter.
Und wenn Sie Lust haben, können Sie sich schon
mal selber nachgucken, wie das Verfahren jetzt weitergeht.
Es ist immer besser, man macht das selber mal.
Und dann sehen wir am Freitag, sagte ich, Donnerstag.
Okay, dann alles Gute,
bis Donnerstag