From c435da1c063b75042fa1e6f285977d13b20434e4 Mon Sep 17 00:00:00 2001 From: Leon Vatthauer Date: Wed, 17 Jul 2024 17:38:21 +0200 Subject: [PATCH] add agda refs --- .gitignore | 1 + img/agda.pdf | Bin 0 -> 1738 bytes main.pdf | Bin 331852 -> 0 bytes main.tex | 25 +- src/02_preliminaries.tex | 302 ++++--------- src/04_partiality-monads.tex | 408 ++--------------- src/05_iteration.tex | 836 ++--------------------------------- src/06_setoids.tex | 450 +------------------ src/titlepage.tex | 2 +- 9 files changed, 172 insertions(+), 1852 deletions(-) create mode 100644 img/agda.pdf delete mode 100644 main.pdf diff --git a/.gitignore b/.gitignore index 8c28d0f..e7798dd 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ agda/public/ .#* *~ _minted-main/ +main.pdf # AUTOGENERATED # All wildcards below this marker are used to remove generated files in # 'make clean' diff --git a/img/agda.pdf b/img/agda.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc59bf6bbf846460bd7b15d5570c3ec4024b514b GIT binary patch literal 1738 zcmY!laBlRG6aPsWg=?f!F-7=Lx1V*s z{oDKR#~$0=fufnp7bNT+urF-dZ+@`9*X#ZK)YZB$L}BBvcV-l_s;4I z>YgTi$}gunYuP@~$ccK$*(axRc!x>j+MIg{{CZjJp2d2sl_y*x1&>U*Yt+_R{Mqr< z9rioDr7V$;gXZp2ka_>*wZZzBt-Rl&Up>ua4}W{8|? z@|n!}%q1}1L(=H^{F7$Eef11N&dn~*zDT!C7v^=TI%_}iLRr7;muc7dRxXe{Y_ue` z$6&?cv=d@quU+k%xmo`3`&BG^Wen3IuQ4ob-ugOnI!mqNjwsPXjB?prPo7+2vt2cJ zUf(uv1BSH<{+^1Q>eHOQ8>X7b&QO@LP~v5>f5FwN-VHC`n8=+MOzL#|Ctcl=u6q3P zsWqyn<_ccxN?LI2j=AucwM%(-J&7;V-`w~8sij%gD#0MP2ws~*?ok_MUTh6r!yvV} zs&H1uM#g|IMKVu%v(JZVC?yvL82qZ-{-{W&?ReROo`+6xX;m+TjgOtNVw-%raHfaE zpA`FVC-Uwl&XqN`buBtm`rdW z=O3GWNfzF-{^|z1DluG|b38R$PBeP{^TdW#_sUHYo~FjmJRfIM9J9LN-S!<9r`2xc zG?^J*ebDpZq{o-;RRk4Or^;{_SeiYk+ay?ip}Wx7=R|Yd%zy4bKmVxv!|e4SgpDgT zF9n*ifh=zYo5BAh=u%U?=EMzQ*2pK~|q@XcI3K~N*qQb_v-+{Qbvj=6WKc>8T>sP**4{K&9?LKm&wRK9TSzNhzbo-&7YUl4~ z@40w!@0QYP-mP_WpE^DK@%at=_fsG5Z(O&w#N@=PRwdJAA3J7b9?J5_a+p#tU%h;a z)vMXrljdzYQ0r~~g{A(jYb<6MfzJeu~i(EY3>O!%Sz!9HxFoTtq@oDu Qd_z-1BQ8}{SARDy02sv0k^lez literal 0 HcmV?d00001 diff --git a/main.pdf b/main.pdf deleted file mode 100644 index 6539cf457253f336c55fe1eeaec3d633e15c11fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331852 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

Sd@HYe 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 z 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 LM?oR3C;|6h;N=%d diff --git a/main.tex b/main.tex index aefa2aa..5a89120 100644 --- a/main.tex +++ b/main.tex @@ -1,7 +1,9 @@ -\documentclass[a4paper,11pt,numbers=noenddot]{scrbook} +\documentclass[a4paper,10pt,numbers=noenddot,twocolumn]{scrbook} -\usepackage[top=2cm,lmargin=1in,rmargin=1in,bottom=3cm,hmarginratio=1:1]{geometry} +\KOMAoptions{twoside=false} +\usepackage[top=2cm,lmargin=0.5in,rmargin=0.5in,bottom=3cm,hmarginratio=1:1]{geometry} \usepackage[ngerman, english]{babel} +\usepackage[moderate, title=tight, bibliography=tight, margins=tight]{savetrees} \babeltags{german=ngerman} % \usepackage{mathabx} % \usepackage{amssymb} @@ -197,25 +199,16 @@ \begin{document} \pagestyle{plain} \input{src/titlepage}% -\chapter*{Disclaimer} - {\begin{german} - Ich versichere, dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als der angegebenen Quellen angefertigt habe und dass die Arbeit in gleicher oder ähnlicher Form noch keiner anderen Prüfungsbehörde vorgelegen hat und von dieser als Teil einer Prüfungsleistung angenommen wurde. - Alle Ausführungen, die wörtlich oder sinngemäß übernommen wurden, sind als solche gekennzeichnet. - \vspace{5em} - Erlangen, \foreignlanguage[date]{ngerman}{\today{}} \rule{7cm}{1pt}\\ - \phantom{Erlangen, \today{}} \theauthor{} - \end{german}} - -% \chapter*{Licensing} -% \doclicenseThis{} - -\include{src/00_abstract} +\twocolumn[\include{src/00_abstract}] \tableofcontents % \listoftodos\ +\newcommand{\agda}{{\raisebox{-0.075cm}{\includegraphics[height=1em]{img/agda.pdf}}}} +\newcommand{\agdaref}[1]{\href{https://wwwcip.cs.fau.de/~hy84coky/bsc-thesis/#1.html}{\agda}} + \newcommandx{\unsure}[2][1=]{\todo[inline,linecolor=red,backgroundcolor=red!25,bordercolor=red,#1]{#2}} \newcommandx{\change}[2][1=]{\todo[linecolor=blue,backgroundcolor=blue!25,bordercolor=blue,#1]{#2}} \newcommandx{\info}[2][1=]{\todo[inline,linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{#2}} @@ -236,7 +229,7 @@ \include{src/04_partiality-monads} \include{src/05_iteration} \include{src/06_setoids} -\include{src/07_conclusion} +\twocolumn[\include{src/07_conclusion}] \appendix diff --git a/src/02_preliminaries.tex b/src/02_preliminaries.tex index ba62d37..c90f931 100644 --- a/src/02_preliminaries.tex +++ b/src/02_preliminaries.tex @@ -5,25 +5,34 @@ In this chapter we will introduce notation that will be used throughout the thes We write \(\obj{\C}\) for the objects of a category \( \C \), \(id_X\) for the identity morphism on \(X\), \((-) \circ (-)\) for the composition of morphisms and \(\C(X,Y)\) for the set of morphisms between \(X\) and \(Y\). We will also sometimes omit indices of the identity and of natural transformations in favor of readability. -\section{Distributive and Cartesian Closed Categories} +\section{Distributive Categories} Let us first introduce notation for binary (co)products by giving their usual diagrams: % chktex 36 -% https://q.uiver.app/#q=WzAsOCxbMiwwLCJBIFxcdGltZXMgQiJdLFswLDAsIkEiXSxbNCwwLCJCIl0sWzIsMiwiQyJdLFs4LDAsIkEgKyBCIl0sWzYsMCwiQSJdLFsxMCwwLCJCIl0sWzgsMiwiQyJdLFswLDEsIlxccGlfMSIsMl0sWzAsMiwiXFxwaV8yIl0sWzMsMiwiZyIsMl0sWzMsMSwiZiJdLFszLDAsIlxcZXhpc3RzISBcXGxhbmdsZSBmICwgZyBcXHJhbmdsZSIsMix7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImRhc2hlZCJ9fX1dLFs1LDQsImlfMSJdLFs2LDQsImlfMiIsMl0sWzUsNywiZiIsMl0sWzYsNywiZyJdLFs0LDcsIlxcZXhpc3RzICEgW2YgLCBnXSIsMV1d +% https://q.uiver.app/#q=WzAsNCxbMiwwLCJBIFxcdGltZXMgQiJdLFswLDAsIkEiXSxbNCwwLCJCIl0sWzIsMiwiQyJdLFswLDEsIlxccGlfMSIsMl0sWzAsMiwiXFxwaV8yIl0sWzMsMiwiZyIsMl0sWzMsMSwiZiJdLFszLDAsIlxcZXhpc3RzISBcXGxhbmdsZSBmICwgZyBcXHJhbmdsZSIsMix7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImRhc2hlZCJ9fX1dXQ== \[ \begin{tikzcd} - A && {A \times B} && B && A && {A + B} && B \\ + A && {A \times B} && B \\ \\ - && C &&&&&& C + && C \arrow["{\pi_1}"', from=1-3, to=1-1] \arrow["{\pi_2}", from=1-3, to=1-5] - \arrow["g"', from=3-3, to=1-5] \arrow["f", from=3-3, to=1-1] \arrow["{\exists! \langle f , g \rangle}"', dashed, from=3-3, to=1-3] - \arrow["{i_1}", from=1-7, to=1-9] - \arrow["{i_2}"', from=1-11, to=1-9] - \arrow["f"', from=1-7, to=3-9] - \arrow["g", from=1-11, to=3-9] - \arrow["{\exists ! [f , g]}", dashed, from=1-9, to=3-9] + \arrow["g"', from=3-3, to=1-5] + \end{tikzcd} +\] + +% https://q.uiver.app/#q=WzAsNCxbMiwwLCJBICsgQiJdLFswLDAsIkEiXSxbNCwwLCJCIl0sWzIsMiwiQyJdLFsxLDAsImlfMSJdLFsyLDAsImlfMiIsMl0sWzEsMywiZiIsMl0sWzIsMywiZyJdLFswLDMsIlxcZXhpc3RzICEgW2YgLCBnXSIsMV1d +\[ + \begin{tikzcd} + A && {A + B} && B \\ + \\ + && C + \arrow["{i_1}", from=1-1, to=1-3] + \arrow["f"', from=1-1, to=3-3] + \arrow["{\exists ! [f , g]}"{description}, from=1-3, to=3-3] + \arrow["{i_2}"', from=1-5, to=1-3] + \arrow["g", from=1-5, to=3-3] \end{tikzcd} \] @@ -33,7 +42,7 @@ We write \(1\) for the terminal object together with the unique morphism \(! : A Categories with finite products (i.e.\ binary products and a terminal object) are also called Cartesian and categories with finite coproducts (i.e.\ binary coproducts and an initial object) are called coCartesian. -\begin{definition}[Distributive Category]~\label{def:distributive} +\begin{definition}[Distributive Category (\agdaref{Categories.Category.Distributive})]~\label{def:distributive} A Cartesian and coCartesian category \(\C \) is called distributive if the canonical (left) distributivity morphism \(dstl^{-1}\) is an isomorphism: % https://q.uiver.app/#q=WzAsMixbMCwwLCJYIFxcdGltZXMgWSArIFggXFx0aW1lcyBaIl0sWzMsMCwiWCBcXHRpbWVzIChZICsgWikiXSxbMCwxLCJkc3RsXnstMX0gOj0ge1xcbGJyYWNrIGlkIFxcdGltZXMgaV8xICwgaWQgXFx0aW1lcyBpXzIgXFxyYnJhY2t9IiwwLHsiY3VydmUiOi0zfV0sWzEsMCwiZHN0bCIsMCx7ImN1cnZlIjotM31dXQ== \[ @@ -64,40 +73,33 @@ Categories with finite products (i.e.\ binary products and a terminal object) ar where \(swap := \langle \pi_2 , \pi_1 \rangle : A \times B \rightarrow B \times A\). \end{remark} -\begin{proposition} +\begin{proposition}[\agdaref{Categories.Category.Distributive.Properties}] The distribution morphisms can be viewed as natural transformations i.e.\ they satisfy the following diagrams: - % https://q.uiver.app/#q=WzAsOCxbMCwwLCJYIFxcdGltZXMgKFkgK1opIl0sWzIsMCwiQSBcXHRpbWVzIChCICsgQykiXSxbMCwxLCJYIFxcdGltZXMgWSArIFggXFx0aW1lcyBaIl0sWzIsMSwiQSBcXHRpbWVzIEIgKyBBIFxcdGltZXMgQyJdLFszLDAsIihZICsgWikgXFx0aW1lcyBYIl0sWzUsMCwiKEIgKyBDKSBcXHRpbWVzIEEiXSxbMywxLCJZIFxcdGltZXMgWCArIFogXFx0aW1lcyBYIl0sWzUsMSwiQiBcXHRpbWVzIEEgKyBDIFxcdGltZXMgQSJdLFswLDEsImYgXFx0aW1lcyAoZyArIGgpIl0sWzIsMywiZiBcXHRpbWVzIGcgKyBmIFxcdGltZXMgaCJdLFswLDIsImRzdGwiXSxbMSwzLCJkc3RsIl0sWzQsNSwiKGcgKyBoKSBcXHRpbWVzIGYiXSxbNCw2LCJkc3RyIiwyXSxbNSw3LCJkc3RyIl0sWzYsNywiZyBcXHRpbWVzIGYgKyBoIFxcdGltZXMgZiJdXQ== + % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIFxcdGltZXMgKFkgK1opIl0sWzIsMCwiQSBcXHRpbWVzIChCICsgQykiXSxbMCwxLCJYIFxcdGltZXMgWSArIFggXFx0aW1lcyBaIl0sWzIsMSwiQSBcXHRpbWVzIEIgKyBBIFxcdGltZXMgQyJdLFswLDEsImYgXFx0aW1lcyAoZyArIGgpIl0sWzIsMywiZiBcXHRpbWVzIGcgKyBmIFxcdGltZXMgaCJdLFswLDIsImRzdGwiXSxbMSwzLCJkc3RsIl1d \[ - \begin{tikzcd}[column sep=4ex] - {X \times (Y +Z)} && {A \times (B + C)} & {(Y + Z) \times X} && {(B + C) \times A} \\ - {X \times Y + X \times Z} && {A \times B + A \times C} & {Y \times X + Z \times X} && {B \times A + C \times A} + \begin{tikzcd} + {X \times (Y +Z)} && {A \times (B + C)} \\ + {X \times Y + X \times Z} && {A \times B + A \times C} \arrow["{f \times (g + h)}", from=1-1, to=1-3] - \arrow["{f \times g + f \times h}", from=2-1, to=2-3] \arrow["dstl", from=1-1, to=2-1] \arrow["dstl", from=1-3, to=2-3] - \arrow["{(g + h) \times f}", from=1-4, to=1-6] - \arrow["dstr"', from=1-4, to=2-4] - \arrow["dstr", from=1-6, to=2-6] - \arrow["{g \times f + h \times f}", from=2-4, to=2-6] + \arrow["{f \times g + f \times h}", from=2-1, to=2-3] + \end{tikzcd} + \] + % https://q.uiver.app/#q=WzAsNCxbMCwwLCIoWSArIFopIFxcdGltZXMgWCJdLFsyLDAsIihCICsgQykgXFx0aW1lcyBBIl0sWzAsMSwiWSBcXHRpbWVzIFggKyBaIFxcdGltZXMgWCJdLFsyLDEsIkIgXFx0aW1lcyBBICsgQyBcXHRpbWVzIEEiXSxbMCwxLCIoZyArIGgpIFxcdGltZXMgZiJdLFswLDIsImRzdHIiLDJdLFsxLDMsImRzdHIiXSxbMiwzLCJnIFxcdGltZXMgZiArIGggXFx0aW1lcyBmIl1d + \[ + \begin{tikzcd} + {(Y + Z) \times X} && {(B + C) \times A} \\ + {Y \times X + Z \times X} && {B \times A + C \times A} + \arrow["{(g + h) \times f}", from=1-1, to=1-3] + \arrow["dstr"', from=1-1, to=2-1] + \arrow["dstr", from=1-3, to=2-3] + \arrow["{g \times f + h \times f}", from=2-1, to=2-3] \end{tikzcd} \] \end{proposition} -\begin{proof} - We will prove naturality of \(dstl\), naturality for \(dstr\) is symmetric. We use the fact that \(dstl^{-1}\) is an iso and therefore also an epi. - \begin{alignat*}{1} - & dstl \circ (f \times (g + h)) \circ dstl^{-1} \\ - =\; & dstl \circ (f \times (g + h)) \circ \lbrack id \times i_1 , id \times i_2 \rbrack \\ - =\; & dstl \circ \lbrack f \times ((g + h) \circ i_1) , f \times ((g + h) \circ i_2) \rbrack \\ - =\; & dstl \circ \lbrack f \times (i_1 \circ g) , f \times (i_2 \circ h) \rbrack \\ - =\; & dstl \circ \lbrack id \times i_1 , id \times i_2 \rbrack \circ (f \times g + f \times h) \\ - =\; & dstl \circ dstl^{-1} \circ (f \times g + f \times h) \\ - =\; & (f \times g + f \times h) \\ - =\; & (f \times g + f \times h) \circ dstl \circ dstl^{-1}\tag*{\qedhere} - \end{alignat*} -\end{proof} - -\begin{proposition} +\begin{proposition}[\agdaref{Categories.Category.Distributive.Properties}] The distribution morphisms satisfy the following properties: \begin{enumerate} @@ -113,52 +115,8 @@ Categories with finite products (i.e.\ binary products and a terminal object) ar \item \(dstr \circ swap = (swap + swap) \circ dstl\) \end{enumerate} \end{proposition} -\begin{proof} - Let us verify the five properties concerning \(dstl\), the ones concerning \(dstr\) follow symmetrically: - \begin{enumerate} - \item - \begin{alignat*}{1} - & dstl \circ (id \times i_1) - \\=\;&dstl \circ [ id \times i_1 , id \times i_2 ] \circ i_1 - \\=\;&dstl \circ dstl^{-1} \circ i_1 - \\=\;&i_1 - \end{alignat*} - \item - \begin{alignat*}{1} - & dstl \circ (id \times i_2) - \\=\;&dstl \circ [ id \times i_1 , id \times i_2 ] \circ i_2 - \\=\;&dstl \circ dstl^{-1} \circ i_2 - \\=\;&i_2 - \end{alignat*} - \item - \begin{alignat*}{1} - & \pi_1 - \\=\;&\pi_1 \circ dstl^{-1} \circ dstl - \\=\;&[ \pi_1 \circ (id \times i_1) , \pi_1 \circ (id \times i_2) ] \circ dstl - \\=\;&[ \pi_1 , \pi_1 ] \circ dstl - \end{alignat*} - \item - \begin{alignat*}{1} - & \pi_2 - \\=\;&\pi_2 \circ dstl^{-1} \circ dstl - \\=\;&[ \pi_2 \circ (id \times i_1) , \pi_2 \circ (id \times i_2) ] \circ dstl - \\=\;&(\pi_2 + \pi_2) \circ dstl - \end{alignat*} - \item - \begin{alignat*}{1} - & dstl \circ swap - \\=\;&dstl \circ swap \circ dstr^{-1} \circ dstr - \\=\;&dstl \circ [ swap \circ (i_1 \times id) , swap \circ (i_2 \times id) ] \circ dstr - \\=\;&dstl \circ [ (id \times i_1) \circ swap , (id \times i_2) \circ swap ] \circ dstr - \\=\;&dstl \circ [ id \times i_1 , id \times i_2 ] \circ (swap + swap) \circ dstr - \\=\;&dstl \circ dstl^{-1} \circ (swap + swap) \circ dstr - \\=\;&(swap + swap) \circ dstr\tag*{\qedhere} - \end{alignat*} - \end{enumerate} -\end{proof} - -\begin{definition}[Exponential Object] +\begin{definition}[Exponential Object (\agdaref{Categories.Object.Exponential})] Let \(\C \) be a Cartesian category and \(X , Y \in \vert \C \vert \). An object \(X^Y\) is called an exponential object (of \(X\) and \(Y\)) if there exists an evaluation morphism \(eval : X^Y \times Y \rightarrow X\) and for any \(f : X \times Y \rightarrow Z\) there exists a morphism \(curry\; f : X \rightarrow Z^Y\) that is unique with respect to the following diagram: % https://q.uiver.app/#q=WzAsMyxbMCwwLCJaIFxcdGltZXMgWSJdLFsyLDAsIlheWSBcXHRpbWVzIFkiXSxbMiwyLCJYIl0sWzEsMiwiZXZhbCJdLFswLDEsImN1cnJ5XFw7ZiBcXHRpbWVzIGlkIl0sWzAsMiwiZiIsMl1d @@ -174,7 +132,7 @@ Categories with finite products (i.e.\ binary products and a terminal object) ar \] \end{definition} -\begin{proposition} +\begin{proposition}[\agdaref{Categories.Object.Exponential}] Every exponential object \(X^Y\) satisfies the following properties: \begin{enumerate} @@ -183,16 +141,6 @@ Categories with finite products (i.e.\ binary products and a terminal object) ar \item \(curry\;f \circ g = curry(f \circ (g \times id))\) for any \(f : X \times Y \rightarrow Z, g : A \rightarrow X\). \end{enumerate} \end{proposition} -\begin{proof} - \begin{enumerate} - \item Let \(f, g : X \times Y \rightarrow Z\) and \(curry\;f = curry\;g\), then indeed - \[f = eval \circ (curry\; f \times id) = eval \circ (curry\;g \times id) = g. \] - - \item \(curry(eval \circ (f \times id)) = f\) follows instantly by uniqueness of \(curry(eval \circ (f \times id))\). - \item Note that \(eval \circ (curry\;f \circ g \times id) = eval \circ (curry\;f \times id) \circ (g \times id) = f \circ (g \times id)\), thus we are done by uniqueness of \(curry(f \circ (g \times id))\). - \qedhere - \end{enumerate} -\end{proof} A Cartesian closed category is a Cartesian category \(\C \) that also has an exponential object \(X^Y\) for any \(X, Y \in \obj{\C} \). The internal logic of Cartesian closed categories is the simply typed \(\lambda \)-calculus, which makes them a suitable environment for interpreting programming languages. @@ -201,11 +149,11 @@ For the rest of this thesis we will work in an ambient distributive category \(\ \section{F-Coalgebras} Let \(F : \C \rightarrow \C \) be an endofunctor. Recall that F-algebras are tuples \((X, \alpha : FX \rightarrow X)\) consisting of an object of \(\C \) and a morphism out of the functor. Initial F-algebras have been studied extensively as a means of modeling inductive data types together with induction and recursion principles~\cite{inductive}. For this thesis we will be more interested in the dual concept namely terminal coalgebras; let us formally introduce them now. -\begin{definition}[F-Coalgebra] +\begin{definition}[F-Coalgebra (\agdaref{Categories.Functor.Coalgebra})] A tuple \((X \in \obj{\C}, \alpha : X \rightarrow FX)\) is called an \emph{F-coalgebra} (hereafter referred to as just \emph{coalgebra}). \end{definition} -\begin{definition}[Coalgebra Morphisms]\label{def:coalgmorph} +\begin{definition}[Coalgebra Morphisms (\agdaref{Categories.Functor.Coalgebra})]\label{def:coalgmorph} Let \((X, \alpha : X \rightarrow FX)\) and \((Y, \beta : Y \rightarrow FY)\) be two coalgebras. A morphism between these coalgebras is a morphism \(f : X \rightarrow Y\) such that the following diagram commutes: % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMiwiWSJdLFsyLDAsIkZYIl0sWzIsMiwiRlkiXSxbMSwzLCJcXGJldGEiXSxbMCwyLCJcXGFscGhhIl0sWzAsMSwiZiIsMl0sWzIsMywiRmYiXV0= \[ @@ -224,27 +172,15 @@ Let \(F : \C \rightarrow \C \) be an endofunctor. Recall that F-algebras are tup Coalgebras on a given functor together with their morphisms form a category that we call \(\coalgs{F}\). -\begin{proposition} +\begin{proposition}[\agdaref{Categories.Category.Construction.F-Coalgebras}] \(\coalgs{F}\) is a category. \end{proposition} -\begin{proof} - Let \((X , \alpha : X \rightarrow FX)\) be a coalgebra. The identity morphism on \((X , \alpha)\) is the identity morphism of \(\C\) that trivially satisfies \(\alpha \circ id = Fid \circ \alpha \). - - Let \((X , \alpha : X \rightarrow FX), (Y, \beta : Y \rightarrow FY)\) and \((Z , \gamma : Z \rightarrow FZ)\) be coalgebras. - Composition of \(f : (X, \alpha) \rightarrow (Y, \beta)\) and \(g : (Y, \beta) \rightarrow (Z, \gamma)\) is composition of the underlying morphisms in \(\C \) where: - \begin{alignat*}{1} - & \gamma \circ g \circ f \\ - =\; & Fg \circ \beta \circ f \\ - =\; & Fg \circ Ff \circ \alpha \\ - =\; & F(g \circ f) \circ \alpha\tag*{\qedhere} - \end{alignat*} -\end{proof} The terminal object of \(\coalgs{F}\) is sometimes called \textit{final coalgebra}, we will however call it the \textit{terminal coalgebra} for consistency with initial F-algebras. Similarly to initial F-algebras, the final coalgebra can be used for modeling the semantics of coinductive data types where terminality of the coalgebra yields corecursion as a definitional principle and coinduction as a proof principle. Let us make the universal property of terminal coalgebras concrete. -\begin{definition}[Terminal Coalgebra] +\begin{definition}[Terminal Coalgebra (\agdaref{Categories.Object.Terminal})] A coalgebra \((T, t : T \rightarrow FT)\) is called a terminal coalgebra if for any other coalgebra \((X, \alpha : X \rightarrow FX)\) there exists a unique morphism \(\coalg{\alpha} : X \rightarrow T\) satisfying: % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzIsMCwiRlgiXSxbMCwyLCJUIl0sWzIsMiwiRlQiXSxbMCwxLCJcXGFscGhhIl0sWzIsMywidCJdLFswLDIsIlxcbGxicmFja2V0IFxcYWxwaGEgXFxycmJyYWNrZXQiLDIseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJkYXNoZWQifX19XSxbMSwzLCJGXFxsbGJyYWNrZXQgXFxhbHBoYSBcXHJyYnJhY2tldCJdXQ== @@ -264,51 +200,14 @@ Let us make the universal property of terminal coalgebras concrete. We will discuss the concrete form that induction and coinduction take in a type theory in \autoref{chp:agda-cat}. Let us now reiterate a famous Lemma concerning terminal F-coalgebras. -\begin{lemma}[Lambek's Lemma~\cite{lambek}]\label{lem:lambek} +\begin{lemma}[Lambek's Lemma~\cite{lambek} (\agdaref{Categories.Category.Construction.F-Coalgebras})]\label{lem:lambek} Let \((T, t : T \rightarrow FT)\) be a terminal coalgebra. Then \(t\) is an isomorphism. \end{lemma} -% \begin{proof} -% First note that \((FT, Ft : FT \rightarrow FFT)\) is also an F-coalgebra. This yields the unique morphism \(\coalg{Ft} : FT \rightarrow T\) satisfying: -% % https://q.uiver.app/#q=WzAsNCxbMCwwLCJGVCJdLFsyLDAsIkZGVCJdLFswLDIsIlQiXSxbMiwyLCJGVCJdLFswLDEsIkZ0Il0sWzIsMywidCJdLFswLDIsIlxcbGxicmFja2V0IEZ0IFxccnJicmFja2V0IiwyLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV0sWzEsMywiRlxcbGxicmFja2V0IEZ0IFxccnJicmFja2V0Il1d -% \[ -% \begin{tikzcd}[ampersand replacement=\&] -% FT \&\& FFT \\ -% \\ -% T \&\& FT -% \arrow["Ft", from=1-1, to=1-3] -% \arrow["t", from=3-1, to=3-3] -% \arrow["{\coalg{Ft}}"', dashed, from=1-1, to=3-1] -% \arrow["{F\coalg{Ft}}", from=1-3, to=3-3] -% \end{tikzcd} -% \] - -% \(\coalg{Ft}\) is inverse to \(t\): - -% \begin{enumerate} -% \item \(\coalg{Ft} \circ t : (T, t) \rightarrow (T, t)\) is a morphism between F-coalgebras since -% \begin{alignat*}{1} -% & F(\coalg{Ft} \circ t) \circ t \\ -% =\; & F \coalg{Ft} \circ t \circ t \\ -% =\; & F \coalg{Ft} \circ Ft \circ t \\ -% =\; & t \circ \coalg{Ft} \circ t -% \end{alignat*} -% By uniqueness of the identity on \((T, t)\) we follow that \(\coalg{Ft} \circ t = id\). - -% \item \(t \circ \coalg{Ft} = id : (FT, Ft) \rightarrow (FT, Ft)\) follows by: -% \begin{alignat*}{1} -% & t \circ \coalg{Ft} \\ -% =\; & F\coalg{Ft} \circ Ft \\ -% =\; & F(\coalg{Ft} \circ t) \\ -% =\; & F(id) \\ -% =\; & id -% \end{alignat*} -% \end{enumerate} -% \end{proof} \section{Monads} Monads are widely known in functional programming as a means for modeling effects in ``pure'' languages and are also central to this thesis. Let us recall the basic definitions\cite{Lane1971}\cite{moggi}. -\begin{definition}[Monad] +\begin{definition}[Monad (\agdaref{Categories.Monad})] A monad \(\mathbf{T}\) on a category \(\C \) is a triple \((T, \eta, \mu)\), where \(T : \C \rightarrow \C \) is an endofunctor and \(\eta : Id \rightarrow T, \mu : TT \rightarrow T\) are natural transformations, satisfying the following laws: \begin{alignat*}{2} & \mu_X \circ \mu_{TX} & & = \mu_X \circ T\mu_X \tag*{(M1)}\label{M1} \\ @@ -317,41 +216,55 @@ Monads are widely known in functional programming as a means for modeling effect \end{alignat*} These laws are expressed by the following diagrams: - % with indices: % https://q.uiver.app/#q=WzAsOCxbMCwwLCJUVFRYIl0sWzIsMCwiVFRYIl0sWzAsMiwiVFRYIl0sWzIsMiwiVFgiXSxbNCwwLCJUWCJdLFs2LDAsIlRUWCJdLFs4LDAsIlRYIl0sWzYsMiwiVFgiXSxbMCwxLCJcXG11X3tUWH0iXSxbMCwyLCJUXFxtdV9YIiwyXSxbMSwzLCJcXG11X1giXSxbNSw3LCJcXG11X1giXSxbNCw1LCJcXGV0YV97VFh9Il0sWzYsNSwiVFxcZXRhX1giXSxbNCw3LCJpZF97VFh9IiwyXSxbNiw3LCJpZF97VFh9IiwyXSxbMiwzLCJcXG11X1giLDJdXQ== - % https://q.uiver.app/#q=WzAsOCxbMCwwLCJUVFRYIl0sWzIsMCwiVFRYIl0sWzAsMiwiVFRYIl0sWzIsMiwiVFgiXSxbNCwwLCJUWCJdLFs2LDAsIlRUWCJdLFs4LDAsIlRYIl0sWzYsMiwiVFgiXSxbMCwxLCJcXG11Il0sWzAsMiwiVFxcbXUiLDJdLFsxLDMsIlxcbXUiXSxbNSw3LCJcXG11Il0sWzQsNSwiXFxldGEiXSxbNiw1LCJUIl0sWzQsNywiaWQiLDJdLFs2LDcsImlkIiwyXSxbMiwzLCJcXG11IiwyXV0= + % https://q.uiver.app/#q=WzAsNCxbMCwwLCJUVFRYIl0sWzIsMCwiVFRYIl0sWzAsMiwiVFRYIl0sWzIsMiwiVFgiXSxbMCwxLCJcXG11X3tUWH0iXSxbMCwyLCJUXFxtdV9YIiwyXSxbMSwzLCJcXG11X1giXSxbMiwzLCJcXG11X1giLDJdXQ== \[ \begin{tikzcd} - TTTX && TTX && TX && TTX && TX \\ + TTTX && TTX \\ \\ - TTX && TX &&&& TX - \arrow["\mu", from=1-1, to=1-3] - \arrow["T\mu"', from=1-1, to=3-1] + TTX && TX + \arrow["{\mu_{TX}}", from=1-1, to=1-3] + \arrow["{T\mu_X}"', from=1-1, to=3-1] + \arrow["{\mu_X}", from=1-3, to=3-3] + \arrow["{\mu_X}"', from=3-1, to=3-3] + \end{tikzcd} + \] + % https://q.uiver.app/#q=WzAsNCxbMCwwLCJUWCJdLFsyLDAsIlRUWCJdLFs0LDAsIlRYIl0sWzIsMiwiVFgiXSxbMSwzLCJcXG11Il0sWzAsMSwiXFxldGEiXSxbMiwxLCJUIl0sWzAsMywiaWQiLDJdLFsyLDMsImlkIiwyXV0= + \[ + \begin{tikzcd} + TX && TTX && TX \\ + \\ + && TX + \arrow["\eta", from=1-1, to=1-3] + \arrow["id"', from=1-1, to=3-3] \arrow["\mu", from=1-3, to=3-3] - \arrow["\mu", from=1-7, to=3-7] - \arrow["\eta", from=1-5, to=1-7] - \arrow["T", from=1-9, to=1-7] - \arrow["id"', from=1-5, to=3-7] - \arrow["id"', from=1-9, to=3-7] - \arrow["\mu"', from=3-1, to=3-3] + \arrow["T", from=1-5, to=1-3] + \arrow["id"', from=1-5, to=3-3] \end{tikzcd} \] \end{definition} -\begin{definition}[Monad Morphism]\label{def:monadmorphism} +\begin{definition}[Monad Morphism (\agdaref{Categories.Monad.Morphism})]\label{def:monadmorphism} A morphism between monads \((S : \C \rightarrow \C, \eta^S, \mu^S)\) and \((T : \C \rightarrow \C, \eta^T, \mu^T)\) is a natural transformation \(\alpha : S \rightarrow T\) between the underlying functors such that the following diagrams commute. - % https://q.uiver.app/#q=WzAsOCxbMCwwLCJYIl0sWzIsMCwiU1giXSxbMiwxLCJUWCJdLFszLDAsIlNTWCJdLFs1LDAsIlNUWCJdLFszLDEsIlNYIl0sWzcsMCwiVFRYIl0sWzcsMSwiVFgiXSxbMCwxLCJcXGV0YV5TIl0sWzEsMiwiXFxhbHBoYSJdLFswLDIsIlxcZXRhXlQiLDJdLFszLDQsIlNcXGFscGhhIl0sWzMsNSwiXFxtdV5TIiwyXSxbNCw2LCJcXGFscGhhIl0sWzUsNywiXFxhbHBoYSIsMl0sWzYsNywiXFxtdV5UIl1d + % https://q.uiver.app/#q=WzAsMyxbMCwwLCJYIl0sWzIsMCwiU1giXSxbMiwxLCJUWCJdLFswLDEsIlxcZXRhXlMiXSxbMSwyLCJcXGFscGhhIl0sWzAsMiwiXFxldGFeVCIsMl1d \[ - \begin{tikzcd}[ampersand replacement=\&] - X \&\& SX \& SSX \&\& STX \&\& TTX \\ - \&\& TX \& SX \&\&\&\& TX + \begin{tikzcd} + X && SX \\ + && TX \arrow["{\eta^S}", from=1-1, to=1-3] - \arrow["\alpha", from=1-3, to=2-3] \arrow["{\eta^T}"', from=1-1, to=2-3] - \arrow["S\alpha", from=1-4, to=1-6] - \arrow["{\mu^S}"', from=1-4, to=2-4] - \arrow["\alpha", from=1-6, to=1-8] - \arrow["\alpha"', from=2-4, to=2-8] - \arrow["{\mu^T}", from=1-8, to=2-8] + \arrow["\alpha", from=1-3, to=2-3] + \end{tikzcd} + \] + % https://q.uiver.app/#q=WzAsNSxbMCwwLCJTU1giXSxbMiwwLCJTVFgiXSxbMCwxLCJTWCJdLFs0LDAsIlRUWCJdLFs0LDEsIlRYIl0sWzAsMSwiU1xcYWxwaGEiXSxbMCwyLCJcXG11XlMiLDJdLFsxLDMsIlxcYWxwaGEiXSxbMiw0LCJcXGFscGhhIiwyXSxbMyw0LCJcXG11XlQiXV0= + \[ + \begin{tikzcd} + SSX && STX && TTX \\ + SX &&&& TX + \arrow["{S\alpha}", from=1-1, to=1-3] + \arrow["{\mu^S}"', from=1-1, to=2-1] + \arrow["\alpha", from=1-3, to=1-5] + \arrow["{\mu^T}", from=1-5, to=2-5] + \arrow["\alpha"', from=2-1, to=2-5] \end{tikzcd} \] \end{definition} @@ -361,13 +274,10 @@ This yields a category of monads on a given category \(\C\) that we call \(\mona \begin{proposition}\label{prop:monadscat} \(\monads{\C}\) is a category. \end{proposition} -\begin{proof} - The identity morphism of \(\monads{\C}\) is the identity natural transformation \(Id : F \rightarrow F\), which trivially respects the monad unit and multiplication. Composition of monad morphisms is composition of the underlying natural transformation, the diagrams then also follow easily. -\end{proof} Monads can also be specified in a second equivalent way that is better suited to describe computation. -\begin{definition}[Kleisli Triple] +\begin{definition}[Kleisli Triple (\agdaref{Categories.Monad.Relative})] A Kleisli triple on a category \(\C \) is a triple \((F, \eta, {(-)}^*)\), where \(F : \obj{C} \rightarrow \obj{C}\) is a mapping on objects, \({(\eta_X : X \rightarrow FX)}_{X\in\obj{C}}\) is a family of morphisms and for every morphism \(f : X \rightarrow FY\) there exists a morphism \(f^* : FX \rightarrow FY\) called the Kleisli lifting, where the following laws hold: \begin{alignat*}{3} & \eta_X^* & & = id_{FX} \tag*{(K1)}\label{K1} \\ @@ -384,7 +294,7 @@ Let \(f : X \rightarrow TY, g : Y \rightarrow TZ\) be two programs, where \(T\) This yields the category of programs for a Kleisli triple that is called the Kleisli category. -\begin{definition}[Kleisli Category] +\begin{definition}[Kleisli Category (\agdaref{Categories.Category.Construction.Kleisli})] Given a monad \(T\) on a category \(\C \), the Kleisli category \(\C^T\) is defined as: \begin{itemize} \item \(\vert \C^T \vert = \obj{C}\) @@ -395,22 +305,8 @@ This yields the category of programs for a Kleisli triple that is called the Kle The laws of categories then follow from the Kleisli triple laws. \end{definition} -\begin{proposition}[\cite{manes}] The notions of Kleisli triple and monad are equivalent. +\begin{proposition}[\cite{manes} (\agdaref{Categories.Monad.Construction.Kleisli})] The notions of Kleisli triple and monad are equivalent. \end{proposition} -\begin{proof} - The crux of this proof is defining the triples, the proofs of the corresponding laws (functoriality, naturality, monad and Kleisli triple laws) are left out. - - ``\(\Rightarrow \)'': - Given a Kleisli triple \((F, \eta, {(-)}^*)\), - we obtain a monad \((F, \eta, \mu)\) where \(F\) is the object mapping of the Kleisli triple together with the functor action \(F(f : X \rightarrow Y) = {(\eta_Y \circ f)}^*\), - \(\eta \) is the morphism family of the Kleisli triple where naturality is easy to show and \(\mu \) is a natural transformation defined as \(\mu_X = id_{FX}^*\) - - - ``\(\Leftarrow \)'': \\ - Given a monad \((F, \eta, \mu)\), - we obtain a Kleisli triple \((F, \eta, {(-)}^*)\) by restricting the functor \(F\) on objects, - taking the underlying mapping of \(\eta \) and defining \(f^* = \mu_Y \circ Ff\) for any \(f : X \rightarrow FY\). -\end{proof} For the rest of this thesis we will use both equivalent notions interchangeably to make definitions easier. @@ -424,7 +320,7 @@ where \(g : X \rightarrow TY\) and \(f : X \times Y \rightarrow TZ\) are program \[X \overset{\langle id , g \rangle}{\longrightarrow} X \times TY \overset{?}{\longrightarrow} T(X \times Y) \overset{f^*}{\longrightarrow} TZ. \] Instead, one needs the following stronger notion of monad. -\begin{definition}[Strong Monad] A monad \((T, \eta, \mu)\) on a Cartesian category \(\C \) is called strong if there exists a natural transformation \(\tau_{X,Y} : X \times TY \rightarrow T(X \times Y)\) that satisfies the following conditions: +\begin{definition}[Strong Monad (\agdaref{Categories.Monad.Strong})] A monad \((T, \eta, \mu)\) on a Cartesian category \(\C \) is called strong if there exists a natural transformation \(\tau_{X,Y} : X \times TY \rightarrow T(X \times Y)\) that satisfies the following conditions: \begin{alignat*}{2} & T\pi_2 \circ \tau_{1,X} & & = \pi_2 \tag*{(S1)}\label{S1} \\ & \tau_{X,Y} \circ (id_X \times \eta_Y) & & = \eta_{X\times Y} \tag*{(S2)}\label{S2} \\ @@ -468,7 +364,7 @@ Let us now consider the following two programs \end{multicols} Where \(p : TX\) and \(q : TY\) are computations of some monad \(T\). A monad where these programs are equal, is called commutative. -\begin{definition}[Commutative Monad] +\begin{definition}[Commutative Monad (\agdaref{Categories.Monad.Commutative})] A strong monad \(\mathbf{T}\) is called commutative if the (right) strength \(\tau \) commutes with the induced left strength \[\sigma_{X,Y} = Tswap \circ \tau_{Y,X} \circ swap : TX \times Y \rightarrow T(X \times Y)\] that satisfies symmetrical conditions to the ones \(\tau \) satisfies. @@ -492,7 +388,7 @@ Free objects, roughly speaking, are constructions for instantiating structure de We will rely on free structures in \autoref{chp:iteration} to define a monad in a general setting. We recall the definition to establish some notation and then describe how to obtain a monad via existence of free objects. -\begin{definition}[Free Object]\label{def:free} +\begin{definition}[Free Object (\agdaref{Categories.FreeObjects.Free})]\label{def:free} Let \(\C, \D \) be categories and \(U : \C \rightarrow \D \) be a forgetful functor (whose construction usually is obvious). A free object on some object \(X \in \obj{\D}\) is an object \(FX \in \obj{\C}\) together with a morphism \(\eta : X \rightarrow UFX\) such that for any \(Y \in \obj{\C}\) and \(f : X \rightarrow UY\) there exists a unique morphism \(\free{f} : FX \rightarrow Y\) satisfying: % https://q.uiver.app/#q=WzAsMyxbMCwwLCJYIl0sWzEsMCwiVVkiXSxbMCwxLCJVRlgiXSxbMCwxLCJmIl0sWzAsMiwiXFxldGEiLDJdLFsyLDEsIlVcXGZyZWV7Zn0iLDIseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJkYXNoZWQifX19XV0= \[ @@ -506,23 +402,7 @@ to establish some notation and then describe how to obtain a monad via existence \] \end{definition} -\begin{proposition}\label{thm:freemonad} +\begin{proposition}[\agdaref{Categories.FreeObjects.Free},\agdaref{Categories.Adjoint.Properties}]\label{thm:freemonad} Let \(U : \C \rightarrow \D \) be a forgetful functor. If for every \(X \in \obj{\D}\) a free object \(FX \in \obj{C}\) exists then \((X \mapsto UFX, \eta : X \rightarrow UFX, \free{(f : X \rightarrow UFY)} : UFX \rightarrow UFY)\) is a Kleisli triple on \(\D \). -\end{proposition} -\begin{proof} - We are left to check the laws of Kleisli triples. - - \begin{itemize} - \item[\ref{K1}] \(\free{\eta} = id\) - - By uniqueness of \(\free{\eta}\) it suffices to show that \(id \circ \eta = \eta \) which holds trivially. - \item[\ref{K2}] \(\free{f} \circ \eta = f\) for any \(f : X \rightarrow UFY\) - - This is the universal property concerning \(\free{f}\). - \item[\ref{K3}] \(\free{f} \circ \free{g} = \free{\freee{f} \circ g}\) for any \(f : Y \rightarrow UFZ, g : X \rightarrow UFY\) - - By uniqueness of \(\free{\freee{f} \circ g}\) we are left to show \(\free{f} \circ \free{g} \circ \eta = \free{f} \circ g\) which again follows directly by the universal property of \(\free{g}\). - \qedhere - \end{itemize} -\end{proof} \ No newline at end of file +\end{proposition} \ No newline at end of file diff --git a/src/04_partiality-monads.tex b/src/04_partiality-monads.tex index ae1ce6e..e940f5a 100644 --- a/src/04_partiality-monads.tex +++ b/src/04_partiality-monads.tex @@ -18,7 +18,7 @@ The first property of course holds for any commutative monad, the other two are To ensure that programs are partial, we recall the following notion by Cockett and Lack~\cite{restriction}, that axiomatizes the notion of partiality in a category: \newcommand{\tdom}{\text{dom}\;} -\begin{definition}[Restriction Structure] +\begin{definition}[Restriction Structure (\agdaref{Categories.Category.Restriction})] A restriction structure on a category \(\C\) is a mapping \(dom : \C(X, Y) \rightarrow \C(X , X)\) with the following properties: \begin{alignat*}{1} f \circ (\tdom f) & = f \\ @@ -40,7 +40,7 @@ The morphism \(\tdom f : X \rightarrow X\) represents the domain of definiteness That is, \(\tdom f\) is only defined on values where \(f\) is defined and for those values it behaves like the identity function. -\begin{definition}[Restriction Category] +\begin{definition}[Restriction Category (\agdaref{Categories.Category.Restriction})] Every category has a trivial restriction structure by taking \(dom (f : X \rightarrow Y) = id_X\). We call categories with a non-trivial restriction structure \textit{restriction categories}. \end{definition} @@ -49,7 +49,7 @@ For a suitable defined partiality monad \(T\) the Kleisli category \(\C^T\) shou Lastly, we also recall the following notion by Bucalo et al.~\cite{eqlm} which captures what it means for a monad to have no other side effect besides some sort of non-termination: -\begin{definition}[Equational Lifting Monad]\label{def:eqlm} +\begin{definition}[Equational Lifting Monad (\agdaref{Monad.EquationalLifting})]\label{def:eqlm} A commutative monad \(T\) is called an \textit{equational lifting monad} if the following diagram commutes: % https://q.uiver.app/#q=WzAsMyxbMCwwLCJUWCJdLFsyLDAsIlRYIFxcdGltZXMgVFgiXSxbMiwyLCJUKFRYIFxcdGltZXMgWCkiXSxbMCwxLCJcXERlbHRhIl0sWzEsMiwiXFx0YXUiXSxbMCwyLCJUIFxcbGFuZ2xlIFxcZXRhICwgaWQgXFxyYW5nbGUiLDJdXQ== \[ @@ -90,58 +90,11 @@ For the rest of this chapter we will use these definitions to compare two monads \section{The Maybe Monad} The endofunctor \(MX = X + 1\) extends to a monad by taking \(\eta_X = i_1 : X \rightarrow X + 1\) and \(\mu_X = [ id , i_2 ] : (X + 1) + 1 \rightarrow X + 1\). -The monad laws follow easily. +The monad laws follow easily (\agdaref{Monad.Instance.Maybe}). This is generally known as the maybe monad and can be viewed as the canonical example of an equational lifting monad. -\begin{theorem} M is an equational lifting monad. +\begin{theorem}[\agdaref{Monad.Instance.Maybe.EquationalLifting}] M is an equational lifting monad. \end{theorem} -\begin{proof} - We define strength as - \[ \tau_{X,Y} := X \times (Y + 1) \overset{dstl}{\longrightarrow} (X \times Y) + (X \times 1) \overset{id+!}{\longrightarrow} (X \times Y) + 1. \] - - Naturality of \(\tau \) follows by naturality of \(dstl\) - - \begin{alignat*}{1} - & (id + !) \circ dstl \circ (id \times (f + id)) \\ - = \; & (id + !) \circ ((id \times f) + (id \times id)) \circ dstl \\ - = \; & ((id \times f) + !) \circ dstl \\ - = \; & ((id \times f) + id) \circ (id + !) \circ dstl. - \end{alignat*} - - The other strength laws and commutativity can be proven by using simple properties of distributive categories, we added these proofs to the formalization for completeness. - - We are thus left to check the equational lifting law: - % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYKzEiXSxbMywwLCIoWCsxKVxcdGltZXMoWCsxKSJdLFszLDIsIigoWCsxKVxcdGltZXMgWCkgKygoWCsxKVxcdGltZXMgMSkiXSxbMyw0LCIoKFgrMSlcXHRpbWVzIFgpKzEiXSxbMCwxLCJcXERlbHRhIl0sWzEsMiwiZHN0bCJdLFsyLDMsImlkK1xcOyEiXSxbMCwzLCJcXGxhbmdsZSBpXzEsaWRcXHJhbmdsZSArIFxcOyEiLDJdXQ== - \[ - \begin{tikzcd} - {X+1} &&& {(X+1)\times(X+1)} \\ - \\ - &&& {((X+1)\times X) +((X+1)\times 1)} \\ - \\ - &&& {((X+1)\times X)+1} - \arrow["\Delta", from=1-1, to=1-4] - \arrow["dstl", from=1-4, to=3-4] - \arrow["{id+\;!}", from=3-4, to=5-4] - \arrow["{\langle i_1,id\rangle + \;!}"', from=1-1, to=5-4] - \end{tikzcd} - \] - - This is easily proven by pre-composing with \(i_1\) and \(i_2\), indeed - \begin{alignat*}{1} - & (id\;+\;!) \circ dstl \circ \langle i_1 , i_1 \rangle - \\=\;&(id\;+\;!) \circ dstl \circ (id \times i_1) \circ \langle i_1 , id \rangle - \\=\;&(id\;+\;!) \circ i_1 \circ \langle i_1 , id \rangle - \\=\;&i_1 \circ \langle i_1 , id \rangle, - \end{alignat*} - and - \begin{alignat*}{1} - & (id\;+\;!) \circ dstl \circ \langle i_2 , i_2 \rangle - \\=\;&(id\;+\;!) \circ dstl \circ (id \times i_2) \circ \langle i_2 , id \rangle - \\=\;&(id\;+\;!) \circ i_2 \circ \langle i_2 , id \rangle - \\=\;&i_2 \;\circ \; ! \circ \langle i_2 , id \rangle - \\=\;&i_2 \;\circ \; !.\tag*{\qedhere} - \end{alignat*} -\end{proof} In the setting of classical mathematics this monad is therefore sufficient for modeling partiality, but in general it will not be useful for modeling non-termination as a side effect, since one would need to know beforehand whether a program terminates or not. For the purpose of modeling possibly non-terminating computations another monad has been introduced by Capretta~\cite{delay}. @@ -154,7 +107,7 @@ In this section we will show that these terminal coalgebras indeed yield a monad Since \(DX\) is defined as a terminal coalgebra, we can define morphisms via corecursion and prove theorems by coinduction. By \autoref{lem:lambek} the coalgebra structure \(out : DX \rightarrow X + DX\) is an isomorphism, whose inverse can be decomposed into the two constructors mentioned before: \(out^{-1} = [ now , later ] : X + DX \rightarrow DX\). -\begin{lemma}~\label{lem:delay} +\begin{lemma}[\agdaref{Monad.Instance.Delay}]~\label{lem:delay} The following conditions hold: \begin{itemize} \item \(now : X \rightarrow DX\) and \(later : DX \rightarrow DX\) satisfy: @@ -176,82 +129,22 @@ Since \(DX\) is defined as a terminal coalgebra, we can define morphisms via cor \end{equation*} \item There exists a unique morphism \(\tau : X \times DY \rightarrow D(X \times Y)\) such that: \begin{equation*} - % https://q.uiver.app/#q=WzAsNSxbMCwwLCJYIFxcdGltZXMgRFkiXSxbMCwxLCJEKFggXFx0aW1lcyBZKSJdLFsyLDAsIlggXFx0aW1lcyAoWSArIERZKSJdLFs0LDAsIlggXFx0aW1lcyBZICsgWCBcXHRpbWVzIERZIl0sWzQsMSwiWCBcXHRpbWVzIFkgKyBEKFggXFx0aW1lcyBZKSJdLFswLDEsIlxcdGF1IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV0sWzAsMiwiaWQgXFx0aW1lcyBvdXQiXSxbMiwzLCJkc3RsIl0sWzMsNCwiaWQgK1xcdGF1IiwyXSxbMSw0LCJvdXQiXV0= + % https://q.uiver.app/#q=WzAsNSxbMCwwLCJYIFxcdGltZXMgRFkiXSxbMCwxLCJEKFggXFx0aW1lcyBZKSJdLFsxLDAsIlggXFx0aW1lcyAoWSArIERZKSJdLFsyLDAsIlggXFx0aW1lcyBZICsgWCBcXHRpbWVzIERZIl0sWzIsMSwiWCBcXHRpbWVzIFkgKyBEKFggXFx0aW1lcyBZKSJdLFswLDEsIlxcdGF1IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV0sWzAsMiwiaWQgXFx0aW1lcyBvdXQiXSxbMiwzLCJkc3RsIl0sWzMsNCwiaWQgK1xcdGF1IiwyXSxbMSw0LCJvdXQiXV0= \begin{tikzcd}[ampersand replacement=\&] - {X \times DY} \&\& {X \times (Y + DY)} \&\& {X \times Y + X \times DY} \\ - {D(X \times Y)} \&\&\&\& {X \times Y + D(X \times Y)} + {X \times DY} \& {X \times (Y + DY)} \& {X \times Y + X \times DY} \\ + {D(X \times Y)} \&\& {X \times Y + D(X \times Y)} + \arrow["{id \times out}", from=1-1, to=1-2] \arrow["\tau", dashed, from=1-1, to=2-1] - \arrow["{id \times out}", from=1-1, to=1-3] - \arrow["dstl", from=1-3, to=1-5] - \arrow["{id +\tau}"', from=1-5, to=2-5] - \arrow["out", from=2-1, to=2-5] + \arrow["dstl", from=1-2, to=1-3] + \arrow["{id +\tau}"', from=1-3, to=2-3] + \arrow["out", from=2-1, to=2-3] \end{tikzcd} \tag*{(D3)}\label{D3} \end{equation*} \end{itemize} \end{lemma} -\begin{proof} - We will make use of the fact that every \(DX\) is a terminal coalgebra: - \begin{itemize} - \item[\ref{D1}] These follow by definition of \(now\) and \(later\): - \begin{alignat*}{3} - & out \circ now & & = out \circ out^{-1} \circ i_1 & = i_1 - \\&out \circ later &&= out \circ out^{-1} \circ i_2 &= i_2 - \end{alignat*} - \item[\ref{D2}] We define \(f^* = \;\coalg{\alpha} \circ i_1\), where \(\coalg{\alpha}\) is the unique coalgebra morphism in this diagram: - % https://q.uiver.app/#q=WzAsNSxbMCwxLCJEWCArIERZIl0sWzcsMSwiWSArIChEWCArIERZKSJdLFswLDAsIkRYIl0sWzAsMiwiRFkiXSxbNywyLCJZICsgRFkiXSxbMCwxLCJcXGFscGhhIDo9IFsgWyBbIGlfMSAsIGlfMiBcXGNpcmMgaV8yIF0gXFxjaXJjIChvdXQgXFxjaXJjIGYpICwgaV8yIFxcY2lyYyBpXzEgXSBcXGNpcmMgb3V0ICwgKGlkICsgaV8yKSBcXGNpcmMgb3V0IF0iXSxbMiwwLCJpXzEiXSxbMCwzLCJcXGNvYWxne1xcYWxwaGF9IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV0sWzMsNCwib3V0Il0sWzEsNCwiaWQgKyBcXGNvYWxne1xcYWxwaGF9IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV1d - \[ - \begin{tikzcd}[ampersand replacement=\&] - DX \\ - {DX + DY} \&\&\&\&\&\&\& {Y + (DX + DY)} \\ - DY \&\&\&\&\&\&\& {Y + DY} - \arrow["{\alpha := [ [ [ i_1 , i_2 \circ i_2 ] \circ (out \circ f) , i_2 \circ i_1 ] \circ out , (id + i_2) \circ out ]}", from=2-1, to=2-8] - \arrow["{i_1}", from=1-1, to=2-1] - \arrow["{\coalg{\alpha}}", dashed, from=2-1, to=3-1] - \arrow["out", from=3-1, to=3-8] - \arrow["{id + \coalg{\alpha}}", dashed, from=2-8, to=3-8] - \end{tikzcd} - \] - - Note that \(\coalg{\alpha} \circ i_2 = id : (DY, out) \rightarrow (DY, out)\), by uniqueness of the identity morphism and the fact that \(\coalg{\alpha} \circ i_2\) is a coalgebra morphism, since - \begin{alignat*}{1} - & out \circ \coalg{\alpha} \circ i_2 - \\=\;&(id+\coalg{\alpha}) \circ \alpha \circ i_2 - \\=\;&(id + \coalg{\alpha}) \circ (id + i_2) \circ out - \\=\;&(id + \coalg{\alpha} \circ i_2) \circ out - \end{alignat*} - Let us verify that \(f^*\) indeed satisfies the requisite property: - \begin{alignat*}{1} - & out \circ \coalg{\alpha} \circ i_1 - \\=\;&(id + \coalg{\alpha}) \circ \alpha \circ i_1 - \\=\;&(id + \coalg{\alpha}) \circ [ [ i_1 , i_2 \circ i_2 ] \circ out \circ f , i_2 \circ i_1 ] \circ out - \\=\;&[ [ (id + \coalg{\alpha}) \circ i_1 , (id + \coalg{\alpha}) \circ i_2 \circ i_2 ] \circ out \circ f , (id + \coalg{\alpha}) \circ i_2 \circ i_1 ] \circ out - \\=\;&[ [ i_1 , i_2 \circ \coalg{\alpha} \circ i_2 ] \circ out \circ f , i_2 \circ \coalg{\alpha} \circ i_1 ] \circ out - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ out. - \end{alignat*} - - We are left to check uniqueness of \(f^*\). Let \(g : DX \rightarrow DY\) and \(out \circ g = [ out \circ f , i_2 \circ g ] \circ out\). - Note that \([ g , id ] : DX + DY \rightarrow DY\) is a coalgebra morphism, since - \begin{alignat*}{1} - & out \circ [ g , id ] - \\=\;&[ out \circ g , out ] - \\=\;&[ [ out \circ f , i_2 \circ g ] \circ out , out] - \\=\;&[ [ [ i_1 , i_2 ] \circ out \circ f , i_2 \circ g ] \circ out , (id + id) \circ out ] - \\=\;&[ [ [ i_1 , i_2 \circ [g , id] \circ i_2 ] \circ out \circ f , i_2 \circ [g , id] \circ i_1 ] \circ out , (id + [g , id] \circ i_2) \circ out ] - \\=\;&[ [ [ (id + [g , id]) \circ i_1 , (id + [g , id]) \circ i_2 \circ i_2 ] \circ out \circ f , (id + [g , id]) \circ i_2 \circ i_1 ] \circ out - \\ \;&, (id + [g , id]) \circ (id + i_2) \circ out ] - \\=\;&(id + [g , id]) \circ [ [ [ i_1 , i_2 \circ i_2 ] \circ out \circ f , i_2 \circ i_1 ] \circ out , (id + i_2) \circ out ]. - \end{alignat*} - - Thus, \([ g , id ] = \coalg{\alpha}\) by uniqueness of \(\coalg{\alpha}\). - It follows that indeed \[g = [ g , id ] \circ i_1 =\;\coalg{\alpha} \circ i_1 = f^*.\] - \item[\ref{D3}] Take \(\tau := \coalg{dstl \circ (id \times out)} : X \times DY \rightarrow D(X \times Y)\), the requisite property then follows by definition. - \qedhere - \end{itemize} -\end{proof} - -\begin{lemma} +\begin{lemma}[\agdaref{Monad.Instance.Delay}] The following properties of \(\mathbf{D}\) hold: \begin{enumerate} \item \(out \circ Df = (f + Df) \circ out\) @@ -259,178 +152,46 @@ Since \(DX\) is defined as a terminal coalgebra, we can define morphisms via cor \item \(later \circ f^* = {(later \circ f)}^* = f^* \circ later\) \end{enumerate} \end{lemma} -\begin{proof} These identities follow by use of \autoref{lem:delay}: - \begin{itemize} - \item[1.] Note that definitionally: \(Df = {(now \circ f)}^*\) for any \(f : X \rightarrow TY\). The statement is then simply a consequence of~\ref{D1} and~\ref{D2}: - \begin{alignat*}{1} - & out \circ Df - \\=\;&out \circ {(now \circ f)}^* - \\=\;&[ out \circ now \circ f , i_2 \circ {(now \circ f)}^* ] \circ out\tag*{\ref{D2}} - \\=\;&(f + Df) \circ out.\tag*{\ref{D1}} - \end{alignat*} - \item[2.] By uniqueness of \(f^*\) it suffices to show: - \begin{alignat*}{1} - & out \circ [ f , {(later \circ f)}^* ] \circ out - \\=\;&[ out \circ f , out \circ {(later \circ f)}^* ] \circ out - \\=\;&[out \circ f , [ out \circ later \circ f , i_2 \circ {(later \circ f)}^* ] \circ out ] \circ out\tag*{\ref{D2}} - \\=\;&[out \circ f , i_2 \circ [ f , {(later \circ f)}^* ] \circ out ] \circ out.\tag*{\ref{D1}} - \end{alignat*} - \item[3.] - This equational chain follows by monicity of \(out\): - \begin{alignat*}{1} - & out \circ {(later \circ f)}^* - \\=\;&[ out \circ later \circ f , i_2 \circ {(later \circ f)}^*] \circ out\tag*{\ref{D2}} - \\=\;&i_2 \circ [ f , {(later \circ f)}^*] \circ out\tag*{\ref{D1}} - \\=\;&i_2 \circ f^* - \\=\;&out \circ later \circ f^*\tag*{\ref{D1}} - \\=\;&i_2 \circ f^*\tag*{\ref{D1}} - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ i_2 - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ out \circ later\tag*{\ref{D1}} - \\=\;&out \circ f^* \circ later. \tag*{\ref{D2}} - \end{alignat*} - \end{itemize} - Thus, the postulated properties have been proven. -\end{proof} -\begin{lemma} +\begin{lemma}[\agdaref{Monad.Instance.Delay}] \(\mathbf{D} := (D, now, {(-)}^*)\) is a Kleisli triple. \end{lemma} -\begin{proof} - We will now use the properties proven in \autoref{lem:delay} to prove the Kleisli triple laws: - \begin{itemize} - \item[\ref{K1}] - By uniqueness of \(now^*\) it suffices to show that \(out \circ id = [ out \circ now , i_2 \circ id ] \circ out\) which instantly follows by~\ref{D1}. - \item[\ref{K2}] Let \(f : X \rightarrow DY\). We proceed by monicity of \(out\): - \begin{alignat*}{1} - & out \circ f^* \circ now - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ out \circ now\tag*{\ref{D2}} - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ i_1\tag*{\ref{D1}} - \\=\;&out \circ f. - \end{alignat*} - \item[\ref{K3}] Let \(f : Y \rightarrow Z, g : X \rightarrow Z\) to show \(f^* \circ g^* = {(f^* \circ g)}^*\) by uniqueness of \({(f^* \circ g)}^*\) it suffices to show: - \begin{alignat*}{1} - & out \circ f^* \circ g^* - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ out \circ g^*\tag*{\ref{D2}} - \\=\;&[ out \circ f , i_2 \circ f^* ] \circ [ out \circ g , i_2 \circ g^* ] \circ out\tag*{\ref{D2}} - \\=\;&[ [ out \circ f , i_2 \circ f^* ] \circ out \circ g , i_2 \circ f^* \circ g^* ] \circ out - \\=\;&[ out \circ f^* \circ g , i_2 \circ f^* \circ g^* ] \circ out.\tag*{\ref{D2}} - \end{alignat*} - \end{itemize} - This concludes the proof. -\end{proof} Terminality of the coalgebras \({(DX, out : DX \rightarrow X + DX)}_{X \in \obj{\C}}\) yields the following proof principle. \begin{remark}[Proof by coinduction]~\label{rem:coinduction} Given two morphisms \(f, g : X \rightarrow DY\). To show that \(f = g\) it suffices to show that there exists a coalgebra structure \(\alpha : X \rightarrow Y + X\) such that the following diagrams commute: - % https://q.uiver.app/#q=WzAsOCxbMCwwLCJYIl0sWzAsMSwiRFkiXSxbMiwxLCJZICsgRFkiXSxbMiwwLCJZICsgWCJdLFs0LDAsIlgiXSxbNCwxLCJEWSJdLFs2LDAsIlkgKyBYIl0sWzYsMSwiWSArIERZIl0sWzEsMiwib3V0Il0sWzAsMywiXFxhbHBoYSJdLFswLDEsImYiXSxbMywyLCJpZCArIGYiXSxbNCw2LCJcXGFscGhhIl0sWzQsNSwiZyJdLFs2LDcsImlkICsgZyJdLFs1LDcsIm91dCJdXQ== + % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiRFkiXSxbMiwxLCJZICsgRFkiXSxbMiwwLCJZICsgWCJdLFsxLDIsIm91dCJdLFswLDMsIlxcYWxwaGEiXSxbMCwxLCJmIl0sWzMsMiwiaWQgKyBmIl1d \[ - \begin{tikzcd}[ampersand replacement=\&] - X \&\& {Y + X} \&\& X \&\& {Y + X} \\ - DY \&\& {Y + DY} \&\& DY \&\& {Y + DY} - \arrow["out", from=2-1, to=2-3] + \begin{tikzcd} + X && {Y + X} \\ + DY && {Y + DY} \arrow["\alpha", from=1-1, to=1-3] \arrow["f", from=1-1, to=2-1] \arrow["{id + f}", from=1-3, to=2-3] - \arrow["\alpha", from=1-5, to=1-7] - \arrow["g", from=1-5, to=2-5] - \arrow["{id + g}", from=1-7, to=2-7] - \arrow["out", from=2-5, to=2-7] + \arrow["out", from=2-1, to=2-3] + \end{tikzcd} + \] + % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzAsMSwiRFkiXSxbMiwwLCJZICsgWCJdLFsyLDEsIlkgKyBEWSJdLFswLDIsIlxcYWxwaGEiXSxbMCwxLCJnIl0sWzIsMywiaWQgKyBnIl0sWzEsMywib3V0Il1d + \[ + \begin{tikzcd} + X && {Y + X} \\ + DY && {Y + DY} + \arrow["\alpha", from=1-1, to=1-3] + \arrow["g", from=1-1, to=2-1] + \arrow["{id + g}", from=1-3, to=2-3] + \arrow["out", from=2-1, to=2-3] \end{tikzcd} \] Uniqueness of the coalgebra morphism \(\coalg{\alpha} : (X, \alpha) \rightarrow (DY, out)\) then results in \(f = g\). \end{remark} -\begin{lemma} +\begin{lemma}[\agdaref{Monad.Instance.Delay.Strong}] \(\mathbf{D}\) is a strong monad. \end{lemma} -\begin{proof} - Most of the following proofs are done via coinduction (Remark~\ref{rem:coinduction}). We will only give the requisite coalgebra structure. The proofs that the diagrams commute can be looked up in the Agda formalization. - - First we need to show naturality of \(\tau \), i.e.\ we need to show that - \[\tau \circ (f \times {(now \circ g)}^*) = {(now \circ (f \times g))}^* \circ \tau \] - The coalgebra for coinduction is: - % https://q.uiver.app/#q=WzAsNixbMCwwLCJYIFxcdGltZXMgRFkiXSxbMCwyLCJEKEFcXHRpbWVzIEIpIl0sWzQsMiwiQVxcdGltZXMgQiArIEQoQSBcXHRpbWVzIEIpIl0sWzEsMCwiWCBcXHRpbWVzIChZICsgRFkpIl0sWzIsMCwiWCBcXHRpbWVzIFkgKyBYIFxcdGltZXMgRFkiXSxbNCwwLCJBIFxcdGltZXMgQiArIFggXFx0aW1lcyBEWSJdLFsxLDIsIm91dCJdLFswLDMsImlkIFxcdGltZXMgb3V0Il0sWzMsNCwiZHN0bCJdLFswLDEsIlxcY29hbGd7LX0iLDAseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJkYXNoZWQifX19XSxbNCw1LCJmIFxcdGltZXMgZyArIGlkIl0sWzUsMiwiaWQgKyBcXGNvYWxney19IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV1d - \[ - \begin{tikzcd}[ampersand replacement=\&] - {X \times DY} \& {X \times (Y + DY)} \& {X \times Y + X \times DY} \&\& {A \times B + X \times DY} \\ - \\ - {D(A\times B)} \&\&\&\& {A\times B + D(A \times B)} - \arrow["out", from=3-1, to=3-5] - \arrow["{id \times out}", from=1-1, to=1-2] - \arrow["dstl", from=1-2, to=1-3] - \arrow["{\coalg{\text{-}}}", dashed, from=1-1, to=3-1] - \arrow["{f \times g + id}", from=1-3, to=1-5] - \arrow["{id + \coalg{\text{-}}}", dashed, from=1-5, to=3-5] - \end{tikzcd} - \] - We write \(\coalg{\text{-}}\) to abbreviate the used coalgebra, i.e.\ in the previous diagram - \[\coalg{\text{-}} = \coalg{(f\times g + id) \circ dstl \circ (id \times out)}.\] - - Next we check the strength laws: - \begin{itemize} - \item[\ref{S1}] To show that \({(now \circ \pi_2)}^* \circ \tau = \pi_2\) we do coinduction using the following coalgebra: - % https://q.uiver.app/#q=WzAsNixbMCwwLCIxIFxcdGltZXMgRFgiXSxbMCwxLCJEWCJdLFszLDAsIlggKyAxIFxcdGltZXMgRFgiXSxbMywxLCJYICsgRFgiXSxbMSwwLCIxIFxcdGltZXMgWCArIERYIl0sWzIsMCwiMSBcXHRpbWVzIFggKyAxIFxcdGltZXMgRFgiXSxbMSwzLCJvdXQiXSxbMCwxLCJcXGNvYWxney19IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV0sWzIsMywiaWQgKyBcXGNvYWxney19Il0sWzAsNCwiaWQgXFx0aW1lcyBvdXQiXSxbNCw1LCJkc3RsIl0sWzUsMiwiXFxwaV8yICsgaWQiXV0= - \[ - \begin{tikzcd}[ampersand replacement=\&] - {1 \times DX} \& {1 \times X + DX} \& {1 \times X + 1 \times DX} \& {X + 1 \times DX} \\ - DX \&\&\& {X + DX} - \arrow["out", from=2-1, to=2-4] - \arrow["{\coalg{\text{-}}}", dashed, from=1-1, to=2-1] - \arrow["{id + \coalg{\text{-}}}", from=1-4, to=2-4] - \arrow["{id \times out}", from=1-1, to=1-2] - \arrow["dstl", from=1-2, to=1-3] - \arrow["{\pi_2 + id}", from=1-3, to=1-4] - \end{tikzcd} - \] - \item[\ref{S2}] We don't need coinduction to show \(\tau \circ (id \times now) = now\), but we will first need to establish - \begin{equation*} - \tau \circ (id \times out^{-1}) = out^{-1} \circ (id + \tau) \circ dstl, \tag*{(\(\ast \))}\label{helper} - \end{equation*} - which is a direct consequence of~\ref{D3}. - With this we are done by - \begin{alignat*}{1} - & \tau \circ (id \times now) \\ - =\; & \tau \circ (id \times out^{-1}) \circ (id \times i_1) \\ - =\; & out^{-1} \circ (id + \tau) \circ dstl \circ (id \times i_1)\tag*{\ref*{helper}} \\ - =\; & now. - \end{alignat*} - \item[\ref{S3}] We need to check \(\tau^* \circ \tau = \tau \circ (id \times id^*)\), the coalgebra for coinduction is: - % https://q.uiver.app/#q=WzAsNixbMCwwLCJYIFxcdGltZXMgRERZIl0sWzAsMiwiRChYXFx0aW1lcyBZKSJdLFsxLDAsIlggXFx0aW1lcyAoRFkgKyBERFkpIl0sWzIsMCwiWCBcXHRpbWVzIERZICsgWCBcXHRpbWVzIEREWSJdLFsyLDIsIlggXFx0aW1lcyBZICsgRChYIFxcdGltZXMgWSkiXSxbMiwxLCJYIFxcdGltZXMgWSArIFggXFx0aW1lcyBERFkiXSxbMCwxLCJcXGNvYWxney19IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV0sWzAsMiwiaWQgXFx0aW1lcyBvdXQiXSxbMiwzLCJkc3RsIl0sWzEsNCwib3V0Il0sWzUsNCwiaWQgKyBcXGNvYWxney19IiwyXSxbMyw1LCJbIChpZCArIChpZCBcXHRpbWVzIG5vdykpIFxcY2lyYyBkc3RsIFxcY2lyYyAoaWQgXFx0aW1lcyBvdXQpICwgaV8yIF0iLDJdXQ== - \[ - \begin{tikzcd}[ampersand replacement=\&] - {X \times DDY} \& {X \times (DY + DDY)} \& {X \times DY + X \times DDY} \\ - \&\& {X \times Y + X \times DDY} \\ - {D(X\times Y)} \&\& {X \times Y + D(X \times Y)} - \arrow["{\coalg{\text{-}}}", dashed, from=1-1, to=3-1] - \arrow["{id \times out}", from=1-1, to=1-2] - \arrow["dstl", from=1-2, to=1-3] - \arrow["out", from=3-1, to=3-3] - \arrow["{id + \coalg{\text{-}}}"', from=2-3, to=3-3] - \arrow["{[ (id + (id \times now)) \circ dstl \circ (id \times out) , i_2 ]}"', from=1-3, to=2-3] - \end{tikzcd} - \] - \item[\ref{S4}] To show \(D\alpha \circ \tau = \tau \circ (id \times \tau) \circ \alpha \) by coinduction we take the coalgebra: - % https://q.uiver.app/#q=WzAsNixbMCwwLCIoWCBcXHRpbWVzIFkpIFxcdGltZXMgRFoiXSxbMCwyLCJEKFggXFx0aW1lcyBZIFxcdGltZXMgWikiXSxbMiwyLCJYIFxcdGltZXMgWSBcXHRpbWVzIFogKyBEKFggXFx0aW1lcyBZIFxcdGltZXMgWikiXSxbMiwxLCJYIFxcdGltZXMgWSAgXFx0aW1lcyBaICsgKFggXFx0aW1lcyBZKSBcXHRpbWVzIERaIl0sWzEsMCwiKFggXFx0aW1lcyBZKSBcXHRpbWVzIChaKyBEWikiXSxbMiwwLCIoWFxcdGltZXMgWSkgXFx0aW1lcyBaICsgKFggXFx0aW1lcyBZKSBcXHRpbWVzIERaIl0sWzAsMSwiXFxjb2FsZ3stfSIsMCx7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImRhc2hlZCJ9fX1dLFsxLDIsIm91dCJdLFszLDIsImlkICtcXGNvYWxney19IiwyXSxbMCw0LCJpZCBcXHRpbWVzIG91dCJdLFs0LDUsImRzdGwiXSxbNSwzLCJcXGxhbmdsZSBcXHBpXzEgXFxjaXJjIFxccGlfMSAsIFxcbGFuZ2xlIFxccGlfMiBcXGNpcmMgXFxwaV8xICwgXFxwaV8yIFxccmFuZ2xlIFxccmFuZ2xlICsgaWQiLDJdXQ== - \[ - \begin{tikzcd}[ampersand replacement=\&] - {(X \times Y) \times DZ} \& {(X \times Y) \times (Z+ DZ)} \& {(X\times Y) \times Z + (X \times Y) \times DZ} \\ - \&\& {X \times Y \times Z + (X \times Y) \times DZ} \\ - {D(X \times Y \times Z)} \&\& {X \times Y \times Z + D(X \times Y \times Z)} - \arrow["{\coalg{\text{-}}}", dashed, from=1-1, to=3-1] - \arrow["out", from=3-1, to=3-3] - \arrow["{id +\coalg{\text{-}}}"', from=2-3, to=3-3] - \arrow["{id \times out}", from=1-1, to=1-2] - \arrow["dstl", from=1-2, to=1-3] - \arrow["{\langle \pi_1 \circ \pi_1 , \langle \pi_2 \circ \pi_1 , \pi_2 \rangle \rangle + id}"', from=1-3, to=2-3] - \end{tikzcd} - \] - \end{itemize} - Thus, it has been shown that \(\mathbf{D}\) is a strong monad. -\end{proof} To prove that \(\mathbf{D}\) is commutative we will use another proof principle previously called the \textit{Solution Theorem}~\cite{sol-thm} or \textit{Parametric Corecursion}~\cite{param-corec}. In our setting this takes the following form. -\begin{definition} +\begin{definition}[\agdaref{Monad.Instance.Delay}] We call a morphism \(g : X \rightarrow D (Y + X)\) \textit{guarded} if there exists a morphism \(h : X \rightarrow Y + D(Y+X)\) such that the following diagram commutes: % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIl0sWzMsMCwiRCAoWSArWCkiXSxbMywxLCIoWSArIFgpICsgRChZICsgWCkiXSxbMCwxLCJZICsgRChZK1gpIl0sWzAsMSwiZyJdLFsxLDIsIm91dCJdLFszLDIsImlfMSArIGlkIiwyXSxbMCwzLCJoIiwyXV0= \[ @@ -445,33 +206,14 @@ To prove that \(\mathbf{D}\) is commutative we will use another proof principle \] \end{definition} -\begin{corollary}[Solution Theorem]\label{cor:solution} +\begin{corollary}[Solution Theorem (\agdaref{Monad.Instance.Delay})]\label{cor:solution} Let \(g : X \rightarrow D(Y + X)\) be guarded.\ \textit{Solutions} of g are unique, i.e.\ given two morphisms \(f, i : X \rightarrow DY\) then \(f = {[ now , f ]}^* \circ g\) and \(i = {[ now , i ]}^* \circ g\) already implies \(f = i\). \end{corollary} -\begin{proof} - Let \(g : X \rightarrow D(Y + X)\) be guarded by \(h : X \rightarrow Y + D(Y+X)\) and \(f, i : X \rightarrow DY\) be solutions of g. - It suffices to show \({[ now , f ]}^* = {[ now , i ]}^*\), because then follows that - \[f = {[ now , f ]}^* \circ g = {[ now , i ]}^* \circ g = i.\] - This is proven by coinduction using - % https://q.uiver.app/#q=WzAsNSxbMCwxLCJEWSJdLFszLDEsIlkgKyBEWSJdLFswLDAsIkQoWSArIFgpIl0sWzEsMCwiKFkgKyBYKSArIEQoWStYKSJdLFszLDAsIlkgKyBEKFkrWCkiXSxbMCwxLCJvdXQiXSxbMiwzLCJvdXQiXSxbMyw0LCJbIFsgaV8xICwgaCBdICwgaV8yIF0iXSxbNCwxLCJpZCArIFxcY29hbGd7LX0iXSxbMiwwLCJcXGNvYWxney19IiwwLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIn19fV1d - \[ - \begin{tikzcd}[ampersand replacement=\&] - {D(Y + X)} \& {(Y + X) + D(Y+X)} \&\& {Y + D(Y+X)} \\ - DY \&\&\& {Y + DY} - \arrow["out", from=2-1, to=2-4] - \arrow["out", from=1-1, to=1-2] - \arrow["{[ [ i_1 , h ] , i_2 ]}", from=1-2, to=1-4] - \arrow["{id + \coalg{\text{-}}}", from=1-4, to=2-4] - \arrow["{\coalg{\text{-}}}", dashed, from=1-1, to=2-1] - \end{tikzcd} - \] - which concludes the proof. -\end{proof} Let us record some facts that we will use to prove commutativity of \(\mathbf{D}\): -\begin{corollary} +\begin{corollary}[\agdaref{Monad.Instance.Delay.Strong}, \agdaref{Monad.Instance.Delay.Commutative}] These properties of \(\tau \) and \(\sigma \) hold: \begin{alignat*}{2} & out \circ \tau & & = (id + \tau) \circ dstl \circ (id \times out)\tag*{(\(\tau_1\))}\label{tau1} @@ -481,87 +223,9 @@ Let us record some facts that we will use to prove commutativity of \(\mathbf{D} \end{alignat*} \end{corollary} -\begin{proof} - \begin{itemize} - \item[\ref{tau1}] This is just~\ref{D3} restated. - \item[\ref{sigma1}] Indeed, by use of~\ref{tau1} - \begin{alignat*}{1} - & out \circ \sigma - \\=\;&out \circ Dswap \circ \tau \circ swap - \\=\;&(swap + Dswap) \circ out \circ \tau \circ swap - \\=\;&(swap + Dswap) \circ (id + \tau) \circ dstl \circ (id \times out) \circ swap \tag*{\ref{tau1}} - \\=\;&(swap + Dswap) \circ (id + \tau) \circ dstl \circ swap \circ (out \times id) - \\=\;&(swap + Dswap) \circ (id + \tau) \circ (swap + swap) \circ dstr \circ (out \times id) - \\=\;&(id + \sigma) \circ dstr \circ (out \times id). - \end{alignat*} - \item[\ref{tau2}] By monicity of \(out\): - \begin{alignat*}{1} - & out \circ \tau \circ (id \times out^{-1}) - \\=\;&(id + \tau) \circ dstl \circ (id \times out) \circ (id \times out^{-1})\tag*{\ref{tau1}} - \\=\;&(id + \tau) \circ dstl. - \end{alignat*} - \item[\ref{sigma2}] Again, by monicity of \(out\): - \begin{alignat*}{1} - & out \circ \sigma \circ (out^{-1} \times id) - \\=\;&(id + \sigma) \circ dstr \circ (out \times id) \circ (out^{-1} \times id)\tag*{\ref{sigma1}} - \\=\;&(id + \sigma) \circ dstr.\tag*{\qedhere} - \end{alignat*} - \end{itemize} -\end{proof} - -\begin{theorem} +\begin{theorem}[\agdaref{Monad.Instance.Delay.Commutative}] \(\mathbf{D}\) is commutative. \end{theorem} -\begin{proof} - Using \autoref{cor:solution} it suffices to show that both \(\tau^* \circ \sigma \) and \(\sigma^* \circ \tau \) are solutions of some guarded morphism \(g\). - - Let \(w := (dstr + dstr) \circ dstl \circ (out \times out)\) and take - \[g := out^{-1} \circ [ i_1 + D i_1 \circ \sigma , i_2 \circ [ D i_1 \circ \tau , later \circ now \circ i_2 ] ] \circ w.\] - Note that \(g\) is trivially guarded by \([ id + D i_1 \circ \sigma , i_2 \circ [ D i_1 \circ \tau , later \circ now \circ i_2 ] ] \circ w\). - It thus suffices to show that both \(\tau^* \circ \sigma \) and \(\sigma^* \circ \tau \) are solutions of \(g\). Consider - - \[\tau^* \circ \sigma = out^{-1} \circ [ id + \sigma , i_2 \circ [ \tau , later \circ \tau^* \circ \sigma ] ] \circ w = {[ now , \tau^* \circ \sigma]}^* \circ g, \] - and - \[\sigma^* \circ \tau = out^{-1} \circ [ id + \sigma , i_2 \circ [ \tau , later \circ \sigma^* \circ \tau ] ] \circ w = {[ now , \sigma^* \circ \tau]}^* \circ g. \] - - The last step in both equations can be proven generally for any \(f : DX \times DY \rightarrow D(X \times Y)\) using monicity of \(out\): - \begin{alignat*}{1} - & out \circ {[ now , f ]}^* \circ out^{-1} \circ [ i_1 + D i_1 \circ \sigma , i_2 \circ [ D i_1 \circ \tau , later \circ now \circ i_2 ] ] \circ w - \\=\; & [ out \circ [ now , f ] , i_2 \circ {[ now , f ]}^* ] \circ [ i_1 + D i_1 \circ \sigma , i_2 \circ [ D i_1 \circ \tau , later \circ now \circ i_2 ] ] \circ w\tag*{\ref{D2}} - \\=\; & [ id + \sigma , i_2 \circ {[ now , f]}^* \circ [ D i_1 \circ \tau , later \circ now \circ i_2 ] ] \circ w\tag*{\ref{D1}} - \\=\; & [ id + \sigma , i_2 \circ [ \tau , {[ now , f]}^* \circ later \circ now \circ i_2 ] ] \circ w - \\=\; & [ id + \sigma , i_2 \circ [ \tau , {[ later \circ now , later \circ f]}^* \circ now \circ i_2 ] ] \circ w - \\=\; & [ id + \sigma , i_2 \circ [ \tau , later \circ f ] ] \circ w. - \end{alignat*} - - Let us now check the first step in the equation for \(\sigma^* \circ \tau \), the same step for \(\tau^* \circ \sigma \) is then symmetric. Again, we proceed by monicity of \(out\), which yields - \begin{alignat*}{1} - & out \circ \sigma^* \circ \tau - \\=\;&[ out \circ \sigma , i_2 \circ \sigma^* ] \circ out \circ \tau\tag*{\ref{D2}} - \\=\;&[ out \circ \sigma , i_2 \circ \sigma^* ] \circ (id + \tau) \circ dstl \circ (id \times out)\tag*{\ref{D3}} - \\=\;&[ (id + \sigma) \circ dstr \circ (out \times id) , i_2 \circ \sigma^* \circ \tau ] \circ dstl \circ (id \times out)\tag*{\ref{sigma1}} - \\=\;&[ (id + \sigma) \circ dstr \circ (out \times id) , i_2 \circ \sigma^* \circ \tau ] \circ ((out^{-1} \times id) + (out^{-1} \times id)) \circ dstl \circ (out \times out) - \\=\;&[ (id + \sigma) \circ dstr, i_2 \circ \sigma^* \circ \tau \circ (out^{-1} \times id)] \circ dstl \circ (out \times out) - \\=\;&[ (id + \sigma) \circ dstr, i_2 \circ \sigma^* \circ D(out^{-1} \times id) \circ \tau] \circ dstl \circ (out \times out) - \\=\;&[ (id + \sigma) \circ dstr, i_2 \circ {(\sigma \times (out^{-1} \times id))}^* \circ \tau] \circ dstl \circ (out \times out) - \\=\;&[ (id + \sigma) \circ dstr, i_2 \circ {(out^{-1} \circ (id + \sigma) \circ dstr)}^* \circ \tau] \circ dstl \circ (out \times out)\tag*{\ref{sigma2}} - \\=\;&[ (id + \sigma) \circ dstr, i_2 \circ {(out^{-1} \circ (id + \sigma))}^* \circ Ddstr \circ \tau] \circ dstl \circ (out \times out) - \\=\;&[ (id + \sigma) \circ dstr, i_2 \circ {(out^{-1} \circ (id + \sigma))}^* \circ [D i_1 \circ \tau , D i_2 \circ \tau] \circ dstr] \circ dstl \circ (out \times out)\tag*{\ref{Dcomm-helper}} - \\=\;&[ (id + \sigma), i_2 \circ {(out^{-1} \circ (id + \sigma))}^* \circ [D i_1 \circ \tau , D i_2 \circ \tau]] \circ (dstr + dstr) \circ dstl \circ (out \times out) - \\=\;&[ (id + \sigma), i_2 \circ [{(out^{-1} \circ i_1)}^* \circ \tau , {(out^{-1} \circ i_2 \circ \sigma)}^* \circ \tau]] \circ w - \\=\;&[ (id + \sigma), i_2 \circ [ \tau , {(later \circ \sigma)}^* \circ \tau]] \circ w \tag*{\ref{K1}} - \\=\;&[ (id + \sigma), i_2 \circ [ \tau , later \circ \sigma^* \circ \tau]] \circ w, - \end{alignat*} - where - \[Ddstr \circ \tau = [ Di_1 \circ \tau , Di_2 \circ \tau ] \circ dstr \tag*{(*)}\label{Dcomm-helper}\] - indeed follows by epicness of \(dstr^{-1}\): - \begin{alignat*}{1} - & Ddstr \circ \tau \circ dstr^{-1} - \\=\;&[ Ddstr \circ \tau \circ (i_1 \times id) , Ddstr \circ \tau \circ (i_2 \times id) ] - \\=\;&[ Ddstr \circ D(i_1 \times id) \circ \tau , Ddstr \circ D(i_2 \times id) \circ \tau ] - \\=\;&[ Di_1 \circ \tau , Di_2 \circ \tau ].\tag*{\qedhere} - \end{alignat*} -\end{proof} We have now seen that \(\mathbf{D}\) is strong and commutative, however it is not an equational lifting monad, since besides modeling non-termination, the delay monad also counts the execution time of a computation. This is a result of the too intensional notion of equality that this monad comes with. diff --git a/src/05_iteration.tex b/src/05_iteration.tex index e9af2fb..5371da2 100644 --- a/src/05_iteration.tex +++ b/src/05_iteration.tex @@ -3,7 +3,7 @@ In this chapter we will draw on the inherent connection between partiality and i \section{Elgot Algebras} Recall the following notion from~\cite{elgotalgebras}, previously called \emph{complete Elgot algebra}. -\begin{definition}[Guarded Elgot Algebra] +\begin{definition}[Guarded Elgot Algebra (\agdaref{Algebra.Elgot})] \ Given a functor \(H : \C \rightarrow \C\), a \emph{(H-)guarded Elgot algebra} consists of: % chktex 36 \begin{itemize} \item An object \(A \in \obj{\C}\), @@ -24,7 +24,7 @@ Consider an Elgot algebra over the identity functor \(Id : \C \rightarrow \C\) t The previous intuition gives rise to the following simpler definition that has been introduced in~\cite{uniformelgot}. -\begin{definition}[Elgot Algebra] +\begin{definition}[Elgot Algebra (\agdaref{Algebra.Elgot})] A \emph{(unguarded) Elgot Algebra}~\cite{uniformelgot} consists of: \begin{itemize} \item An object \(A \in \obj{\C}\), @@ -46,7 +46,7 @@ However, we will omit these proofs in most parts of the thesis, since they mostl Now, in this setting the simpler \ref{law:folding} axiom replaces the sophisticated \ref{law:guardedcompositionality} axiom. % chktex 2 Indeed, for \(Id\)-guarded Elgot algebras with a trivial algebra structure, the \ref{law:folding} and \ref{law:guardedcompositionality} axioms are equivalent~\cite{uniformelgot}, which is partly illustrated by the following Lemma. % chktex 2 -\begin{lemma} +\begin{lemma}[\agdaref{Algebra.Elgot}] Every Elgot algebra \((A , {(-)}^\sharp)\) satisfies the following additional axioms \begin{itemize} @@ -58,109 +58,12 @@ Indeed, for \(Id\)-guarded Elgot algebras with a trivial algebra structure, the \\ for any \(f : X \rightarrow A + (X + X)\). \end{itemize} \end{lemma} -\begin{proof} The proofs of the axioms build upon each other, we prove them one by one. - \begin{itemize} - \item \ref{law:compositionality}: First, note that \ref{law:folding} can equivalently be reformulated as % chktex 2 - \begin{equation*} - {((f^\sharp + id) \circ h)}^\sharp = {[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp \circ i_2, \tag{\textbf{Folding'}}\label{law:folding'} - \end{equation*} - since - \begin{alignat*}{1} - & {((f^\sharp + id) \circ h)}^\sharp - \\=\;&{(f^\sharp + h)}^\sharp \circ h\tag{\ref{law:uniformity}} - \\=\;&[f^\sharp , {(f^\sharp + h)}^\sharp \circ h ] \circ i_2 - \\=\;&[ id , {(f^\sharp + h)}^\sharp ] \circ (f^\sharp + h) \circ i_2 - \\=\;&{(f^\sharp + h)}^\sharp \circ i_2 \tag{\ref{law:fixpoint}} - \\=\;&{[ (id + i_1) \circ f , i_2 \circ h]}^\sharp \circ i_2. \tag{\ref{law:folding}} - \end{alignat*} - Using \ref{law:folding'}, it suffices to show that % chktex 2 - \[{[ (id + i_1) \circ f , i_2 \circ h]}^\sharp \circ i_2 = {([ (id + i_1) \circ f , i_2 \circ i_2 ] \circ [ i_1 , h ])}^\sharp \circ i_2.\] - Indeed, - \begin{alignat*}{1} - & {[ (id + i_1) \circ f , i_2 \circ h]}^\sharp \circ i_2 - \\=\;&[ id , {[ (id + i_1) \circ f , i_2 \circ h]}^\sharp ] \circ [ (id + i_1) \circ f , i_2 \circ h] \circ i_2 \tag{\ref{law:fixpoint}} - \\=\;&[ id , {[ (id + i_1) \circ f , i_2 \circ h]}^\sharp ] i_2 \circ h - \\=\;&{[ (id + i_1) \circ f , i_2 \circ h]}^\sharp \circ h - \\=\;&{[ (id + i_1) \circ f , i_2 \circ h]}^\sharp [ i_1 , h ] \circ i_2 - \\=\;&{([ (id + i_1) \circ f , i_2 \circ i_2 ] \circ [ i_1 , h ])}^\sharp \circ i_2.\tag{\ref{law:uniformity}} - \end{alignat*} - - \item \ref{law:stutter}: Let us first establish % chktex 2 - \begin{equation} - [ h , h ] = {(h + i_1)}^\sharp, \tag{*}\label{stutter-helper} - \end{equation} - which follows by - \begin{alignat*}{1} - & {(h + i_1)}^\sharp - \\=\;&[ id , {(h + i_1)}^\sharp ] \circ (h + i_1) \tag{\ref{law:fixpoint}} - \\=\;&[ h , {(h + i_1)}^\sharp \circ i_1 ] - \\=\;&[ h , [ id , {(h + i_1)}^\sharp ] \circ (h + i_1) \circ i_1 ] \tag{\ref{law:fixpoint}} - \\=\;&[ h , h ]. - \end{alignat*} - - Now we are done by - \begin{alignat*}{1} - & {([ h , h ] + id) \circ f}^\sharp - \\=\;&{({(h + i_1)}^\sharp + id) \circ f}^\sharp\tag{\ref{stutter-helper}} - \\=\;&{([(id + i_1) \circ (h + i_1) , i_2 \circ i_2] \circ [ i_1 , f])}^\sharp \circ i_2\tag{\ref{law:compositionality}} - \\=\;&{([h + i_1 \circ i_1 , i _2 \circ i_2] \circ [ i_1 , f])}^\sharp \circ (i_1 + id) \circ i_2 - \\=\;&{[ i_1 \circ h , [ h + i_1 , i_2 \circ i_2 ] \circ f ]}^\sharp \circ i_2. \tag{\ref{law:uniformity}} - \end{alignat*} - \item \ref{law:diamond}: Let \(h = [ i_1 \circ i_1 , i_2 + id ] \circ f\) and \(g = (id + \Delta) \circ f\). %chktex 2 - - First, note that - \begin{equation*} - [ id , g^\sharp ] = {[ i_1 , (id + i_2) \circ g ]}^\sharp, \tag{\(∗\)}\label{diamond-helper} - \end{equation*} - by \ref{law:fixpoint} and \ref{law:uniformity}: % chktex 2 - \begin{alignat*}{1} - & [ id , g^\sharp ] - \\=\;&[ id , [ id , g^\sharp ] \circ g ] \tag{\ref{law:fixpoint}} - \\=\;&[ id , [ id , {[ i_1 , (id + i_2) \circ g ]}^\sharp \circ i_2 ] \circ g ] \tag{\ref{law:uniformity}} - \\=\;&[ id , {[ i_1 , (id + i_2) \circ g ]}^\sharp ] \circ [ i_1 , (id + i_2) \circ g ] - \\=\;&{[ i_1 , (id + i_2) \circ g ]}^\sharp. \tag{\ref{law:fixpoint}} - \end{alignat*} - - It thus suffices to show that, - \begin{alignat*}{1} - & g^\sharp - \\=\;&{[ (id + i_1) \circ [ i_1 , (id + i_2) \circ g ] , i_2 \circ h ]}^\sharp \circ i_2 - \\=\;&{({[i_1 , (id + i_2) \circ g ]}^\sharp + h)}^\sharp \circ i_2\tag{\ref{law:folding}} - \\=\;&{([ i_1 , g^\sharp + id] \circ f)}^\sharp. - \end{alignat*} - Indeed, - \begin{alignat*}{1} - & g^\sharp - \\=\;&g^\sharp \circ [ id , id ] \circ i_2 - \\=\;&{[ (id + i_2) \circ g , f ]}^\sharp \circ i_2\tag{\ref{law:uniformity}} - \\=\;&{(([ id , id ] + id) \circ [ (i_1 + i_1) \circ g , (i_2 + id) \circ f ]) }^\sharp \circ i_2 - \\=\;&{[ i_1 , [ id + i_1 , i_2 \circ i_2 ] \circ [ (i_1 + i_1) \circ g , (i_2 + id) \circ f] ]}^\sharp \circ i_2 \circ i_2 \tag{\ref{law:stutter}} - \\=\;&{[ i_1 , [ [ i_1 , i_2 \circ i_2 \circ i_1 ] \circ g , [ i_2 \circ i_1 , i_2 \circ i_2 ] \circ f] ]}^\sharp \circ i_2 \circ i_2 - \\=\;&{[ i_1 , [ ( id + i_2 \circ i_1) \circ g , i_2 \circ \circ f] ]}^\sharp \circ i_2 \circ i_2 - \\=\;&{ [[ i_1 , (id + i_1 \circ i_2) \circ g ] , i_2 \circ h] }^\sharp \circ [ i_1 \circ i_1 , i_2 + id ] \circ i_2 \circ i_2\tag{\ref{law:uniformity}} - \\=\;&{ [[ i_1 , (id + i_1 \circ i_2) \circ g ] , i_2 \circ h ]}^\sharp \circ i_2 - \\=\;&{ [(id + i_1) \circ [ i_1 , (id + i_2) \circ g ] , i_2 \circ h ]}^\sharp \circ i_2 - \end{alignat*} - and - \begin{alignat*}{1} - & {([ i_1 , g^\sharp + id] \circ f)}^\sharp - \\=\;&{([i_1 \circ [id , g^\sharp] \circ i_1 , [ id , g^\sharp ] \circ i_2 + id ] \circ f)}^\sharp - \\=\;&{(([ id , g^\sharp ] + id) \circ h)}^\sharp - \\=\;&{(([[id , g^\sharp] , [id , g^\sharp] ] + id) \circ (i_2 + id) \circ h)}^\sharp - \\=\;&{[i_1 \circ [ id , g^\sharp ] , [ [id , g^\sharp] + i_1 , i_2 \circ i_2 ] \circ (i_2 + id) \circ h]}^\sharp \circ i_2 \tag{\ref{law:stutter}} - \\=\;&{([ id , g^\sharp ] + h)}^\sharp \circ i_2 - \\=\;&{({[ i_1 , (id + i_2) \circ g ]}^\sharp + h)}^\sharp \circ i_2,\tag{\ref{diamond-helper}} - \end{alignat*} - which concludes the proof. - \qedhere - \end{itemize} -\end{proof} Note that in~\cite{uniformelgot} it has been shown that the \ref{law:diamond} axiom implies \ref{law:compositionality}, yielding another definition of Elgot algebras only requiring the \ref{law:fixpoint}, \ref{law:uniformity} and \ref{law:diamond} axioms. % chktex 2 Let us now consider morphisms that are coherent with respect to the iteration operator. A special case being morphisms between Elgot algebras. -\begin{definition}[Iteration Preserving Morphisms] +\begin{definition}[Iteration Preserving Morphisms (\agdaref{Category.Construction.ElgotAlgebras})] Let \((A, {(-)}^{\sharp_a}), (B, {(-)}^{\sharp_b})\) be two Elgot algebras. A morphism \(f : X \times A \rightarrow B\) is called \textit{right iteration preserving} if @@ -179,187 +82,21 @@ Let us now consider morphisms that are coherent with respect to the iteration op We will now study the category of Elgot algebras and iteration preserving morphisms that we call \(\elgotalgs{\C}\). Let us introduce notation for morphisms between Elgot algebras: we denote an Elgot algebra morphism \(f : (A , {(-)}^{\sharp_a}) \rightarrow (B,{(-)}^{\sharp_b})\) as \(f : A \hookrightarrow B\), where we omit stating the iteration operator. -\begin{lemma}\label{lem:elgotalgscat} +\begin{lemma}[\agdaref{Category.Construction.ElgotAlgebras}]\label{lem:elgotalgscat} \(\elgotalgs{\C}\) is a category. \end{lemma} -\begin{proof} - It suffices to show that the identity morphism in \(\C \) is iteration preserving and the composite of two iteration preserving morphisms is also iteration preserving. - - Let \(A, B\) and \(C\) be Elgot algebras. - The identity trivially satisfies - \[id \circ f^{\sharp_a} = f^{\sharp_a} = {((id + id) \circ f)}^{\sharp_a}\] - for any \(f : X \rightarrow A + X\). - Given two iteration preserving morphisms \(f : B \hookrightarrow C, g : A \hookrightarrow B\), the composite is iteration preserving since - \begin{alignat*}{1} - & f \circ g \circ h^{\sharp_a} - \\=\;& f \circ {((g + id) \circ h)}^{\sharp_b} - \\=\;&{((f + id) \circ (g + id) \circ h)}^{\sharp_c} - \\=\;&{((f \circ g + id) \circ h)}^{\sharp_c} - \end{alignat*} - for any \(h : X \rightarrow A + X\). -\end{proof} Products and exponentials of Elgot algebras can be formed in a canonical way, which is illustrated by the following two Lemmas. -\begin{lemma}\label{lem:elgotalgscart} +\begin{lemma}[\agdaref{Category.Construction.ElgotAlgebras.Products}]\label{lem:elgotalgscart} If \(\C\) is a Cartesian category, so is \(\elgotalgs{\C}\). \end{lemma} -\begin{proof} - Let \(1\) be the terminal object of \(\C \). Given \(f : X \rightarrow 1 + X\) we define the iteration \(f^\sharp =\;! : X \rightarrow 1\) as the unique morphism into the terminal object. The Elgot algebra laws follow instantly by uniqueness of \(!\) and \((1 , !)\) is the terminal Elgot algebra since for every Elgot algebra \(A\) the morphism \(! : A \rightarrow 1\) extends to a morphism between Elgot algebras by uniqueness. % chktex 40 - Let \(A, B \in \vert\elgotalgs{\C}\vert \) and \(A \times B\) be the product of \(A\) and \(B\) in \(\C \). Given \(f : X \rightarrow (A \times B) + X\) we define the iteration as: - \[f^\sharp = \langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle : X \rightarrow A \times B\] - Now, we show that \(A \times B\) indeed constitutes an Elgot algebra: - \begin{itemize} - \item \textbf{Fixpoint}: Let \(f : X \rightarrow (A \times B) + X\). The requisite equation follows by the fixpoint identities of \({((\pi_1 + id) \circ f)}^{\sharp_a}\) and \({((\pi_2 + id) \circ f)}^{\sharp_b}\): - \begin{alignat*}{1} - & \langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle - \\=\;&\langle [ id , {((\pi_1 + id) \circ f)}^{\sharp_a} ] \circ (\pi_1 + id) \circ f - \\ &, [ id , {((\pi_2 + id) \circ f)}^{\sharp_b} ] \circ (\pi_2 + id) \circ f \rangle \tag{\ref{law:fixpoint}} - \\=\;&\langle [ \pi_1 , {((\pi_1 + id) \circ f)}^{\sharp_a} ] \circ f , [ \pi_2 , {((\pi_2 + id) \circ f)}^{\sharp_b} ] \circ f \rangle - \\=\;&\langle [ \pi_1 , {((\pi_1 + id) \circ f)}^{\sharp_a} ] , [ \pi_2 , {((\pi_2 + id) \circ f)}^{\sharp_b} ] \rangle \circ f - \\=\;&[ \langle \pi_1 , \pi_2 \rangle , \langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle ] \circ f - \\=\;&[ id , \langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle ] \circ f - \end{alignat*} - \item \textbf{Uniformity}: Let \(f : X \rightarrow (A \times B) + X, g : Y \rightarrow (A \times B) + Y, h : X \rightarrow Y\) and \((id + h) \circ f = g \circ h\). - Note that this implies: - \begin{alignat*}{2} - & (id + h) \circ (\pi_1 + id) \circ f & & = (\pi_1 + id) \circ g \circ h - \\&(id + h) \circ (\pi_2 + id) \circ f &&= (\pi_2 + id) \circ g \circ h - \end{alignat*} - - Then,~\ref{law:uniformity} of \({(-)}^{\sharp_a}\) and \({(-)}^{\sharp_b}\) with the previous two equations yields: - \begin{alignat*}{2} - & \langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_1 + id) \circ f)}^{\sharp_a} \rangle & & = {((\pi_1 + id) \circ g)}^{\sharp_a} \circ h - \\&\langle {((\pi_2 + id) \circ f)}^{\sharp_b} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle &&= {((\pi_2 + id) \circ g)}^{\sharp_b} \circ h - \end{alignat*} - - This concludes the proof of: - \[ \langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle = \langle {((\pi_1 + id) \circ g)}^{\sharp_a} , {((\pi_2 + id) \circ g)}^{\sharp_b} \rangle \circ h \] - \item \textbf{Folding}: Let \(f : X \rightarrow (A \times B) + X, h : Y \rightarrow X + Y\). We need to show: - \begin{alignat*}{1} - & \langle {((\pi_1 + id) \circ (\langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle + h))}^{\sharp_a} - \\&,{((\pi_2 + id) \circ (\langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle + h))}^{\sharp_b} \rangle - \\=\;&\langle (\pi_1 + id) \circ {[ (id + i_1) \circ f , i_2 \circ h ]}^{\sharp_a} , (\pi_2 + id) \circ {[ (id + i_1) \circ f , i_2 \circ h ]}^{\sharp_b} \rangle - \end{alignat*} - - Indeed, the folding laws for \({(-)}^{\sharp_a}\) and \({(-)}^{\sharp_b}\) imply - \begin{alignat*}{1} - & {((\pi_1 + id) \circ (\langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle + h))}^{\sharp_a} - \\=\;&{({((\pi_1 + id) \circ f)}^{\sharp_a} + h)}^{\sharp_a} - \\=\;&{[ (id + i_1) \circ (\pi_1 + id) \circ f , i_2 \circ h ]}^{\sharp_a}\tag{\ref{law:folding}} - \\=\;&(\pi_1 + id) \circ {[ (id + i_1) \circ f , i_2 \circ h ]}^{\sharp_a} - \end{alignat*} - and - \begin{alignat*}{1} - & {((\pi_2 + id) \circ (\langle {((\pi_1 + id) \circ f)}^{\sharp_a} , {((\pi_2 + id) \circ f)}^{\sharp_b} \rangle + h))}^{\sharp_b} - \\=\;&{({((\pi_2 + id) \circ f)}^{\sharp_b} + h)}^{\sharp_b} - \\=\;&{[ (id + i_1) \circ (\pi_2 + id) \circ f , i_2 \circ h ]}^{\sharp_b}\tag{\ref{law:folding}} - \\=\;&(\pi_2 + id) \circ {[ (id + i_1) \circ f , i_2 \circ h ]}^{\sharp_b} - \end{alignat*} - which concludes the proof of the folding law. - \end{itemize} - - The product diagram of \(A \times B\) in \(\C\) then also holds in \(\elgotalgs{\C}\), we just have to check that the projections are iteration preserving, which follows instantly, and that the unique morphism \(\langle f , g \rangle\) is iteration preserving for any \(f : C \hookrightarrow A, g : C \rightarrow B\) where \(C \in \obj{\elgotalgs{\C}}\). - - Let \(h : X \rightarrow C + X\). We use the fact that \(f\) and \(g\) are iteration preserving to show: - \begin{alignat*}{1} - & \langle f , g \rangle \circ (h^{\sharp_c}) - \\=\;&\langle f \circ (h^{\sharp_c}) , g \circ (h^{\sharp_c}) \rangle - \\=\;&\langle {((f + id) \circ h)}^{\sharp_a} , {((g + id) \circ h)}^{\sharp_b} \rangle - \\=\;&\langle {((\pi_1 + id) \circ (\langle f , g \rangle + id) \circ h)}^{\sharp_a} , {((\pi_1 + id) \circ (\langle f , g \rangle + id) \circ h)}^{\sharp_b} \rangle - \end{alignat*} - Which confirms that \(\langle f , g \rangle\) is indeed iteration preserving. Thus, it follows that \(A \times B\) extends to a product in \(\elgotalgs{\C}\) and therefore \(\elgotalgs{\C}\) is Cartesian, if \(\C\) is Cartesian. -\end{proof} - -\begin{lemma}\label{lem:elgotexp} +\begin{lemma}[\agdaref{Category.Construction.ElgotAlgebras.Exponentials}]\label{lem:elgotexp} Given \(X \in \obj{\C}\) and \(A \in \obj{\elgotalgs{\C}} \). The exponential \(X^A\) (if it exists) can be equipped with an Elgot algebra structure. \end{lemma} -\begin{proof} - Take \(f^\sharp = curry ({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a})\) as the iteration of some \(f : Z \rightarrow A^X + Z\). - \begin{itemize} - \item \textbf{Fixpoint}: Let \(f : Y \rightarrow X^A + Y\). We need to show that \(f^\sharp = [ id , f^\sharp ] \circ f\), which follows by uniqueness of \[f^\sharp = curry\;({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a})\] and - \begin{alignat*}{1} - & eval \circ ([ id , curry ({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) ] \circ f \times id) - \\=\;&eval \circ [ id , curry ({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id ] \circ dstr \circ (f \times id)\tag*{\ref{hlp:elgot_exp_fixpoint}} - \\=\;&[ eval , eval \circ (curry ({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id) ] \circ dstr \circ (f \times id) - \\=\;&[ eval , {((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a} ] \circ dstr \circ (f \times id) - \\=\;&[ id , {((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a} ] \circ (eval + id) \circ dstr \circ (f \times id) - \\=\;&{((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a},\tag{\ref{law:fixpoint}} - \end{alignat*} - where - \begin{alignat*}{1} - & [ id , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) ] \times id - \\= \;&[ id , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id ] \circ dstr \tag*{(*)}\label{hlp:elgot_exp_fixpoint} - \end{alignat*} - follows by post-composing with \(\pi_1\) and \(\pi_2\), indeed: - - \begin{alignat*}{1} - & \pi_1 \circ [ id , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id ] \circ dstr - \\=\;&[ \pi_1 , \pi_1 \circ (curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id) ] \circ dstr - \\=\;&[ \pi_1 , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \circ \pi_1 ] \circ dstr - \\=\;&[ id , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) ] \circ (\pi_1 + \pi_1) \circ dstr - \\=\;&[ id , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) ] \circ \pi_1, - \end{alignat*} - and - \begin{alignat*}{1} - & \pi_2 \circ [ id , curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id ] \circ dstr - \\=\;&[ \pi_2 , \pi_2 \circ (curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id) ] \circ dstr - \\=\;&[ \pi_2 , \pi_2 ] \circ dstr - \\=\;&\pi_2. - \end{alignat*} - \item \textbf{Uniformity}: Let \(f : Y \rightarrow X^A + Y, g : Z \rightarrow X^A + Z, h : Y \rightarrow Z\) and \((id + h) \circ f = g \circ h\). Again, by uniqueness of \(f^\sharp = curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a})\) it suffices to show: - \begin{alignat*}{1} - & {((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a} - \\=\;&{((eval + id) \circ dstr \circ (g \times id))}^{\sharp_a} \circ (h \times id)\tag{\ref{law:uniformity}} - \\=\;&eval \circ ({((eval + id) \circ dstr \circ (g \times id))}^{\sharp_a} \times id) \circ (h \times id) - \\=\;&eval \circ ({((eval + id) \circ dstr \circ (g \times id))}^{\sharp_a} \circ h \times id). - \end{alignat*} - Note that the application of \ref{law:uniformity} requires: % chktex 2 - \begin{alignat*}{1} - & (id + (h \times id)) \circ (eval + id) \circ dstr \circ (f \times id) - \\=\;&(eval + id) \circ (id + (h \times id)) \circ dstr \circ (f \times id) - \\=\;&(eval + id) \circ dstr \circ (id \times h) \circ (id \times id) \circ (f \times id) - \\=\;&(eval + id) \circ dstr \circ (g \times id) \circ (h \times id). - \end{alignat*} - \item \textbf{Folding}: Let \(f : Y \rightarrow X^A + Y, h : Y \rightarrow Z\). We need to show that - \begin{alignat*}{1} - & {(f^\sharp + h)}^\sharp - \\=\;&curry({((eval + id) \circ dstr \circ ((curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) + h) \times id))}^{\sharp_a}) - \\=\;&curry({((eval + id) \circ dstr \circ ([ (id + i_1) \circ f , i_2 \circ h ] \times id))}^{\sharp_a}) - \\=\;&{[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp. - \end{alignat*} - Indeed, we are done by - \begin{alignat*}{1} - & {((eval + id) \circ dstr \circ ((curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) + h) \times id))}^{\sharp_a} - \\=\;&{((eval + id) \circ ((curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id) + (h \times id)) \circ dstr)}^{\sharp_a} - \\=\;&{((eval \circ (curry({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a}) \times id) + (h \times id)) \circ dstr)}^{\sharp_a} - \\=\;&{(({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a} + (h \times id)) \circ dstr)}^{\sharp_a} - \\=\;&{(({((eval + id) \circ dstr \circ (f \times id))}^{\sharp_a} + dstr \circ (h \times id)))}^{\sharp_a} \circ dstr\tag{\ref{law:uniformity}} - \\=\;&[ (id + i_1) \circ (eval + id) \circ dstr \circ (f \times id) , i_2 \circ dstr \circ (h \times id) ] \circ dstr\tag{\ref{law:folding}} - \\=\;&{((eval + id) \circ dstr \circ ([ (id + i_1) \circ f , i_2 \circ h ] \times id))}^{\sharp_a},\tag{\ref{law:uniformity}} - \end{alignat*} - where the identity that is required for the second application of~\ref{law:uniformity} follows by epicness of \(dstr^{-1}\). - \qedhere - - % \begin{alignat*}{1} - % & (id + dstr) \circ (eval + id) \circ dstr \circ ([ (id + i_1) \circ f , i_2 \circ h ] \times id) \circ dstr^{-1} - % \\=\;&[ (id + dstr) \circ (eval + id) \circ dstr \circ ([ (id + i_1) \circ f , i_2 \circ h ] \times id) \circ (i_1 \times id) - % \\&, (id + dstr) \circ (eval + id) \circ dstr \circ ([ (id + i_1) \circ f , i_2 \circ h ] \times id) \circ (i_2 \times id) ] - % \\=\;&[ (id + dstr) \circ (eval + id) \circ dstr \circ (((id + i_1) \circ f) \times id) - % \\&, (id + dstr) \circ (eval + id) \circ dstr \circ ((i_2 \circ h) \times id) ] - % \\=\;&[ (id + dstr) \circ (eval + id) \circ dstr \circ ((id + i_1) \times id) \circ (f \times id) - % \\&, (id + dstr) \circ (eval + id) \circ dstr \circ (i_2 \times id) \circ (h \times id) ] - % \\=\;&[ (id + dstr) \circ (eval + id) \circ (id + (i_1 \times id)) \circ dstr \circ (f \times id) - % \\&, (id + dstr) \circ (eval + id) \circ i_2 \circ (h \times id) ] - % \\=\;&[ (eval + i_1) \circ dstr \circ (f \times id) , i_2 \circ dstr \circ (h \times id) ] - % \\=\;&[ (id + i_1) \circ (eval + id) \circ dstr \circ (f \times id) , i_2 \circ dstr \circ (h \times id) ] \circ dstr \circ dstr^{-1}.\tag*{\qedhere} - % \end{alignat*} - \end{itemize} -\end{proof} - -\section{The Initial (Strong) Pre-Elgot Monad} +\section{The Initial Pre-Elgot Monad} In this section we will study the monad that arises from existence of all free Elgot algebras. We will show that this is an equational lifting monad and also the initial strong pre-Elgot monad. Starting in this section we will now omit indices of the iteration operator of Elgot algebras for the sake of readability. Let us first recall the following notion that was introduced in~\cite{elgotmonad} and reformulated in~\cite{uniformelgot}. @@ -385,7 +122,7 @@ Let us first recall the following notion that was introduced in~\cite{elgotmonad We regard Elgot monads as minimal semantic structures for interpreting side-effecting while loops, as has been argued in~\cite{goncharov2018unguarded, goncharov2017unifying}. The following notion has been introduced in~\cite{uniformelgot} as a weaker approximation of the notion of Elgot monad, using less sophisticated axioms. -\begin{definition}[Pre-Elgot Monad] +\begin{definition}[Pre-Elgot Monad (\agdaref{Monad.PreElgot})] A monad \(\mathbf{T}\) is called pre-Elgot if every \(TX\) extends to an Elgot algebra such that for every \(f : X \rightarrow TY\) the Kleisli lifting \(f^* : TX \rightarrow TY\) is iteration preserving. If the monad \(\mathbf{T}\) is additionally strong and the strength \(\tau \) is right iteration preserving we call \(\mathbf{T}\) strong pre-Elgot. @@ -393,26 +130,20 @@ The following notion has been introduced in~\cite{uniformelgot} as a weaker appr (Strong) pre-Elgot monads form a subcategory of \(\monads{\C}\) where objects are (strong) pre-Elgot monads and morphisms between pre-Elgot monads are natural transformations \(\alpha \) as in \autoref{def:monadmorphism} such that additionally each \(\alpha_X\) is iteration preserving. Similarly, morphisms between strong pre-Elgot monads are natural transformations \(\alpha \) as in \autoref{def:strongmonadmorphism} such that each \(\alpha_X\) is iteration preserving. We call these categories \(\preelgot{\C}\) and \(\strongpreelgot{\C}\) respectively. -\begin{lemma} +\begin{lemma}[\agdaref{Category.Construction.PreElgotMonads}, \agdaref{Category.Construction.StrongPreElgotMonads}] \(\preelgot{\C}\) and \(\strongpreelgot{\C}\) are categories. \end{lemma} -\begin{proof} - Since \(\preelgot{\C}\) and \(\strongpreelgot{\C}\) are subcategories of the previously defined categories \(\monads{\C}\) and \(\strongmonads{\C}\) respectively, it suffices to show that the components of the identity natural transformation are iteration preserving and that the component wise composition of two pre-Elgot monad morphisms is iteration preserving. This has already been shown in \autoref{lem:elgotalgscat}. -\end{proof} Assuming a form of the axiom of countable choice it has been proven in~\cite{uniformelgot} that the initial pre-Elgot monad and the initial Elgot monad coincide, thus closing the expressivity gap in such a setting. However, it is believed to be impossible to close this gap in a general setting. -\begin{proposition} +\begin{proposition}[\agdaref{Monad.Instance.K}] Existence of all free Elgot algebras yields a monad that we call \(\mathbf{K}\). \end{proposition} -\begin{proof} - This is a direct consequence of \autoref{thm:freemonad}. -\end{proof} We will need a notion of stability for \(\mathbf{K}\) to make progress, since we do not assume \(\C \) to be Cartesian closed. -\begin{definition}[Right-Stable Free Elgot Algebra]\label{def:rightstablefreeelgot} +\begin{definition}[Right-Stable Free Elgot Algebra (\agdaref{Algebra.Elgot.Stable}, \agdaref{Algebra.Elgot.Free})]\label{def:rightstablefreeelgot} Let \(KY\) be a free Elgot algebra on \(Y \in \obj{\C}\). We call \(KY\) \textit{right-stable} if for every \(A \in \elgotalgs{\C}, X \in \obj{\C}\), and \(f : X \times Y \rightarrow A\) there exists a unique right iteration preserving \(\rs{f} : X \times KY \rightarrow A\) such that % https://q.uiver.app/#q=WzAsMyxbMCwwLCJYIFxcdGltZXMgWSJdLFsyLDAsIkEiXSxbMCwyLCJYIFxcdGltZXMgS1kiXSxbMCwxLCJmIl0sWzAsMiwiaWRcXHRpbWVzXFxldGEiLDJdLFsyLDEsIlxccnN7Zn0iLDJdXQ== \[ @@ -430,7 +161,7 @@ We will need a notion of stability for \(\mathbf{K}\) to make progress, since we A symmetrical variant of the previous definition is sometimes useful. -\begin{definition}[Left-Stable Free Elgot Algebra]\label{def:leftstablefreeelgot} +\begin{definition}[Left-Stable Free Elgot Algebra (\agdaref{Algebra.Elgot.Stable}, \agdaref{Algebra.Elgot.Free})]\label{def:leftstablefreeelgot} Let \(KY\) be a free Elgot algebra on \(Y \in \obj{\C}\). We call \(KY\) \textit{left-stable} if for every \(A \in \elgotalgs{\C}, X \in \obj{\C}\), and \(f : Y \times X \rightarrow A\) there exists a unique left iteration preserving \(\ls{f} : KY \times X \rightarrow A\) such that % https://q.uiver.app/#q=WzAsMyxbMCwwLCJYIFxcdGltZXMgWSJdLFsyLDAsIkEiXSxbMCwyLCJLWCBcXHRpbWVzIFkiXSxbMCwxLCJmIl0sWzAsMiwiXFxldGFcXHRpbWVzIGlkIiwyXSxbMiwxLCJcXGxze2Z9IiwyXV0= \[ @@ -446,120 +177,17 @@ A symmetrical variant of the previous definition is sometimes useful. commutes. \end{definition} -\begin{lemma} +\begin{lemma}[\agdaref{Algebra.Elgot.Stable}] Definitions~\ref{def:rightstablefreeelgot} and~\ref{def:leftstablefreeelgot} are equivalent in the sense that they imply each other. \end{lemma} -\begin{proof} Let \(KY\) be a left stable free Elgot algebra on \(Y \in \obj{\C}\). Furthermore, let \(A\) be an Elgot algebra and \(X \in \obj{\C}, f : Y \times X \rightarrow A\). - We take \(\rs{f} := \ls{f \circ swap} \circ swap\), which is indeed right iteration preserving, since - \begin{alignat*}{1} - & \rs{f} \circ (id \times h^\sharp) - \\=\;&\ls{f \circ swap} \circ swap \circ (id \times h^\sharp) - \\=\;&\ls{f \circ swap} \circ (h^\sharp \times id) \circ swap - \\=\;&{((\ls{f \circ swap} + id) \circ dstr \circ (id \times h))}^\sharp \circ swap - \\=\;&{((\ls{f \circ swap} \circ swap + id) \circ dstl \circ (id \times h))}^\sharp\tag{\ref{law:uniformity}} - \\=\;&{((\rs{f} + id) \circ dstl \circ (id \times h))}^\sharp, - \end{alignat*} - for any \(Z \in \obj{\C}, h : Z \rightarrow KY + Z\). - - % Where the application of \ref{law:uniformity} is justified by - % \begin{alignat*}{1} - % &(id + swap) \circ ((\ls{f \circ swap} \circ swap) + id) \circ dstl \circ (id \times h) - % \\=\;&((\ls{f \circ swap} \circ swap) + swap) \circ dstl \circ (id \times h) - % \\=\;&(\ls{f \circ swap} + id) \circ (swap + swap) \circ dstl \circ (id \times h) - % \\=\;&(\ls{f \circ swap} + id) \circ dstr \circ swap \circ (id \times h) - % \\=\;&(\ls{f \circ swap} + id) \circ dstr \circ (h \times id) \circ swap. - % \end{alignat*} - - The requisite diagram commutes, since - \begin{alignat*}{1} - & \rs{f} \circ (id \times \eta) - \\=\;&\ls{f \circ swap} \circ swap \circ (id \times \eta) - \\=\;&\ls{f \circ swap} \circ (\eta \times id) \circ swap - \\=\;&f \circ swap \circ swap - \\=\;&f. - \end{alignat*} - - Finally, let us check uniqueness of \(\rs{f} = \ls{f \circ swap} \circ swap\). Let \(g : X \times KY \rightarrow A\) be right iteration preserving with \(g \circ (id \times \eta) = f\). To show that \(g = \ls{f \circ swap} \circ swap\), by uniqueness of \(\ls{f \circ swap}\) it suffices to show that \(g \circ swap\) satisfies \(g \circ swap \circ (\eta \times id) = f \circ swap\) and is left iteration preserving. - - Indeed, - \[ g \circ swap \circ (\eta \times id) = g \circ (id \times \eta) \circ swap = f \circ swap\] - and - \begin{alignat*}{1} - & g \circ swap \circ (h^\sharp \times id) - \\=\;&g \circ (id \times h^\sharp) \circ swap - \\=\;&{((g + id) \circ dstl \circ (id \times h))}^\sharp \circ swap - \\=\;&{((g \circ swap + id) \circ dstr \circ (h \times id))}^\sharp,\tag{\ref{law:uniformity}} - \end{alignat*} - for any \(Z \in \obj{\C}, h : Z \rightarrow KY + Z\). - - % The application of \ref{law:uniformity} is justified by - % \begin{alignat*}{1} - % &(id + swap) \circ ((g \circ swap) + id) \circ dstr \circ (h \times id) - % \\=\;&(g + id) \circ (swap + swap) \circ dstr \circ (h \times id) - % \\=\;&(g + id) \circ dstl \circ swap \circ (h \times id) - % \\=\;&(g + id) \circ dstl \circ (id \times h) \circ swap. - % \end{alignat*} - - This concludes one direction of the proof, the other direction follows symmetrically. -\end{proof} - -\begin{lemma}\label{thm:stability} +\begin{lemma}[\agdaref{Algebra.Elgot.Properties}]\label{thm:stability} In a Cartesian closed category every free Elgot algebra is stable. \end{lemma} -\begin{proof} - Let \(\C\) be Cartesian closed and let \(KX\) be a free Elgot algebra on some \(X \in \obj{\C}\). - - To show left stability of \(KX\) we define \(\ls{f} := eval \circ (\free{curry\;f} \times id)\) for any \(X \in \obj{\C}\), \(A \in \vert\elgotalgs{\C}\vert\), and \(f : Y \times X \rightarrow A\). - We will now verify that this does indeed satisfy the requisite properties, i.e. - \begin{alignat*}{1} - & eval \circ (\free{curry\;f} \times id) \circ (\eta \times id) - \\=\;&eval \circ (\free{curry\;f} \circ \eta \times id) - \\=\;&eval \circ (curry\;f \times id) - \\=\;&f - \end{alignat*} - and for any \(Z \in \obj{\C}, h : Z \rightarrow KY + Z\): - \begin{alignat*}{1} - & eval \circ (\free{curry\;f} \times id) \circ (h^\sharp \times id) - \\=\;&eval \circ (\free{curry\;f} \circ h^\sharp \times id) - \\=\;&eval \circ (curry({((eval + id) \circ dstr \circ (((\free{curry\;f} + id) \circ h) \times id))}^\sharp) \times id) - \\=\;&{((eval + id) \circ dstr \circ ((\free{curry\;f} + id) \circ h \times id))}^\sharp - \\=\;&{((eval + id) \circ dstr \circ ((\free{curry\;f} + id) \times id) \circ (h \times id))}^\sharp - \\=\;&{((eval + id) \circ ((\free{curry\;f} \times id) + id) \circ dstr \circ (h \times id))}^\sharp - \\=\;&{((eval \circ (\free{curry\;f} \times id) + id) \circ dstr \circ (h \times id))}^\sharp. - \end{alignat*} - - Lastly, we need to check uniqueness of \(\ls{f}\). Let us consider a left iteration preserving morphism \(g : KY \times X \rightarrow A\) that satisfies \(g \circ (\eta \times id) = f\). Since \(curry\) is an injective mapping it suffices to show that - \begin{alignat*}{1} - & curry\;\ls{f} - \\=\;&curry(eval \circ (\free{curry\;f} \times id)) - \\=\;&\free{curry\;f} - \\=\;&curry\;g. - \end{alignat*} - Where the last step is the only non-trivial one. Since \(\free{curry\;f}\) is a unique iteration preserving morphism satisfying \(\free{curry\;f} \circ \eta = curry\;f\), we are left to show that \(g\) is also iteration preserving and satisfies the same property. - - Indeed, - \begin{alignat*}{1} - & curry\;g \circ h^\sharp - \\=\;&curry\;(g \circ (h^\sharp \times id)) - \\=\;&curry\;({((g + id) \circ dstr \circ (h \times id))}^\sharp) - \\=\;&curry\;({((eval \circ (curry\; g \times id) + id) \circ dstr \circ (h \times id))}^\sharp) - \\=\;&curry\;({((eval + id) \circ ((curry\; g \times id) + id) \circ dstr \circ (h \times id))}^\sharp) - \\=\;&curry\;({((eval + id) \circ dstr \circ ((curry\;g + id) \times id) \circ (h \times id))}^\sharp) - \\=\;&curry\;({((eval + id) \circ dstr \circ (((curry\;g + id) \circ h) \times id))}^\sharp) - \end{alignat*} - for any \(Z \in \obj{\C}, h : Z \rightarrow KY + Z\), and - \begin{alignat*}{1} - & curry\;g \circ \eta - \\=\;&curry(g \circ (\eta \times id)) - \\=\;&curry\;f. - \end{alignat*} - Which completes the proof. -\end{proof} For the rest of this chapter we will assume every \(KX\) to exist and be stable. Under these assumptions we show that \(\mathbf{K}\) is an equational lifting monad and in fact the initial strong pre-Elgot monad. Let us first introduce a proof principle similar to the one introduced in \autoref{rem:coinduction}. -\begin{remark}[Proof by right-stability]~\label{rem:proofbystability} +\begin{remark}[Proof by right-stability (\agdaref{Monad.Instance.K})]~\label{rem:proofbystability} Given two morphisms \(g, h : X \times KY \rightarrow A\) where \(X, Y \in \obj{\C}, A \in \obj{\elgotalgs{\C}}\). To show that \(g = h\), it suffices to show that \(g\) and \(h\) are right iteration preserving and there exists a morphism \(f : X \times Y \rightarrow A\) such that % https://q.uiver.app/#q=WzAsMyxbMCwwLCJYIFxcdGltZXMgS1kiXSxbMiwwLCJBIl0sWzAsMiwiWCBcXHRpbWVzIFkiXSxbMCwxLCJnIiwwLHsib2Zmc2V0IjotMX1dLFswLDEsImgiLDIseyJvZmZzZXQiOjF9XSxbMiwxLCJmIiwyXSxbMiwwLCJpZCBcXHRpbWVzIFxcZXRhIl1d \[ @@ -576,7 +204,7 @@ Let us first introduce a proof principle similar to the one introduced in \autor commutes. \end{remark} Of course there is also a symmetric version of this. -\begin{remark}[Proof by left-stability]~\label{rem:proofbyleftstability} +\begin{remark}[Proof by left-stability (\agdaref{Monad.Instance.K})]~\label{rem:proofbyleftstability} Given two morphisms \(g, h : KX \times Y \rightarrow A\) where \(X, Y \in \obj{\C}, A \in \obj{\elgotalgs{\C}}\). To show that \(g = h\), it suffices to show that \(g\) and \(h\) are left iteration preserving and there exists a morphism \(f : X \times Y \rightarrow A\) such that % https://q.uiver.app/#q=WzAsMyxbMCwwLCJLWCBcXHRpbWVzIFkiXSxbMiwwLCJBIl0sWzAsMiwiWCBcXHRpbWVzIFkiXSxbMCwxLCJnIiwwLHsib2Zmc2V0IjotMX1dLFswLDEsImgiLDIseyJvZmZzZXQiOjF9XSxbMiwxLCJmIiwyXSxbMiwwLCJcXGV0YSBcXHRpbWVzIGlkIl1d \[ @@ -593,448 +221,34 @@ Of course there is also a symmetric version of this. commutes. \end{remark} -\begin{lemma}\label{lem:Kstrong} +\begin{lemma}[\agdaref{Monad.Instance.K.Strong}]\label{lem:Kstrong} \(\mathbf{K}\) is a strong monad. \end{lemma} -\begin{proof} - We define strength as \(\tau = \rs{(\eta : X \times Y \rightarrow K(X \times Y))} : X \times KY \rightarrow K(X \times Y)\). Note that by definition \(\tau\) is right iteration preserving and \(\tau \circ (id \times \eta) = \eta\). - Most of the requisite proofs will be done by right-stability using \autoref{rem:proofbystability}, i.e.\ to prove an identity we need to give a unifying morphism such that the requisite diagram commutes, and we need to show that both sides of the identity are right iteration preserving. The proofs of commutativity follow by easy rewriting and are thus deferred to the formalization. The proofs of right iteration preservation follow in most cases instantly since the morphisms are composed of (right) iteration preserving morphisms but in non-trivial cases we will give the full proof. - - Naturality of \(\tau \) follows by: - % https://q.uiver.app/#q=WzAsNSxbMSwwLCJBIFxcdGltZXMgS0IiXSxbMCwzLCJBIFxcdGltZXMgQiJdLFsxLDIsIksoQSBcXHRpbWVzIEIpIl0sWzMsMiwiSyhYIFxcdGltZXMgWSkiXSxbMywwLCJYIFxcdGltZXMgS1kiXSxbMSwwLCJpZCBcXHRpbWVzIFxcZXRhIiwwLHsiY3VydmUiOi0yfV0sWzAsMiwiXFx0YXUiLDJdLFsyLDMsIksoZlxcdGltZXMgZykiLDJdLFswLDQsImYgXFx0aW1lcyBLZyJdLFs0LDMsIlxcdGF1Il0sWzEsMywiXFxldGEgXFxjaXJjIChmIFxcdGltZXMgZykiLDIseyJjdXJ2ZSI6Mn1dXQ== - \[ - \begin{tikzcd} - & {A \times KB} && {X \times KY} \\ - \\ - & {K(A \times B)} && {K(X \times Y)} \\ - {A \times B} - \arrow["{id \times \eta}", curve={height=-12pt}, from=4-1, to=1-2] - \arrow["\tau"', from=1-2, to=3-2] - \arrow["{K(f\times g)}"', from=3-2, to=3-4] - \arrow["{f \times Kg}", from=1-2, to=1-4] - \arrow["\tau", from=1-4, to=3-4] - \arrow["{\eta \circ (f \times g)}"', curve={height=12pt}, from=4-1, to=3-4] - \end{tikzcd} - \] - - Notably, \(\tau \circ (f \times Kg)\) is right iteration preserving, since for any \(Z \in \obj{\C}\) and \(h : Z \rightarrow KY + Z\): - \begin{alignat*}{1} - & \tau \circ (f \times Kg) \circ (id \times h^\sharp) - \\=\;&\tau \circ (f \times {((Kg + id) \circ h)}^\sharp) - \\=\;&{((\tau + id) \circ dstl \circ (id \times ((Kg + id) \circ h)))}^\sharp \circ (f \times id) - \\=\;&{(((\tau \circ (f \times Kg)) + id) \circ dstl \circ (id \times h))}^\sharp.\tag{\ref{law:uniformity}} - \end{alignat*} - - % where uniformity is justified by - % \begin{alignat*}{1} - % &(id + (f \times id)) \circ \tau \circ ((f \times Kg) + id) \circ dstl \circ (id \times h) - % \\=\;&(\tau + id) \circ dstl \circ (id \times ((Kg + id) \circ h)) \circ (f \times id) - % \end{alignat*} - - % Both sides of the identity are right iteration preserving, since for any \(Z \in \obj{\C}\) and \(h : Z \rightarrow KY + Z\): - % \begin{alignat*}{1} - % &K(f \times g) \circ \tau \circ (id \times h^\sharp) - % \\=\;&K(f \times g) \circ ((\tau + id) \circ dstl \circ (id \times h))^\sharp - % \\=\;&(((K(f \times g) \circ \tau) + id) \circ dstl \circ (id \times h))^\sharp - % \end{alignat*} - % and - % \begin{alignat*}{1} - % &\tau \circ (f \times Kg) \circ (id \times h^\sharp) - % \\=\;&\tau \circ (f \times (Kg \circ h)^\sharp) - % \\=\;& - % \end{alignat*} - - Let us now check the strength laws. - - \begin{itemize} - \item[\ref{S1}] Note that for \(\mathbf{K}\), the identity \(K\pi_2 \circ \tau = \pi_2\) holds more generally for any \(X, Y \in \obj{\C}\) instead of just for \(X = 1\), which is proven by right-stability, using: - % https://q.uiver.app/#q=WzAsNCxbMCwwLCJYIFxcdGltZXMgS1kiXSxbMiwwLCJLKFhcXHRpbWVzIFkpIl0sWzIsMiwiS1kiXSxbMCwyLCJYIFxcdGltZXMgWSJdLFswLDEsIlxcdGF1Il0sWzEsMiwiS1xccGlfMiJdLFswLDIsIlxccGlfMiIsMl0sWzMsMCwiaWQgXFx0aW1lcyBcXGV0YSIsMl0sWzMsMiwiXFxldGEgXFxjaXJjIFxccGlfMiIsMl1d - \[ - \begin{tikzcd} - {X \times KY} && {K(X\times Y)} \\ - \\ - {X \times Y} && KY - \arrow["\tau", from=1-1, to=1-3] - \arrow["{K\pi_2}", from=1-3, to=3-3] - \arrow["{\pi_2}"', from=1-1, to=3-3] - \arrow["{id \times \eta}"', from=3-1, to=1-1] - \arrow["{\eta \circ \pi_2}"', from=3-1, to=3-3] - \end{tikzcd} - \] - - \item[\ref{S2}] As already mentioned, \(\tau \circ (id \times \eta) = \eta\) follows by definition of \(\tau\). - \item[\ref{S3}] To show that \(\tau \circ (id \times \mu) = \tau^* \circ \tau\), we will proceed by right-stability using: - % https://q.uiver.app/#q=WzAsNSxbMSwwLCJYIFxcdGltZXMgS0tZIl0sWzMsMCwiWCBcXHRpbWVzIEtZIl0sWzMsMiwiSyhYXFx0aW1lcyBZKSJdLFsxLDIsIksoWCBcXHRpbWVzIEtZKSJdLFswLDMsIlggXFx0aW1lcyBLWSJdLFswLDEsImlkIFxcdGltZXMgXFxtdSIsMl0sWzEsMiwiXFx0YXUiLDJdLFswLDMsIlxcdGF1Il0sWzMsMiwiXFx0YXVeKiJdLFs0LDAsImlkIFxcdGltZXMgXFxldGEiLDAseyJjdXJ2ZSI6LTJ9XSxbNCwyLCJcXHRhdSIsMCx7ImN1cnZlIjoyfV1d - \[ - \begin{tikzcd} - & {X \times KKY} && {X \times KY} \\ - \\ - & {K(X \times KY)} && {K(X\times Y)} \\ - {X \times KY} - \arrow["{id \times \mu}"', from=1-2, to=1-4] - \arrow["\tau"', from=1-4, to=3-4] - \arrow["\tau", from=1-2, to=3-2] - \arrow["{\tau^*}", from=3-2, to=3-4] - \arrow["{id \times \eta}", curve={height=-12pt}, from=4-1, to=1-2] - \arrow["\tau", curve={height=12pt}, from=4-1, to=3-4] - \end{tikzcd} - \] - \item[\ref{S4}] Lastly, consider the following diagram for the proof by right-stability: - % https://q.uiver.app/#q=WzAsNixbMSwwLCIoWCBcXHRpbWVzIFkpIFxcdGltZXMgS1oiXSxbMSwyLCJYIFxcdGltZXMgWSBcXHRpbWVzIEtZIl0sWzMsMCwiSygoWCBcXHRpbWVzIFkpIFxcdGltZXMgWikiXSxbMywyLCJLKFggXFx0aW1lcyBZIFxcdGltZXMgWikiXSxbMiwyLCJYIFxcdGltZXMgSyhZIFxcdGltZXMgWikiXSxbMCwzLCIoWCBcXHRpbWVzIFkpIFxcdGltZXMgWiJdLFswLDEsIlxcYWxwaGEiXSxbMiwzLCJLXFxhbHBoYSJdLFswLDIsIlxcdGF1Il0sWzEsNCwiaWQgXFx0aW1lc1xcdGF1Il0sWzQsMywiXFx0YXUiXSxbNSwwLCJpZCBcXHRpbWVzIFxcZXRhIiwwLHsiY3VydmUiOi0yfV0sWzUsMywiXFxldGEgXFxjaXJjIFxcYWxwaGEiLDIseyJjdXJ2ZSI6Mn1dXQ== - \[ - \begin{tikzcd} - & {(X \times Y) \times KZ} && {K((X \times Y) \times Z)} \\ - \\ - & {X \times Y \times KY} & {X \times K(Y \times Z)} & {K(X \times Y \times Z)} \\ - {(X \times Y) \times Z} - \arrow["\alpha", from=1-2, to=3-2] - \arrow["K\alpha", from=1-4, to=3-4] - \arrow["\tau", from=1-2, to=1-4] - \arrow["{id \times\tau}", from=3-2, to=3-3] - \arrow["\tau", from=3-3, to=3-4] - \arrow["{id \times \eta}", curve={height=-12pt}, from=4-1, to=1-2] - \arrow["{\eta \circ \alpha}"', curve={height=12pt}, from=4-1, to=3-4] - \end{tikzcd} - \] - where \(\tau \circ (id \times \tau) \circ \alpha \) is right iteration preserving, since for any \(Z \in \obj{\C}\) and \(h : Z \rightarrow KX + Z\): - \begin{alignat*}{1} - & \tau \circ (id \times \tau) \circ \alpha \circ (id \times h^\sharp) - \\=\;&\tau \circ \langle \pi_1 \circ \pi_1 , \tau \circ \langle \pi_2 \circ \pi_1 , \pi_2 \rangle \rangle \circ (id \times h^\sharp) - \\=\;&\tau \circ \langle \pi_1 \circ \pi_1 , \tau \circ \langle \pi_2 \circ \pi_1 , h^\sharp \circ \pi_2 \rangle \rangle - \\=\;&\tau \circ \langle \pi_1 \circ \pi_1 , \tau \circ (id \times h^\sharp) \circ \langle \pi_2 \circ \pi_1 , \pi_2 \rangle \rangle - \\=\;&\tau \circ \langle \pi_1 \circ \pi_1 , {((\tau + id) \circ dstl \circ (id \times h))}^\sharp \circ \langle \pi_2 \circ \pi_1 , \pi_2 \rangle \rangle - \\=\;&\tau \circ (id \times {((\tau + id) \circ dstl \circ (id \times h))}^\sharp) \circ \alpha - \\=\;&{((\tau + id) \circ dstl \circ (id \times ((\tau + id) \circ dstl \circ (id \times h))))}^\sharp \circ \alpha - \\=\;&{(((\tau \circ (id \times \tau) \circ \alpha) + id) \circ dstl \circ (id \times h))}^\sharp.\tag{\ref{law:uniformity}} - \end{alignat*} - \end{itemize} - Thus, strength of \(\mathbf{K}\) has been proven. -\end{proof} As we did when proving commutativity of \(\mathbf{D}\), let us record some facts about \(\tau \) and the induced \(\sigma \), before proving commutativity of \(\mathbf{K}\). -\begin{corollary} - \(\sigma \) is left iteration preserving and satisfies \(\sigma \circ (\eta \times id) = \eta \) and the following properties of \(\tau \) and \(\sigma \) hold. +\begin{corollary}[\agdaref{Monad.Instance.K.Commutative}] + \(\sigma\) is left iteration preserving and satisfies \(\sigma \circ (\eta \times id) = \eta \) and the following properties of \(\tau \) and \(\sigma \) hold. \begin{alignat*}{2} & \tau \circ (f^* \times g^*) & & = {(\tau \circ (id \times g))}^* \circ \tau \circ (f^* \times id)\tag{\(\tau_1\)}\label{Ktau1} \\&\sigma \circ (f^* \times g^*) &&= {(\sigma \circ (f \times id))}^* \circ \sigma \circ (id \times g^*)\tag{\(\sigma_1\)}\label{Ksigma1} \end{alignat*} \end{corollary} -\begin{proof} - Note that the first part of the proof amounts to showing that \(\sigma = \ls{\eta}\) using uniqueness of \(\ls{\eta}\). Indeed, - \begin{alignat*}{1} - & \sigma \circ (\eta \times id) - \\=\;&Kswap \circ \tau \circ swap \circ (\eta \times id) - \\=\;&Kswap \circ \tau \circ (id \times \eta) \circ swap - \\=\;&Kswap \circ \eta \circ swap - \\=\;&\eta \circ swap \circ swap - \\=\;&\eta - \end{alignat*} - and for any \(h : Z \rightarrow KX + Z\) - \begin{alignat*}{1} - & \sigma \circ (h^\sharp \times id) - \\=\;&Kswap \circ \tau \circ swap \circ (h^\sharp \times id) - \\=\;&Kswap \circ \tau \circ (id \times h^\sharp) \circ swap - \\=\;&Kswap \circ {((\tau + id) \circ dstl \circ (id \times h))}^\sharp \circ swap - \\=\;&{(((Kswap \circ \tau) + id) \circ dstl \circ (id \times h))}^\sharp \circ swap - \\=\;&{((\sigma + id) \circ dstr \circ (h \times id))}^\sharp.\tag{\ref{law:uniformity}} - \end{alignat*} - - Let us now proceed with the properties of \(\tau \) and \(\sigma \). - \begin{itemize} - \item[(\ref{Ktau1})] - \begin{alignat*}{1} - & {(\tau \circ (id \times g))}^* \circ \tau \circ (f^* \times id) - \\=\;&\tau^* \circ K(id \times g) \circ \tau \circ (f^* \times id) - \\=\;&\tau^* \circ \tau \circ (id \times Kg) \circ (f^* \times id) - \\=\;&\tau \circ (id \times \mu) \circ (id \times Kg) \circ (f^* \times id) - \\=\;&\tau \circ (id \times g^*) \circ (f^* \times id) - \\=\;&\tau \circ (f^* \times g^*) - \end{alignat*} - - \item[(\ref{Ksigma1})] - \begin{alignat*}{1} - & {(\sigma \circ (f \times id))}^* \circ \sigma \circ (id \times g^*) - \\=\;&\sigma^* \circ K(f \times id) \circ \sigma \circ (id \times g^*) - \\=\;&\sigma^* \circ \sigma \circ (Kf \times id) \circ (id \times g^*) - \\=\;&\sigma \circ (\mu \times id) \circ (Kf \times id) \circ (id \times g^*) - \\=\;&\sigma \circ (f^* \times id) \circ (id \times g^*) - \\=\;&\sigma \circ (f^* \times g^*) - \end{alignat*} - \end{itemize} - Thus, the proof has been concluded. -\end{proof} The following Lemma is central to the proof of commutativity. -\begin{lemma}\label{lem:KCommKey} Given \(f : X \rightarrow KY + X, g : Z \rightarrow KA + Z\), +\begin{lemma}[\agdaref{Monad.Instance.K.Commutative}]\label{lem:KCommKey} Given \(f : X \rightarrow KY + X, g : Z \rightarrow KA + Z\), \[\tau^* \circ \sigma \circ ({((\eta + id) \circ f)}^\sharp \times {((\eta + id) \circ g)}^\sharp) = \sigma^* \circ \tau \circ ({((\eta + id) \circ f)}^\sharp \times {((\eta + id) \circ g)}^\sharp).\] \end{lemma} -\begin{proof} - Let us abbreviate \(\hat{f} := (\eta + id) \circ f\) and \(\hat{g} := (\eta + id) \circ g\). It suffices to find a - \[w : X \times Z \rightarrow K(X \times KA + KY \times Z) + X \times Z\] - such that \(\hat{f}^\sharp \circ \pi_1 = {[ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ]}^* \circ w^\sharp\) and \(\hat{g}^\sharp \circ \pi_2 = {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^* \circ w^\sharp \), because then - \begin{alignat*}{1} - & \tau^* \circ \sigma \circ (\hat{f}^\sharp \times \hat{g}^\sharp) - \\=\;&\tau^* \circ \sigma \circ ({[ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ]}^* \times {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^*) \circ (w^\sharp \times w^\sharp) - \\=\;&\tau^* \circ {(\sigma \circ ([ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] \times id))}^* \circ \sigma \circ (id \times {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^*) \circ (w^\sharp \times w^\sharp) - \\=\;&\tau^* \circ {(\sigma \circ ([ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] \times id))}^* \circ K(id \times {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^*) \circ \sigma \circ (w^\sharp \times w^\sharp) - \\=\;&\tau^* \circ {(\sigma \circ ([ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] \times id))}^* \circ K(id \times {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^*) \circ Kswap \circ \tau \circ \Delta \circ w^\sharp - \\=\;&\tau^* \circ {(\sigma \circ ([ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] \times id))}^* - \\&\hphantom{\tau^* }\circ K(id \times {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^*) \circ Kswap \circ K\langle \eta , id \rangle \circ w^\sharp\tag{\autoref{thm:Klifting}} - \\=\;&\tau^* \circ {(\sigma \circ ([ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] \times id))}^* \circ K(id \times {[ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]}^*) \circ K\langle id , \eta \rangle \circ w^\sharp - \\=\;&\tau^* \circ {(\sigma \circ ([ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] \times id))}^* \circ K\langle id , [ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]\rangle \circ w^\sharp - \\=\;&\tau^* \circ {(\sigma \circ \langle[ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ] , [ \hat{g}^\sharp \circ \pi_2 , \eta \circ \pi_2 ]\rangle)}^* \circ w^\sharp - \\=\;&\tau^* \circ {(\sigma \circ [\langle \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_2 \rangle , \langle \eta \circ \pi_1 , \hat{g}^\sharp \circ \pi_2 \rangle])}^* \circ w^\sharp - \\=\;&{(\tau^* \circ \sigma \circ [\hat{f}^\sharp \times \eta , \eta \times \hat{g}^\sharp])}^* \circ w^\sharp - \\=\;&{([\tau^* \circ \sigma \circ (\hat{f}^\sharp \times \eta) , \tau^* \circ \sigma \circ (\eta \times \hat{g}^\sharp)])}^* \circ w^\sharp - \\=\;&{([\tau^* \circ K(id \times \eta) \circ \sigma \circ (\hat{f}^\sharp \times id) , \tau^* \circ \eta \circ (id \times \hat{g}^\sharp)])}^* \circ w^\sharp - \\=\;&{([\sigma \circ (\hat{f}^\sharp \times id) , \tau \circ (id \times \hat{g}^\sharp)])}^* \circ w^\sharp, - \end{alignat*} - and by a symmetric argument also - \[\sigma^* \circ \tau \circ (\hat{f}^\sharp \times \hat{g}^\sharp) = {([\sigma \circ (\hat{f}^\sharp \times id) , \tau \circ (id \times \hat{g}^\sharp)])}^* \circ w^\sharp.\] - Note that we are referencing the equational lifting law established in \autoref{thm:Klifting} even though for a monad to be an equational lifting monad it has to be commutative first. However, since we are merely referencing the equational law, which can (and does in this case) hold without depending on commutativity, this does not pose a problem. - - We are thus left to find such a \(w\), consider - \[w := [ i_1 \circ K i_1 \circ \tau , ((K i_2 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times \hat{g}). \] - \(w\) indeed satisfies the requisite properties, let us check the first property, the second one follows by a symmetric argument. We need to show that - \[{[ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ]}^* \circ w^\sharp = {([ i_1 \circ \pi_1 , (\hat{f}^\sharp \circ \pi_1 + id) \circ dstl ] \circ dstr \circ (\hat{f} \times g))}^\sharp = \hat{f}^\sharp \circ \pi_1. \] - Indeed, - \begin{alignat*}{1} - & {[ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ]}^* \circ w^\sharp - \\=\;&{(({[ \hat{f}^\sharp \circ \pi_1 , \eta \circ \pi_1 ]}^* + id) \circ w)}^\sharp - \\=\;&{([ i_1 \circ {(\hat{f}^\sharp \circ \pi_1)}^* \circ \tau , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times \hat{g}))}^\sharp - \\=\;&{([ i_1 \circ {(\hat{f}^\sharp \circ \pi_1)}^* \circ \tau , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times (\eta + id)) \circ (id \times g))}^\sharp - \\=\;&{([ i_1 \circ {(\hat{f}^\sharp \circ \pi_1)}^* \circ \tau , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ ((id \times \eta) + id) \circ dstl \circ (id \times g))}^\sharp - \\=\;&{([ i_1 \circ {(\hat{f}^\sharp \circ \pi_1)}^* \circ \tau \circ (id \times \eta) , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times g))}^\sharp - \\=\;&{([ i_1 \circ \hat{f}^\sharp \circ \pi_1 , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times g))}^\sharp - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ \hat{f} \circ \pi_1 , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times g))}^\sharp\tag{\ref{law:fixpoint}} - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ \pi_1 \circ (\hat{f} \times id) , ((K\pi_1 \circ \sigma) + id) \circ dstr \circ (\hat{f} \times id) ] \circ dstl \circ (id \times g))}^\sharp - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ \pi_1 , ((K\pi_1 \circ \sigma) + id) \circ dstr ] \circ ((\hat{f} \times id) + (\hat{f} \times id)) \circ dstl \circ (id \times g))}^\sharp - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ \pi_1 , ((K\pi_1 \circ \sigma) + id) \circ dstr ] \circ dstl \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ (\pi_1 + \pi_1) \circ dstr , ((K\pi_1 \circ \sigma) + id) \circ dstr ] \circ dstl \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ (\pi_1 + \pi_1) , ((K\pi_1 \circ \sigma) + id) ] \circ (dstr + dstr) \circ dstl \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ i_1 \circ [id , \hat{f}^\sharp] \circ (\pi_1 + \pi_1) , ((K\pi_1 \circ \sigma) + id) ] \circ [ i_1 + i_1 , i_2 + i_2 ] \circ (dstl + dstl) \circ dstr \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ [ i_1 \circ [id , \hat{f}^\sharp] \circ i_1 \circ \pi_1 , i_1 \circ K\pi_1 \circ \sigma ] , [ i_1 \circ [id , \hat{f}^\sharp] \circ i_2 \circ \pi_1 , i_2 ] ] \circ (dstl + dstl) \circ dstr \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ [ i_1 \circ \pi_1 , i_1 \circ \pi_1 ] , [ i_1 \circ \hat{f}^\sharp \circ \pi_1 , i_2 ] ] \circ (dstl + dstl) \circ dstr \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ i_1 \circ [ \pi_1 , \pi_1 ] , (\hat{f}^\sharp \circ \pi_1 + id) ] \circ (dstl + dstl) \circ dstr \circ (\hat{f} \times g))}^\sharp - \\=\;&{([ i_1 \circ \pi_1 , (\hat{f}^\sharp \circ \pi_1 + id) \circ dstl ] \circ dstr \circ (\hat{f} \times g))}^\sharp - \end{alignat*} - and - \begin{alignat*}{1} - & \hat{f}^\sharp \circ \pi_1 - \\=\;&{((id + \Delta) \circ h)}^\sharp \tag{\ref{law:uniformity}} - \\=\;&{([ i_1 , {((id + \Delta) \circ h)}^\sharp + id] \circ h)}^\sharp \tag{\ref{law:diamond}} - \\=\;&{([ i_1 , (\hat{f}^\sharp \circ \pi_1) + id ] \circ h)}^\sharp \tag{\ref{law:uniformity}} - \\=\;&{([ i_1 \circ \pi_1 , ((\hat{f} \circ \pi_1 \circ \pi_1) + (\pi_1 \times id)) \circ dstl \circ \langle id , g \circ \pi_2 \rangle ] \circ dstr \circ (\hat{f} \times id))}^\sharp - \\=\;&{([ i_1 \circ \pi_1 , ((\hat{f} \circ \pi_1) + id) \circ ((\pi_1 \times id) + (\pi_1 \times id)) \circ dstl \circ \langle id , g \circ \pi_2 \rangle ] \circ dstr \circ (\hat{f} \times id))}^\sharp - \\=\;&{([ i_1 \circ \pi_1 , ((\hat{f} \circ \pi_1) + id) \circ dstl \circ \langle \pi_1 , g \circ \pi_2 \rangle ] \circ dstr \circ (\hat{f} \times id))}^\sharp - \\=\;&{([ i_1 \circ \pi_1 \circ (id \times g) , ((\hat{f} \circ \pi_1) + id) \circ dstl \circ (id \times g) ] \circ dstr \circ (\hat{f} \times id))}^\sharp - \\=\;&{([ i_1 \circ \pi_1 , ((\hat{f} \circ \pi_1) + id) \circ dstl ] \circ dstr \circ (\hat{f} \times g))}^\sharp, - \end{alignat*} - - where \(h = (\pi_1 + (\pi_1 + (\pi_1 \times id)) \circ dstl \circ \langle id , g \circ \pi_2 \rangle) \circ dstr \circ (\hat{f} \times id)\) and the application of \ref{law:uniformity} is justified, since % chktex 2 - \begin{alignat*}{1} - & (id + \pi_1) \circ (id + \Delta) \circ h - \\=\;&(\pi_1 + ((\pi_1 \circ [ \pi_1 , \pi_1 \times id ]) \circ dstl \circ \langle id , g \circ \pi_2 \rangle)) \circ dstr \circ (\hat{f} \times id) - \\=\;&(\pi_1 + ([ \pi_1 \circ \pi_1 , \pi_1 \circ \pi_1 ] \circ dstl \circ \langle id , g \circ \pi_2 \rangle)) \circ dstr \circ (\hat{f} \times id) - \\=\;&(\pi_1 + (\pi_1 \circ \pi_1 \circ \langle id , g \circ \pi_2 \rangle)) \circ dstr \circ (\hat{f} \times id) - \\=\;&(\pi_1 + \pi_1) \circ dstr \circ (\hat{f} \times id) - \\=\;&\pi_1 \circ (\hat{f} \times id) - \\=\;&\hat{f} \circ \pi_1 . - \end{alignat*} - - This concludes the proof. -\end{proof} - -\begin{lemma} +\begin{lemma}[\agdaref{Monad.Instance.K.Commutative}] \(\mathbf{K}\) is a commutative monad. \end{lemma} -\begin{proof} We need to show that \(\tau^* \circ \sigma = \sigma^* \circ \tau : KX \times KY \rightarrow K(X \times Y)\). - Let us proceed by right stability, consider the following diagram. - % https://q.uiver.app/#q=WzAsNSxbMSwwLCJLWCBcXHRpbWVzIEtZIl0sWzMsMCwiSyhLWCBcXHRpbWVzIFkpIl0sWzEsMiwiSyhYIFxcdGltZXMgS1kpIl0sWzMsMiwiSyhYIFxcdGltZXMgWSkiXSxbMCwzLCJLWCBcXHRpbWVzIFkiXSxbMCwxLCJcXHRhdSJdLFswLDIsIlxcaGF0e1xcdGF1fSIsMl0sWzEsMywiXFxoYXR7XFx0YXV9XioiXSxbMiwzLCJcXHRhdV4qIiwyXSxbNCwwLCJpZCBcXHRpbWVzIFxcZXRhIiwwLHsiY3VydmUiOi0yfV0sWzQsMywiXFxoYXR7XFx0YXV9IiwyLHsiY3VydmUiOjJ9XV0= - \[ - \begin{tikzcd} - & {KX \times KY} && {K(KX \times Y)} \\ - \\ - & {K(X \times KY)} && {K(X \times Y)} \\ - {KX \times Y} - \arrow["\tau", from=1-2, to=1-4] - \arrow["{\sigma}"', from=1-2, to=3-2] - \arrow["{\sigma^*}", from=1-4, to=3-4] - \arrow["{\tau^*}"', from=3-2, to=3-4] - \arrow["{id \times \eta}", curve={height=-12pt}, from=4-1, to=1-2] - \arrow["{\sigma}"', curve={height=12pt}, from=4-1, to=3-4] - \end{tikzcd} - \] - The diagram commutes since - \[\sigma^* \circ \tau \circ (id \times \eta) = \sigma^* \circ \eta = \sigma \] - and - \[\tau^* \circ \sigma \circ (id \times \eta) = \tau^* \circ K(id \times \eta) \circ \sigma = {(\tau \circ (id \times \eta))}^* \circ \sigma = \sigma.\] - - We are left to show that both \(\sigma^* \circ \tau \) and \(\tau^* \circ \sigma \) are right iteration preserving. Let \(h : Z \rightarrow KY + Z\), indeed - \[\sigma^* \circ \tau \circ (id \times h^\sharp) = \sigma^* {((\tau + id) \circ dstl \circ (id \times h))}^\sharp = {(((\sigma^* \circ \tau) + id) \circ dstl \circ (id \times h))}^\sharp. \] - - Let \(\psi := \tau^* \circ \sigma \) and let us proceed by left stability to show that \(\psi \) is right iteration preserving, consider the following diagram - % https://q.uiver.app/#q=WzAsNCxbNCwwLCJLWCBcXHRpbWVzIEtZIl0sWzQsMSwiSyhYIFxcdGltZXMgWSkiXSxbMCwxLCJLWCBcXHRpbWVzIFoiXSxbMCwzLCJYIFxcdGltZXMgWiJdLFswLDEsIlxccHNpIl0sWzIsMCwiaWQgXFx0aW1lcyBoXlxcIyJdLFsyLDEsIigoXFxwc2kgKyBpZCkgXFxjaXJjIGRzdGwgXFxjaXJjIChpZCBcXHRpbWVzIGgpKV5cXCMiLDJdLFszLDIsIlxcZXRhIFxcdGltZXMgaWQiXSxbMywxLCJcXHRhdSBcXGNpcmMgKGlkIFxcdGltZXMgaF5cXCMpIiwyXV0= - \[ - \begin{tikzcd} - &&&& {KX \times KY} \\ - {KX \times Z} &&&& {K(X \times Y)} \\ - \\ - {X \times Z} - \arrow["\psi", from=1-5, to=2-5] - \arrow["{id \times h^\sharp}", from=2-1, to=1-5] - \arrow["{((\psi + id) \circ dstl \circ (id \times h))^\sharp}"', from=2-1, to=2-5] - \arrow["{\eta \times id}", from=4-1, to=2-1] - \arrow["{\tau \circ (id \times h^\sharp)}"', from=4-1, to=2-5] - \end{tikzcd} - \] - which commutes, since - \begin{alignat*}{1} - & \psi \circ (id \times h^\sharp) \circ (\eta \times id) - \\=\;&\psi \circ (\eta \times id) \circ (id \times h^\sharp) - \\=\;&\tau^* \circ \eta \circ (id \times h^\sharp) - \\=\;&\tau \circ (id \times h^\sharp) - \\=\;&{((\tau + id) \circ dstl \circ (id \times h))}^\sharp - \\=\;&{((\psi + id) \circ dstl \circ (id \times h))}^\sharp \circ (\eta \times id).\tag{\ref{law:uniformity}} - \end{alignat*} - - We are left to show that both \(\psi \circ (id \times h^\sharp)\) and \({((\psi + id) \circ dstl \circ (id \times h))}^\sharp \) are left iteration preserving. Let \(g : A \rightarrow KX + A\), then \(\psi \circ (id \times h^\sharp)\) is left iteration preserving, since - \begin{alignat*}{1} - & \psi \circ (id \times h^\sharp) \circ (g^\sharp \times id) - \\=\;&\psi \circ (g^\sharp \times id) \circ (id \times h^\sharp) - \\=\;&\tau^* \circ {((\sigma + id) \circ dstr \circ (g \times id))}^\sharp \circ (id \times h^\sharp) - \\=\;&{((\psi + id) \circ dstr \circ (g \times id))}^\sharp \circ (id \times h^\sharp) - \\=\;&{(((\psi \circ (id \times h^\sharp)) + id) \circ dstr \circ (g \times id))}^\sharp.\tag{\ref{law:uniformity}} - \end{alignat*} - - Lastly, we need to show that - \[{((\psi + id) \circ dstl \circ (id \times h))}^\sharp \circ (g^\sharp \times id) = {(({((\psi + id) \circ dstl \circ (id \times h))}^\sharp + id) \circ dstr \circ (g \times id))}^\sharp.\] - Note that by~\ref{law:uniformity} the left-hand side can be rewritten as - \[{(({((\psi + id) \circ dstr \circ (g \times id))}^\sharp + id) \circ dstl \circ (id \times h))}^\sharp.\] - - Consider now, that - \begin{alignat*}{1} - & {(({((\psi + id) \circ dstl \circ (id \times h))}^\sharp + id) \circ dstr \circ (g \times id))}^\sharp - \\=\;&{(({({((\psi + id) \circ dstl \circ (id \times h))}^\sharp)}^* + id) \circ (\eta + id) \circ dstr \circ (g \times id))}^\sharp - \\=\;&{({((\psi + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ {((\eta + id) \circ dstr \circ (g \times id))}^\sharp - \\=\;&{({((\psi + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ {(((\sigma \circ (\eta \times id)) + id) \circ dstr \circ (g \times id))}^\sharp - \\=\;&{({((\psi + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&{({((\psi^* + id) \circ (\eta + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ {({((\eta + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ {({((\eta + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ {({(((\tau \circ (id \times \eta)) + id) \circ dstl \circ (id \times h))}^\sharp)}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ {({((\tau + id) \circ dstl \circ (id \times ((\eta + id) \circ h)))}^\sharp)}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ {(\tau \circ (id \times {((\eta + id) \circ h)}^\sharp))}^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ \tau^* \circ K(id \times {((\eta + id) \circ h)}^\sharp) \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ \tau^* \circ \sigma \circ (id \times {((\eta + id) \circ h)}^\sharp) \circ ({((\eta + id) \circ g)}^\sharp \times id) - \\=\;&\psi^* \circ \tau^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times {((\eta + id) \circ h)}^\sharp), - \end{alignat*} - and by a symmetric argument - \begin{alignat*}{1} - & {(({((\psi + id) \circ dstr \circ (g \times id))}^\sharp + id) \circ dstl \circ (id \times h))}^\sharp - \\=\;&\psi^* \circ \sigma^* \circ \tau \circ ({((\eta + id) \circ g)}^\sharp \times {((\eta + id) \circ h)}^\sharp). - \end{alignat*} - - We are thus done by - \begin{alignat*}{1} - & {((\psi + id) \circ dstl \circ (id \times h))}^\sharp \circ (g^\sharp \times id) - \\=\;&{(({((\psi + id) \circ dstr \circ (g \times id))}^\sharp + id) \circ dstl \circ (id \times h))}^\sharp\tag{\ref{law:uniformity}} - \\=\;&\psi^* \circ \sigma^* \circ \tau \circ ({((\eta + id) \circ g)}^\sharp \times {((\eta + id) \circ h)}^\sharp) - \\=\;&\psi^* \circ \tau^* \circ \sigma \circ ({((\eta + id) \circ g)}^\sharp \times {((\eta + id) \circ h)}^\sharp)\tag{\autoref{lem:KCommKey}} - \\=\;&{(({((\psi + id) \circ dstl \circ (id \times h))}^\sharp + id) \circ dstr \circ (g \times id))}^\sharp.\tag*{\qedhere} - \end{alignat*} -\end{proof} - -\begin{theorem}\label{thm:Klifting} +\begin{theorem}[\agdaref{Monad.Instance.K.EquationalLifting}]\label{thm:Klifting} \(\mathbf{K}\) is an equational lifting monad. \end{theorem} -\begin{proof} - Since we have already shown commutativity, we are left to show that \(\tau \circ \Delta = K \langle \eta , id \rangle \). Note that \(K \langle \eta , id \rangle = \free{\eta \circ \langle \eta , id \rangle}\), which is the unique Elgot algebra morphism satisfying \(K \langle \eta , id \rangle \circ \eta = \eta \circ \langle \eta , id \rangle \). It thus suffices to show that \(\tau \circ \Delta \) satisfies the same identity and is iteration preserving. - - The identity follows easily: - \begin{alignat*}{1} - & \tau \circ \Delta \circ \eta - \\=\;&\tau \circ \langle \eta , \eta \rangle - \\=\;&\tau \circ (id \times \eta) \circ \langle \eta , id \rangle - \\=\;&\eta \circ \langle \eta , id \rangle. - \end{alignat*} - - For iteration preservation of \(\tau \circ \Delta \) consider \(Z \in \obj{\C}\) and \(h : Z \rightarrow KX + Z\), then - \begin{alignat*}{1} - & \tau \circ \Delta \circ h^{\sharp} - \\=\;&\tau \circ \langle h^{\sharp} , h^{\sharp} \rangle - \\=\;&\tau \circ (id \times h^{\sharp}) \circ \langle h^{\sharp} , id \rangle - \\=\;&{((\tau + id) \circ dstl \circ (id \times f))}^\sharp \circ \langle h^{\sharp} , id \rangle - \\=\;&{(((\tau \circ \Delta) + id) \circ f)}^\sharp.\tag{\ref{law:uniformity}} - \end{alignat*} - - Note that by monicity of \(dstl^{-1}\) and by~\ref{law:fixpoint} - \[(\Delta + \langle f^\sharp , id \rangle) \circ f = dstl \circ \langle f^\sharp , f \rangle.\tag{*}\label{helperinkey} \] - The application of~\ref{law:uniformity} is then justified by - \begin{alignat*}{1} - & (id + \langle f^\sharp , id \rangle) \circ ((\tau \circ \Delta) + id) \circ f - \\=\;&((\tau \circ \Delta) + \langle f^\sharp , id \rangle) \circ f - \\=\;&(\tau + id) \circ (\Delta + \langle f^\sharp , id \rangle) \circ f - \\=\;&(\tau + id) \circ dstl \circ \langle f^\sharp , f \rangle\tag{\ref{helperinkey}} - \\=\;&(\tau + id) \circ dstl \circ (id \times f) \circ \langle f^\sharp , id \rangle.\tag*{\qedhere} - \end{alignat*} -\end{proof} - -\begin{theorem} +\begin{theorem}[\agdaref{Monad.Instance.K.PreElgot},\agdaref{Monad.Instance.K.StrongPreElgot}] \(\mathbf{K}\) is the initial (strong) pre-Elgot monad. -\end{theorem} -\begin{proof} - Note that \(\mathbf{K}\) is a pre-Elgot monad by definition and strong pre-Elgot by \autoref{lem:Kstrong}. Let us first show that \(\mathbf{K}\) is the initial pre-Elgot monad. - - Given any pre-Elgot monad \(\mathbf{T}\), let us introduce alternative names for the monad operations of \(\mathbf{T}\) and \(\mathbf{K}\) to avoid confusion: - \[\mathbf{T} = (T , \eta^T, \mu^T)\] - and - \[\mathbf{K} = (K , \eta^K, \mu^T).\] - - For every \(X \in \obj{\C} \) we define \(¡ = \free{(\eta^T : X \rightarrow TX)} : KX \rightarrow TX \). Note that \(¡\) is per definition the unique iteration preserving morphism that satisfies \(¡ \circ \eta^K = \eta^T\). We are done after showing that \(¡\) is natural and respects the monad multiplication. - - Let \(f : X \rightarrow Y\). For naturality of \(¡\) it suffices to show - \[¡ \circ Kf = \free{Tf \circ \eta^T} = Tf \circ ¡,\] - where \(\free{Tf \circ \eta^T}\) is the unique Elgot algebra morphism satisfying \(\free{Tf \circ \eta^T} \circ \eta^K = Tf \circ \eta^T \). - Note that both \(¡ \circ Kf \) and \(Tf \circ ¡ \) are iteration preserving since they are composed of iteration preserving morphisms and both satisfy the requisite property, since \(Tf \circ ¡ \circ \eta^K = Tf \circ \eta^T \) follows instantly and - \begin{alignat*}{1} - & ¡ \circ Kf \circ \eta^K - \\=\;&¡ \circ \eta^K \circ f - \\=\;&\eta^T \circ f - \\=\;&Tf \circ \eta^T. - \end{alignat*} - - Let us proceed similarly for showing that \(¡\) respects the monad multiplication, i.e.\ consider - \[¡ \circ \mu = \free{¡} = \mu^T \circ T ¡ \circ ¡,\] - where \(\free{¡}\) is the unique Elgot algebra morphism satisfying \(\free{¡} \circ \eta^K = ¡\). Note that again both sides of the identity are iteration preserving, since they are composed of iteration preserving morphisms. Consider also that \(¡ \circ \mu^K \circ \eta^K = ¡\) and - \begin{alignat*}{1} - & \mu^T \circ T¡ \circ ¡ \circ \eta^K - \\=\;&\mu^T \circ ¡ \circ K¡ \circ \eta^K - \\=\;&\mu^T \circ ¡ \circ \eta^K \circ ¡ - \\=\;&\mu^T \circ \eta^T \circ ¡ - \\=\;&¡. - \end{alignat*} - - Thus, \(\mathbf{K}\) is an initial pre-Elgot monad. To show that \(\mathbf{K}\) is also initial strong pre-Elgot, assume that \(\mathbf{T}\) is strong with strength \(\tau^T\) and let us call the strength of \(\mathbf{K}\) \(\tau^K\). We are left to show that \(¡\) respects strength, i.e.\ \( ¡ \circ \tau^K = \tau^T \circ (id \times ¡) : X \times KY \rightarrow T(X \times Y) \). We proceed by right-stability, using: - % https://q.uiver.app/#q=WzAsNSxbMSwwLCJYIFxcdGltZXMgS1kiXSxbMywwLCJLKFggXFx0aW1lcyBZKSJdLFszLDIsIlQoWCBcXHRpbWVzIFkpIl0sWzEsMiwiWCBcXHRpbWVzIFRZIl0sWzAsMywiWCBcXHRpbWVzIFkiXSxbMCwxLCJcXHRhdV5LIl0sWzEsMiwiwqEiXSxbMCwzLCJpZCBcXHRpbWVzIMKhIiwyXSxbMywyLCJcXHRhdV5UIiwyXSxbNCwwLCJpZCBcXHRpbWVzIFxcZXRhIiwwLHsiY3VydmUiOi0yfV0sWzQsMiwiXFxldGFeVCIsMix7ImN1cnZlIjoyfV1d - \[ - \begin{tikzcd}[ampersand replacement=\&] - \& {X \times KY} \&\& {K(X \times Y)} \\ - \\ - \& {X \times TY} \&\& {T(X \times Y)} \\ - {X \times Y} - \arrow["{\tau^K}", from=1-2, to=1-4] - \arrow["{¡}", from=1-4, to=3-4] - \arrow["{id \times ¡}"', from=1-2, to=3-2] - \arrow["{\tau^T}"', from=3-2, to=3-4] - \arrow["{id \times \eta}", curve={height=-12pt}, from=4-1, to=1-2] - \arrow["{\eta^T}"', curve={height=12pt}, from=4-1, to=3-4] - \end{tikzcd} - \] - The diagram commutes, since \( ¡ \circ \tau^K = \eta^T = \tau^T \circ (id \times \eta^T) = \tau^T \circ (id \times ¡) \circ (id \times \eta^T) \). Now we are done, since \(¡ \circ \tau^K\) and \(\tau^T \circ (id \times ¡)\) are both right iteration preserving because both are composed of (right) iteration preserving morphisms. -\end{proof} \ No newline at end of file +\end{theorem} \ No newline at end of file diff --git a/src/06_setoids.tex b/src/06_setoids.tex index 8b42816..17feae6 100644 --- a/src/06_setoids.tex +++ b/src/06_setoids.tex @@ -7,13 +7,13 @@ In this chapter we will use the quotients-as-setoid approach, i.e.\ we will work \section{Setoids in Type Theory} We will now introduce the category that the rest of the chapter will take place in. Let us start with some basic definitions. -\begin{definition}[Setoid] +\begin{definition}[Setoid (\agdaref{Relation.Binary.Bundles})] A setoid is a tuple \((A, \overset{A}{=})\) where \(A\) (usually called the \textit{carrier}) is a type and \(\overset{A}{=}\) is an equivalence relation on the inhabitants of \(A\). \end{definition} For brevity, we will not use the tuple notation most of the time, instead we will just say `Let \(A\) be a setoid' and implicitly call the equivalence relation \(\overset{A}{=}\). -\begin{definition}[Setoid Morphism] +\begin{definition}[Setoid Morphism (\agdaref{Function.Bundles})] A morphism between setoids \(A\) and \(B\) constitutes a function \(f : A \rightarrow B\) between the carriers, such that \(f\) respects the equivalences, i.e.\ for any \(x,y : A\), \(x \overset{A}{=} y\) implies \(f\;x \overset{B}{=} f\;y\). We will denote setoid morphisms as \(A ⇝ B\). \end{definition} Let us now consider the function space setoid, which is of special interest, since it carries a notion of equality between functions. @@ -24,91 +24,13 @@ Let us now consider the function space setoid, which is of special interest, sin Setoids together with setoid morphisms form a category that we will call \(\setoids\). Properties of \(\setoids\) have already been examined in~\cite{setoids}, however we will reiterate some of these properties now to introduce notation that will be used for the rest of the chapter. -\begin{proposition} +\begin{proposition}[\agdaref{Category.Ambient.Setoids}] \(\setoids\) is a distributive category. \end{proposition} -\begin{proof} - To show that \(\setoids\) is (co)Cartesian we will give the respective data types and unique functions. % chktex 36 - For brevity, we will omit the proofs that the functions respect the corresponding equivalences, these are however included in the Agda standard library~\cite{agda-stdlib}. - \begin{itemize} - \item \textbf{Products}: - \begin{minted}{agda} - record _×_ {a b} (A : Set a) (B : Set b) : Set (a ⊔ b) where - constructor _,_ - field - fst : A - snd : B - - <_,_> : ∀ {a b c} {A : Set a} {B : Set b} {C : Set c} - → (A → B) → (A → C) → A → (B × C) - < f , g > x = (f x , g x) - \end{minted} - The product setoid is denoted \((A \times B, \overset{\times}{=})\) or just \(A \times B\). Equality of products is defined in the canonical way. - \item \textbf{Terminal Object}: - \begin{minted}{agda} - record ⊤ {l} : Set l where - constructor tt - - ! : ∀ {l} {X : Set l} → X → ⊤ {l} - ! _ = tt - \end{minted} - The terminal setoid is thus \((\top, \overset{\top}{=})\), where \(\top \overset{\top}{=} \top\). - \item \textbf{Coproducts}: - \begin{minted}{agda} - data _+_ {a b} (A : Set a) (B : Set b) : Set (a ⊔ b) where - i₁ : A → A + B - i₂ : B → A + B - - [_,_] : ∀ {a b c} {A : Set a} {B : Set b} {C : Set c} - → (A → C) → (B → C) → (A + B) → C - [ f , g ] (i₁ x) = f x - [ f , g ] (i₂ x) = g x - \end{minted} - Similarly to products, the coproduct setoid is denoted \((A + B, \overset{+}{=})\) or just \(A + B\), where equality of coproducts is defined in the canonical way. - \item \textbf{Initial Object}: - \begin{minted}{agda} - data ⊥ {l} : Set l where - - ¡ : ∀ {l} {X : Set l} → ⊥ {l} → X - ¡ () - \end{minted} - The initial setoid is then \((\bot, \emptyset)\), where the equivalence is the empty relation. - \end{itemize} - - Lastly we need to show that the canonical distributivity function is an iso. Recall that the canonical distributivity morphism is defined as \(dstl^{-1} = [ id \times i_1 , id \times i_2 ] : A \times B + A \times C \rightarrow A \times (B + C)\). - This is equivalent to the following definition that uses pattern matching. - \begin{minted}{agda} - distributeˡ⁻¹ : ∀ {a b c} {A : Set a} {B : Set b} {C : Set c} - → (A × B) + (A × C) → A × (B + C) - distributeˡ⁻¹ (i₁ (x , y)) = (x , i₁ y) - distributeˡ⁻¹ (i₂ (x , y)) = (x , i₂ y) - \end{minted} - The inverse can then be defined similarly: - \begin{minted}{agda} - distributeˡ : ∀ {a b c} {A : Set a} {B : Set b} {C : Set c} - → A × (B + C) → (A × B) + (A × C) - distributeˡ (x , i₁ y) = i₁ (x , y) - distributeˡ (x , i₂ y) = i₂ (x , y) - \end{minted} - Note that these functions are inverse by definition, and it follows quickly that they are setoid morphisms. -\end{proof} - -\begin{proposition}\label{prop:setoids-ccc} +\begin{proposition}[\agdaref{Categories.Category.Instance.Properties.Setoids.CCC}]\label{prop:setoids-ccc} \(\setoids\) is Cartesian closed. \end{proposition} -\begin{proof} - Let \(A\) and \(B\) be two setoids. The function space setoid \(A ⇝ B\) is an exponential object of \(A\) and \(B\), together with the functions \(curry\) and \(eval\) defined in the following listing. - \begin{minted}{agda} - curry : ∀ {a b c} {A : Set a} {B : Set b} {C : Set c} - → (C × A → B) → C → A → B - curry f x y = f (x , y) - - eval : ∀ {a b} {A : Set a} {B : Set b} → ((A → B) × A) → B - eval (f , x) = f x - \end{minted} - The universal property of exponential objects follows instantly. -\end{proof} \section{Quotienting the Delay Monad} In this section we will introduce data types only using inference rules. For that we adopt the convention that coinductive types are introduced by doubled lines while inductive types are introduced with a single line. @@ -127,7 +49,7 @@ Let \(A\) be a setoid. Lifting the equivalence \(\overset{A}{=}\) to \(D\;A\) yi \inferrule*{x \sim y}{later\; x \sim later\; y} \qquad \] -\begin{proposition}[\cite{quotienting}] +\begin{proposition}[\cite{quotienting} (\agdaref{Monad.Instance.Setoids.Delay})] \((D\;A, \sim)\) is a setoid and admits a monad structure. \end{proposition} @@ -144,378 +66,24 @@ Now, we call two computations \(p\) and \(q\) \emph{weakly bisimilar} or \(p \ap \inferrule*{x \approx y}{later \;x \approx later \;y} \qquad \] -\begin{proposition}[\cite{delay}] +\begin{proposition}[\cite{delay} (\agdaref{Monad.Instance.Setoids.Delay})] \((D\;A, \approx)\) is a setoid and admits a monad structure. \end{proposition} -\begin{proof} - The monad unit is the constructor \(now : A \rightarrow D\;A\) and the multiplication \(\mu : D\;D\;A \rightarrow D\;A\) can be defined as follows: - - \[\mu\;x = \begin{cases} - z & \text{if } x = now\;z \\ - later(\mu\;z) & \text{if } x = later\;z - \end{cases}\] - - Given a function \(f : A \rightarrow B\), the lifted function \(Df : D\;A \rightarrow D\;B\) is defined as - \[Df\;x = \begin{cases} - now(f\;z) & \text{if } x = now\;z \\ - later(Df\;z) & \text{if } x = later\;z - \end{cases}\] - - It has been shown in~\cite{delay} that this indeed extends to a monad. -\end{proof} For the rest of this chapter we will abbreviate \(\tilde{D}\;A = (D_A , \sim)\) and \(\dbtilde{D}\;A = (D_A, \approx)\). -\begin{lemma}\label{lem:Delgot} +\begin{lemma}[\agdaref{Monad.Instance.Setoids.K}]\label{lem:Delgot} Every \(\dbtilde{D}\;A\) can be equipped with an Elgot algebra structure. \end{lemma} -\begin{proof} - We need to show that for every setoid \(A\) the resulting setoid \(\dbtilde{D}\;A\) extends to an Elgot algebra. - - Let \(X\) be a setoid and \(f : X ⇝ \dbtilde{D}\;A + X\) be a setoid morphism, we define \(f^\sharp : X ⇝ \dbtilde{D}\;A\) point wise: - \[ - f^\sharp\;x := - \begin{cases} - a & \text{if } f\;x = i_1 (a) \\ - later\;(f^{\sharp}\;a) & \text{if } f\;x = i_2 (a) - \end{cases} - \] - - Let us first verify that \(f^\sharp\) is indeed a setoid morphism, i.e.\ given \(x, y : X\) with \(x \overset{X}{=} y\), we need to show that \(f^\sharp\;x \approx f^\sharp\;y\). Since \(f\) is a setoid morphism we know that \(f\;x \overset{+}{=} f\;y\), which already implies that \(f^\sharp\;x \approx f^\sharp\;y\) by the definition of \(f^\sharp\). Note that by the same argument we can define an iteration operator that respects strong bisimilarity, let us call it \(f^{\tilde{\sharp}}\) as we will later need to distinguish between \(f^\sharp\) and \(f^{\tilde{\sharp}}\). - - Next, we check the iteration laws: - - \begin{itemize} - \item \ref{law:fixpoint}: We need to show that \(f^\sharp \;x \approx [ id , f^\sharp ](f\;x)\) for any \(x : X\). Let us proceed by case distinction: % chktex 2 - \begin{mycase} - \case{} \(f\;x = i_1\;a\) - \[ f^\sharp\;x \approx a \approx [ id , f^\sharp ] (i_1\;a) \approx [ id , f^\sharp ] (f\;x) \] - \case{} \(f\;x = i_2\;a\) - \[ f^\sharp\;x \approx later (f^{\sharp}\;a) \approx f^\sharp\;a \approx [ id , f^\sharp ] (i_2 \;a) \approx [ id , f^\sharp ] (f\;x)\] - \end{mycase} - \item \ref{law:uniformity}: Let \(Y\) be a setoid and \(g : Y ⇝ \dbtilde{D}\;A + Y, h : X ⇝ Y\) be setoid morphisms, such that \((id + h) \circ f \doteq g \circ h\). We need to show that \(f^\sharp\;x \approx g^\sharp(h\;x)\), for any \(x : X\). Let us proceed by case distinction over \(f\;x\) and \(g (h\;x)\), note that by the requisite equation \((id + h) \circ f \doteq g \circ h\), we only need to consider two cases: % chktex 2 - \begin{mycase} - \case{} \(f\;x = i_1\;a\) and \(g (h\;x) = i_1\;b\)\\ - Consider that \((id + h) \circ f \doteq g \circ h\) on \(x\) yields \(i_1 \; a \overset{+}{=} i_1 \; b\) and thus \(a \approx b\). Then indeed, - \[f^\sharp\; x \approx a \approx b \approx g^\sharp (h\;x)\] - \case{} \(f\;x = i_2\;a\) and \(g (h\;x) = i_2\;b\)\\ - Note that \((id + h) \circ f \doteq g \circ h\) on \(x\) yields \(i_2(h\;a) \overset{+}{=} i_2\;b\) and thus \(h\;a \overset{Y}{=} b\). - We are done by coinduction, which yields - \[f^\sharp\;x \approx later(f^\sharp\;a) \approx later(g^\sharp(h\;a)) \approx later(g^\sharp\;b) \approx g^\sharp (h\;x).\] - \end{mycase} - \item \ref{law:folding}: Let \(Y\) be a setoid and \(h : Y ⇝ X + Y\) a setoid morphism, we need to show that \({(f^\sharp + h)}^\sharp\;z \approx {[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp\;z\) for any \(z : X + Y\). % chktex 2 - Let us first establish the following fact - \[f^\sharp\;c \approx {[(id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;c) \qquad \text{for any } c : X, \tag{*}\label{folding-helper}\] - which follows by case distinction on \(f\;c\) and coinduction: - \begin{mycase} - \case{} \(f\;c = i_1\;a\) - \[f^\sharp\;c \approx a \approx {[(id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;c)\] - \case{} \(f\;c = i_2\;a\) - \[f^\sharp\;c \approx later(f^\sharp\;a) \approx later({[(id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;a)) \approx {[(id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;c)\] - \end{mycase} - We will now proceed with the proof of \ref{law:folding}, by case distinction on \(z\): % chktex 2 - \begin{mycase} - \case{} \(z = i_1\;x\)\\ - Another case distinction on \(f\;x\) yields: - \subcase{} \(f\;x = i_1\;a\)\\ - We are done, since \({(f^\sharp + h)}^\sharp(i_1 \; x) \approx a \approx {[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;x)\) - \subcase{} \(f\;x = i_2\;a\)\\ - Now, using the fact we established prior - \begin{alignat*}{1} - & {(f^\sharp + h)}^\sharp(i_1 \; x) - \\\approx\;&later(f^\sharp\;a) - \\\approx\;&later({[(id + i_1) \circ f , i_2 \circ h]}^\sharp (i_1\;a))\tag{\ref{folding-helper}} - \\\approx\;&{[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;x). - \end{alignat*} - \case{} \(z = i_2\;y\)\\ - Let us proceed by discriminating on \(h\;y\). - \subcase{} \(h\;y = i_1\;a\)\\ - Indeed by coinduction, - \begin{alignat*}{1} - & {(f^\sharp + h)}^\sharp(i_2 \; y) - \\\approx\;&later((f^\sharp + h)(i_1\;a)) - \\\approx\;&later({[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_1\;a)) - \\\approx\;&{[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_2\;y) - \end{alignat*} - \subcase{} \(h\;y = i_2\;a\)\\ - Similarly by coinduction, - \begin{alignat*}{1} - & {(f^\sharp + h)}^\sharp(i_2 \; y) - \\\approx\;&later((f^\sharp + h)(i_2\;a)) - \\\approx\;&later({[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_2\;a)) - \\\approx\;&{[ (id + i_1) \circ f , i_2 \circ h ]}^\sharp(i_2\;y) - \end{alignat*} - \end{mycase} - \end{itemize} - This concludes the proof that every \(\dbtilde{D}\;A\) extends to an Elgot algebra. -\end{proof} In the next proof a notion of \emph{discretized} setoid is needed, i.e.\ given a setoid \(Z\), we can discretize \(Z\) by replacing the equivalence relation with propositional equality, yielding \(\disc{Z} := (Z, \equiv)\). Now, the following corollary describes how to transform an iteration on \(\dbtilde{D}\;A\) into an iteration on \(\tilde{D}\;A\). -\begin{corollary}\label{cor:discretize} +\begin{corollary}[\agdaref{Monad.Instance.Setoids.K}]\label{cor:discretize} Given a setoid morphism \(g : X ⇝ \dbtilde{D}\;A + X\), there exists a setoid morphism \(\bar{g} : \disc{X} ⇝ \tilde{D}\;A + \disc{X}\) such that \(g^\sharp\;x \sim \bar{g}^{\tilde{\sharp}}\;x\) for any \(x : X\). \end{corollary} -\begin{proof} - It is clear that propositional equality implies strong bisimilarity and thus \(\bar{g}\) is a setoid morphism that behaves as \(g\) does but with a different type profile. - The requisite property follows by case distinction on \(g\;x\). - \begin{mycase} - \case{} \(g\;x = i_1\;a\)\\ - We are done, since \(g^\sharp\;x \sim a \sim \bar{g}^{\tilde{\sharp}}\;x\) - \case{} \(g\;x = i_2\;a\)\\ - By coinduction \(g^\sharp\;x \sim later(g^\sharp\;a) \sim later(\bar{g}^{\tilde{\sharp}}\;a) \sim \bar{g}^{\tilde{\sharp}}\;x\), which concludes the proof. - \qedhere - \end{mycase} -\end{proof} -\begin{theorem}\label{thm:Dfreeelgot} +\begin{theorem}[\agdaref{Monad.Instance.Setoids.K}]\label{thm:Dfreeelgot} Every \(\dbtilde{D}\;A\) can be equipped with a free Elgot algebra structure. \end{theorem} -\begin{proof} - We build on \autoref{lem:Delgot}, it thus suffices to show that for any setoid \(A\), the Elgot algebra \((\dbtilde{D}\;A, {(-)}^\sharp)\) together with the setoid morphism \(now : A ⇝ \dbtilde{D}\;A\) is a free such algebra. - Given an Elgot algebra \((B, {(-)}^{\sharp_b})\) and a setoid morphism \(f : A ⇝ B\). We need to define an Elgot algebra morphism \(\free{f} : \dbtilde{D}\;A ⇝ B\). Consider \(g : \tilde{D}\;A ⇝ B + \tilde{D}\;A\) defined by - \[g\;x = - \begin{cases} - i_1(f\;a) & \text{if } x = now\;a \\ - i_2\;a & \text{if } x = later\;a - \end{cases}\] - - \(g\) trivially respects strong bisimilarity, thus consider \(g^{\sharp_b} : \tilde{D}\;A ⇝ B\). We need to show that \(g^{\sharp_b}\) also respects weak bisimilarity, thus yielding the requisite function \(\free{f} = g^{\sharp_b} : \dbtilde{D}\;A ⇝ B\). However, the proof turns out to be rather complex, let us postpone it to~\autoref{cor:respects}. - - Instead, we will continue with the proof. Let us now show that \(g^{\sharp_b}\) is iteration preserving. Given a setoid morphism \(h : X ⇝ \dbtilde{D}\;A + X\), we need to show that \(g^{\sharp_b} (h^\sharp\;x) \overset{B}{=} {((g^{\sharp_b} + id) \circ h)}^{\sharp_b}\;x\) for any \(x : X\). Using \autoref{cor:discretize} we will proceed to show - \[g^{\sharp_b} (h^\sharp\;x) \overset{B}{=} {((g^{\sharp_b} + id) \circ \bar{h})}^{\sharp_b}\;x \overset{B}{=} {((g^{\sharp_b} + id) \circ h)}^{\sharp_b}\;x.\] - - The second step instantly follows by \ref{law:uniformity}, considering that the identity function easily extends to a setoid morphism \(id : \disc{X} ⇝ X\), and thus the second step can be reduced to \({((g^{\sharp_b} + id) \circ \bar{h})}^{\sharp_b}\;x \overset{B}{=} {((g^{\sharp_b} + id) \circ h)}^{\sharp_b}(id\;x)\). % chktex 2 - For the first step consider - \begin{alignat*}{1} - & g^{\sharp_b} (h^\sharp\;x) - \\\overset{B}{=}\;&g^{\sharp_b} (\bar{h}^{\tilde{\sharp}}\;x)\tag{\autoref{cor:discretize}} - \\\overset{B}{=}\;&(g^{\sharp_b} \circ [ id , \bar{h}^{\tilde{\sharp}}])(i_2\;x) - \\\overset{B}{=}\;&{([(id + i_1) \circ g , i_2 \circ i_2 ] \circ [i_1 , h])}^{\sharp_b} (i_2\;x)\tag{\ref{law:uniformity}} - \\\overset{B}{=}\;&{((g^{\sharp_b} + id) \circ h)}^{\sharp_b}\;x.\tag{\ref{law:compositionality}} - \end{alignat*} - - Thus, \(g^{\sharp_b}\) is an Elgot algebra morphism. We are left to check that \(g^{\sharp_b}\) satisfies the requisite properties of free objects. First, note that \(g^{\sharp_b} \circ now \doteq [ id , g^\sharp_b ] \circ g \circ now \doteq f\) by \ref{law:fixpoint} and the definition of \(g\). % chktex 2 - Next, we need to check uniqueness of \(g^{\sharp_b}\). It suffices to show that any two Elgot algebra morphisms \(e, h : \dbtilde{D}\;A ⇝ B\) satisfying \(e \circ now \doteq f\) and \(h \circ now \doteq f\) are equal. - - First, note that the identity function extends to the following conversion setoid morphism \(conv : \tilde{D}\;A ⇝ \dbtilde{D}\;A\), since strong bisimilarity implies weak bisimilarity. Furthermore, consider the setoid morphism \(o : \tilde{D}\;A ⇝ \tilde{D}\;A + \tilde{D}\;A\) defined by - \[o\;x := \begin{cases} - i_1(now\;z) & \text{if } x = now\;z \\ - i_2\;z & \text{if } x = later\;z - \end{cases}\] - Now, by coinduction we can easily follow that - \[x \approx {((conv + id) \circ o)}^\sharp\;x \qquad \text{for any } x : D\;A.\tag{\(∗\)}\label{uniq-helper}\] - - Let us now return to the proof of uniqueness. We proceed by - \begin{alignat*}{1} - & e\;x - \\\approx\;&e({((conv + id) \circ o)}^\sharp\;x)\tag{\ref{uniq-helper}} - \\\approx\;&{((e \circ conv + id) \circ o)}^{\sharp_b}\;x\tag{Preservation} - \\\approx\;&{((h \circ conv + id) \circ o)}^{\sharp_b}\;x - \\\approx\;&h({((conv + id) \circ o)}^\sharp\;x)\tag{Preservation} - \\\approx\;&h\;x.\tag{\ref{uniq-helper}} - \end{alignat*} - It thus suffices to show that \((e \circ conv + id)(o\;x) \approx (h \circ conv + id)(o\;x)\). Indeed, discriminating over \(x\) yields: - - \begin{mycase} - \case{} \(x = now\;z\) - \begin{alignat*}{1} - & (e \circ conv + id)(o(now\;z)) - \\\overset{+}{=}\;&(e \circ conv + id)(i_1(now\;z)) - \\\overset{+}{=}\;&e(now\;z) - \\\overset{+}{=}\;&f\;z - \\\overset{+}{=}\;&h(now\;z) - \\\overset{+}{=}\;&(h \circ conv + id)(i_1(now\;z)) - \\\overset{+}{=}\;&(h \circ conv + id)(o(now\;z)) - \end{alignat*} - \case{} \(x = later\;z\) - \begin{alignat*}{1} - & (e \circ conv + id)(o(later\;z)) - \\\overset{+}{=}\;&(e \circ conv + id)(i_2\;z) - \\\overset{+}{=}\;&i_2\;z - \\\overset{+}{=}\;&(h \circ conv + id)(i_2\;z) - \\\overset{+}{=}\;&(h \circ conv + id)(o(later\;z)) - \end{alignat*} - \end{mycase} - - It has thus been proven that every \(\dbtilde{D}\;A\) admits a free Elgot algebra structure. -\end{proof} - -Let us now establish some functions for inspecting and manipulating the computation of elements of \(D\;A\). These functions and some key facts will then be used to finish the remaining proof needed for \autoref{thm:Dfreeelgot}. - -First, consider the ordering with respect to execution time on elements of \(D\;A\), defined by -\[ - \mprset{fraction={===}}\inferrule*{p: x \downarrow a}{now_\lesssim\;p : now\;a \lesssim x} \qquad - \inferrule*{p : x \lesssim y}{later_\lesssim\;p : later\;x \lesssim later\;y}. -\] -Note that \(x \lesssim y\) implies \(x \approx y\) for any \(x, y : D\;A\), which follows easily by coinduction. - -Now, consider the following function \(race : D\;A \rightarrow D\;A \rightarrow D\;A\) which tries running two computations and returns the one that finished first: -\[race\;p\;q := \begin{cases} - now\;a & \text{if } p = now\;a \\ - now\;b & \text{if } p = later\;a \text{ and } q = now\;b \\ - later\;(race\;a\;b) & \text{if } p = later\;a \text{ and } q = later\;b - \end{cases}\] - -The following Corollary, whose proof can be found in the formalization, will be needed. - -\begin{corollary}\label{cor:race} - \(race\) satisfies the following properties: - \begin{alignat*}{3} - & x \approx y & & \text{ implies } race\;x\;y \sim race\;y\;x & \text{for any } x, y : D\;A - \\ &x \approx y && \text{ implies } race\;x\;y \lesssim y & \text{ for any } x, y : D\;A. - \end{alignat*} -\end{corollary} - -Next, let us consider functions for counting steps of computations, first regard \(\Delta_0 : (x : D\;A) \rightarrow (a : A) \rightarrow (x \downarrow a) \rightarrow \mathbb{N}\), which returns the number of steps a terminating computation has to take and is defined by -\[\Delta_0\;x\;a\;p := \begin{cases} - 0 & \text{if } x = now\;y \\ - (\Delta_0\; y\;a\;q) + 1 & \text{if } x = later\;y \text{ and } p = later_\downarrow q - \end{cases}\] - -Similarly, consider \(\Delta : (x, y : D\;A) \rightarrow x \lesssim y \rightarrow D(A \times \mathbb{N})\) defined by -\[\Delta\;x\;y\;p := \begin{cases} - now(a , \Delta_0\;x\;a\;q) & \text{if } x = now\;a \text{ and } p = now_\lesssim q \\ - later(\Delta\;a\;b\;q) & \text{if } x = later\;a, y = later\;b \text{ and } p = later_\lesssim q - \end{cases}\] - -Lastly, consider the function \(\iota : A \times \mathbb{N} \rightarrow D\;A\), which adds a number of \(later\) constructors in front of a value and is given by -\[\iota\;(a, n) := \begin{cases} - now\;x & \text{if } n = 0 \\ - later(\iota\;(a, m)) & \text{if } n = m + 1 - \end{cases}\] - -Trivially, \(\iota\) extends to a setoid morphism \(\iota : A \times \mathbb{N} ⇝ \tilde{D}\;A\), where the equivalence on \(\mathbb{N}\) is propositional equality. -Let us state two facts about \(\Delta\), the proofs can again be found in the formalization. -\begin{corollary}\label{cor:delta} - \(\Delta\) satisfies the following properties: - \begin{alignat*}{4} - & p : x \lesssim y & & \text{ implies } \tilde{D}(fst (\Delta\;x\;y\;p))\; & \sim x & & \text{ for any } x, y : D\;A\tag{\(\Delta_1\)}\label{delta1} \\ - & p : x \lesssim y & & \text{ implies } \iota^* (\Delta\;x\;y\;p) & \sim y & & \text{ for any } x, y : D\;A.\tag{\(\Delta_2\)}\label{delta2} - \end{alignat*} -\end{corollary} - -Let us now return to the missing Corollary of \autoref{thm:Dfreeelgot}. - -\begin{corollary}\label{cor:respects} - The setoid morphism \(g^{\sharp_b} : \tilde{D}\;A ⇝ B\) defined in \autoref{thm:Dfreeelgot} respects weak bisimilarity, thus yielding \(\free{f} = g^{\sharp_b} : \dbtilde{D}\;A ⇝ B\). -\end{corollary} -\begin{proof} - Let \(x, y : D\;A\) such that \(x \approx y\). Recall that by \autoref{cor:race} \(x \approx y\) implies \(p: race\;x\;y \lesssim y\) and symmetrically \(q: race\;y\;x \lesssim x\), now, using Corollaries~\ref{cor:race} and~\ref{cor:delta}: - \begin{alignat*}{1} - & g^{\sharp_b}\;x - \\\overset{B}{=}\;&g^{\sharp_b}(\iota^*(\Delta\;(race\;y\;x)\;x\;q))\tag{\ref{delta2}} - \\\overset{B}{=}\;&g^{\sharp_b}(\tilde{D}fst(\Delta\;(race\;y\;x)\;x\;q))\tag{\ref{respects-key-helper}} - \\\overset{B}{=}\;&g^{\sharp_b}(race\;y\;x)\tag{\ref{delta1}} - \\\overset{B}{=}\;&g^{\sharp_b}(race\;x\;y)\tag{\autoref{cor:race}} - \\\overset{B}{=}\;&g^{\sharp_b}(\tilde{D}fst(\Delta\;(race\;x\;y)\;y\;p))\tag{\ref{delta1}} - \\\overset{B}{=}\;&g^{\sharp_b}(\iota^*(\Delta\;(race\;x\;y)\;y\;p))\tag{\ref{respects-key-helper}} - \\\overset{B}{=}\;&g^{\sharp_b}\;y.\tag{\ref{delta2}} - \end{alignat*} - - We have thus reduced the proof to showing that - \[g^{\sharp_b} (\tilde{D}fst\;z) \overset{B}{=} g^{\sharp_b}(\iota^*\;z) \text{ for any } z : D(A \times \mathbb{N}). \tag{*}\label{respects-key-helper}\] - - Let us proceed as follows - \begin{alignat*}{1} - & g^{\sharp_b} (\tilde{D}fst\;z) - \\\overset{B}{=}\;&g_1^{\sharp_b}\;z\tag{\ref{law:uniformity}} - \\\overset{B}{=}\;&g_2^{\sharp_b}\;z - \\\overset{B}{=}\;&g^{\sharp_b}(\iota^*\;z). \tag{\ref{law:uniformity}} - \end{alignat*} - - Which leaves us to find suitable \(g_1, g_2 : \tilde{D}(A \times \mathbb{N}) ⇝ B + \tilde{D} (A \times \mathbb{N})\). Consider, - \[g_1\;p := \begin{cases} - i_1(f\;x) & \text{if } p = now\;(x, zero) \\ - i_2(\tilde{D}o (\iota\;(x,n))) & \text{if } p = now\;(x, n + 1) \\ - i_2\;q & \text{if } p = later\;q - \end{cases}\] - and - \[g_2\;p := \begin{cases} - i_1(f\;x) & \text{if } p = now\;(x , n) \\ - i_2\;q & \text{if } p = later\;q - \end{cases}\] - where \(o : A ⇝ A \times \mathbb{N}\) is a setoid morphism that maps every \(z : A\) to \((z , 0) : A \times \mathbb{N}\). The applications of \ref{law:uniformity} are then justified by the definitions of \(g_1\) and \(g_2\) as well as the fact that \(\iota \circ o \doteq now\). % chktex 2 - - We are thus done after showing that \(g_1^{\sharp_b}\;z \overset{B}{=} g_2^{\sharp_b}\;z\). - Consider another setoid morphism - \[g_3 : \tilde{D}(A \times \mathbb{N}) ⇝ B + \tilde{D}(A \times \mathbb{N}) + \tilde{D}(A \times \mathbb{N}),\] - defined by - \[g_3\;p := \begin{cases} - i_1(f\;x) & \text{if } p = now\;(x, 0) \\ - i_2(i_1(\tilde{D}o(\iota\;(x,n)))) & \text{if } p = now\;(x, n + 1) \\ - i_2(i_2\;q) & \text{if } p = later\;q - \end{cases}\] - - Let us now proceed by - \begin{alignat*}{1} - & g_1^{\sharp_b}\;z - \\\overset{B}{=}\;&{((id + [ id , id ]) \circ g_3)}^{\sharp_b}\;z - \\\overset{B}{=}\;&{([ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] \circ g_3)}^{\sharp_b}\;z\tag{\ref{law:diamond}} - \\\overset{B}{=}\;&g_2^{\sharp_b}\;z. - \end{alignat*} - - Where for the first step notice that \(g_1\;x \overset{+}{=} (id + [ id , id ])(g_3\;x)\) for any \(x : \tilde{D}(A \times \mathbb{N})\) follows simply by case distinction on \(x\). For the last step, it suffices to show that \([ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (g_3\;x) \overset{+}{=} g_2\;x\) for any \(x : \tilde{D}(A \times \mathbb{N})\). We proceed by case distinction on \(x\). - - \begin{mycase} - \case{} \(x = now\;(y, 0)\)\\ - The goal reduces to - \begin{alignat*}{1} - & [ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (g_3\;x) - \\\overset{+}{=}\;&[ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (i_1(f\;y)) - \\\overset{+}{=}\;&i_1(f\;y) - \\\overset{+}{=}\;&g_2\;x, - \end{alignat*} - which indeed holds by the definitions of \(g_2\) and \(g_3\). - - \case{} \(x = now\;(y, n + 1)\)\\ - The goal reduces to - \begin{alignat*}{1} - & [ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (g_3\;x) - \\\overset{+}{=}\;&[ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (i_2(i_1(\tilde{D}o(\iota\;(y,n))))) - \\\overset{+}{=}\;&i_1({((id + [ id , id]) \circ g_3)}^{\sharp_b}((\tilde{D}o(\iota\;(y,n))))) - \\\overset{+}{=}\;&i_1(f\;y)\tag{\ref{finalhelper}} - \\\overset{+}{=}\;&g_2\;x - \end{alignat*} - - Where - \[{((id + [ id , id]) \circ g_3)}^{\sharp_b}(\tilde{D}o(\iota\;(y,n))) \overset{B}{=} f\;y \tag{\(∗\)}\label{finalhelper}\] - follows by induction on \(n\): - - \subcase{} \(n = 0\)\\ - We are done by - \begin{alignat*}{1} - & {((id + [ id , id]) \circ g_3)}^{\sharp_b}(\tilde{D}o(\iota\;(y,0))) - \\\overset{B}{=}\;&{((id + [ id , id]) \circ g_3)}^{\sharp_b}(\tilde{D}o(now\;y)) - \\\overset{B}{=}\;&{((id + [ id , id]) \circ g_3)}^{\sharp_b}(now(y,0)) - \\\overset{B}{=}\;&([ id , {((id + [ id , id]) \circ g_3)}^{\sharp_b} ] \circ (id + [ id , id]) \circ g_3) (now(y,0))\tag{\ref{law:fixpoint}} - \\\overset{B}{=}\;&([ id , {((id + [ id , id]) \circ g_3)}^{\sharp_b} ] \circ (id + [ id , id])) i_1(f\;y) - \\\overset{B}{=}\;&[ id , {((id + [ id , id]) \circ g_3)}^{\sharp_b} ] i_1(f\;y) - \\\overset{B}{=}\;&f\;y - \end{alignat*} - - \subcase{} \(n = m + 1\)\\ - Assuming that \({((id + [ id , id]) \circ g_3)}^{\sharp_b}(\tilde{D}o(\iota\;(y,m))) \overset{B}{=} f\;y\), we are done by - \begin{alignat*}{1} - & {((id + [ id , id]) \circ g_3)}^{\sharp_b}(\tilde{D}o(\iota\;(y,m+1))) - \\\overset{B}{=}\;&{((id + [ id , id]) \circ g_3)}^{\sharp_b}(\tilde{D}o(later(\iota\;(y,m)))) - \\\overset{B}{=}\;&{((id + [ id , id]) \circ g_3)}^{\sharp_b}(later(\tilde{D}o(\iota\;(y,m)))) - \\\overset{B}{=}\;&([ id , {((id + [ id , id]) \circ g_3)}^{\sharp_b} ] \circ (id + [ id , id]) \circ g_3) (later(\tilde{D}o(\iota\;(y,m))))\tag{\ref{law:fixpoint}} - \\\overset{B}{=}\;&([ id , {((id + [ id , id]) \circ g_3)}^{\sharp_b} ] \circ (id + [ id , id])) (i_2(i_2(\tilde{D}o(\iota\;(y,m))))) - \\\overset{B}{=}\;&[ id , {((id + [ id , id]) \circ g_3)}^{\sharp_b} ](\tilde{D}o(\iota\;(y,m))) - \\\overset{B}{=}\;&f\;y - \end{alignat*} - - \case{} \(x = later\;p\)\\ - The goal reduces to - \begin{alignat*}{1} - & [ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (g_3\;x) - \\\overset{+}{=}\;&[ i_1 , {((id + [ id , id]) \circ g_3)}^{\sharp_b} + id ] (i_2(i_2\;p)) - \\\overset{+}{=}\;&i_2\;p - \\\overset{+}{=}\;&g_2\;x, - \end{alignat*} - which instantly follows by definition. - \end{mycase} - This finishes the proof of the Corollary and thus \autoref{thm:Dfreeelgot} holds. -\end{proof} We have shown in \autoref{thm:Dfreeelgot} that every \(\dbtilde{D}\;A\) extends to a free Elgot algebra. Together with \autoref{prop:setoids-ccc} and \autoref{thm:stability} this yields a description for the monad \(\mathbf{K}\) which has been defined in \autoref{chp:iteration}, in the category \(\setoids\). \ No newline at end of file diff --git a/src/titlepage.tex b/src/titlepage.tex index a0b902c..6e82269 100644 --- a/src/titlepage.tex +++ b/src/titlepage.tex @@ -23,7 +23,7 @@ % \large\bfseries % \\ and \ldots % \\[1cm] - \textbf{\large Bachelor Thesis in Computer Science} + \textbf{\large Bachelor Thesis in Computer Science (Consolidated Version)} }\\[0.5\baselineskip] \rule{\textwidth}{1pt}\par \vfill