Ja, schönen guten Morgen. Wir hatten ja in der
letzten Stunde mit dem Thema Bushy-Automaten begonnen. Was bedeutet,
dass wir die endlichen Akzeptierenden Automaten erweitern, auf solche,
die unendliche folgen, sogenannte Omega-Folgen akzeptieren können?
Dazu hatten wir die verschiedenen Dinge,
die wir bei den Automaten bisher kennengelernt hatten,
entsprechend erweitert
Das heißt, von endlichen Folgen auf unendliche Folgen,
wir hatten die entsprechende Akzeptierungsweise diskutiert und überlegt,
wie man ein unendliches,
langes Wort akzeptiert,
im Gegensatz zu einem endlichen Wort und waren dann zur folgenden Definition gekommen,
dass wir das Prädikat in Freiheit einer Zustandsfolge benutzt haben,
um eben die in einer unendlich langen Folge vorkommenden Zeichen
zu kennzeichnen und das beziehen wir dann eben auf die Zustandsfolgen
Das heißt, ein solches unendliches Wort wird akzeptiert,
wenn die Zugehörige unendliche Zustandsfolge der Gestalt ist,
dass unendlich viele Endzustände darin vorkommen.
Nicht formalm hieß das dann eben, dass wir in der Definition schreiben,
dass eben diese Menge in Feinheit der Folge von den unendlichen Zustandsfolgen
einen nicht leeren Durchschnitt mit der Menge der Endzustände hat.
Und dann, wenn das der Fall ist,
ist das entsprechende unendliche Wort
dann akzeptiert
Ja, dann die Familie, der von Büchi-Automaten akzeptierten Omega-Sprachen heißen,
dann auch Omega-reguläre Sprachen. Wir hatten ein Beispiel kennengelernt und
überlegt, wie wir dann zu dieser Darstellung kommen.
Nicht wichtig war hier, dass wir hier Z3 und Z2 als Endzustände haben.
Dann gab es auch wieder die terministische Automaten und wir hatten gesehen,
dass im Gegensatz zu dem Fall vorher die beiden Modelle,
also deterministisch und nicht deterministisch, nicht äquivalent sind.
Und das Standardbeispiel war dieses,
was also ein wo die Sprachen, also akzeptiert wird,
also die Sprache L, hier in dem gelben Kasten,
von einem nichtdeterministischen Automaten und dem folgenden Beweis wurde argumentiert,
dass dies mit einem deterministischen nicht funktionieren kann.
Nicht in der Beweis lief so, dass wir dort eben eine Folge,
eine Omega-Folge konstruiert haben und immer über die Annahme der Endzustände dazu kamen,
dass es so eine solche Schleife existieren muss,
die dann dazu führte, dass eben auch ein Wort,
das nicht zur Sprache L gehört,
dann eben akzeptiert werden müsste,
was zum Widerspruch zur Annahme führt und damit
der Beweis beendet wird
Wenn ich das hier ist, nun die Zusammenfassung dieser Aussagen.
Und danach haben wir dann auch nochmal diese Omega-Sprachen und den Omega-Operator für die Omega-Sprachen definiert.
Das war also, was wir hier unten haben,
wie hoch Omega, ist die Menge der unendlichen Folgen,
die also als Teilwörter, Wörter aus der Menge Großweh haben,
wobei das leere Wort eben ausgeschlossen wird.
Nicht die andere Operation ist die Vereinigung,
die eben die Mengenvereinigung ist und das Komplexprodukt,
was sich dann hier zusammensetzt aus einer Menge Weh von
endlichen Wörtern und einer Menge U von unendlichen Wörtern,
die dann in der entsprechenden Weise,
wie hier oben dargestellt,
aneinander gekettet werden kann
Ja, bezüglich dieser Operationen kann man auch wieder Abschlusseigenschaften betrachten,
die jetzt im Fall von Omegasprachen eben auch alle gegeben sind.
Also das heißt, für die Vereinigung,
den Omega-Abschluss und eben auch das Komplexprodukt. Ja,
das Gelde gilt auch für die Komplementierung, die aber aufwendiger ist,
sowohl im Beweis als auch in der Berechnungskomplexität. Ja,
dann sind wir zur formalen Definition der Omega-Regulären Ausdrücke gekommen und hatten gesehen,
dass eben diese Form schon genügt, um alle omega-regulären Ausdrücke zu beschreiben.
Das heißt, alles, was ich mit Büchieautomaten akzeptieren kann,
kann ich in dieser Form eben beschreiben. Das heißt,
ich brauche keine größere Schachtelungstiefe für den Omega-Operator als die Tiefe 1. Ja,
und die entsprechenden Mengen würden dann analog so aus eben eine Vereinigung von Komplexprodukten,
wobei der zweite Faktor, den Omega-Operator trägt.
Das hatten wir wieder am folgenden Beispiel betrachtet,
wo wir oben diese Omega-regulären Ausdruck geh haben
Wobei wir aus dieser Vereinigung jetzt nur einen Term haben.
Und die einzelnen Teile davon waren dann hier durch die entsprechenden Pfade gekennzeichnet.
Ja, und nun dann auch wieder der Satz dazu,
nicht, dass die Omega-regulären Sprachen,
die also von den Bücherautomaten akzeptiert werden,
genau übereinstimmen mit den jetzt gerade definierten Omega-regulären Ausdrücken.
Ja, wichtig war dann uns auch die direkte Konstruktion des Produktautomaten.
Und wir hatten gesehen, dass eben die einfache Konstruktion,
die wir vorher kennengelernt hatten,
nur in der Einrichtung funktioniert
Und auch einen Beweis überlegt und dann an dem Gegenbeispiel gesehen,
dass eben die andere Richtung so nicht funktionieren kann.
Zumindest war das ein motivierendes Beispiel, natürlich noch kein endgültiges.
Und wir hatten dann diese Methode der Flex kennengelernt,
dass wir eben immer einen Flex setzen,
wenn einer der beiden Automaten einen Endzustand durchläuft.
Und die neue Akzeptierungsmethode bestand eben da drin,
dass eben beide Flex unendlich oft gesetzt sein müssen,
was wir nach der Konstruktion auf einen Fleck reduzieren konnten
Nicht die entsprechende Definition war dann zunächst grafisch so dargestellt,
dass wir hier das Flag 1 haben, 2,
1 und so weiter,
immer wechseln und dass wir dann eben genau dann akzeptieren,
wenn wir eben unendlich oft eine 1 haben,
weil dann vorher eine 2 auch in einen endlich oft gewesen sein muss.
Nicht nur diese Flags führen zu einer dritten Komponente,
neben den beiden Komponenten für die Automaten aus dem Produkt,
haben wir noch die dritte Komponente mit 1 unter 2,
die dann entsprechend gesetzt wird,
entsprechend der folgenden Regel
So, und da haben wir auch die neue Definition für die Endzustandsmenge. Ja,
dann hatten wir noch den verallgemeinerten Büchi-Automaten, der nur darin besteht,
dass wir statt einer Endzustandsmenge eine endliche Menge haben und
die Definition des Akzeptierens wird auch hingehend erweitert,
dass jeder dieser Mengen unendlich oft besucht werden muss.
Nicht was dazu führt, dass wir Vereinigungen von solchen Sprachen,
von solchen Omega-Sprachen einfacher darstellen können
Und der Beweis war in der Idee ähnlich,
wie das bei den Produktautomaten war, mit den entsprechenden Flex.
So, dann haben wir Entscheidungsfragen. Nur zitiert,
nicht das Lehrheitsproblem, das Universitätsproblem, das Äquivalenzproblem,
die sind auch alle entscheidbar bei den Büchi-Automaten,
was dann für unser Model-Shaking wichtig sein wird.
Ja, alles nochmal zusammengefasst in dieser Forie, führte dann
zum nächsten Thema der Transaktionssysteme. Das waren also Systeme,
die also ähnlich wie die endlichen Automaten definiert sind,
wobei man die Endlichkeit der Zustandsmenge aufgibt,
um eben allgemeinere Konstrukte beschreiben zu können,
wie zum Beispiel den Konfigurationskraft einer Thuring-Maschine und andere,
die hier genannt sind.
Ja, wir haben dann wieder an dem Beispiel des Getränkenautomaten
aufgesetzt und an dem Vergleich des NFAs mit dem neuen Konstrukt des Transitionssystems gesehen,
das dachte dieselben Gebilde, dieselben Komponenten vorkommen,
aber in anderer Bezeichnung.
Und an dem Beispielen waren das dann jetzt konkret
diese Mengen hier
Nicht zu, Traditionssysteme werden uns in der Zukunft jetzt nur noch begleiten,
nicht mehr endliche Automaten, die Transitionssysteme allerdings in unterschiedlichen Formen.
Ja, dann hatten wir die verschiedenen Mengen betrachtet,
die jetzt nun doch von Wichtigkeit sind,
dass sie zunächst mal einmal die Menge der möglichen Zustände,
die sogenannte Erreichbarkeitsmenge, also die Menge der Zustände hier,
die von einer Stachzustand oder einer Ausgangszustandsmenge S1 erreichen kann.
Nicht das S1 muss hier nicht die Menge der Stachzustände sein,
weil man manchmal in einem Beweis auch sagt,
ja,
wir gehen jetzt von einer anderen Menge aus
Wenn das aber die Stachzustandsmenge ist, dann können wir das einfacher schreiben,
indem wir hier die zweite Komponente eben weglassen,
dann ist das per Default die Stachzustandsmenge.
Hatten wir auch wieder ein Beispiel betrachtet? Ja,
das zweite waren jetzt die Aktionsfolgen,
wo wir jetzt zwei Sorten haben,
die generellen Aktionsfolgen und die finalen Aktionssequenzen,
die also jetzt zu einem akzeptierten Zustand
eben führen
Die Begriffsbildung ist wieder ähnlich. Nur, dass wir jetzt gewissermaßen die Aktionsfolgen sammeln,
wo wir vorher die Zustände, die durch laufenden Zustände gesammelt haben.
Und bei den finalen Aktionssequenzen nehmen wir wieder den Endzustand
und nennen das auch akzeptierte Sprache. Gut,
dann sind wir zu dem Begriff der Äquivalenzfundensystemen gekommen,
wo wir zunächst die klassische Äquivalenz von Automaten,
also hier in Form von Transitionssystemen haben,
was also jetzt hier die gemeinsamen Folgen sind,
wo wir keine speziellen Endzustände betrachten bzw. alle Zustände
als Endzustände
Ja, dann hatten wir diskutiert,
ob man vielleicht einen anderen Begriff von Verhaltensgleichheit annehmen kann und waren dann zu dem Begriff der B-Simulationen gekommen,
der dann folgende Situationen unterscheidet,
wenn hier in dem einen Automaten oder im Transitionssystemen verschiedene Möglichkeiten existieren und einige dieser Möglichkeiten aber in dem anderen nicht,
dann sollte dies unterschieden werden,
was zum Beispiel dazu führt,
dass wir ein anderes Deadlock-Verhalten haben,
wenn nämlich dann zum Beispiel der Folgezustand eben ausfällt durch eine Verklemmung,
dann hätten wir auch eben ein sehr unterschiedliches Verhalten,
dass das rechte System in eine Verklemmung geraten kann und das Linke,
in diesem Falle dann noch
eine Möglichkeit des weiteren Verhaltens eben hat
Okay, das hörte dann zu dem Begriff der Bi-Simulation,
den wir dann am besten an dieser grafischen Darstellung erklären,
die jetzt gleich kommt. Nicht Bi-Simulation heißt,
wenn in dem einen Transaktionssystem von einem Zustand S1
eine Aktion A möglich ist und dieser Zustand in der Bi-Simulationsrelation
zu einem anderen Zustand R1 besteht,
dann muss in R1 auch diese Aktion
möglich sein und das Ergebnis muss wieder in der Bi-Simulationsrelation stehen
Das heißt, diese B-Simulationsrelation ist eine binäre Relation zwischen den
Zustandsmengen der beiden Transitionssystemen, wie hier nochmal grafisch unterstrichen.
Ja, und die Simulation hieß das Ganze,
weil das in beiden Richtungen gilt,
wobei man die zweite Richtung,
die ich nochmal extra vorlesen muss,
weil das
sozusagen sinngemäß ist
Ja, und hier hatten wir zwei Beispiele für zwei B-Similare Transitionssysteme
und auch ein Entscheidungsverfahren angedeutet. Man beginnt mit den Endzustandsmengen,
die ja per Definition B-Similar sein sollen und überlegt dann,
ob für die jeweiligen Übergänge dann in dem anderen Paar
ein Übergang existiert und kommt dann zu weiteren Paaren,
die dann existieren müssen.
Und wenn man auf diese Art und Weise
alle Möglichkeiten durchprobiert hat und zu keinem Widerspruch kommt,
dann wäre man,
dann sind die beiden Bisemila
Ja, das wäre hier nochmal die formale Definition und nochmal mit dem Zeichen,
was wir benutzen und der Satz sagt eben aus,
dass eben die Folgenäquivalenz eben schwächer ist, als die B-Simulation.
Das heißt also, wenn es zwei Transaktionssysteme B-Simular sind,
dann sind sie auch Folgenäquivalent und nicht umgekehrt,
wie wir an dem Beispiel ja schon gesehen haben.
Ja, und das hier sind zwei B-Simularen,
Transitionssysteme und zu dem Beweis hatten wir dann nochmal auf die
vollständige Induktion zurückgegriffen,
jetzt hier in der Form über die Wortlänge
Wenn ich in Analogie zu der vollständigen Induktion über natürliche Zahlen,
hatten wir das Entsprechende dann über Wörter, über einem Alphabet betrachtet.
Dort haben wir ja in beiden Fällen Induktionsanfang, Induktionsvoraussetzung und Induktionsbehauptung.
Und wenn wir eine solche Eigenschaft Alpha von N für Beliebige Argumente beweisen wollen,
dann beweisen wir zunächst die Induktionsanfang mit Alpha von Null und beweisen das aus Alpha von N,
Alpha von N plus 1 erfolgt,
was dann im anderen Fall dann bedeutet,
dass wir entsprechend das Dem einzigen Nachfolger jetzt mehrere Nachfolger,
in dem dann zu betrachtenden Baum aller Wörter über A entsteht.
Nicht nur der Induktionsanfang ist dann entsprechend für das leere Wort und die Induktionsbehauptung besteht dann darin,
dass ich unter der Voraussetzung,
dass die Behauptung für ein Wort Weg gilt,
dann auch gilt,
wenn ich ein beliebiges Zeichen aus dem Alphabet anhänge und
dann greift also das Induktionsverfahren auch wieder,
indem das sich so über den ganzen Baum
eben fortsetzt
Ja, und nicht,
und das hatten wir dann umgesetzt für den Beweis,
der dann relativ einfach ist und eigentlich nur mehr eine Konzentration auf das Prinzip ist.
Man muss nur argumentieren, wenn es hier oben weitergeht,
geht es hier unten entsprechend auch weiter. Ja,
das, was dann fast schon vom letzten Mal,
wir hatten dann hier nur nochmal das Gegenbeispiel zitiert,
das zeigt,
dass die Umkehrung hier oben nicht gilt
Gut, dann kommt jetzt der neue Stoff. Vorher wollte ich
noch mal darauf hinweisen, dass ich am Wochenende bemerkt habe,
dass es einen Deal ist in diesem Jahr, wie der ergibt.
Nicht im vorigen Jahr konnte die Veranstaltung stattfinden und auf der Webseite,
ich habe also keine offizielle Mitteilung bekommen, auf der Webseite steht drin,
dass der Deals am 4. November ganz tägig ist und alle Veranstaltungen ausfallen.
Und bei unserer engen Planung der Vorlesung und Abstimmung mit dem
OLAT und den Übungen habe ich dann das Ganze etwas darauf abgestimmt,
umgruppiert und das müsste dann so aussehen,
Das heißt also, vorausgesetzt, diese Webseite, stimmt,
dann würden wir jetzt in Zukunft dann so verfahren.
Das heißt, das letzte Mal haben wir jetzt hier Bücherautomaten und Busy-Milliarität
von Tranditionssystemen abgeschlossen und nun geht es weiter mit Synchronisation von Tranditionssystemen und Gripre-Strukturen heute.
Gut, das beginnt jetzt mit dem Abschnitt Synchrone-Produkte. Das bedeutet,
wir nehmen wieder Transitionssysteme und übertragen das Prinzip des Produktautomaten auf Transitionssysteme,
aber in der Form, dass hier nicht alle Aktionen synchronisieren,
sondern nur einige,
wie das der realen Anwendung ja auch entspricht
Machen wir dazu ein Beispiel. Hier hätten wir also zwei
Transitionssysteme und die sollen also synchronisiert werden. Ich weiß nicht,
ob bei Ihnen im Studium schon mal vorgekommen ist,
was für verschiedene Möglichkeiten der Synchronisation gibt.
Man kann zum Beispiel Nachrichten schicken,
man kann irgendwie sich konkret an einen Punkt treffen,
wie beiden Transitionssystemen und Nachrichten austauschen und für vieles mehr.
Und ich habe mal versucht, diese verschiedenen Möglichkeiten jetzt in
drei Fälle zu gruppieren.
Das wäre zunächst mal die sogenannte Round-de-Woof-Synchronisation oder Englisch
auch Hand-Trakes,
Und das bedeutet, dass die beiden Systeme sich an einem
vorgegebenen Punkt treffen müssen und Gegebenheit angehalten werden,
bis der Partner eben auch soweit ist und eine Synchronisation gegebenenfalls mit Datenaustausch eben stattfinden kann.
Nicht eine andere Form wäre die sogenannte Speichersynchronisation, die besteht darin,
dass zum Beispiel einer der Prozesse irgendeine Variable setzt,
zum Beispiel ein einfaches Bit,
0 oder 1 oder was Komplexeres und der andere Prozess dann irgendwann mal dieses Datum abgreift, lest
Und dann entsprechend der Ersetzung, also zum Beispiel 0 oder 1,
sich anders verhält. Das ist ja auch eine Form der Synchronisation.
Und die dritte Gruppe wäre dann die sogenannte Nachrichtensynchronisation,
wo das eine Transitionssystem eben eine Nachricht absendet, wie zum Beispiel eine E-Mail,
und irgendwann später das andere System dann diese Nachricht erhält.
Nicht, Sie können sich das auch sehr anschaulich vorstellen,
nicht, dass die Round-de-Wus-Synchronisation auch dem entspricht,
wenn sich Beispiel zwei Personen zu einem Date treffen.
Da müssen natürlich beide am selben Ort zur selben Zeit
anwesend sein und können irgendwelche Nachrichten austauschen.
Speichersynchronisation würde dann zum Beispiel dementsprechend, was man einem schwarzen Kasten entspricht,
was für irgendwelche Geheimdiensteagenten vielleicht benutzen, nicht,
dass aus einem Ort irgendeine Nachricht abgelesen wird.
Und der Partner kann dann irgendwann mal später hingehen und nachschauen
und diese Nachricht dann abholen. Nicht, das bedeutet,
bei Speichersynchronisation müssen die beiden Prozesse nicht gleichzeitig zur selben Zeit
und zum selben,
auch am selben Ort
eben sein
Ja, nicht. Und bei der Nachrichtensynchronisation würde dann eben täglichen Leben,
eben der E-Mail oder der normalen Post entsprechen,
dass eben die Nachricht abgeschickt wird.
Nicht. Und während man bei der Speichersynchronisation kann es ja durchaus sein,
dass derjenige, der die Nachricht ablebt, sagt, oh,
da habe ich mich vertan und hole die vorher wieder raus,
bevor der andere die gelesen hat.
Das ist typischerweise bei der Nachrichtensynchronisation nicht der Fall.
So, dann kann man sich überlegen, was ist denn
das Allgemeinste? Was kann man denn so sagen durch andere
Formen darstellen
Da kann es natürlich verschiedene Meinungen geben. Und ich habe
mal folgende Form jetzt dargestellt. Nicht die Speichersynchronisation,
kann ich ja zum Beispiel dadurch darstellen,
dass ich ein weiteres Transitionssystem zwischenschalte, dass eben dieses Datum verwaltet.
Nicht verwalten heißt, dass es also selber aktiv ist und
sich also für einen Speicherzugriff abwechselnd mit den Transitionen TS1
synchronisiert und abwechselnd mit dem Transitionssystem
Nicht, das ist also auch eine gängige Methode in der Programmierung,
wenn man nur Nachricht, Rondo Wust-Synchronisation hat,
dass man dann Speichersynchronisation in dieser Form dann eben simulieren kann.
Das bedeutet dann nur, dass das Datum dann ein aktiver Prozess wird.
Im Gegensatz zu dem passiven Prozess einer Variablen beispielsweise. Ja,
und nicht, und wenn Sie das gesehen haben,
ist es klar, wie das Entsprechende für die Nachrichtensynchronisation eben aussieht.
Das würde bedeuten, dass eben der Zugriff auf das Mittlere Transitionssystem eingeschränkt ist,
dass nämlich der Linke nur schreiben darf und der Rechte nur lesen.
Das entspricht der Tatsache, dass man bei einer Nachricht üblicherweise
die Nachricht nicht mehr zurückholen kann und verändern oder neu
schicken kann
Gut, nicht? Und aus diesem Grunde ist es wohl auch üblich,
dass wir jetzt hier als Grundform die Randovous-Synchronisation betrachten,
weil die anderen Formen eben entsprechend dargestellt werden können.
Ja, wir wollen jetzt mal eine solche Darstellung der Nachrichtensynchronisation konkreter betrachten.
Da haben wir hier also einen Sender, einen Empfänger,
und das mittlere Transitionssystem, das nennen wir Kanal,
der Sender möge ein einfaches Verhalten haben,
das möge ein Datum B,
ein Datum A1 von einem Benutzer übernehmen können.
Und das Datum Ich glaube, da ist ein Fehler,
was ich jetzt erst sehe, gucken wir erst mal weiter.
Ja, nicht? Also diese rote Markierung, die soll ja suggerieren,
dass ich jetzt dieses A1 mit dem A2 hier synchronisiere.
Und das heißt ja, dass ich am Anfang dieses Synchronisation durchführe,
gedacht war eigentlich, dass ich am Anfang erst ein Datum
von einem Benutzer übernehme.
Das heißt, der Anfangszustand müsste dann
hier unten sein
Das würde dann bedeuten, dass ich zunächst mal ein Datum übernehme,
dann eine Synchronisation mit dem Kanal eingehe. Und umgekehrt,
hier sehen Sie, hier ist es richtig,
der Empfänger, wenn der hier in einem Zustand ist,
wo eine solche blaue Blaubeschrift der Transition stattfinden kann,
dass der dann das entsprechende Datum dann übernimmt.
Nicht dieser Kanal hat also, wie man auch sagt,
die Füllung, die Kapazität 2,
weil es eben die verschiedenen Zustände gibt,
dass der Kanal leer ist, die Füllung 1 bedeutet,
das heißt,
eine Nachricht ist unterwegs oder die Füllung 2,
das bedeutet
zwei Nachrichten sind unterwegs
Und die Synchronisation, die wir eben hier vornehmen wollen,
ist, dass wir hier A1 und A2 miteinander synchronisieren und C1 und C2.
Das heißt also, diese Paare werden gemeinsam ausgeführt,
ähnlich wie wir das bei dem Produktautomaten mit allen Paaren gemacht haben.
Nicht und manchmal ist es praktisch,
solchen Paaren dann auch einen gemeinsamen neuen Bezeichner zu geben und
das sei hier einfach für A1 und A2,
soll die neue gemeinsame Aktion A heißen und die gemeinsame
neue Aktion C1 mit C2 soll dann eben C heißen
Ja, wenn wir uns das mal in der Animation anschauen,
würde das eben so aussehen,
dass wir eben am Anfang hier diese Synchronisation durchführen, nicht?
Also das mit dem B ist da also auch entfallen.
Und dann könnte eben das neue Datum bei dem Sender,
von dem Benutzer übernommen werden. Und dann könnte er das
zweite Datum senden und der Kanal hätte dann jetzt die Füllung
2 erreicht, das heißt also zwei Nachrichten wären unterwegs.
Und jetzt könnte beispielsweise der Empfänger ein solches Datum abgreifen und
die Transition mit C2 euch halten
Hätte das auch schon einen Schritt vorher machen können.
Und das würde dann eben so entsprechend aussehen,
dann würde er das an den Nutzer, auf der Empfängerseite abgeben.
Und danach könnte er also auch die zweite Nachricht übernehmen und die auch dann wieder abgeben,
während der Sender schon wieder eine neue Nachricht übernommen hat.
Ich gehe nochmal einen Schritt zurück.
Wir sehen also das Wichtige an diesem Beispiel ist,
dass wir bei einigen Paaren eine Synchronisation fordern und bei anderen
Und bei den, bei den Aktionen,
wo wir eine Synchronisation fordern, die dürfen nur dann stattfinden,
wenn der Partner dieses auch tut.
Während die anderen nur alleine eben stattfinden dürfen. Ja,
das führt jetzt zu folgender folgender Definition. Wir haben hier
also zwei Transitionssysteme, die in Rondo-Wood-Synchronisation synchronisiert werden sollen.
Und wir haben hier diese Synchronisationsrelation zwischen den Aktionenmengen der beiden Transitionsmengen,
die also diejenigen auszeichnen,
die die Synchronisation eben ausführen sollen
Ansonsten sieht dieses Produkt, Transitionssystem nicht,
was also hier mit diesem Zeichen und dem Index Sync dargestellt wird,
um diese Synchronisationsrelation darzustellen, ähnlich aus wie der Produktautomat.
Das heißt, die Zustandsmenge ist das Mengenprodukt,
die Aktionsmenge sind eben die Alten,
möglicherweise hier die Neuen,
die durch Umbenennung hervorgetreten sind,
die Anfangszustände sind alle Paare von Anfangszuständen und die Endzustände
sind alle Paare von Endzustände und was wir jetzt noch genau
bei uns anschauen müssen,
ist die neue Transitionsrelation
Also noch mal, wir haben hier als kathesisches Produkt die Anfangszustände,
die Zustände des Transaktionssystems. Wir haben als neues Alphabet
die Vereinigung der ursprünglichen Alphabete mit möglicherweise der neuen Zeichen.
So, und die Sync ist also wie vorher dargestellt, eben die Synchronisationsrelation.
Und für die Umbenennen benutzen wir also ein solches,
eine solche Abbildung, Gamma, die jetzt diese Menge Sync,
also die Menge der Paare jetzt hier auf neue Bezeichner eben abbildet.
Das wäre jetzt ein neues Alphabet,
was eben die neuen Bezeichnungen eben darstellt
Nicht und manchmal machen wir das nicht, dann lassen wir das Sync einfach eben weg.
Das heißt, die Kommunikationsabbildung Gamma ist optional. So,
bleibt also immer noch die Definition von der Transitionsrelation, jetzt müssen wir noch nachtragen.
Und das macht man manchmal gerne anders, als die,
die das von den Automaten vorher gesehen haben, nämlich durch sogenannte Regeln.
Indem man sagt, ja, eine Regel hat immer den Aufbau,
dass über einem Strich eine Prämisse steht und die Conclusio dann unter dem Strich steht.
Und bei der Kommunikation ist ja die Prämisse, die,
dass ich erstens ein Paar habe,
was in der Synchronisationsrelation steht und dass ich zwei Übergänge habe,
deren Transitionsnamen oder Bezeichnungen gerade das Paar aus der Synchronisationsrelation eben sind.
Ja, und die Conclusio ist,
der entsprechende Übergang jetzt in dem Produkt, Transitionssystem,
dass dann ein Übergang zwischen den Paaren ist und als neuer bezeichnet des Übergangs
kann dann entweder das Paar sein oder der um benannte neue Bezeichnung.
Nicht, wenn ich das grafisch darstelle, würde das so aussehen,
die Prämisse sind also diese beiden Übergänge, nicht,
wobei A1 und A2 in der Synchronisationsrelation sind das Ergebnis ist dann dieser neue Übergang,
wo ich jetzt dieses Paar in der Anschrift habe.
Oder wenn ich die neue Bezeichnung benutzen will,
will eben das Bild Gamma von A1 und A2. Ja,
das sind also drei Regeln.
Da werden sich vielleicht fragen, warum habe ich mit der dritten Regel angefangen?
Ja, weil das das eigentlich Neue ist.
Nicht die anderen beiden Regeln, die beschreiben nur die Fälle,
wo nur ein Transitionssystem einen Schritt macht und das andere unverändert bleibt.
Und das ist sozusagen die einfacheren,
die man vielleicht gar nicht so gut versteht,
wenn man die dritte Regel im Grundtast
nicht kennt
Nicht, da hätten wir ja zunächst mal gleich wieder in der grafischen Darstellung
die Situation, dass das A1 nicht in der Synchronisationsrelation ist.
Und das bedeutet, dass dann der Schritt nur aus dem
A1 besteht, während das andere Transitionssystem R unverändert bleibt.
Also hier das A2R2 brauche ich ja gar nicht zu kennen.
Es ist nur wichtig, dass der in dem Zustand R eben bleibt.
Ja, nicht. Und Symmetric gibt es das Entsprechende auch
für die zweite Komponente. Das ist dann die Regel 2.
Da wäre also das A2 nicht in der Synchronisationsrelation.
Und dann wäre der Übergang dann nur Mit A2. Und
der Übergang musste auch schon wieder ein Fehler.
Heute ist irgendwie ein Fehlertar. Der Übergang müsste ja dann da
auch A2 dann eben stehen, da wir ja den Übergang A2 haben.
Nicht hier oben steht es ja richtig. Der Übergang muss
mit A2 sein, das heißt an dieser Stelle. Okay. Ja,
ist das soweit verstanden oder haben die noch Fragen jetzt zu diesem Transitionsprodukt und der Synchronisation,
weil wir jetzt ein Umfang, ja, sie kommen gleich dran,
ein Umfangreicheres Beispiel machen, wo das alles drin vorkommt.
Ja, bitte
Ah ja, das ist eine gute Frage. Das habe ich nicht erklärt.
PR bedeutet Projektion, das ist also eine übliche mathematische Notation.
Wenn ich also zum Beispiel ein kathesisches Produkt haben,
was wir hier haben, A1, Kreuz A2,
dann ist zum Beispiel PR1 eine Abbildung von A1-Kreuz A2 nach A1,
der Gestalt, das PR1 von irgendeinem Paar Klein-A1 A2,
dann die erste Komponente herausschnappt,
Ja, vielen Dank für die Frage. Hätte ich gleich
erklären sollen. Das heißt also, die erste und die
zweite Projektion nehme ich dann aus dem Paar eben heraus.
Gut, noch eine Frage. Prima. Gut,
also jetzt zu dem umfangreicheren Beispiel, was ich neulich ja schon mal angefangen habe.
Es geht da um ein einfaches Sender-Empfänger-System,
wo ich da einen Sender und einen Empfänger habe.
Und die interne Struktur könnt ihr eben so aussehen,
dass also der Sender zunächst ein Datum von einem Benutzer über den Kanal A-Infekt.
Hier ist das also richtig mit dem Anfangszustand und dann
sich synchronisiert oder etwas auf den Kanal B legt.
Und der Empfängern würde dann in Form von Ron der WU-Synchronisation
dieses Datum vom Kanal B nehmen und dann an einen Kanal C,
an einen Benutzer eben abgeben.
Nicht, das ist also ein Kanal mit einer sehr eingeschränkten Funktion.
Das heißt, das Datum wird gewissermaßen per Shake-Hand-Synchronisation übergeben und
nicht wie bei einem Nachrichtenkanal, wo wir eine bestimmte Nachrichtenlaufzeit haben.
Wie wir das eben in dem Beispiel hatten,
wo wir dann dieses dargestellt haben durch das Zwischentransitionssystem.
Ja, und dann soll die Synchronisation natürlich entsprechend so stattfinden,
dass also jetzt die hier rot dargestellten Pfeile eben synchronisieren.
Und das Ganze soll dann hinterher C-B von D
eben heißen
Ja, wenn wir das entsprechenden,
den entsprechenden Zustandsgraf jetzt von dem Produkttransitionssystem anschauen,
dann sehen wir, dass wir mit dem Anfangszustand S0R0 beginnen.
Dann haben wir hier zunächst die unsynchronisierte Aktion RA von D und wir sehen,
nur die erste Komponente ist verändert, dass R0 bleibt.
Nicht danach würde dann die Synchronisation kommen,
also dass SB und das RDB zusammen stattfinden,
was dann umbenannt wird in CB,
immer mit dem Argumente des Datums und dann hinterher könnte dann
noch dieses SC die Abgabe des Datums an den Benutzer
eben stattfinden
Nicht, wenn man das so lässt, dann entspricht das vielleicht der Intuition,
ist aber noch nicht vollständig, weil durchaus folgendes passieren kann.
Es kann hier passieren, dass dann hier in diesem Zustand
auch wieder die Aktion RRA von denen stattfinden kann. Nicht,
was man so interpretieren kann,
dass sozusagen das nächste Datum aufgenommen wird und danach erst die Abgabe von dem alten Datum als C. Nicht,
das bedeutet, dass die beiden Aktionen hier auf dem Kanal A und C,
dass die unabhängig voneinander sind und deswegen auch,
man sagt eben nebenläufig ausgeführt werden können
Nicht, das führt dann in die sogenannte Concroncy-Theorie, also die Theorie der Nebenläufigkeit.
Nicht, das sind also dann Nebenläufige Aktionen. Nicht,
und das Bild, wenn wir das so sagen,
mal grafisch etwas anders darstellen, ist typischerweise ein solches Parallelogramm,
nicht, wo wir hier A,
B haben,
das hier also A,
wo ist denn jetzt
das B
Da habe ich, glaube ich, auch was falsch gezeichnet.
Also hier haben wir A, B und hier haben wir
B-A, wo die beiden dann unabhängig sein können.
Das bedeutet, das hat ja neulich schon mal den Begriff
der sogenannten Inter-Living-Semantik oder Folgensemantik erwähnt. Das bedeutet nichts anderes,
wenn zwei solche Aktionen unabhängig voneinander sind, dass man sie dann,
wenn man sie als Folgen beschreibt,
dann die Gestalt haben,
dass erst,
dass das in der Form A gefolgt von B dargestellt werden
kann oder in der Folge in der Folge von B und
Nicht in der Leaving-Semantik heißt,
obwohl zwei Aktionen unabhängig voneinander sind und wir gar keine Reihenfolge annehmen können,
dass wir sie dann hintereinander darstellen, was für viele Fälle genügt,
aber die Natur dieser Aktionen nicht richtig darstellt,
weil sie ja keine Reihenfolge einnehmen sollen,
sondern unabhängig voneinander ausgeführt werden sollen.
Aber das nur nebenbei. Gut, dazu haben wir jetzt
auch wieder eine Animation. Das heißt also,
am Anfang haben wir jetzt wieder diese Aktion mit dem Benutzer
Dann haben wir die gemeinsame Synchronisation und in dem Falle habe ich
dann jetzt die Aktion genommen und wir sind wieder im Anfangszustand.
Wenn wir jetzt noch mal daran denken,
was wir ursprünglich über Spezifikation oder Spezifikation gesagt haben,
dann betrifft das ja zum Beispiel in vielen Fällen eine externe Sicht.
Nicht, dass wir gar nicht wissen oder wissen können,
was intern in der Blackbox passiert, was hier eine Whitebox ist,
sondern dass wir nur das Externe Verhalten eben untersuchen können.
Und das können wir so darstellen,
indem wir gewissermaßen die internen Zustände verdecken
Und man spricht dann auch von Abstraktion. Nicht,
das heißt, in einer externen Sicht würde das bedeuten,
dass wir diese beiden Zustände hier nicht mehr unterscheiden und als einen einzigen Zustand interpretieren.
Und das gesamte Produkttransitionssystem würde dann in der externen Sicht so aussehen,
nicht wo die beiden Zustände hier zusammengefasst sind.
Und wir sehen, wir haben hier ein gewünschtes Verhalten,
denn immer wenn ein Datum A, nee,
ein Datum D von dem Kanal A gelesen wird,
wird es hinterher das gleiche Datum auf den Kanal C wieder abgegeben.
Nicht, was ja das gewünschte Verhalten eben ist
Ja, und wir können also jetzt dieses externe Verhalten
eben auch als Spezifikation eben auffassen, dass wir sagen,
ja, wir wollen jetzt ein Sender-Empfängersystem konstruieren,
was dieses externe Verhalten hat.
Das machen wir so. Und dann können wir hinterher überprüfen,
ob eben dieses externe Verhalten erreicht worden ist.
Nicht, weil ich, wie du sagst, nochmal,
im externen Verhalten die internen Zuständen und Nachrichten eben nicht sichtbar sind.
Nicht, dass es jetzt ein sehr einfaches Beispiel und das
wird jetzt gleich dann noch etwas komplizierter
Und was jetzt komplizierter wird, das bezieht sich jetzt auf
eine alte Arbeit, nämlich von Lynch.
Das hieß also ein Reliable Full Dublecks File Transmation over Half Dopplex Telefon Lines von Juni
19968. Eine Halbdüplex-Kanalen, das ist ein Kanal,
wo man in beiden Richtungen senden darf, aber nur in einer Richtung zur Zeit.
Und in dieser Arbeit wurde jetzt also ein zuverlässiges Protokoll vorgestellt. Was bedeutet unter der Annahme,
dass der Kanal fehlerhaft sein kann, also Fehler auftreten können,
Aber unter der weiteren Annahme, dass die Fehler entdeckt werden,
das heißt also, dass wir eine Fehlermeldung haben,
dass wir dann darüber ein Protokoll schreiben,
was als externes Verhalten wieder eine konrekte Übermittlung eben darstellt.
Ja, und das Interessante daran war, dass dieser,
ja, oder Frau Lynch geäußert haben, dass er,
dass er zumindestens drei Bit als gewissermaßen als Steuerungssymbol gebraucht werden.
Und das ist also gewissermaßen mit einem Bit,
also nicht eben geht
Nicht, und kurz darauf haben dann hier diese drei Autoren darauf Bezug genommen.
Das ist also ungefähr ein Jahr später gewesen und geschrieben,
ja, diese Behauptung von Lynch, dass das nur,
dass das nicht mit einem Bit geht, die ist nicht richtig.
Wir benutzen schon seit längerem ein solches Protokoll, was nur mit
einem Bit eben auskommt. Nicht, und dieses Protokoll,
das wurde dann in der Folge das sogenannte Alternierbit-Protokoll genannt,
was eben ausdrückt,
dass wir mit einem solchen Zusatzbit
dieses Problem eben lösen können
Nicht und in der Agonal, in der Originalarbeit von diesen
drei Autoren gibt es dann auch diese Graf, dieses Graf,
was also zwei kommunizierende Automaten sind, die also mit Randovus-Synchronisation kommunizieren.
Und nach diesem Verfahren gehen wir jetzt in der Folge vor,
wobei jetzt ich jetzt den Formalismus benutze, den ich jetzt nun gerade vorher eingeführt habe.
Okay, das sieht jetzt also so im zweiten Beispiel aus,
dieser rote Blitz da soll eben bedeuten, dass der Kanal gestört sein kann.
Nicht, das heißt also,
wenn der Wenn der Sendern hier ein Datum ablegt,
dann kann es sein,
dass das gestört wird und der Empfänger dieses nur in gestörter Form nicht nur lesen kann,
aber es gleichzeitig eine Nachricht erhält, dass es eine Störung ist.
Das ist ja nicht selbstverständlich,
weil nicht von jeder Nachricht sieht man gleich,
dass es eine Falschmeldung ist, aber die wissen vielleicht,
dass man durch sogenannte Protokollschichten,
nicht zum Beispiel das Iso-Osi-Protokollsystem,
dass man dort durch verschiedene Schichten gewährleisten kann,
dass eine solche Fehler
eben entdeckt werden kann
Und unser dieser Annahme, dass dieser Fehler eben entdeckt wird,
wird jetzt, soll jetzt eben ein solches System konstruiert werden,
dass jetzt diesen Fehler maskiert und trotz der Anwesenheit des Fehlers
letztendlich ein externes Verhalten hat, was korrekt ist.
Ja, soweit sind wir aber noch nicht. Wir gucken uns
erstmal das Verhalten an. Dann ist natürlich wichtig festzustellen,
dass jetzt dieser Fehler hier zu einer neuen Transition führt,
dass nämlich anstelle,
dass jetzt der Sender ein Datum D auf den Kanal legt,
wird das hier so dargestellt,
dass er eine Fehlermeldung auf den Kanal legt,
hier in Form dieses Spottom-Symbols
Nicht, wenn man das ausführlicher machen würde,
würde man den Kanal wieder ein Transitionssystem zwischenschalten,
wie wir das eben gemacht haben.
Und in dem Kanal Transaktionssystem diesen Fehler auftreten lassen.
Das würde aber hier in meinem Beispiel nachher zu einem zu
großen Produkttransitionssystem führen. Deswegen habe ich das dahingehend vereinfacht,
dass man sozusagen tut,
der Fehler tritt nicht in dem Kanal auf,
sondern der Sender macht schon
den Fehler
Für die grundsätzliche Problematik keinen Unterschied macht. So,
der Empfänger muss jetzt natürlich auch den Fehler lesen können.
Das sehen wir daran, anstelle,
dass er jetzt hier auf dem Kanal B das Datum D liegst,
kann er jetzt hier auch den Fehler lesen und würde dann diese Fehlermeldung an seinen Benutzer eben abgeben.
Das heißt also, unsere Synchronisation machen dann wir wieder entsprechend,
nicht unter das Produkt, Transitionssystem würde dann so aussehen,
dass wir hier rechts dasselbe haben wie vorher und
hier links mit den roten Pfeilen den entsprechenden Teil,
wo der Fehler aufgetreten ist
Ja, gehen wir wieder über zur externen Sicht.
Die externe Sicht würde dann so aussehen, dass wir diese Zustände,
die dann internen Operationen entsprechen, wieder zusammenfassen.
Und das würde dazu führen, dass wir dann ein solches Produkt,
Transaktionssystem haben. Und wir sehen, dass hier also tatsächlich
der Fehler dann auch übermittelt wird.
Das heißt, wir haben als externes Verhalten kein Verhalten,
was eben diesen Fehler eben maskiert
Gut. So, das war jetzt das Beispiel 2,
das gestörte Sender-Empfängersystem. Das Beispiel 3 heißt jetzt nun entstörtes Sender-Empfänger-System.
Wäre die Frage, wie kann ich denn das jetzt entstören?
Das heißt, den Fehler zu maskieren. Nicht,
das geht normalerweise eben nicht durch Hellseerei, sondern dadurch,
dass man verlangt, dass eine Quittung im korrekten Fall geschickt
wird und im inkorrekten Fall eine negative Quittung.
Nicht, und dazu brauchen wir einen weiteren Kanal
und kommen jetzt zu unserem halb Duplex-Kanal,
der also in beiden Richtungen funktionieren kann
Okay, wie sieht dann die Geschichte jetzt aus?
Also so war das vorher. Und nun haben wir
eben jetzt die Situation, dass also der Empfänger,
wenn er eben eine gestörte Nachricht erkennt, eben zurückgibt,
ein Not-OK und im anderen Fall ein OK.
Und der Sender dann entsprechend reagieren kann. Ja, was
heißt dann entsprechend reagieren? Was bedeutet das? Ja,
das bedeutet das, wenn er merkt, der Fehler hat
meine Nachricht nicht richtig erhalten, dann checke ich sie nochmal.
Das bedeutet auch, dass er diese Nachricht speichern muss,
um sie dann nochmal zu schicken. So ist auch das
entsprechende Verhalten. Sie sehen hier unten bei einem Not-OK,
geht er hier wieder zurück zu S1,
wo er das Datum D gespeichert hat und schickt das nochmal
Ja? Nicht bei einem, okay, ist das sozusagen wie vorher.
Ja, und jetzt wird es natürlich interessant, wie jetzt das Produkt Transaktionssystem aussieht.
Wenn ich keinen Fehler gemacht habe, sieht das eben so aus.
Und wenn wir jetzt jetzt wieder die Abstraktion durchführen,
die internen Übergänge verdecken, dann hätten wir hier zwei Zustände.
Und das Gesamtgebilde würde eben so aussehen. Und in der
Tat haben wir jetzt wieder extern, aus externer Sicht,
ein korrektes Verhalten, wo eben der Fehler maskiert ist.
Das heißt, der externe Beobachter kann einen solchen Fehler nicht entdecken,
obwohl intern der Kanal ein B eben gestört ist.
Haben Sie danach eine Frage zu? Okay,
es gibt dir nämlich noch einige Probleme,
nämlich zum Beispiel gibt es das Problem,
dass jetzt das System hier unten immer in dieser Schleife hier bleiben könnte.
Nicht, dass also, der es nicht nur einmal gestört ist,
sondern permanent, also in dem Sinne,
dass jemand mit der Schere den Kanal B durchgeschnitten hat und
irgendwann mal praktisch nie mehr eine korrekte Übermittlung möglich ist,
dann nützt es auch nichts,
wenn der Sender dir das Datum nochmal schickt
Nicht? Und da geht jetzt die Annahme ein,
dass der Kanal zwar gestört sein kann, aber nicht permanent gestört sein.
Nicht, das sehen wir hier sozusagen an der formalen Darstellung,
dass diese Annahme unbedingt notwendig ist und auch in das Modell eingehen muss.
Das heißt, wir müssen ausschließen,
dass eben diese Schleife hier permanent durchlaufen wird,
sondern die muss nach endlicher Zeit auch mal verlassen werden.
Das heißt, der Kanal muss irgendwann mal wieder korrekt funktionieren.
Sowas nennt man eine Fairness-Annahme. Nicht,
das klingt vielleicht ein bisschen merkwürdig, dass man sagt,
ja,
der Kanal muss fair sein
Ist aber vielleicht auch gar nicht so falsch, fair in dem Sinne,
dass er sagt, er kann nicht ständig sich fehlverhalten,
sondern er muss ab und zu auch mal was Richtiges übermitteln.
Ja, und unser Modell können wir das entsprechende so darstellen,
dass wir zum Beispiel dieses als Endzustand im Sinne eines Büchi-Automaten
betrachten und nur solche unendliche Folgen akzeptieren,
die unendlich oft diesen Zustand durchlaufen.
Nicht das bedeutet, dass diese Schleife immer mal wieder verlassen werden muss,
das heißt, an dieser Stelle sehen Sie,
ersten Mal die praktische Bedeutung, dieses Akzeptierungsmottos für Büchi-Automaten.
Und ich hatte ja damals schon erwähnt,
dass das im Zusammenhang mit Fairness-Annahmen oder Fairness-Bedingungen wichtig ist.
Und hier haben wir einen solchen Fall. Ja, nicht
? Und das schließt auch den Kreis zu dem,
was wir ganz am Anfang genommen haben. Wir können also
auch jetzt hier dieses externe Verhalten als Spezifikation nehmen und fragen,
ob diese Spezifikation von unserem System eben erfüllt wird und
dabei eben das Systemverhalten in Form des Produkttransitionssystems eben darstellen
Okay. Nee, das hatten wir ja durch diesen Pfeil
nicht dargestellt. Ja, hat jemand eine Idee,
was an dieser Situation vielleicht noch nicht der Realität entspricht,
wie wir es haben, also an der Konfiguration, die wir hier oben dargestellt haben?
Also an dieser her? Nicht,
also an dieser Konfiguration ist natürlich nicht real, dass wir hier,
dass der Kanal B gestört sein kann und der Kanal D nicht gestört sein kann,
das soll ja gewissermaßen eine Leitung sein,
die in beiden Richtungen abwechselnd benutzt wird,
dann muss natürlich in der Richtung von rechts nach links
auch mal eine Störung
eben stattfinden
Ja, nicht? Und dazu betrachten wir jetzt nochmal die Lösung,
die doch jetzt eben von den Autoren vorgestellt worden ist.
Also von den ersten Autoren, die haben ja,
die sind so vorgegangen,
dass sie zu einem Datum D eine positive Quittung zurückgegeben haben.
Und im Falle eines Fehlers eine negative Quittung. Okay,
so und jetzt nehmen wir also an,
dass eben auch der Kanal D gestört ist.
Da kann man natürlich im Prinzip
das Entsprechende machen
Das heißt also, wenn der Kanal D korrekt funktioniert ist,
geben wir eine positive Quittung und wenn er gestört ist,
dann geben wir eine negative Quittung,
nicht unmöglicherweise ist also der Autor Lynch darauf gekommen,
dass man eben mit einem Bit nicht aus kann,
auskommt und die beiden anderen Autoren hatten aber nun folgende Idee,
die jetzt darauf beruht,
dass wir jetzt hier ja diese positive Quittung jetzt mit einem Null von dem Bit bezeichnen und dass die negative Quittung mit einem Eins,
mit einer Eins, das bedeutet ja,
war ja so, dass wir bei der positiven Quittung,
das nächste Datum D-Strich nehmen können und dann das Bit zum Beispiel wechseln können.
Während wir bei einer negativen Quittung dasselbe Bit nochmal schicken und dann
der Empfänger entsprechend sieht, der der Sender entsprechend sieht,
ob das Datum gestört war oder nicht.
So, das können wir hier unten dann genauso machen mit 0 und 1.
Und die Idee von den beiden anderen Autoren waren, dass man diese beiden Fälle zusammenlegen kann.
Also diese 0 oben und unten und die 1 unten Und oben,
das heißt also, die Autoren von dieser Arbeit hier,
die sind also nur mit einem Bit,
mit den Werten 0 und 1 ausgekommen,
wie wir dann gleich dann nochmal an unserem,
an der Ausführung des Protokolls eben sehen werden.
Da gibt es aber noch eine kleine weitere Schwierigkeit, die mit der Frage zusammenhängt,
was passiert denn bei korrektem Versand, aber gestörter Quittung?
Nicht, wenn ich also korrekt das Datum übermittelt habe,
Und die Antwort aber gestört ist, dann könnte der Sender ja denken,
oh, da ist eine Störung.
Und wenn das so zusammengelegt wird, weiß er nicht,
worin die Störung besteht, ob die gewissermaßen beim Senden oder beim Empfangen passiert ist.
Und dann würde er ja, wenn er darauf nicht entsprechend reagiert möglicherweise,
dasselbe Datum eben zweimal schicken. Und der Empfänger kann nicht wissen,
ob das zweimal geschickte Datum, es war einmal dasselbe,
selbe Nachricht ist oder ob es die Wiederholung einer Nachricht ist mit gleichem Inhalt,
was eben normalerweise,
wenn die Nachricht nicht durchnummeriert sind,
nicht eben ermöglich ist
Ja, nicht. Und das würde ja der bedeuten,
hier nochmal plau dargestellt. Die Nachricht ist korrekt,
aber die Quittung ist falsch. Und das könnte eben
dazu führen, dass eben die Nachricht nochmal geschickt wird.
Das heißt, dieses D-0 wird doppelt versandt. So,
und hier haben wir die Antwort zu diesem Problem.
Der Empfänger R kann dies aber erkennen, weil das Bit
nicht alterniert ist. Das ist also auch der Empfänger,
muss darauf achten, dass das Bit alterniert.
Das heißt, beim Wechsel des Bits ist das okay.
Beim Nichtwechsel ist ein Fehler aufgetreten,
wo der Sender das Datum nochmal schickt und der Empfänger
das Datum unterdrückt
Weil das eine Doppeltsendung ist. Hat da jemand eine Frage zu?
Dann schauen wir uns das jetzt mal in unserem Transitionssystem an.
So würde jetzt also das Transitionssystem des Senders aussehen. Nicht,
wo wir hier gewissermaßen, hier unten sieht das so ähnlich aus wie vorher.
Und hier haben wir eine Doppelung, die jetzt sich auf den Kanal D dann auch nochmal bezieht.
Und so würde das Entsprechende dann jetzt aussehen für den Empfänger.
Und jetzt kommen wir zur Darstellung des Produkttransitionssystem, das sieht sie nämlich so aus. Und wenn wir jetzt erstmal die Abstraktion betrachten und die internen Kanäle,
die also hier jetzt schon vorsichtshalber gestrichelt dargestellt sind,
das sind die internen Kanäle,
wenn wir die Backups drachieren zur externen Sicht,
das heißt also diese Zustände zusammenfassen,
dann hätten wir gerade vier Zustände und die übrig bleibenden Transitionen würden so aussehen,
das heißt aus externer Sicht sehen wir, dass das,
was gesendet wird, auch empfangen wird,
nur dass wir hier da jetzt eine Form haben,
die das mit vier Zuständen macht,
statt mit zwei Zuständen,
aber das externe Verhalten ist,
ist dasselbe
Das ist ja jetzt also das Alternier-Bit-Protokoll, dessen verhalten wir uns jetzt nochmal eben anschauen.
Also da haben wir jetzt den Anfangszustand in den beiden im Sender und Empfänger und in Produkttransitionssystem,
nicht und der erste Schritt ist das Übernehmen des Datums im Kanal A,
was hier unten den Übergang darstellt.
So, der nächste Schritt ist jetzt ein Fehler,
was jetzt hier eine Schleifeintritt hier unten in den Zustand bedeutet
und der Empfänger hat das hier oben Quittier,
also gemerkt,
indem eben diese Fehlermeldung gekommen ist und er gibt die sagen als Fehlermeldung zurück,
sodass er hier unten wieder in demselben Zustand bleibt
So, das könnt ihr natürlich wiederholen,
aber wie wir gesehen haben ausgrund der Annahme der Fairness-Annahme,
nur endlich oft,
dann könnte irgendwann mal das Datum korrekt übermittelt werden und dann gehen
die beiden in den entsprechenden Zustand über und dann kann eben auch das Datum hier von dem Empfangskanal eben gelesen werden und wir hätten gewissermaßen fast den einen Zyklus schon zu Ende.
Wir müssen nur noch die positive Quittung eben abgeben,
die jetzt zum Beispiel darin bestehen kann. Das heißt,
wir sehen von hier, diese Struktur ist symmetrisch, das heißt,
hier in der oberen Rechten Hälfte ist das Gleiche wie in der linken,
unteren Helfer, nur mit einem anderen Bild 0 oder 1 dabei gepackt.
Hier an dieser Stelle sehen wir nochmal, dass dieses Bit 0
hier beigepackt worden ist im Datum und hier oben haben wir das Bit eben eins.
Ja, betrachten wir nochmal den Fall, der Eintritt,
wenn der, diesen, den ich eben diskutiert habe,
korrekter, versandt, aber gestörte Quittung.
Das würde eben Bedeutung, dass eben verhindert werden muss,
dass das Datum doppelt versandt wird, dann würde eben hier unten die Transition stattfinden,
was eben bedeutet, dass der Dieses eben erkennt,
dass das Bit nicht gewechselt hat.
Und dann würde er eben eine negative Quittung setzen und das
Ganze würde eben nochmal geschickt, wie wir hier sehen.
Also der Sender verlässt dann diesen Bereich nicht,
sondern verschickt das Ganze nochmal. Gut. Ja,
die Fairness-Annahme haben wir dann jetzt an allen diesen Stellen,
wo wir diese Schleifen dann eben haben.
Okay. Ist vielleicht ein bisschen komplex für Sie am Anfang,
aber ich bin der Meinung, Mit den Beispielen ist das so eine schwierige Sache.
Nicht, wenn die Beispiele zu komplex sind, dann versteht man
das Prinzip nicht. Wenn die Beispiele zu einfach sind,
dann sieht man die Problematik nicht und versteht das Problem auch nicht.
Deswegen ist immer die Schwierigkeit, ein Beispiel zu finden,
was nicht zu einfach ist, aber hinreichend komplex.
Und wenn sie diese Reihe von den Beispielen hier anschauen,
denke ich, dass das eine ganz gute Lösung ist,
dass wir sozusagen einen einfacheren Ausgangssituation haben mit dem ungestörten System,
dass wir eine einfache Problematik haben mit dem bestörten Kanal
und dann zu einer relativ komplexen Lösung kommt,
die man sich nicht mal eben in einer halben Stunde
sonst vielleicht überlegt hätte
Gut, also denken Sie darüber nach oder fragen Sie gegebenenfalls.
Und wir kommen jetzt zu einem neuen Thema. Nämlich den
sogenannten Gripge-Strukturen. Gripge-Strukturen sind Transitionssysteme, wie sie im Kontext
der temporalen Logik benutzt werden. Also sehen Sie fast so aus,
wie wir das bisher hatten, mit einer kleinen Multifikation.
Ja, zu dieser Modifikation gucken wir nochmal,
betrachten wir jetzt nochmal die sogenannten etikettierten Transitionssysteme.
Das sind solche, wo ich bei den Übergängen,
die interne und die externe Sicht unterscheiden kann,
so wie wir das eben ja auch gemacht haben.
Nicht Beispiels könnte sein, dass ich aus technischer Überlegung heraus die internen Operationen anders nenne,
also A, B, C und so weiter.
Und extern nenne ich sie entsprechend ihrer semantischen Bedeutung,
also Kaffee einfüllen, Tee einfüllen und dergleichen mehr.
Und das drückt man durch so eine sogenannte Etikettenfunktion aus,
die jetzt jedem internen, internen Namen,
die internen Bezeichner, eine semantische Bedeutung zuordnet.
Das heißt, wir haben eine Funktion EA,
die den Aktionen Ein Element aus einer Etikettenmenge,
nicht Englisch Label, einer Labeling-Function, würde man Englisch sagen.
Eine Etikettenfunktion, die also diese Aktionen eben benennen kann.
Nicht, und das würde man dann auf die Folgen übertragen,
indem man das für die einzelnen Folgeglieder eben macht.
Und wenn wir hier sozusagen die Menge der finalen Aktionsfolgen haben,
dann wechseln wir hier zu dem E von A,
in dem wir jetzt statt der Folgen W
die Etiketten eben betrachten
Ja, das könnte zum Beispiel in dem Getränkeautomaten auch so aussehen,
dass ich gewissermaßen extern das leere Wort nehme,
weil ich ja das Tee-Kochen extern nicht bemerke,
nicht wenn der Getränkeautomaten nicht gerade besonders Sicht an dieser Stelle,
dann wären also die eigentlichen Aktionen Tee kochen und so weiter.
Und das Externe wäre an dieser Stelle dieses Y,
das wäre ein anderes Beispiel einer solchen Etikettenfunktion,
die zwischen externer und interner Sicht
dann eben unterscheidet
Also diese Kryptry-Strukturen sind eben dazu da, dass wir jetzt
eben Systeme darstellen und sie eben für die Analyse mithilfe der temporalen Logik vorbereiten.
Und da ist es jetzt so, üblich geworden,
dass wir nicht die Aktionsfolgen betrachten, sondern die Eigenschaften der Zustände,
die eingenommen werden.
Und diese Eigenschaften der Zustände werden durch atomare Aussagen,
das heißt durch elementare Aussagen in den Zuständen eben beschrieben.
Und eine solche Zustandsetikettenfunktion weist jedem Zustand eine Menge von solchen
gültigen Aussagen dann eben zu
Ja, also der Unterschied ist jetzt der,
dass wir statt jetzt die Aktionen und ihre Namen betrachten,
dass wir nachschauen, was passiert in den Zuständen.
Das werden wir auch gleich an einem Beispiel nochmal sehen.
Vorher wollte ich jetzt aber nochmal anknüpfen an unser Alternierbit-Protokoll.
Hier, das ist ein Petri-Netz für das Alternierbit-Protokoll,
was sie im Augenblick noch nicht verstehen müssen oder können,
was sie später kennenlernen. Nur die Geschichte dahinter ist,
das hatten wir damals in einem europäischen Projekt,
das hatte ich an Kollegen in Paris,
die unser Projektpartner waren geschickt und die haben das
einem Modelshaker unterworfen und da stellt er sich heraus,
dass das Transitionssystem so aussah,
das hatte nämlich hier an dieser Stelle
sozusagen Sachgassen
Nicht das hier ist der Anfangszustand, können Sie im Augenblick nicht gut erkennen.
Und hier haben wir diese Sackgasse, was also eine Verklemmung bedeutet.
Und wenn wir das Ganze jetzt mal ein bisschen vergrößert,
dann sehen Sie, dass hier in dieser Verklemmung
es nicht weitergeht und dass hier gewisse Eigenschaften dran stehen.
Das heißt also, in dem Model,
der Modelshaker hat also diesen Grafen produziert,
wo die Eigenschaften des Transitionssystems, wie dem Zustand gelten,
dargestellt wurden.
Und das soll jetzt eigentlich nur nochmal den Übergang darstellen,
dass wir jetzt die Eigenschaften nicht in den Transitionsnamen betrachten,
sondern als Eigenschaften in den Zuständen
Nicht und, nein,
wie Sie an dem Beispiel auch schon gesehen haben,
ist es nicht sehr praktisch, dass der Montel Shaker den Grafen ausgibt,
nicht weil der ja tausende oder Millionen Zustände enthalten kann,
sondern man macht das heutzutage, indem man eine extra Anfragesprache,
ich würde da vielleicht von Datenbanken auch kennen,
definiert und das macht man mit Hilfe der sogenannten temporalen Logik,
dass man sagt, hat mein System einen solchen,
eine gewisse Eigenschaft, man gibt das dem Model Shaker,
der arbeitet, ratter, ratter,
ratter und irgendwann mal gibt es die Antwort,
ja oder nein und im Falle von nein,
gebt ihr einen
dem Pfad von dem Anfangszustand zu dem Fehler
Und das ist natürlich wesentlich weniger als das gesamte Transitionssystem und
hat den schönen Vorteil, dass man also diese Fehler,
dass Fehler entstehen, die Fehlergenese also studieren kann.
Nicht nur dem Beispiel war das, was völlig trivial ist,
das ist nämlich, wie das häufig bei der Programmierung ist,
irgendwie, dass dieses Guard da syntaktisch nicht korrekt war.
Aber man kann an dieser Stelle nochmal sehen,
wie groß also dieses Transationssystem werden,
das hatte nämlich 64 Knoten und 108 Kanten.
Und das schildert also das Korrigierte, Ja,
eigentlich für reale Systeme wenig ist,
aber selbst in diesem kleinen Beispiel schon nicht mehr richtig durchschaubar ist.
Nicht im realen System haben wir, wie gesagt,
gibt es Beispiele mit bis 10 hoch 50 solcher Zustände,
die dann natürlich gewisser anderer Darstellungen bedürfen.
Nun aber zu den Kripke-Strukturen zurück. Das kann man
sehr schön jetzt hier wieder an den Betränkeautomaten darstellen.
Und wir sehen hier, haben wir jetzt auf einmal solche
geschweiften Klammern mit Alphas und Alpha 1 und Alpha 2,
Brandt stehen.
Und diese Alphai sind jetzt Bedingungen,
die jetzt eine semantische Bedeutung haben,
also Alpha 1 heißt 1
Euro ist gezahlt
Was also die Bedingung ist,
die durch die vorangegangene Aktion ja gerade hergestellt worden ist.
Nicht schon hier unten haben wir Alpha 1 und Alpha 2.
Das heißt, der Euro ist bezahlt und Tee ist gewählt.
Das heißt, dieses Beispiel motiviert,
dass wir jetzt an diesen Zuständen Mengen von sogenannten atomaren Aussagen dranschreiben,
nicht den Begriff atomare Aussagen, haben sie hoffentlich einen FG1 gelernt.
In der Aussagenlogik haben wir als atomare Aussagen dasjenige,
woraus wir dann aussagenlogische Ausdrücke dann eben bilden
Okay, nicht. Und diese Menge kann natürlich auch die
leere Menge bedeuten, wenn wir da nichts aussagen wollen wie hier.
Und bei diesen Kripke-Strukturen lässt man dann im Prinzip die Bezeichner
an den Kanten weg und schützt sich nur hier auf diese Zustandsetiketten.
Also wie hier zum Beispiel Alpha 1,
1 Euro gezahlt oder Alpha 1 und Alpha 2,
1 Euro gezahlt und Tee eben gewählt.
Und die Bezeichner an den Kanten kann man eben weglassen
Meistens stehen sie trotzdem dran,
weil eben das für den Benutzer praktisch ist,
diese bezeichnernden Kanten zu haben, aber der Model-Checker benutzt die nicht.
Der Model-Checker benutzt nur diese Aussagen, die in den Zuständen
dann eben drin stehen. Ja, hier haben Sie so
ein anderes Beispiel, hier ein Transaktionssystem für ein Atomkraftwerk.
Hier im Zustand S-0 wäre sozusagen das Normale, der Normalbetrieb.
Und dann ist es möglich, dass eine Störung auftritt,
dann steht hier nichts an der Kante dran,
aber in dem Zustand S-1 sind wir im Störzustand und danach bleiben wir im Störbetrieb.
Nicht, das heißt also,
hier haben wir in den Zuständen solche Mengen von atomaren Aussagen,
wobei der Begriff Atom in einem anderen Zusammenhang jetzt gebraucht wird,
als das bei dem Atomkraftwerk
der Fall ist
Anderes Beispiel, was wir hier immer wieder benutzen,
ist die eines Mikrowellenofens. Haben wir hier oben den Anfangszustand,
das war jetzt zu weit, nochmal zurück,
haben wir den Anfangszustand und da haben wir jetzt einen Satz von
vier Variablen und hier für finden wir uns also zunächst mal,
ist der Mikroofen noch nicht gestartet.
Die Tür ist noch geschlossen, die Heizung läuft noch nicht und
ein Fehler ist auch nicht aufgetreten. Wenn wir dann die Tür öffnen,
sehen Sie hier, dass eben das Close negiert ist,
also nicht geschlossen ist offen, wenn wir den Ofen starten,
Er ist ja gestartet, wenn wir ihn anheizen,
dann heizt er.
Und wenn eben dann wir anfangen zu kochen,
dann bleibt er und kann hier immer weiter kochen.
Und irgendwann mal kann eben auch,
wie die Tür geöffnet werden, dann sind wir hier nicht.
Und dann können hier eben auch noch Fehler auftreten.
Das betrachten wir also später dann, wenn wir die Analyse durchführen.
Und hier ist eben nur wichtig, dass wir hier solche
Etiketten an den Zuständen haben. Nicht, das heißt,
hier hätten wir die Kombination oder die Menge von atomaren Aussagen
nicht start close,
not heat und Norderror
Und Aussagen, die wir später zum Beispiel untersuchen,
ist, ob wenn, Start und nicht Error gilt,
ob dann später irgendwann mal ein Heat gilt.
Wenn ich dann später einmal, sehen Sie schon den ersten Hinweis,
auf die dann eingeführte sogenannte Temporale der Logik.
Okay, das heißt also,
in einer solchen Kripke-Strukturen haben wir also ein Transitionssystem vorliegen,
dass eigentlich diese Transitionsbezeichner nicht benötigt.
Ja, und deswegen haben wir eine Stadt des Triples in
der Transitionsrelation,
jetzt nur noch ein paar
Nicht. Und dieses Paar soll links total sein.
Nicht, das ist jetzt auch ein mathematischer Begriff,
den sie vielleicht in anderem Kontext schon mal kennengelernt haben.
Und das soll bedeuten, für jedes X aus der ersten
Komponente gibt es eine Komponente Y in der zweiten Komponente.
Die Frage, was bedeutet das? Nicht,
wenn Sie mal sowas hier betrachten, dann hätten wir doch ein Gegenbeispiel,
denn wenn wir hier in diesem Zustand sind, dann gibt es hierzu keinen Partner,
der jetzt auf der anderen Seite des Pfeiles liegt.
Nicht, das heißt also, links total heißt nichts anderes,
es gibt keine Sackgasse, keine Zustände, wo es nicht mehr weitergeht.
Nicht, das heißt hier nochmal im Text, also links totale Transaktion bedeutet,
dass jede endliche Zustandsfolge Anfangsstück einer unendlichen Folge ist,
also keine Sackgassen entstehen können. Und das hängt damit zusammen,
dass wir ja eben diese unendlichen Folgen als Basis für unsere Semantik haben und sowas eben ausschließen,
dann fragt sich natürlich, dann können wir ja gar nicht darstellen,
wenn wir wirklich mal eine Sackgasse haben,
das kann man aber gleich durch eine Hilfskonstruktion aus darstellen.
Wenn man dann einen weiteren solchen Zustand einführen,
dann hätten wir aus dieser Nicht-Links-totalen Relation eine Links-Totale gemacht und
wir können immer sagen, wenn wir in diesen Zustand kommen,
dann waren wir vorher in der Verklemmung.
Und wir haben dann diese formale Bedingung erfüllt, die nur damit zu tun hat,
dass wir dann später unsere Temporale Logik eben anwenden können.
Also eine Kripke-Struktur ist eben ein Transitionssystem,
wie wir es vorher hatten, mit einer Ein Elementik in Aktionsmenge,
das drückt eigentlich nur aus, dass wir gar keine Aktionen brauchen.
Das steht überall dasselbe dran. Und einer binären Transitionsrelation. Und ja,
gut, nicht, und das ist natürlich irgendwie,
muss man sich da einen Knoten in den Kopf machen,
wenn man immer an diese Besonderheiten denken.
Und deswegen definieren wir also Krypto-Strukturen nochmal neu, wo also diese Bedingungen drin vorkommen.
Also eine Krypto-Struktur ist jetzt kein Fünf-Tuppel, sondern ein Viertuppel,
wo wir jetzt einfach die Transition Also die Transitionsnamen eben,
über die Transdass Alphabet weggelassen haben.
Wir haben eine Zustandsmenge S. Wir haben eine Menge von Anfangszuständen
und wir haben eine links-totale, binäre Transitionsrelation,
so wie in dem Beispiel eben gesehen. Und das Neue,
was wir jetzt haben, wir haben jetzt eine Zustandsetikettenfunktion,
die jedem Zustand eine Menge von atomaren Aussagen eben zuordnet,
also AP für Atomic Proposition.
Und wir haben auch keine Endzustandsmenge mehr
Nicht, also wenn wir irgendwie einen Endzustand auszeichnen wollen,
dann können wir das natürlich in diese Etiketten jetzt hineinpacken.
Nicht, hier unten haben wir diese Beispiele nochmal,
also keine Namen an den Transitionen, alles binär und wir haben
diese Mengen von atomaren Aussagen in den Zuständen hier und hier.
Ja, und wir betrachten hier dann jetzt natürlich unsere unendlichen Zustandsfolgen.
Das ist jetzt eigentlich eine Wiederholung, was wir schon eben hatten. Nicht,
das heißt also, wir haben jetzt hier solche unendlichen Folgen,
wie vorher in dem Transitionssystem und das nennen wir auch
eine Rechnung Und so eine Folge hat immer die Eigenschaft,
dass jedes Folgeelement mit seinem Nachfolger in der Relation R liegt,
wie sich das gehört.
Und dann haben wir die Menge aller Rechnungen,
bezeichnen wir jetzt also als SS von M.
Das ist die Menge aller dieser unendlichen Folgen,
die also eine Rechnung in dem Sinne sind,
die also jetzt diesen Zustand über Führungsrelation erfüllen und die im Anfangszustand eben anfangen.
Nicht und da wir dann meistens ja diese Eigenschaften betrachten,
gehen wir dann noch über zu den Etikettenfolgen.
Das heißt also, statt der einzelnen Zustände nehmen wir dann die Etiketten,
was dann eine Omega-Folge ist über den P von AP.
Nicht das P ist ein Zeichen für die sogenannte Potenzmenge,
die alle die Menge aller Teilmengen ist und sowas heißt
ein Trace
Ja,
das war wieder vielleicht ein bisschen viel auf einmal,
betrachten wir jetzt doch nochmal an einem Beispiel,
nehmen wir mal das Beispiel wieder, das Getränkeautomaten,
wo wir jetzt die Menge aller Rechnungen in der Gestalt jetzt haben,
das geht ja immer los hier mit den Folgen,
mit S0 nach S1 und dann kann es weitergehen nach S2,
S4 und dann wiederholt es sich oder mit nach S3 und S0,
also die Bezeichner an den Transitionen,
die stehen jetzt einfach nur noch da,
damit wir uns besser erinnern,
benutzt werden sie
jetzt also
nicht mehr
Und die Etikettensprache, wäre jetzt das Bild unter diesen Folgen
unter der Etikettenfunktion? Oder können wir das so sagen,
hier ausrechnen? Schauen wir uns mal das Ergebnis an.
Das würde also hier mit der leeren Menge anfangen.
Dann kommen wir hier nach Alpha 1. Dann kommen wir zum Beispiel
nach Alpha 1, Alpha 2. Dann kommen wir nach wieder
der leeren Menge und dann kann es wieder erneut vorgehen.
Nicht, woran sie sich dann gewöhnen müssen,
ist jetzt, dass die Elemente dieser unendlichen Folge nicht mehr
einfache Zeichen sind,
sondern Mengen von atomaren Aussagen
Nicht, das wird jetzt damit ausgedrückt und die heißen also
auch Traces. Okay. Gut, dann kommen wir jetzt
zum nächsten Thema, wie wir diese Grip-Restrukturen kodieren können.
Das heißt also, wie wir sie darstellen können.
Und da bietet sich natürlich für Informatiker an, dass sie das mit Variablen machen.
Nicht eine Kripke-Strukturen kann mit Prätekaden erster Ordnung repräsentiert werden,
nicht, das ist also bezüglich das, wir Prätekate,
in der Prätekatenlogik erster Ordnung haben.
Das ist jetzt nur technische Sprechweise, das müssen Sie nicht wissen.
Und das bedeutet folgendes. Wir können den Zustand als Abbildung
oder als Belegung von Variablen in eine Menge in eine Wertemenge eben auffassen. Nicht,
wenn wir zum Beispiel die Menge der Variablen V1,
V12 von 3 haben, dann können wir als Zustand auffassen,
das Triple, was dem Variable V1, den WR2 zuordnet,
der Variable V2, den WR3 und der Variable V3,
den WR5, was wir dann auch hier durch so eine logische Formel darstellen können,
V1 gleich 2 und V2 gleich 3 und V3
Nicht dieser Begriff der Belegung ist ja etwas,
was in ihrem Studium immer wieder vorkommen wird.
Das haben sie natürlich in der Aussagenlogik kennengelernt,
wo sie eine Aussagen, außer einen Ausdruck der Aussagenlogik haben,
wo diese Variablen drin vorkommen oder die atomaren Symbole,
denen man eben Wahrheitswerte zuordnen kann.
Nicht, da war das eben nur True und Falls oder wahr und falsch.
Und in der Programmierung bei Programmen hat man Variablen, zum Beispiel Intetia-Variablen,
die dann solche wäre Werte bekommen aus der Menge der Intetia-Größen.
Und mit einer logischen Darstellung meint wir jetzt,
dass wir statt dieser Darstellung hier zum Beispiel eine solche benutzen,
wo wir die einzelnen Teile durch Konjunktionen und die Pfeile
durch Gleichheit
eben darstellen
Ja, und das mit S0 bezeichnen wir dann, entsprechende die Formel für den Anfangszustand.
Ja, und jetzt kommt noch was Ungewohntes,
nämlich wie wir dann in dieser Darstellung die Transitionen bezeichnen.
Wir haben ja also eine Menge V von Variablen
und eine Menge von Werten. Und wie Sie wissen,
unterteiltet sich ja die Informatik generell von der,
zumindest auch die theoretische Informatik, von der Mathematik dadurch,
dass man in der Informatik mehr variable Größen betrachtet,
die sich also in einem Prozess verändern
In der Mathematik heißen die Dinger zwar auch Variable,
aber die haben dann immer einen bestimmten Wert, den man ihnen setzt.
Nicht die Programmierung befasst sich ja in weiten Teilen mit der Semantik,
was eine Variable ist und welche Werte sie annehmen kann und
wie sich das, wie sie sich das verändern kann.
Nicht und in der Logik als Teil der Mathematik hat man damit Probleme,
dass man bei einer Aktion eben darstellen muss,
was der Wert der Variable vorher und hinterher ist.
Nicht und das wird jetzt hier in dem Kontext etwas für sie
merkwürdig folgendermaßen dargestellt. Wir führen hier eine Relation ein,
wobei zweimal Die variablen Menge V drin vorkommt,
wobei im zweiten Teil die entsprechenden Variablen gestrichen vorkommen.
Und das soll Folgendes bedeuten. Das V soll die Werte
der Variablen MBS-Zustand sein und das V-Strich soll die Variablen
mit ihren Werten sein, im Zustand nach einem Übergang.
Ja, das werden wir gleich nochmal ein Beispiel sehen.
Oder erstmal eine Definition. Also eine Kripkripkelstruktur in logischer Darstellung,
nennen wir das, ist eben ein solches Typ Tuppe,
wo jetzt die Menge der Zustände diese Belegungen sind.
Wir haben ja eben schon davon gesprochen,
dass diese Belegungen jetzt die Zustände sind.
Wir haben natürlich Anfangszustände und wir haben jetzt diese Übergänge,
dass wir diese neue Relation genau dann definieren,
wenn wir in dem ursprünglichen System so einen Übergang eben hatten.
Ja, und dann haben wir natürlich auch noch die Etiketten.
Ja, das ist für Sie vielleicht im Augenblick
noch nicht ganz so zu durchschauen.
Und dazu haben wir ja aber ein einfaches Beispiel und
danach denke ich, es wird das also sehr klar sein
Also betrachten wir mal ein solcher Kripke-Struktur,
wo wir als Variablenmenge nur X und Y haben und ganz einfach
die Wertemengen seien 0 und 1. Nicht und das System sei so,
dass es,
wenn es einen Schritt macht,
der neue Wert von X sei der von X plus Y Modello 2 und der Wert von Y soll dich nicht verändern.
Und der Anfangszustand sei X gleich 1 und Y gleich 1.
Das heißt jetzt in unserer Darstellung,
dass unser Anfangszustand natürlich genauso aussieht,
X gleich 1 und Y
Nämlich dieser dreifache Strich bedeutet jetzt eben sozusagen, der definitorische,
genau dann Benzin, genau dann, wenn Beziehungen,
wenn man sozusagen den Doppelpfeil hier für den Teil in der Logik reservieren will.
Ja, und jetzt kommt das Neue mit der Überführungsrelation. Da sehen Sie,
hier habe ich jetzt auf einmal dieses Prädikat oder diese Relation,
wo ich, genau,
also gerade der Ausdruck Prädikat ist besser,
wo ich jetzt hier einmal den Satz der Variablen X und
Y habe und im zweiten Teil dieselben Variablen in gestrichener Form
Und ich sagte ja eben, X und Y sollen die Werte
vorher sein und X-Strich und Y-Strich sollen die Werte hinterher sein.
In Bezug jetzt hier auf die Übergangsrelation wie hier dargestellt.
Ja, und das schreiben wir dann eben auch hin.
Das soll also genau dann gelten,
wenn X-Strich gleich X plus Y Model O2 sind und
Y-Strich ist gleich Y. Das heißt, das Letzte bedeutet,
das Y verändert sich nicht und das X verändert sich
so wie oben beschrieben
Ja? Das nennt man jetzt also eine logische Darstellung einer
solchen Krippestruktur. Und sie werden sich fragen,
warum machen wir das? Das hängt damit zusammen,
dass wir in den Modelscheckern eine solche logische Darstellung haben.
Und diese enorme Verbesserung von Transitionssystemen mit 10 hoch 50 Zuständen,
da sind wir wieder dasselbe Beispiel, die ist nur zu erklären,
indem eben in dieser logischen Darstellung solche enormen Reduktionen vorgenommen werden könnte.
Das heißt, wir werden im weiteren Verlauf dieser Vorlesung
diese Darstellung gar nicht mehr so viel benutzen,
aber um ihnen den Zugang zu diesem Aspekt möglich zu machen,
habe ich
diese Darstellung hier auch mit aufgenommen
Ja, was heißt das anschaulich? Anschaulich meine ich jetzt in Bezug auf die konkrete Kripri-Struktur,
die wir jetzt als Transitionssystem bisher benutzt haben. Das wird ja bedeuten,
dass wir als Zustandsmenge das D-Kreuz D haben,
nicht D war 0 und 1,
die Anfangszustände war 1 und 1 und die Zustands-Überführungsrelation war das und die Labels waren so,
das sieht man also viel noch besser in der grafischen Darstellung.
Nicht, also das D war ja 0 und 1,
das heißt also das kartesische Produkt von 0 und 1
gibt vier Zustände mit den Kombinationen 1-1,
0-1,
1-0 und 0-
So, um die Übergänge sehen dann so aus,
also hier ist ja schon mal ein Übergang da.
Nicht, wenn nämlich x Strichgleich x bis y Model 2 ist,
dass es im Falle von x und y gleiche 0 wieder 00.
Im Falle von 1-0 haben wir auch dasselbe und
im Falle von 1-1 haben wir 0-1
und im Fall von 0-1 haben wir das.
Das heißt also, das wäre jetzt die Darstellung,
der dieses Beispiels in Form einer der grafischen Darstellung eines Transitionssystems
So, nächstes Thema ist Kripkusstruktur von Programmen.
Kann man sagen, wir hatten doch gerade schon ein Programm,
aber da können Sie noch mal drüber nachdenken.
Ich gehe noch mal einen Schritt zurück.
Was fehlt denn jetzt in dieser Darstellung noch,
damit wir die Struktur eines Programmes haben?
Wir sehen ja hier eine im Grunde,
wenn wir noch mal eins zurückgehen,
eine Anweisung an dieser Stelle da
Und in einem Programm haben wir natürlich eine Folge von Anweisungen.
Und wir müssen immer sagen, in welcher Zeile wir in den Anweisungen sind. Das heißt,
was wir noch brauchen, ist ein sozusagen ein Befehlszähler,
also das, was in einem Programmliste in ganz vornen steht,
wo also die Zeilennummer drin steht, damit zu sagen,
der ausführende Interpreter und als solches betrachten wir ja uns gedanklich immer weiß,
an welche Stelle des Programmes wir eben sind.
Das ist hier kein Problem, weil wir überhaupt nur eine Zeile haben,
aber bei Programmen werden wir dann verschiedene Zeilen haben.
Und das seht ihr jetzt folgendermaßen aus
Ja, dazu betrachten wir einfache sequenzielle Programme,
um eben ja in unserer Struktur einfach zu bleiben,
nehmen wir nur das Einfachste, was wir brauchen,
um Turing mächtig zu sein.
Das ist also eine Zuweisung, eine Hintereinanderausführung,
eine bedingte Anweisung und eine Schleife.
Ja, und dann haben wir da noch die merkwürdige Skipp-Anweisung,
die wir eigentlich brauchen.
Das soll einfach nur eine Anweisung sein, die nichts tut.
Das ist manchmal einfach ganz praktisch so wie das
leere Worte bei den Wörtern
Gut, und jetzt kommen wir das zu dem mit den Zeilennummern.
Nicht zur Kennzeichnung von Zuständen enthalten die Programme ja Zeilnummern.
Das heißt, ein Programm könnte zum Beispiel so aussehen.
Der Anfangswert sei x gleich 1 und y gleich 2.
Dann haben wir hier die erste Zeile,
hier mit einem solchen Etikett oder Label L1 oder Zeilennummer L1,
wo x der Wert von zweimal Y zugewiesen wird.
Dann haben wir hier einen Semicolon, was für hintereinander Ausführung steht.
Dann kommt die nächste Zeile L2,
wo Y den Wert von Y minus 1 kriegt,
wie das Semicolon dann 11-3 und dann ist Schluss
Das heißt, was wir jetzt noch brauchen, ist,
dass wir jetzt hier noch diesen Befehlszähler,
kann man das auch nennen, Befehlszähler hinzuführen.
Nicht nur der heißt jetzt hier, wird jetzt hier dargestellt
durch eine variable PC von Abkürzung als Programm-Accounter.
Okay. Ich zeige Ihnen jetzt nur mal,
wie das dann später aussieht, was wir dann in der nächsten Stunde machen werden.
Da haben wir dann zum Beispiel hier solche Zuweisungen,
dass wir bei der Zuweisung Darstellung, was passiert,
wenn wir einer Variablen einen Wert zuweisen
Danach machen wir dasselbe für die Hintereinander-Ausführung. Das ist jetzt erstmal nur eine Vorschau,
da werden wir noch ganz ausführlich in der nächsten Stunde drauf eingehen.
Dann machen wir das entsprechende dann für die,
für ein kleines Beispiel und dann gibt es noch Schleifen und
Parallelprogramme und so weiter und so fort.
Nicht unser Ziel ist es ja,
dann zu Beispielen zu kommen, die für die Parallelverarbeitung,
Parallele nebenläufiger Programme wichtig sind und das soll jetzt nur nochmal
eine kleine Vorschau sein.
Erstmal vielen Dank für heute