Formal = Mittels Logik
Propositionale Variablen | $A, B, C, \ldots$ |
---|---|
Junktoren | $\neg, \wedge, \vee, \Rightarrow, \Leftrightarrow$ |
Formel | $\phi, \psi, \ldots$ |
Konstanten | $\top, \perp$ |
Belegung | $\eta$ |
---|---|
Foo | $⟦\phi⟧\eta$ |
Bar | $\&, \mid\mid$ |
Tautologie | $\forall \eta:⟦\phi⟧\eta$ |
---|---|
Erfüllbar | $\exists \eta:⟦\phi⟧\eta$ |
Unerfüllbar | $\forall \eta:\neg⟦\phi⟧\eta$ |
Äquivalent | $\forall \eta:⟦\phi⟧\eta = ⟦\psi⟧\eta$ |
Erfüllbarkeitsäuivalenz | $(\phi \text{ und } \psi \text{ sind erfüllbar}) \vee (\phi \text{ und } \psi \text{ sind unerfüllbar})$ |
Literal | $A$ und $\neg A$ |
---|---|
Minterm | Konjunktion: $\ldots \wedge \ldots \wedge \ldots \wedge \ldots$ (Die wenigsten Belegungen sind $\top$) |
Maxterm / Klausel | Disjunktion: $\ldots \vee \ldots \vee \ldots \vee \ldots$ (Die meisten Belegungen sind $\top$) |
KNF | $(\ldots \vee \ldots \vee \ldots \vee \ldots ) \wedge ( \ldots \vee \ldots \vee \ldots \vee \ldots )$ |
DNF | $(\ldots \wedge \ldots \wedge \ldots \wedge \ldots) \vee (\ldots \wedge \ldots \wedge \ldots \wedge \ldots)$ |
$\phi$ … KNF | Größe | Zeit |
---|---|---|
Äquivalent | exponentiell | ? |
Erfüllungsäuivalent | linear | polynomiell |
Nur erfüllungsäquivalent
$$KNF(A) = (A, \top)$$ |
$$\begin{array}{ll}KNF(\neg\phi) =&\text{let } (B, \Gamma) = KNF(\phi) \text{ in} \\ & (C, \Gamma \wedge (C \vee B) \wedge (\neg C \vee \neg B))\end{array}$$ |
$$\begin{array}{ll}KNF(\phi_1\vee\phi_2) =&\text{let } (B_1, \Gamma_1) = KNF(\phi_1) \text{ in} \\ &\text{let } (B_2, \Gamma_2) = KNF(\phi_2) \text{ in} \\ & (C, \Gamma_1 \wedge \Gamma_2 \wedge (\neg C \vee B_1 \vee B_2) \wedge (C \vee \neg B_1) \wedge (C \vee \neg B_2))\end{array}$$ |
SAT
Hier gibt es mehr. Aber das halte ich für Klausurirrelevant
Wenn gezeigt werden soll, das die Schaltungen $f$ und $f'$ bezüglich ihrer Eingänge $x\ldots$ das selbe liefern, dann darf $\neg \left( \left(f_1(x\ldots) \Leftrightarrow f'_1(x\ldots)\right) \wedge \left(f_2(x\ldots) \Leftrightarrow f'_2(x\ldots)\right)\right)$ keine Lösung liefern.
Zeit | |||||
---|---|---|---|---|---|
0 | 1 | … | n-1 | ||
Zustand | $z_1$ | $x_{zt}$ | |||
$z_2$ | |||||
… |
$\bigwedge_t \bigwedge_{z \in Z} \bigwedge_{z' \ne z}\neg(x_{zt} \wedge x_{z't})$ | Zu jeder Zeit ist nur ein zustand gesetzt |
$\bigvee_{z \in I} x_{z0}$ | Einer der Startzustände |
$\bigwedge^{n-2}_{t=0} \bigvee_{z \rightarrow z'} x_{zt} \wedge x_{z'(t+1)}$ | Zu jeder Zeit führt ein Zustand in einen Folgezustand |
$\bigvee^{n-1}_{t=0} \bigvee_{z \in V} x_{zt}$ | Zu einer Zeit ist ein verbotener Zustand erreicht |
Dieses System darf keine Lösung haben.
nichtreduzierter BDDs
reduzierte BDDs (zusätzlich)
nichtreduziert → reduziert
BDDs sind eindeutig: Gleiche Funktion ⇒ isomorphe BDDs
Shannon-Zerlegung: $f = (x \wedge f[x := \top]) \vee (\neg x \wedge f[x := \perp])$
Negation: True und False vertauschen
Variable setzen:
Zweistellige Operationen: Rekursiv $(x \wedge (f[x := \top] \oplus g[x := \top])) \vee (\neg x (\wedge f[X := \perp] \oplus g[x := \perp]))$ (Gehe die Variablen der reihe nach durch. Ersetze die Nachfolger durch $\oplus$ aus den True-Zweigen und durch $\oplus$ aus den False-Zweigen.)
Alle möglichkeiten einer Variablen probieren: $\exists x: f := f[x := \top] \vee f[x :=\perp]$
Optiomierungen
Es fehlen nebenläufige Systeme!!!
Arten
Dinge die Interessieren
Propositionale Variablen | $p, q, \ldots$ | Jedes Aussgenlogische Formel ist CTL! |
---|---|---|
Junktoren | $\neg, \wedge, \vee, \Rightarrow, \Leftrightarrow$ | |
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)$
A | Auf allen Pfaden gilt … |
---|---|
E | Auf (mindestens) einem Pfad gilt … |
…in…
X | Next | … (mindestens) einem unmittelbar folgenden Zustand |
---|---|---|
F | Final | … (mindestens) einem folgenden/selben Zustand |
G | Globaly | … allen folgenden/selben Zuständen |
U | Until | … allen folgenden/selben Zuständen $\phi$, bis $\psi$ gilt. $\psi$ kann bereits im selben gelten |
$(S, \rightarrow)$
$Tr(\mathcal{I})$ | $(S, \rightarrow)$ | Transitionsystem | Durch $\mathcal{I}$ festgelegt |
---|---|---|---|
$\mathcal{I}(p)$ | $\subseteq S$ | Zustände in denen $p$ gilt | |
$s \models \mathcal{I} p$ | $\{True, False\}$ | Aussage: $p$ ist in Zustand $s$ gesetzt | |
$\mathcal{I}(\phi)$ | $\subseteq S$ | Zustände in denen $\phi$ gilt | Ableitbar |
$s \models \mathcal{I} \phi$ | $\{True, False\}$ | Aussage: $\phi$ ist in Zustand $s$ gesetzt |
Interpretation enthält keine Formel.
Markiere mit ..
Effizienter: $EG(\phi)$ anstatt $AF(\phi)$
Zeitkomplexität: Linear zu Transitionen
Aber state-explosion-problem: Exponentiell mit Anzahl zu modelierender Prozesse
⇒ BDDs verhindern das (es kann optimiert werden)
Alle interessierenden Zustände können immer unendlich offt erreicht werden.
E?
, es Existiert ein fairer Pfad in dem …
A?
, in allen fairen Pfaden gild …
Abwandlung des Labeling Algorithmuses:
BDD ist ein Bitvektor und daher kann ich ein Transitionsystem eincodieren, sowie ein $\phi$.
http://nicta.com.au/__data/assets/pdf_file/0018/14814/lecture4-mc2.pdf
ToDo
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$ |
(GF p1.state=running) ⇒ …
$(\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 |
$L = (b^{*}a)^\omega$ (wenn a
immer wieder vorkommen muss)
$\omega$ | FG | Unendlich offt vorkommen |
$*$ | GF | Endlich offt vorkommen |
while […] do …
if […] then … else …
true
false
not …
… := …
“Erreichbare Definitionen” (Reachable Definitions)
“Verfügbare Ausdrücke” (Available Expressions)
“Lebendige Variablen” (Live Variables)
$\ell$ | $RD_{entry}(\ell)$ | $RD_{exit}(\ell)$ |
---|---|---|
1 | (x, ?), (y, ?) | … |
2 | … | … |
3 | … | … |
So lange ausfüllen, bis nichts mehr geht.
Das geht, weil Fixpunkte und Knaster-Tarski-Theorem
Teile
&
bzw. |
->
für ⇒
MODULE main
– oder –
MODULE p(x, y, z)
VAR a : boolean; b : {foo, bar}; c : process otherModule(foo, bar);
… : … ;
boolean
{}
ASSIGN init(b) := foo; next(b) := {foo, bar}; next(b) := case foo : bar; TRUE : {foo, bar}; esac; c := !b
… := …;
init()
next()
case … esac
INIT
, TRANS
und INVAR
Bei case
: Boolscher Test: Wert/Set;
INIT b = foo;
… = … ;
TRANS b = foo & next(b) = bar | b = bar & next(b) = foo | b = bar & next(b) = bar
INVAR Ziege.pos = Wolf.pos -> Bauer.pos = Ziege.pos
SPEC AG(a -> AF b = foo)
DEFINE foo := myVar = foo & myOtherVAr = bar;
… := … ;
JUSTICE/FAIRNESS p1.status = running
Verband $(L, \sqsubseteq)$
$s = \bigsqcup U$
Dazu muss $F(x)$ monoton sein.
OK
Kontrollbit: 0 | Nachricht | → | OK | |
---|---|---|---|---|
← | 0 | |||
Kontrollbit: 1 | Nachricht | → | OK | |
← | 1 |
Fehler
Kontrollbit: 0 | Nachricht | → | ✘ | Fehler beim Empfänger ⇒ Unerwartetes Kontrollbit zurück senden |
---|---|---|---|---|
← | 1 | |||
Kontrollbit: 0 | Nachricht | → | Fehler beim Sender | |
✘ | ← | 0 | ||
Kontrollbit: 0 | Nachricht | → | OK | |
← | 0 | |||
Kontrollbit: 1 | Nachricht | → | ✘ | Fehler beim Empfänger ⇒ Unerwartetes Kontrollbit zurück senden |
← | 0 | |||
Kontrollbit: 1 | Nachricht | → | Fehler beim Sender | |
✘ | ← | 1 | ||
Kontrollbit: 1 | Nachricht | → | OK | |
← | 1 |