diff --git a/docs/iris.sty b/docs/iris.sty index 07d3f6fd033a5285374e0c054ee5475647c85c11..835e70bcfc29c86dd5294483930e78b99ebd8e27 100644 --- a/docs/iris.sty +++ b/docs/iris.sty @@ -246,8 +246,8 @@ \newcommand{\fixp}{\mathit{fix}} %% various pieces of Syntax -\def\MU #1.{\mu #1.\spac}% -\def\Lam #1.{\lambda #1.\spac}% +\def\MU #1.{\mu\,#1.\spac}% +\def\Lam #1.{\lambda\,#1.\spac}% \newcommand{\proves}{\vdash} \newcommand{\provesIff}{\mathrel{\dashv\vdash}} @@ -259,8 +259,8 @@ \newcommand{\gmapsto}{\hookrightarrow}% \newcommand{\fgmapsto}[1][\mathrm{-}]{\xhookrightarrow{#1}}% -\NewDocumentCommand\wpre{m O{} m}% - {\textlog{wp}_{#2}\spac#1\spac{\left\{#3\right\}}} +\NewDocumentCommand\wpre{o m O{} m}% + {\textlog{wp}{\IfValueT{#1}{(#1)}}_{#3}\spac#2\spac{\left\{#4\right\}}} \newcommand{\stateinterp}{S} diff --git a/docs/program-logic.tex b/docs/program-logic.tex index bfb828fb7ee431c76c46206257063fc5e5172683..7c00ae98cd374d6eaf1a1d40d7d428d97c755583 100644 --- a/docs/program-logic.tex +++ b/docs/program-logic.tex @@ -161,13 +161,13 @@ This can be instantiated, for example, with ownership of an authoritative RA to Finally, weakest precondition takes a parameter $\stuckness \in \set{\NotStuck, \MaybeStuck}$ indicating whether program execution is allowed to get stuck. \begin{align*} - \textdom{wp}_\stuckness \eqdef{}& \MU \textdom{wp}. \Lam \mask, \expr, \pred. \\ + \textdom{wp}(\stateinterp, \stuckness) \eqdef{}& \MU \textdom{wp\any rec}. \Lam \mask, \expr, \pred. \\ & (\Exists\val. \toval(\expr) = \val \land \pvs[\mask] \pred(\val)) \lor {}\\ & \Bigl(\toval(\expr) = \bot \land \All \state. \stateinterp(\state) \vsW[\mask][\emptyset] {}\\ &\qquad (s = \NotStuck \Ra \red(\expr, \state)) * \later\All \expr', \state', \vec\expr. (\expr, \state \step \expr', \state', \vec\expr) \vsW[\emptyset][\mask] {}\\ - &\qquad\qquad \stateinterp(\state') * \textdom{wp}(\mask, \expr', \pred) * \Sep_{\expr'' \in \vec\expr} \textdom{wp}(\top, \expr'', \Lam \any. \TRUE)\Bigr) \\ + &\qquad\qquad \stateinterp(\state') * \textdom{wp\any rec}(\mask, \expr', \pred) * \Sep_{\expr'' \in \vec\expr} \textdom{wp\any rec}(\top, \expr'', \Lam \any. \TRUE)\Bigr) \\ % (* value case *) - \wpre\expr[\stuckness;\mask]{\Ret\val. \prop} \eqdef{}& \textdom{wp}_\stuckness(\mask, \expr, \Lam\val.\prop) + \wpre[\stateinterp]\expr[\stuckness;\mask]{\Ret\val. \prop} \eqdef{}& \textdom{wp}(\stateinterp,\stuckness)(\mask, \expr, \Lam\val.\prop) \end{align*} If we leave away the mask $\mask$, we assume it to default to $\top$. If we leave away the stuckness $\stuckness$, it defaults to $\NotStuck$.