bsc-leon-vatthauer/agda/bsc-thesis/Categories.Functor.Properties.html
2024-02-09 17:53:52 +01:00

166 lines
No EOL
83 KiB
HTML
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.

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Categories.Functor.Properties</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="36" class="Keyword">module</a> <a id="43" href="Categories.Functor.Properties.html" class="Module">Categories.Functor.Properties</a> <a id="73" class="Keyword">where</a>
<a id="80" class="Comment">-- Properties valid of all Functors</a>
<a id="116" class="Keyword">open</a> <a id="121" class="Keyword">import</a> <a id="128" href="Level.html" class="Module">Level</a> <a id="134" class="Keyword">using</a> <a id="140" class="Symbol">(</a><a id="141" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="146" class="Symbol">)</a>
<a id="148" class="Keyword">open</a> <a id="153" class="Keyword">import</a> <a id="160" href="Data.Product.html" class="Module">Data.Product</a> <a id="173" class="Keyword">using</a> <a id="179" class="Symbol">(</a><a id="180" href="Data.Product.Base.html#1618" class="Function Operator">_×_</a><a id="183" class="Symbol">;</a> <a id="185" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a><a id="186" class="Symbol">;</a> <a id="188" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a><a id="191" class="Symbol">;</a> <a id="193" href="Data.Product.Base.html#636" class="Field">proj₁</a><a id="198" class="Symbol">;</a> <a id="200" href="Data.Product.Base.html#650" class="Field">proj₂</a><a id="205" class="Symbol">)</a>
<a id="207" class="Keyword">open</a> <a id="212" class="Keyword">import</a> <a id="219" href="Function.Base.html" class="Module">Function.Base</a> <a id="233" class="Keyword">using</a> <a id="239" class="Symbol">(</a><a id="240" href="Function.Base.html#1974" class="Function Operator">_$_</a><a id="243" class="Symbol">)</a>
<a id="245" class="Keyword">open</a> <a id="250" class="Keyword">import</a> <a id="257" href="Function.Definitions.html" class="Module">Function.Definitions</a> <a id="278" class="Keyword">using</a> <a id="284" class="Symbol">(</a><a id="285" href="Function.Definitions.html#842" class="Function">Injective</a><a id="294" class="Symbol">;</a> <a id="296" href="Function.Definitions.html#1522" class="Function">StrictlySurjective</a><a id="314" class="Symbol">)</a>
<a id="316" class="Keyword">open</a> <a id="321" class="Keyword">import</a> <a id="328" href="Relation.Binary.html" class="Module">Relation.Binary</a> <a id="344" class="Keyword">using</a> <a id="350" class="Symbol">(</a><a id="351" href="Relation.Binary.Core.html#1577" class="Function Operator">_Preserves_⟶_</a><a id="364" class="Symbol">)</a>
<a id="367" class="Keyword">open</a> <a id="372" class="Keyword">import</a> <a id="379" href="Categories.Category.html" class="Module">Categories.Category</a> <a id="399" class="Keyword">using</a> <a id="405" class="Symbol">(</a><a id="406" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="414" class="Symbol">;</a> <a id="416" href="Categories.Category.html#502" class="Function Operator">_[_,_]</a><a id="422" class="Symbol">;</a> <a id="424" href="Categories.Category.html#609" class="Function Operator">_[_≈_]</a><a id="430" class="Symbol">;</a> <a id="432" href="Categories.Category.html#700" class="Function Operator">_[_∘_]</a><a id="438" class="Symbol">;</a> <a id="440" class="Keyword">module</a> <a id="447" href="Categories.Category.html#824" class="Module">Definitions</a><a id="458" class="Symbol">)</a>
<a id="460" class="Keyword">open</a> <a id="465" class="Keyword">import</a> <a id="472" href="Categories.Category.Construction.Core.html" class="Module">Categories.Category.Construction.Core</a> <a id="510" class="Keyword">using</a> <a id="516" class="Symbol">(</a><a id="517" class="Keyword">module</a> <a id="524" href="Categories.Category.Construction.Core.html#1314" class="Module">Shorthands</a><a id="534" class="Symbol">)</a>
<a id="536" class="Keyword">open</a> <a id="541" class="Keyword">import</a> <a id="548" href="Categories.Functor.Core.html" class="Module">Categories.Functor.Core</a> <a id="572" class="Keyword">using</a> <a id="578" class="Symbol">(</a><a id="579" href="Categories.Functor.Core.html#248" class="Record">Functor</a><a id="586" class="Symbol">)</a>
<a id="588" class="Keyword">import</a> <a id="595" href="Categories.Morphism.html" class="Module">Categories.Morphism</a> <a id="615" class="Symbol">as</a> <a id="618" class="Module">Morphism</a>
<a id="627" class="Keyword">import</a> <a id="634" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="664" class="Symbol">as</a> <a id="667" class="Module">Reas</a>
<a id="672" class="Keyword">open</a> <a id="677" class="Keyword">import</a> <a id="684" href="Categories.Morphism.IsoEquiv.html" class="Module">Categories.Morphism.IsoEquiv</a> <a id="713" class="Symbol">as</a> <a id="716" class="Module">IsoEquiv</a>
<a id="725" class="Keyword">open</a> <a id="730" class="Keyword">import</a> <a id="737" href="Categories.Morphism.Notation.html" class="Module">Categories.Morphism.Notation</a>
<a id="767" class="Keyword">open</a> <a id="772" href="Categories.Category.Construction.Core.html#1314" class="Module">Shorthands</a> <a id="783" class="Keyword">using</a> <a id="789" class="Symbol">(</a><a id="790" href="Categories.Category.Core.html#656" class="Function Operator">_∘ᵢ_</a><a id="794" class="Symbol">)</a>
<a id="797" class="Keyword">private</a>
<a id="807" class="Keyword">variable</a>
<a id="820" href="Categories.Functor.Properties.html#820" class="Generalizable">o</a> <a id="822" href="Categories.Functor.Properties.html#822" class="Generalizable"></a> <a id="824" href="Categories.Functor.Properties.html#824" class="Generalizable">e</a> <a id="826" href="Categories.Functor.Properties.html#826" class="Generalizable">o</a> <a id="829" href="Categories.Functor.Properties.html#829" class="Generalizable"></a> <a id="832" href="Categories.Functor.Properties.html#832" class="Generalizable">e</a> <a id="835" class="Symbol">:</a> <a id="837" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="847" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="849" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a> <a id="851" class="Symbol">:</a> <a id="853" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="862" href="Categories.Functor.Properties.html#820" class="Generalizable">o</a> <a id="864" href="Categories.Functor.Properties.html#822" class="Generalizable"></a> <a id="866" href="Categories.Functor.Properties.html#824" class="Generalizable">e</a>
<a id="Contravariant"></a><a id="869" href="Categories.Functor.Properties.html#869" class="Function">Contravariant</a> <a id="883" class="Symbol">:</a> <a id="885" class="Symbol"></a> <a id="887" class="Symbol">(</a><a id="888" href="Categories.Functor.Properties.html#888" class="Bound">C</a> <a id="890" class="Symbol">:</a> <a id="892" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="901" href="Categories.Functor.Properties.html#820" class="Generalizable">o</a> <a id="903" href="Categories.Functor.Properties.html#822" class="Generalizable"></a> <a id="905" href="Categories.Functor.Properties.html#824" class="Generalizable">e</a><a id="906" class="Symbol">)</a> <a id="908" class="Symbol">(</a><a id="909" href="Categories.Functor.Properties.html#909" class="Bound">D</a> <a id="911" class="Symbol">:</a> <a id="913" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="922" href="Categories.Functor.Properties.html#826" class="Generalizable">o</a> <a id="925" href="Categories.Functor.Properties.html#829" class="Generalizable"></a> <a id="928" href="Categories.Functor.Properties.html#832" class="Generalizable">e</a><a id="930" class="Symbol">)</a> <a id="932" class="Symbol"></a> <a id="934" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="938" class="Symbol">_</a>
<a id="940" href="Categories.Functor.Properties.html#869" class="Function">Contravariant</a> <a id="954" href="Categories.Functor.Properties.html#954" class="Bound">C</a> <a id="956" href="Categories.Functor.Properties.html#956" class="Bound">D</a> <a id="958" class="Symbol">=</a> <a id="960" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="968" class="Symbol">(</a><a id="969" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="981" href="Categories.Functor.Properties.html#954" class="Bound">C</a><a id="982" class="Symbol">)</a> <a id="984" href="Categories.Functor.Properties.html#956" class="Bound">D</a>
<a id="Faithful"></a><a id="987" href="Categories.Functor.Properties.html#987" class="Function">Faithful</a> <a id="996" class="Symbol">:</a> <a id="998" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1006" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="1008" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a> <a id="1010" class="Symbol"></a> <a id="1012" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1016" class="Symbol">_</a>
<a id="1018" href="Categories.Functor.Properties.html#987" class="Function">Faithful</a> <a id="1027" class="Symbol">{</a><a id="1028" class="Argument">C</a> <a id="1030" class="Symbol">=</a> <a id="1032" href="Categories.Functor.Properties.html#1032" class="Bound">C</a><a id="1033" class="Symbol">}</a> <a id="1035" class="Symbol">{</a><a id="1036" class="Argument">D</a> <a id="1038" class="Symbol">=</a> <a id="1040" href="Categories.Functor.Properties.html#1040" class="Bound">D</a><a id="1041" class="Symbol">}</a> <a id="1043" href="Categories.Functor.Properties.html#1043" class="Bound">F</a> <a id="1045" class="Symbol">=</a> <a id="1047" class="Symbol"></a> <a id="1049" class="Symbol">{</a><a id="1050" href="Categories.Functor.Properties.html#1050" class="Bound">X</a> <a id="1052" href="Categories.Functor.Properties.html#1052" class="Bound">Y</a><a id="1053" class="Symbol">}</a> <a id="1055" class="Symbol"></a> <a id="1057" href="Function.Definitions.html#842" class="Function">Injective</a> <a id="1067" class="Symbol">{</a><a id="1068" class="Argument">A</a> <a id="1070" class="Symbol">=</a> <a id="1072" href="Categories.Functor.Properties.html#1032" class="Bound">C</a> <a id="1074" href="Categories.Category.html#502" class="Function Operator">[</a> <a id="1076" href="Categories.Functor.Properties.html#1050" class="Bound">X</a> <a id="1078" href="Categories.Category.html#502" class="Function Operator">,</a> <a id="1080" href="Categories.Functor.Properties.html#1052" class="Bound">Y</a> <a id="1082" href="Categories.Category.html#502" class="Function Operator">]</a><a id="1083" class="Symbol">}</a> <a id="1085" class="Symbol">(</a><a id="1086" href="Categories.Functor.Properties.html#1032" class="Bound">C</a> <a id="1088" href="Categories.Category.html#609" class="Function Operator">[_≈_]</a><a id="1093" class="Symbol">)</a> <a id="1095" class="Symbol">(</a><a id="1096" href="Categories.Functor.Properties.html#1040" class="Bound">D</a> <a id="1098" href="Categories.Category.html#609" class="Function Operator">[_≈_]</a><a id="1103" class="Symbol">)</a> <a id="1105" href="Categories.Functor.Core.html#455" class="Field">F₁</a>
<a id="1110" class="Keyword">where</a> <a id="1116" class="Keyword">open</a> <a id="1121" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="1129" href="Categories.Functor.Properties.html#1043" class="Bound">F</a>
<a id="Full"></a><a id="1132" href="Categories.Functor.Properties.html#1132" class="Function">Full</a> <a id="1137" class="Symbol">:</a> <a id="1139" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1147" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="1149" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a> <a id="1151" class="Symbol"></a> <a id="1153" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1157" class="Symbol">_</a>
<a id="1159" href="Categories.Functor.Properties.html#1132" class="Function">Full</a> <a id="1164" class="Symbol">{</a><a id="1165" class="Argument">C</a> <a id="1167" class="Symbol">=</a> <a id="1169" href="Categories.Functor.Properties.html#1169" class="Bound">C</a><a id="1170" class="Symbol">}</a> <a id="1172" class="Symbol">{</a><a id="1173" class="Argument">D</a> <a id="1175" class="Symbol">=</a> <a id="1177" href="Categories.Functor.Properties.html#1177" class="Bound">D</a><a id="1178" class="Symbol">}</a> <a id="1180" href="Categories.Functor.Properties.html#1180" class="Bound">F</a> <a id="1182" class="Symbol">=</a> <a id="1184" class="Symbol"></a> <a id="1186" class="Symbol">{</a><a id="1187" href="Categories.Functor.Properties.html#1187" class="Bound">X</a> <a id="1189" href="Categories.Functor.Properties.html#1189" class="Bound">Y</a><a id="1190" class="Symbol">}</a> <a id="1192" class="Symbol"></a> <a id="1194" href="Function.Definitions.html#1522" class="Function">StrictlySurjective</a> <a id="1213" class="Symbol">{</a><a id="1214" class="Argument">A</a> <a id="1216" class="Symbol">=</a> <a id="1218" href="Categories.Functor.Properties.html#1169" class="Bound">C</a> <a id="1220" href="Categories.Category.html#502" class="Function Operator">[</a> <a id="1222" href="Categories.Functor.Properties.html#1187" class="Bound">X</a> <a id="1224" href="Categories.Category.html#502" class="Function Operator">,</a> <a id="1226" href="Categories.Functor.Properties.html#1189" class="Bound">Y</a> <a id="1228" href="Categories.Category.html#502" class="Function Operator">]</a><a id="1229" class="Symbol">}</a> <a id="1231" class="Symbol">(</a><a id="1232" href="Categories.Functor.Properties.html#1177" class="Bound">D</a> <a id="1234" href="Categories.Category.html#609" class="Function Operator">[_≈_]</a><a id="1239" class="Symbol">)</a> <a id="1241" href="Categories.Functor.Core.html#455" class="Field">F₁</a>
<a id="1246" class="Keyword">where</a> <a id="1252" class="Keyword">open</a> <a id="1257" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="1265" href="Categories.Functor.Properties.html#1180" class="Bound">F</a>
<a id="FullyFaithful"></a><a id="1268" href="Categories.Functor.Properties.html#1268" class="Function">FullyFaithful</a> <a id="1282" class="Symbol">:</a> <a id="1284" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1292" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="1294" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a> <a id="1296" class="Symbol"></a> <a id="1298" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1302" class="Symbol">_</a>
<a id="1304" href="Categories.Functor.Properties.html#1268" class="Function">FullyFaithful</a> <a id="1318" href="Categories.Functor.Properties.html#1318" class="Bound">F</a> <a id="1320" class="Symbol">=</a> <a id="1322" href="Categories.Functor.Properties.html#1132" class="Function">Full</a> <a id="1327" href="Categories.Functor.Properties.html#1318" class="Bound">F</a> <a id="1329" href="Data.Product.Base.html#1618" class="Function Operator">×</a> <a id="1331" href="Categories.Functor.Properties.html#987" class="Function">Faithful</a> <a id="1340" href="Categories.Functor.Properties.html#1318" class="Bound">F</a>
<a id="1343" class="Comment">-- Note that this is a constructive version of Essentially Surjective, which is</a>
<a id="1423" class="Comment">-- quite a strong assumption.</a>
<a id="EssentiallySurjective"></a><a id="1453" href="Categories.Functor.Properties.html#1453" class="Function">EssentiallySurjective</a> <a id="1475" class="Symbol">:</a> <a id="1477" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1485" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="1487" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a> <a id="1489" class="Symbol"></a> <a id="1491" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1495" class="Symbol">_</a>
<a id="1497" href="Categories.Functor.Properties.html#1453" class="Function">EssentiallySurjective</a> <a id="1519" class="Symbol">{</a><a id="1520" class="Argument">C</a> <a id="1522" class="Symbol">=</a> <a id="1524" href="Categories.Functor.Properties.html#1524" class="Bound">C</a><a id="1525" class="Symbol">}</a> <a id="1527" class="Symbol">{</a><a id="1528" class="Argument">D</a> <a id="1530" class="Symbol">=</a> <a id="1532" href="Categories.Functor.Properties.html#1532" class="Bound">D</a><a id="1533" class="Symbol">}</a> <a id="1535" href="Categories.Functor.Properties.html#1535" class="Bound">F</a> <a id="1537" class="Symbol">=</a> <a id="1539" class="Symbol">(</a><a id="1540" href="Categories.Functor.Properties.html#1540" class="Bound">d</a> <a id="1542" class="Symbol">:</a> <a id="1544" href="Categories.Category.Core.html#559" class="Field">Category.Obj</a> <a id="1557" href="Categories.Functor.Properties.html#1532" class="Bound">D</a><a id="1558" class="Symbol">)</a> <a id="1560" class="Symbol"></a> <a id="1562" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="1564" href="Categories.Category.Core.html#559" class="Function">C.Obj</a> <a id="1570" class="Symbol"></a> <a id="1573" href="Categories.Functor.Properties.html#1573" class="Bound">c</a> <a id="1575" class="Symbol"></a> <a id="1577" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="1588" href="Categories.Functor.Properties.html#1535" class="Bound">F</a> <a id="1590" href="Categories.Functor.Properties.html#1573" class="Bound">c</a> <a id="1592" href="Categories.Morphism.html#1958" class="Record Operator"></a> <a id="1594" href="Categories.Functor.Properties.html#1540" class="Bound">d</a><a id="1595" class="Symbol">)</a>
<a id="1599" class="Keyword">where</a>
<a id="1607" class="Keyword">open</a> <a id="1612" href="Categories.Morphism.html" class="Module">Morphism</a> <a id="1621" href="Categories.Functor.Properties.html#1532" class="Bound">D</a>
<a id="1625" class="Keyword">module</a> <a id="1632" href="Categories.Functor.Properties.html#1632" class="Module">C</a> <a id="1634" class="Symbol">=</a> <a id="1636" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="1645" href="Categories.Functor.Properties.html#1524" class="Bound">C</a>
<a id="Conservative"></a><a id="1648" href="Categories.Functor.Properties.html#1648" class="Function">Conservative</a> <a id="1661" class="Symbol">:</a> <a id="1663" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1671" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="1673" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a> <a id="1675" class="Symbol"></a> <a id="1677" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1681" class="Symbol">_</a>
<a id="1683" href="Categories.Functor.Properties.html#1648" class="Function">Conservative</a> <a id="1696" class="Symbol">{</a><a id="1697" class="Argument">C</a> <a id="1699" class="Symbol">=</a> <a id="1701" href="Categories.Functor.Properties.html#1701" class="Bound">C</a><a id="1702" class="Symbol">}</a> <a id="1704" class="Symbol">{</a><a id="1705" class="Argument">D</a> <a id="1707" class="Symbol">=</a> <a id="1709" href="Categories.Functor.Properties.html#1709" class="Bound">D</a><a id="1710" class="Symbol">}</a> <a id="1712" href="Categories.Functor.Properties.html#1712" class="Bound">F</a> <a id="1714" class="Symbol">=</a> <a id="1716" class="Symbol"></a> <a id="1718" class="Symbol">{</a><a id="1719" href="Categories.Functor.Properties.html#1719" class="Bound">A</a> <a id="1721" href="Categories.Functor.Properties.html#1721" class="Bound">B</a><a id="1722" class="Symbol">}</a> <a id="1724" class="Symbol">{</a><a id="1725" href="Categories.Functor.Properties.html#1725" class="Bound">f</a> <a id="1727" class="Symbol">:</a> <a id="1729" href="Categories.Functor.Properties.html#1701" class="Bound">C</a> <a id="1731" href="Categories.Category.html#502" class="Function Operator">[</a> <a id="1733" href="Categories.Functor.Properties.html#1719" class="Bound">A</a> <a id="1735" href="Categories.Category.html#502" class="Function Operator">,</a> <a id="1737" href="Categories.Functor.Properties.html#1721" class="Bound">B</a> <a id="1739" href="Categories.Category.html#502" class="Function Operator">]</a><a id="1740" class="Symbol">}</a> <a id="1742" class="Symbol">{</a><a id="1743" href="Categories.Functor.Properties.html#1743" class="Bound">g</a> <a id="1745" class="Symbol">:</a> <a id="1747" href="Categories.Functor.Properties.html#1709" class="Bound">D</a> <a id="1749" href="Categories.Category.html#502" class="Function Operator">[</a> <a id="1751" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="1754" href="Categories.Functor.Properties.html#1721" class="Bound">B</a> <a id="1756" href="Categories.Category.html#502" class="Function Operator">,</a> <a id="1758" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="1761" href="Categories.Functor.Properties.html#1719" class="Bound">A</a> <a id="1763" href="Categories.Category.html#502" class="Function Operator">]</a><a id="1764" class="Symbol">}</a> <a id="1766" class="Symbol"></a> <a id="1768" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="1772" href="Categories.Functor.Properties.html#1709" class="Bound">D</a> <a id="1774" class="Symbol">(</a><a id="1775" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="1778" href="Categories.Functor.Properties.html#1725" class="Bound">f</a><a id="1779" class="Symbol">)</a> <a id="1781" href="Categories.Functor.Properties.html#1743" class="Bound">g</a> <a id="1783" class="Symbol"></a> <a id="1785" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="1787" class="Symbol">(</a><a id="1788" href="Categories.Functor.Properties.html#1701" class="Bound">C</a> <a id="1790" href="Categories.Category.html#502" class="Function Operator">[</a> <a id="1792" href="Categories.Functor.Properties.html#1721" class="Bound">B</a> <a id="1794" href="Categories.Category.html#502" class="Function Operator">,</a> <a id="1796" href="Categories.Functor.Properties.html#1719" class="Bound">A</a> <a id="1798" href="Categories.Category.html#502" class="Function Operator">]</a><a id="1799" class="Symbol">)</a> <a id="1801" class="Symbol">(</a><a id="1802" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="1806" href="Categories.Functor.Properties.html#1701" class="Bound">C</a> <a id="1808" href="Categories.Functor.Properties.html#1725" class="Bound">f</a><a id="1809" class="Symbol">)</a>
<a id="1813" class="Keyword">where</a>
<a id="1823" class="Keyword">open</a> <a id="1828" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="1836" href="Categories.Functor.Properties.html#1712" class="Bound">F</a>
<a id="1842" class="Keyword">open</a> <a id="1847" href="Categories.Morphism.html" class="Module">Morphism</a>
<a id="1857" class="Comment">-- a series of [ Functor ]-respects-Thing combinators (with respects -&gt; resp)</a>
<a id="1936" class="Keyword">module</a> <a id="1943" href="Categories.Functor.Properties.html#1943" class="Module">_</a> <a id="1945" class="Symbol">(</a><a id="1946" href="Categories.Functor.Properties.html#1946" class="Bound">F</a> <a id="1948" class="Symbol">:</a> <a id="1950" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1958" href="Categories.Functor.Properties.html#847" class="Generalizable">C</a> <a id="1960" href="Categories.Functor.Properties.html#849" class="Generalizable">D</a><a id="1961" class="Symbol">)</a> <a id="1963" class="Keyword">where</a>
<a id="1971" class="Keyword">private</a>
<a id="1983" class="Keyword">module</a> <a id="1990" href="Categories.Functor.Properties.html#1990" class="Module">C</a> <a id="1992" class="Symbol">=</a> <a id="1994" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="2003" href="Categories.Functor.Properties.html#1958" class="Bound">C</a>
<a id="2009" class="Keyword">module</a> <a id="2016" href="Categories.Functor.Properties.html#2016" class="Module">D</a> <a id="2018" class="Symbol">=</a> <a id="2020" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="2029" href="Categories.Functor.Properties.html#1960" class="Bound">D</a>
<a id="2035" class="Keyword">module</a> <a id="2042" href="Categories.Functor.Properties.html#2042" class="Module">IsoC</a> <a id="2047" class="Symbol">=</a> <a id="2049" href="Categories.Morphism.IsoEquiv.html" class="Module">IsoEquiv</a> <a id="2058" href="Categories.Functor.Properties.html#1958" class="Bound">C</a>
<a id="2064" class="Keyword">module</a> <a id="2071" href="Categories.Functor.Properties.html#2071" class="Module">IsoD</a> <a id="2076" class="Symbol">=</a> <a id="2078" href="Categories.Morphism.IsoEquiv.html" class="Module">IsoEquiv</a> <a id="2087" href="Categories.Functor.Properties.html#1960" class="Bound">D</a>
<a id="2091" class="Keyword">open</a> <a id="2096" href="Categories.Functor.Properties.html#1990" class="Module">C</a> <a id="2098" class="Keyword">hiding</a> <a id="2105" class="Symbol">(</a><a id="2106" href="Categories.Category.Core.html#656" class="Function Operator">_∘_</a><a id="2109" class="Symbol">)</a>
<a id="2113" class="Keyword">open</a> <a id="2118" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="2126" href="Categories.Functor.Properties.html#1946" class="Bound">F</a>
<a id="2130" class="Keyword">open</a> <a id="2135" href="Categories.Morphism.html" class="Module">Morphism</a>
<a id="2147" class="Keyword">private</a>
<a id="2159" class="Keyword">variable</a>
<a id="2174" href="Categories.Functor.Properties.html#2174" class="Generalizable">A</a> <a id="2176" href="Categories.Functor.Properties.html#2176" class="Generalizable">B</a> <a id="2178" href="Categories.Functor.Properties.html#2178" class="Generalizable">E</a> <a id="2180" class="Symbol">:</a> <a id="2182" href="Categories.Category.Core.html#559" class="Function">Obj</a>
<a id="2192" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a> <a id="2194" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a> <a id="2196" href="Categories.Functor.Properties.html#2196" class="Generalizable">h</a> <a id="2198" href="Categories.Functor.Properties.html#2198" class="Generalizable">i</a> <a id="2200" class="Symbol">:</a> <a id="2202" href="Categories.Functor.Properties.html#2174" class="Generalizable">A</a> <a id="2204" href="Categories.Category.Core.html#575" class="Function Operator"></a> <a id="2206" href="Categories.Functor.Properties.html#2176" class="Generalizable">B</a>
<a id="2211" href="Categories.Functor.Properties.html#2211" class="Function Operator">[_]-resp-∘</a> <a id="2222" class="Symbol">:</a> <a id="2224" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2226" href="Categories.Category.html#609" class="Function Operator">[</a> <a id="2228" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2230" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2232" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a> <a id="2234" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2236" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a> <a id="2238" href="Categories.Category.html#700" class="Function Operator">]</a> <a id="2240" href="Categories.Category.html#609" class="Function Operator"></a> <a id="2242" href="Categories.Functor.Properties.html#2196" class="Generalizable">h</a> <a id="2244" href="Categories.Category.html#609" class="Function Operator">]</a> <a id="2246" class="Symbol"></a> <a id="2248" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="2250" href="Categories.Category.html#609" class="Function Operator">[</a> <a id="2252" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="2254" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2256" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2259" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a> <a id="2261" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2263" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2266" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a> <a id="2268" href="Categories.Category.html#700" class="Function Operator">]</a> <a id="2270" href="Categories.Category.html#609" class="Function Operator"></a> <a id="2272" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2275" href="Categories.Functor.Properties.html#2196" class="Generalizable">h</a> <a id="2277" href="Categories.Category.html#609" class="Function Operator">]</a>
<a id="2281" href="Categories.Functor.Properties.html#2211" class="Function Operator">[_]-resp-∘</a> <a id="2292" class="Symbol">{</a><a id="2293" class="Argument">f</a> <a id="2295" class="Symbol">=</a> <a id="2297" href="Categories.Functor.Properties.html#2297" class="Bound">f</a><a id="2298" class="Symbol">}</a> <a id="2300" class="Symbol">{</a><a id="2301" class="Argument">g</a> <a id="2303" class="Symbol">=</a> <a id="2305" href="Categories.Functor.Properties.html#2305" class="Bound">g</a><a id="2306" class="Symbol">}</a> <a id="2308" class="Symbol">{</a><a id="2309" class="Argument">h</a> <a id="2311" class="Symbol">=</a> <a id="2313" href="Categories.Functor.Properties.html#2313" class="Bound">h</a><a id="2314" class="Symbol">}</a> <a id="2316" href="Categories.Functor.Properties.html#2316" class="Bound">eq</a> <a id="2319" class="Symbol">=</a> <a id="2321" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="2331" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2334" href="Categories.Functor.Properties.html#2297" class="Bound">f</a> <a id="2336" href="Categories.Category.Core.html#656" class="Function Operator">D.∘</a> <a id="2340" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2343" href="Categories.Functor.Properties.html#2305" class="Bound">g</a> <a id="2348" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="2352" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="2365" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="2371" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2374" class="Symbol">(</a><a id="2375" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2377" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2379" href="Categories.Functor.Properties.html#2297" class="Bound">f</a> <a id="2381" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2383" href="Categories.Functor.Properties.html#2305" class="Bound">g</a> <a id="2385" href="Categories.Category.html#700" class="Function Operator">]</a><a id="2386" class="Symbol">)</a> <a id="2388" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2391" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="2400" href="Categories.Functor.Properties.html#2316" class="Bound">eq</a> <a id="2403" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="2409" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2412" href="Categories.Functor.Properties.html#2313" class="Bound">h</a> <a id="2426" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="2432" class="Keyword">where</a> <a id="2438" class="Keyword">open</a> <a id="2443" href="Categories.Category.Core.html#2462" class="Module">D.HomReasoning</a>
<a id="2461" href="Categories.Functor.Properties.html#2461" class="Function Operator">[_]-resp-square</a> <a id="2477" class="Symbol">:</a> <a id="2479" href="Categories.Category.html#884" class="Function">Definitions.CommutativeSquare</a> <a id="2509" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2511" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a> <a id="2513" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a> <a id="2515" href="Categories.Functor.Properties.html#2196" class="Generalizable">h</a> <a id="2517" href="Categories.Functor.Properties.html#2198" class="Generalizable">i</a> <a id="2519" class="Symbol"></a>
<a id="2541" href="Categories.Category.html#884" class="Function">Definitions.CommutativeSquare</a> <a id="2571" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="2573" class="Symbol">(</a><a id="2574" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2577" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a><a id="2578" class="Symbol">)</a> <a id="2580" class="Symbol">(</a><a id="2581" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2584" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a><a id="2585" class="Symbol">)</a> <a id="2587" class="Symbol">(</a><a id="2588" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2591" href="Categories.Functor.Properties.html#2196" class="Generalizable">h</a><a id="2592" class="Symbol">)</a> <a id="2594" class="Symbol">(</a><a id="2595" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2598" href="Categories.Functor.Properties.html#2198" class="Generalizable">i</a><a id="2599" class="Symbol">)</a>
<a id="2603" href="Categories.Functor.Properties.html#2461" class="Function Operator">[_]-resp-square</a> <a id="2619" class="Symbol">{</a><a id="2620" class="Argument">f</a> <a id="2622" class="Symbol">=</a> <a id="2624" href="Categories.Functor.Properties.html#2624" class="Bound">f</a><a id="2625" class="Symbol">}</a> <a id="2627" class="Symbol">{</a><a id="2628" class="Argument">g</a> <a id="2630" class="Symbol">=</a> <a id="2632" href="Categories.Functor.Properties.html#2632" class="Bound">g</a><a id="2633" class="Symbol">}</a> <a id="2635" class="Symbol">{</a><a id="2636" class="Argument">h</a> <a id="2638" class="Symbol">=</a> <a id="2640" href="Categories.Functor.Properties.html#2640" class="Bound">h</a><a id="2641" class="Symbol">}</a> <a id="2643" class="Symbol">{</a><a id="2644" class="Argument">i</a> <a id="2646" class="Symbol">=</a> <a id="2648" href="Categories.Functor.Properties.html#2648" class="Bound">i</a><a id="2649" class="Symbol">}</a> <a id="2651" href="Categories.Functor.Properties.html#2651" class="Bound">sq</a> <a id="2654" class="Symbol">=</a> <a id="2656" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="2666" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="2668" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2670" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2673" href="Categories.Functor.Properties.html#2640" class="Bound">h</a> <a id="2675" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2677" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2680" href="Categories.Functor.Properties.html#2624" class="Bound">f</a> <a id="2682" href="Categories.Category.html#700" class="Function Operator">]</a> <a id="2685" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="2689" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="2702" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="2708" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2711" class="Symbol">(</a><a id="2712" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2714" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2716" href="Categories.Functor.Properties.html#2640" class="Bound">h</a> <a id="2718" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2720" href="Categories.Functor.Properties.html#2624" class="Bound">f</a> <a id="2722" href="Categories.Category.html#700" class="Function Operator">]</a><a id="2723" class="Symbol">)</a> <a id="2727" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2730" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="2739" href="Categories.Functor.Properties.html#2651" class="Bound">sq</a> <a id="2742" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="2748" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2751" class="Symbol">(</a><a id="2752" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2754" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2756" href="Categories.Functor.Properties.html#2648" class="Bound">i</a> <a id="2758" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2760" href="Categories.Functor.Properties.html#2632" class="Bound">g</a> <a id="2762" href="Categories.Category.html#700" class="Function Operator">]</a><a id="2763" class="Symbol">)</a> <a id="2767" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2770" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="2783" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="2789" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="2791" href="Categories.Category.html#700" class="Function Operator">[</a> <a id="2793" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2796" href="Categories.Functor.Properties.html#2648" class="Bound">i</a> <a id="2798" href="Categories.Category.html#700" class="Function Operator"></a> <a id="2800" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2803" href="Categories.Functor.Properties.html#2632" class="Bound">g</a> <a id="2805" href="Categories.Category.html#700" class="Function Operator">]</a> <a id="2808" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="2814" class="Keyword">where</a> <a id="2820" class="Keyword">open</a> <a id="2825" href="Categories.Category.Core.html#2462" class="Module">D.HomReasoning</a>
<a id="2843" href="Categories.Functor.Properties.html#2843" class="Function Operator">[_]-resp-Iso</a> <a id="2856" class="Symbol">:</a> <a id="2858" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="2862" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="2864" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a> <a id="2866" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a> <a id="2868" class="Symbol"></a> <a id="2870" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="2874" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="2876" class="Symbol">(</a><a id="2877" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2880" href="Categories.Functor.Properties.html#2192" class="Generalizable">f</a><a id="2881" class="Symbol">)</a> <a id="2883" class="Symbol">(</a><a id="2884" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2887" href="Categories.Functor.Properties.html#2194" class="Generalizable">g</a><a id="2888" class="Symbol">)</a>
<a id="2892" href="Categories.Functor.Properties.html#2843" class="Function Operator">[_]-resp-Iso</a> <a id="2905" class="Symbol">{</a><a id="2906" class="Argument">f</a> <a id="2908" class="Symbol">=</a> <a id="2910" href="Categories.Functor.Properties.html#2910" class="Bound">f</a><a id="2911" class="Symbol">}</a> <a id="2913" class="Symbol">{</a><a id="2914" class="Argument">g</a> <a id="2916" class="Symbol">=</a> <a id="2918" href="Categories.Functor.Properties.html#2918" class="Bound">g</a><a id="2919" class="Symbol">}</a> <a id="2921" href="Categories.Functor.Properties.html#2921" class="Bound">iso</a> <a id="2925" class="Symbol">=</a> <a id="2927" class="Keyword">record</a>
<a id="2938" class="Symbol">{</a> <a id="2940" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="2945" class="Symbol">=</a> <a id="2947" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="2959" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2962" href="Categories.Functor.Properties.html#2918" class="Bound">g</a> <a id="2964" href="Categories.Category.Core.html#656" class="Function Operator">D.∘</a> <a id="2968" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2971" href="Categories.Functor.Properties.html#2910" class="Bound">f</a> <a id="2976" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="2979" href="Categories.Functor.Properties.html#2211" class="Function Operator">[</a> <a id="2981" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="2986" href="Categories.Functor.Properties.html#2211" class="Function Operator">]-resp-∘</a> <a id="2995" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="3003" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3006" href="Categories.Category.Core.html#630" class="Function">C.id</a> <a id="3020" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3023" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="3032" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="3040" href="Categories.Category.Core.html#630" class="Function">D.id</a> <a id="3057" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="3063" class="Symbol">;</a> <a id="3065" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="3070" class="Symbol">=</a> <a id="3072" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="3084" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3087" href="Categories.Functor.Properties.html#2910" class="Bound">f</a> <a id="3089" href="Categories.Category.Core.html#656" class="Function Operator">D.∘</a> <a id="3093" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3096" href="Categories.Functor.Properties.html#2918" class="Bound">g</a> <a id="3101" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3104" href="Categories.Functor.Properties.html#2211" class="Function Operator">[</a> <a id="3106" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="3111" href="Categories.Functor.Properties.html#2211" class="Function Operator">]-resp-∘</a> <a id="3120" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="3128" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3131" href="Categories.Category.Core.html#630" class="Function">C.id</a> <a id="3145" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3148" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="3157" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="3165" href="Categories.Category.Core.html#630" class="Function">D.id</a> <a id="3182" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="3188" class="Symbol">}</a>
<a id="3194" class="Keyword">where</a> <a id="3200" class="Keyword">open</a> <a id="3205" href="Categories.Morphism.html#1528" class="Module">Iso</a> <a id="3209" href="Categories.Functor.Properties.html#2921" class="Bound">iso</a>
<a id="3223" class="Keyword">open</a> <a id="3228" href="Categories.Category.Core.html#2462" class="Module">D.HomReasoning</a>
<a id="3246" href="Categories.Functor.Properties.html#3246" class="Function Operator">[_]-resp-≅</a> <a id="3257" class="Symbol">:</a> <a id="3259" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="3262" href="Relation.Binary.Core.html#1577" class="Function Operator">Preserves</a> <a id="3272" href="Categories.Morphism.html#1958" class="Record Operator">_≅_</a> <a id="3276" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="3278" href="Relation.Binary.Core.html#1577" class="Function Operator"></a> <a id="3280" href="Categories.Morphism.html#1958" class="Record Operator">_≅_</a> <a id="3284" href="Categories.Functor.Properties.html#1960" class="Bound">D</a>
<a id="3288" href="Categories.Functor.Properties.html#3246" class="Function Operator">[_]-resp-≅</a> <a id="3299" href="Categories.Functor.Properties.html#3299" class="Bound">i≅j</a> <a id="3303" class="Symbol">=</a> <a id="3305" class="Keyword">record</a>
<a id="3316" class="Symbol">{</a> <a id="3318" href="Categories.Morphism.html#2006" class="Field">from</a> <a id="3329" class="Symbol">=</a> <a id="3331" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3334" href="Categories.Morphism.html#2006" class="Field">from</a>
<a id="3343" class="Symbol">;</a> <a id="3345" href="Categories.Morphism.html#2023" class="Field">to</a> <a id="3356" class="Symbol">=</a> <a id="3358" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3361" href="Categories.Morphism.html#2023" class="Field">to</a>
<a id="3368" class="Symbol">;</a> <a id="3370" href="Categories.Morphism.html#2040" class="Field">iso</a> <a id="3381" class="Symbol">=</a> <a id="3383" href="Categories.Functor.Properties.html#2843" class="Function Operator">[</a> <a id="3385" href="Categories.Morphism.html#2040" class="Field">iso</a> <a id="3389" href="Categories.Functor.Properties.html#2843" class="Function Operator">]-resp-Iso</a>
<a id="3404" class="Symbol">}</a>
<a id="3410" class="Keyword">where</a> <a id="3416" class="Keyword">open</a> <a id="3421" href="Categories.Morphism.html#1958" class="Module Operator">_≅_</a> <a id="3425" href="Categories.Functor.Properties.html#3299" class="Bound">i≅j</a>
<a id="3432" href="Categories.Functor.Properties.html#3432" class="Function Operator">[_]-resp-≃</a> <a id="3443" class="Symbol">:</a> <a id="3445" class="Symbol"></a> <a id="3447" class="Symbol">{</a><a id="3448" href="Categories.Functor.Properties.html#3448" class="Bound">f</a> <a id="3450" href="Categories.Functor.Properties.html#3450" class="Bound">g</a> <a id="3452" class="Symbol">:</a> <a id="3455" href="Categories.Morphism.html#1958" class="Record Operator">_≅_</a> <a id="3459" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="3461" href="Categories.Functor.Properties.html#2174" class="Generalizable">A</a> <a id="3463" href="Categories.Functor.Properties.html#2176" class="Generalizable">B</a><a id="3464" class="Symbol">}</a> <a id="3466" class="Symbol"></a> <a id="3468" href="Categories.Functor.Properties.html#3448" class="Bound">f</a> <a id="3470" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">IsoC.≃</a> <a id="3477" href="Categories.Functor.Properties.html#3450" class="Bound">g</a> <a id="3479" class="Symbol"></a> <a id="3481" href="Categories.Functor.Properties.html#3246" class="Function Operator">[</a> <a id="3483" href="Categories.Functor.Properties.html#3448" class="Bound">f</a> <a id="3485" href="Categories.Functor.Properties.html#3246" class="Function Operator">]-resp-≅</a> <a id="3494" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">IsoD.≃</a> <a id="3501" href="Categories.Functor.Properties.html#3246" class="Function Operator">[</a> <a id="3503" href="Categories.Functor.Properties.html#3450" class="Bound">g</a> <a id="3505" href="Categories.Functor.Properties.html#3246" class="Function Operator">]-resp-≅</a>
<a id="3516" href="Categories.Functor.Properties.html#3432" class="Function Operator">[_]-resp-≃</a> <a id="3527" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator"></a> <a id="3529" href="Categories.Functor.Properties.html#3529" class="Bound">eq</a> <a id="3532" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator"></a> <a id="3534" class="Symbol">=</a> <a id="3536" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator"></a> <a id="3538" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="3547" href="Categories.Functor.Properties.html#3529" class="Bound">eq</a> <a id="3550" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator"></a>
<a id="3555" href="Categories.Functor.Properties.html#3555" class="Function">homomorphismᵢ</a> <a id="3569" class="Symbol">:</a> <a id="3571" class="Symbol"></a> <a id="3573" class="Symbol">{</a><a id="3574" href="Categories.Functor.Properties.html#3574" class="Bound">f</a> <a id="3576" class="Symbol">:</a> <a id="3578" href="Categories.Morphism.html#1958" class="Record Operator">_≅_</a> <a id="3582" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="3584" href="Categories.Functor.Properties.html#2176" class="Generalizable">B</a> <a id="3586" href="Categories.Functor.Properties.html#2178" class="Generalizable">E</a><a id="3587" class="Symbol">}</a> <a id="3589" class="Symbol">{</a><a id="3590" href="Categories.Functor.Properties.html#3590" class="Bound">g</a> <a id="3592" class="Symbol">:</a> <a id="3594" href="Categories.Morphism.html#1958" class="Record Operator">_≅_</a> <a id="3598" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="3600" href="Categories.Functor.Properties.html#2174" class="Generalizable">A</a> <a id="3602" href="Categories.Functor.Properties.html#2176" class="Generalizable">B</a><a id="3603" class="Symbol">}</a> <a id="3605" class="Symbol"></a> <a id="3607" href="Categories.Functor.Properties.html#3246" class="Function Operator">[</a> <a id="3609" href="Categories.Category.Core.html#656" class="Function Operator">_∘ᵢ_</a> <a id="3614" href="Categories.Functor.Properties.html#1958" class="Bound">C</a> <a id="3616" href="Categories.Functor.Properties.html#3574" class="Bound">f</a> <a id="3618" href="Categories.Functor.Properties.html#3590" class="Bound">g</a> <a id="3620" href="Categories.Functor.Properties.html#3246" class="Function Operator">]-resp-≅</a> <a id="3629" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">IsoD.≃</a> <a id="3636" class="Symbol">(</a><a id="3637" href="Categories.Category.Core.html#656" class="Function Operator">_∘ᵢ_</a> <a id="3642" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="3644" href="Categories.Functor.Properties.html#3246" class="Function Operator">[</a> <a id="3646" href="Categories.Functor.Properties.html#3574" class="Bound">f</a> <a id="3648" href="Categories.Functor.Properties.html#3246" class="Function Operator">]-resp-≅</a> <a id="3657" href="Categories.Functor.Properties.html#3246" class="Function Operator">[</a> <a id="3659" href="Categories.Functor.Properties.html#3590" class="Bound">g</a> <a id="3661" href="Categories.Functor.Properties.html#3246" class="Function Operator">]-resp-≅</a> <a id="3670" class="Symbol">)</a>
<a id="3674" href="Categories.Functor.Properties.html#3555" class="Function">homomorphismᵢ</a> <a id="3688" class="Symbol">=</a> <a id="3690" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator"></a> <a id="3692" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="3705" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator"></a>
<a id="3710" class="Comment">-- Uses a strong version of Essential Surjectivity.</a>
<a id="3764" href="Categories.Functor.Properties.html#3764" class="Function">EssSurj×Full×Faithful⇒Invertible</a> <a id="3797" class="Symbol">:</a> <a id="3799" href="Categories.Functor.Properties.html#1453" class="Function">EssentiallySurjective</a> <a id="3821" href="Categories.Functor.Properties.html#1946" class="Bound">F</a> <a id="3823" class="Symbol"></a> <a id="3825" href="Categories.Functor.Properties.html#1132" class="Function">Full</a> <a id="3830" href="Categories.Functor.Properties.html#1946" class="Bound">F</a> <a id="3832" class="Symbol"></a> <a id="3834" href="Categories.Functor.Properties.html#987" class="Function">Faithful</a> <a id="3843" href="Categories.Functor.Properties.html#1946" class="Bound">F</a> <a id="3845" class="Symbol"></a> <a id="3847" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="3855" href="Categories.Functor.Properties.html#1960" class="Bound">D</a> <a id="3857" href="Categories.Functor.Properties.html#1958" class="Bound">C</a>
<a id="3861" href="Categories.Functor.Properties.html#3764" class="Function">EssSurj×Full×Faithful⇒Invertible</a> <a id="3894" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="3899" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="3904" href="Categories.Functor.Properties.html#3904" class="Bound">faith</a> <a id="3910" class="Symbol">=</a> <a id="3912" class="Keyword">record</a>
<a id="3923" class="Symbol">{</a> <a id="3925" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="3928" class="Symbol">=</a> <a id="3930" class="Symbol">λ</a> <a id="3932" href="Categories.Functor.Properties.html#3932" class="Bound">d</a> <a id="3934" class="Symbol"></a> <a id="3936" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="3942" class="Symbol">(</a><a id="3943" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="3948" href="Categories.Functor.Properties.html#3932" class="Bound">d</a><a id="3949" class="Symbol">)</a>
<a id="3955" class="Symbol">;</a> <a id="3957" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="3960" class="Symbol">=</a> <a id="3962" class="Symbol">λ</a> <a id="3964" class="Symbol">{</a><a id="3965" href="Categories.Functor.Properties.html#3965" class="Bound">A</a><a id="3966" class="Symbol">}</a> <a id="3968" class="Symbol">{</a><a id="3969" href="Categories.Functor.Properties.html#3969" class="Bound">B</a><a id="3970" class="Symbol">}</a> <a id="3972" href="Categories.Functor.Properties.html#3972" class="Bound">f</a> <a id="3974" class="Symbol"></a>
<a id="3982" class="Keyword">let</a> <a id="3986" class="Symbol">(</a><a id="3987" href="Categories.Functor.Properties.html#3987" class="Bound">a</a> <a id="3989" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3991" href="Categories.Functor.Properties.html#3991" class="Bound">sa</a><a id="3993" class="Symbol">)</a> <a id="3995" class="Symbol">=</a> <a id="3997" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="4002" href="Categories.Functor.Properties.html#3965" class="Bound">A</a>
<a id="4014" class="Symbol">(</a><a id="4015" href="Categories.Functor.Properties.html#4015" class="Bound">b</a> <a id="4017" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4019" href="Categories.Functor.Properties.html#4019" class="Bound">sb</a><a id="4021" class="Symbol">)</a> <a id="4023" class="Symbol">=</a> <a id="4025" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="4030" href="Categories.Functor.Properties.html#3969" class="Bound">B</a>
<a id="4038" class="Keyword">in</a> <a id="4041" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="4047" class="Symbol">(</a><a id="4048" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="4053" class="Symbol">(</a><a id="4054" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4061" href="Categories.Functor.Properties.html#4019" class="Bound">sb</a> <a id="4064" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4066" href="Categories.Functor.Properties.html#3972" class="Bound">f</a> <a id="4068" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4070" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4079" href="Categories.Functor.Properties.html#3991" class="Bound">sa</a><a id="4081" class="Symbol">))</a>
<a id="4088" class="Symbol">;</a> <a id="4090" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="4099" class="Symbol">=</a> <a id="4101" class="Symbol">λ</a> <a id="4103" class="Symbol">{</a><a id="4104" href="Categories.Functor.Properties.html#4104" class="Bound">A</a><a id="4105" class="Symbol">}</a> <a id="4107" class="Symbol"></a>
<a id="4115" class="Keyword">let</a> <a id="4119" class="Symbol">(</a><a id="4120" href="Categories.Functor.Properties.html#4120" class="Bound">a</a> <a id="4122" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4124" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a><a id="4126" class="Symbol">)</a> <a id="4128" class="Symbol">=</a> <a id="4130" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="4135" href="Categories.Functor.Properties.html#4104" class="Bound">A</a>
<a id="4147" class="Symbol">(</a><a id="4148" href="Categories.Functor.Properties.html#4148" class="Bound">f</a> <a id="4150" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4152" href="Categories.Functor.Properties.html#4152" class="Bound">p</a><a id="4153" class="Symbol">)</a> <a id="4155" class="Symbol">=</a> <a id="4157" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="4162" class="Symbol">(</a><a id="4163" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4170" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a> <a id="4173" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4175" href="Categories.Category.Core.html#630" class="Function">D.id</a> <a id="4180" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4182" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4191" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a><a id="4193" class="Symbol">)</a>
<a id="4201" class="Keyword">in</a> <a id="4204" href="Categories.Functor.Properties.html#3904" class="Bound">faith</a> <a id="4210" href="Function.Base.html#1974" class="Function Operator">$</a> <a id="4212" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="4226" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="4229" href="Categories.Functor.Properties.html#4148" class="Bound">f</a> <a id="4257" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="4260" href="Categories.Functor.Properties.html#4152" class="Bound">p</a> <a id="4262" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="4272" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4279" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a> <a id="4282" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4284" href="Categories.Category.Core.html#630" class="Function">D.id</a> <a id="4289" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4291" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4300" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a> <a id="4303" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="4306" href="Categories.Category.Core.html#2734" class="Function Operator">refl⟩∘⟨</a> <a id="4314" href="Categories.Category.Core.html#1096" class="Function">D.identityˡ</a> <a id="4326" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="4336" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4343" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a> <a id="4346" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4348" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4357" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a> <a id="4367" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="4370" href="Categories.Morphism.html#1586" class="Function">_≅_.isoˡ</a> <a id="4379" href="Categories.Functor.Properties.html#4124" class="Bound">sa</a> <a id="4382" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="4392" href="Categories.Category.Core.html#630" class="Function">D.id</a> <a id="4423" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="4427" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="4436" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="4446" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="4449" href="Categories.Category.Core.html#630" class="Function">C.id</a> <a id="4477" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="4483" class="Symbol">;</a> <a id="4485" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="4498" class="Symbol">=</a> <a id="4500" class="Symbol">λ</a> <a id="4502" class="Symbol">{</a><a id="4503" href="Categories.Functor.Properties.html#4503" class="Bound">X</a><a id="4504" class="Symbol">}</a> <a id="4506" class="Symbol">{</a><a id="4507" href="Categories.Functor.Properties.html#4507" class="Bound">Y</a><a id="4508" class="Symbol">}</a> <a id="4510" class="Symbol">{</a><a id="4511" href="Categories.Functor.Properties.html#4511" class="Bound">Z</a><a id="4512" class="Symbol">}</a> <a id="4514" class="Symbol">{</a><a id="4515" href="Categories.Functor.Properties.html#4515" class="Bound">f</a><a id="4516" class="Symbol">}</a> <a id="4518" class="Symbol">{</a><a id="4519" href="Categories.Functor.Properties.html#4519" class="Bound">g</a><a id="4520" class="Symbol">}</a> <a id="4522" class="Symbol"></a>
<a id="4530" class="Keyword">let</a> <a id="4534" class="Symbol">(</a><a id="4535" href="Categories.Functor.Properties.html#4535" class="Bound">a</a> <a id="4537" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4539" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a><a id="4541" class="Symbol">)</a> <a id="4543" class="Symbol">=</a> <a id="4545" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="4550" href="Categories.Functor.Properties.html#4503" class="Bound">X</a>
<a id="4562" class="Symbol">(</a><a id="4563" href="Categories.Functor.Properties.html#4563" class="Bound">b</a> <a id="4565" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4567" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a><a id="4569" class="Symbol">)</a> <a id="4571" class="Symbol">=</a> <a id="4573" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="4578" href="Categories.Functor.Properties.html#4507" class="Bound">Y</a>
<a id="4590" class="Symbol">(</a><a id="4591" href="Categories.Functor.Properties.html#4591" class="Bound">c</a> <a id="4593" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4595" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a><a id="4597" class="Symbol">)</a> <a id="4599" class="Symbol">=</a> <a id="4601" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="4606" href="Categories.Functor.Properties.html#4511" class="Bound">Z</a>
<a id="4618" class="Symbol">(</a><a id="4619" href="Categories.Functor.Properties.html#4619" class="Bound">⟨g∘f⟩</a> <a id="4625" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4627" href="Categories.Functor.Properties.html#4627" class="Bound">p</a><a id="4628" class="Symbol">)</a> <a id="4630" class="Symbol">=</a> <a id="4632" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="4637" class="Symbol">(</a><a id="4638" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4645" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a> <a id="4648" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4650" class="Symbol">(</a><a id="4651" href="Categories.Functor.Properties.html#4519" class="Bound">g</a> <a id="4653" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4655" href="Categories.Functor.Properties.html#4515" class="Bound">f</a><a id="4656" class="Symbol">)</a> <a id="4658" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4660" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4669" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a><a id="4671" class="Symbol">)</a>
<a id="4683" class="Symbol">(</a><a id="4684" href="Categories.Functor.Properties.html#4684" class="Bound">⟨f⟩</a> <a id="4688" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4690" href="Categories.Functor.Properties.html#4690" class="Bound">q</a><a id="4691" class="Symbol">)</a> <a id="4693" class="Symbol">=</a> <a id="4695" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="4700" class="Symbol">(</a><a id="4701" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4708" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a> <a id="4711" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4713" href="Categories.Functor.Properties.html#4515" class="Bound">f</a> <a id="4715" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4717" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4726" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a><a id="4728" class="Symbol">)</a>
<a id="4740" class="Symbol">(</a><a id="4741" href="Categories.Functor.Properties.html#4741" class="Bound">⟨g⟩</a> <a id="4745" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4747" href="Categories.Functor.Properties.html#4747" class="Bound">r</a><a id="4748" class="Symbol">)</a> <a id="4750" class="Symbol">=</a> <a id="4752" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="4757" class="Symbol">(</a><a id="4758" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4765" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a> <a id="4768" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4770" href="Categories.Functor.Properties.html#4519" class="Bound">g</a> <a id="4772" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4774" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4783" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a><a id="4785" class="Symbol">)</a>
<a id="4793" class="Keyword">in</a> <a id="4796" href="Categories.Functor.Properties.html#3904" class="Bound">faith</a> <a id="4802" href="Function.Base.html#1974" class="Function Operator">$</a> <a id="4804" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="4818" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="4821" href="Categories.Functor.Properties.html#4619" class="Bound">⟨g∘f⟩</a> <a id="4883" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="4886" href="Categories.Functor.Properties.html#4627" class="Bound">p</a> <a id="4888" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="4898" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4905" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a> <a id="4908" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4910" class="Symbol">(</a><a id="4911" href="Categories.Functor.Properties.html#4519" class="Bound">g</a> <a id="4913" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4915" href="Categories.Functor.Properties.html#4515" class="Bound">f</a><a id="4916" class="Symbol">)</a> <a id="4918" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4920" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="4929" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a> <a id="4962" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="4965" href="Categories.Morphism.Reasoning.Core.html#1650" class="Function">assoc²&#39;&#39;</a> <a id="4974" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="4984" class="Symbol">(</a><a id="4985" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="4992" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a> <a id="4995" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="4997" href="Categories.Functor.Properties.html#4519" class="Bound">g</a><a id="4998" class="Symbol">)</a> <a id="5000" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5002" class="Symbol">(</a><a id="5003" href="Categories.Functor.Properties.html#4515" class="Bound">f</a> <a id="5005" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5007" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5016" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a><a id="5018" class="Symbol">)</a> <a id="5048" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="5051" href="Categories.Morphism.Reasoning.Core.html#7110" class="Function">insertInner</a> <a id="5063" class="Symbol">(</a><a id="5064" href="Categories.Morphism.html#1612" class="Function">_≅_.isoʳ</a> <a id="5073" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a><a id="5075" class="Symbol">)</a> <a id="5077" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="5087" class="Symbol">((</a><a id="5089" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5096" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a> <a id="5099" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5101" href="Categories.Functor.Properties.html#4519" class="Bound">g</a><a id="5102" class="Symbol">)</a> <a id="5104" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5106" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5115" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a><a id="5117" class="Symbol">)</a> <a id="5119" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5121" class="Symbol">(</a><a id="5122" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5129" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a> <a id="5132" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5134" href="Categories.Functor.Properties.html#4515" class="Bound">f</a> <a id="5136" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5138" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5147" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a><a id="5149" class="Symbol">)</a> <a id="5151" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="5154" href="Categories.Category.Core.html#715" class="Function">D.assoc</a> <a id="5162" href="Categories.Category.Core.html#2837" class="Function Operator">⟩∘⟨refl</a> <a id="5170" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="5180" class="Symbol">(</a><a id="5181" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5188" href="Categories.Functor.Properties.html#4595" class="Bound">sc</a> <a id="5191" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5193" href="Categories.Functor.Properties.html#4519" class="Bound">g</a> <a id="5195" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5197" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5206" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a><a id="5208" class="Symbol">)</a> <a id="5210" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5212" class="Symbol">(</a><a id="5213" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5220" href="Categories.Functor.Properties.html#4567" class="Bound">sb</a> <a id="5223" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5225" href="Categories.Functor.Properties.html#4515" class="Bound">f</a> <a id="5227" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5229" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5238" href="Categories.Functor.Properties.html#4539" class="Bound">sa</a><a id="5240" class="Symbol">)</a> <a id="5244" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="5248" class="Symbol">(</a><a id="5249" href="Categories.Functor.Properties.html#4747" class="Bound">r</a> <a id="5251" href="Categories.Category.Core.html#2634" class="Function Operator">⟩∘⟨</a> <a id="5255" href="Categories.Functor.Properties.html#4690" class="Bound">q</a> <a id="5257" class="Symbol">)</a> <a id="5259" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="5269" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="5272" href="Categories.Functor.Properties.html#4741" class="Bound">⟨g⟩</a> <a id="5276" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5278" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="5281" href="Categories.Functor.Properties.html#4684" class="Bound">⟨f⟩</a> <a id="5335" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="5339" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="5352" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="5362" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="5365" class="Symbol">(</a><a id="5366" href="Categories.Functor.Properties.html#4741" class="Bound">⟨g⟩</a> <a id="5370" href="Categories.Category.Core.html#656" class="Function Operator">C.∘</a> <a id="5374" href="Categories.Functor.Properties.html#4684" class="Bound">⟨f⟩</a><a id="5377" class="Symbol">)</a> <a id="5428" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="5434" class="Symbol">;</a> <a id="5436" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="5445" class="Symbol">=</a> <a id="5447" class="Symbol">λ</a> <a id="5449" class="Symbol">{</a><a id="5450" href="Categories.Functor.Properties.html#5450" class="Bound">X</a><a id="5451" class="Symbol">}</a> <a id="5453" class="Symbol">{</a><a id="5454" href="Categories.Functor.Properties.html#5454" class="Bound">Y</a><a id="5455" class="Symbol">}</a> <a id="5457" class="Symbol">{</a><a id="5458" href="Categories.Functor.Properties.html#5458" class="Bound">f</a><a id="5459" class="Symbol">}</a> <a id="5461" class="Symbol">{</a><a id="5462" href="Categories.Functor.Properties.html#5462" class="Bound">g</a><a id="5463" class="Symbol">}</a> <a id="5465" href="Categories.Functor.Properties.html#5465" class="Bound">f≈g</a> <a id="5469" class="Symbol"></a>
<a id="5477" class="Keyword">let</a> <a id="5481" href="Categories.Functor.Properties.html#5481" class="Bound">sa</a> <a id="5484" class="Symbol">=</a> <a id="5486" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="5492" class="Symbol">(</a><a id="5493" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="5498" href="Categories.Functor.Properties.html#5450" class="Bound">X</a><a id="5499" class="Symbol">)</a>
<a id="5511" href="Categories.Functor.Properties.html#5511" class="Bound">sb</a> <a id="5514" class="Symbol">=</a> <a id="5516" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="5522" class="Symbol">(</a><a id="5523" href="Categories.Functor.Properties.html#3894" class="Bound">surj</a> <a id="5528" href="Categories.Functor.Properties.html#5454" class="Bound">Y</a><a id="5529" class="Symbol">)</a>
<a id="5541" class="Symbol">(</a><a id="5542" href="Categories.Functor.Properties.html#5542" class="Bound">⟨f⟩</a> <a id="5546" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5548" href="Categories.Functor.Properties.html#5548" class="Bound">p</a><a id="5549" class="Symbol">)</a> <a id="5551" class="Symbol">=</a> <a id="5553" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="5558" class="Symbol">(</a><a id="5559" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5566" href="Categories.Functor.Properties.html#5511" class="Bound">sb</a> <a id="5569" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5571" href="Categories.Functor.Properties.html#5458" class="Bound">f</a> <a id="5573" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5575" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5584" href="Categories.Functor.Properties.html#5481" class="Bound">sa</a><a id="5586" class="Symbol">)</a>
<a id="5598" class="Symbol">(</a><a id="5599" href="Categories.Functor.Properties.html#5599" class="Bound">⟨g⟩</a> <a id="5603" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5605" href="Categories.Functor.Properties.html#5605" class="Bound">q</a><a id="5606" class="Symbol">)</a> <a id="5608" class="Symbol">=</a> <a id="5610" href="Categories.Functor.Properties.html#3899" class="Bound">full</a> <a id="5615" class="Symbol">(</a><a id="5616" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5623" href="Categories.Functor.Properties.html#5511" class="Bound">sb</a> <a id="5626" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5628" href="Categories.Functor.Properties.html#5462" class="Bound">g</a> <a id="5630" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5632" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5641" href="Categories.Functor.Properties.html#5481" class="Bound">sa</a><a id="5643" class="Symbol">)</a>
<a id="5651" class="Keyword">in</a> <a id="5654" href="Categories.Functor.Properties.html#3904" class="Bound">faith</a> <a id="5660" href="Function.Base.html#1974" class="Function Operator">$</a> <a id="5662" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="5676" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="5679" href="Categories.Functor.Properties.html#5542" class="Bound">⟨f⟩</a> <a id="5704" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="5707" href="Categories.Functor.Properties.html#5548" class="Bound">p</a> <a id="5709" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="5719" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5726" href="Categories.Functor.Properties.html#5511" class="Bound">sb</a> <a id="5729" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5731" href="Categories.Functor.Properties.html#5458" class="Bound">f</a> <a id="5733" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5735" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5744" href="Categories.Functor.Properties.html#5481" class="Bound">sa</a> <a id="5747" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="5750" href="Categories.Category.Core.html#2734" class="Function Operator">refl⟩∘⟨</a> <a id="5758" href="Categories.Functor.Properties.html#5465" class="Bound">f≈g</a> <a id="5762" href="Categories.Category.Core.html#2837" class="Function Operator">⟩∘⟨refl</a> <a id="5770" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="5780" href="Categories.Morphism.html#2023" class="Field">_≅_.to</a> <a id="5787" href="Categories.Functor.Properties.html#5511" class="Bound">sb</a> <a id="5790" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5792" href="Categories.Functor.Properties.html#5462" class="Bound">g</a> <a id="5794" href="Categories.Category.Core.html#656" class="Function Operator"></a> <a id="5796" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="5805" href="Categories.Functor.Properties.html#5481" class="Bound">sa</a> <a id="5808" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="5812" href="Categories.Functor.Properties.html#5605" class="Bound">q</a> <a id="5814" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="5824" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="5827" href="Categories.Functor.Properties.html#5599" class="Bound">⟨g⟩</a> <a id="5852" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="5858" class="Symbol">}</a>
<a id="5864" class="Keyword">where</a>
<a id="5876" class="Keyword">open</a> <a id="5881" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="5890" href="Categories.Functor.Properties.html#1960" class="Bound">D</a>
<a id="5898" class="Keyword">open</a> <a id="5903" href="Categories.Category.Core.html#2462" class="Module">D.HomReasoning</a>
<a id="5924" class="Keyword">open</a> <a id="5929" href="Categories.Morphism.Reasoning.html" class="Module">Reas</a> <a id="5934" href="Categories.Functor.Properties.html#1960" class="Bound">D</a>
<a id="5937" class="Comment">-- Functor Composition is Associative and the unit laws are found in</a>
<a id="6006" class="Comment">-- NaturalTransformation.NaturalIsomorphism, reified as associator, unitorˡ and unitorʳ.</a>
</pre></body></html>