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

169 lines
No EOL
74 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.Yoneda</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.Yoneda.html" class="Module">Categories.Yoneda</a> <a id="61" class="Keyword">where</a>
<a id="68" class="Comment">-- Yoneda Lemma. In total, provides:</a>
<a id="106" class="Comment">-- * the Yoneda Embedding (called embed here) from any Category C into Presheaves C</a>
<a id="190" class="Comment">-- Worth noticing that there is no &#39;locally small&#39; condition here; however, if one looks at</a>
<a id="284" class="Comment">-- the levels involved, there is indeed a raise from that of C to that of Presheaves C.</a>
<a id="374" class="Comment">-- * The traditional Yoneda lemma (yoneda-inverse) which says that for any object a of C, and</a>
<a id="468" class="Comment">-- any Presheaf F over C (where our presheaves are over Setoids), then</a>
<a id="541" class="Comment">-- Hom[ Presheaves C] (Functor.F₀ embed a , F) ≅ Functor.F₀ F a</a>
<a id="607" class="Comment">-- as Setoids. In addition, Yoneda (yoneda) also says that this isomorphism is natural in a and F.</a>
<a id="708" class="Keyword">open</a> <a id="713" class="Keyword">import</a> <a id="720" href="Level.html" class="Module">Level</a>
<a id="726" class="Keyword">open</a> <a id="731" class="Keyword">import</a> <a id="738" href="Function.Base.html" class="Module">Function.Base</a> <a id="752" class="Keyword">using</a> <a id="758" class="Symbol">(</a><a id="759" href="Function.Base.html#1974" class="Function Operator">_$_</a><a id="762" class="Symbol">)</a> <a id="764" class="Keyword">renaming</a> <a id="773" class="Symbol">(</a><a id="774" href="Function.Base.html#704" class="Function">id</a> <a id="777" class="Symbol">to</a> <a id="780" class="Function">id→</a><a id="783" class="Symbol">)</a>
<a id="785" class="Keyword">open</a> <a id="790" class="Keyword">import</a> <a id="797" href="Function.Bundles.html" class="Module">Function.Bundles</a> <a id="814" class="Keyword">using</a> <a id="820" class="Symbol">(</a><a id="821" href="Function.Bundles.html#2043" class="Record">Func</a><a id="825" class="Symbol">;</a> <a id="827" href="Function.Bundles.html#7340" class="Record">Inverse</a><a id="834" class="Symbol">;</a> <a id="836" href="Function.Bundles.html#15133" class="Function Operator">_⟨$⟩_</a><a id="841" class="Symbol">)</a>
<a id="843" class="Keyword">open</a> <a id="848" class="Keyword">import</a> <a id="855" href="Relation.Binary.Bundles.html" class="Module">Relation.Binary.Bundles</a> <a id="879" class="Keyword">using</a> <a id="885" class="Symbol">(</a><a id="886" class="Keyword">module</a> <a id="893" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a><a id="899" class="Symbol">)</a>
<a id="901" class="Keyword">import</a> <a id="908" href="Relation.Binary.Reasoning.Setoid.html" class="Module">Relation.Binary.Reasoning.Setoid</a> <a id="941" class="Symbol">as</a> <a id="944" class="Module">SetoidR</a>
<a id="952" class="Keyword">open</a> <a id="957" class="Keyword">import</a> <a id="964" href="Data.Product.html" class="Module">Data.Product</a> <a id="977" class="Keyword">using</a> <a id="983" class="Symbol">(</a><a id="984" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a><a id="987" class="Symbol">;</a> <a id="989" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a><a id="990" class="Symbol">)</a>
<a id="993" class="Keyword">open</a> <a id="998" class="Keyword">import</a> <a id="1005" href="Categories.Category.html" class="Module">Categories.Category</a> <a id="1025" class="Keyword">using</a> <a id="1031" class="Symbol">(</a><a id="1032" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="1040" class="Symbol">;</a> <a id="1042" href="Categories.Category.html#502" class="Function Operator">_[_,_]</a><a id="1048" class="Symbol">)</a>
<a id="1050" class="Keyword">open</a> <a id="1055" class="Keyword">import</a> <a id="1062" href="Categories.Category.Product.html" class="Module">Categories.Category.Product</a> <a id="1090" class="Keyword">using</a> <a id="1096" class="Symbol">(</a><a id="1097" href="Categories.Category.Product.html#6067" class="Function">πʳ</a><a id="1099" class="Symbol">;</a> <a id="1101" href="Categories.Category.Product.html#5846" class="Function">πˡ</a><a id="1103" class="Symbol">;</a> <a id="1105" href="Categories.Category.Product.html#1553" class="Function Operator">_※_</a><a id="1108" class="Symbol">)</a>
<a id="1110" class="Keyword">open</a> <a id="1115" class="Keyword">import</a> <a id="1122" href="Categories.Category.Construction.Presheaves.html" class="Module">Categories.Category.Construction.Presheaves</a> <a id="1166" class="Keyword">using</a> <a id="1172" class="Symbol">(</a><a id="1173" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a><a id="1183" class="Symbol">)</a>
<a id="1185" class="Keyword">open</a> <a id="1190" class="Keyword">import</a> <a id="1197" href="Categories.Category.Construction.Functors.html" class="Module">Categories.Category.Construction.Functors</a> <a id="1239" class="Keyword">using</a> <a id="1245" class="Symbol">(</a><a id="1246" href="Categories.Category.Construction.Functors.html#1890" class="Function">eval</a><a id="1250" class="Symbol">)</a>
<a id="1252" class="Keyword">open</a> <a id="1257" class="Keyword">import</a> <a id="1264" href="Categories.Category.Instance.Setoids.html" class="Module">Categories.Category.Instance.Setoids</a> <a id="1301" class="Keyword">using</a> <a id="1307" class="Symbol">(</a><a id="1308" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a><a id="1315" class="Symbol">)</a>
<a id="1317" class="Keyword">open</a> <a id="1322" class="Keyword">import</a> <a id="1329" href="Categories.Functor.html" class="Module">Categories.Functor</a> <a id="1348" class="Keyword">using</a> <a id="1354" class="Symbol">(</a><a id="1355" href="Categories.Functor.Core.html#248" class="Record">Functor</a><a id="1362" class="Symbol">;</a> <a id="1364" href="Categories.Functor.html#747" class="Function Operator">_∘F_</a><a id="1368" class="Symbol">)</a> <a id="1370" class="Keyword">renaming</a> <a id="1379" class="Symbol">(</a><a id="1380" href="Categories.Functor.html#349" class="Function">id</a> <a id="1383" class="Symbol">to</a> <a id="1386" class="Function">idF</a><a id="1389" class="Symbol">)</a>
<a id="1391" class="Keyword">open</a> <a id="1396" class="Keyword">import</a> <a id="1403" href="Categories.Functor.Hom.html" class="Module">Categories.Functor.Hom</a> <a id="1426" class="Keyword">using</a> <a id="1432" class="Symbol">(</a><a id="1433" class="Keyword">module</a> <a id="1440" href="Categories.Functor.Hom.html#625" class="Module">Hom</a><a id="1443" class="Symbol">;</a> <a id="1445" href="Categories.Functor.Hom.html#1738" class="Function Operator">Hom[_][-,_]</a><a id="1456" class="Symbol">;</a> <a id="1458" href="Categories.Functor.Hom.html#1578" class="Function Operator">Hom[_][-,-]</a><a id="1469" class="Symbol">)</a>
<a id="1471" class="Keyword">open</a> <a id="1476" class="Keyword">import</a> <a id="1483" href="Categories.Functor.Bifunctor.html" class="Module">Categories.Functor.Bifunctor</a> <a id="1512" class="Keyword">using</a> <a id="1518" class="Symbol">(</a><a id="1519" href="Categories.Functor.Bifunctor.html#441" class="Function">Bifunctor</a><a id="1528" class="Symbol">)</a>
<a id="1530" class="Keyword">open</a> <a id="1535" class="Keyword">import</a> <a id="1542" href="Categories.Functor.Presheaf.html" class="Module">Categories.Functor.Presheaf</a> <a id="1570" class="Keyword">using</a> <a id="1576" class="Symbol">(</a><a id="1577" href="Categories.Functor.Presheaf.html#143" class="Function">Presheaf</a><a id="1585" class="Symbol">)</a>
<a id="1587" class="Keyword">open</a> <a id="1592" class="Keyword">import</a> <a id="1599" href="Categories.Functor.Construction.LiftSetoids.html" class="Module">Categories.Functor.Construction.LiftSetoids</a> <a id="1643" class="Keyword">using</a> <a id="1649" class="Symbol">(</a><a id="1650" href="Categories.Functor.Construction.LiftSetoids.html#1046" class="Function">LiftSetoids</a><a id="1661" class="Symbol">)</a>
<a id="1663" class="Keyword">open</a> <a id="1668" class="Keyword">import</a> <a id="1675" href="Categories.NaturalTransformation.html" class="Module">Categories.NaturalTransformation</a> <a id="1708" class="Keyword">using</a> <a id="1714" class="Symbol">(</a><a id="1715" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a><a id="1736" class="Symbol">;</a> <a id="1738" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a><a id="1746" class="Symbol">)</a> <a id="1748" class="Keyword">renaming</a> <a id="1757" class="Symbol">(</a><a id="1758" href="Categories.NaturalTransformation.Core.html#2132" class="Function">id</a> <a id="1761" class="Symbol">to</a> <a id="1764" class="Function">idN</a><a id="1767" class="Symbol">)</a>
<a id="1769" class="Keyword">open</a> <a id="1774" class="Keyword">import</a> <a id="1781" href="Categories.NaturalTransformation.NaturalIsomorphism.html" class="Module">Categories.NaturalTransformation.NaturalIsomorphism</a> <a id="1833" class="Keyword">using</a> <a id="1839" class="Symbol">(</a><a id="1840" href="Categories.NaturalTransformation.NaturalIsomorphism.html#651" class="Record">NaturalIsomorphism</a><a id="1858" class="Symbol">)</a>
<a id="1861" class="Keyword">import</a> <a id="1868" href="Categories.Morphism.html" class="Module">Categories.Morphism</a> <a id="1888" class="Symbol">as</a> <a id="1891" class="Module">Mor</a>
<a id="1895" class="Keyword">import</a> <a id="1902" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="1932" class="Symbol">as</a> <a id="1935" class="Module">MR</a>
<a id="1938" class="Keyword">import</a> <a id="1945" href="Categories.NaturalTransformation.Hom.html" class="Module">Categories.NaturalTransformation.Hom</a> <a id="1982" class="Symbol">as</a> <a id="1985" class="Module">NT-Hom</a>
<a id="1993" class="Keyword">open</a> <a id="1998" href="Function.Bundles.html#2043" class="Module">Func</a>
<a id="2004" class="Keyword">private</a>
<a id="2014" class="Keyword">variable</a>
<a id="2027" href="Categories.Yoneda.html#2027" class="Generalizable">o</a> <a id="2029" href="Categories.Yoneda.html#2029" class="Generalizable"></a> <a id="2031" href="Categories.Yoneda.html#2031" class="Generalizable">e</a> <a id="2033" class="Symbol">:</a> <a id="2035" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="2042" class="Keyword">module</a> <a id="Yoneda"></a><a id="2049" href="Categories.Yoneda.html#2049" class="Module">Yoneda</a> <a id="2056" class="Symbol">(</a><a id="2057" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2059" class="Symbol">:</a> <a id="2061" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="2070" href="Categories.Yoneda.html#2027" class="Generalizable">o</a> <a id="2072" href="Categories.Yoneda.html#2029" class="Generalizable"></a> <a id="2074" href="Categories.Yoneda.html#2031" class="Generalizable">e</a><a id="2075" class="Symbol">)</a> <a id="2077" class="Keyword">where</a>
<a id="2085" class="Keyword">open</a> <a id="2090" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="2099" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2101" class="Keyword">hiding</a> <a id="2108" class="Symbol">(</a><a id="2109" href="Categories.Category.Core.html#3132" class="Function">op</a><a id="2111" class="Symbol">)</a> <a id="2113" class="Comment">-- uses lots</a>
<a id="2128" class="Keyword">open</a> <a id="2133" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a> <a id="2146" class="Keyword">using</a> <a id="2152" class="Symbol">(</a><a id="2153" href="Categories.Category.Core.html#3061" class="Function Operator">_○_</a><a id="2156" class="Symbol">;</a> <a id="2158" href="Categories.Category.Core.html#3005" class="Function"></a><a id="2159" class="Symbol">)</a>
<a id="2163" class="Keyword">open</a> <a id="2168" href="Categories.Morphism.Reasoning.html" class="Module">MR</a> <a id="2171" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2173" class="Keyword">using</a> <a id="2179" class="Symbol">(</a><a id="2180" href="Categories.Morphism.Reasoning.Core.html#1202" class="Function">id-comm</a><a id="2187" class="Symbol">)</a>
<a id="2191" class="Keyword">open</a> <a id="2196" href="Categories.NaturalTransformation.Core.html#466" class="Module">NaturalTransformation</a> <a id="2218" class="Keyword">using</a> <a id="2224" class="Symbol">(</a><a id="2225" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a><a id="2226" class="Symbol">;</a> <a id="2228" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a><a id="2235" class="Symbol">;</a> <a id="2237" href="Categories.NaturalTransformation.Core.html#1043" class="Field">sym-commute</a><a id="2248" class="Symbol">)</a>
<a id="2252" class="Keyword">open</a> <a id="2257" href="Categories.NaturalTransformation.Hom.html" class="Module">NT-Hom</a> <a id="2264" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2266" class="Keyword">using</a> <a id="2272" class="Symbol">(</a><a id="2273" href="Categories.NaturalTransformation.Hom.html#620" class="Function">Hom[A,C]⇒Hom[B,C]</a><a id="2290" class="Symbol">)</a>
<a id="2294" class="Keyword">private</a>
<a id="2306" class="Keyword">module</a> <a id="Yoneda.CE"></a><a id="2313" href="Categories.Yoneda.html#2313" class="Module">CE</a> <a id="2316" class="Symbol">=</a> <a id="2318" href="Categories.Category.Core.html#1530" class="Module">Category.Equiv</a> <a id="2333" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2335" class="Keyword">using</a> <a id="2341" class="Symbol">(</a><a id="2342" href="Relation.Binary.Structures.html#1596" class="Function">refl</a><a id="2346" class="Symbol">)</a>
<a id="2352" class="Keyword">module</a> <a id="Yoneda.C"></a><a id="2359" href="Categories.Yoneda.html#2359" class="Module">C</a> <a id="2361" class="Symbol">=</a> <a id="2363" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="2372" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2374" class="Keyword">using</a> <a id="2380" class="Symbol">(</a><a id="2381" href="Categories.Category.Core.html#3132" class="Function">op</a><a id="2383" class="Symbol">)</a>
<a id="2388" class="Comment">-- The Yoneda embedding functor</a>
<a id="Yoneda.embed"></a><a id="2422" href="Categories.Yoneda.html#2422" class="Function">embed</a> <a id="2428" class="Symbol">:</a> <a id="2430" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="2438" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2440" class="Symbol">(</a><a id="2441" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="2452" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="2453" class="Symbol">)</a>
<a id="2457" href="Categories.Yoneda.html#2422" class="Function">embed</a> <a id="2463" class="Symbol">=</a> <a id="2465" class="Keyword">record</a>
<a id="2476" class="Symbol">{</a> <a id="2478" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="2491" class="Symbol">=</a> <a id="2493" href="Categories.Functor.Hom.html#1738" class="Function Operator">Hom[</a> <a id="2498" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2500" href="Categories.Functor.Hom.html#1738" class="Function Operator">][-,_]</a>
<a id="2511" class="Symbol">;</a> <a id="2513" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2526" class="Symbol">=</a> <a id="2528" href="Categories.NaturalTransformation.Hom.html#620" class="Function">Hom[A,C]⇒Hom[B,C]</a> <a id="2546" class="Comment">-- A⇒B induces a NatTrans on the Homs.</a>
<a id="2589" class="Symbol">;</a> <a id="2591" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="2604" class="Symbol">=</a> <a id="2606" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a>
<a id="2620" class="Symbol">;</a> <a id="2622" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="2635" class="Symbol">=</a> <a id="2637" href="Categories.Category.Core.html#715" class="Field">assoc</a>
<a id="2647" class="Symbol">;</a> <a id="2649" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="2662" class="Symbol">=</a> <a id="2664" class="Symbol">λ</a> <a id="2666" href="Categories.Yoneda.html#2666" class="Bound">f≈g</a> <a id="2670" class="Symbol"></a> <a id="2672" href="Categories.Category.Core.html#1597" class="Function">∘-resp-≈ˡ</a> <a id="2682" href="Categories.Yoneda.html#2666" class="Bound">f≈g</a>
<a id="2690" class="Symbol">}</a>
<a id="2695" class="Comment">-- Using the adjunction between product and product, we get a kind of contravariant Bifunctor</a>
<a id="Yoneda.yoneda-inverse"></a><a id="2791" href="Categories.Yoneda.html#2791" class="Function">yoneda-inverse</a> <a id="2806" class="Symbol">:</a> <a id="2808" class="Symbol">(</a><a id="2809" href="Categories.Yoneda.html#2809" class="Bound">a</a> <a id="2811" class="Symbol">:</a> <a id="2813" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="2816" class="Symbol">)</a> <a id="2818" class="Symbol">(</a><a id="2819" href="Categories.Yoneda.html#2819" class="Bound">F</a> <a id="2821" class="Symbol">:</a> <a id="2823" href="Categories.Functor.Presheaf.html#143" class="Function">Presheaf</a> <a id="2832" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="2834" class="Symbol">(</a><a id="2835" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a> <a id="2843" href="Categories.Yoneda.html#2072" class="Bound"></a> <a id="2845" href="Categories.Yoneda.html#2074" class="Bound">e</a><a id="2846" class="Symbol">))</a> <a id="2849" class="Symbol"></a>
<a id="2855" href="Function.Bundles.html#7340" class="Record">Inverse</a> <a id="2863" class="Symbol">(</a><a id="2864" href="Categories.Category.Core.html#1815" class="Function">Category.hom-setoid</a> <a id="2884" class="Symbol">(</a><a id="2885" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="2896" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="2897" class="Symbol">)</a> <a id="2899" class="Symbol">{</a><a id="2900" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="2911" href="Categories.Yoneda.html#2422" class="Function">embed</a> <a id="2917" href="Categories.Yoneda.html#2809" class="Bound">a</a><a id="2918" class="Symbol">}</a> <a id="2920" class="Symbol">{</a><a id="2921" href="Categories.Yoneda.html#2819" class="Bound">F</a><a id="2922" class="Symbol">})</a> <a id="2925" class="Symbol">(</a><a id="2926" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="2937" href="Categories.Yoneda.html#2819" class="Bound">F</a> <a id="2939" href="Categories.Yoneda.html#2809" class="Bound">a</a><a id="2940" class="Symbol">)</a>
<a id="2944" href="Categories.Yoneda.html#2791" class="Function">yoneda-inverse</a> <a id="2959" href="Categories.Yoneda.html#2959" class="Bound">a</a> <a id="2961" href="Categories.Yoneda.html#2961" class="Bound">F</a> <a id="2963" class="Symbol">=</a> <a id="2965" class="Keyword">record</a>
<a id="2976" class="Symbol">{</a> <a id="2978" href="Function.Bundles.html#7394" class="Field">to</a> <a id="2981" class="Symbol">=</a> <a id="2983" class="Symbol">λ</a> <a id="2985" href="Categories.Yoneda.html#2985" class="Bound">nat</a> <a id="2989" class="Symbol"></a> <a id="2991" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="2993" href="Categories.Yoneda.html#2985" class="Bound">nat</a> <a id="2997" href="Categories.Yoneda.html#2959" class="Bound">a</a> <a id="2999" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="3003" href="Categories.Category.Core.html#630" class="Field">id</a>
<a id="3010" class="Symbol">;</a> <a id="3012" href="Function.Bundles.html#7418" class="Field">from</a> <a id="3017" class="Symbol">=</a> <a id="3019" class="Symbol">λ</a> <a id="3021" href="Categories.Yoneda.html#3021" class="Bound">x</a> <a id="3023" class="Symbol"></a> <a id="3025" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="3034" class="Keyword">record</a>
<a id="3049" class="Symbol">{</a> <a id="3051" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="3059" class="Symbol">=</a> <a id="3061" class="Symbol">λ</a> <a id="3063" href="Categories.Yoneda.html#3063" class="Bound">X</a> <a id="3065" class="Symbol"></a> <a id="3067" class="Keyword">record</a>
<a id="3084" class="Symbol">{</a> <a id="3086" href="Function.Bundles.html#2094" class="Field">to</a> <a id="3089" class="Symbol">=</a> <a id="3091" class="Symbol">λ</a> <a id="3093" href="Categories.Yoneda.html#3093" class="Bound">X⇒a</a> <a id="3097" class="Symbol"></a> <a id="3099" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3103" href="Categories.Yoneda.html#3093" class="Bound">X⇒a</a> <a id="3107" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="3111" href="Categories.Yoneda.html#3021" class="Bound">x</a>
<a id="3123" class="Symbol">;</a> <a id="3125" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="3131" class="Symbol">=</a> <a id="3133" class="Symbol">λ</a> <a id="3135" href="Categories.Yoneda.html#3135" class="Bound">i≈j</a> <a id="3139" class="Symbol"></a> <a id="3141" href="Categories.Functor.Core.html#696" class="Field">F.F-resp-≈</a> <a id="3152" href="Categories.Yoneda.html#3135" class="Bound">i≈j</a>
<a id="3166" class="Symbol">}</a>
<a id="3176" class="Symbol">;</a> <a id="3178" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="3186" class="Symbol">=</a> <a id="3188" class="Symbol">λ</a> <a id="3190" class="Symbol">{</a><a id="3191" href="Categories.Yoneda.html#3191" class="Bound">X</a><a id="3192" class="Symbol">}</a> <a id="3194" class="Symbol">{</a><a id="3195" href="Categories.Yoneda.html#3195" class="Bound">Y</a><a id="3196" class="Symbol">}</a> <a id="3198" href="Categories.Yoneda.html#3198" class="Bound">Y⇒X</a> <a id="3202" class="Symbol">{</a><a id="3203" href="Categories.Yoneda.html#3203" class="Bound">f</a><a id="3204" class="Symbol">}</a> <a id="3206" class="Symbol"></a>
<a id="3218" class="Keyword">let</a> <a id="3222" class="Keyword">module</a> <a id="3229" href="Categories.Yoneda.html#3229" class="Module">SR</a> <a id="3232" class="Symbol">=</a> <a id="3234" href="Relation.Binary.Reasoning.Setoid.html" class="Module">SetoidR</a> <a id="3242" class="Symbol">(</a><a id="3243" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3247" href="Categories.Yoneda.html#3195" class="Bound">Y</a><a id="3248" class="Symbol">)</a> <a id="3250" class="Keyword">in</a>
<a id="3263" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">SR.begin</a>
<a id="3285" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3289" class="Symbol">(</a><a id="3290" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="3293" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3295" href="Categories.Yoneda.html#3203" class="Bound">f</a> <a id="3297" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3299" href="Categories.Yoneda.html#3198" class="Bound">Y⇒X</a><a id="3302" class="Symbol">)</a> <a id="3304" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="3308" href="Categories.Yoneda.html#3021" class="Bound">x</a> <a id="3312" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">SR.≈⟨</a> <a id="3318" href="Categories.Functor.Core.html#696" class="Field">F.F-resp-≈</a> <a id="3329" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="3339" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="3354" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3358" class="Symbol">(</a><a id="3359" href="Categories.Yoneda.html#3203" class="Bound">f</a> <a id="3361" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="3363" href="Categories.Yoneda.html#3198" class="Bound">Y⇒X</a><a id="3366" class="Symbol">)</a> <a id="3368" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="3372" href="Categories.Yoneda.html#3021" class="Bound">x</a> <a id="3381" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">SR.≈⟨</a> <a id="3387" href="Categories.Functor.Core.html#565" class="Field">F.homomorphism</a> <a id="3402" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="3417" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3421" href="Categories.Yoneda.html#3198" class="Bound">Y⇒X</a> <a id="3425" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="3429" class="Symbol">(</a><a id="3430" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3434" href="Categories.Yoneda.html#3203" class="Bound">f</a> <a id="3436" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="3440" href="Categories.Yoneda.html#3021" class="Bound">x</a><a id="3441" class="Symbol">)</a>
<a id="3454" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">SR.∎</a>
<a id="3467" class="Symbol">}</a>
<a id="3473" class="Symbol">;</a> <a id="3475" href="Function.Bundles.html#7442" class="Field">to-cong</a> <a id="3483" class="Symbol">=</a> <a id="3485" class="Symbol">λ</a> <a id="3487" href="Categories.Yoneda.html#3487" class="Bound">i≈j</a> <a id="3491" class="Symbol"></a> <a id="3493" href="Categories.Yoneda.html#3487" class="Bound">i≈j</a>
<a id="3501" class="Symbol">;</a> <a id="3503" href="Function.Bundles.html#7483" class="Field">from-cong</a> <a id="3513" class="Symbol">=</a> <a id="3515" class="Symbol">λ</a> <a id="3517" href="Categories.Yoneda.html#3517" class="Bound">x≈y</a> <a id="3521" class="Symbol"></a> <a id="3523" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="3528" class="Symbol">(</a><a id="3529" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3533" class="Symbol">_)</a> <a id="3536" href="Categories.Yoneda.html#3517" class="Bound">x≈y</a>
<a id="3544" class="Symbol">;</a> <a id="3546" href="Function.Bundles.html#7526" class="Field">inverse</a> <a id="3554" class="Symbol">=</a> <a id="3556" class="Keyword">record</a>
<a id="3569" class="Symbol">{</a> <a id="3571" href="Agda.Builtin.Sigma.html#251" class="Field">fst</a> <a id="3575" class="Symbol">=</a> <a id="3577" class="Symbol">λ</a> <a id="3579" href="Categories.Yoneda.html#3579" class="Bound">p</a> <a id="3581" class="Symbol"></a> <a id="3583" href="Relation.Binary.Structures.html#1226" class="Function">Setoid.trans</a> <a id="3596" class="Symbol">(</a><a id="3597" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3601" href="Categories.Yoneda.html#2959" class="Bound">a</a><a id="3602" class="Symbol">)</a> <a id="3604" href="Categories.Yoneda.html#3579" class="Bound">p</a> <a id="3606" href="Categories.Functor.Core.html#511" class="Field">F.identity</a>
<a id="3623" class="Symbol">;</a> <a id="3625" href="Agda.Builtin.Sigma.html#263" class="Field">snd</a> <a id="3629" class="Symbol">=</a> <a id="3631" class="Symbol">λ</a> <a id="3633" class="Symbol">{</a><a id="3634" href="Categories.Yoneda.html#3634" class="Bound">nat</a><a id="3637" class="Symbol">}</a> <a id="3639" href="Categories.Yoneda.html#3639" class="Bound">p</a> <a id="3641" class="Symbol">{</a><a id="3642" href="Categories.Yoneda.html#3642" class="Bound">x</a><a id="3643" class="Symbol">}</a> <a id="3645" class="Symbol">{</a><a id="3646" href="Categories.Yoneda.html#3646" class="Bound">f</a><a id="3647" class="Symbol">}</a> <a id="3649" class="Symbol"></a>
<a id="3659" class="Keyword">let</a> <a id="3663" class="Keyword">module</a> <a id="3670" href="Categories.Yoneda.html#3670" class="Module">S</a> <a id="3672" class="Symbol">=</a> <a id="3674" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="3681" class="Symbol">(</a><a id="3682" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3686" href="Categories.Yoneda.html#3642" class="Bound">x</a><a id="3687" class="Symbol">)</a> <a id="3689" class="Keyword">in</a>
<a id="3700" href="Relation.Binary.Structures.html#1226" class="Function">S.trans</a>
<a id="3718" class="Symbol">(</a><a id="3719" href="Relation.Binary.Structures.html#1226" class="Function">S.trans</a>
<a id="3739" class="Symbol">(</a><a id="3740" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="3745" class="Symbol">(</a><a id="3746" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3750" href="Categories.Yoneda.html#3646" class="Bound">f</a><a id="3751" class="Symbol">)</a> <a id="3753" href="Categories.Yoneda.html#3639" class="Bound">p</a><a id="3754" class="Symbol">)</a>
<a id="3768" class="Symbol">(</a><a id="3769" href="Categories.NaturalTransformation.Core.html#1043" class="Field">sym-commute</a> <a id="3781" href="Categories.Yoneda.html#3634" class="Bound">nat</a> <a id="3785" href="Categories.Yoneda.html#3646" class="Bound">f</a><a id="3786" class="Symbol">))</a>
<a id="3799" class="Symbol">(</a><a id="3800" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="3805" class="Symbol">(</a><a id="3806" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="3808" href="Categories.Yoneda.html#3634" class="Bound">nat</a> <a id="3812" href="Categories.Yoneda.html#3642" class="Bound">x</a><a id="3813" class="Symbol">)</a> <a id="3815" class="Symbol">(</a><a id="3816" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="3826" href="Categories.Category.Core.html#3061" class="Function Operator"></a> <a id="3828" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a><a id="3837" class="Symbol">))</a>
<a id="3846" class="Symbol">}</a>
<a id="3852" class="Symbol">}</a>
<a id="3858" class="Keyword">where</a>
<a id="3868" class="Keyword">module</a> <a id="3875" href="Categories.Yoneda.html#3875" class="Module">F</a> <a id="3877" class="Symbol">=</a> <a id="3879" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="3887" href="Categories.Yoneda.html#2961" class="Bound">F</a> <a id="3889" class="Keyword">using</a> <a id="3895" class="Symbol">(</a><a id="3896" href="Categories.Functor.Core.html#797" class="Function"></a><a id="3897" class="Symbol">;</a> <a id="3899" href="Categories.Functor.Core.html#806" class="Function"></a><a id="3900" class="Symbol">;</a> <a id="3902" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a><a id="3910" class="Symbol">;</a> <a id="3912" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a><a id="3924" class="Symbol">;</a> <a id="3926" href="Categories.Functor.Core.html#511" class="Field">identity</a><a id="3934" class="Symbol">)</a>
<a id="3940" class="Keyword">module</a> <a id="3947" href="Categories.Yoneda.html#3947" class="Module">SE</a> <a id="3950" class="Symbol">=</a> <a id="3952" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="3959" class="Symbol">(</a><a id="3960" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3964" href="Categories.Yoneda.html#2959" class="Bound">a</a><a id="3965" class="Symbol">)</a> <a id="3967" class="Keyword">using</a> <a id="3973" class="Symbol">(</a><a id="3974" href="Relation.Binary.Structures.html#1596" class="Function">refl</a><a id="3978" class="Symbol">)</a>
<a id="3983" class="Keyword">private</a>
<a id="3995" class="Comment">-- in this bifunctor, a presheaf from Presheaves C goes from C to Setoids e,</a>
<a id="4078" class="Comment">-- but the over Setoids has higher level than the hom setoids.</a>
<a id="Yoneda.Nat[Hom[C][-,c],F]"></a><a id="4145" href="Categories.Yoneda.html#4145" class="Function">Nat[Hom[C][-,c],F]</a> <a id="4164" class="Symbol">:</a> <a id="4166" href="Categories.Functor.Bifunctor.html#441" class="Function">Bifunctor</a> <a id="4176" class="Symbol">(</a><a id="4177" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="4188" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="4189" class="Symbol">)</a> <a id="4191" class="Symbol">(</a><a id="4192" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="4204" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="4205" class="Symbol">)</a> <a id="4207" class="Symbol">(</a><a id="4208" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a> <a id="4216" class="Symbol">_</a> <a id="4218" class="Symbol">_)</a>
<a id="4225" href="Categories.Yoneda.html#4145" class="Function">Nat[Hom[C][-,c],F]</a> <a id="4244" class="Symbol">=</a> <a id="4246" href="Categories.Functor.Hom.html#1578" class="Function Operator">Hom[</a> <a id="4251" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="4262" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="4264" href="Categories.Functor.Hom.html#1578" class="Function Operator">][-,-]</a> <a id="4271" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="4274" class="Symbol">(</a><a id="4275" href="Categories.Functor.Core.html#816" class="Function">Functor.op</a> <a id="4286" href="Categories.Yoneda.html#2422" class="Function">embed</a> <a id="4292" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="4295" href="Categories.Category.Product.html#6067" class="Function">πʳ</a> <a id="4298" href="Categories.Category.Product.html#1553" class="Function Operator"></a> <a id="4300" href="Categories.Category.Product.html#5846" class="Function">πˡ</a><a id="4302" class="Symbol">)</a>
<a id="4309" class="Comment">-- in this bifunctor, it needs to go from Presheaves which maps C to Setoids e,</a>
<a id="4395" class="Comment">-- so the universe level needs to be lifted.</a>
<a id="Yoneda.FC"></a><a id="4444" href="Categories.Yoneda.html#4444" class="Function">FC</a> <a id="4447" class="Symbol">:</a> <a id="4449" href="Categories.Functor.Bifunctor.html#441" class="Function">Bifunctor</a> <a id="4459" class="Symbol">(</a><a id="4460" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="4471" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="4472" class="Symbol">)</a> <a id="4474" class="Symbol">(</a><a id="4475" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="4487" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="4488" class="Symbol">)</a> <a id="4490" class="Symbol">(</a><a id="4491" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a> <a id="4499" class="Symbol">_</a> <a id="4501" class="Symbol">_)</a>
<a id="4508" href="Categories.Yoneda.html#4444" class="Function">FC</a> <a id="4511" class="Symbol">=</a> <a id="4513" href="Categories.Functor.Construction.LiftSetoids.html#1046" class="Function">LiftSetoids</a> <a id="4525" class="Symbol">(</a><a id="4526" href="Categories.Yoneda.html#2070" class="Bound">o</a> <a id="4528" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4530" href="Categories.Yoneda.html#2072" class="Bound"></a> <a id="4532" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4534" href="Categories.Yoneda.html#2074" class="Bound">e</a><a id="4535" class="Symbol">)</a> <a id="4537" class="Symbol">(</a><a id="4538" href="Categories.Yoneda.html#2070" class="Bound">o</a> <a id="4540" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4542" href="Categories.Yoneda.html#2072" class="Bound"></a><a id="4543" class="Symbol">)</a> <a id="4545" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="4548" href="Categories.Category.Construction.Functors.html#1890" class="Function">eval</a> <a id="4553" class="Symbol">{</a><a id="4554" class="Argument">C</a> <a id="4556" class="Symbol">=</a> <a id="4558" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="4570" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="4571" class="Symbol">}</a> <a id="4573" class="Symbol">{</a><a id="4574" class="Argument">D</a> <a id="4576" class="Symbol">=</a> <a id="4578" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a> <a id="4586" href="Categories.Yoneda.html#2072" class="Bound"></a> <a id="4588" href="Categories.Yoneda.html#2074" class="Bound">e</a><a id="4589" class="Symbol">}</a>
<a id="4596" class="Keyword">module</a> <a id="Yoneda.yoneda-inverse"></a><a id="4603" href="Categories.Yoneda.html#4603" class="Module">yoneda-inverse</a> <a id="4618" class="Symbol">{</a><a id="4619" href="Categories.Yoneda.html#4619" class="Bound">a</a><a id="4620" class="Symbol">}</a> <a id="4622" class="Symbol">{</a><a id="4623" href="Categories.Yoneda.html#4623" class="Bound">F</a><a id="4624" class="Symbol">}</a> <a id="4626" class="Symbol">=</a> <a id="4628" href="Function.Bundles.html#7340" class="Module">Inverse</a> <a id="4636" class="Symbol">(</a><a id="4637" href="Categories.Yoneda.html#2791" class="Function">yoneda-inverse</a> <a id="4652" href="Categories.Yoneda.html#4619" class="Bound">a</a> <a id="4654" href="Categories.Yoneda.html#4623" class="Bound">F</a><a id="4655" class="Symbol">)</a>
<a id="4660" class="Comment">-- the two bifunctors above are naturally isomorphic.</a>
<a id="4716" class="Comment">-- it is easy to show yoneda-inverse first then to yoneda.</a>
<a id="Yoneda.yoneda"></a><a id="4777" href="Categories.Yoneda.html#4777" class="Function">yoneda</a> <a id="4784" class="Symbol">:</a> <a id="4786" href="Categories.NaturalTransformation.NaturalIsomorphism.html#651" class="Record">NaturalIsomorphism</a> <a id="4805" href="Categories.Yoneda.html#4145" class="Function">Nat[Hom[C][-,c],F]</a> <a id="4824" href="Categories.Yoneda.html#4444" class="Function">FC</a>
<a id="4829" href="Categories.Yoneda.html#4777" class="Function">yoneda</a> <a id="4836" class="Symbol">=</a> <a id="4838" class="Keyword">record</a>
<a id="4849" class="Symbol">{</a> <a id="4851" href="Categories.NaturalTransformation.NaturalIsomorphism.html#891" class="Field">F⇒G</a> <a id="4855" class="Symbol">=</a> <a id="4857" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="4866" class="Keyword">record</a>
<a id="4879" class="Symbol">{</a> <a id="4881" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="4889" class="Symbol">=</a> <a id="4891" class="Symbol">λ</a> <a id="4893" class="Keyword">where</a>
<a id="4907" class="Symbol">(</a><a id="4908" href="Categories.Yoneda.html#4908" class="Bound">F</a> <a id="4910" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4912" href="Categories.Yoneda.html#4912" class="Bound">A</a><a id="4913" class="Symbol">)</a> <a id="4915" class="Symbol"></a> <a id="4917" class="Keyword">record</a>
<a id="4934" class="Symbol">{</a> <a id="4936" href="Function.Bundles.html#2094" class="Field">to</a> <a id="4939" class="Symbol">=</a> <a id="4941" class="Symbol">λ</a> <a id="4943" href="Categories.Yoneda.html#4943" class="Bound">α</a> <a id="4945" class="Symbol"></a> <a id="4947" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="4952" class="Symbol">(</a><a id="4953" href="Function.Bundles.html#7394" class="Function">yoneda-inverse.to</a> <a id="4971" href="Categories.Yoneda.html#4943" class="Bound">α</a><a id="4972" class="Symbol">)</a>
<a id="4984" class="Symbol">;</a> <a id="4986" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="4992" class="Symbol">=</a> <a id="4994" class="Symbol">λ</a> <a id="4996" href="Categories.Yoneda.html#4996" class="Bound">i≈j</a> <a id="5000" class="Symbol"></a> <a id="5002" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="5007" href="Categories.Yoneda.html#4996" class="Bound">i≈j</a>
<a id="5021" class="Symbol">}</a>
<a id="5029" class="Symbol">;</a> <a id="5031" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="5039" class="Symbol">=</a> <a id="5041" class="Symbol">λ</a> <a id="5043" class="Keyword">where</a>
<a id="5057" class="Symbol">{_}</a> <a id="5061" class="Symbol">{</a><a id="5062" href="Categories.Yoneda.html#5062" class="Bound">G</a> <a id="5064" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5066" href="Categories.Yoneda.html#5066" class="Bound">B</a><a id="5067" class="Symbol">}</a> <a id="5069" class="Symbol">(</a><a id="5070" href="Categories.Yoneda.html#5070" class="Bound">α</a> <a id="5072" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5074" href="Categories.Yoneda.html#5074" class="Bound">f</a><a id="5075" class="Symbol">)</a> <a id="5077" class="Symbol">{</a><a id="5078" href="Categories.Yoneda.html#5078" class="Bound">β</a><a id="5079" class="Symbol">}</a> <a id="5081" class="Symbol"></a> <a id="5083" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="5088" href="Function.Base.html#1974" class="Function Operator">$</a> <a id="5090" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="5095" class="Symbol">(</a><a id="5096" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5098" href="Categories.Yoneda.html#5070" class="Bound">α</a> <a id="5100" href="Categories.Yoneda.html#5066" class="Bound">B</a><a id="5101" class="Symbol">)</a> <a id="5103" class="Symbol">(</a><a id="5104" href="Categories.Yoneda.html#5576" class="Function">helper</a> <a id="5111" href="Categories.Yoneda.html#5074" class="Bound">f</a> <a id="5113" href="Categories.Yoneda.html#5078" class="Bound">β</a><a id="5114" class="Symbol">)</a>
<a id="5122" class="Symbol">}</a>
<a id="5128" class="Symbol">;</a> <a id="5130" href="Categories.NaturalTransformation.NaturalIsomorphism.html#927" class="Field">F⇐G</a> <a id="5134" class="Symbol">=</a> <a id="5136" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="5145" class="Keyword">record</a>
<a id="5158" class="Symbol">{</a> <a id="5160" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="5168" class="Symbol">=</a> <a id="5170" class="Symbol">λ</a> <a id="5172" class="Symbol">{</a> <a id="5174" class="Symbol">(</a><a id="5175" href="Categories.Yoneda.html#5175" class="Bound">F</a> <a id="5177" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5179" href="Categories.Yoneda.html#5179" class="Bound">A</a><a id="5180" class="Symbol">)</a> <a id="5182" class="Symbol"></a> <a id="5184" class="Keyword">record</a>
<a id="5201" class="Symbol">{</a> <a id="5203" href="Function.Bundles.html#2094" class="Field">to</a> <a id="5206" class="Symbol">=</a> <a id="5208" class="Symbol">λ</a> <a id="5210" href="Categories.Yoneda.html#5210" class="Bound">x</a> <a id="5212" class="Symbol"></a> <a id="5214" href="Function.Bundles.html#7418" class="Function">yoneda-inverse.from</a> <a id="5234" class="Symbol">(</a><a id="5235" href="Level.html#479" class="Field">lower</a> <a id="5241" href="Categories.Yoneda.html#5210" class="Bound">x</a><a id="5242" class="Symbol">)</a>
<a id="5254" class="Symbol">;</a> <a id="5256" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="5262" class="Symbol">=</a> <a id="5264" class="Symbol">λ</a> <a id="5266" href="Categories.Yoneda.html#5266" class="Bound">x≈y</a> <a id="5270" class="Symbol"></a> <a id="5272" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="5277" class="Symbol">(</a><a id="5278" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="5289" href="Categories.Yoneda.html#5175" class="Bound">F</a> <a id="5291" class="Symbol">_)</a> <a id="5294" class="Symbol">(</a><a id="5295" href="Level.html#479" class="Field">lower</a> <a id="5301" href="Categories.Yoneda.html#5266" class="Bound">x≈y</a><a id="5304" class="Symbol">)</a>
<a id="5316" class="Symbol">}</a> <a id="5318" class="Symbol">}</a>
<a id="5326" class="Symbol">;</a> <a id="5328" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="5336" class="Symbol">=</a> <a id="5338" class="Symbol">λ</a> <a id="5340" class="Symbol">{</a> <a id="5342" class="Symbol">{</a><a id="5343" href="Categories.Yoneda.html#5343" class="Bound">F</a> <a id="5345" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5347" href="Categories.Yoneda.html#5347" class="Bound">X</a><a id="5348" class="Symbol">}</a> <a id="5350" class="Symbol">(</a><a id="5351" href="Categories.Yoneda.html#5351" class="Bound">α</a> <a id="5353" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5355" href="Categories.Yoneda.html#5355" class="Bound">f</a><a id="5356" class="Symbol">)</a> <a id="5358" class="Symbol"></a> <a id="5360" href="Categories.Yoneda.html#6166" class="Function">helper</a> <a id="5368" href="Categories.Yoneda.html#5351" class="Bound">α</a> <a id="5370" href="Categories.Yoneda.html#5355" class="Bound">f</a> <a id="5372" class="Symbol">(</a><a id="5373" href="Relation.Binary.Structures.html#1596" class="Function">Setoid.refl</a> <a id="5385" class="Symbol">(</a><a id="5386" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="5397" href="Categories.Yoneda.html#5343" class="Bound">F</a> <a id="5399" href="Categories.Yoneda.html#5347" class="Bound">X</a><a id="5400" class="Symbol">))</a> <a id="5403" class="Symbol">}</a>
<a id="5411" class="Symbol">}</a>
<a id="5417" class="Symbol">;</a> <a id="5419" href="Categories.NaturalTransformation.NaturalIsomorphism.html#1051" class="Field">iso</a> <a id="5423" class="Symbol">=</a> <a id="5425" class="Symbol">λ</a> <a id="5427" class="Symbol">{</a> <a id="5429" class="Symbol">(</a><a id="5430" href="Categories.Yoneda.html#5430" class="Bound">F</a> <a id="5432" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="5434" href="Categories.Yoneda.html#5434" class="Bound">A</a><a id="5435" class="Symbol">)</a> <a id="5437" class="Symbol"></a> <a id="5439" class="Keyword">record</a>
<a id="5454" class="Symbol">{</a> <a id="5456" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="5461" class="Symbol">=</a> <a id="5463" class="Symbol">λ</a> <a id="5465" class="Symbol">{</a><a id="5466" href="Categories.Yoneda.html#5466" class="Bound">α</a><a id="5467" class="Symbol">}</a> <a id="5469" class="Symbol"></a> <a id="5471" href="Function.Structures.html#3388" class="Function">yoneda-inverse.strictlyInverseʳ</a> <a id="5503" href="Categories.Yoneda.html#5466" class="Bound">α</a>
<a id="5513" class="Symbol">;</a> <a id="5515" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="5520" class="Symbol">=</a> <a id="5522" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="5527" class="Symbol">(</a><a id="5528" href="Categories.Functor.Core.html#511" class="Field">Functor.identity</a> <a id="5545" href="Categories.Yoneda.html#5430" class="Bound">F</a><a id="5546" class="Symbol">)</a>
<a id="5556" class="Symbol">}</a> <a id="5558" class="Symbol">}</a>
<a id="5564" class="Symbol">}</a>
<a id="5570" class="Keyword">where</a> <a id="5576" href="Categories.Yoneda.html#5576" class="Function">helper</a> <a id="5583" class="Symbol">:</a> <a id="5585" class="Symbol">{</a><a id="5586" href="Categories.Yoneda.html#5586" class="Bound">F</a> <a id="5588" class="Symbol">:</a> <a id="5590" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="5598" href="Categories.Category.Core.html#3132" class="Function">C.op</a> <a id="5603" class="Symbol">(</a><a id="5604" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a> <a id="5612" href="Categories.Yoneda.html#2072" class="Bound"></a> <a id="5614" href="Categories.Yoneda.html#2074" class="Bound">e</a><a id="5615" class="Symbol">)}</a>
<a id="5637" class="Symbol">{</a><a id="5638" href="Categories.Yoneda.html#5638" class="Bound">A</a> <a id="5640" href="Categories.Yoneda.html#5640" class="Bound">B</a> <a id="5642" class="Symbol">:</a> <a id="5644" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="5647" class="Symbol">}</a> <a id="5649" class="Symbol">(</a><a id="5650" href="Categories.Yoneda.html#5650" class="Bound">f</a> <a id="5652" class="Symbol">:</a> <a id="5654" href="Categories.Yoneda.html#5640" class="Bound">B</a> <a id="5656" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="5658" href="Categories.Yoneda.html#5638" class="Bound">A</a><a id="5659" class="Symbol">)</a>
<a id="5680" class="Symbol">(</a><a id="5681" href="Categories.Yoneda.html#5681" class="Bound">β</a> <a id="5683" class="Symbol">:</a> <a id="5685" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a> <a id="5707" href="Categories.Functor.Hom.html#1738" class="Function Operator">Hom[</a> <a id="5712" href="Categories.Yoneda.html#2057" class="Bound">C</a> <a id="5714" href="Categories.Functor.Hom.html#1738" class="Function Operator">][-,</a> <a id="5719" href="Categories.Yoneda.html#5638" class="Bound">A</a> <a id="5721" href="Categories.Functor.Hom.html#1738" class="Function Operator">]</a> <a id="5723" href="Categories.Yoneda.html#5586" class="Bound">F</a><a id="5724" class="Symbol">)</a> <a id="5726" class="Symbol"></a>
<a id="5747" href="Relation.Binary.Bundles.html#1169" class="Field Operator">Setoid._≈_</a> <a id="5758" class="Symbol">(</a><a id="5759" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="5770" href="Categories.Yoneda.html#5586" class="Bound">F</a> <a id="5772" href="Categories.Yoneda.html#5640" class="Bound">B</a><a id="5773" class="Symbol">)</a> <a id="5775" class="Symbol">(</a><a id="5776" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5778" href="Categories.Yoneda.html#5681" class="Bound">β</a> <a id="5780" href="Categories.Yoneda.html#5640" class="Bound">B</a> <a id="5782" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="5786" href="Categories.Yoneda.html#5650" class="Bound">f</a> <a id="5788" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="5790" href="Categories.Category.Core.html#630" class="Field">id</a><a id="5792" class="Symbol">)</a> <a id="5794" class="Symbol">(</a><a id="5795" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="5806" href="Categories.Yoneda.html#5586" class="Bound">F</a> <a id="5808" href="Categories.Yoneda.html#5650" class="Bound">f</a> <a id="5810" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="5814" class="Symbol">(</a><a id="5815" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5817" href="Categories.Yoneda.html#5681" class="Bound">β</a> <a id="5819" href="Categories.Yoneda.html#5638" class="Bound">A</a> <a id="5821" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="5825" href="Categories.Category.Core.html#630" class="Field">id</a><a id="5827" class="Symbol">))</a>
<a id="5840" href="Categories.Yoneda.html#5576" class="Function">helper</a> <a id="5847" class="Symbol">{</a><a id="5848" href="Categories.Yoneda.html#5848" class="Bound">F</a><a id="5849" class="Symbol">}</a> <a id="5851" class="Symbol">{</a><a id="5852" href="Categories.Yoneda.html#5852" class="Bound">A</a><a id="5853" class="Symbol">}</a> <a id="5855" class="Symbol">{</a><a id="5856" href="Categories.Yoneda.html#5856" class="Bound">B</a><a id="5857" class="Symbol">}</a> <a id="5859" href="Categories.Yoneda.html#5859" class="Bound">f</a> <a id="5861" href="Categories.Yoneda.html#5861" class="Bound">β</a> <a id="5863" class="Symbol">=</a> <a id="5865" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">S.begin</a>
<a id="5885" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5887" href="Categories.Yoneda.html#5861" class="Bound">β</a> <a id="5889" href="Categories.Yoneda.html#5856" class="Bound">B</a> <a id="5891" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="5895" href="Categories.Yoneda.html#5859" class="Bound">f</a> <a id="5897" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="5899" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="5910" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">S.≈⟨</a> <a id="5915" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="5920" class="Symbol">(</a><a id="5921" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5923" href="Categories.Yoneda.html#5861" class="Bound">β</a> <a id="5925" href="Categories.Yoneda.html#5856" class="Bound">B</a><a id="5926" class="Symbol">)</a> <a id="5928" class="Symbol">(</a><a id="5929" href="Categories.Morphism.Reasoning.Core.html#1202" class="Function">id-comm</a> <a id="5937" href="Categories.Category.Core.html#3061" class="Function Operator"></a> <a id="5939" class="Symbol">(</a><a id="5940" href="Categories.Category.Core.html#3005" class="Function"></a> <a id="5942" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a><a id="5951" class="Symbol">))</a> <a id="5954" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="5968" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5970" href="Categories.Yoneda.html#5861" class="Bound">β</a> <a id="5972" href="Categories.Yoneda.html#5856" class="Bound">B</a> <a id="5974" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="5978" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="5981" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="5983" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="5986" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="5988" href="Categories.Yoneda.html#5859" class="Bound">f</a> <a id="5993" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">S.≈⟨</a> <a id="5998" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a> <a id="6006" href="Categories.Yoneda.html#5861" class="Bound">β</a> <a id="6008" href="Categories.Yoneda.html#5859" class="Bound">f</a> <a id="6010" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="6024" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6028" href="Categories.Yoneda.html#5859" class="Bound">f</a> <a id="6030" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6034" class="Symbol">(</a><a id="6035" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6037" href="Categories.Yoneda.html#5861" class="Bound">β</a> <a id="6039" href="Categories.Yoneda.html#5852" class="Bound">A</a> <a id="6041" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6045" href="Categories.Category.Core.html#630" class="Field">id</a><a id="6047" class="Symbol">)</a> <a id="6049" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">S.∎</a>
<a id="6065" class="Keyword">where</a>
<a id="6083" class="Keyword">module</a> <a id="6090" href="Categories.Yoneda.html#6090" class="Module">F</a> <a id="6092" class="Symbol">=</a> <a id="6094" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="6102" href="Categories.Yoneda.html#5848" class="Bound">F</a> <a id="6104" class="Keyword">using</a> <a id="6110" class="Symbol">(</a><a id="6111" href="Categories.Functor.Core.html#797" class="Function"></a><a id="6112" class="Symbol">;</a><a id="6113" href="Categories.Functor.Core.html#806" class="Function"></a><a id="6114" class="Symbol">)</a>
<a id="6128" class="Keyword">module</a> <a id="6135" href="Categories.Yoneda.html#6135" class="Module">S</a> <a id="6137" class="Symbol">=</a> <a id="6139" href="Relation.Binary.Reasoning.Setoid.html" class="Module">SetoidR</a> <a id="6147" class="Symbol">(</a><a id="6148" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="6152" href="Categories.Yoneda.html#5856" class="Bound">B</a><a id="6153" class="Symbol">)</a>
<a id="6166" href="Categories.Yoneda.html#6166" class="Function">helper</a> <a id="6174" class="Symbol">:</a> <a id="6176" class="Symbol"></a> <a id="6178" class="Symbol">{</a><a id="6179" href="Categories.Yoneda.html#6179" class="Bound">F</a> <a id="6181" href="Categories.Yoneda.html#6181" class="Bound">G</a> <a id="6183" class="Symbol">:</a> <a id="6185" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="6193" class="Symbol">(</a><a id="6194" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="6206" href="Categories.Yoneda.html#2057" class="Bound">C</a><a id="6207" class="Symbol">)</a> <a id="6209" class="Symbol">(</a><a id="6210" href="Categories.Category.Instance.Setoids.html#555" class="Function">Setoids</a> <a id="6218" href="Categories.Yoneda.html#2072" class="Bound"></a> <a id="6220" href="Categories.Yoneda.html#2074" class="Bound">e</a><a id="6221" class="Symbol">)}</a>
<a id="6246" class="Symbol">{</a><a id="6247" href="Categories.Yoneda.html#6247" class="Bound">A</a> <a id="6249" href="Categories.Yoneda.html#6249" class="Bound">B</a> <a id="6251" href="Categories.Yoneda.html#6251" class="Bound">Z</a> <a id="6253" class="Symbol">:</a> <a id="6255" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="6258" class="Symbol">}</a>
<a id="6282" class="Symbol">{</a><a id="6283" href="Categories.Yoneda.html#6283" class="Bound">h</a> <a id="6285" class="Symbol">:</a> <a id="6287" href="Categories.Yoneda.html#6251" class="Bound">Z</a> <a id="6289" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="6291" href="Categories.Yoneda.html#6249" class="Bound">B</a><a id="6292" class="Symbol">}</a>
<a id="6316" class="Symbol">{</a><a id="6317" href="Categories.Yoneda.html#6317" class="Bound">X</a> <a id="6319" href="Categories.Yoneda.html#6319" class="Bound">Y</a> <a id="6321" class="Symbol">:</a> <a id="6323" href="Relation.Binary.Bundles.html#1143" class="Field">Setoid.Carrier</a> <a id="6338" class="Symbol">(</a><a id="6339" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6350" href="Categories.Yoneda.html#6179" class="Bound">F</a> <a id="6352" href="Categories.Yoneda.html#6247" class="Bound">A</a><a id="6353" class="Symbol">)}</a>
<a id="6378" class="Symbol">(</a><a id="6379" href="Categories.Yoneda.html#6379" class="Bound">α</a> <a id="6381" class="Symbol">:</a> <a id="6383" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a> <a id="6405" href="Categories.Yoneda.html#6179" class="Bound">F</a> <a id="6407" href="Categories.Yoneda.html#6181" class="Bound">G</a><a id="6408" class="Symbol">)</a>
<a id="6432" class="Symbol">(</a><a id="6433" href="Categories.Yoneda.html#6433" class="Bound">f</a> <a id="6435" class="Symbol">:</a> <a id="6437" href="Categories.Yoneda.html#6249" class="Bound">B</a> <a id="6439" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="6441" href="Categories.Yoneda.html#6247" class="Bound">A</a><a id="6442" class="Symbol">)</a> <a id="6444" class="Symbol"></a>
<a id="6468" href="Relation.Binary.Bundles.html#1169" class="Field Operator">Setoid._≈_</a> <a id="6479" class="Symbol">(</a><a id="6480" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6491" href="Categories.Yoneda.html#6179" class="Bound">F</a> <a id="6493" href="Categories.Yoneda.html#6247" class="Bound">A</a><a id="6494" class="Symbol">)</a> <a id="6496" href="Categories.Yoneda.html#6317" class="Bound">X</a> <a id="6498" href="Categories.Yoneda.html#6319" class="Bound">Y</a> <a id="6500" class="Symbol"></a>
<a id="6524" href="Relation.Binary.Bundles.html#1169" class="Field Operator">Setoid._≈_</a> <a id="6535" class="Symbol">(</a><a id="6536" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6547" href="Categories.Yoneda.html#6181" class="Bound">G</a> <a id="6549" href="Categories.Yoneda.html#6251" class="Bound">Z</a><a id="6550" class="Symbol">)</a> <a id="6552" class="Symbol">(</a><a id="6553" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="6564" href="Categories.Yoneda.html#6181" class="Bound">G</a> <a id="6566" href="Categories.Yoneda.html#6283" class="Bound">h</a> <a id="6568" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6572" class="Symbol">(</a><a id="6573" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6575" href="Categories.Yoneda.html#6379" class="Bound">α</a> <a id="6577" href="Categories.Yoneda.html#6249" class="Bound">B</a> <a id="6579" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6583" class="Symbol">(</a><a id="6584" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="6595" href="Categories.Yoneda.html#6179" class="Bound">F</a> <a id="6597" href="Categories.Yoneda.html#6433" class="Bound">f</a> <a id="6599" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6603" href="Categories.Yoneda.html#6317" class="Bound">X</a><a id="6604" class="Symbol">)))</a>
<a id="6650" class="Symbol">(</a><a id="6651" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6653" href="Categories.Yoneda.html#6379" class="Bound">α</a> <a id="6655" href="Categories.Yoneda.html#6251" class="Bound">Z</a> <a id="6657" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6661" class="Symbol">(</a><a id="6662" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="6673" href="Categories.Yoneda.html#6179" class="Bound">F</a> <a id="6675" class="Symbol">(</a><a id="6676" href="Categories.Yoneda.html#6433" class="Bound">f</a> <a id="6678" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="6680" href="Categories.Yoneda.html#6283" class="Bound">h</a><a id="6681" class="Symbol">)</a> <a id="6683" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6687" href="Categories.Yoneda.html#6319" class="Bound">Y</a><a id="6688" class="Symbol">))</a>
<a id="6701" href="Categories.Yoneda.html#6166" class="Function">helper</a> <a id="6709" class="Symbol">{</a><a id="6710" href="Categories.Yoneda.html#6710" class="Bound">F</a><a id="6711" class="Symbol">}</a> <a id="6713" class="Symbol">{</a><a id="6714" href="Categories.Yoneda.html#6714" class="Bound">G</a><a id="6715" class="Symbol">}</a> <a id="6717" class="Symbol">{</a><a id="6718" href="Categories.Yoneda.html#6718" class="Bound">A</a><a id="6719" class="Symbol">}</a> <a id="6721" class="Symbol">{</a><a id="6722" href="Categories.Yoneda.html#6722" class="Bound">B</a><a id="6723" class="Symbol">}</a> <a id="6725" class="Symbol">{</a><a id="6726" href="Categories.Yoneda.html#6726" class="Bound">Z</a><a id="6727" class="Symbol">}</a> <a id="6729" class="Symbol">{</a><a id="6730" href="Categories.Yoneda.html#6730" class="Bound">h</a><a id="6731" class="Symbol">}</a> <a id="6733" class="Symbol">{</a><a id="6734" href="Categories.Yoneda.html#6734" class="Bound">X</a><a id="6735" class="Symbol">}</a> <a id="6737" class="Symbol">{</a><a id="6738" href="Categories.Yoneda.html#6738" class="Bound">Y</a><a id="6739" class="Symbol">}</a> <a id="6741" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6743" href="Categories.Yoneda.html#6743" class="Bound">f</a> <a id="6745" href="Categories.Yoneda.html#6745" class="Bound">eq</a> <a id="6748" class="Symbol">=</a> <a id="6750" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">S.begin</a>
<a id="6770" href="Categories.Functor.Core.html#806" class="Function">G.₁</a> <a id="6774" href="Categories.Yoneda.html#6730" class="Bound">h</a> <a id="6776" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6780" class="Symbol">(</a><a id="6781" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6783" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6785" href="Categories.Yoneda.html#6722" class="Bound">B</a> <a id="6787" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6791" class="Symbol">(</a><a id="6792" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6796" href="Categories.Yoneda.html#6743" class="Bound">f</a> <a id="6798" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6802" href="Categories.Yoneda.html#6734" class="Bound">X</a><a id="6803" class="Symbol">))</a> <a id="6806" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">S.≈˘⟨</a> <a id="6812" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a> <a id="6820" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6822" href="Categories.Yoneda.html#6730" class="Bound">h</a> <a id="6824" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="6838" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6840" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6842" href="Categories.Yoneda.html#6726" class="Bound">Z</a> <a id="6844" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6848" class="Symbol">(</a><a id="6849" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6853" href="Categories.Yoneda.html#6730" class="Bound">h</a> <a id="6855" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6859" class="Symbol">(</a><a id="6860" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6864" href="Categories.Yoneda.html#6743" class="Bound">f</a> <a id="6866" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6870" href="Categories.Yoneda.html#6734" class="Bound">X</a><a id="6871" class="Symbol">))</a> <a id="6874" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">S.≈⟨</a> <a id="6879" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="6884" class="Symbol">(</a><a id="6885" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6887" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6889" href="Categories.Yoneda.html#6726" class="Bound">Z</a><a id="6890" class="Symbol">)</a> <a id="6892" class="Symbol">(</a><a id="6893" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="6898" class="Symbol">(</a><a id="6899" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6903" href="Categories.Yoneda.html#6730" class="Bound">h</a><a id="6904" class="Symbol">)</a> <a id="6906" class="Symbol">(</a><a id="6907" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="6912" class="Symbol">(</a><a id="6913" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6917" href="Categories.Yoneda.html#6743" class="Bound">f</a><a id="6918" class="Symbol">)</a> <a id="6920" href="Categories.Yoneda.html#6745" class="Bound">eq</a><a id="6922" class="Symbol">))</a> <a id="6925" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function"></a>
<a id="6939" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6941" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6943" href="Categories.Yoneda.html#6726" class="Bound">Z</a> <a id="6945" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6949" class="Symbol">(</a><a id="6950" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6954" href="Categories.Yoneda.html#6730" class="Bound">h</a> <a id="6956" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6960" class="Symbol">(</a><a id="6961" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6965" href="Categories.Yoneda.html#6743" class="Bound">f</a> <a id="6967" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="6971" href="Categories.Yoneda.html#6738" class="Bound">Y</a><a id="6972" class="Symbol">))</a> <a id="6975" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">S.≈˘⟨</a> <a id="6981" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="6986" class="Symbol">(</a><a id="6987" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6989" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="6991" href="Categories.Yoneda.html#6726" class="Bound">Z</a><a id="6992" class="Symbol">)</a> <a id="6994" href="Categories.Functor.Core.html#565" class="Function">F.homomorphism</a> <a id="7009" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function"></a>
<a id="7023" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7025" href="Categories.Yoneda.html#6741" class="Bound">α</a> <a id="7027" href="Categories.Yoneda.html#6726" class="Bound">Z</a> <a id="7029" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="7033" class="Symbol">(</a><a id="7034" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7038" class="Symbol">(</a><a id="7039" href="Categories.Yoneda.html#6743" class="Bound">f</a> <a id="7041" href="Categories.Category.Core.html#656" class="Field Operator"></a> <a id="7043" href="Categories.Yoneda.html#6730" class="Bound">h</a><a id="7044" class="Symbol">)</a> <a id="7046" href="Function.Bundles.html#15133" class="Function Operator">⟨$⟩</a> <a id="7050" href="Categories.Yoneda.html#6738" class="Bound">Y</a><a id="7051" class="Symbol">)</a> <a id="7059" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">S.∎</a>
<a id="7075" class="Keyword">where</a>
<a id="7095" class="Keyword">module</a> <a id="7102" href="Categories.Yoneda.html#7102" class="Module">F</a> <a id="7104" class="Symbol">=</a> <a id="7106" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="7114" href="Categories.Yoneda.html#6710" class="Bound">F</a> <a id="7116" class="Keyword">using</a> <a id="7122" class="Symbol">(</a><a id="7123" href="Categories.Functor.Core.html#797" class="Function"></a><a id="7124" class="Symbol">;</a> <a id="7126" href="Categories.Functor.Core.html#806" class="Function"></a><a id="7127" class="Symbol">;</a> <a id="7129" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a><a id="7141" class="Symbol">;</a> <a id="7143" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a><a id="7151" class="Symbol">)</a>
<a id="7167" class="Keyword">module</a> <a id="7174" href="Categories.Yoneda.html#7174" class="Module">G</a> <a id="7176" class="Symbol">=</a> <a id="7178" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="7186" href="Categories.Yoneda.html#6714" class="Bound">G</a> <a id="7188" class="Keyword">using</a> <a id="7194" class="Symbol">(</a><a id="7195" href="Categories.Functor.Core.html#797" class="Function"></a><a id="7196" class="Symbol">;</a> <a id="7198" href="Categories.Functor.Core.html#806" class="Function"></a><a id="7199" class="Symbol">)</a>
<a id="7215" class="Keyword">module</a> <a id="7222" href="Categories.Yoneda.html#7222" class="Module">S</a> <a id="7224" class="Symbol">=</a> <a id="7226" href="Relation.Binary.Reasoning.Setoid.html" class="Module">SetoidR</a> <a id="7234" class="Symbol">(</a><a id="7235" href="Categories.Functor.Core.html#797" class="Function">G.₀</a> <a id="7239" href="Categories.Yoneda.html#6726" class="Bound">Z</a><a id="7240" class="Symbol">)</a>
<a id="7256" class="Keyword">module</a> <a id="7263" href="Categories.Yoneda.html#7263" class="Module">S</a> <a id="7266" class="Symbol">=</a> <a id="7268" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="7275" class="Symbol">(</a><a id="7276" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="7280" href="Categories.Yoneda.html#6722" class="Bound">B</a><a id="7281" class="Symbol">)</a> <a id="7283" class="Keyword">using</a> <a id="7289" class="Symbol">(</a><a id="7290" href="Relation.Binary.Structures.html#1596" class="Function">refl</a><a id="7294" class="Symbol">;</a> <a id="7296" href="Relation.Binary.Structures.html#1200" class="Function">sym</a><a id="7299" class="Symbol">)</a>
<a id="7304" class="Keyword">module</a> <a id="Yoneda.yoneda"></a><a id="7311" href="Categories.Yoneda.html#7311" class="Module">yoneda</a> <a id="7318" class="Symbol">=</a> <a id="7320" href="Categories.NaturalTransformation.NaturalIsomorphism.html#651" class="Module">NaturalIsomorphism</a> <a id="7339" href="Categories.Yoneda.html#4777" class="Function">yoneda</a>
</pre></body></html>