mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
119 lines
54 KiB
HTML
119 lines
54 KiB
HTML
|
<!DOCTYPE HTML>
|
|||
|
<html><head><meta charset="utf-8"><title>Categories.Monad.Construction.Kleisli</title><link rel="stylesheet" href="Agda.css"></head><body><pre class="Agda"><a id="1" class="Symbol">{-#</a> <a id="5" class="Keyword">OPTIONS</a> <a id="13" class="Pragma">--without-K</a> <a id="25" class="Pragma">--safe</a> <a id="32" class="Symbol">#-}</a>
|
|||
|
|
|||
|
<a id="37" class="Keyword">module</a> <a id="44" href="Categories.Monad.Construction.Kleisli.html" class="Module">Categories.Monad.Construction.Kleisli</a> <a id="82" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="89" class="Comment">-- Definition of kleisli triple as a relative monad</a>
|
|||
|
<a id="141" class="Comment">-- and the equivalence of kleisli triple and monad</a>
|
|||
|
<a id="192" class="Comment">-- see https://ncatlab.org/nlab/show/extension+system (the naming differs)</a>
|
|||
|
|
|||
|
<a id="268" class="Keyword">open</a> <a id="273" class="Keyword">import</a> <a id="280" href="Level.html" class="Module">Level</a>
|
|||
|
<a id="286" class="Keyword">open</a> <a id="291" class="Keyword">import</a> <a id="298" href="Categories.Category.Core.html" class="Module">Categories.Category.Core</a> <a id="323" class="Keyword">using</a> <a id="329" class="Symbol">(</a><a id="330" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="338" class="Symbol">)</a>
|
|||
|
<a id="340" class="Keyword">open</a> <a id="345" class="Keyword">import</a> <a id="352" href="Categories.Monad.Relative.html" class="Module">Categories.Monad.Relative</a> <a id="378" class="Keyword">using</a> <a id="384" class="Symbol">(</a><a id="385" href="Categories.Monad.Relative.html#1434" class="Function">RMonad⇒Functor</a><a id="399" class="Symbol">)</a> <a id="401" class="Keyword">renaming</a> <a id="410" class="Symbol">(</a><a id="411" href="Categories.Monad.Relative.html#602" class="Record">Monad</a> <a id="417" class="Symbol">to</a> <a id="420" class="Record">RMonad</a><a id="426" class="Symbol">)</a>
|
|||
|
<a id="428" class="Keyword">open</a> <a id="433" class="Keyword">import</a> <a id="440" href="Categories.Monad.html" class="Module">Categories.Monad</a> <a id="457" class="Keyword">using</a> <a id="463" class="Symbol">(</a><a id="464" href="Categories.Monad.html#454" class="Record">Monad</a><a id="469" class="Symbol">)</a>
|
|||
|
<a id="471" class="Keyword">open</a> <a id="476" class="Keyword">import</a> <a id="483" href="Categories.Functor.html" class="Module">Categories.Functor</a> <a id="502" class="Keyword">using</a> <a id="508" class="Symbol">(</a><a id="509" href="Categories.Functor.Core.html#248" class="Record">Functor</a><a id="516" class="Symbol">;</a> <a id="518" href="Categories.Functor.html#283" class="Function">Endofunctor</a><a id="529" class="Symbol">;</a> <a id="531" href="Categories.Functor.html#747" class="Function Operator">_∘F_</a><a id="535" class="Symbol">)</a> <a id="537" class="Keyword">renaming</a> <a id="546" class="Symbol">(</a><a id="547" href="Categories.Functor.html#349" class="Function">id</a> <a id="550" class="Symbol">to</a> <a id="553" class="Function">idF</a><a id="556" class="Symbol">)</a>
|
|||
|
<a id="558" class="Keyword">open</a> <a id="563" class="Keyword">import</a> <a id="570" href="Categories.NaturalTransformation.html" class="Module">Categories.NaturalTransformation</a> <a id="603" class="Keyword">using</a> <a id="609" class="Symbol">(</a><a id="610" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a><a id="618" class="Symbol">;</a> <a id="620" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a><a id="641" class="Symbol">)</a>
|
|||
|
<a id="643" class="Keyword">import</a> <a id="650" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="680" class="Symbol">as</a> <a id="683" class="Module">MR</a>
|
|||
|
|
|||
|
<a id="687" class="Keyword">private</a>
|
|||
|
<a id="697" class="Keyword">variable</a>
|
|||
|
<a id="710" href="Categories.Monad.Construction.Kleisli.html#710" class="Generalizable">o</a> <a id="712" href="Categories.Monad.Construction.Kleisli.html#712" class="Generalizable">ℓ</a> <a id="714" href="Categories.Monad.Construction.Kleisli.html#714" class="Generalizable">e</a> <a id="716" class="Symbol">:</a> <a id="718" href="Agda.Primitive.html#742" class="Postulate">Level</a>
|
|||
|
|
|||
|
<a id="725" class="Keyword">module</a> <a id="732" href="Categories.Monad.Construction.Kleisli.html#732" class="Module">_</a> <a id="734" class="Symbol">(</a><a id="735" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a> <a id="737" class="Symbol">:</a> <a id="739" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="748" href="Categories.Monad.Construction.Kleisli.html#710" class="Generalizable">o</a> <a id="750" href="Categories.Monad.Construction.Kleisli.html#712" class="Generalizable">ℓ</a> <a id="752" href="Categories.Monad.Construction.Kleisli.html#714" class="Generalizable">e</a><a id="753" class="Symbol">)</a> <a id="755" class="Keyword">where</a>
|
|||
|
<a id="763" class="Keyword">open</a> <a id="768" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="777" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a>
|
|||
|
<a id="781" class="Keyword">open</a> <a id="786" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
|
|||
|
<a id="801" class="Keyword">open</a> <a id="806" href="Categories.Category.Core.html#1530" class="Module">Equiv</a>
|
|||
|
<a id="814" class="Keyword">open</a> <a id="819" href="Categories.Morphism.Reasoning.html" class="Module">MR</a> <a id="822" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a>
|
|||
|
|
|||
|
<a id="827" class="Comment">-- a kleisli triple is a relative monad with J = idF</a>
|
|||
|
<a id="882" href="Categories.Monad.Construction.Kleisli.html#882" class="Function">KleisliTriple</a> <a id="896" class="Symbol">:</a> <a id="898" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="902" class="Symbol">(</a><a id="903" href="Categories.Monad.Construction.Kleisli.html#748" class="Bound">o</a> <a id="905" href="Agda.Primitive.html#961" class="Primitive Operator">⊔</a> <a id="907" href="Categories.Monad.Construction.Kleisli.html#750" class="Bound">ℓ</a> <a id="909" href="Agda.Primitive.html#961" class="Primitive Operator">⊔</a> <a id="911" href="Categories.Monad.Construction.Kleisli.html#752" class="Bound">e</a><a id="912" class="Symbol">)</a>
|
|||
|
<a id="916" href="Categories.Monad.Construction.Kleisli.html#882" class="Function">KleisliTriple</a> <a id="930" class="Symbol">=</a> <a id="932" href="Categories.Monad.Construction.Kleisli.html#420" class="Record">RMonad</a> <a id="939" class="Symbol">{</a><a id="940" class="Argument">C</a> <a id="942" class="Symbol">=</a> <a id="944" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a><a id="945" class="Symbol">}</a> <a id="947" href="Categories.Monad.Construction.Kleisli.html#553" class="Function">idF</a>
|
|||
|
|
|||
|
<a id="954" class="Comment">-- kleisli triples are equivalent to monads</a>
|
|||
|
<a id="1000" href="Categories.Monad.Construction.Kleisli.html#1000" class="Function">Kleisli⇒Monad</a> <a id="1014" class="Symbol">:</a> <a id="1016" href="Categories.Monad.Construction.Kleisli.html#882" class="Function">KleisliTriple</a> <a id="1030" class="Symbol">→</a> <a id="1032" href="Categories.Monad.html#454" class="Record">Monad</a> <a id="1038" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a>
|
|||
|
<a id="1042" href="Categories.Monad.Construction.Kleisli.html#1000" class="Function">Kleisli⇒Monad</a> <a id="1056" href="Categories.Monad.Construction.Kleisli.html#1056" class="Bound">K</a> <a id="1058" class="Symbol">=</a> <a id="1060" class="Keyword">record</a>
|
|||
|
<a id="1071" class="Symbol">{</a> <a id="1073" href="Categories.Monad.html#525" class="Field">F</a> <a id="1075" class="Symbol">=</a> <a id="1077" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a>
|
|||
|
<a id="1083" class="Symbol">;</a> <a id="1085" href="Categories.Monad.html#547" class="Field">η</a> <a id="1087" class="Symbol">=</a> <a id="1089" href="Categories.Monad.Construction.Kleisli.html#1468" class="Function">η</a>
|
|||
|
<a id="1095" class="Symbol">;</a> <a id="1097" href="Categories.Monad.html#583" class="Field">μ</a> <a id="1099" class="Symbol">=</a> <a id="1101" href="Categories.Monad.Construction.Kleisli.html#2143" class="Function">μ</a>
|
|||
|
<a id="1107" class="Symbol">;</a> <a id="1109" href="Categories.Monad.html#759" class="Field">assoc</a> <a id="1115" class="Symbol">=</a> <a id="1117" href="Categories.Monad.Construction.Kleisli.html#2360" class="Function">assoc'</a>
|
|||
|
<a id="1128" class="Symbol">;</a> <a id="1130" href="Categories.Monad.html#829" class="Field">sym-assoc</a> <a id="1140" class="Symbol">=</a> <a id="1142" href="Relation.Binary.Structures.html#1622" class="Function">sym</a> <a id="1146" href="Categories.Monad.Construction.Kleisli.html#2360" class="Function">assoc'</a>
|
|||
|
<a id="1157" class="Symbol">;</a> <a id="1159" href="Categories.Monad.html#899" class="Field">identityˡ</a> <a id="1169" class="Symbol">=</a> <a id="1171" href="Categories.Monad.Construction.Kleisli.html#2457" class="Function">identityˡ'</a>
|
|||
|
<a id="1186" class="Symbol">;</a> <a id="1188" href="Categories.Monad.html#953" class="Field">identityʳ</a> <a id="1198" class="Symbol">=</a> <a id="1200" href="Categories.Monad.Relative.html#953" class="Field">K.identityʳ</a>
|
|||
|
<a id="1216" class="Symbol">}</a>
|
|||
|
<a id="1222" class="Keyword">where</a>
|
|||
|
<a id="1234" class="Keyword">module</a> <a id="1241" href="Categories.Monad.Construction.Kleisli.html#1241" class="Module">K</a> <a id="1243" class="Symbol">=</a> <a id="1245" href="Categories.Monad.Construction.Kleisli.html#420" class="Module">RMonad</a> <a id="1252" href="Categories.Monad.Construction.Kleisli.html#1056" class="Bound">K</a>
|
|||
|
<a id="1260" class="Keyword">open</a> <a id="1265" href="Categories.Monad.Construction.Kleisli.html#1241" class="Module">K</a> <a id="1267" class="Keyword">using</a> <a id="1273" class="Symbol">(</a><a id="1274" href="Categories.Monad.Relative.html#857" class="Field">unit</a><a id="1278" class="Symbol">;</a> <a id="1280" href="Categories.Monad.Relative.html#895" class="Field">extend</a><a id="1286" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="1295" class="Comment">-- Extract a functor from the relative monad</a>
|
|||
|
<a id="1346" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a> <a id="1348" class="Symbol">:</a> <a id="1350" href="Categories.Functor.html#283" class="Function">Endofunctor</a> <a id="1362" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a>
|
|||
|
<a id="1370" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a> <a id="1372" class="Symbol">=</a> <a id="1374" href="Categories.Monad.Relative.html#1434" class="Function">RMonad⇒Functor</a> <a id="1389" href="Categories.Monad.Construction.Kleisli.html#1056" class="Bound">K</a>
|
|||
|
<a id="1397" class="Keyword">open</a> <a id="1402" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="1410" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a> <a id="1412" class="Keyword">using</a> <a id="1418" class="Symbol">(</a><a id="1419" href="Categories.Functor.Core.html#432" class="Field">F₀</a><a id="1421" class="Symbol">;</a> <a id="1423" href="Categories.Functor.Core.html#455" class="Field">F₁</a><a id="1425" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="1434" class="Comment">-- constructing η from unit</a>
|
|||
|
<a id="1468" href="Categories.Monad.Construction.Kleisli.html#1468" class="Function">η</a> <a id="1470" class="Symbol">=</a> <a id="1472" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="1481" class="Symbol">{</a><a id="1482" class="Argument">F</a> <a id="1484" class="Symbol">=</a> <a id="1486" href="Categories.Monad.Construction.Kleisli.html#553" class="Function">idF</a><a id="1489" class="Symbol">}</a> <a id="1491" class="Symbol">{</a><a id="1492" class="Argument">G</a> <a id="1494" class="Symbol">=</a> <a id="1496" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a><a id="1497" class="Symbol">}</a> <a id="1499" class="Keyword">record</a>
|
|||
|
<a id="1514" class="Symbol">{</a> <a id="1516" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="1518" class="Symbol">=</a> <a id="1520" class="Symbol">λ</a> <a id="1522" href="Categories.Monad.Construction.Kleisli.html#1522" class="Bound">X</a> <a id="1524" class="Symbol">→</a> <a id="1526" href="Categories.Monad.Relative.html#857" class="Field">unit</a>
|
|||
|
<a id="1539" class="Symbol">;</a> <a id="1541" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="1549" class="Symbol">=</a> <a id="1551" class="Symbol">λ</a> <a id="1553" href="Categories.Monad.Construction.Kleisli.html#1553" class="Bound">f</a> <a id="1555" class="Symbol">→</a> <a id="1557" href="Relation.Binary.Structures.html#1622" class="Function">sym</a> <a id="1561" href="Categories.Monad.Relative.html#953" class="Field">K.identityʳ</a>
|
|||
|
<a id="1581" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="1590" class="Comment">-- helper for μ.commute and assoc'</a>
|
|||
|
<a id="1631" href="Categories.Monad.Construction.Kleisli.html#1631" class="Function">commute'</a> <a id="1640" class="Symbol">:</a> <a id="1642" class="Symbol">∀</a> <a id="1644" class="Symbol">{</a><a id="1645" href="Categories.Monad.Construction.Kleisli.html#1645" class="Bound">X</a> <a id="1647" href="Categories.Monad.Construction.Kleisli.html#1647" class="Bound">Y</a> <a id="1649" class="Symbol">:</a> <a id="1651" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="1655" class="Symbol">}</a> <a id="1657" class="Symbol">(</a><a id="1658" href="Categories.Monad.Construction.Kleisli.html#1658" class="Bound">f</a> <a id="1660" class="Symbol">:</a> <a id="1662" href="Categories.Monad.Construction.Kleisli.html#1645" class="Bound">X</a> <a id="1664" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1666" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="1669" href="Categories.Monad.Construction.Kleisli.html#1647" class="Bound">Y</a><a id="1670" class="Symbol">)</a> <a id="1672" class="Symbol">→</a> <a id="1674" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1681" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1684" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1686" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1693" class="Symbol">(</a><a id="1694" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="1699" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1701" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1708" href="Categories.Monad.Construction.Kleisli.html#1658" class="Bound">f</a><a id="1709" class="Symbol">)</a> <a id="1711" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1713" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1720" href="Categories.Monad.Construction.Kleisli.html#1658" class="Bound">f</a> <a id="1722" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1724" class="Symbol">(</a><a id="1725" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1732" href="Categories.Category.Core.html#630" class="Field">id</a><a id="1734" class="Symbol">)</a>
|
|||
|
<a id="1742" href="Categories.Monad.Construction.Kleisli.html#1631" class="Function">commute'</a> <a id="1751" class="Symbol">{</a><a id="1752" href="Categories.Monad.Construction.Kleisli.html#1752" class="Bound">X</a><a id="1753" class="Symbol">}</a> <a id="1755" class="Symbol">{</a><a id="1756" href="Categories.Monad.Construction.Kleisli.html#1756" class="Bound">Y</a><a id="1757" class="Symbol">}</a> <a id="1759" href="Categories.Monad.Construction.Kleisli.html#1759" class="Bound">f</a> <a id="1761" class="Symbol">=</a> <a id="1763" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
|
|||
|
<a id="1777" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1784" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1787" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1789" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1796" class="Symbol">(</a><a id="1797" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="1802" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1804" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1811" href="Categories.Monad.Construction.Kleisli.html#1759" class="Bound">f</a><a id="1812" class="Symbol">)</a> <a id="1816" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="1819" href="Categories.Monad.Relative.html#1190" class="Field">K.sym-assoc</a> <a id="1831" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="1841" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1848" class="Symbol">(</a><a id="1849" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1856" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1859" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1861" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="1866" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1868" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1875" href="Categories.Monad.Construction.Kleisli.html#1759" class="Bound">f</a><a id="1876" class="Symbol">)</a> <a id="1880" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="1883" href="Categories.Monad.Relative.html#1306" class="Field">K.extend-≈</a> <a id="1894" class="Symbol">(</a><a id="1895" href="Categories.Morphism.Reasoning.Core.html#2048" class="Function">pullˡ</a> <a id="1901" href="Categories.Monad.Relative.html#953" class="Field">K.identityʳ</a><a id="1912" class="Symbol">)</a> <a id="1914" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="1924" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1931" class="Symbol">(</a><a id="1932" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1935" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1937" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="1944" href="Categories.Monad.Construction.Kleisli.html#1759" class="Bound">f</a><a id="1945" class="Symbol">)</a> <a id="1963" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="1966" href="Categories.Monad.Relative.html#1306" class="Field">K.extend-≈</a> <a id="1977" href="Categories.Morphism.Reasoning.Core.html#1309" class="Function">id-comm-sym</a> <a id="1989" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="1999" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2006" class="Symbol">(</a><a id="2007" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2014" href="Categories.Monad.Construction.Kleisli.html#1759" class="Bound">f</a> <a id="2016" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2018" href="Categories.Category.Core.html#630" class="Field">id</a><a id="2020" class="Symbol">)</a> <a id="2038" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2041" href="Categories.Monad.Relative.html#1078" class="Field">K.assoc</a> <a id="2049" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="2059" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2066" href="Categories.Monad.Construction.Kleisli.html#1759" class="Bound">f</a> <a id="2068" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2070" class="Symbol">(</a><a id="2071" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2078" href="Categories.Category.Core.html#630" class="Field">id</a><a id="2080" class="Symbol">)</a> <a id="2098" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">∎</a>
|
|||
|
|
|||
|
<a id="2107" class="Comment">-- constructing μ from extend</a>
|
|||
|
<a id="2143" href="Categories.Monad.Construction.Kleisli.html#2143" class="Function">μ</a> <a id="2145" class="Symbol">=</a> <a id="2147" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="2156" class="Symbol">{</a><a id="2157" class="Argument">F</a> <a id="2159" class="Symbol">=</a> <a id="2161" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a> <a id="2163" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="2166" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a><a id="2167" class="Symbol">}</a> <a id="2169" class="Symbol">{</a><a id="2170" class="Argument">G</a> <a id="2172" class="Symbol">=</a> <a id="2174" href="Categories.Monad.Construction.Kleisli.html#1346" class="Function">F</a><a id="2175" class="Symbol">}</a> <a id="2177" class="Keyword">record</a>
|
|||
|
<a id="2192" class="Symbol">{</a> <a id="2194" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="2196" class="Symbol">=</a> <a id="2198" class="Symbol">λ</a> <a id="2200" href="Categories.Monad.Construction.Kleisli.html#2200" class="Bound">X</a> <a id="2202" class="Symbol">→</a> <a id="2204" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2211" href="Categories.Category.Core.html#630" class="Field">id</a>
|
|||
|
<a id="2222" class="Symbol">;</a> <a id="2224" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="2232" class="Symbol">=</a> <a id="2234" class="Symbol">λ</a> <a id="2236" href="Categories.Monad.Construction.Kleisli.html#2236" class="Bound">f</a> <a id="2238" class="Symbol">→</a> <a id="2240" href="Categories.Monad.Construction.Kleisli.html#1631" class="Function">commute'</a> <a id="2249" class="Symbol">(</a><a id="2250" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="2255" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2257" href="Categories.Monad.Construction.Kleisli.html#2236" class="Bound">f</a><a id="2258" class="Symbol">)</a>
|
|||
|
<a id="2268" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="2277" class="Keyword">module</a> <a id="2284" href="Categories.Monad.Construction.Kleisli.html#2284" class="Module">η</a> <a id="2286" class="Symbol">=</a> <a id="2288" href="Categories.NaturalTransformation.Core.html#466" class="Module">NaturalTransformation</a> <a id="2310" href="Categories.Monad.Construction.Kleisli.html#1468" class="Function">η</a>
|
|||
|
<a id="2318" class="Keyword">module</a> <a id="2325" href="Categories.Monad.Construction.Kleisli.html#2325" class="Module">μ</a> <a id="2327" class="Symbol">=</a> <a id="2329" href="Categories.NaturalTransformation.Core.html#466" class="Module">NaturalTransformation</a> <a id="2351" href="Categories.Monad.Construction.Kleisli.html#2143" class="Function">μ</a>
|
|||
|
|
|||
|
<a id="2360" href="Categories.Monad.Construction.Kleisli.html#2360" class="Function">assoc'</a> <a id="2367" class="Symbol">:</a> <a id="2369" class="Symbol">∀</a> <a id="2371" class="Symbol">{</a><a id="2372" href="Categories.Monad.Construction.Kleisli.html#2372" class="Bound">X</a> <a id="2374" class="Symbol">:</a> <a id="2376" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="2379" class="Symbol">}</a> <a id="2381" class="Symbol">→</a> <a id="2383" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="2387" href="Categories.Monad.Construction.Kleisli.html#2372" class="Bound">X</a> <a id="2389" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2391" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="2394" class="Symbol">(</a><a id="2395" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="2399" href="Categories.Monad.Construction.Kleisli.html#2372" class="Bound">X</a><a id="2400" class="Symbol">)</a> <a id="2402" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2404" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="2408" href="Categories.Monad.Construction.Kleisli.html#2372" class="Bound">X</a> <a id="2410" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2412" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="2416" class="Symbol">(</a><a id="2417" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="2420" href="Categories.Monad.Construction.Kleisli.html#2372" class="Bound">X</a><a id="2421" class="Symbol">)</a>
|
|||
|
<a id="2429" href="Categories.Monad.Construction.Kleisli.html#2360" class="Function">assoc'</a> <a id="2436" class="Symbol">=</a> <a id="2438" href="Categories.Monad.Construction.Kleisli.html#1631" class="Function">commute'</a> <a id="2447" href="Categories.Category.Core.html#630" class="Field">id</a>
|
|||
|
|
|||
|
<a id="2457" href="Categories.Monad.Construction.Kleisli.html#2457" class="Function">identityˡ'</a> <a id="2468" class="Symbol">:</a> <a id="2470" class="Symbol">∀</a> <a id="2472" class="Symbol">{</a><a id="2473" href="Categories.Monad.Construction.Kleisli.html#2473" class="Bound">X</a> <a id="2475" class="Symbol">:</a> <a id="2477" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="2480" class="Symbol">}</a> <a id="2482" class="Symbol">→</a> <a id="2484" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="2488" href="Categories.Monad.Construction.Kleisli.html#2473" class="Bound">X</a> <a id="2490" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2492" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="2495" class="Symbol">(</a><a id="2496" href="Categories.NaturalTransformation.Core.html#783" class="Function">η.η</a> <a id="2500" href="Categories.Monad.Construction.Kleisli.html#2473" class="Bound">X</a><a id="2501" class="Symbol">)</a> <a id="2503" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2505" href="Categories.Category.Core.html#630" class="Field">id</a>
|
|||
|
<a id="2514" href="Categories.Monad.Construction.Kleisli.html#2457" class="Function">identityˡ'</a> <a id="2525" class="Symbol">=</a> <a id="2527" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
|
|||
|
<a id="2542" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2549" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="2552" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2554" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2561" class="Symbol">(</a><a id="2562" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="2567" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2569" href="Categories.Monad.Relative.html#857" class="Field">unit</a><a id="2573" class="Symbol">)</a> <a id="2577" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2580" href="Categories.Monad.Relative.html#1190" class="Field">K.sym-assoc</a> <a id="2592" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="2603" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2610" class="Symbol">(</a><a id="2611" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2618" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="2621" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2623" class="Symbol">(</a><a id="2624" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="2629" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2631" href="Categories.Monad.Relative.html#857" class="Field">unit</a><a id="2635" class="Symbol">))</a> <a id="2638" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2641" href="Categories.Monad.Relative.html#1306" class="Field">K.extend-≈</a> <a id="2652" class="Symbol">(</a><a id="2653" href="Categories.Morphism.Reasoning.Core.html#2048" class="Function">pullˡ</a> <a id="2659" href="Categories.Monad.Relative.html#953" class="Field">K.identityʳ</a><a id="2670" class="Symbol">)</a> <a id="2672" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="2682" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2689" class="Symbol">(</a><a id="2690" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="2693" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2695" href="Categories.Monad.Relative.html#857" class="Field">unit</a><a id="2699" class="Symbol">)</a> <a id="2717" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2720" href="Categories.Monad.Relative.html#1306" class="Field">K.extend-≈</a> <a id="2731" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="2741" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="2751" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2758" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="2786" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2789" href="Categories.Monad.Relative.html#1025" class="Field">K.identityˡ</a> <a id="2801" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="2811" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="2846" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">∎</a>
|
|||
|
|
|||
|
<a id="2851" href="Categories.Monad.Construction.Kleisli.html#2851" class="Function">Monad⇒Kleisli</a> <a id="2865" class="Symbol">:</a> <a id="2867" href="Categories.Monad.html#454" class="Record">Monad</a> <a id="2873" href="Categories.Monad.Construction.Kleisli.html#735" class="Bound">C</a> <a id="2875" class="Symbol">→</a> <a id="2877" href="Categories.Monad.Construction.Kleisli.html#882" class="Function">KleisliTriple</a>
|
|||
|
<a id="2893" href="Categories.Monad.Construction.Kleisli.html#2851" class="Function">Monad⇒Kleisli</a> <a id="2907" href="Categories.Monad.Construction.Kleisli.html#2907" class="Bound">M</a> <a id="2909" class="Symbol">=</a> <a id="2911" class="Keyword">record</a>
|
|||
|
<a id="2922" class="Symbol">{</a> <a id="2924" href="Categories.Monad.Relative.html#834" class="Field">F₀</a> <a id="2927" class="Symbol">=</a> <a id="2929" href="Categories.Functor.Core.html#432" class="Function">F₀</a>
|
|||
|
<a id="2936" class="Symbol">;</a> <a id="2938" href="Categories.Monad.Relative.html#857" class="Field">unit</a> <a id="2943" class="Symbol">=</a> <a id="2945" href="Categories.NaturalTransformation.Core.html#783" class="Function">η.η</a> <a id="2949" class="Symbol">_</a>
|
|||
|
<a id="2955" class="Symbol">;</a> <a id="2957" href="Categories.Monad.Relative.html#895" class="Field">extend</a> <a id="2964" class="Symbol">=</a> <a id="2966" class="Symbol">λ</a> <a id="2968" href="Categories.Monad.Construction.Kleisli.html#2968" class="Bound">f</a> <a id="2970" class="Symbol">→</a> <a id="2972" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="2976" class="Symbol">_</a> <a id="2978" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2980" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="2983" href="Categories.Monad.Construction.Kleisli.html#2968" class="Bound">f</a>
|
|||
|
<a id="2989" class="Symbol">;</a> <a id="2991" href="Categories.Monad.Relative.html#953" class="Field">identityʳ</a> <a id="3001" class="Symbol">=</a> <a id="3003" href="Categories.Monad.Construction.Kleisli.html#3246" class="Function">identityʳ'</a>
|
|||
|
<a id="3018" class="Symbol">;</a> <a id="3020" href="Categories.Monad.Relative.html#1025" class="Field">identityˡ</a> <a id="3030" class="Symbol">=</a> <a id="3032" href="Categories.Monad.html#899" class="Field">M.identityˡ</a>
|
|||
|
<a id="3048" class="Symbol">;</a> <a id="3050" href="Categories.Monad.Relative.html#1078" class="Field">assoc</a> <a id="3056" class="Symbol">=</a> <a id="3058" href="Categories.Monad.Construction.Kleisli.html#3520" class="Function">assoc'</a>
|
|||
|
<a id="3069" class="Symbol">;</a> <a id="3071" href="Categories.Monad.Relative.html#1190" class="Field">sym-assoc</a> <a id="3081" class="Symbol">=</a> <a id="3083" href="Relation.Binary.Structures.html#1622" class="Function">sym</a> <a id="3087" href="Categories.Monad.Construction.Kleisli.html#3520" class="Function">assoc'</a>
|
|||
|
<a id="3098" class="Symbol">;</a> <a id="3100" href="Categories.Monad.Relative.html#1306" class="Field">extend-≈</a> <a id="3109" class="Symbol">=</a> <a id="3111" class="Symbol">λ</a> <a id="3113" href="Categories.Monad.Construction.Kleisli.html#3113" class="Bound">fg</a> <a id="3116" class="Symbol">→</a> <a id="3118" href="Categories.Category.Core.html#1706" class="Function">∘-resp-≈ʳ</a> <a id="3128" class="Symbol">(</a><a id="3129" href="Categories.Functor.Core.html#696" class="Function">F-resp-≈</a> <a id="3138" href="Categories.Monad.Construction.Kleisli.html#3113" class="Bound">fg</a><a id="3140" class="Symbol">)</a>
|
|||
|
<a id="3146" class="Symbol">}</a>
|
|||
|
<a id="3152" class="Keyword">where</a>
|
|||
|
<a id="3164" class="Keyword">module</a> <a id="3171" href="Categories.Monad.Construction.Kleisli.html#3171" class="Module">M</a> <a id="3173" class="Symbol">=</a> <a id="3175" href="Categories.Monad.html#454" class="Module">Monad</a> <a id="3181" href="Categories.Monad.Construction.Kleisli.html#2907" class="Bound">M</a>
|
|||
|
<a id="3189" class="Keyword">open</a> <a id="3194" href="Categories.Monad.html#454" class="Module">Monad</a> <a id="3200" href="Categories.Monad.Construction.Kleisli.html#2907" class="Bound">M</a> <a id="3202" class="Keyword">using</a> <a id="3208" class="Symbol">(</a><a id="3209" href="Categories.Monad.html#525" class="Field">F</a><a id="3210" class="Symbol">;</a> <a id="3212" href="Categories.Monad.html#547" class="Field">η</a><a id="3213" class="Symbol">;</a> <a id="3215" href="Categories.Monad.html#583" class="Field">μ</a><a id="3216" class="Symbol">)</a>
|
|||
|
<a id="3224" class="Keyword">open</a> <a id="3229" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="3237" href="Categories.Monad.html#525" class="Field">F</a>
|
|||
|
|
|||
|
<a id="3246" href="Categories.Monad.Construction.Kleisli.html#3246" class="Function">identityʳ'</a> <a id="3257" class="Symbol">:</a> <a id="3259" class="Symbol">∀</a> <a id="3261" class="Symbol">{</a><a id="3262" href="Categories.Monad.Construction.Kleisli.html#3262" class="Bound">X</a> <a id="3264" href="Categories.Monad.Construction.Kleisli.html#3264" class="Bound">Y</a><a id="3265" class="Symbol">}</a> <a id="3267" class="Symbol">{</a><a id="3268" href="Categories.Monad.Construction.Kleisli.html#3268" class="Bound">k</a> <a id="3270" class="Symbol">:</a> <a id="3272" href="Categories.Monad.Construction.Kleisli.html#3262" class="Bound">X</a> <a id="3274" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="3276" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="3279" href="Categories.Monad.Construction.Kleisli.html#3264" class="Bound">Y</a><a id="3280" class="Symbol">}</a> <a id="3282" class="Symbol">→</a> <a id="3284" class="Symbol">(</a><a id="3285" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3289" href="Categories.Monad.Construction.Kleisli.html#3264" class="Bound">Y</a> <a id="3291" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3293" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3296" href="Categories.Monad.Construction.Kleisli.html#3268" class="Bound">k</a><a id="3297" class="Symbol">)</a> <a id="3299" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3301" href="Categories.NaturalTransformation.Core.html#783" class="Function">η.η</a> <a id="3305" href="Categories.Monad.Construction.Kleisli.html#3262" class="Bound">X</a> <a id="3307" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="3309" href="Categories.Monad.Construction.Kleisli.html#3268" class="Bound">k</a>
|
|||
|
<a id="3317" href="Categories.Monad.Construction.Kleisli.html#3246" class="Function">identityʳ'</a> <a id="3328" class="Symbol">{</a><a id="3329" href="Categories.Monad.Construction.Kleisli.html#3329" class="Bound">X</a><a id="3330" class="Symbol">}</a> <a id="3332" class="Symbol">{</a><a id="3333" href="Categories.Monad.Construction.Kleisli.html#3333" class="Bound">Y</a><a id="3334" class="Symbol">}</a> <a id="3336" class="Symbol">{</a><a id="3337" href="Categories.Monad.Construction.Kleisli.html#3337" class="Bound">k</a><a id="3338" class="Symbol">}</a> <a id="3341" class="Symbol">=</a> <a id="3343" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
|
|||
|
<a id="3358" class="Symbol">((</a><a id="3360" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3364" href="Categories.Monad.Construction.Kleisli.html#3333" class="Bound">Y</a> <a id="3366" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3368" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3371" href="Categories.Monad.Construction.Kleisli.html#3337" class="Bound">k</a><a id="3372" class="Symbol">)</a> <a id="3374" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3376" href="Categories.NaturalTransformation.Core.html#783" class="Function">η.η</a> <a id="3380" href="Categories.Monad.Construction.Kleisli.html#3329" class="Bound">X</a><a id="3381" class="Symbol">)</a> <a id="3385" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3388" href="Categories.Morphism.Reasoning.Core.html#1914" class="Function">pullʳ</a> <a id="3394" class="Symbol">(</a><a id="3395" href="Relation.Binary.Structures.html#1622" class="Function">sym</a> <a id="3399" class="Symbol">(</a><a id="3400" href="Categories.NaturalTransformation.Core.html#827" class="Function">η.commute</a> <a id="3410" class="Symbol">_))</a> <a id="3414" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3424" class="Symbol">(</a><a id="3425" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3429" href="Categories.Monad.Construction.Kleisli.html#3333" class="Bound">Y</a> <a id="3431" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3433" href="Categories.NaturalTransformation.Core.html#783" class="Function">η.η</a> <a id="3437" class="Symbol">(</a><a id="3438" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="3441" href="Categories.Monad.Construction.Kleisli.html#3333" class="Bound">Y</a><a id="3442" class="Symbol">)</a> <a id="3444" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3446" href="Categories.Monad.Construction.Kleisli.html#3337" class="Bound">k</a><a id="3447" class="Symbol">)</a> <a id="3451" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3454" href="Categories.Morphism.Reasoning.Core.html#6851" class="Function">cancelˡ</a> <a id="3462" href="Categories.Monad.html#953" class="Field">M.identityʳ</a> <a id="3474" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3484" href="Categories.Monad.Construction.Kleisli.html#3337" class="Bound">k</a> <a id="3511" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">∎</a>
|
|||
|
|
|||
|
<a id="3520" href="Categories.Monad.Construction.Kleisli.html#3520" class="Function">assoc'</a> <a id="3527" class="Symbol">:</a> <a id="3529" class="Symbol">∀</a> <a id="3532" class="Symbol">{</a><a id="3533" href="Categories.Monad.Construction.Kleisli.html#3533" class="Bound">X</a> <a id="3535" href="Categories.Monad.Construction.Kleisli.html#3535" class="Bound">Y</a> <a id="3537" href="Categories.Monad.Construction.Kleisli.html#3537" class="Bound">Z</a><a id="3538" class="Symbol">}</a> <a id="3540" class="Symbol">{</a><a id="3541" href="Categories.Monad.Construction.Kleisli.html#3541" class="Bound">k</a> <a id="3543" class="Symbol">:</a> <a id="3545" href="Categories.Monad.Construction.Kleisli.html#3533" class="Bound">X</a> <a id="3547" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="3549" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="3552" href="Categories.Monad.Construction.Kleisli.html#3535" class="Bound">Y</a><a id="3553" class="Symbol">}</a> <a id="3555" class="Symbol">{</a><a id="3556" href="Categories.Monad.Construction.Kleisli.html#3556" class="Bound">l</a> <a id="3558" class="Symbol">:</a> <a id="3560" href="Categories.Monad.Construction.Kleisli.html#3535" class="Bound">Y</a> <a id="3562" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="3564" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="3567" href="Categories.Monad.Construction.Kleisli.html#3537" class="Bound">Z</a><a id="3568" class="Symbol">}</a> <a id="3570" class="Symbol">→</a> <a id="3572" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3576" href="Categories.Monad.Construction.Kleisli.html#3537" class="Bound">Z</a> <a id="3578" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3580" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3583" class="Symbol">((</a><a id="3585" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3589" href="Categories.Monad.Construction.Kleisli.html#3537" class="Bound">Z</a> <a id="3591" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3593" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3596" href="Categories.Monad.Construction.Kleisli.html#3556" class="Bound">l</a><a id="3597" class="Symbol">)</a> <a id="3599" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3601" href="Categories.Monad.Construction.Kleisli.html#3541" class="Bound">k</a><a id="3602" class="Symbol">)</a> <a id="3604" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="3606" class="Symbol">(</a><a id="3607" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3611" href="Categories.Monad.Construction.Kleisli.html#3537" class="Bound">Z</a> <a id="3613" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3615" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3618" href="Categories.Monad.Construction.Kleisli.html#3556" class="Bound">l</a><a id="3619" class="Symbol">)</a> <a id="3621" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3623" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3627" href="Categories.Monad.Construction.Kleisli.html#3535" class="Bound">Y</a> <a id="3629" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3631" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3634" href="Categories.Monad.Construction.Kleisli.html#3541" class="Bound">k</a>
|
|||
|
<a id="3642" href="Categories.Monad.Construction.Kleisli.html#3520" class="Function">assoc'</a> <a id="3649" class="Symbol">{</a><a id="3650" href="Categories.Monad.Construction.Kleisli.html#3650" class="Bound">X</a><a id="3651" class="Symbol">}</a> <a id="3653" class="Symbol">{</a><a id="3654" href="Categories.Monad.Construction.Kleisli.html#3654" class="Bound">Y</a><a id="3655" class="Symbol">}</a> <a id="3657" class="Symbol">{</a><a id="3658" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a><a id="3659" class="Symbol">}</a> <a id="3661" class="Symbol">{</a><a id="3662" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a><a id="3663" class="Symbol">}</a> <a id="3665" class="Symbol">{</a><a id="3666" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="3667" class="Symbol">}</a> <a id="3669" class="Symbol">=</a> <a id="3671" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
|
|||
|
<a id="3685" class="Symbol">(</a><a id="3686" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3690" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="3692" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3694" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3697" class="Symbol">((</a><a id="3699" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3703" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="3705" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3707" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3710" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="3711" class="Symbol">)</a> <a id="3713" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3715" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a><a id="3716" class="Symbol">))</a> <a id="3729" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3732" href="Categories.Category.Core.html#2734" class="Function Operator">refl⟩∘⟨</a> <a id="3740" href="Categories.Functor.Core.html#565" class="Function">homomorphism</a> <a id="3753" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3764" class="Symbol">(</a><a id="3765" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3769" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="3771" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3773" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3776" class="Symbol">(</a><a id="3777" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3781" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="3783" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3785" href="Categories.Functor.Core.html#806" class="Function">₁</a> <a id="3787" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="3788" class="Symbol">)</a> <a id="3790" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3792" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3795" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a><a id="3796" class="Symbol">)</a> <a id="3808" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3811" href="Categories.Category.Core.html#2734" class="Function Operator">refl⟩∘⟨</a> <a id="3819" href="Categories.Functor.Core.html#565" class="Function">homomorphism</a> <a id="3832" href="Categories.Category.Core.html#2837" class="Function Operator">⟩∘⟨refl</a> <a id="3840" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3851" class="Symbol">(</a><a id="3852" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3856" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="3858" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3860" class="Symbol">(</a><a id="3861" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3864" class="Symbol">(</a><a id="3865" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3869" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a><a id="3870" class="Symbol">)</a> <a id="3872" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3874" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3877" class="Symbol">(</a><a id="3878" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3881" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="3882" class="Symbol">))</a> <a id="3885" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3887" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3890" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a><a id="3891" class="Symbol">)</a> <a id="3895" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3898" href="Categories.Morphism.Reasoning.Core.html#2048" class="Function">pullˡ</a> <a id="3904" class="Symbol">(</a><a id="3905" href="Categories.Morphism.Reasoning.Core.html#2048" class="Function">pullˡ</a> <a id="3911" href="Categories.Monad.html#759" class="Field">M.assoc</a><a id="3918" class="Symbol">)</a> <a id="3920" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3931" class="Symbol">(((</a><a id="3934" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3938" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="3940" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3942" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="3946" class="Symbol">(</a><a id="3947" href="Categories.Functor.Core.html#432" class="Function">F₀</a> <a id="3950" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a><a id="3951" class="Symbol">))</a> <a id="3954" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3956" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3959" class="Symbol">(</a><a id="3960" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3963" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="3964" class="Symbol">))</a> <a id="3967" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3969" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="3972" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a><a id="3973" class="Symbol">)</a> <a id="3975" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3978" href="Categories.Morphism.Reasoning.Core.html#1914" class="Function">pullʳ</a> <a id="3984" class="Symbol">(</a><a id="3985" href="Categories.NaturalTransformation.Core.html#827" class="Function">μ.commute</a> <a id="3995" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="3996" class="Symbol">)</a> <a id="3998" href="Categories.Category.Core.html#2837" class="Function Operator">⟩∘⟨refl</a> <a id="4006" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="4016" class="Symbol">(</a><a id="4017" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="4021" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="4023" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="4025" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="4028" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a> <a id="4030" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="4032" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="4036" href="Categories.Monad.Construction.Kleisli.html#3654" class="Bound">Y</a><a id="4037" class="Symbol">)</a> <a id="4039" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="4041" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="4044" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a> <a id="4060" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="4063" href="Relation.Binary.Structures.html#1648" class="Function">trans</a> <a id="4069" href="Categories.Morphism.Reasoning.Core.html#1551" class="Function">assoc²'</a> <a id="4077" href="Categories.Category.Core.html#1004" class="Field">sym-assoc</a> <a id="4087" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="4097" class="Symbol">(</a><a id="4098" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="4102" href="Categories.Monad.Construction.Kleisli.html#3658" class="Bound">Z</a> <a id="4104" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="4106" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="4109" href="Categories.Monad.Construction.Kleisli.html#3666" class="Bound">l</a><a id="4110" class="Symbol">)</a> <a id="4112" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="4114" href="Categories.NaturalTransformation.Core.html#783" class="Function">μ.η</a> <a id="4118" href="Categories.Monad.Construction.Kleisli.html#3654" class="Bound">Y</a> <a id="4120" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="4122" href="Categories.Functor.Core.html#455" class="Function">F₁</a> <a id="4125" href="Categories.Monad.Construction.Kleisli.html#3662" class="Bound">k</a> <a id="4141" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">∎</a>
|
|||
|
|
|||
|
|
|||
|
</pre></body></html>
|