bsc-leon-vatthauer/public/Categories.Morphism.HeterogeneousIdentity.html

101 lines
44 KiB
HTML
Raw Normal View History

2023-08-19 16:11:22 +02:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Categories.Morphism.HeterogeneousIdentity</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">open</a> <a id="41" class="Keyword">import</a> <a id="48" href="Categories.Category.html" class="Module">Categories.Category</a> <a id="68" class="Keyword">using</a> <a id="74" class="Symbol">(</a><a id="75" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="83" class="Symbol">;</a> <a id="85" class="Keyword">module</a> <a id="92" href="Categories.Category.html#824" class="Module">Definitions</a><a id="103" class="Symbol">)</a>
<a id="106" class="Comment">-- &#39;Heterogeneous&#39; identity morphism and some laws about them.</a>
<a id="170" class="Keyword">module</a> <a id="177" href="Categories.Morphism.HeterogeneousIdentity.html" class="Module">Categories.Morphism.HeterogeneousIdentity</a> <a id="219" class="Symbol">{</a><a id="220" href="Categories.Morphism.HeterogeneousIdentity.html#220" class="Bound">o</a> <a id="222" href="Categories.Morphism.HeterogeneousIdentity.html#222" class="Bound"></a> <a id="224" href="Categories.Morphism.HeterogeneousIdentity.html#224" class="Bound">e</a><a id="225" class="Symbol">}</a> <a id="227" class="Symbol">(</a><a id="228" href="Categories.Morphism.HeterogeneousIdentity.html#228" class="Bound">C</a> <a id="230" class="Symbol">:</a> <a id="232" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="241" href="Categories.Morphism.HeterogeneousIdentity.html#220" class="Bound">o</a> <a id="243" href="Categories.Morphism.HeterogeneousIdentity.html#222" class="Bound"></a> <a id="245" href="Categories.Morphism.HeterogeneousIdentity.html#224" class="Bound">e</a><a id="246" class="Symbol">)</a> <a id="248" class="Keyword">where</a>
<a id="255" class="Keyword">open</a> <a id="260" class="Keyword">import</a> <a id="267" href="Level.html" class="Module">Level</a>
<a id="273" class="Keyword">open</a> <a id="278" class="Keyword">import</a> <a id="285" href="Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a>
<a id="324" class="Keyword">import</a> <a id="331" href="Categories.Morphism.html" class="Module">Categories.Morphism</a> <a id="351" class="Symbol">as</a> <a id="354" class="Module">Morphism</a>
<a id="363" class="Keyword">import</a> <a id="370" href="Categories.Morphism.Reasoning.Iso.html" class="Module">Categories.Morphism.Reasoning.Iso</a> <a id="404" class="Symbol">as</a> <a id="407" class="Module">Reasoning</a>
<a id="418" class="Keyword">open</a> <a id="423" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="432" href="Categories.Morphism.HeterogeneousIdentity.html#228" class="Bound">C</a>
<a id="434" class="Keyword">open</a> <a id="439" href="Categories.Category.html#824" class="Module">Definitions</a> <a id="451" href="Categories.Morphism.HeterogeneousIdentity.html#228" class="Bound">C</a>
<a id="453" class="Keyword">open</a> <a id="458" href="Categories.Morphism.html" class="Module">Morphism</a> <a id="467" href="Categories.Morphism.HeterogeneousIdentity.html#228" class="Bound">C</a>
<a id="469" class="Keyword">open</a> <a id="474" href="Categories.Morphism.Reasoning.Iso.html" class="Module">Reasoning</a> <a id="484" href="Categories.Morphism.HeterogeneousIdentity.html#228" class="Bound">C</a> <a id="486" class="Keyword">using</a> <a id="492" class="Symbol">(</a><a id="493" href="Categories.Morphism.Reasoning.Iso.html#1281" class="Function">switch-tofromʳ</a><a id="507" class="Symbol">)</a>
<a id="511" class="Comment">-- If Agda was an extensional type theory, any pair of morphisms</a>
<a id="576" class="Comment">--</a>
<a id="579" class="Comment">-- f : A ⇒ B and g : A ⇒ C,</a>
<a id="613" class="Comment">--</a>
<a id="616" class="Comment">-- where `A ≡ B`, would belong to the same homset, even if `A` and `B`</a>
<a id="687" class="Comment">-- are not definitionally equal. In particular, the identity on `B`</a>
<a id="756" class="Comment">-- could be given the type |id {B} : B ⇒ C|.</a>
<a id="801" class="Comment">--</a>
<a id="804" class="Comment">-- But Agda is an intensional type theory, so the identity cannot have</a>
<a id="875" class="Comment">-- this type, in general. Instead one needs to manually &#39;transport&#39;</a>
<a id="944" class="Comment">-- |id {B}| into the homset |B ⇒ C|. Given |p : B ≡ C| one obtains</a>
<a id="1012" class="Comment">--</a>
<a id="1015" class="Comment">-- subst (B ⇒_) p (id {B})</a>
<a id="1044" class="Comment">--</a>
<a id="1047" class="Comment">-- Morphisms like thes are no longer identities (in the strict</a>
<a id="1110" class="Comment">-- sense) but they still enjoy many of the properties identities do.</a>
<a id="1179" class="Comment">--</a>
<a id="1182" class="Comment">-- To make this precise, this module introduces a notion of</a>
<a id="1242" class="Comment">-- &#39;heterogeneous identity&#39;, which is an identity morphism whose</a>
<a id="1307" class="Comment">-- domain and codomain are propositionally equal (but not necessarily</a>
<a id="1377" class="Comment">-- syntactically equal).</a>
<a id="1404" class="Comment">-- A heterogeneous identity is just the transport of an identity</a>
<a id="1469" class="Comment">-- along a &#39;strict&#39; equation of objects.</a>
<a id="hid"></a><a id="1511" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1515" class="Symbol">:</a> <a id="1517" class="Symbol"></a> <a id="1519" class="Symbol">{</a><a id="1520" href="Categories.Morphism.HeterogeneousIdentity.html#1520" class="Bound">A</a> <a id="1522" href="Categories.Morphism.HeterogeneousIdentity.html#1522" class="Bound">B</a><a id="1523" class="Symbol">}</a> <a id="1525" class="Symbol">(</a><a id="1526" href="Categories.Morphism.HeterogeneousIdentity.html#1526" class="Bound">p</a> <a id="1528" class="Symbol">:</a> <a id="1530" href="Categories.Morphism.HeterogeneousIdentity.html#1520" class="Bound">A</a> <a id="1532" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="1534" href="Categories.Morphism.HeterogeneousIdentity.html#1522" class="Bound">B</a><a id="1535" class="Symbol">)</a> <a id="1537" class="Symbol"></a> <a id="1539" href="Categories.Morphism.HeterogeneousIdentity.html#1520" class="Bound">A</a> <a id="1541" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="1543" href="Categories.Morphism.HeterogeneousIdentity.html#1522" class="Bound">B</a>
<a id="1545" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1549" class="Symbol">{</a><a id="1550" href="Categories.Morphism.HeterogeneousIdentity.html#1550" class="Bound">A</a><a id="1551" class="Symbol">}</a> <a id="1553" href="Categories.Morphism.HeterogeneousIdentity.html#1553" class="Bound">p</a> <a id="1555" class="Symbol">=</a> <a id="1557" href="Relation.Binary.PropositionalEquality.Core.html#1789" class="Function">subst</a> <a id="1563" class="Symbol">(</a><a id="1564" href="Categories.Morphism.HeterogeneousIdentity.html#1550" class="Bound">A</a> <a id="1566" href="Categories.Category.Core.html#575" class="Field Operator">⇒_</a><a id="1568" class="Symbol">)</a> <a id="1570" href="Categories.Morphism.HeterogeneousIdentity.html#1553" class="Bound">p</a> <a id="1572" href="Categories.Category.Core.html#630" class="Field">id</a>
<a id="1576" class="Comment">-- Lemmas about heterogeneous identities</a>
<a id="hid-refl"></a><a id="1618" href="Categories.Morphism.HeterogeneousIdentity.html#1618" class="Function">hid-refl</a> <a id="1627" class="Symbol">:</a> <a id="1629" class="Symbol"></a> <a id="1631" class="Symbol">{</a><a id="1632" href="Categories.Morphism.HeterogeneousIdentity.html#1632" class="Bound">A</a> <a id="1634" class="Symbol">:</a> <a id="1636" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="1639" class="Symbol">}</a> <a id="1641" class="Symbol"></a> <a id="1643" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1647" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="1652" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="1654" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1657" class="Symbol">{</a><a id="1658" href="Categories.Morphism.HeterogeneousIdentity.html#1632" class="Bound">A</a><a id="1659" class="Symbol">}</a>
<a id="1661" href="Categories.Morphism.HeterogeneousIdentity.html#1618" class="Function">hid-refl</a> <a id="1670" class="Symbol">=</a> <a id="1672" href="Relation.Binary.Structures.html#1577" class="Function">Equiv.refl</a>
<a id="hid-trans"></a><a id="1684" href="Categories.Morphism.HeterogeneousIdentity.html#1684" class="Function">hid-trans</a> <a id="1694" class="Symbol">:</a> <a id="1696" class="Symbol"></a> <a id="1698" class="Symbol">{</a><a id="1699" href="Categories.Morphism.HeterogeneousIdentity.html#1699" class="Bound">A</a> <a id="1701" href="Categories.Morphism.HeterogeneousIdentity.html#1701" class="Bound">B</a> <a id="1703" href="Categories.Morphism.HeterogeneousIdentity.html#1703" class="Bound">C</a><a id="1704" class="Symbol">}</a> <a id="1706" class="Symbol">(</a><a id="1707" href="Categories.Morphism.HeterogeneousIdentity.html#1707" class="Bound">p</a> <a id="1709" class="Symbol">:</a> <a id="1711" href="Categories.Morphism.HeterogeneousIdentity.html#1701" class="Bound">B</a> <a id="1713" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="1715" href="Categories.Morphism.HeterogeneousIdentity.html#1703" class="Bound">C</a><a id="1716" class="Symbol">)</a> <a id="1718" class="Symbol">(</a><a id="1719" href="Categories.Morphism.HeterogeneousIdentity.html#1719" class="Bound">q</a> <a id="1721" class="Symbol">:</a> <a id="1723" href="Categories.Morphism.HeterogeneousIdentity.html#1699" class="Bound">A</a> <a id="1725" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="1727" href="Categories.Morphism.HeterogeneousIdentity.html#1701" class="Bound">B</a><a id="1728" class="Symbol">)</a> <a id="1730" class="Symbol"></a>
<a id="1744" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1748" href="Categories.Morphism.HeterogeneousIdentity.html#1707" class="Bound">p</a> <a id="1750" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="1752" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1756" href="Categories.Morphism.HeterogeneousIdentity.html#1719" class="Bound">q</a> <a id="1758" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="1760" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1764" class="Symbol">(</a><a id="1765" href="Relation.Binary.PropositionalEquality.Core.html#1738" class="Function">trans</a> <a id="1771" href="Categories.Morphism.HeterogeneousIdentity.html#1719" class="Bound">q</a> <a id="1773" href="Categories.Morphism.HeterogeneousIdentity.html#1707" class="Bound">p</a><a id="1774" class="Symbol">)</a>
<a id="1776" href="Categories.Morphism.HeterogeneousIdentity.html#1684" class="Function">hid-trans</a> <a id="1786" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="1791" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="1796" class="Symbol">=</a> <a id="1798" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a>
<a id="hid-symˡ"></a><a id="1809" href="Categories.Morphism.HeterogeneousIdentity.html#1809" class="Function">hid-symˡ</a> <a id="1818" class="Symbol">:</a> <a id="1820" class="Symbol"></a> <a id="1822" class="Symbol">{</a><a id="1823" href="Categories.Morphism.HeterogeneousIdentity.html#1823" class="Bound">A</a> <a id="1825" href="Categories.Morphism.HeterogeneousIdentity.html#1825" class="Bound">B</a><a id="1826" class="Symbol">}</a> <a id="1828" class="Symbol">(</a><a id="1829" href="Categories.Morphism.HeterogeneousIdentity.html#1829" class="Bound">p</a> <a id="1831" class="Symbol">:</a> <a id="1833" href="Categories.Morphism.HeterogeneousIdentity.html#1823" class="Bound">A</a> <a id="1835" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="1837" href="Categories.Morphism.HeterogeneousIdentity.html#1825" class="Bound">B</a><a id="1838" class="Symbol">)</a> <a id="1840" class="Symbol"></a> <a id="1842" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1846" class="Symbol">(</a><a id="1847" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="1851" href="Categories.Morphism.HeterogeneousIdentity.html#1829" class="Bound">p</a><a id="1852" class="Symbol">)</a> <a id="1854" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="1856" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1860" href="Categories.Morphism.HeterogeneousIdentity.html#1829" class="Bound">p</a> <a id="1862" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="1864" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1867" class="Symbol">{</a><a id="1868" href="Categories.Morphism.HeterogeneousIdentity.html#1823" class="Bound">A</a><a id="1869" class="Symbol">}</a>
<a id="1871" href="Categories.Morphism.HeterogeneousIdentity.html#1809" class="Function">hid-symˡ</a> <a id="1880" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="1885" class="Symbol">=</a> <a id="1887" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a>
<a id="hid-symʳ"></a><a id="1898" href="Categories.Morphism.HeterogeneousIdentity.html#1898" class="Function">hid-symʳ</a> <a id="1907" class="Symbol">:</a> <a id="1909" class="Symbol"></a> <a id="1911" class="Symbol">{</a><a id="1912" href="Categories.Morphism.HeterogeneousIdentity.html#1912" class="Bound">A</a> <a id="1914" href="Categories.Morphism.HeterogeneousIdentity.html#1914" class="Bound">B</a><a id="1915" class="Symbol">}</a> <a id="1917" class="Symbol">(</a><a id="1918" href="Categories.Morphism.HeterogeneousIdentity.html#1918" class="Bound">p</a> <a id="1920" class="Symbol">:</a> <a id="1922" href="Categories.Morphism.HeterogeneousIdentity.html#1912" class="Bound">A</a> <a id="1924" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="1926" href="Categories.Morphism.HeterogeneousIdentity.html#1914" class="Bound">B</a><a id="1927" class="Symbol">)</a> <a id="1929" class="Symbol"></a> <a id="1931" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1935" href="Categories.Morphism.HeterogeneousIdentity.html#1918" class="Bound">p</a> <a id="1937" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="1939" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="1943" class="Symbol">(</a><a id="1944" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="1948" href="Categories.Morphism.HeterogeneousIdentity.html#1918" class="Bound">p</a><a id="1949" class="Symbol">)</a> <a id="1951" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="1953" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="1956" class="Symbol">{</a><a id="1957" href="Categories.Morphism.HeterogeneousIdentity.html#1914" class="Bound">B</a><a id="1958" class="Symbol">}</a>
<a id="1960" href="Categories.Morphism.HeterogeneousIdentity.html#1898" class="Function">hid-symʳ</a> <a id="1969" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="1974" class="Symbol">=</a> <a id="1976" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a>
<a id="hid-sym-sym"></a><a id="1987" href="Categories.Morphism.HeterogeneousIdentity.html#1987" class="Function">hid-sym-sym</a> <a id="1999" class="Symbol">:</a> <a id="2001" class="Symbol"></a> <a id="2003" class="Symbol">{</a><a id="2004" href="Categories.Morphism.HeterogeneousIdentity.html#2004" class="Bound">A</a> <a id="2006" href="Categories.Morphism.HeterogeneousIdentity.html#2006" class="Bound">B</a><a id="2007" class="Symbol">}</a> <a id="2009" class="Symbol">(</a><a id="2010" href="Categories.Morphism.HeterogeneousIdentity.html#2010" class="Bound">p</a> <a id="2012" class="Symbol">:</a> <a id="2014" href="Categories.Morphism.HeterogeneousIdentity.html#2004" class="Bound">A</a> <a id="2016" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2018" href="Categories.Morphism.HeterogeneousIdentity.html#2006" class="Bound">B</a><a id="2019" class="Symbol">)</a> <a id="2021" class="Symbol"></a> <a id="2023" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2027" class="Symbol">(</a><a id="2028" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="2032" class="Symbol">(</a><a id="2033" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="2037" href="Categories.Morphism.HeterogeneousIdentity.html#2010" class="Bound">p</a><a id="2038" class="Symbol">))</a> <a id="2041" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="2043" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2047" href="Categories.Morphism.HeterogeneousIdentity.html#2010" class="Bound">p</a>
<a id="2049" href="Categories.Morphism.HeterogeneousIdentity.html#1987" class="Function">hid-sym-sym</a> <a id="2061" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="2066" class="Symbol">=</a> <a id="2068" href="Relation.Binary.Structures.html#1577" class="Function">Equiv.refl</a>
<a id="hid-iso"></a><a id="2080" href="Categories.Morphism.HeterogeneousIdentity.html#2080" class="Function">hid-iso</a> <a id="2088" class="Symbol">:</a> <a id="2090" class="Symbol"></a> <a id="2092" class="Symbol">{</a><a id="2093" href="Categories.Morphism.HeterogeneousIdentity.html#2093" class="Bound">A</a> <a id="2095" href="Categories.Morphism.HeterogeneousIdentity.html#2095" class="Bound">B</a><a id="2096" class="Symbol">}</a> <a id="2098" class="Symbol">(</a><a id="2099" href="Categories.Morphism.HeterogeneousIdentity.html#2099" class="Bound">p</a> <a id="2101" class="Symbol">:</a> <a id="2103" href="Categories.Morphism.HeterogeneousIdentity.html#2093" class="Bound">A</a> <a id="2105" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2107" href="Categories.Morphism.HeterogeneousIdentity.html#2095" class="Bound">B</a><a id="2108" class="Symbol">)</a> <a id="2110" class="Symbol"></a> <a id="2112" href="Categories.Morphism.html#1528" class="Record">Iso</a> <a id="2116" class="Symbol">(</a><a id="2117" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2121" href="Categories.Morphism.HeterogeneousIdentity.html#2099" class="Bound">p</a><a id="2122" class="Symbol">)</a> <a id="2124" class="Symbol">(</a><a id="2125" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2129" class="Symbol">(</a><a id="2130" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="2134" href="Categories.Morphism.HeterogeneousIdentity.html#2099" class="Bound">p</a><a id="2135" class="Symbol">))</a>
<a id="2138" href="Categories.Morphism.HeterogeneousIdentity.html#2080" class="Function">hid-iso</a> <a id="2146" href="Categories.Morphism.HeterogeneousIdentity.html#2146" class="Bound">p</a> <a id="2148" class="Symbol">=</a> <a id="2150" class="Keyword">record</a> <a id="2157" class="Symbol">{</a> <a id="2159" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="2164" class="Symbol">=</a> <a id="2166" href="Categories.Morphism.HeterogeneousIdentity.html#1809" class="Function">hid-symˡ</a> <a id="2175" href="Categories.Morphism.HeterogeneousIdentity.html#2146" class="Bound">p</a> <a id="2177" class="Symbol">;</a> <a id="2179" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="2184" class="Symbol">=</a> <a id="2186" href="Categories.Morphism.HeterogeneousIdentity.html#1898" class="Function">hid-symʳ</a> <a id="2195" href="Categories.Morphism.HeterogeneousIdentity.html#2146" class="Bound">p</a> <a id="2197" class="Symbol">}</a>
<a id="hid-≅"></a><a id="2200" href="Categories.Morphism.HeterogeneousIdentity.html#2200" class="Function">hid-≅</a> <a id="2206" class="Symbol">:</a> <a id="2208" class="Symbol"></a> <a id="2210" class="Symbol">{</a><a id="2211" href="Categories.Morphism.HeterogeneousIdentity.html#2211" class="Bound">A</a> <a id="2213" href="Categories.Morphism.HeterogeneousIdentity.html#2213" class="Bound">B</a><a id="2214" class="Symbol">}</a> <a id="2216" class="Symbol">(</a><a id="2217" href="Categories.Morphism.HeterogeneousIdentity.html#2217" class="Bound">p</a> <a id="2219" class="Symbol">:</a> <a id="2221" href="Categories.Morphism.HeterogeneousIdentity.html#2211" class="Bound">A</a> <a id="2223" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2225" href="Categories.Morphism.HeterogeneousIdentity.html#2213" class="Bound">B</a><a id="2226" class="Symbol">)</a> <a id="2228" class="Symbol"></a> <a id="2230" href="Categories.Morphism.HeterogeneousIdentity.html#2211" class="Bound">A</a> <a id="2232" href="Categories.Morphism.html#1958" class="Record Operator"></a> <a id="2234" href="Categories.Morphism.HeterogeneousIdentity.html#2213" class="Bound">B</a>
<a id="2236" href="Categories.Morphism.HeterogeneousIdentity.html#2200" class="Function">hid-≅</a> <a id="2242" href="Categories.Morphism.HeterogeneousIdentity.html#2242" class="Bound">p</a> <a id="2244" class="Symbol">=</a> <a id="2246" class="Keyword">record</a> <a id="2253" class="Symbol">{</a> <a id="2255" href="Categories.Morphism.html#2006" class="Field">from</a> <a id="2260" class="Symbol">=</a> <a id="2262" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2266" href="Categories.Morphism.HeterogeneousIdentity.html#2242" class="Bound">p</a> <a id="2268" class="Symbol">;</a> <a id="2270" href="Categories.Morphism.html#2023" class="Field">to</a> <a id="2273" class="Symbol">=</a> <a id="2275" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2279" class="Symbol">(</a><a id="2280" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="2284" href="Categories.Morphism.HeterogeneousIdentity.html#2242" class="Bound">p</a><a id="2285" class="Symbol">)</a> <a id="2287" class="Symbol">;</a> <a id="2289" href="Categories.Morphism.html#2040" class="Field">iso</a> <a id="2293" class="Symbol">=</a> <a id="2295" href="Categories.Morphism.HeterogeneousIdentity.html#2080" class="Function">hid-iso</a> <a id="2303" href="Categories.Morphism.HeterogeneousIdentity.html#2242" class="Bound">p</a> <a id="2305" class="Symbol">}</a>
<a id="hid-cong"></a><a id="2308" href="Categories.Morphism.HeterogeneousIdentity.html#2308" class="Function">hid-cong</a> <a id="2317" class="Symbol">:</a> <a id="2319" class="Symbol"></a> <a id="2321" class="Symbol">{</a><a id="2322" href="Categories.Morphism.HeterogeneousIdentity.html#2322" class="Bound">A</a> <a id="2324" href="Categories.Morphism.HeterogeneousIdentity.html#2324" class="Bound">B</a><a id="2325" class="Symbol">}</a> <a id="2327" class="Symbol">{</a><a id="2328" href="Categories.Morphism.HeterogeneousIdentity.html#2328" class="Bound">p</a> <a id="2330" href="Categories.Morphism.HeterogeneousIdentity.html#2330" class="Bound">q</a> <a id="2332" class="Symbol">:</a> <a id="2334" href="Categories.Morphism.HeterogeneousIdentity.html#2322" class="Bound">A</a> <a id="2336" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2338" href="Categories.Morphism.HeterogeneousIdentity.html#2324" class="Bound">B</a><a id="2339" class="Symbol">}</a> <a id="2341" class="Symbol"></a> <a id="2343" href="Categories.Morphism.HeterogeneousIdentity.html#2328" class="Bound">p</a> <a id="2345" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2347" href="Categories.Morphism.HeterogeneousIdentity.html#2330" class="Bound">q</a> <a id="2349" class="Symbol"></a> <a id="2351" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2355" href="Categories.Morphism.HeterogeneousIdentity.html#2328" class="Bound">p</a> <a id="2357" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="2359" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2363" href="Categories.Morphism.HeterogeneousIdentity.html#2330" class="Bound">q</a>
<a id="2365" href="Categories.Morphism.HeterogeneousIdentity.html#2308" class="Function">hid-cong</a> <a id="2374" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="2379" class="Symbol">=</a> <a id="2381" href="Relation.Binary.Structures.html#1577" class="Function">Equiv.refl</a>
<a id="2393" class="Comment">-- Transporting the domain/codomain is the same as</a>
<a id="2444" class="Comment">-- pre/post-composing with heterogeneous identity.</a>
<a id="hid-subst-dom"></a><a id="2496" href="Categories.Morphism.HeterogeneousIdentity.html#2496" class="Function">hid-subst-dom</a> <a id="2510" class="Symbol">:</a> <a id="2512" class="Symbol"></a> <a id="2514" class="Symbol">{</a><a id="2515" href="Categories.Morphism.HeterogeneousIdentity.html#2515" class="Bound">A</a> <a id="2517" href="Categories.Morphism.HeterogeneousIdentity.html#2517" class="Bound">B</a> <a id="2519" href="Categories.Morphism.HeterogeneousIdentity.html#2519" class="Bound">C</a><a id="2520" class="Symbol">}</a> <a id="2522" class="Symbol">(</a><a id="2523" href="Categories.Morphism.HeterogeneousIdentity.html#2523" class="Bound">p</a> <a id="2525" class="Symbol">:</a> <a id="2527" href="Categories.Morphism.HeterogeneousIdentity.html#2515" class="Bound">A</a> <a id="2529" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2531" href="Categories.Morphism.HeterogeneousIdentity.html#2517" class="Bound">B</a><a id="2532" class="Symbol">)</a> <a id="2534" class="Symbol">(</a><a id="2535" href="Categories.Morphism.HeterogeneousIdentity.html#2535" class="Bound">f</a> <a id="2537" class="Symbol">:</a> <a id="2539" href="Categories.Morphism.HeterogeneousIdentity.html#2517" class="Bound">B</a> <a id="2541" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="2543" href="Categories.Morphism.HeterogeneousIdentity.html#2519" class="Bound">C</a><a id="2544" class="Symbol">)</a> <a id="2546" class="Symbol"></a>
<a id="2564" href="Relation.Binary.PropositionalEquality.Core.html#1789" class="Function">subst</a> <a id="2570" class="Symbol">(</a><a id="2571" href="Categories.Category.Core.html#575" class="Field Operator">_⇒</a> <a id="2574" href="Categories.Morphism.HeterogeneousIdentity.html#2519" class="Bound">C</a><a id="2575" class="Symbol">)</a> <a id="2577" class="Symbol">(</a><a id="2578" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="2582" href="Categories.Morphism.HeterogeneousIdentity.html#2523" class="Bound">p</a><a id="2583" class="Symbol">)</a> <a id="2585" href="Categories.Morphism.HeterogeneousIdentity.html#2535" class="Bound">f</a> <a id="2587" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="2589" href="Categories.Morphism.HeterogeneousIdentity.html#2535" class="Bound">f</a> <a id="2591" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="2593" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2597" href="Categories.Morphism.HeterogeneousIdentity.html#2523" class="Bound">p</a>
<a id="2599" href="Categories.Morphism.HeterogeneousIdentity.html#2496" class="Function">hid-subst-dom</a> <a id="2613" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="2618" href="Categories.Morphism.HeterogeneousIdentity.html#2618" class="Bound">f</a> <a id="2620" class="Symbol">=</a> <a id="2622" href="Relation.Binary.Structures.html#1603" class="Function">Equiv.sym</a> <a id="2632" href="Categories.Category.Core.html#1145" class="Field">identityʳ</a>
<a id="hid-subst-cod"></a><a id="2643" href="Categories.Morphism.HeterogeneousIdentity.html#2643" class="Function">hid-subst-cod</a> <a id="2657" class="Symbol">:</a> <a id="2659" class="Symbol"></a> <a id="2661" class="Symbol">{</a><a id="2662" href="Categories.Morphism.HeterogeneousIdentity.html#2662" class="Bound">A</a> <a id="2664" href="Categories.Morphism.HeterogeneousIdentity.html#2664" class="Bound">B</a> <a id="2666" href="Categories.Morphism.HeterogeneousIdentity.html#2666" class="Bound">C</a><a id="2667" class="Symbol">}</a> <a id="2669" class="Symbol">(</a><a id="2670" href="Categories.Morphism.HeterogeneousIdentity.html#2670" class="Bound">f</a> <a id="2672" class="Symbol">:</a> <a id="2674" href="Categories.Morphism.HeterogeneousIdentity.html#2662" class="Bound">A</a> <a id="2676" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="2678" href="Categories.Morphism.HeterogeneousIdentity.html#2664" class="Bound">B</a><a id="2679" class="Symbol">)</a> <a id="2681" class="Symbol">(</a><a id="2682" href="Categories.Morphism.HeterogeneousIdentity.html#2682" class="Bound">p</a> <a id="2684" class="Symbol">:</a> <a id="2686" href="Categories.Morphism.HeterogeneousIdentity.html#2664" class="Bound">B</a> <a id="2688" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2690" href="Categories.Morphism.HeterogeneousIdentity.html#2666" class="Bound">C</a><a id="2691" class="Symbol">)</a> <a id="2693" class="Symbol"></a>
<a id="2711" href="Relation.Binary.PropositionalEquality.Core.html#1789" class="Function">subst</a> <a id="2717" class="Symbol">(</a><a id="2718" href="Categories.Morphism.HeterogeneousIdentity.html#2662" class="Bound">A</a> <a id="2720" href="Categories.Category.Core.html#575" class="Field Operator">⇒_</a><a id="2722" class="Symbol">)</a> <a id="2724" href="Categories.Morphism.HeterogeneousIdentity.html#2682" class="Bound">p</a> <a id="2726" href="Categories.Morphism.HeterogeneousIdentity.html#2670" class="Bound">f</a> <a id="2728" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="2730" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2734" href="Categories.Morphism.HeterogeneousIdentity.html#2682" class="Bound">p</a> <a id="2736" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="2738" href="Categories.Morphism.HeterogeneousIdentity.html#2670" class="Bound">f</a>
<a id="2740" href="Categories.Morphism.HeterogeneousIdentity.html#2643" class="Function">hid-subst-cod</a> <a id="2754" href="Categories.Morphism.HeterogeneousIdentity.html#2754" class="Bound">f</a> <a id="2756" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="2761" class="Symbol">=</a> <a id="2763" href="Relation.Binary.Structures.html#1603" class="Function">Equiv.sym</a> <a id="2773" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a>
<a id="hid-subst₂"></a><a id="2784" href="Categories.Morphism.HeterogeneousIdentity.html#2784" class="Function">hid-subst₂</a> <a id="2795" class="Symbol">:</a> <a id="2797" class="Symbol"></a> <a id="2799" class="Symbol">{</a><a id="2800" href="Categories.Morphism.HeterogeneousIdentity.html#2800" class="Bound">A</a> <a id="2802" href="Categories.Morphism.HeterogeneousIdentity.html#2802" class="Bound">B</a> <a id="2804" href="Categories.Morphism.HeterogeneousIdentity.html#2804" class="Bound">C</a> <a id="2806" href="Categories.Morphism.HeterogeneousIdentity.html#2806" class="Bound">D</a><a id="2807" class="Symbol">}</a> <a id="2809" class="Symbol">(</a><a id="2810" href="Categories.Morphism.HeterogeneousIdentity.html#2810" class="Bound">p</a> <a id="2812" class="Symbol">:</a> <a id="2814" href="Categories.Morphism.HeterogeneousIdentity.html#2800" class="Bound">A</a> <a id="2816" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2818" href="Categories.Morphism.HeterogeneousIdentity.html#2802" class="Bound">B</a><a id="2819" class="Symbol">)</a> <a id="2821" class="Symbol">(</a><a id="2822" href="Categories.Morphism.HeterogeneousIdentity.html#2822" class="Bound">q</a> <a id="2824" class="Symbol">:</a> <a id="2826" href="Categories.Morphism.HeterogeneousIdentity.html#2804" class="Bound">C</a> <a id="2828" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="2830" href="Categories.Morphism.HeterogeneousIdentity.html#2806" class="Bound">D</a><a id="2831" class="Symbol">)</a> <a id="2833" class="Symbol">(</a><a id="2834" href="Categories.Morphism.HeterogeneousIdentity.html#2834" class="Bound">f</a> <a id="2836" class="Symbol">:</a> <a id="2838" href="Categories.Morphism.HeterogeneousIdentity.html#2800" class="Bound">A</a> <a id="2840" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="2842" href="Categories.Morphism.HeterogeneousIdentity.html#2804" class="Bound">C</a><a id="2843" class="Symbol">)</a> <a id="2845" class="Symbol"></a>
<a id="2860" href="Relation.Binary.PropositionalEquality.Core.html#1844" class="Function">subst₂</a> <a id="2867" class="Symbol">(</a><a id="2868" href="Categories.Category.Core.html#575" class="Field Operator">_⇒_</a><a id="2871" class="Symbol">)</a> <a id="2873" href="Categories.Morphism.HeterogeneousIdentity.html#2810" class="Bound">p</a> <a id="2875" href="Categories.Morphism.HeterogeneousIdentity.html#2822" class="Bound">q</a> <a id="2877" href="Categories.Morphism.HeterogeneousIdentity.html#2834" class="Bound">f</a> <a id="2879" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="2881" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2885" href="Categories.Morphism.HeterogeneousIdentity.html#2822" class="Bound">q</a> <a id="2887" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="2889" href="Categories.Morphism.HeterogeneousIdentity.html#2834" class="Bound">f</a> <a id="2891" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="2893" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="2897" class="Symbol">(</a><a id="2898" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="2902" href="Categories.Morphism.HeterogeneousIdentity.html#2810" class="Bound">p</a><a id="2903" class="Symbol">)</a>
<a id="2905" href="Categories.Morphism.HeterogeneousIdentity.html#2784" class="Function">hid-subst₂</a> <a id="2916" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="2921" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="2926" href="Categories.Morphism.HeterogeneousIdentity.html#2926" class="Bound">f</a> <a id="2928" class="Symbol">=</a> <a id="2930" href="Relation.Binary.Structures.html#1603" class="Function">Equiv.sym</a> <a id="2940" class="Symbol">(</a><a id="2941" href="Relation.Binary.Structures.html#1629" class="Function">Equiv.trans</a> <a id="2953" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="2963" href="Categories.Category.Core.html#1145" class="Field">identityʳ</a><a id="2972" class="Symbol">)</a>
<a id="hid-square"></a><a id="2975" href="Categories.Morphism.HeterogeneousIdentity.html#2975" class="Function">hid-square</a> <a id="2986" class="Symbol">:</a> <a id="2988" class="Symbol"></a> <a id="2990" class="Symbol">{</a><a id="2991" href="Categories.Morphism.HeterogeneousIdentity.html#2991" class="Bound">A</a> <a id="2993" href="Categories.Morphism.HeterogeneousIdentity.html#2993" class="Bound">B</a> <a id="2995" href="Categories.Morphism.HeterogeneousIdentity.html#2995" class="Bound">C</a> <a id="2997" href="Categories.Morphism.HeterogeneousIdentity.html#2997" class="Bound">D</a><a id="2998" class="Symbol">}</a> <a id="3000" class="Symbol">{</a><a id="3001" href="Categories.Morphism.HeterogeneousIdentity.html#3001" class="Bound">f</a> <a id="3003" class="Symbol">:</a> <a id="3005" href="Categories.Morphism.HeterogeneousIdentity.html#2991" class="Bound">A</a> <a id="3007" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="3009" href="Categories.Morphism.HeterogeneousIdentity.html#2993" class="Bound">B</a><a id="3010" class="Symbol">}</a> <a id="3012" class="Symbol">{</a><a id="3013" href="Categories.Morphism.HeterogeneousIdentity.html#3013" class="Bound">p</a> <a id="3015" class="Symbol">:</a> <a id="3017" href="Categories.Morphism.HeterogeneousIdentity.html#2991" class="Bound">A</a> <a id="3019" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="3021" href="Categories.Morphism.HeterogeneousIdentity.html#2995" class="Bound">C</a><a id="3022" class="Symbol">}</a> <a id="3024" class="Symbol">{</a><a id="3025" href="Categories.Morphism.HeterogeneousIdentity.html#3025" class="Bound">q</a> <a id="3027" class="Symbol">:</a> <a id="3029" href="Categories.Morphism.HeterogeneousIdentity.html#2993" class="Bound">B</a> <a id="3031" href="Agda.Builtin.Equality.html#133" class="Datatype Operator"></a> <a id="3033" href="Categories.Morphism.HeterogeneousIdentity.html#2997" class="Bound">D</a><a id="3034" class="Symbol">}</a> <a id="3036" class="Symbol">{</a><a id="3037" href="Categories.Morphism.HeterogeneousIdentity.html#3037" class="Bound">g</a> <a id="3039" class="Symbol">:</a> <a id="3041" href="Categories.Morphism.HeterogeneousIdentity.html#2995" class="Bound">C</a> <a id="3043" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="3045" href="Categories.Morphism.HeterogeneousIdentity.html#2997" class="Bound">D</a><a id="3046" class="Symbol">}</a> <a id="3048" class="Symbol"></a>
<a id="3063" class="Symbol">(</a><a id="3064" href="Relation.Binary.PropositionalEquality.Core.html#1844" class="Function">subst₂</a> <a id="3071" href="Categories.Category.Core.html#575" class="Field Operator">_⇒_</a> <a id="3075" href="Categories.Morphism.HeterogeneousIdentity.html#3013" class="Bound">p</a> <a id="3077" href="Categories.Morphism.HeterogeneousIdentity.html#3025" class="Bound">q</a> <a id="3079" href="Categories.Morphism.HeterogeneousIdentity.html#3001" class="Bound">f</a> <a id="3081" href="Categories.Category.Core.html#595" class="Field Operator"></a> <a id="3083" href="Categories.Morphism.HeterogeneousIdentity.html#3037" class="Bound">g</a><a id="3084" class="Symbol">)</a> <a id="3086" class="Symbol"></a>
<a id="3101" href="Categories.Category.html#884" class="Function">CommutativeSquare</a> <a id="3119" href="Categories.Morphism.HeterogeneousIdentity.html#3001" class="Bound">f</a> <a id="3121" class="Symbol">(</a><a id="3122" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="3126" href="Categories.Morphism.HeterogeneousIdentity.html#3013" class="Bound">p</a><a id="3127" class="Symbol">)</a> <a id="3129" class="Symbol">(</a><a id="3130" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="3134" href="Categories.Morphism.HeterogeneousIdentity.html#3025" class="Bound">q</a><a id="3135" class="Symbol">)</a> <a id="3137" href="Categories.Morphism.HeterogeneousIdentity.html#3037" class="Bound">g</a>
<a id="3139" href="Categories.Morphism.HeterogeneousIdentity.html#2975" class="Function">hid-square</a> <a id="3150" class="Symbol">{</a><a id="3151" class="Argument">f</a> <a id="3153" class="Symbol">=</a> <a id="3155" href="Categories.Morphism.HeterogeneousIdentity.html#3155" class="Bound">f</a><a id="3156" class="Symbol">}</a> <a id="3158" class="Symbol">{</a><a id="3159" href="Categories.Morphism.HeterogeneousIdentity.html#3159" class="Bound">p</a><a id="3160" class="Symbol">}</a> <a id="3162" class="Symbol">{</a><a id="3163" href="Categories.Morphism.HeterogeneousIdentity.html#3163" class="Bound">q</a><a id="3164" class="Symbol">}</a> <a id="3166" class="Symbol">{</a><a id="3167" href="Categories.Morphism.HeterogeneousIdentity.html#3167" class="Bound">g</a><a id="3168" class="Symbol">}</a> <a id="3170" href="Categories.Morphism.HeterogeneousIdentity.html#3170" class="Bound">eq</a> <a id="3173" class="Symbol">=</a> <a id="3175" href="Categories.Morphism.Reasoning.Iso.html#1281" class="Function">switch-tofromʳ</a> <a id="3190" class="Symbol">(</a><a id="3191" href="Categories.Morphism.HeterogeneousIdentity.html#2200" class="Function">hid-≅</a> <a id="3197" href="Categories.Morphism.HeterogeneousIdentity.html#3159" class="Bound">p</a><a id="3198" class="Symbol">)</a> <a id="3200" class="Symbol">(</a><a id="3201" href="Relation.Binary.Reasoning.Base.Single.html#1925" class="Function Operator">begin</a>
<a id="3209" class="Symbol">(</a><a id="3210" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="3214" href="Categories.Morphism.HeterogeneousIdentity.html#3163" class="Bound">q</a> <a id="3216" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3218" href="Categories.Morphism.HeterogeneousIdentity.html#3155" class="Bound">f</a><a id="3219" class="Symbol">)</a> <a id="3221" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3223" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="3227" class="Symbol">(</a><a id="3228" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="3232" href="Categories.Morphism.HeterogeneousIdentity.html#3159" class="Bound">p</a><a id="3233" class="Symbol">)</a> <a id="3239" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">≈⟨</a> <a id="3242" href="Categories.Category.Core.html#715" class="Field">assoc</a> <a id="3248" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function"></a>
<a id="3252" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="3256" href="Categories.Morphism.HeterogeneousIdentity.html#3163" class="Bound">q</a> <a id="3258" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3260" href="Categories.Morphism.HeterogeneousIdentity.html#3155" class="Bound">f</a> <a id="3262" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3264" href="Categories.Morphism.HeterogeneousIdentity.html#1511" class="Function">hid</a> <a id="3268" class="Symbol">(</a><a id="3269" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="3273" href="Categories.Morphism.HeterogeneousIdentity.html#3159" class="Bound">p</a><a id="3274" class="Symbol">)</a> <a id="3282" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">≈˘⟨</a> <a id="3286" href="Categories.Morphism.HeterogeneousIdentity.html#2784" class="Function">hid-subst₂</a> <a id="3297" href="Categories.Morphism.HeterogeneousIdentity.html#3159" class="Bound">p</a> <a id="3299" href="Categories.Morphism.HeterogeneousIdentity.html#3163" class="Bound">q</a> <a id="3301" href="Categories.Morphism.HeterogeneousIdentity.html#3155" class="Bound">f</a> <a id="3303" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function"></a>
<a id="3307" href="Relation.Binary.PropositionalEquality.Core.html#1844" class="Function">subst₂</a> <a id="3314" href="Categories.Category.Core.html#575" class="Field Operator">_⇒_</a> <a id="3318" href="Categories.Morphism.HeterogeneousIdentity.html#3159" class="Bound">p</a> <a id="3320" href="Categories.Morphism.HeterogeneousIdentity.html#3163" class="Bound">q</a> <a id="3322" href="Categories.Morphism.HeterogeneousIdentity.html#3155" class="Bound">f</a> <a id="3337" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">≈⟨</a> <a id="3340" href="Categories.Morphism.HeterogeneousIdentity.html#3170" class="Bound">eq</a> <a id="3343" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function"></a>
<a id="3347" href="Categories.Morphism.HeterogeneousIdentity.html#3167" class="Bound">g</a> <a id="3377" href="Relation.Binary.Reasoning.Base.Single.html#2564" class="Function Operator"></a><a id="3378" class="Symbol">)</a>
<a id="3382" class="Keyword">where</a> <a id="3388" class="Keyword">open</a> <a id="3393" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
</pre></body></html>