The base logic is parameterized by an arbitrary CMRA $\monoid$ having a unit.
The base logic is parameterized by an arbitrary CMRA $\monoid$ having a unit.
By \lemref{lem:cmra-unit-total-core}, this means that the core of $\monoid$ is a total function, so we will treat it as such in the following.
This defines the structure of resources that can be owned.
This defines the structure of resources that can be owned.
As usual for higher-order logics, you can furthermore pick a \emph{signature}$\Sig=(\SigType, \SigFn, \SigAx)$ to add more types, symbols and axioms to the language.
As usual for higher-order logics, you can furthermore pick a \emph{signature}$\Sig=(\SigType, \SigFn, \SigAx)$ to add more types, symbols and axioms to the language.
Notice that $\iProp$ is the semantic model of assertions for the logic described in \Sref{sec:base-logic} with $\Res$:
\[\Sem{\Prop}\eqdef\iProp=\UPred(\Res)\]
We thus obtain all the rules of \Sref{sec:base-logic}, and furthermore, we can use the maps $\wIso$ and $\wIso^{-1}$\emph{in the logic} to convert between logical assertions and the domain $\iPreProp$ which is used in the construction of $\Res$ -- so from elements of $\iPreProp$, we can construct elements of $\Sem{\textlog M}$, which are the elements that can be owned in our logic.
\ralf{TODO: Describe the pattern of only assuming some elements of the index family to indicate a particular functor.}
\ralf{TODO: Show the rules for ownership in this world.}
A \emph{language}$\Lang$ consists of a set \textdom{Expr} of \emph{expressions} (metavariable $\expr$), a set \textdom{Val} of \emph{values} (metavariable $\val$), and a set \textdom{State} of \emph{states} (metvariable $\state$) such that
A \emph{language}$\Lang$ consists of a set \textdom{Expr} of \emph{expressions} (metavariable $\expr$), a set \textdom{Val} of \emph{values} (metavariable $\val$), and a set \textdom{State} of \emph{states} (metvariable $\state$) such that
\begin{itemize}
\begin{itemize}
...
@@ -58,6 +59,7 @@ For any language $\Lang$, we define the corresponding thread-pool semantics.
...
@@ -58,6 +59,7 @@ For any language $\Lang$, we define the corresponding thread-pool semantics.
\clearpage
\clearpage
\section{Program Logic}
\section{Program Logic}
\label{sec:program-logic}
\ralf{TODO: Right now, this is a dump of all the things that moved out of the base...}
\ralf{TODO: Right now, this is a dump of all the things that moved out of the base...}
...
@@ -243,32 +245,7 @@ Notice that this is stronger than saying that the thread pool can reduce; we act
...
@@ -243,32 +245,7 @@ Notice that this is stronger than saying that the thread pool can reduce; we act
\subsection{Iris model}
\subsection{Iris model}
\paragraph{Semantic domain of assertions.}
\paragraph{Semantic domain of assertions.}
The first complicated task in building a model of full Iris is defining the semantic model of $\Prop$.
We start by defining the functor that assembles the CMRAs we need to the global resource CMRA: