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-10 21:06] – [BDD] skrupellos | uni:6:fsv:start [2020-11-18 18:11] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 35: | Line 35: | ||
==== Tseitin Übersetzung ==== | ==== Tseitin Übersetzung ==== | ||
+ | **Nur erfüllungsäquivalent** | ||
+ | |||
* Rekursive Funktion //KNF// | * Rekursive Funktion //KNF// | ||
* Rein | * Rein | ||
Line 113: | Line 115: | ||
BDDs sind // | BDDs sind // | ||
- | Shannon-Zerlegung: | + | Shannon-Zerlegung: |
+ | |||
+ | Negation: //True// und //False// vertauschen | ||
+ | |||
+ | Variable setzen: | ||
+ | - ersetzen/ | ||
+ | - reduzieren | ||
+ | |||
+ | Zweistellige Operationen: | ||
+ | (Gehe die Variablen der reihe nach durch. Ersetze die Nachfolger durch $\oplus$ aus den // | ||
+ | |||
+ | Alle möglichkeiten einer Variablen probieren: $\exists x: f := f[x := \top] \vee f[x :=\perp]$ | ||
+ | |||
+ | Optiomierungen | ||
+ | * Umordnen (extremfall: | ||
+ | * 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}; | ||
+ | | ||
+ | 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.1405019163.txt.gz · Last modified: 2020-11-18 18:10 (external edit)