Skip to content
Snippets Groups Projects
Commit 3cf0a5fc authored by Ralf Jung's avatar Ralf Jung
Browse files

give some derived proof rules

parent 494f0357
No related branches found
No related tags found
No related merge requests found
\section{Derived proof rules} \section{Derived proof rules and other constructions}
\subsection{Base logic} \subsection{Base logic}
\ralf{Give the most important derived rules.} We collect here some important and frequently used derived proof rules.
\begin{mathparpagebreakable}
\infer{}
{\prop \Ra \propB \proves \prop \wand \propB}
\infer{}
{\prop * \Exists\var.\propB \Lra \Exists\var. \prop * \propB}
\infer{}
{\prop * \Exists\var.\propB \proves \Exists\var. \prop * \propB}
\infer{}
{\always(\prop*\propB) \Lra \always\prop * \always\propB}
\infer{}
{\always(\prop \Ra \propB) \proves \always\prop \Ra \always\propB}
\infer{}
{\always(\prop \wand \propB) \proves \always\prop \wand \always\propB}
\infer{}
{\always(\prop \wand \propB) \Lra \always(\prop \Ra \propB)}
\infer{}
{\later(\prop \Ra \propB) \proves \later\prop \Ra \later\propB}
\infer{}
{\later(\prop \wand \propB) \proves \later\prop \wand \later\propB}
\infer
{\pfctx, \later\prop \proves \prop}
{\pfctx \proves \prop}
\end{mathparpagebreakable}
\paragraph{Persistent assertions.} \paragraph{Persistent assertions.}
\begin{defn} \begin{defn}
...@@ -40,8 +72,6 @@ We can show that the following additional closure properties hold for timeless a ...@@ -40,8 +72,6 @@ We can show that the following additional closure properties hold for timeless a
\subsection{Program logic} \subsection{Program logic}
\ralf{Sync this with Coq.}
Hoare triples and view shifts are syntactic sugar for weakest (liberal) preconditions and primitive view shifts, respectively: Hoare triples and view shifts are syntactic sugar for weakest (liberal) preconditions and primitive view shifts, respectively:
\[ \[
\hoare{\prop}{\expr}{\Ret\val.\propB}[\mask] \eqdef \always{(\prop \Ra \wpre{\expr}{\lambda\Ret\val.\propB}[\mask])} \hoare{\prop}{\expr}{\Ret\val.\propB}[\mask] \eqdef \always{(\prop \Ra \wpre{\expr}{\lambda\Ret\val.\propB}[\mask])}
...@@ -169,12 +199,9 @@ The following rules can be derived for Hoare triples. ...@@ -169,12 +199,9 @@ The following rules can be derived for Hoare triples.
{\hoare{\FALSE}{\expr}{\Ret \val. \prop}[\mask]} {\hoare{\FALSE}{\expr}{\Ret \val. \prop}[\mask]}
\end{mathparpagebreakable} \end{mathparpagebreakable}
\clearpage \subsection{Global Functor and ghost ownership}
\section{Derived constructions} \ralf{Describe this.}
In this section we describe some derived constructions that are generally useful and language-independent.
\ralf{Describe at least global monoid and invariant namespaces.}
% \subsection{Global monoid} % \subsection{Global monoid}
% Hereinafter we assume the global monoid (served up as a parameter to Iris) is obtained from a family of monoids $(M_i)_{i \in I}$ by first applying the construction for finite partial functions to each~(\Sref{sec:fpfunm}), and then applying the product construction~(\Sref{sec:prodm}): % Hereinafter we assume the global monoid (served up as a parameter to Iris) is obtained from a family of monoids $(M_i)_{i \in I}$ by first applying the construction for finite partial functions to each~(\Sref{sec:fpfunm}), and then applying the product construction~(\Sref{sec:prodm}):
...@@ -206,6 +233,9 @@ In this section we describe some derived constructions that are generally useful ...@@ -206,6 +233,9 @@ In this section we describe some derived constructions that are generally useful
% {\timeless{\ownGhost\gname{\melt : M_i}}} % {\timeless{\ownGhost\gname{\melt : M_i}}}
% \end{mathpar} % \end{mathpar}
\subsection{Invariant identifier namespaces}
\ralf{Describe this.}
% \subsection{STSs with interpretation}\label{sec:stsinterp} % \subsection{STSs with interpretation}\label{sec:stsinterp}
% Building on \Sref{sec:stsmon}, after constructing the monoid $\STSMon{\STSS}$ for a particular STS, we can use an invariant to tie an interpretation, $\pred : \STSS \to \Prop$, to the STS's current state, recovering CaReSL-style reasoning~\cite{caresl}. % Building on \Sref{sec:stsmon}, after constructing the monoid $\STSMon{\STSS}$ for a particular STS, we can use an invariant to tie an interpretation, $\pred : \STSS \to \Prop$, to the STS's current state, recovering CaReSL-style reasoning~\cite{caresl}.
......
...@@ -460,7 +460,7 @@ This is entirely standard. ...@@ -460,7 +460,7 @@ This is entirely standard.
{\timeless{\ownGGhost\melt}} {\timeless{\ownGGhost\melt}}
\infer{} \infer{}
{}\timeless{\ownPhys\state} {\timeless{\ownPhys\state}}
\infer \infer
{\vctx \proves \timeless{\propB}} {\vctx \proves \timeless{\propB}}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment