@@ -43,7 +43,7 @@ That paper is hence much more suited as an introduction to the model of Iris tha
The following differences between Iris as described in \citetitle{iris-ground-up} and the latest version documented here are worth mentioning:
\begin{itemize}
\item As an experimental feature, we added the \emph{plainly modality}$\plainly$.
\item\ralf{TODO: WP stuckness bits.}
\itemAs an experimental feature, weakest preconditions take a \emph{stuckness}$\stuckness$ as parameter, indicating whether the program may get stuck or not.
@@ -158,49 +158,52 @@ Finally, we can define the core piece of the program logic, the proposition that
We assume that everything making up the definition of the language, \ie values, expressions, states, the conversion functions, reduction relation and all their properties, are suitably reflected into the logic (\ie they are part of the signature $\Sig$).
We further assume (as a parameter) a predicate $\stateinterp : \State\to\iProp$ that interprets the physical state as an Iris proposition.
This can be instantiated, for example, with ownership of an authoritative RA to tie the physical state to fragments that are used for user-level proofs.
Finally, weakest precondition takes a parameter $\stuckness\in\set{\NotStuck, \MaybeStuck}$ indicating whether program execution is allowed to get stuck.
@@ -245,11 +248,11 @@ There are two properties we are looking for: First of all, the postcondition sho
Second, a proof of a weakest precondition with any postcondition should imply that the program is \emph{safe}, \ie that it does not get stuck.
\begin{defn}[Adequacy]
A program $\expr$ in some initial state $\state$ is \emph{adequate} for a set $V \subseteq\Val$ of legal return values ($\expr, \state\vDash V$) if for all $\tpool', \state'$ such that $([\expr], \state)\tpstep^\ast(\tpool', \state')$ we have
A program $\expr$ in some initial state $\state$ is \emph{adequate} for stuckness $\stuckness$ and a set $V \subseteq\Val$ of legal return values ($\expr, \state\vDash_\stuckness V$) if for all $\tpool', \state'$ such that $([\expr], \state)\tpstep^\ast(\tpool', \state')$ we have
\begin{enumerate}
\item Safety: For any $\expr' \in\tpool'$ we have that either $\expr'$ is a
\item Safety: If $\stuckness=\NotStuck$, then for any $\expr' \in\tpool'$ we have that either $\expr'$ is a
Notice that the state invariant $S$ used by the weakest precondition is chosen \emph{after} doing a fancy update, which allows it to depend on the names of ghost variables that are picked in that initial fancy update.
...
...
@@ -312,7 +315,7 @@ We only give some of the proof rules for Hoare triples here, since we usually do