@@ -120,7 +120,7 @@ to express that $\sigfn$ is a function symbol with the indicated arity.
\dave{Say something not-too-shabby about adequacy: We don't spell out what it means.}
\paragraph{Syntax.}
Iris syntax is built up from a signature $\SigNat$ and a countably infinite set $\textdom{Var}$ of variables (ranged over by metavariables $x$, $y$, $z$, and $\pvar$):
Iris syntax is built up from a signature $\Sig$ and a countably infinite set $\textdom{Var}$ of variables (ranged over by metavariables $x$, $y$, $z$):
\newcommand{\unitterm}{()}%
\newcommand{\unitsort}{1}% \unit is bold.
\begin{align*}
...
...
@@ -145,9 +145,9 @@ Iris syntax is built up from a signature $\SigNat$ and a countably infinite set
\prop * \prop\mid
\prop\wand\prop\mid
\\&
\MU\pvar. \pred\mid
\Existsx:\sort. \prop\mid
\Allx:\sort. \prop\mid
\MU\var. \pred\mid
\Exists\var:\sort. \prop\mid
\All\var:\sort. \prop\mid
\\&
\knowInv{\term}{\prop}\mid
\ownGGhost{\term}\mid
...
...
@@ -164,7 +164,7 @@ Iris syntax is built up from a signature $\SigNat$ and a countably infinite set
\sort\times\sort\mid
\sort\to\sort
\end{align*}
Recursive predicates must be \emph{guarded}: in $\MU\pvar. \pred$, the variable $\pvar$ can only appear under the later $\later$ modality.
Recursive predicates must be \emph{guarded}: in $\MU\var. \pred$, the variable $\var$ can only appear under the later $\later$ modality.
\paragraph{Metavariable conventions.}
We introduce additional metavariables ranging over terms and generally let the choice of metavariable indicate the term's sort:
...
...
@@ -196,13 +196,13 @@ We omit type annotations in binders, when the type is clear from context.
\subsection{Types}\label{sec:types}
Iris terms are simply-typed.
The judgment $\vctx\proves_\SigNat\wtt{\term}{\sort}$ expresses that, in signature $\SigNat$ and variable context $\vctx$, the term $\term$ has sort $\sort$.
The judgment $\vctx\proves_\Sig\wtt{\term}{\sort}$ expresses that, in signature $\Sig$ and variable context $\vctx$, the term $\term$ has sort $\sort$.
In giving the rules for this judgment, we omit the signature (which does not change).
A variable context, $\vctx= x_1:\sort_1, \dots, x_n:\sort_n$, declares a list of variables and their sorts.
In writing $\vctx, x:\sort$, we presuppose that $x$ is not already declared in $\vctx$.
The balance of our signature $\SigNat$ is interpreted as follows.
The balance of our signature $\Sig$ is interpreted as follows.
For each base type $\type$ not covered by the preceding table, we pick an object $X_\type$ in $\cal U$ and define
\[
\semSort{\type}\eqdef X_\type
\Sem{\type}\eqdef X_\type
\]
For each function symbol $\sigfn : \type_1, \dots, \type_n \to\type_{n+1}\in\SigFn$, we pick an arrow $\Sem{\sigfn} : \semSort{\type_1}\times\dots\times\semSort{\type_n}\to\semSort{\type_{n+1}}$ in $\cal U$.
For each function symbol $\sigfn : \type_1, \dots, \type_n \to\type_{n+1}\in\SigFn$, we pick an arrow $\Sem{\sigfn} : \Sem{\type_1}\times\dots\times\Sem{\type_n}\to\Sem{\type_{n+1}}$ in $\cal U$.
An environment $\vctx$ is interpreted as the set of