mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-07-27 21:29:09 +02:00
[FMFP] Mostly finish exercises section
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
Binary file not shown.
@@ -81,6 +81,9 @@
|
|||||||
\input{parts/01_induction-proofs/02_structural-induction.tex}
|
\input{parts/01_induction-proofs/02_structural-induction.tex}
|
||||||
\input{parts/01_induction-proofs/03_induction-on-trees.tex}
|
\input{parts/01_induction-proofs/03_induction-on-trees.tex}
|
||||||
\input{parts/01_induction-proofs/04_other-induction.tex}
|
\input{parts/01_induction-proofs/04_other-induction.tex}
|
||||||
|
\input{parts/01_induction-proofs/05_induction-on-proof-trees.tex}
|
||||||
|
\input{parts/01_induction-proofs/06_induction-on-derivation-sequence.tex}
|
||||||
|
\input{parts/01_induction-proofs/07_workflow.tex}
|
||||||
% \input{parts/01_induction-proofs/}
|
% \input{parts/01_induction-proofs/}
|
||||||
|
|
||||||
\newsection
|
\newsection
|
||||||
@@ -178,6 +181,7 @@
|
|||||||
For induction proofs, see Section~\ref{sec:induction-proofs}, which were moved up, since they are used in both FP and FM,
|
For induction proofs, see Section~\ref{sec:induction-proofs}, which were moved up, since they are used in both FP and FM,
|
||||||
as well as being mentioned a few times in the rest of the summary.
|
as well as being mentioned a few times in the rest of the summary.
|
||||||
|
|
||||||
|
\newpage
|
||||||
\subsection{Formal Methods}
|
\subsection{Formal Methods}
|
||||||
\input{parts/06_exercises/02_fm/00_imp.tex}
|
\input{parts/06_exercises/02_fm/00_imp.tex}
|
||||||
\input{parts/06_exercises/02_fm/01_operational-semantics.tex}
|
\input{parts/06_exercises/02_fm/01_operational-semantics.tex}
|
||||||
@@ -187,6 +191,7 @@ as well as being mentioned a few times in the rest of the summary.
|
|||||||
% \input{parts/06_exercises/02_fm/}
|
% \input{parts/06_exercises/02_fm/}
|
||||||
% \input{parts/06_exercises/}
|
% \input{parts/06_exercises/}
|
||||||
|
|
||||||
|
\newpage
|
||||||
\input{parts/06_exercises/03_checklist.tex}
|
\input{parts/06_exercises/03_checklist.tex}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
\subsection{Induction on Proof Trees}
|
||||||
|
\label{sec:induction-on-proof-trees}
|
||||||
|
This type of induction is used to prove that a statement exhibits given behaviour.
|
||||||
|
Since often, we are not restricted to just simple statements, such where we know that we are applying the $\textsc{Ass}_{\text{NS}}$ rule,
|
||||||
|
we need to perform case distinction on all possible last rules applied in the derivation tree $T$.
|
||||||
|
If all are to be proven, this will yield $7$, one for each rule of the big-step semantics.
|
||||||
|
|
||||||
|
\inlinedefinition[Subderivation] We define $T' \sqsubset T$, where $T$ is a derivation tree. $T'$ is called a \textit{subderivation} of $T$,
|
||||||
|
or more simply, a \textit{subtree} of $T$. Definition is analogous to the subterm relation.
|
||||||
|
|
||||||
|
|
||||||
|
\shade{ForestGreen}{Rundown} Below a rundown of how such proofs are expected to be laid out.
|
||||||
|
|
||||||
|
We define $P(T) \equiv \forall \sigma, \sigma', s . (\texttt{root}(T) \equiv \text{statement})$.
|
||||||
|
The quantifier-bound variables / states / statements can of course differ, so adjust accordingly.
|
||||||
|
This step is the crucial step to setting up this type of induction.
|
||||||
|
|
||||||
|
We then prove $\forall T . P(T)$ by strong induction on the shape of the derivation tree $T$.
|
||||||
|
Thus, for some arbitrary $T$, the induction hypothesis is $\forall T' \sqsubset T . P(T')$ and we prove $P(T)$.
|
||||||
|
|
||||||
|
Let $\sigma, \sigma', s$ (and more, if applicable) be arbitrary.
|
||||||
|
|
||||||
|
Then, for rules, such as $\textsc{WhT}_{\text{NS}}$, we draw up a derivation tree, like so (from solutions of Exercise Session 11, FS2026):
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.6\linewidth]{assets/proof-on-shape-of-tree.png}
|
||||||
|
\end{center}
|
||||||
|
After it, we need to put final constraints and bind free variables in some way, e.g. here:
|
||||||
|
|
||||||
|
For some $b, s', \sigma'', T_4, T_5$, such that $s \equiv \texttt{while}\; b \; \texttt{do} \; s' \; \texttt{end}$ and $\cB \llbracket b \rrbracket \sigma = \texttt{tt}$.
|
||||||
|
|
||||||
|
Then use the induction hypothesis on the subderivations $T_i$ and finish the proof by showing the original statement holds under the induction hypothesis.
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
\newpage
|
||||||
|
\subsection{Induction on Derivation Sequence}
|
||||||
|
A finite derivation sequence has a length $n \in \N$.
|
||||||
|
We typically reason about finite derivation sequences using \bi{strong induction on the length of a derivation sequence},
|
||||||
|
i.e. we reason about a multi-step execution $\gamma \rightarrow_1^k \gamma'$ using strong induction on the number of steps $k$.
|
||||||
|
|
||||||
|
We define $P(k) \equiv$ ``for all executions of length $k$, our property holds''
|
||||||
|
|
||||||
|
We then prove $P(k)$ for arbitrary $k$, with induction hypothesis $\forall k' < k. P(k')$, as is usually the case with induction on natural numbers.
|
||||||
|
|
||||||
|
After the setup, the proof \textit{typically} proceeds by case distinction on:
|
||||||
|
\begin{itemize}
|
||||||
|
\item $k = 0$ step execution
|
||||||
|
\item $k > 0$ step execution, by splitting off the first execution (i.e. an execution $\langle s, \sigma \rangle \rightarrow_1^k \sigma''$
|
||||||
|
can be split up as $\langle s, \sigma \rangle \rightarrow_1^1 \gamma \rightarrow_1^{k - 1} \sigma''$.)
|
||||||
|
\end{itemize}
|
||||||
|
In the $k > 0$ case, we can then apply the induction hypothesis. Sometimes a further case distinction can become necessary, depending on the rules that are possible.
|
||||||
|
For instance, if $s = s_1; s_2$, two rules are possible, \textsc{Seq1} and \textsc{Seq2} from the SOS.
|
||||||
+1
@@ -1,6 +1,7 @@
|
|||||||
% TOOD: Some more intuition
|
% TOOD: Some more intuition
|
||||||
\newpage
|
\newpage
|
||||||
\subsection{Linear Temporal Logic}
|
\subsection{Linear Temporal Logic}
|
||||||
|
\label{sec:ltl}
|
||||||
\subsubsection{Transition System of a Promela Model}
|
\subsubsection{Transition System of a Promela Model}
|
||||||
For the transition systems, compared to earlier, we use a fixed initial configuration because we only model one program or system,
|
For the transition systems, compared to earlier, we use a fixed initial configuration because we only model one program or system,
|
||||||
as opposed to all programs of a programming language, as previously.
|
as opposed to all programs of a programming language, as previously.
|
||||||
|
|||||||
@@ -1 +1,9 @@
|
|||||||
\subsubsection{IMP}
|
\subsubsection{IMP Proofs}
|
||||||
|
\begin{examdetails}
|
||||||
|
Typically, the exam contains some operational semantics tasks,
|
||||||
|
rarely proofs of properties of IMP.
|
||||||
|
\end{examdetails}
|
||||||
|
The property proofs can be acheived either using a direct proof of the implication, or using an induction proof.
|
||||||
|
The latter of which is more common and we typically define $P$ in such a way that we bind everything apart from variables, natural numbers and constant values
|
||||||
|
using quantifiers, then prove $\forall n \in \N . P(n)$, if we have a free natural numbers.
|
||||||
|
Before the definition of $P$ we typically state ``Let $<$variables, constants$>$ be arbitrary'', as with any induction proof.
|
||||||
|
|||||||
@@ -1,5 +1,34 @@
|
|||||||
\subsubsection{Operational Semantics}
|
\subsubsection{Operational Semantics}
|
||||||
\paragraph{Big Step Semantics}
|
\paragraph{Big Step Semantics (Natural Semantics, NS)}
|
||||||
|
Proving something using the big step semantics rules tends to be fairly easy if you understand how natural deduction and the like work.
|
||||||
|
The concept is very similar, just with other rules. It is advisable to name each sub-statement in the main statement, to reduce the required amount writing.
|
||||||
|
|
||||||
|
Sometimes, Induction on (the shape of) Proof Trees may be required, for that, see Section~\ref{sec:induction-on-proof-trees}
|
||||||
|
|
||||||
|
Where it gets more interesting and challenging, is providing rules in the big step semantics.
|
||||||
|
Here, it is important to think about the different cases that could be introduced by the statement.
|
||||||
|
|
||||||
|
For instance, for loops, there will (almost certainly) be two cases, one in which some boolean expression (denoted $\cB \llbracket e \rrbracket \sigma$) is \texttt{ff},
|
||||||
|
the other in which it is \texttt{tt}.
|
||||||
|
For these, you need to make sure to state the side condition (i.e. that the boolean expression is true or false, respectively).
|
||||||
|
|
||||||
|
In addition, think thoroughly about how to define the states of the rules. For instance, for a \texttt{time} statement, that counts the number of assignments,
|
||||||
|
the state we map to would ideally be defined as $\sigma' [x \mapsto n]$, where $n$ is the number of assignments.
|
||||||
|
|
||||||
|
|
||||||
\paragraph{Small Step Semantics}
|
\paragraph{Small Step Semantics (Structural Operational Semantics, SOS)}
|
||||||
|
Small Step semantics proofs tend to be a bit more challenging. Unlike Natural Semantics, here we can't create a single derivation tree, but one per step.
|
||||||
|
This means, that we do one single step transition at a time, denoted $\rightarrow_1^1$, and justify each step with a proof tree and SO Semantics (SOS).
|
||||||
|
Typically, only \textit{some} of the statements are asked to be proven in the exam, as proving all is time intensive due to the typically fairly
|
||||||
|
large number of steps in the proofs.
|
||||||
|
For the proof trees, they need to be complete for each transition that we prove, i.e. no hypothesis in any branches.
|
||||||
|
|
||||||
|
Defining rules here is similar in concept as with the Natural Semantics.
|
||||||
|
We want to make sure, to also consider the effects it has on other rules, as with Natural Semantics.
|
||||||
|
|
||||||
|
The sole difference here is that we return \textit{both} the next statement to be evaluated \textit{and} the next state,
|
||||||
|
unlike with Natural Semantics, where we only return the next state.
|
||||||
|
|
||||||
|
|
||||||
|
\paragraph{Other proofs}
|
||||||
|
Induction proofs for these two are also outlined in Section~\ref{sec:induction-on-proof-trees} and subsequent subsections.
|
||||||
|
|||||||
@@ -1 +1,11 @@
|
|||||||
\subsubsection{Axiomatic Semantics}
|
\subsubsection{Axiomatic Semantics}
|
||||||
|
Here, we need to find pre- and postconditions for expressions and prove that they are correct.
|
||||||
|
|
||||||
|
To do the proofs, we again apply transition rules, as was the case already with operational semantics.
|
||||||
|
Contrary to those however, we have pre- and postconditions, which we typically need to define ourselves.
|
||||||
|
|
||||||
|
This typically involves finding a loop invariant that holds before and after each iteration of the loop.
|
||||||
|
This invariant should mention every variable used in the loop.
|
||||||
|
Any other variable should also be mentioned in it. The loop \textit{variant} may also be added for proving termination.
|
||||||
|
A typical for-loop loop variant would be \texttt{n - x}, as the next value of the loop variant has to be lower than the previous one.
|
||||||
|
Of course, if \texttt{x} is decreasing, it itself can become the variant, as it fulfils the condition.
|
||||||
|
|||||||
@@ -1 +1,12 @@
|
|||||||
\subsubsection{Modelling}
|
\subsubsection{Modelling}
|
||||||
|
Many of the tasks here are pretty straight forward, converting IMP into Promela,
|
||||||
|
and putting an \texttt{assert} (or more) into the \texttt{init} block, to check if the required state is reached.
|
||||||
|
|
||||||
|
Note that for non-determinism, we use Promela conditionals without conditions.
|
||||||
|
|
||||||
|
For parallelism, we can use the \texttt{run} keyword for a \texttt{proctype}, then we wait for the processes to terminate using
|
||||||
|
\texttt{\_nr\_pr == 1} and do our assertion.
|
||||||
|
|
||||||
|
|
||||||
|
If we are given a text description only however, things get more challenging, as we need to model the properties given there.
|
||||||
|
A possible simplification of the process may be to model things one property at a time, then combine them as needed.
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
\subsubsection{Linear Time Properties (LTL)}
|
\subsubsection{Linear Time Properties (LTL)}
|
||||||
|
We refer to Section~\ref{sec:ltl} for intuition, as these tend to mostly be intuition exercises.
|
||||||
|
|||||||
Reference in New Issue
Block a user