uni:6:fsv:start
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| uni:6:fsv:start [2014-07-11 00:43] – [Tseitin Übersetzung] skrupellos | uni:6:fsv:start [2020-11-18 18:11] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 131: | Line 131: | ||
| * Umordnen (extremfall: | * Umordnen (extremfall: | ||
| * Teilographen wiederverwenden (Hash-Funktion zum finden) | * Teilographen wiederverwenden (Hash-Funktion zum finden) | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Es fehlen nebenläufige Systeme!!! | ||
| + | </ | ||
| + | |||
| + | ===== Model checking ===== | ||
| + | Arten | ||
| + | * Bounded (Beschränkt durch die Symulationszeit) | ||
| + | * SAT Solver | ||
| + | * Symbolic | ||
| + | * BDDs | ||
| + | |||
| + | Dinge die Interessieren | ||
| + | * Safty: Keine verbotenen Zustände erreichbar | ||
| + | * Liveness: Reset-Zustand immer erreichbar? Kein verklemmen $AG(EF\bigwedge_p q_{p, | ||
| + | * Fairness: "Gute Eigenschaft" | ||
| + | |||
| + | ==== CTL ==== | ||
| + | |||
| + | ^ Propositionale Variablen | $p, q, \ldots$ | Jedes Aussgenlogische Formel ist CTL! | | ||
| + | ^ Junktoren | $\neg, \wedge, \vee, \Rightarrow, | ||
| + | ^ Formel | $\phi, \psi, \ldots$ | ::: | | ||
| + | ^ Konstanten | $\top, \perp$ | ::: | | ||
| + | ^ Foo | $AX, EX, A[\phi U \psi], E[\phi U \psi], AG \phi, AF \phi, EG \phi, EF \phi$ | | | ||
| + | |||
| + | |||
| + | $AG \Leftrightarrow \neg EF(\neg \phi)$ | ||
| + | <WRAP second column> | ||
| + | ^A|Auf allen Pfaden gilt ...| | ||
| + | ^E|Auf (mindestens) einem Pfad gilt ...| | ||
| + | </ | ||
| + | <WRAP second column> | ||
| + | ...in... | ||
| + | </ | ||
| + | <WRAP second column> | ||
| + | ^X|Ne**x**t|... (mindestens) einem unmittelbar folgenden Zustand| | ||
| + | ^F|**F**inal|... (mindestens) einem folgenden/ | ||
| + | ^G|**G**lobaly|... allen folgenden/ | ||
| + | ^U|**U**ntil|... allen folgenden/ | ||
| + | </ | ||
| + | |||
| + | === Transitinssystem === | ||
| + | $(S, \rightarrow)$ | ||
| + | |||
| + | * Zustands// | ||
| + | * Transitionsrealtion: | ||
| + | |||
| + | ===Interpretationen=== | ||
| + | ^ $Tr(\mathcal{I})$ | $(S, \rightarrow)$ | Transitionsystem | Durch $\mathcal{I}$ festgelegt | | ||
| + | ^ $\mathcal{I}(p)$ | ||
| + | ^ $s \models \mathcal{I} p$ | $\{True, False\}$ | Aussage: $p$ ist in Zustand $s$ gesetzt | ::: | | ||
| + | ^ $\mathcal{I}(\phi)$ | ||
| + | ^ $s \models \mathcal{I} \phi$ | $\{True, False\}$ | Aussage: $\phi$ ist in Zustand $s$ gesetzt | ::: | | ||
| + | |||
| + | Interpretation enthält keine Formel. | ||
| + | |||
| + | ===Äquivalenz === | ||
| + | * (AE)(GF) vertauschen und 2xnegieren | ||
| + | * $AG(\phi) \Longleftrightarrow \neg EF(\neg \phi)$ | ||
| + | * $AF(\phi) \Longleftrightarrow \neg EG(\neg \phi)$ | ||
| + | * $EF(\phi) \Longleftrightarrow \neg AG(\neg \phi)$ | ||
| + | * $EG(\phi) \Longleftrightarrow \neg AF(\neg \phi)$ | ||
| + | * $AG(\phi \wedge \psi) \Longleftrightarrow AG(\phi) \wedge AG(\psi)$ | ||
| + | * $AF(\phi) \Longleftrightarrow A[\top U \phi]$ | ||
| + | * $EF(\phi) \Longleftrightarrow E[\top U \phi]$ | ||
| + | * $A\[\phi U \psi\] \Longleftrightarrow \neg (E[\neg \phi U (\neg \phi \wedge \neg \psi)] \vee EG(\neg \phi))$ | ||
| + | |||
| + | === Labeling Algorithmus === | ||
| + | - Formel umformen (nur noch $\neg, \wedge, \perp, AF, E[\cdot U \cdot ]$) | ||
| + | - Teilformeln bis auf Variablen-Ebene finden | ||
| + | - Teilformeln Bottom-up durchgehen, bis nichts mehr geht | ||
| + | - Graph mit geltenden Teilformeln markieren, bis nichts mehr geht (dabei auf bereits markiertes berufen) | ||
| + | |||
| + | Markiere mit .. | ||
| + | * $AF(\phi)$, wo .. | ||
| + | * $\phi$ | ||
| + | * Alle Nachfolger sind $AF(\phi)$ | ||
| + | * $E[\phi U \psi]$, wo .. | ||
| + | * $\psi$ | ||
| + | * $\phi$ und Folgezustand mit $E[\phi U \psi]$ | ||
| + | |||
| + | Effizienter: | ||
| + | - $\neg\phi$ für Ausblenden/ | ||
| + | - Starke Zusammenhangskomponenten markieren (Ring-Pfad durch Knoten) | ||
| + | - Markiere Knoten, die in eine //echte// starke Zusammenhangskomponenten zeigen | ||
| + | |||
| + | Zeitkomplexität: | ||
| + | |||
| + | Aber // | ||
| + | |||
| + | === Fairnes === | ||
| + | Alle interessierenden Zustände können immer unendlich offt erreicht werden. | ||
| + | |||
| + | * D.h. für '' | ||
| + | * D.h. für '' | ||
| + | |||
| + | Abwandlung des Labeling Algorithmuses: | ||
| + | * Starke Zusammenhangskomponente ist fair, wenn ein Zustand Fairnesbedingung erfüllt | ||
| + | * Zustand ist fair, wenn ein (längerer) Pfad zu fairen starken Zusamenhangskomponente existiert | ||
| + | |||
| + | === Encoding of CTL in BDD === | ||
| + | BDD ist ein Bitvektor und daher kann ich ein Transitionsystem eincodieren, | ||
| + | |||
| + | http:// | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | ToDo | ||
| + | </ | ||
| + | |||
| + | ==== LTL ==== | ||
| + | ^ Propositionale Variablen | $p, q, \ldots$ | **eingeschränktes** CTL! | | ||
| + | ^ Junktoren | $\neg, \wedge$ | ::: | | ||
| + | ^ Formel | $\phi, \psi, \ldots$ | ::: | | ||
| + | ^ Konstanten | $\top$ | ::: | | ||
| + | ^ Foo | $X \phi, F \phi, G \phi, \phi U \psi$ | | | ||
| + | |||
| + | * Fairness direkt angebbar: '' | ||
| + | * CTL ist ausdrucksstärker | ||
| + | * Für **alle** Pfade muss ... gelten | ||
| + | |||
| + | ==== Büchi Automat ==== | ||
| + | $(\Sigma, T, I, E, \delta)$ | ||
| + | |||
| + | | $\Sigma$ | Menge | Alphabet | | ||
| + | | $Z$ | Menge | Zustände | | ||
| + | | $I$ | Menge | Anfangszustände | | ||
| + | | $E$ | Menge | Endzustände | | ||
| + | | $\delta$ | Relation | Zustandsübergänge | | ||
| + | |||
| + | * Nichtdeterministisch | ||
| + | * Unendliche Wörter | ||
| + | * Akzeptiert: Wenn mindestens ein Lauf // | ||
| + | |||
| + | $L = (b^{*}a)^\omega$ (wenn '' | ||
| + | |||
| + | | $\omega$ | FG | Unendlich offt vorkommen | | ||
| + | | $*$ | GF | Endlich offt vorkommen | ||
| + | |||
| + | ===== Typanalyse ===== | ||
| + | ==== While Programm ==== | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Aritmetische Ausdrücke | ||
| + | * Boolsche Ausdrücke | ||
| + | |||
| + | ==== Datenflussgleichung ==== | ||
| + | " | ||
| + | |||
| + | * $RD_{{\color{ForestGreen}entry}}(\ell) = \bigcup_{{\color{red}\ell' | ||
| + | * $RD_{exit}(\ell) = (RD_{{\color{ForestGreen}entry}}(\ell) \setminus \text{" | ||
| + | * Zu beginn werden //alle// Variablen mit "$(X, \ell)$" | ||
| + | |||
| + | |||
| + | |||
| + | " | ||
| + | * $AE_{{\color{ForestGreen}entry}}(\ell) = {\color{blue}\bigcap}_{{\color{red}\ell' | ||
| + | * $AE_{exit}(\ell) = (AE_{{\color{ForestGreen}entry}}(\ell) \setminus kill_{AE}(B^\ell)) \cup gen_{AE}(B^\ell)$ | ||
| + | * $kill_{AE}([x: | ||
| + | * $gen_{AE}([x := a]) = \{\text{Teilausdrücke von }a\text{ ohne }x\}$ | ||
| + | * $gen_{AE}([bool\ exp]) = \{\text{Teilausdrücke von }bool\ exp\}$ | ||
| + | * Zu beginn werden //alle// Variablen mit " | ||
| + | * //Nur// Arithmetische Ausdrücke | ||
| + | |||
| + | |||
| + | " | ||
| + | * $LV_{exit}(\ell) = \bigcup_{{\color{red}\ell' | ||
| + | * $LV_{{\color{ForestGreen}entry}}(\ell) = (LV_{exit}(\ell) \setminus kill_{LV}(B^\ell)) \cup gen_{LV}(B^\ell)$ | ||
| + | * $kill_{LV}([x: | ||
| + | * $gen_{LV}([x := a]) = \{\text{Variablen in }a\}$ | ||
| + | * $gen_{LV}([bool\ exp]) = \{\text{Variablen in }bool\ exp\}$ | ||
| + | * Zu beginn werden //alle// Variablen mit " | ||
| + | |||
| + | ^ $\ell$ ^ $RD_{entry}(\ell)$ ^ $RD_{exit}(\ell)$ ^ | ||
| + | | 1 | (x, ?), (y, ?) | ... | | ||
| + | | 2 | ... | ... | | ||
| + | | 3 | ... | ... | | ||
| + | |||
| + | So lange ausfüllen, bis nichts mehr geht. | ||
| + | |||
| + | Das geht, weil // | ||
| + | ==== SMV ==== | ||
| + | Teile | ||
| + | - MODULE | ||
| + | - VAR | ||
| + | - ASSIGN | ||
| + | - INIT | ||
| + | - TRANS | ||
| + | - SPEC | ||
| + | - JUSTICE/ | ||
| + | |||
| + | * Case sensitive | ||
| + | * Wenn uterspezifiziert: | ||
| + | * Wenn Block mehrfach: Konjunktion | ||
| + | * Nur einzelnes Zeichen: **''&'' | ||
| + | * Nur Einfacher Strich: **'' | ||
| + | * Negieren, um Lösung als Gegenbeispiel zu bekommen | ||
| + | |||
| + | === MODULE === | ||
| + | < | ||
| + | MODULE main | ||
| + | </ | ||
| + | -- oder -- | ||
| + | < | ||
| + | MODULE p(x, y, z) | ||
| + | </ | ||
| + | * Keine Typ angaben | ||
| + | |||
| + | === VAR === | ||
| + | < | ||
| + | VAR | ||
| + | a : boolean; | ||
| + | b : {foo, bar}; | ||
| + | c : process otherModule(foo, | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | * Set: '' | ||
| + | |||
| + | === ASSIGN === | ||
| + | < | ||
| + | ASSIGN | ||
| + | init(b) := foo; | ||
| + | next(b) := {foo, bar}; | ||
| + | next(b) := case | ||
| + | | ||
| + | TRUE : {foo, bar}; | ||
| + | esac; | ||
| + | c := !b | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Invarianten | ||
| + | * '' | ||
| + | * Ersetzt '' | ||
| + | |||
| + | Bei '' | ||
| + | |||
| + | === INIT === | ||
| + | < | ||
| + | INIT | ||
| + | b = foo; | ||
| + | </ | ||
| + | * '' | ||
| + | |||
| + | === TRANS === | ||
| + | < | ||
| + | TRANS | ||
| + | b = foo & next(b) = bar | ||
| + | | b = bar & next(b) = foo | ||
| + | | b = bar & next(b) = bar | ||
| + | </ | ||
| + | |||
| + | * Transition, wenn Formel erfüllt | ||
| + | |||
| + | === INVAR === | ||
| + | < | ||
| + | INVAR | ||
| + | Ziege.pos = Wolf.pos -> Bauer.pos = Ziege.pos | ||
| + | </ | ||
| + | * Invariante | ||
| + | |||
| + | === SPEC === | ||
| + | < | ||
| + | SPEC | ||
| + | AG(a -> AF b = foo) | ||
| + | </ | ||
| + | |||
| + | === DEFINE === | ||
| + | < | ||
| + | DEFINE | ||
| + | foo := myVar = foo & myOtherVAr = bar; | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | === JUSTICE/ | ||
| + | < | ||
| + | JUSTICE/ | ||
| + | p1.status = running | ||
| + | </ | ||
| + | |||
| + | ===== Beweise ===== | ||
| + | ==== Vollständiger Verband ==== | ||
| + | Verband $(L, \sqsubseteq)$ | ||
| + | * **reflexiv** \\ $\forall_{x \in L} : x \sqsubseteq x$ | ||
| + | * **transitiv** \\ $\forall_{x, | ||
| + | * **antisymetrisch** \\ $\forall_{x, | ||
| + | * **Jede Teilmenge hat ein Supremum** \\ Jedes $U \subseteq L$ hat ein $\bigsqcup U$ | ||
| + | |||
| + | ==== Supremum ==== | ||
| + | $s = \bigsqcup U$ | ||
| + | |||
| + | * **Ist obere Schranke** \\ $\forall_{x \in U} : x \sqsubseteq s$ | ||
| + | * **Ist // | ||
| + | |||
| + | ==== Monotonie ==== | ||
| + | * $x \sqsubseteq y \Rightarrow F(x) \sqsubseteq F(y)$ | ||
| + | |||
| + | ==== Fixpunkt ==== | ||
| + | * $\exists x: F(x) = x$ | ||
| + | |||
| + | Dazu muss $F(x)$ monoton sein. | ||
| + | ===== Probleme ===== | ||
| + | ==== Semaphor ==== | ||
| + | ==== Alternating Bit Protocol ==== | ||
| + | * Zwei Kommunikationspartner | ||
| + | * Bidirektionaler Kanal | ||
| + | * Nachricht: OK/Defekt | ||
| + | * So lange wiederholen bis es klapt | ||
| + | |||
| + | OK | ||
| + | ^ Kontrollbit: | ||
| + | ^ || <- ^ 0 | ::: | | ||
| + | ^ Kontrollbit: | ||
| + | ^ || <- ^ 1 | ::: | | ||
| + | |||
| + | Fehler | ||
| + | ^ Kontrollbit: | ||
| + | ^ || <- ^ 1 | ::: | | ||
| + | ^ Kontrollbit: | ||
| + | ^ ✘ || <- ^ 0 | ::: | | ||
| + | ^ Kontrollbit: | ||
| + | ^ || <- ^ 0 | ::: | | ||
| + | ^ Kontrollbit: | ||
| + | ^ || <- ^ 0 | ::: | | ||
| + | ^ Kontrollbit: | ||
| + | ^ ✘ || <- ^ 1 | ::: | | ||
| + | ^ Kontrollbit: | ||
| + | ^ || <- ^ 1 | ::: | | ||
uni/6/fsv/start.1405032203.txt.gz · Last modified: (external edit)
