bsc-leon-vatthauer/agda/bsc-thesis/Category.Construction.ElgotAlgebras.md
2024-02-09 17:53:52 +01:00

64 lines
No EOL
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
<pre class="Agda"><a id="14" class="Keyword">open</a> <a id="19" class="Keyword">import</a> <a id="26" href="Level.html" class="Module">Level</a>
<a id="32" class="Keyword">open</a> <a id="37" class="Keyword">import</a> <a id="44" href="Categories.Category.Cocartesian.html" class="Module">Categories.Category.Cocartesian</a> <a id="76" class="Keyword">using</a> <a id="82" class="Symbol">(</a><a id="83" href="Categories.Category.Cocartesian.html#3385" class="Record">Cocartesian</a><a id="94" class="Symbol">)</a>
<a id="96" class="Keyword">open</a> <a id="101" class="Keyword">import</a> <a id="108" href="Categories.Category.html" class="Module">Categories.Category</a>
<a id="128" class="Keyword">open</a> <a id="133" class="Keyword">import</a> <a id="140" href="Category.Ambient.html" class="Module">Category.Ambient</a> <a id="157" class="Keyword">using</a> <a id="163" class="Symbol">(</a><a id="164" href="Category.Ambient.html#1681" class="Record">Ambient</a><a id="171" class="Symbol">)</a>
<a id="174" class="Keyword">import</a> <a id="181" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="211" class="Symbol">as</a> <a id="214" class="Module">MR</a>
</pre>-->
# The Category of Elgot Algebras
<pre class="Agda"><a id="268" class="Keyword">module</a> <a id="275" href="Category.Construction.ElgotAlgebras.html" class="Module">Category.Construction.ElgotAlgebras</a> <a id="311" class="Symbol">{</a><a id="312" href="Category.Construction.ElgotAlgebras.html#312" class="Bound">o</a> <a id="314" href="Category.Construction.ElgotAlgebras.html#314" class="Bound"></a> <a id="316" href="Category.Construction.ElgotAlgebras.html#316" class="Bound">e</a><a id="317" class="Symbol">}</a> <a id="319" class="Symbol">{</a><a id="320" href="Category.Construction.ElgotAlgebras.html#320" class="Bound">C</a> <a id="322" class="Symbol">:</a> <a id="324" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="333" href="Category.Construction.ElgotAlgebras.html#312" class="Bound">o</a> <a id="335" href="Category.Construction.ElgotAlgebras.html#314" class="Bound"></a> <a id="337" href="Category.Construction.ElgotAlgebras.html#316" class="Bound">e</a><a id="338" class="Symbol">}</a> <a id="340" class="Symbol">(</a><a id="341" href="Category.Construction.ElgotAlgebras.html#341" class="Bound">cocartesian</a> <a id="353" class="Symbol">:</a> <a id="355" href="Categories.Category.Cocartesian.html#3385" class="Record">Cocartesian</a> <a id="367" href="Category.Construction.ElgotAlgebras.html#320" class="Bound">C</a><a id="368" class="Symbol">)</a> <a id="370" class="Keyword">where</a>
<a id="378" class="Keyword">open</a> <a id="383" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="392" href="Category.Construction.ElgotAlgebras.html#320" class="Bound">C</a>
<a id="396" class="Keyword">open</a> <a id="401" href="Categories.Morphism.Reasoning.html" class="Module">MR</a> <a id="404" href="Category.Construction.ElgotAlgebras.html#320" class="Bound">C</a>
<a id="408" class="Keyword">open</a> <a id="413" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
<a id="428" class="Keyword">open</a> <a id="433" href="Categories.Category.Core.html#1530" class="Module">Equiv</a>
<a id="441" class="Keyword">open</a> <a id="446" href="Categories.Category.Cocartesian.html#3385" class="Module">Cocartesian</a> <a id="458" href="Category.Construction.ElgotAlgebras.html#341" class="Bound">cocartesian</a>
<a id="472" class="Keyword">open</a> <a id="477" class="Keyword">import</a> <a id="484" href="Algebra.Elgot.html" class="Module">Algebra.Elgot</a> <a id="498" href="Category.Construction.ElgotAlgebras.html#341" class="Bound">cocartesian</a>
<a id="513" class="Comment">-- iteration preversing morphism between two elgot-algebras</a>
<a id="575" class="Keyword">module</a> <a id="582" href="Category.Construction.ElgotAlgebras.html#582" class="Module">_</a> <a id="584" class="Symbol">(</a><a id="585" href="Category.Construction.ElgotAlgebras.html#585" class="Bound">E₁</a> <a id="588" href="Category.Construction.ElgotAlgebras.html#588" class="Bound">E₂</a> <a id="591" class="Symbol">:</a> <a id="593" href="Algebra.Elgot.html#15964" class="Record">Elgot-Algebra</a><a id="606" class="Symbol">)</a> <a id="608" class="Keyword">where</a>
<a id="618" class="Keyword">open</a> <a id="623" href="Algebra.Elgot.html#15964" class="Module">Elgot-Algebra</a> <a id="637" href="Category.Construction.ElgotAlgebras.html#585" class="Bound">E₁</a> <a id="640" class="Keyword">renaming</a> <a id="649" class="Symbol">(</a><a id="650" href="Algebra.Elgot.html#1938" class="Function Operator">_#</a> <a id="653" class="Symbol">to</a> <a id="656" class="Function Operator">_#₁</a><a id="659" class="Symbol">)</a>
<a id="665" class="Keyword">open</a> <a id="670" href="Algebra.Elgot.html#15964" class="Module">Elgot-Algebra</a> <a id="684" href="Category.Construction.ElgotAlgebras.html#588" class="Bound">E₂</a> <a id="687" class="Keyword">renaming</a> <a id="696" class="Symbol">(</a><a id="697" href="Algebra.Elgot.html#1938" class="Function Operator">_#</a> <a id="700" class="Symbol">to</a> <a id="703" class="Function Operator">_#₂</a><a id="706" class="Symbol">;</a> <a id="708" href="Algebra.Elgot.html#16018" class="Field">A</a> <a id="710" class="Symbol">to</a> <a id="713" class="Field">B</a><a id="714" class="Symbol">)</a>
<a id="720" class="Keyword">record</a> <a id="727" href="Category.Construction.ElgotAlgebras.html#727" class="Record">Elgot-Algebra-Morphism</a> <a id="750" class="Symbol">:</a> <a id="752" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="756" class="Symbol">(</a><a id="757" href="Category.Construction.ElgotAlgebras.html#312" class="Bound">o</a> <a id="759" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="761" href="Category.Construction.ElgotAlgebras.html#314" class="Bound"></a> <a id="763" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="765" href="Category.Construction.ElgotAlgebras.html#316" class="Bound">e</a><a id="766" class="Symbol">)</a> <a id="768" class="Keyword">where</a>
<a id="780" class="Keyword">field</a>
<a id="794" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="796" class="Symbol">:</a> <a id="798" href="Algebra.Elgot.html#16018" class="Function">A</a> <a id="800" href="Categories.Category.Core.html#575" class="Function Operator"></a> <a id="802" href="Category.Construction.ElgotAlgebras.html#713" class="Field">B</a>
<a id="812" href="Category.Construction.ElgotAlgebras.html#812" class="Field">preserves</a> <a id="822" class="Symbol">:</a> <a id="824" class="Symbol"></a> <a id="826" class="Symbol">{</a><a id="827" href="Category.Construction.ElgotAlgebras.html#827" class="Bound">X</a><a id="828" class="Symbol">}</a> <a id="830" class="Symbol">{</a><a id="831" href="Category.Construction.ElgotAlgebras.html#831" class="Bound">f</a> <a id="833" class="Symbol">:</a> <a id="835" href="Category.Construction.ElgotAlgebras.html#827" class="Bound">X</a> <a id="837" href="Categories.Category.Core.html#575" class="Function Operator"></a> <a id="839" href="Algebra.Elgot.html#16018" class="Function">A</a> <a id="841" href="Categories.Category.Cocartesian.html#1549" class="Function Operator">+</a> <a id="843" href="Category.Construction.ElgotAlgebras.html#827" class="Bound">X</a><a id="844" class="Symbol">}</a> <a id="846" class="Symbol"></a> <a id="848" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="850" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="852" class="Symbol">(</a><a id="853" href="Category.Construction.ElgotAlgebras.html#831" class="Bound">f</a> <a id="855" href="Category.Construction.ElgotAlgebras.html#656" class="Function Operator">#₁</a><a id="857" class="Symbol">)</a> <a id="859" href="Categories.Category.Core.html#595" class="Function Operator"></a> <a id="861" class="Symbol">((</a><a id="863" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="865" href="Categories.Category.Cocartesian.html#2133" class="Function Operator">+₁</a> <a id="868" href="Categories.Category.Core.html#630" class="Function">id</a><a id="870" class="Symbol">)</a> <a id="872" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="874" href="Category.Construction.ElgotAlgebras.html#831" class="Bound">f</a><a id="875" class="Symbol">)</a><a id="876" href="Category.Construction.ElgotAlgebras.html#703" class="Function Operator">#₂</a>
<a id="882" class="Comment">-- the category of elgot algebras for a given category</a>
<a id="Elgot-Algebras"></a><a id="939" href="Category.Construction.ElgotAlgebras.html#939" class="Function">Elgot-Algebras</a> <a id="954" class="Symbol">:</a> <a id="956" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="965" class="Symbol">(</a><a id="966" href="Category.Construction.ElgotAlgebras.html#312" class="Bound">o</a> <a id="968" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="970" href="Category.Construction.ElgotAlgebras.html#314" class="Bound"></a> <a id="972" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="974" href="Category.Construction.ElgotAlgebras.html#316" class="Bound">e</a><a id="975" class="Symbol">)</a> <a id="977" class="Symbol">(</a><a id="978" href="Category.Construction.ElgotAlgebras.html#312" class="Bound">o</a> <a id="980" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="982" href="Category.Construction.ElgotAlgebras.html#314" class="Bound"></a> <a id="984" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="986" href="Category.Construction.ElgotAlgebras.html#316" class="Bound">e</a><a id="987" class="Symbol">)</a> <a id="989" href="Category.Construction.ElgotAlgebras.html#316" class="Bound">e</a>
<a id="993" href="Category.Construction.ElgotAlgebras.html#939" class="Function">Elgot-Algebras</a> <a id="1008" class="Symbol">=</a> <a id="1010" class="Keyword">record</a>
<a id="1021" class="Symbol">{</a> <a id="1023" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="1033" class="Symbol">=</a> <a id="1035" href="Algebra.Elgot.html#15964" class="Record">Elgot-Algebra</a>
<a id="1053" class="Symbol">;</a> <a id="1055" href="Categories.Category.Core.html#575" class="Field Operator">_⇒_</a> <a id="1065" class="Symbol">=</a> <a id="1067" href="Category.Construction.ElgotAlgebras.html#727" class="Record">Elgot-Algebra-Morphism</a>
<a id="1094" class="Symbol">;</a> <a id="1096" href="Categories.Category.Core.html#595" class="Field Operator">_≈_</a> <a id="1106" class="Symbol">=</a> <a id="1108" class="Symbol">λ</a> <a id="1110" href="Category.Construction.ElgotAlgebras.html#1110" class="Bound">f</a> <a id="1112" href="Category.Construction.ElgotAlgebras.html#1112" class="Bound">g</a> <a id="1114" class="Symbol"></a> <a id="1116" href="Category.Construction.ElgotAlgebras.html#794" class="Field">Elgot-Algebra-Morphism.h</a> <a id="1141" href="Category.Construction.ElgotAlgebras.html#1110" class="Bound">f</a> <a id="1143" href="Categories.Category.Core.html#595" class="Function Operator"></a> <a id="1145" href="Category.Construction.ElgotAlgebras.html#794" class="Field">Elgot-Algebra-Morphism.h</a> <a id="1170" href="Category.Construction.ElgotAlgebras.html#1112" class="Bound">g</a>
<a id="1176" class="Symbol">;</a> <a id="1178" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1188" class="Symbol">=</a> <a id="1190" class="Symbol">λ</a> <a id="1192" class="Symbol">{</a><a id="1193" href="Category.Construction.ElgotAlgebras.html#1193" class="Bound">EB</a><a id="1195" class="Symbol">}</a> <a id="1197" class="Symbol"></a> <a id="1199" class="Keyword">let</a> <a id="1203" class="Keyword">open</a> <a id="1208" href="Algebra.Elgot.html#15964" class="Module">Elgot-Algebra</a> <a id="1222" href="Category.Construction.ElgotAlgebras.html#1193" class="Bound">EB</a> <a id="1225" class="Keyword">in</a>
<a id="1233" class="Keyword">record</a> <a id="1240" class="Symbol">{</a> <a id="1242" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="1244" class="Symbol">=</a> <a id="1246" href="Categories.Category.Core.html#630" class="Function">id</a><a id="1248" class="Symbol">;</a> <a id="1250" href="Category.Construction.ElgotAlgebras.html#812" class="Field">preserves</a> <a id="1260" class="Symbol">=</a> <a id="1262" class="Symbol">λ</a> <a id="1264" class="Symbol">{</a><a id="1265" href="Category.Construction.ElgotAlgebras.html#1265" class="Bound">X</a> <a id="1267" class="Symbol">:</a> <a id="1269" href="Categories.Category.Core.html#559" class="Function">Obj</a><a id="1272" class="Symbol">}</a> <a id="1274" class="Symbol">{</a><a id="1275" href="Category.Construction.ElgotAlgebras.html#1275" class="Bound">f</a> <a id="1277" class="Symbol">:</a> <a id="1279" href="Category.Construction.ElgotAlgebras.html#1265" class="Bound">X</a> <a id="1281" href="Categories.Category.Core.html#575" class="Function Operator"></a> <a id="1283" href="Algebra.Elgot.html#16018" class="Field">A</a> <a id="1285" href="Categories.Category.Cocartesian.html#1549" class="Function Operator">+</a> <a id="1287" href="Category.Construction.ElgotAlgebras.html#1265" class="Bound">X</a><a id="1288" class="Symbol">}</a> <a id="1290" class="Symbol"></a> <a id="1292" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="1304" href="Categories.Category.Core.html#630" class="Function">id</a> <a id="1307" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="1309" href="Category.Construction.ElgotAlgebras.html#1275" class="Bound">f</a> <a id="1311" href="Algebra.Elgot.html#1938" class="Function Operator">#</a> <a id="1323" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="1326" href="Categories.Category.Core.html#1096" class="Function">identityˡ</a> <a id="1336" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="1345" href="Category.Construction.ElgotAlgebras.html#1275" class="Bound">f</a> <a id="1347" href="Algebra.Elgot.html#1938" class="Function Operator">#</a> <a id="1364" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="1367" href="Algebra.Elgot.html#2331" class="Function">#-resp-≈</a> <a id="1376" class="Symbol">(</a><a id="1377" href="Categories.Morphism.Reasoning.Core.html#3063" class="Function">introˡ</a> <a id="1384" class="Symbol">(</a><a id="1385" href="Categories.Object.Coproduct.html#635" class="Function">coproduct.unique</a> <a id="1402" href="Categories.Morphism.Reasoning.Core.html#1309" class="Function">id-comm-sym</a> <a id="1414" href="Categories.Morphism.Reasoning.Core.html#1309" class="Function">id-comm-sym</a><a id="1425" class="Symbol">))</a> <a id="1428" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="1436" class="Symbol">((</a><a id="1438" href="Categories.Category.Core.html#630" class="Function">id</a> <a id="1441" href="Categories.Category.Cocartesian.html#2133" class="Function Operator">+₁</a> <a id="1444" href="Categories.Category.Core.html#630" class="Function">id</a><a id="1446" class="Symbol">)</a> <a id="1448" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="1450" href="Category.Construction.ElgotAlgebras.html#1275" class="Bound">f</a><a id="1451" class="Symbol">)</a> <a id="1453" href="Algebra.Elgot.html#1938" class="Function Operator">#</a> <a id="1455" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a> <a id="1457" class="Symbol">}</a>
<a id="1463" class="Symbol">;</a> <a id="1465" href="Categories.Category.Core.html#656" class="Field Operator">_∘_</a> <a id="1475" class="Symbol">=</a> <a id="1477" class="Symbol">λ</a> <a id="1479" class="Symbol">{</a><a id="1480" href="Category.Construction.ElgotAlgebras.html#1480" class="Bound">EA</a><a id="1482" class="Symbol">}</a> <a id="1484" class="Symbol">{</a><a id="1485" href="Category.Construction.ElgotAlgebras.html#1485" class="Bound">EB</a><a id="1487" class="Symbol">}</a> <a id="1489" class="Symbol">{</a><a id="1490" href="Category.Construction.ElgotAlgebras.html#1490" class="Bound">EC</a><a id="1492" class="Symbol">}</a> <a id="1494" href="Category.Construction.ElgotAlgebras.html#1494" class="Bound">f</a> <a id="1496" href="Category.Construction.ElgotAlgebras.html#1496" class="Bound">g</a> <a id="1498" class="Symbol"></a> <a id="1500" class="Keyword">let</a>
<a id="1511" class="Keyword">open</a> <a id="1516" href="Category.Construction.ElgotAlgebras.html#727" class="Module">Elgot-Algebra-Morphism</a> <a id="1539" href="Category.Construction.ElgotAlgebras.html#1494" class="Bound">f</a> <a id="1541" class="Keyword">renaming</a> <a id="1550" class="Symbol">(</a><a id="1551" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="1553" class="Symbol">to</a> <a id="1556" class="Field">hᶠ</a><a id="1558" class="Symbol">;</a> <a id="1560" href="Category.Construction.ElgotAlgebras.html#812" class="Field">preserves</a> <a id="1570" class="Symbol">to</a> <a id="1573" class="Field">preservesᶠ</a><a id="1583" class="Symbol">)</a>
<a id="1591" class="Keyword">open</a> <a id="1596" href="Category.Construction.ElgotAlgebras.html#727" class="Module">Elgot-Algebra-Morphism</a> <a id="1619" href="Category.Construction.ElgotAlgebras.html#1496" class="Bound">g</a> <a id="1621" class="Keyword">renaming</a> <a id="1630" class="Symbol">(</a><a id="1631" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="1633" class="Symbol">to</a> <a id="1636" class="Field">hᵍ</a><a id="1638" class="Symbol">;</a> <a id="1640" href="Category.Construction.ElgotAlgebras.html#812" class="Field">preserves</a> <a id="1650" class="Symbol">to</a> <a id="1653" class="Field">preservesᵍ</a><a id="1663" class="Symbol">)</a>
<a id="1671" class="Keyword">open</a> <a id="1676" href="Algebra.Elgot.html#15964" class="Module">Elgot-Algebra</a> <a id="1690" href="Category.Construction.ElgotAlgebras.html#1480" class="Bound">EA</a> <a id="1693" class="Keyword">using</a> <a id="1699" class="Symbol">(</a><a id="1700" href="Algebra.Elgot.html#16018" class="Field">A</a><a id="1701" class="Symbol">)</a> <a id="1703" class="Keyword">renaming</a> <a id="1712" class="Symbol">(</a><a id="1713" href="Algebra.Elgot.html#1938" class="Function Operator">_#</a> <a id="1716" class="Symbol">to</a> <a id="1719" class="Function Operator">_#ᵃ</a><a id="1722" class="Symbol">)</a>
<a id="1730" class="Keyword">open</a> <a id="1735" href="Algebra.Elgot.html#15964" class="Module">Elgot-Algebra</a> <a id="1749" href="Category.Construction.ElgotAlgebras.html#1485" class="Bound">EB</a> <a id="1752" class="Keyword">using</a> <a id="1758" class="Symbol">()</a> <a id="1761" class="Keyword">renaming</a> <a id="1770" class="Symbol">(</a><a id="1771" href="Algebra.Elgot.html#1938" class="Function Operator">_#</a> <a id="1774" class="Symbol">to</a> <a id="1777" class="Function Operator">_#ᵇ</a><a id="1780" class="Symbol">;</a> <a id="1782" href="Algebra.Elgot.html#16018" class="Field">A</a> <a id="1784" class="Symbol">to</a> <a id="1787" class="Field">B</a><a id="1788" class="Symbol">)</a>
<a id="1796" class="Keyword">open</a> <a id="1801" href="Algebra.Elgot.html#15964" class="Module">Elgot-Algebra</a> <a id="1815" href="Category.Construction.ElgotAlgebras.html#1490" class="Bound">EC</a> <a id="1818" class="Keyword">using</a> <a id="1824" class="Symbol">()</a> <a id="1827" class="Keyword">renaming</a> <a id="1836" class="Symbol">(</a><a id="1837" href="Algebra.Elgot.html#1938" class="Function Operator">_#</a> <a id="1840" class="Symbol">to</a> <a id="1843" class="Function Operator">_#ᶜ</a><a id="1846" class="Symbol">;</a> <a id="1848" href="Algebra.Elgot.html#16018" class="Field">A</a> <a id="1850" class="Symbol">to</a> <a id="1853" class="Field">C</a><a id="1854" class="Symbol">;</a> <a id="1856" href="Algebra.Elgot.html#2331" class="Function">#-resp-≈</a> <a id="1865" class="Symbol">to</a> <a id="1868" class="Function">#ᶜ-resp-≈</a><a id="1877" class="Symbol">)</a>
<a id="1885" class="Keyword">in</a> <a id="1888" class="Keyword">record</a> <a id="1895" class="Symbol">{</a> <a id="1897" href="Category.Construction.ElgotAlgebras.html#794" class="Field">h</a> <a id="1899" class="Symbol">=</a> <a id="1901" href="Category.Construction.ElgotAlgebras.html#1556" class="Function">hᶠ</a> <a id="1904" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="1906" href="Category.Construction.ElgotAlgebras.html#1636" class="Field">hᵍ</a><a id="1908" class="Symbol">;</a> <a id="1910" href="Category.Construction.ElgotAlgebras.html#812" class="Field">preserves</a> <a id="1920" class="Symbol">=</a> <a id="1922" class="Symbol">λ</a> <a id="1924" class="Symbol">{</a><a id="1925" href="Category.Construction.ElgotAlgebras.html#1925" class="Bound">X</a><a id="1926" class="Symbol">}</a> <a id="1928" class="Symbol">{</a><a id="1929" href="Category.Construction.ElgotAlgebras.html#1929" class="Bound">f</a> <a id="1931" class="Symbol">:</a> <a id="1933" href="Category.Construction.ElgotAlgebras.html#1925" class="Bound">X</a> <a id="1935" href="Categories.Category.Core.html#575" class="Function Operator"></a> <a id="1937" href="Algebra.Elgot.html#16018" class="Function">A</a> <a id="1939" href="Categories.Category.Cocartesian.html#1549" class="Function Operator">+</a> <a id="1941" href="Category.Construction.ElgotAlgebras.html#1925" class="Bound">X</a><a id="1942" class="Symbol">}</a> <a id="1944" class="Symbol"></a> <a id="1946" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="1961" class="Symbol">(</a><a id="1962" href="Category.Construction.ElgotAlgebras.html#1556" class="Function">hᶠ</a> <a id="1965" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="1967" href="Category.Construction.ElgotAlgebras.html#1636" class="Field">hᵍ</a><a id="1969" class="Symbol">)</a> <a id="1971" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="1973" class="Symbol">(</a><a id="1974" href="Category.Construction.ElgotAlgebras.html#1929" class="Bound">f</a> <a id="1976" href="Category.Construction.ElgotAlgebras.html#1719" class="Function Operator">#ᵃ</a><a id="1978" class="Symbol">)</a> <a id="1996" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="1999" href="Categories.Morphism.Reasoning.Core.html#1914" class="Function">pullʳ</a> <a id="2005" href="Category.Construction.ElgotAlgebras.html#1653" class="Field">preservesᵍ</a> <a id="2016" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="2026" class="Symbol">(</a><a id="2027" href="Category.Construction.ElgotAlgebras.html#1556" class="Function">hᶠ</a> <a id="2030" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="2032" class="Symbol">(((</a><a id="2035" href="Category.Construction.ElgotAlgebras.html#1636" class="Field">hᵍ</a> <a id="2038" href="Categories.Category.Cocartesian.html#2133" class="Function Operator">+₁</a> <a id="2041" href="Categories.Category.Core.html#630" class="Function">id</a><a id="2043" class="Symbol">)</a> <a id="2045" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="2047" href="Category.Construction.ElgotAlgebras.html#1929" class="Bound">f</a><a id="2048" class="Symbol">)</a> <a id="2050" href="Category.Construction.ElgotAlgebras.html#1777" class="Function Operator">#ᵇ</a><a id="2052" class="Symbol">))</a> <a id="2061" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2064" href="Category.Construction.ElgotAlgebras.html#1573" class="Function">preservesᶠ</a> <a id="2075" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="2086" class="Symbol">(((</a><a id="2089" href="Category.Construction.ElgotAlgebras.html#1556" class="Function">hᶠ</a> <a id="2092" href="Categories.Category.Cocartesian.html#2133" class="Function Operator">+₁</a> <a id="2095" href="Categories.Category.Core.html#630" class="Function">id</a><a id="2097" class="Symbol">)</a> <a id="2099" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="2101" class="Symbol">(</a><a id="2102" href="Category.Construction.ElgotAlgebras.html#1636" class="Field">hᵍ</a> <a id="2105" href="Categories.Category.Cocartesian.html#2133" class="Function Operator">+₁</a> <a id="2108" href="Categories.Category.Core.html#630" class="Function">id</a><a id="2110" class="Symbol">)</a> <a id="2112" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="2114" href="Category.Construction.ElgotAlgebras.html#1929" class="Bound">f</a><a id="2115" class="Symbol">)</a> <a id="2117" href="Category.Construction.ElgotAlgebras.html#1843" class="Function Operator">#ᶜ</a><a id="2119" class="Symbol">)</a> <a id="2121" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2124" href="Category.Construction.ElgotAlgebras.html#1868" class="Function">#ᶜ-resp-≈</a> <a id="2134" class="Symbol">(</a><a id="2135" href="Categories.Morphism.Reasoning.Core.html#2048" class="Function">pullˡ</a> <a id="2141" class="Symbol">(</a><a id="2142" href="Relation.Binary.Structures.html#1648" class="Function">trans</a> <a id="2148" href="Categories.Category.Cocartesian.html#2699" class="Function">+₁∘+₁</a> <a id="2154" class="Symbol">(</a><a id="2155" href="Categories.Category.Cocartesian.html#2622" class="Function">+₁-cong₂</a> <a id="2164" href="Relation.Binary.Structures.html#1596" class="Function">refl</a> <a id="2169" class="Symbol">(</a><a id="2170" href="Categories.Category.Core.html#1339" class="Function">identity²</a><a id="2179" class="Symbol">))))</a> <a id="2184" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="2195" class="Symbol">((</a><a id="2197" href="Category.Construction.ElgotAlgebras.html#1556" class="Function">hᶠ</a> <a id="2200" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="2202" href="Category.Construction.ElgotAlgebras.html#1636" class="Field">hᵍ</a> <a id="2205" href="Categories.Category.Cocartesian.html#2133" class="Function Operator">+₁</a> <a id="2208" href="Categories.Category.Core.html#630" class="Function">id</a><a id="2210" class="Symbol">)</a> <a id="2212" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="2214" href="Category.Construction.ElgotAlgebras.html#1929" class="Bound">f</a><a id="2215" class="Symbol">)</a> <a id="2217" href="Category.Construction.ElgotAlgebras.html#1843" class="Function Operator">#ᶜ</a> <a id="2230" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a> <a id="2232" class="Symbol">}</a>
<a id="2238" class="Symbol">;</a> <a id="2240" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="2250" class="Symbol">=</a> <a id="2252" href="Categories.Category.Core.html#1096" class="Function">identityˡ</a>
<a id="2266" class="Symbol">;</a> <a id="2268" href="Categories.Category.Core.html#1145" class="Field">identityʳ</a> <a id="2278" class="Symbol">=</a> <a id="2280" href="Categories.Category.Core.html#1145" class="Function">identityʳ</a>
<a id="2294" class="Symbol">;</a> <a id="2296" href="Categories.Category.Core.html#1339" class="Field">identity²</a> <a id="2306" class="Symbol">=</a> <a id="2308" href="Categories.Category.Core.html#1339" class="Function">identity²</a>
<a id="2322" class="Symbol">;</a> <a id="2324" href="Categories.Category.Core.html#715" class="Field">assoc</a> <a id="2334" class="Symbol">=</a> <a id="2336" href="Categories.Category.Core.html#715" class="Function">assoc</a>
<a id="2346" class="Symbol">;</a> <a id="2348" href="Categories.Category.Core.html#1004" class="Field">sym-assoc</a> <a id="2358" class="Symbol">=</a> <a id="2360" href="Categories.Category.Core.html#1004" class="Function">sym-assoc</a>
<a id="2374" class="Symbol">;</a> <a id="2376" href="Categories.Category.Core.html#1384" class="Field">equiv</a> <a id="2386" class="Symbol">=</a> <a id="2388" class="Keyword">record</a>
<a id="2401" class="Symbol">{</a> <a id="2403" href="Relation.Binary.Structures.html#1596" class="Field">refl</a> <a id="2409" class="Symbol">=</a> <a id="2411" href="Relation.Binary.Structures.html#1596" class="Function">refl</a>
<a id="2422" class="Symbol">;</a> <a id="2424" href="Relation.Binary.Structures.html#1622" class="Field">sym</a> <a id="2430" class="Symbol">=</a> <a id="2432" href="Relation.Binary.Structures.html#1622" class="Function">sym</a>
<a id="2442" class="Symbol">;</a> <a id="2444" href="Relation.Binary.Structures.html#1648" class="Field">trans</a> <a id="2450" class="Symbol">=</a> <a id="2452" href="Relation.Binary.Structures.html#1648" class="Function">trans</a>
<a id="2464" class="Symbol">}</a>
<a id="2470" class="Symbol">;</a> <a id="2472" href="Categories.Category.Core.html#1438" class="Field">∘-resp-≈</a> <a id="2482" class="Symbol">=</a> <a id="2484" href="Categories.Category.Core.html#1438" class="Function">∘-resp-≈</a>
<a id="2497" class="Symbol">}</a>
<a id="2503" class="Keyword">where</a> <a id="2509" class="Keyword">open</a> <a id="2514" href="Category.Construction.ElgotAlgebras.html#727" class="Module">Elgot-Algebra-Morphism</a>
</pre>