In dem Artikel "Ein konfliktfrei replizierter JSON-Datentyp" stieß ich auf die folgende Notation, um "Regeln" formal zu definieren:
Wie heißt diese Notation? Wie lese ich es?
Beispielsweise:
- Die
DOC
Regel hat nichts im "Zähler" - warum nicht? - Die Regeln
EXEC
undGET
scheinen zwei getrennte Ausdrücke über der Linie zu haben. Was bedeutet das? - Die
VAR
Regel ist auch ein wenig auffällig, da viele andere Regeln eine Art Pfeil (den ich als "impliziert" bezeichnen würde) verwenden. Oben scheint diese Regel nur zu sagen, dass x ein Element von etwas ist. - Fast alles ist mit einer Initiale gespickt,
Ap,
die im Text als "der Zustand der Replik p wird durch Ap, eine endliche Teilfunktion, beschrieben" beschrieben wird. Wie würde ein erfahrener Leser dieser Notation dazu neigen, diesen Teil jeder Regel zu "sehen"?
Diese Seite hat eine verwandte Frage vorgeschlagen, die eine sehr ähnlich aussehende Schreibweise hat, über die Frage, welche Bedeutung ⟨B, s⟩ -> ⟨B ', s'⟩ als die Anfangsregel in dieser Frage zu kleinen Schritten hat Semantik? - Dies ist als operative Semantik gekennzeichnet , und das scheint ein starker Vorsprung zu sein. Ist das wirklich der Rahmen, in dem ich diese Zahlen interpretieren sollte? Könnten Sie dies einfach in "Crash-Kurs" -Form zusammenfassen, damit ich, auch wenn ich die Richtigkeit ihrer Beweise nicht überprüfen kann, zumindest ein bisschen mehr Verständnis dafür bekommen kann, was sie in diesem Abschnitt sagen?
Hier ist eine sehr informelle Erklärung, die Leuten helfen könnte, die mit formalen Notationen nicht vertraut sind, einen Fuß in die Tür zu bekommen. Es ersetzt keine formale Definition!
Der Ap ist der Status Ihres Systems oder Ihres laufenden Programms. "State" kann viele Dinge bedeuten, aber in diesem Fall scheint es eine Liste aller definierten lokalen Variablen und ihrer Werte zu enthalten. Warum ist Ap eine Funktion? Weil dies eine bequeme Möglichkeit ist, Variablenzuweisungen auszudrücken: Ap (x) gibt den Wert der Variablen x an .
Nehmen wir nun die Regel EXEC als Beispiel. Es definiert die Semantik der Ausführung eines Befehls cmd1 gefolgt von einem Befehl cmd2 , dh was mit dem Zustand Ap des Systems geschieht , wenn cmd1 gefolgt von cmd2 ausgeführt wird .
Die anderen Regeln beschreiben die Semantik der einzelnen Befehle und Ausdrücke. Zum Beispiel beschreibt die VAR-Regel, was es bedeutet, eine Variable "auszuführen": Wenn x eine lokale Variable (über der Zeile) ist, was bedeutet es dann, die Variable x auszuwerten / auszuführen ? Es steht unter der Zeile: Wenn sich Ihr Programm im Zustand Ap befindet , ergibt die Auswertung von x den Wert von x , dh Ap (x) .
Ich hoffe das hilft.
quelle