mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
118 lines
37 KiB
HTML
118 lines
37 KiB
HTML
|
<!DOCTYPE HTML>
|
|||
|
<html><head><meta charset="utf-8"><title>Categories.Morphism.IsoEquiv</title><link rel="stylesheet" href="Agda.css"></head><body><pre class="Agda"><a id="1" class="Symbol">{-#</a> <a id="5" class="Keyword">OPTIONS</a> <a id="13" class="Pragma">--without-K</a> <a id="25" class="Pragma">--safe</a> <a id="32" class="Symbol">#-}</a>
|
|||
|
|
|||
|
<a id="37" class="Keyword">open</a> <a id="42" class="Keyword">import</a> <a id="49" href="Categories.Category.html" class="Module">Categories.Category</a>
|
|||
|
|
|||
|
<a id="70" class="Keyword">module</a> <a id="77" href="Categories.Morphism.IsoEquiv.html" class="Module">Categories.Morphism.IsoEquiv</a> <a id="106" class="Symbol">{</a><a id="107" href="Categories.Morphism.IsoEquiv.html#107" class="Bound">o</a> <a id="109" href="Categories.Morphism.IsoEquiv.html#109" class="Bound">ℓ</a> <a id="111" href="Categories.Morphism.IsoEquiv.html#111" class="Bound">e</a><a id="112" class="Symbol">}</a> <a id="114" class="Symbol">(</a><a id="115" href="Categories.Morphism.IsoEquiv.html#115" class="Bound">𝒞</a> <a id="117" class="Symbol">:</a> <a id="119" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="128" href="Categories.Morphism.IsoEquiv.html#107" class="Bound">o</a> <a id="130" href="Categories.Morphism.IsoEquiv.html#109" class="Bound">ℓ</a> <a id="132" href="Categories.Morphism.IsoEquiv.html#111" class="Bound">e</a><a id="133" class="Symbol">)</a> <a id="135" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="142" class="Keyword">open</a> <a id="147" class="Keyword">import</a> <a id="154" href="Level.html" class="Module">Level</a>
|
|||
|
<a id="160" class="Keyword">open</a> <a id="165" class="Keyword">import</a> <a id="172" href="Function.html" class="Module">Function</a> <a id="181" class="Keyword">using</a> <a id="187" class="Symbol">(</a><a id="188" href="Function.Base.html#1563" class="Function">flip</a><a id="192" class="Symbol">;</a> <a id="194" href="Function.Base.html#6294" class="Function Operator">_on_</a><a id="198" class="Symbol">)</a>
|
|||
|
<a id="200" class="Keyword">open</a> <a id="205" class="Keyword">import</a> <a id="212" href="Relation.Binary.html" class="Module">Relation.Binary</a> <a id="228" class="Keyword">hiding</a> <a id="235" class="Symbol">(</a><a id="236" href="Relation.Binary.Core.html#1263" class="Function Operator">_⇒_</a><a id="239" class="Symbol">)</a>
|
|||
|
<a id="241" class="Keyword">import</a> <a id="248" href="Relation.Binary.Construct.On.html" class="Module">Relation.Binary.Construct.On</a> <a id="277" class="Symbol">as</a> <a id="280" class="Module">On</a>
|
|||
|
|
|||
|
<a id="284" class="Keyword">open</a> <a id="289" class="Keyword">import</a> <a id="296" href="Categories.Morphism.html" class="Module">Categories.Morphism</a> <a id="316" href="Categories.Morphism.IsoEquiv.html#115" class="Bound">𝒞</a>
|
|||
|
|
|||
|
<a id="319" class="Keyword">open</a> <a id="324" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="333" href="Categories.Morphism.IsoEquiv.html#115" class="Bound">𝒞</a>
|
|||
|
|
|||
|
<a id="336" class="Keyword">private</a>
|
|||
|
<a id="346" class="Keyword">variable</a>
|
|||
|
<a id="359" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="361" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a> <a id="363" href="Categories.Morphism.IsoEquiv.html#363" class="Generalizable">C</a> <a id="365" class="Symbol">:</a> <a id="367" href="Categories.Category.Core.html#559" class="Field">Obj</a>
|
|||
|
|
|||
|
<a id="372" class="Comment">-- Two lemmas to set things up: if they exist, inverses are unique.</a>
|
|||
|
|
|||
|
<a id="to-unique"></a><a id="441" href="Categories.Morphism.IsoEquiv.html#441" class="Function">to-unique</a> <a id="451" class="Symbol">:</a> <a id="453" class="Symbol">∀</a> <a id="455" class="Symbol">{</a><a id="456" href="Categories.Morphism.IsoEquiv.html#456" class="Bound">f₁</a> <a id="459" href="Categories.Morphism.IsoEquiv.html#459" class="Bound">f₂</a> <a id="462" class="Symbol">:</a> <a id="464" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="466" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="468" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="469" class="Symbol">}</a> <a id="471" class="Symbol">{</a><a id="472" href="Categories.Morphism.IsoEquiv.html#472" class="Bound">g₁</a> <a id="475" href="Categories.Morphism.IsoEquiv.html#475" class="Bound">g₂</a><a id="477" class="Symbol">}</a> <a id="479" class="Symbol">→</a>
|
|||
|
<a id="493" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="497" href="Categories.Morphism.IsoEquiv.html#456" class="Bound">f₁</a> <a id="500" href="Categories.Morphism.IsoEquiv.html#472" class="Bound">g₁</a> <a id="503" class="Symbol">→</a> <a id="505" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="509" href="Categories.Morphism.IsoEquiv.html#459" class="Bound">f₂</a> <a id="512" href="Categories.Morphism.IsoEquiv.html#475" class="Bound">g₂</a> <a id="515" class="Symbol">→</a> <a id="517" href="Categories.Morphism.IsoEquiv.html#456" class="Bound">f₁</a> <a id="520" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="522" href="Categories.Morphism.IsoEquiv.html#459" class="Bound">f₂</a> <a id="525" class="Symbol">→</a> <a id="527" href="Categories.Morphism.IsoEquiv.html#472" class="Bound">g₁</a> <a id="530" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="532" href="Categories.Morphism.IsoEquiv.html#475" class="Bound">g₂</a>
|
|||
|
<a id="535" href="Categories.Morphism.IsoEquiv.html#441" class="Function">to-unique</a> <a id="545" class="Symbol">{_}</a> <a id="549" class="Symbol">{_}</a> <a id="553" class="Symbol">{</a><a id="554" href="Categories.Morphism.IsoEquiv.html#554" class="Bound">f₁</a><a id="556" class="Symbol">}</a> <a id="558" class="Symbol">{</a><a id="559" href="Categories.Morphism.IsoEquiv.html#559" class="Bound">f₂</a><a id="561" class="Symbol">}</a> <a id="563" class="Symbol">{</a><a id="564" href="Categories.Morphism.IsoEquiv.html#564" class="Bound">g₁</a><a id="566" class="Symbol">}</a> <a id="568" class="Symbol">{</a><a id="569" href="Categories.Morphism.IsoEquiv.html#569" class="Bound">g₂</a><a id="571" class="Symbol">}</a> <a id="573" href="Categories.Morphism.IsoEquiv.html#573" class="Bound">iso₁</a> <a id="578" href="Categories.Morphism.IsoEquiv.html#578" class="Bound">iso₂</a> <a id="583" href="Categories.Morphism.IsoEquiv.html#583" class="Bound">hyp</a> <a id="587" class="Symbol">=</a> <a id="589" href="Relation.Binary.Reasoning.Base.Single.html#1925" class="Function Operator">begin</a>
|
|||
|
<a id="612" href="Categories.Morphism.IsoEquiv.html#564" class="Bound">g₁</a> <a id="617" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">≈˘⟨</a> <a id="621" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="631" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">⟩</a>
|
|||
|
<a id="638" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="648" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="650" href="Categories.Morphism.IsoEquiv.html#564" class="Bound">g₁</a> <a id="655" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">≈˘⟨</a> <a id="659" href="Categories.Category.Core.html#1597" class="Function">∘-resp-≈ˡ</a> <a id="669" href="Categories.Morphism.html#1586" class="Function">Iso₂.isoˡ</a> <a id="679" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">⟩</a>
|
|||
|
<a id="685" class="Symbol">(</a><a id="686" href="Categories.Morphism.IsoEquiv.html#569" class="Bound">g₂</a> <a id="689" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="692" href="Categories.Morphism.IsoEquiv.html#559" class="Bound">f₂</a><a id="694" class="Symbol">)</a> <a id="696" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="698" href="Categories.Morphism.IsoEquiv.html#564" class="Bound">g₁</a> <a id="703" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">≈˘⟨</a> <a id="707" href="Categories.Category.Core.html#1597" class="Function">∘-resp-≈ˡ</a> <a id="717" class="Symbol">(</a><a id="718" href="Categories.Category.Core.html#1706" class="Function">∘-resp-≈ʳ</a> <a id="728" href="Categories.Morphism.IsoEquiv.html#583" class="Bound">hyp</a><a id="731" class="Symbol">)</a> <a id="733" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">⟩</a>
|
|||
|
<a id="739" class="Symbol">(</a><a id="740" href="Categories.Morphism.IsoEquiv.html#569" class="Bound">g₂</a> <a id="743" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="746" href="Categories.Morphism.IsoEquiv.html#554" class="Bound">f₁</a><a id="748" class="Symbol">)</a> <a id="750" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="752" href="Categories.Morphism.IsoEquiv.html#564" class="Bound">g₁</a> <a id="757" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">≈⟨</a> <a id="760" href="Categories.Category.Core.html#715" class="Field">assoc</a> <a id="766" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="773" href="Categories.Morphism.IsoEquiv.html#569" class="Bound">g₂</a> <a id="776" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="778" class="Symbol">(</a><a id="779" href="Categories.Morphism.IsoEquiv.html#554" class="Bound">f₁</a> <a id="783" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="785" href="Categories.Morphism.IsoEquiv.html#564" class="Bound">g₁</a><a id="787" class="Symbol">)</a> <a id="790" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">≈⟨</a> <a id="793" href="Categories.Category.Core.html#1706" class="Function">∘-resp-≈ʳ</a> <a id="803" href="Categories.Morphism.html#1612" class="Function">Iso₁.isoʳ</a> <a id="813" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="820" href="Categories.Morphism.IsoEquiv.html#569" class="Bound">g₂</a> <a id="823" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="826" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="837" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">≈⟨</a> <a id="840" href="Categories.Category.Core.html#1145" class="Field">identityʳ</a> <a id="850" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="857" href="Categories.Morphism.IsoEquiv.html#569" class="Bound">g₂</a> <a id="874" href="Relation.Binary.Reasoning.Base.Single.html#2564" class="Function Operator">∎</a>
|
|||
|
<a id="878" class="Keyword">where</a>
|
|||
|
<a id="888" class="Keyword">open</a> <a id="893" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
|
|||
|
<a id="910" class="Keyword">module</a> <a id="917" href="Categories.Morphism.IsoEquiv.html#917" class="Module">Iso₁</a> <a id="922" class="Symbol">=</a> <a id="924" href="Categories.Morphism.html#1528" class="Module">Iso</a> <a id="928" href="Categories.Morphism.IsoEquiv.html#573" class="Bound">iso₁</a>
|
|||
|
<a id="937" class="Keyword">module</a> <a id="944" href="Categories.Morphism.IsoEquiv.html#944" class="Module">Iso₂</a> <a id="949" class="Symbol">=</a> <a id="951" href="Categories.Morphism.html#1528" class="Module">Iso</a> <a id="955" href="Categories.Morphism.IsoEquiv.html#578" class="Bound">iso₂</a>
|
|||
|
|
|||
|
<a id="from-unique"></a><a id="961" href="Categories.Morphism.IsoEquiv.html#961" class="Function">from-unique</a> <a id="973" class="Symbol">:</a> <a id="975" class="Symbol">∀</a> <a id="977" class="Symbol">{</a><a id="978" href="Categories.Morphism.IsoEquiv.html#978" class="Bound">f₁</a> <a id="981" href="Categories.Morphism.IsoEquiv.html#981" class="Bound">f₂</a> <a id="984" class="Symbol">:</a> <a id="986" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="988" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="990" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="991" class="Symbol">}</a> <a id="993" class="Symbol">{</a><a id="994" href="Categories.Morphism.IsoEquiv.html#994" class="Bound">g₁</a> <a id="997" href="Categories.Morphism.IsoEquiv.html#997" class="Bound">g₂</a><a id="999" class="Symbol">}</a> <a id="1001" class="Symbol">→</a>
|
|||
|
<a id="1017" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="1021" href="Categories.Morphism.IsoEquiv.html#978" class="Bound">f₁</a> <a id="1024" href="Categories.Morphism.IsoEquiv.html#994" class="Bound">g₁</a> <a id="1027" class="Symbol">→</a> <a id="1029" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="1033" href="Categories.Morphism.IsoEquiv.html#981" class="Bound">f₂</a> <a id="1036" href="Categories.Morphism.IsoEquiv.html#997" class="Bound">g₂</a> <a id="1039" class="Symbol">→</a> <a id="1041" href="Categories.Morphism.IsoEquiv.html#994" class="Bound">g₁</a> <a id="1044" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1046" href="Categories.Morphism.IsoEquiv.html#997" class="Bound">g₂</a> <a id="1049" class="Symbol">→</a> <a id="1051" href="Categories.Morphism.IsoEquiv.html#978" class="Bound">f₁</a> <a id="1054" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1056" href="Categories.Morphism.IsoEquiv.html#981" class="Bound">f₂</a>
|
|||
|
<a id="1059" href="Categories.Morphism.IsoEquiv.html#961" class="Function">from-unique</a> <a id="1071" href="Categories.Morphism.IsoEquiv.html#1071" class="Bound">iso₁</a> <a id="1076" href="Categories.Morphism.IsoEquiv.html#1076" class="Bound">iso₂</a> <a id="1081" href="Categories.Morphism.IsoEquiv.html#1081" class="Bound">hyp</a> <a id="1085" class="Symbol">=</a> <a id="1087" href="Categories.Morphism.IsoEquiv.html#441" class="Function">to-unique</a> <a id="1097" href="Categories.Morphism.IsoEquiv.html#1127" class="Function">iso₁⁻¹</a> <a id="1104" href="Categories.Morphism.IsoEquiv.html#1196" class="Function">iso₂⁻¹</a> <a id="1111" href="Categories.Morphism.IsoEquiv.html#1081" class="Bound">hyp</a>
|
|||
|
<a id="1117" class="Keyword">where</a>
|
|||
|
<a id="1127" href="Categories.Morphism.IsoEquiv.html#1127" class="Function">iso₁⁻¹</a> <a id="1134" class="Symbol">=</a> <a id="1136" class="Keyword">record</a> <a id="1143" class="Symbol">{</a> <a id="1145" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="1150" class="Symbol">=</a> <a id="1152" href="Categories.Morphism.html#1612" class="Field">Iso.isoʳ</a> <a id="1161" href="Categories.Morphism.IsoEquiv.html#1071" class="Bound">iso₁</a> <a id="1167" class="Symbol">;</a> <a id="1169" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="1174" class="Symbol">=</a> <a id="1176" href="Categories.Morphism.html#1586" class="Field">Iso.isoˡ</a> <a id="1185" href="Categories.Morphism.IsoEquiv.html#1071" class="Bound">iso₁</a> <a id="1190" class="Symbol">}</a>
|
|||
|
<a id="1196" href="Categories.Morphism.IsoEquiv.html#1196" class="Function">iso₂⁻¹</a> <a id="1203" class="Symbol">=</a> <a id="1205" class="Keyword">record</a> <a id="1212" class="Symbol">{</a> <a id="1214" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="1219" class="Symbol">=</a> <a id="1221" href="Categories.Morphism.html#1612" class="Field">Iso.isoʳ</a> <a id="1230" href="Categories.Morphism.IsoEquiv.html#1076" class="Bound">iso₂</a> <a id="1236" class="Symbol">;</a> <a id="1238" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="1243" class="Symbol">=</a> <a id="1245" href="Categories.Morphism.html#1586" class="Field">Iso.isoˡ</a> <a id="1254" href="Categories.Morphism.IsoEquiv.html#1076" class="Bound">iso₂</a> <a id="1259" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="1262" class="Comment">-- Equality of isomorphisms is just equality of the underlying morphism(s).</a>
|
|||
|
<a id="1338" class="Comment">--</a>
|
|||
|
<a id="1341" class="Comment">-- Only one equation needs to be given; the equation in the other</a>
|
|||
|
<a id="1407" class="Comment">-- direction holds automatically (by the above lemmas).</a>
|
|||
|
<a id="1463" class="Comment">--</a>
|
|||
|
<a id="1466" class="Comment">-- The reason for wrapping the underlying equality in a record at all</a>
|
|||
|
<a id="1536" class="Comment">-- is that this helps unification. Concretely, it allows Agda to</a>
|
|||
|
<a id="1602" class="Comment">-- infer the isos |i| and |j| being related in function applications</a>
|
|||
|
<a id="1671" class="Comment">-- where only the equation |i ≃ j| is passed as an explicit argument.</a>
|
|||
|
|
|||
|
<a id="1742" class="Keyword">infix</a> <a id="1748" class="Number">4</a> <a id="1750" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a>
|
|||
|
<a id="1754" class="Keyword">record</a> <a id="_≃_"></a><a id="1761" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a> <a id="1765" class="Symbol">(</a><a id="1766" href="Categories.Morphism.IsoEquiv.html#1766" class="Bound">i</a> <a id="1768" href="Categories.Morphism.IsoEquiv.html#1768" class="Bound">j</a> <a id="1770" class="Symbol">:</a> <a id="1772" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="1774" href="Categories.Morphism.html#1958" class="Record Operator">≅</a> <a id="1776" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="1777" class="Symbol">)</a> <a id="1779" class="Symbol">:</a> <a id="1781" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1785" href="Categories.Morphism.IsoEquiv.html#111" class="Bound">e</a> <a id="1787" class="Keyword">where</a>
|
|||
|
<a id="1795" class="Keyword">constructor</a> <a id="⌞_⌟"></a><a id="1807" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞_⌟</a>
|
|||
|
<a id="1813" class="Keyword">open</a> <a id="1818" href="Categories.Morphism.html#1958" class="Module Operator">_≅_</a>
|
|||
|
<a id="1824" class="Keyword">field</a> <a id="_≃_.from-≈"></a><a id="1830" href="Categories.Morphism.IsoEquiv.html#1830" class="Field">from-≈</a> <a id="1837" class="Symbol">:</a> <a id="1839" href="Categories.Morphism.html#2006" class="Field">from</a> <a id="1844" href="Categories.Morphism.IsoEquiv.html#1766" class="Bound">i</a> <a id="1846" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1848" href="Categories.Morphism.html#2006" class="Field">from</a> <a id="1853" href="Categories.Morphism.IsoEquiv.html#1768" class="Bound">j</a>
|
|||
|
|
|||
|
<a id="_≃_.to-≈"></a><a id="1858" href="Categories.Morphism.IsoEquiv.html#1858" class="Function">to-≈</a> <a id="1863" class="Symbol">:</a> <a id="1865" href="Categories.Morphism.html#2023" class="Field">to</a> <a id="1868" href="Categories.Morphism.IsoEquiv.html#1766" class="Bound">i</a> <a id="1870" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1872" href="Categories.Morphism.html#2023" class="Field">to</a> <a id="1875" href="Categories.Morphism.IsoEquiv.html#1768" class="Bound">j</a>
|
|||
|
<a id="1879" href="Categories.Morphism.IsoEquiv.html#1858" class="Function">to-≈</a> <a id="1884" class="Symbol">=</a> <a id="1886" href="Categories.Morphism.IsoEquiv.html#441" class="Function">to-unique</a> <a id="1896" class="Symbol">(</a><a id="1897" href="Categories.Morphism.html#2040" class="Field">iso</a> <a id="1901" href="Categories.Morphism.IsoEquiv.html#1766" class="Bound">i</a><a id="1902" class="Symbol">)</a> <a id="1904" class="Symbol">(</a><a id="1905" href="Categories.Morphism.html#2040" class="Field">iso</a> <a id="1909" href="Categories.Morphism.IsoEquiv.html#1768" class="Bound">j</a><a id="1910" class="Symbol">)</a> <a id="1912" href="Categories.Morphism.IsoEquiv.html#1830" class="Field">from-≈</a>
|
|||
|
|
|||
|
<a id="1920" class="Keyword">open</a> <a id="1925" href="Categories.Morphism.IsoEquiv.html#1761" class="Module Operator">_≃_</a>
|
|||
|
|
|||
|
<a id="1930" class="Keyword">module</a> <a id="1937" href="Categories.Morphism.IsoEquiv.html#1937" class="Module">_</a> <a id="1939" class="Symbol">{</a><a id="1940" href="Categories.Morphism.IsoEquiv.html#1940" class="Bound">A</a> <a id="1942" href="Categories.Morphism.IsoEquiv.html#1942" class="Bound">B</a> <a id="1944" class="Symbol">:</a> <a id="1946" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="1949" class="Symbol">}</a> <a id="1951" class="Keyword">where</a>
|
|||
|
<a id="1959" class="Keyword">open</a> <a id="1964" href="Categories.Category.Core.html#1530" class="Module">Equiv</a>
|
|||
|
|
|||
|
<a id="1973" href="Categories.Morphism.IsoEquiv.html#1973" class="Function">≃-refl</a> <a id="1980" class="Symbol">:</a> <a id="1982" href="Relation.Binary.Definitions.html#1348" class="Function">Reflexive</a> <a id="1992" class="Symbol">(</a><a id="1993" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a> <a id="1997" class="Symbol">{</a><a id="1998" href="Categories.Morphism.IsoEquiv.html#1940" class="Bound">A</a><a id="1999" class="Symbol">}</a> <a id="2001" class="Symbol">{</a><a id="2002" href="Categories.Morphism.IsoEquiv.html#1942" class="Bound">B</a><a id="2003" class="Symbol">})</a>
|
|||
|
<a id="2008" href="Categories.Morphism.IsoEquiv.html#1973" class="Function">≃-refl</a> <a id="2015" class="Symbol">=</a> <a id="2017" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="2019" href="Relation.Binary.Structures.html#1577" class="Function">refl</a> <a id="2024" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a>
|
|||
|
|
|||
|
<a id="2029" href="Categories.Morphism.IsoEquiv.html#2029" class="Function">≃-sym</a> <a id="2035" class="Symbol">:</a> <a id="2037" href="Relation.Binary.Definitions.html#1507" class="Function">Symmetric</a> <a id="2047" class="Symbol">(</a><a id="2048" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a> <a id="2052" class="Symbol">{</a><a id="2053" href="Categories.Morphism.IsoEquiv.html#1940" class="Bound">A</a><a id="2054" class="Symbol">}</a> <a id="2056" class="Symbol">{</a><a id="2057" href="Categories.Morphism.IsoEquiv.html#1942" class="Bound">B</a><a id="2058" class="Symbol">})</a>
|
|||
|
<a id="2063" href="Categories.Morphism.IsoEquiv.html#2029" class="Function">≃-sym</a> <a id="2069" class="Symbol">=</a> <a id="2071" class="Symbol">λ</a> <a id="2073" class="Keyword">where</a> <a id="2079" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="2081" href="Categories.Morphism.IsoEquiv.html#2081" class="Bound">eq</a> <a id="2084" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a> <a id="2095" class="Symbol">→</a> <a id="2097" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="2099" href="Relation.Binary.Structures.html#1603" class="Function">sym</a> <a id="2103" href="Categories.Morphism.IsoEquiv.html#2081" class="Bound">eq</a> <a id="2106" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a>
|
|||
|
|
|||
|
<a id="2111" href="Categories.Morphism.IsoEquiv.html#2111" class="Function">≃-trans</a> <a id="2119" class="Symbol">:</a> <a id="2121" href="Relation.Binary.Definitions.html#1875" class="Function">Transitive</a> <a id="2132" class="Symbol">(</a><a id="2133" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a> <a id="2137" class="Symbol">{</a><a id="2138" href="Categories.Morphism.IsoEquiv.html#1940" class="Bound">A</a><a id="2139" class="Symbol">}</a> <a id="2141" class="Symbol">{</a><a id="2142" href="Categories.Morphism.IsoEquiv.html#1942" class="Bound">B</a><a id="2143" class="Symbol">})</a>
|
|||
|
<a id="2148" href="Categories.Morphism.IsoEquiv.html#2111" class="Function">≃-trans</a> <a id="2156" class="Symbol">=</a> <a id="2158" class="Symbol">λ</a> <a id="2160" class="Keyword">where</a> <a id="2166" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="2168" href="Categories.Morphism.IsoEquiv.html#2168" class="Bound">eq₁</a> <a id="2172" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a> <a id="2174" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="2176" href="Categories.Morphism.IsoEquiv.html#2176" class="Bound">eq₂</a> <a id="2180" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a> <a id="2182" class="Symbol">→</a> <a id="2184" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="2186" href="Relation.Binary.Structures.html#1629" class="Function">trans</a> <a id="2192" href="Categories.Morphism.IsoEquiv.html#2168" class="Bound">eq₁</a> <a id="2196" href="Categories.Morphism.IsoEquiv.html#2176" class="Bound">eq₂</a> <a id="2200" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a>
|
|||
|
|
|||
|
<a id="2205" href="Categories.Morphism.IsoEquiv.html#2205" class="Function">≃-isEquivalence</a> <a id="2221" class="Symbol">:</a> <a id="2223" href="Relation.Binary.Structures.html#1531" class="Record">IsEquivalence</a> <a id="2237" class="Symbol">(</a><a id="2238" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a> <a id="2242" class="Symbol">{</a><a id="2243" href="Categories.Morphism.IsoEquiv.html#1940" class="Bound">A</a><a id="2244" class="Symbol">}</a> <a id="2246" class="Symbol">{</a><a id="2247" href="Categories.Morphism.IsoEquiv.html#1942" class="Bound">B</a><a id="2248" class="Symbol">})</a>
|
|||
|
<a id="2253" href="Categories.Morphism.IsoEquiv.html#2205" class="Function">≃-isEquivalence</a> <a id="2269" class="Symbol">=</a> <a id="2271" class="Keyword">record</a>
|
|||
|
<a id="2282" class="Symbol">{</a> <a id="2284" href="Relation.Binary.Structures.html#1577" class="Field">refl</a> <a id="2290" class="Symbol">=</a> <a id="2292" href="Categories.Morphism.IsoEquiv.html#1973" class="Function">≃-refl</a>
|
|||
|
<a id="2303" class="Symbol">;</a> <a id="2305" href="Relation.Binary.Structures.html#1603" class="Field">sym</a> <a id="2311" class="Symbol">=</a> <a id="2313" href="Categories.Morphism.IsoEquiv.html#2029" class="Function">≃-sym</a>
|
|||
|
<a id="2323" class="Symbol">;</a> <a id="2325" href="Relation.Binary.Structures.html#1629" class="Field">trans</a> <a id="2331" class="Symbol">=</a> <a id="2333" href="Categories.Morphism.IsoEquiv.html#2111" class="Function">≃-trans</a>
|
|||
|
<a id="2345" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="≃-setoid"></a><a id="2348" href="Categories.Morphism.IsoEquiv.html#2348" class="Function">≃-setoid</a> <a id="2357" class="Symbol">:</a> <a id="2359" class="Symbol">∀</a> <a id="2361" class="Symbol">{</a><a id="2362" href="Categories.Morphism.IsoEquiv.html#2362" class="Bound">A</a> <a id="2364" href="Categories.Morphism.IsoEquiv.html#2364" class="Bound">B</a> <a id="2366" class="Symbol">:</a> <a id="2368" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="2371" class="Symbol">}</a> <a id="2373" class="Symbol">→</a> <a id="2375" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="2382" class="Symbol">_</a> <a id="2384" class="Symbol">_</a>
|
|||
|
<a id="2386" href="Categories.Morphism.IsoEquiv.html#2348" class="Function">≃-setoid</a> <a id="2395" class="Symbol">{</a><a id="2396" href="Categories.Morphism.IsoEquiv.html#2396" class="Bound">A</a><a id="2397" class="Symbol">}</a> <a id="2399" class="Symbol">{</a><a id="2400" href="Categories.Morphism.IsoEquiv.html#2400" class="Bound">B</a><a id="2401" class="Symbol">}</a> <a id="2403" class="Symbol">=</a> <a id="2405" class="Keyword">record</a>
|
|||
|
<a id="2414" class="Symbol">{</a> <a id="2416" href="Relation.Binary.Bundles.html#1081" class="Field">Carrier</a> <a id="2430" class="Symbol">=</a> <a id="2432" href="Categories.Morphism.IsoEquiv.html#2396" class="Bound">A</a> <a id="2434" href="Categories.Morphism.html#1958" class="Record Operator">≅</a> <a id="2436" href="Categories.Morphism.IsoEquiv.html#2400" class="Bound">B</a>
|
|||
|
<a id="2440" class="Symbol">;</a> <a id="2442" href="Relation.Binary.Bundles.html#1107" class="Field Operator">_≈_</a> <a id="2456" class="Symbol">=</a> <a id="2458" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">_≃_</a>
|
|||
|
<a id="2464" class="Symbol">;</a> <a id="2466" href="Relation.Binary.Bundles.html#1141" class="Field">isEquivalence</a> <a id="2480" class="Symbol">=</a> <a id="2482" href="Categories.Morphism.IsoEquiv.html#2205" class="Function">≃-isEquivalence</a>
|
|||
|
<a id="2500" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="2503" class="Comment">----------------------------------------------------------------------</a>
|
|||
|
|
|||
|
<a id="2575" class="Comment">-- An alternative, more direct notion of equality on isomorphisms that</a>
|
|||
|
<a id="2646" class="Comment">-- involves no wrapping/unwrapping.</a>
|
|||
|
|
|||
|
<a id="2683" class="Keyword">infix</a> <a id="2689" class="Number">4</a> <a id="2691" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">_≃′_</a>
|
|||
|
<a id="_≃′_"></a><a id="2696" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">_≃′_</a> <a id="2701" class="Symbol">:</a> <a id="2703" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="2707" class="Symbol">(</a><a id="2708" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="2710" href="Categories.Morphism.html#1958" class="Record Operator">≅</a> <a id="2712" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="2713" class="Symbol">)</a> <a id="2715" href="Categories.Morphism.IsoEquiv.html#111" class="Bound">e</a>
|
|||
|
<a id="2717" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">_≃′_</a> <a id="2722" class="Symbol">=</a> <a id="2724" href="Categories.Category.Core.html#595" class="Field Operator">_≈_</a> <a id="2728" href="Function.Base.html#6294" class="Function Operator">on</a> <a id="2731" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a>
|
|||
|
|
|||
|
<a id="≃′-isEquivalence"></a><a id="2741" href="Categories.Morphism.IsoEquiv.html#2741" class="Function">≃′-isEquivalence</a> <a id="2758" class="Symbol">:</a> <a id="2760" href="Relation.Binary.Structures.html#1531" class="Record">IsEquivalence</a> <a id="2774" class="Symbol">(</a><a id="2775" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">_≃′_</a> <a id="2780" class="Symbol">{</a><a id="2781" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a><a id="2782" class="Symbol">}</a> <a id="2784" class="Symbol">{</a><a id="2785" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="2786" class="Symbol">})</a>
|
|||
|
<a id="2789" href="Categories.Morphism.IsoEquiv.html#2741" class="Function">≃′-isEquivalence</a> <a id="2806" class="Symbol">=</a> <a id="2808" href="Relation.Binary.Construct.On.html#2536" class="Function">On.isEquivalence</a> <a id="2825" href="Categories.Morphism.html#2006" class="Field">_≅_.from</a> <a id="2834" href="Categories.Category.Core.html#1384" class="Field">equiv</a>
|
|||
|
|
|||
|
<a id="≃′-setoid"></a><a id="2841" href="Categories.Morphism.IsoEquiv.html#2841" class="Function">≃′-setoid</a> <a id="2851" class="Symbol">:</a> <a id="2853" class="Symbol">∀</a> <a id="2855" class="Symbol">{</a><a id="2856" href="Categories.Morphism.IsoEquiv.html#2856" class="Bound">A</a> <a id="2858" href="Categories.Morphism.IsoEquiv.html#2858" class="Bound">B</a> <a id="2860" class="Symbol">:</a> <a id="2862" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="2865" class="Symbol">}</a> <a id="2867" class="Symbol">→</a> <a id="2869" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="2876" class="Symbol">_</a> <a id="2878" class="Symbol">_</a>
|
|||
|
<a id="2880" href="Categories.Morphism.IsoEquiv.html#2841" class="Function">≃′-setoid</a> <a id="2890" class="Symbol">{</a><a id="2891" href="Categories.Morphism.IsoEquiv.html#2891" class="Bound">A</a><a id="2892" class="Symbol">}</a> <a id="2894" class="Symbol">{</a><a id="2895" href="Categories.Morphism.IsoEquiv.html#2895" class="Bound">B</a><a id="2896" class="Symbol">}</a> <a id="2898" class="Symbol">=</a> <a id="2900" class="Keyword">record</a>
|
|||
|
<a id="2909" class="Symbol">{</a> <a id="2911" href="Relation.Binary.Bundles.html#1081" class="Field">Carrier</a> <a id="2925" class="Symbol">=</a> <a id="2927" href="Categories.Morphism.IsoEquiv.html#2891" class="Bound">A</a> <a id="2929" href="Categories.Morphism.html#1958" class="Record Operator">≅</a> <a id="2931" href="Categories.Morphism.IsoEquiv.html#2895" class="Bound">B</a>
|
|||
|
<a id="2935" class="Symbol">;</a> <a id="2937" href="Relation.Binary.Bundles.html#1107" class="Field Operator">_≈_</a> <a id="2951" class="Symbol">=</a> <a id="2953" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">_≃′_</a>
|
|||
|
<a id="2960" class="Symbol">;</a> <a id="2962" href="Relation.Binary.Bundles.html#1141" class="Field">isEquivalence</a> <a id="2976" class="Symbol">=</a> <a id="2978" href="Categories.Morphism.IsoEquiv.html#2741" class="Function">≃′-isEquivalence</a>
|
|||
|
<a id="2997" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="3000" class="Comment">-- The two notions of equality are equivalent</a>
|
|||
|
|
|||
|
<a id="≃⇒≃′"></a><a id="3047" href="Categories.Morphism.IsoEquiv.html#3047" class="Function">≃⇒≃′</a> <a id="3052" class="Symbol">:</a> <a id="3054" class="Symbol">∀</a> <a id="3056" class="Symbol">{</a><a id="3057" href="Categories.Morphism.IsoEquiv.html#3057" class="Bound">i</a> <a id="3059" href="Categories.Morphism.IsoEquiv.html#3059" class="Bound">j</a> <a id="3061" class="Symbol">:</a> <a id="3063" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="3065" href="Categories.Morphism.html#1958" class="Record Operator">≅</a> <a id="3067" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="3068" class="Symbol">}</a> <a id="3070" class="Symbol">→</a> <a id="3072" href="Categories.Morphism.IsoEquiv.html#3057" class="Bound">i</a> <a id="3074" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">≃</a> <a id="3076" href="Categories.Morphism.IsoEquiv.html#3059" class="Bound">j</a> <a id="3078" class="Symbol">→</a> <a id="3080" href="Categories.Morphism.IsoEquiv.html#3057" class="Bound">i</a> <a id="3082" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">≃′</a> <a id="3085" href="Categories.Morphism.IsoEquiv.html#3059" class="Bound">j</a>
|
|||
|
<a id="3087" href="Categories.Morphism.IsoEquiv.html#3047" class="Function">≃⇒≃′</a> <a id="3092" href="Categories.Morphism.IsoEquiv.html#3092" class="Bound">eq</a> <a id="3095" class="Symbol">=</a> <a id="3097" href="Categories.Morphism.IsoEquiv.html#1830" class="Field">from-≈</a> <a id="3104" href="Categories.Morphism.IsoEquiv.html#3092" class="Bound">eq</a>
|
|||
|
|
|||
|
<a id="≃′⇒≃"></a><a id="3108" href="Categories.Morphism.IsoEquiv.html#3108" class="Function">≃′⇒≃</a> <a id="3113" class="Symbol">:</a> <a id="3115" class="Symbol">∀</a> <a id="3117" class="Symbol">{</a><a id="3118" href="Categories.Morphism.IsoEquiv.html#3118" class="Bound">i</a> <a id="3120" href="Categories.Morphism.IsoEquiv.html#3120" class="Bound">j</a> <a id="3122" class="Symbol">:</a> <a id="3124" href="Categories.Morphism.IsoEquiv.html#359" class="Generalizable">A</a> <a id="3126" href="Categories.Morphism.html#1958" class="Record Operator">≅</a> <a id="3128" href="Categories.Morphism.IsoEquiv.html#361" class="Generalizable">B</a><a id="3129" class="Symbol">}</a> <a id="3131" class="Symbol">→</a> <a id="3133" href="Categories.Morphism.IsoEquiv.html#3118" class="Bound">i</a> <a id="3135" href="Categories.Morphism.IsoEquiv.html#2696" class="Function Operator">≃′</a> <a id="3138" href="Categories.Morphism.IsoEquiv.html#3120" class="Bound">j</a> <a id="3140" class="Symbol">→</a> <a id="3142" href="Categories.Morphism.IsoEquiv.html#3118" class="Bound">i</a> <a id="3144" href="Categories.Morphism.IsoEquiv.html#1761" class="Record Operator">≃</a> <a id="3146" href="Categories.Morphism.IsoEquiv.html#3120" class="Bound">j</a>
|
|||
|
<a id="3148" href="Categories.Morphism.IsoEquiv.html#3108" class="Function">≃′⇒≃</a> <a id="3153" class="Symbol">{_}</a> <a id="3157" class="Symbol">{_}</a> <a id="3161" class="Symbol">{</a><a id="3162" href="Categories.Morphism.IsoEquiv.html#3162" class="Bound">i</a><a id="3163" class="Symbol">}</a> <a id="3165" class="Symbol">{</a><a id="3166" href="Categories.Morphism.IsoEquiv.html#3166" class="Bound">j</a><a id="3167" class="Symbol">}</a> <a id="3169" href="Categories.Morphism.IsoEquiv.html#3169" class="Bound">eq</a> <a id="3172" class="Symbol">=</a> <a id="3174" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌞</a> <a id="3176" href="Categories.Morphism.IsoEquiv.html#3169" class="Bound">eq</a> <a id="3179" href="Categories.Morphism.IsoEquiv.html#1807" class="InductiveConstructor Operator">⌟</a>
|
|||
|
</pre></body></html>
|