Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
sgdt
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
gradual-typing
sgdt
Commits
2a6c18d6
Commit
2a6c18d6
authored
1 year ago
by
Eric Giovannini
Browse files
Options
Downloads
Patches
Plain Diff
begin description of denotational model for intensional gradual typing
parent
3ca76f60
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
paper-new/defs.tex
+7
-1
7 additions, 1 deletion
paper-new/defs.tex
paper-new/denotational-model.tex
+292
-0
292 additions, 0 deletions
paper-new/denotational-model.tex
paper-new/paper.tex
+3
-0
3 additions, 0 deletions
paper-new/paper.tex
with
302 additions
and
1 deletion
paper-new/defs.tex
+
7
−
1
View file @
2a6c18d6
...
...
@@ -140,4 +140,10 @@
\newcommand
{
\wlp
}{
w
_
l
^
p
}
\newcommand
{
\sem
}
[1]
{
\llbracket
{
#1
}
\rrbracket
}
\newcommand
{
\semgl
}
[1]
{{
\sem
{
#1
}}^
\text
{
gl
}}
\ No newline at end of file
\newcommand
{
\semgl
}
[1]
{{
\sem
{
#1
}}^
\text
{
gl
}}
% Denotational model
\newcommand
{
\ptb
}{
\text
{
ptb
}}
\newcommand
{
\push
}{
\text
{
push
}}
\newcommand
{
\pull
}{
\text
{
pull
}}
This diff is collapsed.
Click to expand it.
paper-new/denotational-model.tex
0 → 100644
+
292
−
0
View file @
2a6c18d6
\section
{
A Denotational Model for Intensional Gradual Typing
}
In this section we model intensional gradual typing in a suitable double category.
We construct a (thin) double category
$
\mathsf
{
IGTT
}$
as follows.
% First, we fix a set $D$ with a partial order $\le_D$ and bisimilarity relation $\bisim_D$.
% This is intended to model the dynamic type. Now we define the double category:
\begin{itemize}
\item
\textbf
{
Objects
}
: An object consists of the following data:
\begin{itemize}
\item
A double poset
$
X
$
, i.e., a set
$
X
$
equipped with a partial order
$
\le
_
X
$
and a reflexive, symmetric ``bisimilarity'' relation
$
\bisim
_
X
$
.
\item
Two commutative monoids of perturbations
$
P
_
V
$
and
$
P
_
C
$
with homomorphisms
\begin{align*}
\ptb
_
V
&
: P
_
V
\to
\{
f : X
\to
_
m X
\mid
f
\bisim
\id
\}
\\
\ptb
_
C
&
: P
_
C
\to
\{
f : X
\to
_
m
\li
X
\mid
f
\bisim
\eta
\}
\end{align*}
(where composition in the latter monoid of functions is given by Kleisli composition).
\end{itemize}
\item
\textbf
{
Vertical arrows
}
: An vertical arrow from
$
(
X, P
_
V
^
X, P
_
C
^
X
)
$
to
$
(
Y, P
_
V
^
Y, P
_
C
^
Y
)
$
is
a function
$
f : X
\to
Y
$
that is
\emph
{
monotone
}
(preserves ordering) and preserves the bisimilarity relation.
% that preserves ordering and bisimilarity.
\item
\textbf
{
Horizontal arrows
}
: A horizontal arrow from
$
(
X, P
_
V
^
X, P
_
C
^
X
)
$
to
$
(
Y, P
_
V
^
Y, P
_
C
^
Y
)
$
consists of:
\begin{itemize}
\item
A relation
$
R : X
\nrightarrow
Y
$
that is antitone with respect to
$
\le
_
X
$
and
monotone with respect to
$
\le
_
Y
$
.
\item
An embedding
$
e
_{
XY
}
: X
\to
_
m Y
$
preserving ordering and bisimilarity.
\item
A projection
$
p
_{
XY
}
: Y
\to
_
m
\li
X
$
preserving ordering and bisimilarity.
\end{itemize}
such that (1)
$
R
$
is
\emph
{
quasi-representable
}
by
$
e
_{
XY
}$
and
$
p
_{
XY
}$
, and
(2)
$
R
$
satisfies the
\emph
{
push-pull
}
property.
\vspace
{
3ex
}
The former means that there are distinguished elements
$
\delta
^{
l,e
}
\in
P
_
V
^
X
$
,
$
\delta
^{
r,e
}
\in
P
_
V
^
Y
$
,
$
\delta
^{
l,p
}
\in
P
_
C
^
X
$
and
$
\delta
^{
r,p
}
\in
P
_
C
^
Y
$
such that the following squares commute:
\begin{center}
\begin{tabular}
{
c | c
}
\hline
\hspace
{
3em
}
% UpL
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiWSJdLFsxLDAsIlkiXSxbMSwxLCJZIl0sWzAsMiwiUiIsMCx7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzEsMywiXFxsZV9ZIiwyLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiYmFycmVkIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMCwxLCJlX3tYWX0iLDJdLFsyLDMsIlxccHRiX1ZeWShcXGRlbHRhXntyLGV9KSJdLFs2LDcsIlxcbHRkeW4iLDEseyJzaG9ydGVuIjp7InNvdXJjZSI6MjAsInRhcmdldCI6MjB9LCJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJub25lIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XV0=
\begin{tikzcd}
[ampersand replacement=
\&
]
X
\&
Y
\\
Y
\&
Y
\arrow
["R", "\shortmid"{marking}, no head, from=1-1, to=1-2]
\arrow
["{\le_Y}"', "\shortmid"{marking}, no head, from=2-1, to=2-2]
\arrow
[""{name=0, anchor=center, inner sep=0}, "{e_{XY}}"', from=1-1, to=2-1]
\arrow
[""{name=1, anchor=center, inner sep=0}, "{\ptb_V^Y(\delta^{r,e})}", from=1-2, to=2-2]
\arrow
["\ltdyn"{description}, draw=none, from=0, to=1]
\end{tikzcd}
&
% UpR
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiWCJdLFsxLDAsIlgiXSxbMSwxLCJZIl0sWzAsMSwiXFxwdGJfVl5YKFxcZGVsdGFee2wsZX0pIiwyXSxbMiwzLCJlX3tYWX0iXSxbMSwzLCJSIiwyLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiYmFycmVkIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMCwyLCJcXGxlX1giLDAseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJiYXJyZWQifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFs0LDUsIlxcbHRkeW4iLDEseyJzaG9ydGVuIjp7InNvdXJjZSI6MjAsInRhcmdldCI6MjB9LCJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJub25lIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XV0=
\begin{tikzcd}
[ampersand replacement=
\&
]
X
\&
X
\\
X
\&
Y
\arrow
[""{name=0, anchor=center, inner sep=0}, "{\ptb_V^X(\delta^{l,e})}"', from=1-1, to=2-1]
\arrow
[""{name=1, anchor=center, inner sep=0}, "{e_{XY}}", from=1-2, to=2-2]
\arrow
["R"', "\shortmid"{marking}, no head, from=2-1, to=2-2]
\arrow
["{\le_X}", "\shortmid"{marking}, no head, from=1-1, to=1-2]
\arrow
["\ltdyn"{description}, draw=none, from=0, to=1]
\end{tikzcd}
\\
\hline
% DnR
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzEsMCwiWSJdLFswLDEsIkxYIl0sWzEsMSwiTFgiXSxbMCwyLCJcXHB0Yl9DXlgoXFxkZWx0YV57bCxwfSkiLDJdLFsxLDMsInBfe1hZfSJdLFswLDEsIlIiLDAseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJiYXJyZWQifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFsyLDMsIlxcbGVfe0xYfSIsMix7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzQsNSwiXFxsdGR5biIsMSx7InNob3J0ZW4iOnsic291cmNlIjoyMCwidGFyZ2V0IjoyMH0sInN0eWxlIjp7ImJvZHkiOnsibmFtZSI6Im5vbmUifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dXQ==
\begin{tikzcd}
[ampersand replacement=
\&
]
X
\&
Y
\\
LX
\&
LX
\arrow
[""{name=0, anchor=center, inner sep=0}, "{\ptb_C^X(\delta^{l,p})}"', from=1-1, to=2-1]
\arrow
[""{name=1, anchor=center, inner sep=0}, "{p_{XY}}", from=1-2, to=2-2]
\arrow
["R", "\shortmid"{marking}, no head, from=1-1, to=1-2]
\arrow
["{\le_{LX}}"', "\shortmid"{marking}, no head, from=2-1, to=2-2]
\arrow
["\ltdyn"{description}, draw=none, from=0, to=1]
\end{tikzcd}
&
\hspace
{
3em
}
% DnL
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJZIl0sWzEsMCwiWSJdLFswLDEsIkxYIl0sWzEsMSwiTFkiXSxbMCwxLCJcXGxlX1kiLDAseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJiYXJyZWQifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDIsInBfe1hZfSIsMl0sWzEsMywiXFxwdGJfQ15ZKFxcZGVsdGFee3IscH0pIl0sWzIsMywiTFIiLDIseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJiYXJyZWQifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFs1LDYsIlxcbHRkeW4iLDEseyJzaG9ydGVuIjp7InNvdXJjZSI6MjAsInRhcmdldCI6MjB9LCJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJub25lIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XV0=
\begin{tikzcd}
[ampersand replacement=
\&
]
Y
\&
Y
\\
LX
\&
LY
\arrow
["{\le_Y}", "\shortmid"{marking}, no head, from=1-1, to=1-2]
\arrow
[""{name=0, anchor=center, inner sep=0}, "{p_{XY}}"', from=1-1, to=2-1]
\arrow
[""{name=1, anchor=center, inner sep=0}, "{\ptb_C^Y(\delta^{r,p})}", from=1-2, to=2-2]
\arrow
["LR"', "\shortmid"{marking}, no head, from=2-1, to=2-2]
\arrow
["\ltdyn"{description}, draw=none, from=0, to=1]
\end{tikzcd}
\\
\hline
\end{tabular}
\end{center}
(Here,
$
LR
$
is the lock step lifting of the relation
$
R
$
.)
\vspace
{
3ex
}
The push-pull property is defined as follows:
\begin{itemize}
\item
Given any perturbation
$
\delta
_
X
\in
P
_
V
^
X
$
, we can
\emph
{
push
}
it forward along
$
R
$
to a
perturbation
$
\push
(
\delta
_
X
)
\in
P
_
V
^
Y
$
, such that
$
\ptb
_
V
^
X
(
\delta
_
X
)
\le
\ptb
_
V
^
Y
(
\push
(
\delta
_
X
))
$
.
\item
Conversely, given any perturbation
$
\delta
_
Y
\in
P
_
V
^
Y
$
, we can
\emph
{
pull
}
it back along
$
R
$
to a perturbation
$
\pull
(
\delta
_
Y
)
\in
P
_
V
^
X
$
, such that
$
\ptb
_
V
^
X
(
\pull
(
\delta
_
Y
))
\le
\ptb
_
V
^
Y
(
\delta
_
Y
)
$
.
\item
Likewise, we can push any perturbation
$
\delta
_
X
\in
P
_
C
^
X
$
along
$
LR
$
to get a perturbation
$
\push
(
\delta
_
X
)
\in
P
_
C
^
Y
$
such that
$
\ptb
_
C
^
X
(
\delta
_
X
)
\le
\ptb
_
C
^
Y
(
\push
(
\delta
_
X
))
$
.
\item
And similarly, we can pull a perturbation in
$
P
_
C
^
Y
$
along
$
LR
$
to a perturbation in
$
P
_
C
^
X
$
satisfying the analogous property.
\end{itemize}
\textbf
{
TODO: push and pull might need to be monoid homomorphisms
}
\item
\textbf
{
Two-cells
}
: Let
$
f : W
\to
X
$
and
$
g : Y
\to
Z
$
and let
$
R : W
\nrightarrow
Y
$
and
$
S : X
\nrightarrow
Z
$
. We define
$
f
\le
g
$
to mean for all
$
(
w, y
)
\in
R
$
, we have
$
(
f
(
w
)
, g
(
y
))
\in
S
$
. This is depicted in the square below:
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJXIl0sWzAsMSwiWCJdLFsxLDAsIlkiXSxbMSwxLCJaIl0sWzAsMiwiUiIsMCx7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzEsMywiUyIsMix7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsMSwiZiIsMl0sWzIsMywiZyJdLFs0LDUsIlxcc3FzdWJzZXRlcSIsMSx7InNob3J0ZW4iOnsic291cmNlIjoyMCwidGFyZ2V0IjoyMH0sInN0eWxlIjp7ImJvZHkiOnsibmFtZSI6Im5vbmUifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dXQ==
\[
\begin
{
tikzcd
}
[
ampersand replacement
=
\&
]
W
\&
Y
\\
X
\&
Z
\arrow
[
""
{
name
=
0
, anchor
=
center, inner sep
=
0
}
, "R", "
\shortmid
"
{
marking
}
, no head, from
=
1
-
1
, to
=
1
-
2
]
\arrow
[
""
{
name
=
1
, anchor
=
center, inner sep
=
0
}
, "S"', "
\shortmid
"
{
marking
}
, no head, from
=
2
-
1
, to
=
2
-
2
]
\arrow
[
"f"', from
=
1
-
1
, to
=
2
-
1
]
\arrow
[
"g", from
=
1
-
2
, to
=
2
-
2
]
\arrow
[
"
\sqsubseteq
"
{
description
}
, draw
=
none, from
=
0
, to
=
1
]
\end
{
tikzcd
}\]
\end{itemize}
The category satisfies the following additional properties:
\begin{itemize}
\item
\emph
{
Existence of Dyn
}
: There is an object
$
D
$
with the property that for any
object
$
X
$
, there is a horizontal arrow
$
X
\nrightarrow
D
$
.
The underlying double poset is defined by guarded recursion as the solution to
\[
D
\cong
\mathbb
{
N
}
\,
+
\later
\hspace
{
-
0
.
5
ex
}
(
D
\to
_
m
\li
D
)
.
\]
\textbf
{
TODO: define the perturbations for Dyn and show there is a horizontal arrow
$
X
\nrightarrow
D
$
for all
$
X
$
.
}
\item
\emph
{
Thinness
}
: There is at most one two-cell for any given square.
% \item \emph{Push-Pull}: Let $X$ and $Y$ be objects, and let $R : X \nrightarrow Y$.
% \begin{itemize}
% \item Given any perturbation $\delta_X \in P_V^X$, we can \emph{push} it forward along $R$ to a
% perturbation $\push(\delta_X) \in P_V^Y$, such that $\ptb_V^X(\delta_X) \le \ptb_V^Y(\push(\delta_X))$.
% \item Conversely, given any perturbation $\delta_Y \in P_V^Y$, we can \emph{pull} it back along $R$
% to a perturbation $\pull(\delta_Y) \in P_V^X$, such that $\ptb_V^X(\pull(\delta_Y)) \le \ptb_V^Y(\delta_Y)$.
% \item Likewise, we can push any perturbation $\delta_X \in P_C^X$ along $L\, R$
% (the lock-step lifting of the relation $R$) to get a perturbation $\push(\delta_X) \in P_C^Y$ such that
% $\ptb_C^X(\delta_X) \le \ptb_C^Y(\push(\delta_X))$.
% \item And similarly we can pull a perturbation in $P_C^Y$ to a perturbation in $P_C^X$
% satisfying the analogous property.
% \end{itemize}
\end{itemize}
% Composability of embedding and projections
We need to verify that this forms a thin double category.
\begin{itemize}
\item
\emph
{
Horizontal identity morphism
}
:
Let
$
X
$
be an object. We take
$
R
$
to be
$
\le
_
X
$
(the ordering relation on
$
X
$
),
which is trivially antitone and monotone with respect to itself.
We let
$
e
_{
XX
}
=
\id
$
and
$
p
_{
XX
}
=
\eta
$
. These clearly preserve the
ordering and bisimilarity.
\vspace
{
3ex
}
We first need to show that
$
R
$
is quasi-representable.
We prove the UpR rule; the others are similar.
We need to specify a distinguished element
$
\delta
^{
l,e
}
\in
P
_
V
^
X
$
such that
the following square commutes:
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiWCJdLFsxLDAsIlgiXSxbMSwxLCJYIl0sWzAsMSwiXFxwdGJfVl5YKFxcZGVsdGFee2wsZX0pIiwyXSxbMiwzLCJlX3tYWH0gPSBcXGlkIl0sWzAsMiwiXFxsZV9YIiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiYmFycmVkIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMSwzLCJcXGxlX1giLDIseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJiYXJyZWQifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dXQ==
\[
\begin
{
tikzcd
}
[
ampersand replacement
=
\&
]
X
\&
X
\\
X
\&
X
\arrow
[
"
{
\ptb
_
V
^
X
(
\delta
^{
l,e
}
)
}
"', from
=
1
-
1
, to
=
2
-
1
]
\arrow
[
"
{
e
_{
XX
}
=
\id
}
", from
=
1
-
2
, to
=
2
-
2
]
\arrow
[
"
{
\le
_
X
}
", "
\shortmid
"
{
marking
}
, no head, from
=
1
-
1
, to
=
1
-
2
]
\arrow
[
"
{
\le
_
X
}
"', "
\shortmid
"
{
marking
}
, no head, from
=
2
-
1
, to
=
2
-
2
]
\end
{
tikzcd
}\]
Taking
$
\delta
^{
l,e
}
=
\id
$
(the identity of the monoid), we observe that since
$
\ptb
_
V
^
X
$
is a homomorphism of monoids, we have
$
\ptb
_
V
^
X
(
\id
)
=
\id
$
.
Now it is clear that the above square commutes.
\vspace
{
3ex
}
We also need to show that
$
R
$
satisfies the four push-pull properties.
We show one; the others are similar. Let
$
\delta
_
X
\in
P
_
V
^
X
$
.
We need to define
$
\push
(
\delta
_
X
)
\in
P
_
V
^
X
$
such that the following square commutes:
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiWCJdLFsxLDAsIlgiXSxbMSwxLCJYIl0sWzAsMiwiXFxsZV9YIiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiYmFycmVkIn0sImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMSwzLCJcXGxlX1giLDIseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJiYXJyZWQifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDEsIlxccHRiX1ZeWChcXGRlbHRhX1gpIiwyXSxbMiwzLCJcXHB0Yl9WXlgoXFxwdXNoKFxcZGVsdGFfWCkpIiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV1d
\[
\begin
{
tikzcd
}
[
ampersand replacement
=
\&
]
X
\&
X
\\
X
\&
X
\arrow
[
"
{
\le
_
X
}
", "
\shortmid
"
{
marking
}
, no head, from
=
1
-
1
, to
=
1
-
2
]
\arrow
[
"
{
\le
_
X
}
"', "
\shortmid
"
{
marking
}
, no head, from
=
2
-
1
, to
=
2
-
2
]
\arrow
[
"
{
\ptb
_
V
^
X
(
\delta
_
X
)
}
"', from
=
1
-
1
, to
=
2
-
1
]
\arrow
[
"
{
\ptb
_
V
^
X
(
\push
(
\delta
_
X
))
}
", dashed, from
=
1
-
2
, to
=
2
-
2
]
\end
{
tikzcd
}\]
Let
$
\push
(
\delta
_
X
)
=
\delta
_
X
$
. We need to show that for
$
x
\le
_
X x'
$
,
we have
$
\ptb
_
V
^
X
(
\delta
_
X
)(
x
)
\le
\ptb
_
V
^
X
(
\delta
_
X
)(
x'
)
$
, which holds because
$
\ptb
_
V
^
X
(
\delta
_
X
)
$
is monotone with respect to
$
\le
_
X
$
.
\item
\emph
{
Horizontal composition
}
:
Let
$
R : X
\nrightarrow
Y
$
and
$
S : Y
\nrightarrow
Z
$
.
We define
$
e
_{
XZ
}
=
e
_{
YZ
}
\circ
e
_{
XY
}$
and
$
p
_{
XZ
}
=
\ext
{
p
_{
XY
}}{}
\circ
p
_{
YZ
}$
.
We define the distinguished perturbations in the representability rules as follows:
\begin{align*}
\delta
_{
R
\circ
S
}^{
l,e
}
&
=
\pull
_
R(
\delta
_
S
^{
l,e
}
)
\cdot
\delta
_
R
^{
l,e
}
\\
\delta
_{
R
\circ
S
}^{
r,e
}
&
=
\delta
_
S
^{
r,e
}
\cdot
\push
_
S(
\delta
_
R
^{
r,e
}
)
\\
\delta
_{
R
\circ
S
}^{
l,p
}
&
=
\delta
_
R
^{
l,p
}
\cdot
\pull
_{
LR
}
(
\delta
_
S
^{
l,p
}
)
\\
\delta
_{
R
\circ
S
}^{
r,p
}
&
=
\push
_{
LS
}
(
\delta
_
R
^{
r,p
}
)
\cdot
\delta
_
S
^{
r,p
}
\end{align*}
where
$
\cdot
$
denotes composition in the appropriate monoid of perturbations.
We can then show that the four quasi-representability rules are valid with these definitions.
\textbf
{
TODO show one or two of the cases
}
\vspace
{
3ex
}
We also need to show that the push-pull rules hold of the composition
$
R
\circ
S
$
.
This follows from the fact that they hold for both
$
R
$
and
$
S
$
.
Specifically, we define
\begin{align*}
\push
_{
R
\circ
S
}
(
\delta
^
X)
&
=
\push
_
S(
\push
_
R(
\delta
^
X))
\\
\pull
_{
R
\circ
S
}
(
\delta
^
Z)
&
=
\pull
_
R(
\pull
_
S(
\delta
^
Z))
\\
\push
_{
L(R
\circ
S)
}
(
\delta
^
X)
&
=
\push
_{
LS
}
(
\push
_{
LR
}
(
\delta
^
X))
\\
\pull
_{
L(R
\circ
S)
}
(
\delta
^
Z)
&
=
\pull
_{
LR
}
(
\pull
_{
LS
}
(
\delta
^
Z))
\end{align*}
Then we can verify that the relevant push-pull inequalities hold using the above definitions.
\textbf
{
TODO maybe show one of the cases
}
\item
\emph
{
Identity two-cells
}
:
The horizontal identity two-cells have the form
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiWSJdLFsxLDAsIlgiXSxbMSwxLCJZIl0sWzAsMSwiZiIsMl0sWzIsMywiZiJdLFswLDIsIlxcbGVfWCJdLFsxLDMsIlxcbGVfWSIsMl0sWzQsNSwiXFxsdGR5biIsMSx7InNob3J0ZW4iOnsic291cmNlIjoyMCwidGFyZ2V0IjoyMH0sInN0eWxlIjp7ImJvZHkiOnsibmFtZSI6Im5vbmUifSwiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dXQ==
\[
\begin
{
tikzcd
}
[
ampersand replacement
=
\&
]
X
\&
X
\\
Y
\&
Y
\arrow
[
""
{
name
=
0
, anchor
=
center, inner sep
=
0
}
, "f"', from
=
1
-
1
, to
=
2
-
1
]
\arrow
[
""
{
name
=
1
, anchor
=
center, inner sep
=
0
}
, "f", from
=
1
-
2
, to
=
2
-
2
]
\arrow
[
"
{
\le
_
X
}
", from
=
1
-
1
, to
=
1
-
2
]
\arrow
[
"
{
\le
_
Y
}
"', from
=
2
-
1
, to
=
2
-
2
]
\arrow
[
"
\ltdyn
"
{
description
}
, draw
=
none, from
=
0
, to
=
1
]
\end
{
tikzcd
}\]
This square commutes because
$
f
$
is monotone with respect to the ordering relation.
The vertical two-cells have the form
% https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiWCJdLFsxLDAsIlkiXSxbMSwxLCJZIl0sWzAsMiwiUiIsMCx7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzEsMywiUiIsMCx7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsMSwiXFxpZF9YIiwyXSxbMiwzLCJcXGlkX1kiXSxbNiw3LCJcXGx0ZHluIiwxLHsic2hvcnRlbiI6eyJzb3VyY2UiOjIwLCJ0YXJnZXQiOjIwfSwic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoibm9uZSJ9LCJoZWFkIjp7Im5hbWUiOiJub25lIn19fV1d
\[
\begin
{
tikzcd
}
[
ampersand replacement
=
\&
]
X
\&
Y
\\
X
\&
Y
\arrow
[
"R", "
\shortmid
"
{
marking
}
, no head, from
=
1
-
1
, to
=
1
-
2
]
\arrow
[
"R", "
\shortmid
"
{
marking
}
, no head, from
=
2
-
1
, to
=
2
-
2
]
\arrow
[
""
{
name
=
0
, anchor
=
center, inner sep
=
0
}
, "
{
\id
_
X
}
"', from
=
1
-
1
, to
=
2
-
1
]
\arrow
[
""
{
name
=
1
, anchor
=
center, inner sep
=
0
}
, "
{
\id
_
Y
}
", from
=
1
-
2
, to
=
2
-
2
]
\arrow
[
"
\ltdyn
"
{
description
}
, draw
=
none, from
=
0
, to
=
1
]
,
\end
{
tikzcd
}\]
which commutes trivially.
\item
\emph
{
Composition of two-cells
}
:
Two-cells compose vertically and horizontally, which follows from the definition
definition of a two-cell in this category.
\textbf
{
TODO: elaborate
}
\end{itemize}
\vspace
{
3ex
}
\textbf
{
Kleisli internal hom: TODO
}
% The arrow => takes a value type and an algebra and constructs an algebra
\ No newline at end of file
This diff is collapsed.
Click to expand it.
paper-new/paper.tex
+
3
−
0
View file @
2a6c18d6
...
...
@@ -8,6 +8,7 @@
\usepackage
{
wrapfig
}
\usepackage
{
fancyvrb
}
\usepackage
{
comment
}
\usepackage
{
array
}
...
...
@@ -126,6 +127,8 @@
\input
{
graduality
}
\input
{
denotational-model
}
% \section{Discussion}\label{sec:discussion}
% \subsection{Synthetic Ordering}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment