@@ -197,7 +197,7 @@ This is best demonstrated by giving some proof rules.
...
@@ -197,7 +197,7 @@ This is best demonstrated by giving some proof rules.
So let us first define the notion of ghost ownership that we use in this logic.
So let us first define the notion of ghost ownership that we use in this logic.
Assuming that the family of functors contains the functor $\Sigma_i$ at index $i$, and furthermore assuming that $\monoid_i =\Sigma_i(\iPreProp, \iPreProp)$, given some $\melt\in\monoid_i$ we define:
Assuming that the family of functors contains the functor $\Sigma_i$ at index $i$, and furthermore assuming that $\monoid_i =\Sigma_i(\iPreProp, \iPreProp)$, given some $\melt\in\monoid_i$ we define:
This is ownership of the pair (element of the product over all the functors) that has the empty finite partial function in all components \emph{except for} the component corresponding to index $i$, where we own the element $\melt$ at index $\gname$ in the finite partial function.
This is ownership of the pair (element of the product over all the functors) that has the empty finite partial function in all components \emph{except for} the component corresponding to index $i$, where we own the element $\melt$ at index $\gname$ in the finite partial function.
We can show the following properties for this form of ownership:
We can show the following properties for this form of ownership:
@@ -85,12 +85,20 @@ Furthermore, we assume that instances named $\gname_{\textmon{State}}$, $\gname_
...
@@ -85,12 +85,20 @@ Furthermore, we assume that instances named $\gname_{\textmon{State}}$, $\gname_
\paragraph{World Satisfaction.}
\paragraph{World Satisfaction.}
We can now define the assertion $W$ (\emph{world satisfaction}) which ensures that the enabled invariants are actually maintained:
We can now define the assertion $W$ (\emph{world satisfaction}) which ensures that the enabled invariants are actually maintained:
\begin{align*}
\begin{align*}
W \eqdef{}&\Exists I : \mathbb N \fpfn\Prop. \ownGhost{\gname_{\textmon{Inv}}}{\authfull\setComp{\iname\mapsto\aginj(\latertinj(\wIso(I(\iname))))}{\iname\in\dom(I)}} * \Sep_{\iname\in\dom(I)}\left( \later I(\iname) * \ownGhost{\gname_{\textmon{Dis}}}{\set{\iname}}\lor\ownGhost{\gname_{\textmon{En}}}{\set{\iname}}\right)
Next, we define \emph{view updates}, which are essentially the same as the resource updates of the base logic ($\Sref{sec:base-logic}$), except that they also have access to world satisfaction and can enable and disable invariants:
Next, we define \emph{view updates}, which are essentially the same as the resource updates of the base logic ($\Sref{sec:base-logic}$), except that they also have access to world satisfaction and can enable and disable invariants: