mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-07-27 21:29:09 +02:00
[FMFP] First rework complete
This commit is contained in:
@@ -16,8 +16,8 @@ The first and most important phase is the \bi{modeling phase}, where we model th
|
||||
It also includes formalizing the properties to be checked in said language.
|
||||
|
||||
Next, we run the model checker to check the validity of the model.
|
||||
In the case of this course, we use \texttt{spin}, and we can run a promela model using \texttt{spin -x <promela file>.pml},
|
||||
In the case of this course, we use \texttt{spin}, and we can run a Promela model using \texttt{spin -x <promela file>.pml},
|
||||
which wraps \texttt{spin -a <promela file>.pml}, \texttt{gcc <promela file>.c} and \texttt{./a.out} into a single command.
|
||||
|
||||
After running, it is time to analyze the output of the model checker. If the property is violated, analyze the found conter example.
|
||||
If the mdeol is too large, it can happen that the checker runs out of memory. In that case, reduce the model and try again.
|
||||
After running, it is time to analyze the output of the model checker. If the property is violated, analyze the found counter example.
|
||||
If the model is too large, it can happen that the checker runs out of memory. In that case, reduce the model and try again.
|
||||
|
||||
@@ -8,10 +8,13 @@ The number of states is given by
|
||||
\prod_{i = 1}^N (l(p_i) \times \prod_{\texttt{var} x_i \in p_i} |\texttt{dom}(x_i)|) \times \prod_{j = 1}^{K} |\texttt{dom}(c_j)|^{\texttt{cap}(c_j)}
|
||||
\]
|
||||
where $l(p_i)$ returns the number of program locations for process $i$, $|\texttt{dom}(x_i)|$ denotes the number of values a variable can take,
|
||||
$\texttt{dom}(c_j)$ denotes the number of values each message in the channel can take and $\texttt{cap}(c_j)$ returns the capacity of the buffer fo the channel.
|
||||
$\texttt{dom}(c_j)$ denotes the number of values each message in the channel can take and $\texttt{cap}(c_j)$ returns the capacity of the buffer of the channel.
|
||||
|
||||
|
||||
\shade{orange}{THUS:} \hl{Keep the model as small as possible} to prevent the above, which is called \bi{state space explosion}
|
||||
|
||||
On the next page, the basic syntax of Promela is presented.
|
||||
|
||||
\newpage
|
||||
|
||||
\inputcode{promela}{code/promela/00_basics.pml}
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ The LT-Properties are typically specified over infinite sequences of abstract st
|
||||
\inlinedefinition An LT-property $P$ is a safety property if for all infinite sequences $t \in \cP(AP)^{\omega}$:
|
||||
if $t \notin P$ then there is a finite prefix $\hat{t}$ of $t$ such that for every $t'$ with prefix $\hat{t}$, $t \notin P$.
|
||||
|
||||
\inlineintuition More informally, it \textit{does not allow anything bad to happen}. Or, more exhaustively, if a sequence $t$ is no allowed by the LT-property,
|
||||
\inlineintuition More informally, it \textit{does not allow anything bad to happen}. Or, more exhaustively, if a sequence $t$ is not allowed by the LT-property,
|
||||
then there exists a finite prefix $\hat{t}$, which contains everything that makes the sequence violate the LT-property.
|
||||
Thus, whatever sequence we append to it, it will always remain in violation of the property $P$.
|
||||
|
||||
|
||||
+2
-2
@@ -2,10 +2,10 @@
|
||||
This is used to formalize LT-properties of traces.
|
||||
|
||||
\paragraph{Operators}
|
||||
The basic operators are, with $p$ a proposition from $AP \neq \emptyset$ and $\Phi$ and $\Psi$ LTL formulas:
|
||||
The basic operators are, with $p$ a proposition from $AP \neq \emptyset$, and $\Phi$ and $\Psi$ LTL formulas:
|
||||
\begin{itemize}
|
||||
\item $p$ states that it is true ``\textit{now}''
|
||||
\item $\Phi U \Psi$ states that $\Phi$ holds ``\textit{until}'' $\Psi$ holds. I.e. there are no other valid propositions that hold in between.
|
||||
\item $\Phi \; U \; \Psi$ states that $\Phi$ holds ``\textit{until}'' $\Psi$ holds. I.e. there are no other valid propositions that hold in between.
|
||||
\item $\bigcirc \Phi$ states that the $\Phi$ holds for the ``\textit{next}''
|
||||
\end{itemize}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user