Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Rodolphe Lepigre
Iris
Commits
6be9e689
Commit
6be9e689
authored
Mar 07, 2016
by
Ralf Jung
Browse files
docs: describe more algebra stuff
parent
f00f21a8
Changes
4
Hide whitespace changes
Inline
Side-by-side
algebra/cofe.v
View file @
6be9e689
...
...
@@ -89,6 +89,8 @@ Section cofe_mixin.
End
cofe_mixin
.
(** Discrete COFEs and Timeless elements *)
(* TODO RJ: On paper, I called these "discrete elements". I think that makes
more sense. *)
Class
Timeless
{
A
:
cofeT
}
(
x
:
A
)
:
=
timeless
y
:
x
≡
{
0
}
≡
y
→
x
≡
y
.
Arguments
timeless
{
_
}
_
{
_
}
_
_
.
Class
Discrete
(
A
:
cofeT
)
:
=
discrete_timeless
(
x
:
A
)
:
>
Timeless
x
.
...
...
docs/algebra.tex
View file @
6be9e689
...
...
@@ -18,7 +18,28 @@
\ralf
{
Copy the explanation from the paper, when that one is more polished.
}
\ralf
{
Describe non-expansive, contractive, category
$
\COFEs
$
, later, locally non-expansive/contractive, black later, discrete elements, discrete CMRAs.
}
\begin{defn}
An element
$
x
\in
A
$
of a COFE is called
\emph
{
discrete
}
if
\[
\All
y
\in
A. x
\nequiv
{
0
}
y
\Ra
x
=
y
\]
A COFE
$
A
$
is called
\emph
{
discrete
}
if all its elements are discrete.
\end{defn}
\begin{defn}
A function
$
f : A
\to
B
$
between two COFEs is
\emph
{
non-expansive
}
if
\[
\All
n, x
\in
A, y
\in
A. x
\nequiv
{
n
}
y
\Ra
f
(
x
)
\nequiv
{
n
}
f
(
y
)
\]
It is
\emph
{
contractive
}
if
\[
\All
n, x
\in
A, y
\in
A.
(
\All
m < n. x
\nequiv
{
m
}
y
)
\Ra
f
(
x
)
\nequiv
{
n
}
f
(
x
)
\]
\end{defn}
\begin{defn}
The category
$
\COFEs
$
consists of COFEs as objects, and non-expansive functions as arrows.
\end{defn}
Note that
$
\COFEs
$
is cartesian closed.
\begin{defn}
A functor
$
F :
\COFEs
\to
COFEs
$
is called
\emph
{
locally non-expansive
}
if its actions
$
F
_
1
$
on arrows is itself a non-expansive map.
Similarly,
$
F
$
is called
\emph
{
locally contractive
}
if
$
F
_
1
$
is a contractive map.
\end{defn}
\subsection
{
RA
}
...
...
@@ -91,17 +112,33 @@ This operation is needed to prove that $\later$ commutes with existential quanti
\end{mathpar}
(This assumes that the type
$
\type
$
is non-empty.)
\ralf
{
Describe monotone, category
$
\CMRAs
$
.
}
\begin{defn}
It is possible to do a
\emph
{
frame-preserving update
}
from
$
\melt
\in
\monoid
$
to
$
\meltsB
\subseteq
\monoid
$
, written
$
\melt
\mupd
\meltsB
$
, if
\[
\All
n,
\melt
_
f.
\melt
\mtimes
\melt
_
f
\in
\mval
_
n
\Ra
\Exists
\meltB
\in
\meltsB
.
\meltB
\mtimes
\melt
_
f
\in
\mval
_
n
\]
We further define
$
\melt
\mupd
\meltB
\eqdef
\melt
\mupd
\set\meltB
$
.
\end{defn}
Note that for RAs, this and the RA-based definition of a frame-preserving update coincide.
\ralf
{
Describe discrete CMRAs, and how they correspond to RAs.
}
\begin{defn}
A function
$
f : M
\to
N
$
between two CMRAs is
\emph
{
monotone
}
if it satisfies the following conditions:
\begin{enumerate}
\item
$
f
$
is non-expansive
\item
$
f
$
preserves validity:
\\
$
\All
n, x
\in
M. x
\in
\mval
_
n
\Ra
f
(
x
)
\in
\mval
_
n
$
\item
$
f
$
preserves CMRA inclusion:
\\
$
\All
x, y. x
\mincl
y
\Ra
f
(
x
)
\mincl
f
(
y
)
$
\end{enumerate}
\end{defn}
\begin{defn}
The category
$
\CMRAs
$
consists of CMRAs as objects, and monotone functions as arrows.
\end{defn}
Note that
$
\CMRAs
$
is a subcategory of
$
\COFEs
$
.
The notion of a locally non-expansive (or contractive) functor naturally generalizes to functors between these categories.
%%% Local Variables:
%%% mode: latex
...
...
docs/logic.tex
View file @
6be9e689
...
...
@@ -25,12 +25,15 @@ It does not matter whether they fork off an arbitrary expression.
\end{itemize}
\begin{defn}
[Context]
A function
$
\lctx
:
\textdom
{
Expr
}
\to
\textdom
{
Expr
}$
is a
\emph
{
context
}
if the following conditions are satisfied
\begin{align*}
\All\expr
.
&
\toval
(
\expr
) =
\bot
\Ra
\toval
(
\lctx
(
\expr
)) =
\bot
\tagH
{
lang-ctx-not-val
}
\\
\All
\expr
_
1,
\state
_
1,
\expr
_
2,
\state
_
2,
\expr
'.
&
\expr
_
1,
\state
_
1
\step
\expr
_
2,
\state
_
2,
\expr
'
\Ra
\lctx
(
\expr
_
1),
\state
_
1
\step
\lctx
(
\expr
_
2),
\state
_
2,
\expr
'
\tagH
{
lang-ctx-step
}
\\
\All
\expr
_
1',
\state
_
1,
\expr
_
2,
\state
_
2,
\expr
'.
&
\toval
(
\expr
_
1') =
\bot
\land
\lctx
(
\expr
_
1'),
\state
_
1
\step
\expr
_
2,
\state
_
2,
\expr
'
\Ra
\Exists\expr
_
2'.
\expr
_
2 =
\lctx
(
\expr
_
2')
\land
\expr
_
1',
\state
_
1
\step
\expr
_
2',
\state
_
2,
\expr
'
\tagH
{
lang-ctx-step-inv
}
\end{align*}
A function
$
\lctx
:
\textdom
{
Expr
}
\to
\textdom
{
Expr
}$
is a
\emph
{
context
}
if the following conditions are satisfied:
\begin{enumerate}
\item
$
\lctx
$
does not turn non-values into values:
\\
$
\All\expr
.
\toval
(
\expr
)
=
\bot
\Ra
\toval
(
\lctx
(
\expr
))
=
\bot
$
\item
One can perform reductions below
$
\lctx
$
:
\\
$
\All
\expr
_
1
,
\state
_
1
,
\expr
_
2
,
\state
_
2
,
\expr
'.
\expr
_
1
,
\state
_
1
\step
\expr
_
2
,
\state
_
2
,
\expr
'
\Ra
\lctx
(
\expr
_
1
)
,
\state
_
1
\step
\lctx
(
\expr
_
2
)
,
\state
_
2
,
\expr
'
$
\item
Reductions stay below
$
\lctx
$
until there is a value in the hole:
\\
$
\All
\expr
_
1
',
\state
_
1
,
\expr
_
2
,
\state
_
2
,
\expr
'.
\toval
(
\expr
_
1
'
)
=
\bot
\land
\lctx
(
\expr
_
1
'
)
,
\state
_
1
\step
\expr
_
2
,
\state
_
2
,
\expr
'
\Ra
\Exists\expr
_
2
'.
\expr
_
2
=
\lctx
(
\expr
_
2
'
)
\land
\expr
_
1
',
\state
_
1
\step
\expr
_
2
',
\state
_
2
,
\expr
'
$
\end{enumerate}
\end{defn}
\subsection
{
The concurrent language
}
...
...
@@ -62,6 +65,7 @@ To instantiate Iris, you need to define the following parameters:
\begin{itemize}
\item
A language
$
\Lang
$
\item
A locally contractive functor
$
\iFunc
:
\COFEs
\to
\CMRAs
$
defining the ghost state
\ralf
{$
\iFunc
$
also needs to have a single-unit.
}
\end{itemize}
\noindent
...
...
docs/model.tex
View file @
6be9e689
\section
{
Model and semantics
}
\ralf
{
What also needs to be done here: Define uPred and its later function; define black later; define the resource CMRA
}
The semantics closely follows the ideas laid out in~
\cite
{
catlogic
}
.
We just repeat some of the most important definitions here.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment