mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
166 lines
80 KiB
HTML
166 lines
80 KiB
HTML
|
<!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 'locally small' 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#1928" class="Function Operator">_$_</a><a id="762" class="Symbol">)</a>
|
|||
|
<a id="764" class="Keyword">open</a> <a id="769" class="Keyword">import</a> <a id="776" href="Function.Bundles.html" class="Module">Function.Bundles</a> <a id="793" class="Keyword">using</a> <a id="799" class="Symbol">(</a><a id="800" href="Function.Bundles.html#5801" class="Record">Inverse</a><a id="807" class="Symbol">)</a>
|
|||
|
<a id="809" class="Keyword">open</a> <a id="814" class="Keyword">import</a> <a id="821" href="Function.Equality.html" class="Module">Function.Equality</a> <a id="839" class="Keyword">using</a> <a id="845" class="Symbol">(</a><a id="846" href="Function.Equality.html#898" class="Record">Π</a><a id="847" class="Symbol">;</a> <a id="849" href="Function.Equality.html#1073" class="Field Operator">_⟨$⟩_</a><a id="854" class="Symbol">;</a> <a id="856" href="Function.Equality.html#1140" class="Field">cong</a><a id="860" class="Symbol">)</a>
|
|||
|
<a id="862" class="Keyword">open</a> <a id="867" class="Keyword">import</a> <a id="874" href="Relation.Binary.Bundles.html" class="Module">Relation.Binary.Bundles</a> <a id="898" class="Keyword">using</a> <a id="904" class="Symbol">(</a><a id="905" class="Keyword">module</a> <a id="912" href="Relation.Binary.Bundles.html#1018" class="Module">Setoid</a><a id="918" class="Symbol">)</a>
|
|||
|
<a id="920" class="Keyword">import</a> <a id="927" href="Relation.Binary.Reasoning.Setoid.html" class="Module">Relation.Binary.Reasoning.Setoid</a> <a id="960" class="Symbol">as</a> <a id="963" class="Module">SetoidR</a>
|
|||
|
<a id="971" class="Keyword">open</a> <a id="976" class="Keyword">import</a> <a id="983" href="Data.Product.html" class="Module">Data.Product</a> <a id="996" class="Keyword">using</a> <a id="1002" class="Symbol">(</a><a id="1003" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">_,_</a><a id="1006" class="Symbol">;</a> <a id="1008" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a><a id="1009" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="1012" class="Keyword">open</a> <a id="1017" class="Keyword">import</a> <a id="1024" href="Categories.Category.html" class="Module">Categories.Category</a> <a id="1044" class="Keyword">using</a> <a id="1050" class="Symbol">(</a><a id="1051" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="1059" class="Symbol">;</a> <a id="1061" href="Categories.Category.html#502" class="Function Operator">_[_,_]</a><a id="1067" class="Symbol">)</a>
|
|||
|
<a id="1069" class="Keyword">open</a> <a id="1074" class="Keyword">import</a> <a id="1081" href="Categories.Category.Product.html" class="Module">Categories.Category.Product</a> <a id="1109" class="Keyword">using</a> <a id="1115" class="Symbol">(</a><a id="1116" href="Categories.Category.Product.html#6067" class="Function">πʳ</a><a id="1118" class="Symbol">;</a> <a id="1120" href="Categories.Category.Product.html#5846" class="Function">πˡ</a><a id="1122" class="Symbol">;</a> <a id="1124" href="Categories.Category.Product.html#1553" class="Function Operator">_※_</a><a id="1127" class="Symbol">)</a>
|
|||
|
<a id="1129" class="Keyword">open</a> <a id="1134" class="Keyword">import</a> <a id="1141" href="Categories.Category.Construction.Presheaves.html" class="Module">Categories.Category.Construction.Presheaves</a> <a id="1185" class="Keyword">using</a> <a id="1191" class="Symbol">(</a><a id="1192" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a><a id="1202" class="Symbol">)</a>
|
|||
|
<a id="1204" class="Keyword">open</a> <a id="1209" class="Keyword">import</a> <a id="1216" href="Categories.Category.Construction.Functors.html" class="Module">Categories.Category.Construction.Functors</a> <a id="1258" class="Keyword">using</a> <a id="1264" class="Symbol">(</a><a id="1265" href="Categories.Category.Construction.Functors.html#1890" class="Function">eval</a><a id="1269" class="Symbol">)</a>
|
|||
|
<a id="1271" class="Keyword">open</a> <a id="1276" class="Keyword">import</a> <a id="1283" href="Categories.Category.Instance.Setoids.html" class="Module">Categories.Category.Instance.Setoids</a> <a id="1320" class="Keyword">using</a> <a id="1326" class="Symbol">(</a><a id="1327" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a><a id="1334" class="Symbol">)</a>
|
|||
|
<a id="1336" class="Keyword">open</a> <a id="1341" class="Keyword">import</a> <a id="1348" href="Categories.Functor.html" class="Module">Categories.Functor</a> <a id="1367" class="Keyword">using</a> <a id="1373" class="Symbol">(</a><a id="1374" href="Categories.Functor.Core.html#248" class="Record">Functor</a><a id="1381" class="Symbol">;</a> <a id="1383" href="Categories.Functor.html#747" class="Function Operator">_∘F_</a><a id="1387" class="Symbol">)</a> <a id="1389" class="Keyword">renaming</a> <a id="1398" class="Symbol">(</a><a id="1399" href="Categories.Functor.html#349" class="Function">id</a> <a id="1402" class="Symbol">to</a> <a id="1405" class="Function">idF</a><a id="1408" class="Symbol">)</a>
|
|||
|
<a id="1410" class="Keyword">open</a> <a id="1415" class="Keyword">import</a> <a id="1422" href="Categories.Functor.Hom.html" class="Module">Categories.Functor.Hom</a> <a id="1445" class="Keyword">using</a> <a id="1451" class="Symbol">(</a><a id="1452" class="Keyword">module</a> <a id="1459" href="Categories.Functor.Hom.html#625" class="Module">Hom</a><a id="1462" class="Symbol">;</a> <a id="1464" href="Categories.Functor.Hom.html#3133" class="Function Operator">Hom[_][-,_]</a><a id="1475" class="Symbol">;</a> <a id="1477" href="Categories.Functor.Hom.html#2973" class="Function Operator">Hom[_][-,-]</a><a id="1488" class="Symbol">)</a>
|
|||
|
<a id="1490" class="Keyword">open</a> <a id="1495" class="Keyword">import</a> <a id="1502" href="Categories.Functor.Bifunctor.html" class="Module">Categories.Functor.Bifunctor</a> <a id="1531" class="Keyword">using</a> <a id="1537" class="Symbol">(</a><a id="1538" href="Categories.Functor.Bifunctor.html#441" class="Function">Bifunctor</a><a id="1547" class="Symbol">)</a>
|
|||
|
<a id="1549" class="Keyword">open</a> <a id="1554" class="Keyword">import</a> <a id="1561" href="Categories.Functor.Presheaf.html" class="Module">Categories.Functor.Presheaf</a> <a id="1589" class="Keyword">using</a> <a id="1595" class="Symbol">(</a><a id="1596" href="Categories.Functor.Presheaf.html#143" class="Function">Presheaf</a><a id="1604" class="Symbol">)</a>
|
|||
|
<a id="1606" class="Keyword">open</a> <a id="1611" class="Keyword">import</a> <a id="1618" href="Categories.Functor.Construction.LiftSetoids.html" class="Module">Categories.Functor.Construction.LiftSetoids</a> <a id="1662" class="Keyword">using</a> <a id="1668" class="Symbol">(</a><a id="1669" href="Categories.Functor.Construction.LiftSetoids.html#957" class="Function">LiftSetoids</a><a id="1680" class="Symbol">)</a>
|
|||
|
<a id="1682" class="Keyword">open</a> <a id="1687" class="Keyword">import</a> <a id="1694" href="Categories.NaturalTransformation.html" class="Module">Categories.NaturalTransformation</a> <a id="1727" class="Keyword">using</a> <a id="1733" class="Symbol">(</a><a id="1734" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a><a id="1755" class="Symbol">;</a> <a id="1757" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a><a id="1765" class="Symbol">)</a> <a id="1767" class="Keyword">renaming</a> <a id="1776" class="Symbol">(</a><a id="1777" href="Categories.NaturalTransformation.Core.html#2132" class="Function">id</a> <a id="1780" class="Symbol">to</a> <a id="1783" class="Function">idN</a><a id="1786" class="Symbol">)</a>
|
|||
|
<a id="1788" class="Keyword">open</a> <a id="1793" class="Keyword">import</a> <a id="1800" href="Categories.NaturalTransformation.NaturalIsomorphism.html" class="Module">Categories.NaturalTransformation.NaturalIsomorphism</a> <a id="1852" class="Keyword">using</a> <a id="1858" class="Symbol">(</a><a id="1859" href="Categories.NaturalTransformation.NaturalIsomorphism.html#651" class="Record">NaturalIsomorphism</a><a id="1877" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="1880" class="Keyword">import</a> <a id="1887" href="Categories.Morphism.html" class="Module">Categories.Morphism</a> <a id="1907" class="Symbol">as</a> <a id="1910" class="Module">Mor</a>
|
|||
|
<a id="1914" class="Keyword">import</a> <a id="1921" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="1951" class="Symbol">as</a> <a id="1954" class="Module">MR</a>
|
|||
|
<a id="1957" class="Keyword">import</a> <a id="1964" href="Categories.NaturalTransformation.Hom.html" class="Module">Categories.NaturalTransformation.Hom</a> <a id="2001" class="Symbol">as</a> <a id="2004" class="Module">NT-Hom</a>
|
|||
|
|
|||
|
<a id="2012" class="Keyword">private</a>
|
|||
|
<a id="2022" class="Keyword">variable</a>
|
|||
|
<a id="2035" href="Categories.Yoneda.html#2035" class="Generalizable">o</a> <a id="2037" href="Categories.Yoneda.html#2037" class="Generalizable">ℓ</a> <a id="2039" href="Categories.Yoneda.html#2039" class="Generalizable">e</a> <a id="2041" class="Symbol">:</a> <a id="2043" href="Agda.Primitive.html#591" class="Postulate">Level</a>
|
|||
|
|
|||
|
<a id="2050" class="Keyword">module</a> <a id="Yoneda"></a><a id="2057" href="Categories.Yoneda.html#2057" class="Module">Yoneda</a> <a id="2064" class="Symbol">(</a><a id="2065" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2067" class="Symbol">:</a> <a id="2069" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="2078" href="Categories.Yoneda.html#2035" class="Generalizable">o</a> <a id="2080" href="Categories.Yoneda.html#2037" class="Generalizable">ℓ</a> <a id="2082" href="Categories.Yoneda.html#2039" class="Generalizable">e</a><a id="2083" class="Symbol">)</a> <a id="2085" class="Keyword">where</a>
|
|||
|
<a id="2093" class="Keyword">open</a> <a id="2098" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="2107" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2109" class="Keyword">hiding</a> <a id="2116" class="Symbol">(</a><a id="2117" href="Categories.Category.Core.html#3132" class="Function">op</a><a id="2119" class="Symbol">)</a> <a id="2121" class="Comment">-- uses lots</a>
|
|||
|
<a id="2136" class="Keyword">open</a> <a id="2141" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a> <a id="2154" class="Keyword">using</a> <a id="2160" class="Symbol">(</a><a id="2161" href="Categories.Category.Core.html#3061" class="Function Operator">_○_</a><a id="2164" class="Symbol">;</a> <a id="2166" href="Categories.Category.Core.html#3005" class="Function">⟺</a><a id="2167" class="Symbol">)</a>
|
|||
|
<a id="2171" class="Keyword">open</a> <a id="2176" href="Categories.Morphism.Reasoning.html" class="Module">MR</a> <a id="2179" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2181" class="Keyword">using</a> <a id="2187" class="Symbol">(</a><a id="2188" href="Categories.Morphism.Reasoning.Core.html#1202" class="Function">id-comm</a><a id="2195" class="Symbol">)</a>
|
|||
|
<a id="2199" class="Keyword">open</a> <a id="2204" href="Categories.NaturalTransformation.Core.html#466" class="Module">NaturalTransformation</a> <a id="2226" class="Keyword">using</a> <a id="2232" class="Symbol">(</a><a id="2233" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a><a id="2234" class="Symbol">;</a> <a id="2236" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a><a id="2243" class="Symbol">)</a>
|
|||
|
<a id="2247" class="Keyword">open</a> <a id="2252" href="Categories.NaturalTransformation.Hom.html" class="Module">NT-Hom</a> <a id="2259" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2261" class="Keyword">using</a> <a id="2267" class="Symbol">(</a><a id="2268" href="Categories.NaturalTransformation.Hom.html#620" class="Function">Hom[A,C]⇒Hom[B,C]</a><a id="2285" class="Symbol">)</a>
|
|||
|
<a id="2289" class="Keyword">private</a>
|
|||
|
<a id="2301" class="Keyword">module</a> <a id="Yoneda.CE"></a><a id="2308" href="Categories.Yoneda.html#2308" class="Module">CE</a> <a id="2311" class="Symbol">=</a> <a id="2313" href="Categories.Category.Core.html#1530" class="Module">Category.Equiv</a> <a id="2328" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2330" class="Keyword">using</a> <a id="2336" class="Symbol">(</a><a id="2337" href="Relation.Binary.Structures.html#1577" class="Function">refl</a><a id="2341" class="Symbol">)</a>
|
|||
|
<a id="2347" class="Keyword">module</a> <a id="Yoneda.C"></a><a id="2354" href="Categories.Yoneda.html#2354" class="Module">C</a> <a id="2356" class="Symbol">=</a> <a id="2358" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="2367" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2369" class="Keyword">using</a> <a id="2375" class="Symbol">(</a><a id="2376" href="Categories.Category.Core.html#3132" class="Function">op</a><a id="2378" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="2383" class="Comment">-- The Yoneda embedding functor</a>
|
|||
|
<a id="Yoneda.embed"></a><a id="2417" href="Categories.Yoneda.html#2417" class="Function">embed</a> <a id="2423" class="Symbol">:</a> <a id="2425" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="2433" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2435" class="Symbol">(</a><a id="2436" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="2447" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="2448" class="Symbol">)</a>
|
|||
|
<a id="2452" href="Categories.Yoneda.html#2417" class="Function">embed</a> <a id="2458" class="Symbol">=</a> <a id="2460" class="Keyword">record</a>
|
|||
|
<a id="2471" class="Symbol">{</a> <a id="2473" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="2486" class="Symbol">=</a> <a id="2488" href="Categories.Functor.Hom.html#3133" class="Function Operator">Hom[</a> <a id="2493" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2495" href="Categories.Functor.Hom.html#3133" class="Function Operator">][-,_]</a>
|
|||
|
<a id="2506" class="Symbol">;</a> <a id="2508" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="2521" class="Symbol">=</a> <a id="2523" href="Categories.NaturalTransformation.Hom.html#620" class="Function">Hom[A,C]⇒Hom[B,C]</a> <a id="2541" class="Comment">-- A⇒B induces a NatTrans on the Homs.</a>
|
|||
|
<a id="2584" class="Symbol">;</a> <a id="2586" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="2599" class="Symbol">=</a> <a id="2601" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="2611" href="Categories.Category.Core.html#3061" class="Function Operator">○_</a>
|
|||
|
<a id="2618" class="Symbol">;</a> <a id="2620" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="2633" class="Symbol">=</a> <a id="2635" class="Symbol">λ</a> <a id="2637" href="Categories.Yoneda.html#2637" class="Bound">h₁≈h₂</a> <a id="2643" class="Symbol">→</a> <a id="2645" href="Categories.Category.Core.html#1706" class="Function">∘-resp-≈ʳ</a> <a id="2655" href="Categories.Yoneda.html#2637" class="Bound">h₁≈h₂</a> <a id="2661" href="Categories.Category.Core.html#3061" class="Function Operator">○</a> <a id="2663" href="Categories.Category.Core.html#715" class="Field">assoc</a>
|
|||
|
<a id="2673" class="Symbol">;</a> <a id="2675" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="2688" class="Symbol">=</a> <a id="2690" class="Symbol">λ</a> <a id="2692" href="Categories.Yoneda.html#2692" class="Bound">f≈g</a> <a id="2696" href="Categories.Yoneda.html#2696" class="Bound">h≈i</a> <a id="2700" class="Symbol">→</a> <a id="2702" href="Categories.Category.Core.html#1438" class="Field">∘-resp-≈</a> <a id="2711" href="Categories.Yoneda.html#2692" class="Bound">f≈g</a> <a id="2715" href="Categories.Yoneda.html#2696" class="Bound">h≈i</a>
|
|||
|
<a id="2723" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="2728" 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="2824" href="Categories.Yoneda.html#2824" class="Function">yoneda-inverse</a> <a id="2839" class="Symbol">:</a> <a id="2841" class="Symbol">(</a><a id="2842" href="Categories.Yoneda.html#2842" class="Bound">a</a> <a id="2844" class="Symbol">:</a> <a id="2846" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="2849" class="Symbol">)</a> <a id="2851" class="Symbol">(</a><a id="2852" href="Categories.Yoneda.html#2852" class="Bound">F</a> <a id="2854" class="Symbol">:</a> <a id="2856" href="Categories.Functor.Presheaf.html#143" class="Function">Presheaf</a> <a id="2865" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="2867" class="Symbol">(</a><a id="2868" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a> <a id="2876" href="Categories.Yoneda.html#2080" class="Bound">ℓ</a> <a id="2878" href="Categories.Yoneda.html#2082" class="Bound">e</a><a id="2879" class="Symbol">))</a> <a id="2882" class="Symbol">→</a>
|
|||
|
<a id="2888" href="Function.Bundles.html#5801" class="Record">Inverse</a> <a id="2896" class="Symbol">(</a><a id="2897" href="Categories.Category.Core.html#1815" class="Function">Category.hom-setoid</a> <a id="2917" class="Symbol">(</a><a id="2918" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="2929" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="2930" class="Symbol">)</a> <a id="2932" class="Symbol">{</a><a id="2933" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="2944" href="Categories.Yoneda.html#2417" class="Function">embed</a> <a id="2950" href="Categories.Yoneda.html#2842" class="Bound">a</a><a id="2951" class="Symbol">}</a> <a id="2953" class="Symbol">{</a><a id="2954" href="Categories.Yoneda.html#2852" class="Bound">F</a><a id="2955" class="Symbol">})</a> <a id="2958" class="Symbol">(</a><a id="2959" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="2970" href="Categories.Yoneda.html#2852" class="Bound">F</a> <a id="2972" href="Categories.Yoneda.html#2842" class="Bound">a</a><a id="2973" class="Symbol">)</a>
|
|||
|
<a id="2977" href="Categories.Yoneda.html#2824" class="Function">yoneda-inverse</a> <a id="2992" href="Categories.Yoneda.html#2992" class="Bound">a</a> <a id="2994" href="Categories.Yoneda.html#2994" class="Bound">F</a> <a id="2996" class="Symbol">=</a> <a id="2998" class="Keyword">record</a>
|
|||
|
<a id="3009" class="Symbol">{</a> <a id="3011" href="Function.Bundles.html#5855" class="Field">f</a> <a id="3013" class="Symbol">=</a> <a id="3015" class="Symbol">λ</a> <a id="3017" href="Categories.Yoneda.html#3017" class="Bound">nat</a> <a id="3021" class="Symbol">→</a> <a id="3023" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="3025" href="Categories.Yoneda.html#3017" class="Bound">nat</a> <a id="3029" href="Categories.Yoneda.html#2992" class="Bound">a</a> <a id="3031" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="3035" href="Categories.Category.Core.html#630" class="Field">id</a>
|
|||
|
<a id="3042" class="Symbol">;</a> <a id="3044" href="Function.Bundles.html#5879" class="Field">f⁻¹</a> <a id="3048" class="Symbol">=</a> <a id="3050" class="Symbol">λ</a> <a id="3052" href="Categories.Yoneda.html#3052" class="Bound">x</a> <a id="3054" class="Symbol">→</a> <a id="3056" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="3065" class="Keyword">record</a>
|
|||
|
<a id="3080" class="Symbol">{</a> <a id="3082" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="3090" class="Symbol">=</a> <a id="3092" class="Symbol">λ</a> <a id="3094" href="Categories.Yoneda.html#3094" class="Bound">X</a> <a id="3096" class="Symbol">→</a> <a id="3098" class="Keyword">record</a>
|
|||
|
<a id="3115" class="Symbol">{</a> <a id="3117" href="Function.Equality.html#1073" class="Field Operator">_⟨$⟩_</a> <a id="3123" class="Symbol">=</a> <a id="3125" class="Symbol">λ</a> <a id="3127" href="Categories.Yoneda.html#3127" class="Bound">X⇒a</a> <a id="3131" class="Symbol">→</a> <a id="3133" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3137" href="Categories.Yoneda.html#3127" class="Bound">X⇒a</a> <a id="3141" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="3145" href="Categories.Yoneda.html#3052" class="Bound">x</a>
|
|||
|
<a id="3157" class="Symbol">;</a> <a id="3159" href="Function.Equality.html#1140" class="Field">cong</a> <a id="3165" class="Symbol">=</a> <a id="3167" class="Symbol">λ</a> <a id="3169" href="Categories.Yoneda.html#3169" class="Bound">i≈j</a> <a id="3173" class="Symbol">→</a> <a id="3175" href="Categories.Functor.Core.html#696" class="Field">F.F-resp-≈</a> <a id="3186" href="Categories.Yoneda.html#3169" class="Bound">i≈j</a> <a id="3190" href="Relation.Binary.Structures.html#1577" class="Function">SE.refl</a>
|
|||
|
<a id="3208" class="Symbol">}</a>
|
|||
|
<a id="3218" class="Symbol">;</a> <a id="3220" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="3228" class="Symbol">=</a> <a id="3230" class="Symbol">λ</a> <a id="3232" class="Symbol">{</a><a id="3233" href="Categories.Yoneda.html#3233" class="Bound">X</a><a id="3234" class="Symbol">}</a> <a id="3236" class="Symbol">{</a><a id="3237" href="Categories.Yoneda.html#3237" class="Bound">Y</a><a id="3238" class="Symbol">}</a> <a id="3240" href="Categories.Yoneda.html#3240" class="Bound">Y⇒X</a> <a id="3244" class="Symbol">{</a><a id="3245" href="Categories.Yoneda.html#3245" class="Bound">f</a><a id="3246" class="Symbol">}</a> <a id="3248" class="Symbol">{</a><a id="3249" href="Categories.Yoneda.html#3249" class="Bound">g</a><a id="3250" class="Symbol">}</a> <a id="3252" href="Categories.Yoneda.html#3252" class="Bound">f≈g</a> <a id="3256" class="Symbol">→</a>
|
|||
|
<a id="3268" class="Keyword">let</a> <a id="3272" class="Keyword">module</a> <a id="3279" href="Categories.Yoneda.html#3279" class="Module">SR</a> <a id="3282" class="Symbol">=</a> <a id="3284" href="Relation.Binary.Reasoning.Setoid.html" class="Module">SetoidR</a> <a id="3292" class="Symbol">(</a><a id="3293" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3297" href="Categories.Yoneda.html#3237" class="Bound">Y</a><a id="3298" class="Symbol">)</a> <a id="3300" class="Keyword">in</a>
|
|||
|
<a id="3313" href="Relation.Binary.Reasoning.Base.Single.html#1925" class="Function Operator">SR.begin</a>
|
|||
|
<a id="3335" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3339" class="Symbol">(</a><a id="3340" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="3343" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3345" href="Categories.Yoneda.html#3245" class="Bound">f</a> <a id="3347" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3349" href="Categories.Yoneda.html#3240" class="Bound">Y⇒X</a><a id="3352" class="Symbol">)</a> <a id="3354" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="3358" href="Categories.Yoneda.html#3052" class="Bound">x</a> <a id="3362" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">SR.≈⟨</a> <a id="3368" href="Categories.Functor.Core.html#696" class="Field">F.F-resp-≈</a> <a id="3379" class="Symbol">(</a><a id="3380" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="3390" href="Categories.Category.Core.html#3061" class="Function Operator">○</a> <a id="3392" href="Categories.Category.Core.html#1597" class="Function">∘-resp-≈ˡ</a> <a id="3402" href="Categories.Yoneda.html#3252" class="Bound">f≈g</a><a id="3405" class="Symbol">)</a> <a id="3407" class="Symbol">(</a><a id="3408" href="Relation.Binary.Structures.html#1577" class="Function">SE.refl</a> <a id="3416" class="Symbol">{</a><a id="3417" href="Categories.Yoneda.html#3052" class="Bound">x</a><a id="3418" class="Symbol">})</a> <a id="3421" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="3436" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3440" class="Symbol">(</a><a id="3441" href="Categories.Yoneda.html#3249" class="Bound">g</a> <a id="3443" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3445" href="Categories.Yoneda.html#3240" class="Bound">Y⇒X</a><a id="3448" class="Symbol">)</a> <a id="3450" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="3454" href="Categories.Yoneda.html#3052" class="Bound">x</a> <a id="3463" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">SR.≈⟨</a> <a id="3469" href="Categories.Functor.Core.html#565" class="Field">F.homomorphism</a> <a id="3484" href="Relation.Binary.Structures.html#1577" class="Function">SE.refl</a> <a id="3492" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="3507" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3511" href="Categories.Yoneda.html#3240" class="Bound">Y⇒X</a> <a id="3515" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="3519" class="Symbol">(</a><a id="3520" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="3524" href="Categories.Yoneda.html#3249" class="Bound">g</a> <a id="3526" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="3530" href="Categories.Yoneda.html#3052" class="Bound">x</a><a id="3531" class="Symbol">)</a>
|
|||
|
<a id="3544" href="Relation.Binary.Reasoning.Base.Single.html#2564" class="Function Operator">SR.∎</a>
|
|||
|
<a id="3557" class="Symbol">}</a>
|
|||
|
<a id="3563" class="Symbol">;</a> <a id="3565" href="Function.Bundles.html#5903" class="Field">cong₁</a> <a id="3571" class="Symbol">=</a> <a id="3573" class="Symbol">λ</a> <a id="3575" href="Categories.Yoneda.html#3575" class="Bound">i≈j</a> <a id="3579" class="Symbol">→</a> <a id="3581" href="Categories.Yoneda.html#3575" class="Bound">i≈j</a> <a id="3585" href="Relation.Binary.Structures.html#1577" class="Function">CE.refl</a>
|
|||
|
<a id="3597" class="Symbol">;</a> <a id="3599" href="Function.Bundles.html#5945" class="Field">cong₂</a> <a id="3605" class="Symbol">=</a> <a id="3607" class="Symbol">λ</a> <a id="3609" href="Categories.Yoneda.html#3609" class="Bound">i≈j</a> <a id="3613" href="Categories.Yoneda.html#3613" class="Bound">y≈z</a> <a id="3617" class="Symbol">→</a> <a id="3619" href="Categories.Functor.Core.html#696" class="Field">F.F-resp-≈</a> <a id="3630" href="Categories.Yoneda.html#3613" class="Bound">y≈z</a> <a id="3634" href="Categories.Yoneda.html#3609" class="Bound">i≈j</a>
|
|||
|
<a id="3642" class="Symbol">;</a> <a id="3644" href="Function.Bundles.html#5989" class="Field">inverse</a> <a id="3652" class="Symbol">=</a> <a id="3654" class="Symbol">(λ</a> <a id="3657" href="Categories.Yoneda.html#3657" class="Bound">Fa</a> <a id="3660" class="Symbol">→</a> <a id="3662" href="Categories.Functor.Core.html#511" class="Field">F.identity</a> <a id="3673" href="Relation.Binary.Structures.html#1577" class="Function">SE.refl</a><a id="3680" class="Symbol">)</a> <a id="3682" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3684" class="Symbol">λ</a> <a id="3686" href="Categories.Yoneda.html#3686" class="Bound">nat</a> <a id="3690" class="Symbol">{</a><a id="3691" href="Categories.Yoneda.html#3691" class="Bound">x</a><a id="3692" class="Symbol">}</a> <a id="3694" class="Symbol">{</a><a id="3695" href="Categories.Yoneda.html#3695" class="Bound">z</a><a id="3696" class="Symbol">}</a> <a id="3698" href="Categories.Yoneda.html#3698" class="Bound">z≈y</a> <a id="3702" class="Symbol">→</a>
|
|||
|
<a id="3712" class="Keyword">let</a> <a id="3716" class="Keyword">module</a> <a id="3723" href="Categories.Yoneda.html#3723" class="Module">S</a> <a id="3729" class="Symbol">=</a> <a id="3731" href="Relation.Binary.Bundles.html#1018" class="Module">Setoid</a> <a id="3738" class="Symbol">(</a><a id="3739" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3743" href="Categories.Yoneda.html#3691" class="Bound">x</a><a id="3744" class="Symbol">)</a> <a id="3746" class="Keyword">in</a>
|
|||
|
<a id="3757" href="Relation.Binary.Structures.html#1629" class="Function">S.trans</a> <a id="3765" class="Symbol">(</a><a id="3766" href="Relation.Binary.Structures.html#1603" class="Function">S.sym</a> <a id="3772" class="Symbol">(</a><a id="3773" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a> <a id="3781" href="Categories.Yoneda.html#3686" class="Bound">nat</a> <a id="3785" href="Categories.Yoneda.html#3695" class="Bound">z</a> <a id="3787" href="Relation.Binary.Structures.html#1577" class="Function">CE.refl</a><a id="3794" class="Symbol">))</a>
|
|||
|
<a id="3813" class="Symbol">(</a><a id="3814" href="Function.Equality.html#1140" class="Field">cong</a> <a id="3819" class="Symbol">(</a><a id="3820" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="3822" href="Categories.Yoneda.html#3686" class="Bound">nat</a> <a id="3826" href="Categories.Yoneda.html#3691" class="Bound">x</a><a id="3827" class="Symbol">)</a> <a id="3829" class="Symbol">(</a><a id="3830" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="3840" href="Categories.Category.Core.html#3061" class="Function Operator">○</a> <a id="3842" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a> <a id="3852" href="Categories.Category.Core.html#3061" class="Function Operator">○</a> <a id="3854" href="Categories.Yoneda.html#3698" class="Bound">z≈y</a><a id="3857" class="Symbol">))</a>
|
|||
|
<a id="3864" class="Symbol">}</a>
|
|||
|
<a id="3870" class="Keyword">where</a>
|
|||
|
<a id="3880" class="Keyword">module</a> <a id="3887" href="Categories.Yoneda.html#3887" class="Module">F</a> <a id="3889" class="Symbol">=</a> <a id="3891" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="3899" href="Categories.Yoneda.html#2994" class="Bound">F</a> <a id="3901" class="Keyword">using</a> <a id="3907" class="Symbol">(</a><a id="3908" href="Categories.Functor.Core.html#797" class="Function">₀</a><a id="3909" class="Symbol">;</a> <a id="3911" href="Categories.Functor.Core.html#806" class="Function">₁</a><a id="3912" class="Symbol">;</a> <a id="3914" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a><a id="3922" class="Symbol">;</a> <a id="3924" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a><a id="3936" class="Symbol">;</a> <a id="3938" href="Categories.Functor.Core.html#511" class="Field">identity</a><a id="3946" class="Symbol">)</a>
|
|||
|
<a id="3952" class="Keyword">module</a> <a id="3959" href="Categories.Yoneda.html#3959" class="Module">SE</a> <a id="3962" class="Symbol">=</a> <a id="3964" href="Relation.Binary.Bundles.html#1018" class="Module">Setoid</a> <a id="3971" class="Symbol">(</a><a id="3972" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="3976" href="Categories.Yoneda.html#2992" class="Bound">a</a><a id="3977" class="Symbol">)</a> <a id="3979" class="Keyword">using</a> <a id="3985" class="Symbol">(</a><a id="3986" href="Relation.Binary.Structures.html#1577" class="Function">refl</a><a id="3990" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="3995" class="Keyword">private</a>
|
|||
|
<a id="4007" class="Comment">-- in this bifunctor, a presheaf from Presheaves C goes from C to Setoids ℓ e,</a>
|
|||
|
<a id="4090" 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="4157" href="Categories.Yoneda.html#4157" class="Function">Nat[Hom[C][-,c],F]</a> <a id="4176" class="Symbol">:</a> <a id="4178" href="Categories.Functor.Bifunctor.html#441" class="Function">Bifunctor</a> <a id="4188" class="Symbol">(</a><a id="4189" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="4200" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="4201" class="Symbol">)</a> <a id="4203" class="Symbol">(</a><a id="4204" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="4216" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="4217" class="Symbol">)</a> <a id="4219" class="Symbol">(</a><a id="4220" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a> <a id="4228" class="Symbol">_</a> <a id="4230" class="Symbol">_)</a>
|
|||
|
<a id="4237" href="Categories.Yoneda.html#4157" class="Function">Nat[Hom[C][-,c],F]</a> <a id="4256" class="Symbol">=</a> <a id="4258" href="Categories.Functor.Hom.html#2973" class="Function Operator">Hom[</a> <a id="4263" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="4274" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="4276" href="Categories.Functor.Hom.html#2973" class="Function Operator">][-,-]</a> <a id="4283" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="4286" class="Symbol">(</a><a id="4287" href="Categories.Functor.Core.html#816" class="Function">Functor.op</a> <a id="4298" href="Categories.Yoneda.html#2417" class="Function">embed</a> <a id="4304" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="4307" href="Categories.Category.Product.html#6067" class="Function">πʳ</a> <a id="4310" href="Categories.Category.Product.html#1553" class="Function Operator">※</a> <a id="4312" href="Categories.Category.Product.html#5846" class="Function">πˡ</a><a id="4314" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4321" class="Comment">-- in this bifunctor, it needs to go from Presheaves which maps C to Setoids ℓ e,</a>
|
|||
|
<a id="4407" class="Comment">-- so the universe level needs to be lifted.</a>
|
|||
|
<a id="Yoneda.FC"></a><a id="4456" href="Categories.Yoneda.html#4456" class="Function">FC</a> <a id="4459" class="Symbol">:</a> <a id="4461" href="Categories.Functor.Bifunctor.html#441" class="Function">Bifunctor</a> <a id="4471" class="Symbol">(</a><a id="4472" href="Categories.Category.Construction.Presheaves.html#798" class="Function">Presheaves</a> <a id="4483" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="4484" class="Symbol">)</a> <a id="4486" class="Symbol">(</a><a id="4487" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="4499" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="4500" class="Symbol">)</a> <a id="4502" class="Symbol">(</a><a id="4503" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a> <a id="4511" class="Symbol">_</a> <a id="4513" class="Symbol">_)</a>
|
|||
|
<a id="4520" href="Categories.Yoneda.html#4456" class="Function">FC</a> <a id="4523" class="Symbol">=</a> <a id="4525" href="Categories.Functor.Construction.LiftSetoids.html#957" class="Function">LiftSetoids</a> <a id="4537" class="Symbol">(</a><a id="4538" href="Categories.Yoneda.html#2078" class="Bound">o</a> <a id="4540" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="4542" href="Categories.Yoneda.html#2080" class="Bound">ℓ</a> <a id="4544" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="4546" href="Categories.Yoneda.html#2082" class="Bound">e</a><a id="4547" class="Symbol">)</a> <a id="4549" class="Symbol">(</a><a id="4550" href="Categories.Yoneda.html#2078" class="Bound">o</a> <a id="4552" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="4554" href="Categories.Yoneda.html#2080" class="Bound">ℓ</a><a id="4555" class="Symbol">)</a> <a id="4557" href="Categories.Functor.html#747" class="Function Operator">∘F</a> <a id="4560" href="Categories.Category.Construction.Functors.html#1890" class="Function">eval</a> <a id="4565" class="Symbol">{</a><a id="4566" class="Argument">C</a> <a id="4568" class="Symbol">=</a> <a id="4570" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="4582" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="4583" class="Symbol">}</a> <a id="4585" class="Symbol">{</a><a id="4586" class="Argument">D</a> <a id="4588" class="Symbol">=</a> <a id="4590" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a> <a id="4598" href="Categories.Yoneda.html#2080" class="Bound">ℓ</a> <a id="4600" href="Categories.Yoneda.html#2082" class="Bound">e</a><a id="4601" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="4608" class="Keyword">module</a> <a id="Yoneda.yoneda-inverse"></a><a id="4615" href="Categories.Yoneda.html#4615" class="Module">yoneda-inverse</a> <a id="4630" class="Symbol">{</a><a id="4631" href="Categories.Yoneda.html#4631" class="Bound">a</a><a id="4632" class="Symbol">}</a> <a id="4634" class="Symbol">{</a><a id="4635" href="Categories.Yoneda.html#4635" class="Bound">F</a><a id="4636" class="Symbol">}</a> <a id="4638" class="Symbol">=</a> <a id="4640" href="Function.Bundles.html#5801" class="Module">Inverse</a> <a id="4648" class="Symbol">(</a><a id="4649" href="Categories.Yoneda.html#2824" class="Function">yoneda-inverse</a> <a id="4664" href="Categories.Yoneda.html#4631" class="Bound">a</a> <a id="4666" href="Categories.Yoneda.html#4635" class="Bound">F</a><a id="4667" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4672" class="Comment">-- the two bifunctors above are naturally isomorphic.</a>
|
|||
|
<a id="4728" class="Comment">-- it is easy to show yoneda-inverse first then to yoneda.</a>
|
|||
|
<a id="Yoneda.yoneda"></a><a id="4789" href="Categories.Yoneda.html#4789" class="Function">yoneda</a> <a id="4796" class="Symbol">:</a> <a id="4798" href="Categories.NaturalTransformation.NaturalIsomorphism.html#651" class="Record">NaturalIsomorphism</a> <a id="4817" href="Categories.Yoneda.html#4157" class="Function">Nat[Hom[C][-,c],F]</a> <a id="4836" href="Categories.Yoneda.html#4456" class="Function">FC</a>
|
|||
|
<a id="4841" href="Categories.Yoneda.html#4789" class="Function">yoneda</a> <a id="4848" class="Symbol">=</a> <a id="4850" class="Keyword">record</a>
|
|||
|
<a id="4861" class="Symbol">{</a> <a id="4863" href="Categories.NaturalTransformation.NaturalIsomorphism.html#891" class="Field">F⇒G</a> <a id="4867" class="Symbol">=</a> <a id="4869" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="4878" class="Keyword">record</a>
|
|||
|
<a id="4891" class="Symbol">{</a> <a id="4893" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="4901" class="Symbol">=</a> <a id="4903" class="Symbol">λ</a> <a id="4905" class="Keyword">where</a>
|
|||
|
<a id="4919" class="Symbol">(</a><a id="4920" href="Categories.Yoneda.html#4920" class="Bound">F</a> <a id="4922" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4924" href="Categories.Yoneda.html#4924" class="Bound">A</a><a id="4925" class="Symbol">)</a> <a id="4927" class="Symbol">→</a> <a id="4929" class="Keyword">record</a>
|
|||
|
<a id="4946" class="Symbol">{</a> <a id="4948" href="Function.Equality.html#1073" class="Field Operator">_⟨$⟩_</a> <a id="4954" class="Symbol">=</a> <a id="4956" class="Symbol">λ</a> <a id="4958" href="Categories.Yoneda.html#4958" class="Bound">α</a> <a id="4960" class="Symbol">→</a> <a id="4962" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="4967" class="Symbol">(</a><a id="4968" href="Function.Bundles.html#5855" class="Function">yoneda-inverse.f</a> <a id="4985" href="Categories.Yoneda.html#4958" class="Bound">α</a><a id="4986" class="Symbol">)</a>
|
|||
|
<a id="4998" class="Symbol">;</a> <a id="5000" href="Function.Equality.html#1140" class="Field">cong</a> <a id="5006" class="Symbol">=</a> <a id="5008" class="Symbol">λ</a> <a id="5010" href="Categories.Yoneda.html#5010" class="Bound">i≈j</a> <a id="5014" class="Symbol">→</a> <a id="5016" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="5021" class="Symbol">(</a><a id="5022" href="Categories.Yoneda.html#5010" class="Bound">i≈j</a> <a id="5026" href="Relation.Binary.Structures.html#1577" class="Function">CE.refl</a><a id="5033" class="Symbol">)</a>
|
|||
|
<a id="5045" class="Symbol">}</a>
|
|||
|
<a id="5053" class="Symbol">;</a> <a id="5055" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="5063" class="Symbol">=</a> <a id="5065" class="Symbol">λ</a> <a id="5067" class="Keyword">where</a>
|
|||
|
<a id="5081" class="Symbol">{_}</a> <a id="5085" class="Symbol">{</a><a id="5086" href="Categories.Yoneda.html#5086" class="Bound">G</a> <a id="5088" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5090" href="Categories.Yoneda.html#5090" class="Bound">B</a><a id="5091" class="Symbol">}</a> <a id="5093" class="Symbol">(</a><a id="5094" href="Categories.Yoneda.html#5094" class="Bound">α</a> <a id="5096" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5098" href="Categories.Yoneda.html#5098" class="Bound">f</a><a id="5099" class="Symbol">)</a> <a id="5101" class="Symbol">{</a><a id="5102" href="Categories.Yoneda.html#5102" class="Bound">β</a><a id="5103" class="Symbol">}</a> <a id="5105" class="Symbol">{</a><a id="5106" href="Categories.Yoneda.html#5106" class="Bound">γ</a><a id="5107" class="Symbol">}</a> <a id="5109" href="Categories.Yoneda.html#5109" class="Bound">β≈γ</a> <a id="5113" class="Symbol">→</a> <a id="5115" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="5120" href="Function.Base.html#1928" class="Function Operator">$</a> <a id="5122" href="Function.Equality.html#1140" class="Field">cong</a> <a id="5127" class="Symbol">(</a><a id="5128" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="5130" href="Categories.Yoneda.html#5094" class="Bound">α</a> <a id="5132" href="Categories.Yoneda.html#5090" class="Bound">B</a><a id="5133" class="Symbol">)</a> <a id="5135" class="Symbol">(</a><a id="5136" href="Categories.Yoneda.html#5733" class="Function">helper</a> <a id="5143" href="Categories.Yoneda.html#5098" class="Bound">f</a> <a id="5145" href="Categories.Yoneda.html#5102" class="Bound">β</a> <a id="5147" href="Categories.Yoneda.html#5106" class="Bound">γ</a> <a id="5149" href="Categories.Yoneda.html#5109" class="Bound">β≈γ</a><a id="5152" class="Symbol">)</a>
|
|||
|
<a id="5160" class="Symbol">}</a>
|
|||
|
<a id="5166" class="Symbol">;</a> <a id="5168" href="Categories.NaturalTransformation.NaturalIsomorphism.html#927" class="Field">F⇐G</a> <a id="5172" class="Symbol">=</a> <a id="5174" href="Categories.NaturalTransformation.Core.html#1750" class="Function">ntHelper</a> <a id="5183" class="Keyword">record</a>
|
|||
|
<a id="5196" class="Symbol">{</a> <a id="5198" href="Categories.NaturalTransformation.Core.html#1637" class="Field">η</a> <a id="5206" class="Symbol">=</a> <a id="5208" class="Symbol">λ</a> <a id="5210" class="Symbol">(</a><a id="5211" href="Categories.Yoneda.html#5211" class="Bound">F</a> <a id="5213" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5215" href="Categories.Yoneda.html#5215" class="Bound">A</a><a id="5216" class="Symbol">)</a> <a id="5218" class="Symbol">→</a> <a id="5220" class="Keyword">record</a>
|
|||
|
<a id="5237" class="Symbol">{</a> <a id="5239" href="Function.Equality.html#1073" class="Field Operator">_⟨$⟩_</a> <a id="5245" class="Symbol">=</a> <a id="5247" class="Symbol">λ</a> <a id="5249" href="Categories.Yoneda.html#5249" class="Bound">x</a> <a id="5251" class="Symbol">→</a> <a id="5253" href="Function.Bundles.html#5879" class="Function">yoneda-inverse.f⁻¹</a> <a id="5272" class="Symbol">(</a><a id="5273" href="Level.html#479" class="Field">lower</a> <a id="5279" href="Categories.Yoneda.html#5249" class="Bound">x</a><a id="5280" class="Symbol">)</a>
|
|||
|
<a id="5292" class="Symbol">;</a> <a id="5294" href="Function.Equality.html#1140" class="Field">cong</a> <a id="5300" class="Symbol">=</a> <a id="5302" class="Symbol">λ</a> <a id="5304" href="Categories.Yoneda.html#5304" class="Bound">i≈j</a> <a id="5308" href="Categories.Yoneda.html#5308" class="Bound">y≈z</a> <a id="5312" class="Symbol">→</a> <a id="5314" href="Categories.Functor.Core.html#696" class="Field">Functor.F-resp-≈</a> <a id="5331" href="Categories.Yoneda.html#5211" class="Bound">F</a> <a id="5333" href="Categories.Yoneda.html#5308" class="Bound">y≈z</a> <a id="5337" class="Symbol">(</a><a id="5338" href="Level.html#479" class="Field">lower</a> <a id="5344" href="Categories.Yoneda.html#5304" class="Bound">i≈j</a><a id="5347" class="Symbol">)</a>
|
|||
|
<a id="5359" class="Symbol">}</a>
|
|||
|
<a id="5367" class="Symbol">;</a> <a id="5369" href="Categories.NaturalTransformation.Core.html#1681" class="Field">commute</a> <a id="5377" class="Symbol">=</a> <a id="5379" class="Symbol">λ</a> <a id="5381" class="Symbol">(</a><a id="5382" href="Categories.Yoneda.html#5382" class="Bound">α</a> <a id="5384" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5386" href="Categories.Yoneda.html#5386" class="Bound">f</a><a id="5387" class="Symbol">)</a> <a id="5389" href="Categories.Yoneda.html#5389" class="Bound">eq</a> <a id="5392" href="Categories.Yoneda.html#5392" class="Bound">eq′</a> <a id="5396" class="Symbol">→</a> <a id="5398" href="Categories.Yoneda.html#6488" class="Function">helper′</a> <a id="5406" href="Categories.Yoneda.html#5382" class="Bound">α</a> <a id="5408" href="Categories.Yoneda.html#5386" class="Bound">f</a> <a id="5410" class="Symbol">(</a><a id="5411" href="Level.html#479" class="Field">lower</a> <a id="5417" href="Categories.Yoneda.html#5389" class="Bound">eq</a><a id="5419" class="Symbol">)</a> <a id="5421" href="Categories.Yoneda.html#5392" class="Bound">eq′</a>
|
|||
|
<a id="5431" class="Symbol">}</a>
|
|||
|
<a id="5437" class="Symbol">;</a> <a id="5439" href="Categories.NaturalTransformation.NaturalIsomorphism.html#1051" class="Field">iso</a> <a id="5443" class="Symbol">=</a> <a id="5445" class="Symbol">λ</a> <a id="5447" class="Symbol">(</a><a id="5448" href="Categories.Yoneda.html#5448" class="Bound">F</a> <a id="5450" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5452" href="Categories.Yoneda.html#5452" class="Bound">A</a><a id="5453" class="Symbol">)</a> <a id="5455" class="Symbol">→</a> <a id="5457" class="Keyword">record</a>
|
|||
|
<a id="5472" class="Symbol">{</a> <a id="5474" href="Categories.Morphism.html#1586" class="Field">isoˡ</a> <a id="5479" class="Symbol">=</a> <a id="5481" class="Symbol">λ</a> <a id="5483" class="Symbol">{</a><a id="5484" href="Categories.Yoneda.html#5484" class="Bound">α</a> <a id="5486" href="Categories.Yoneda.html#5486" class="Bound">β</a><a id="5487" class="Symbol">}</a> <a id="5489" href="Categories.Yoneda.html#5489" class="Bound">i≈j</a> <a id="5493" class="Symbol">{</a><a id="5494" href="Categories.Yoneda.html#5494" class="Bound">X</a><a id="5495" class="Symbol">}</a> <a id="5497" href="Categories.Yoneda.html#5497" class="Bound">y≈z</a> <a id="5501" class="Symbol">→</a>
|
|||
|
<a id="5513" href="Relation.Binary.Structures.html#1629" class="Function">Setoid.trans</a> <a id="5526" class="Symbol">(</a><a id="5527" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="5538" href="Categories.Yoneda.html#5448" class="Bound">F</a> <a id="5540" href="Categories.Yoneda.html#5494" class="Bound">X</a><a id="5541" class="Symbol">)</a> <a id="5543" class="Symbol">(</a> <a id="5545" href="Function.Bundles.html#6081" class="Function">yoneda-inverse.inverseʳ</a> <a id="5569" href="Categories.Yoneda.html#5484" class="Bound">α</a> <a id="5571" class="Symbol">{</a><a id="5572" class="Argument">x</a> <a id="5574" class="Symbol">=</a> <a id="5576" href="Categories.Yoneda.html#5494" class="Bound">X</a><a id="5577" class="Symbol">}</a> <a id="5579" href="Categories.Yoneda.html#5497" class="Bound">y≈z</a><a id="5582" class="Symbol">)</a> <a id="5584" class="Symbol">(</a><a id="5585" href="Categories.Yoneda.html#5489" class="Bound">i≈j</a> <a id="5589" href="Relation.Binary.Structures.html#1577" class="Function">CE.refl</a><a id="5596" class="Symbol">)</a>
|
|||
|
<a id="5606" class="Symbol">;</a> <a id="5608" href="Categories.Morphism.html#1612" class="Field">isoʳ</a> <a id="5613" class="Symbol">=</a> <a id="5615" class="Symbol">λ</a> <a id="5617" href="Categories.Yoneda.html#5617" class="Bound">eq</a> <a id="5620" class="Symbol">→</a> <a id="5622" href="Level.html#466" class="InductiveConstructor">lift</a> <a id="5627" class="Symbol">(</a><a id="5628" href="Relation.Binary.Structures.html#1629" class="Function">Setoid.trans</a> <a id="5641" class="Symbol">(</a><a id="5642" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="5653" href="Categories.Yoneda.html#5448" class="Bound">F</a> <a id="5655" href="Categories.Yoneda.html#5452" class="Bound">A</a><a id="5656" class="Symbol">)</a> <a id="5658" class="Symbol">(</a> <a id="5660" href="Function.Bundles.html#6021" class="Function">yoneda-inverse.inverseˡ</a> <a id="5684" class="Symbol">{</a><a id="5685" class="Argument">F</a> <a id="5687" class="Symbol">=</a> <a id="5689" href="Categories.Yoneda.html#5448" class="Bound">F</a><a id="5690" class="Symbol">}</a> <a id="5692" class="Symbol">_)</a> <a id="5695" class="Symbol">(</a><a id="5696" href="Level.html#479" class="Field">lower</a> <a id="5702" href="Categories.Yoneda.html#5617" class="Bound">eq</a><a id="5704" class="Symbol">))</a>
|
|||
|
<a id="5715" class="Symbol">}</a>
|
|||
|
<a id="5721" class="Symbol">}</a>
|
|||
|
<a id="5727" class="Keyword">where</a> <a id="5733" href="Categories.Yoneda.html#5733" class="Function">helper</a> <a id="5740" class="Symbol">:</a> <a id="5742" class="Symbol">{</a><a id="5743" href="Categories.Yoneda.html#5743" class="Bound">F</a> <a id="5745" class="Symbol">:</a> <a id="5747" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="5755" href="Categories.Category.Core.html#3132" class="Function">C.op</a> <a id="5760" class="Symbol">(</a><a id="5761" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a> <a id="5769" href="Categories.Yoneda.html#2080" class="Bound">ℓ</a> <a id="5771" href="Categories.Yoneda.html#2082" class="Bound">e</a><a id="5772" class="Symbol">)}</a>
|
|||
|
<a id="5794" class="Symbol">{</a><a id="5795" href="Categories.Yoneda.html#5795" class="Bound">A</a> <a id="5797" href="Categories.Yoneda.html#5797" class="Bound">B</a> <a id="5799" class="Symbol">:</a> <a id="5801" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="5804" class="Symbol">}</a> <a id="5806" class="Symbol">(</a><a id="5807" href="Categories.Yoneda.html#5807" class="Bound">f</a> <a id="5809" class="Symbol">:</a> <a id="5811" href="Categories.Yoneda.html#5797" class="Bound">B</a> <a id="5813" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="5815" href="Categories.Yoneda.html#5795" class="Bound">A</a><a id="5816" class="Symbol">)</a>
|
|||
|
<a id="5837" class="Symbol">(</a><a id="5838" href="Categories.Yoneda.html#5838" class="Bound">β</a> <a id="5840" href="Categories.Yoneda.html#5840" class="Bound">γ</a> <a id="5842" class="Symbol">:</a> <a id="5844" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a> <a id="5866" href="Categories.Functor.Hom.html#3133" class="Function Operator">Hom[</a> <a id="5871" href="Categories.Yoneda.html#2065" class="Bound">C</a> <a id="5873" href="Categories.Functor.Hom.html#3133" class="Function Operator">][-,</a> <a id="5878" href="Categories.Yoneda.html#5795" class="Bound">A</a> <a id="5880" href="Categories.Functor.Hom.html#3133" class="Function Operator">]</a> <a id="5882" href="Categories.Yoneda.html#5743" class="Bound">F</a><a id="5883" class="Symbol">)</a> <a id="5885" class="Symbol">→</a>
|
|||
|
<a id="5906" href="Relation.Binary.Bundles.html#1107" class="Field Operator">Setoid._≈_</a> <a id="5917" class="Symbol">(</a><a id="5918" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="5929" href="Categories.Yoneda.html#4157" class="Function">Nat[Hom[C][-,c],F]</a> <a id="5948" class="Symbol">(</a><a id="5949" href="Categories.Yoneda.html#5743" class="Bound">F</a> <a id="5951" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5953" href="Categories.Yoneda.html#5795" class="Bound">A</a><a id="5954" class="Symbol">))</a> <a id="5957" href="Categories.Yoneda.html#5838" class="Bound">β</a> <a id="5959" href="Categories.Yoneda.html#5840" class="Bound">γ</a> <a id="5961" class="Symbol">→</a>
|
|||
|
<a id="5982" href="Relation.Binary.Bundles.html#1107" class="Field Operator">Setoid._≈_</a> <a id="5993" class="Symbol">(</a><a id="5994" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6005" href="Categories.Yoneda.html#5743" class="Bound">F</a> <a id="6007" href="Categories.Yoneda.html#5797" class="Bound">B</a><a id="6008" class="Symbol">)</a> <a id="6010" class="Symbol">(</a><a id="6011" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6013" href="Categories.Yoneda.html#5838" class="Bound">β</a> <a id="6015" href="Categories.Yoneda.html#5797" class="Bound">B</a> <a id="6017" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6021" href="Categories.Yoneda.html#5807" class="Bound">f</a> <a id="6023" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="6025" href="Categories.Category.Core.html#630" class="Field">id</a><a id="6027" class="Symbol">)</a> <a id="6029" class="Symbol">(</a><a id="6030" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="6041" href="Categories.Yoneda.html#5743" class="Bound">F</a> <a id="6043" href="Categories.Yoneda.html#5807" class="Bound">f</a> <a id="6045" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6049" class="Symbol">(</a><a id="6050" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6052" href="Categories.Yoneda.html#5840" class="Bound">γ</a> <a id="6054" href="Categories.Yoneda.html#5795" class="Bound">A</a> <a id="6056" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6060" href="Categories.Category.Core.html#630" class="Field">id</a><a id="6062" class="Symbol">))</a>
|
|||
|
<a id="6075" href="Categories.Yoneda.html#5733" class="Function">helper</a> <a id="6082" class="Symbol">{</a><a id="6083" href="Categories.Yoneda.html#6083" class="Bound">F</a><a id="6084" class="Symbol">}</a> <a id="6086" class="Symbol">{</a><a id="6087" href="Categories.Yoneda.html#6087" class="Bound">A</a><a id="6088" class="Symbol">}</a> <a id="6090" class="Symbol">{</a><a id="6091" href="Categories.Yoneda.html#6091" class="Bound">B</a><a id="6092" class="Symbol">}</a> <a id="6094" href="Categories.Yoneda.html#6094" class="Bound">f</a> <a id="6096" href="Categories.Yoneda.html#6096" class="Bound">β</a> <a id="6098" href="Categories.Yoneda.html#6098" class="Bound">γ</a> <a id="6100" href="Categories.Yoneda.html#6100" class="Bound">β≈γ</a> <a id="6104" class="Symbol">=</a> <a id="6106" href="Relation.Binary.Reasoning.Base.Single.html#1925" class="Function Operator">S.begin</a>
|
|||
|
<a id="6126" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6128" href="Categories.Yoneda.html#6096" class="Bound">β</a> <a id="6130" href="Categories.Yoneda.html#6091" class="Bound">B</a> <a id="6132" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6136" href="Categories.Yoneda.html#6094" class="Bound">f</a> <a id="6138" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="6140" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="6152" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">S.≈⟨</a> <a id="6157" href="Function.Equality.html#1140" class="Field">cong</a> <a id="6162" class="Symbol">(</a><a id="6163" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6165" href="Categories.Yoneda.html#6096" class="Bound">β</a> <a id="6167" href="Categories.Yoneda.html#6091" class="Bound">B</a><a id="6168" class="Symbol">)</a> <a id="6170" class="Symbol">(</a><a id="6171" href="Categories.Morphism.Reasoning.Core.html#1202" class="Function">id-comm</a> <a id="6179" href="Categories.Category.Core.html#3061" class="Function Operator">○</a> <a id="6181" class="Symbol">(</a><a id="6182" href="Categories.Category.Core.html#3005" class="Function">⟺</a> <a id="6184" href="Categories.Category.Core.html#1096" class="Field">identityˡ</a><a id="6193" class="Symbol">))</a> <a id="6196" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="6210" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6212" href="Categories.Yoneda.html#6096" class="Bound">β</a> <a id="6214" href="Categories.Yoneda.html#6091" class="Bound">B</a> <a id="6216" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6220" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="6223" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="6225" href="Categories.Category.Core.html#630" class="Field">id</a> <a id="6228" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="6230" href="Categories.Yoneda.html#6094" class="Bound">f</a> <a id="6236" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">S.≈⟨</a> <a id="6241" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a> <a id="6249" href="Categories.Yoneda.html#6096" class="Bound">β</a> <a id="6251" href="Categories.Yoneda.html#6094" class="Bound">f</a> <a id="6253" href="Relation.Binary.Structures.html#1577" class="Function">CE.refl</a> <a id="6261" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="6275" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6279" href="Categories.Yoneda.html#6094" class="Bound">f</a> <a id="6281" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6285" class="Symbol">(</a><a id="6286" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6288" href="Categories.Yoneda.html#6096" class="Bound">β</a> <a id="6290" href="Categories.Yoneda.html#6087" class="Bound">A</a> <a id="6292" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6296" href="Categories.Category.Core.html#630" class="Field">id</a><a id="6298" class="Symbol">)</a> <a id="6300" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">S.≈⟨</a> <a id="6305" href="Function.Equality.html#1140" class="Field">cong</a> <a id="6310" class="Symbol">(</a><a id="6311" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6315" href="Categories.Yoneda.html#6094" class="Bound">f</a><a id="6316" class="Symbol">)</a> <a id="6318" class="Symbol">(</a><a id="6319" href="Categories.Yoneda.html#6100" class="Bound">β≈γ</a> <a id="6323" href="Relation.Binary.Structures.html#1577" class="Function">CE.refl</a><a id="6330" class="Symbol">)</a> <a id="6332" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="6346" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="6350" href="Categories.Yoneda.html#6094" class="Bound">f</a> <a id="6352" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6356" class="Symbol">(</a><a id="6357" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6359" href="Categories.Yoneda.html#6098" class="Bound">γ</a> <a id="6361" href="Categories.Yoneda.html#6087" class="Bound">A</a> <a id="6363" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6367" href="Categories.Category.Core.html#630" class="Field">id</a><a id="6369" class="Symbol">)</a> <a id="6371" href="Relation.Binary.Reasoning.Base.Single.html#2564" class="Function Operator">S.∎</a>
|
|||
|
<a id="6387" class="Keyword">where</a>
|
|||
|
<a id="6405" class="Keyword">module</a> <a id="6412" href="Categories.Yoneda.html#6412" class="Module">F</a> <a id="6414" class="Symbol">=</a> <a id="6416" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="6424" href="Categories.Yoneda.html#6083" class="Bound">F</a> <a id="6426" class="Keyword">using</a> <a id="6432" class="Symbol">(</a><a id="6433" href="Categories.Functor.Core.html#797" class="Function">₀</a><a id="6434" class="Symbol">;</a><a id="6435" href="Categories.Functor.Core.html#806" class="Function">₁</a><a id="6436" class="Symbol">)</a>
|
|||
|
<a id="6450" class="Keyword">module</a> <a id="6457" href="Categories.Yoneda.html#6457" class="Module">S</a> <a id="6459" class="Symbol">=</a> <a id="6461" href="Relation.Binary.Reasoning.Setoid.html" class="Module">SetoidR</a> <a id="6469" class="Symbol">(</a><a id="6470" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="6474" href="Categories.Yoneda.html#6091" class="Bound">B</a><a id="6475" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="6488" href="Categories.Yoneda.html#6488" class="Function">helper′</a> <a id="6496" class="Symbol">:</a> <a id="6498" class="Symbol">∀</a> <a id="6500" class="Symbol">{</a><a id="6501" href="Categories.Yoneda.html#6501" class="Bound">F</a> <a id="6503" href="Categories.Yoneda.html#6503" class="Bound">G</a> <a id="6505" class="Symbol">:</a> <a id="6507" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="6515" class="Symbol">(</a><a id="6516" href="Categories.Category.Core.html#3132" class="Function">Category.op</a> <a id="6528" href="Categories.Yoneda.html#2065" class="Bound">C</a><a id="6529" class="Symbol">)</a> <a id="6531" class="Symbol">(</a><a id="6532" href="Categories.Category.Instance.Setoids.html#316" class="Function">Setoids</a> <a id="6540" href="Categories.Yoneda.html#2080" class="Bound">ℓ</a> <a id="6542" href="Categories.Yoneda.html#2082" class="Bound">e</a><a id="6543" class="Symbol">)}</a>
|
|||
|
<a id="6568" class="Symbol">{</a><a id="6569" href="Categories.Yoneda.html#6569" class="Bound">A</a> <a id="6571" href="Categories.Yoneda.html#6571" class="Bound">B</a> <a id="6573" href="Categories.Yoneda.html#6573" class="Bound">Z</a> <a id="6575" class="Symbol">:</a> <a id="6577" href="Categories.Category.Core.html#559" class="Field">Obj</a><a id="6580" class="Symbol">}</a>
|
|||
|
<a id="6604" class="Symbol">{</a><a id="6605" href="Categories.Yoneda.html#6605" class="Bound">h</a> <a id="6607" href="Categories.Yoneda.html#6607" class="Bound">i</a> <a id="6609" class="Symbol">:</a> <a id="6611" href="Categories.Yoneda.html#6573" class="Bound">Z</a> <a id="6613" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="6615" href="Categories.Yoneda.html#6571" class="Bound">B</a><a id="6616" class="Symbol">}</a>
|
|||
|
<a id="6640" class="Symbol">{</a><a id="6641" href="Categories.Yoneda.html#6641" class="Bound">X</a> <a id="6643" href="Categories.Yoneda.html#6643" class="Bound">Y</a> <a id="6645" class="Symbol">:</a> <a id="6647" href="Relation.Binary.Bundles.html#1081" class="Field">Setoid.Carrier</a> <a id="6662" class="Symbol">(</a><a id="6663" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6674" href="Categories.Yoneda.html#6501" class="Bound">F</a> <a id="6676" href="Categories.Yoneda.html#6569" class="Bound">A</a><a id="6677" class="Symbol">)}</a>
|
|||
|
<a id="6702" class="Symbol">(</a><a id="6703" href="Categories.Yoneda.html#6703" class="Bound">α</a> <a id="6705" class="Symbol">:</a> <a id="6707" href="Categories.NaturalTransformation.Core.html#466" class="Record">NaturalTransformation</a> <a id="6729" href="Categories.Yoneda.html#6501" class="Bound">F</a> <a id="6731" href="Categories.Yoneda.html#6503" class="Bound">G</a><a id="6732" class="Symbol">)</a>
|
|||
|
<a id="6756" class="Symbol">(</a><a id="6757" href="Categories.Yoneda.html#6757" class="Bound">f</a> <a id="6759" class="Symbol">:</a> <a id="6761" href="Categories.Yoneda.html#6571" class="Bound">B</a> <a id="6763" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="6765" href="Categories.Yoneda.html#6569" class="Bound">A</a><a id="6766" class="Symbol">)</a> <a id="6768" class="Symbol">→</a>
|
|||
|
<a id="6792" href="Relation.Binary.Bundles.html#1107" class="Field Operator">Setoid._≈_</a> <a id="6803" class="Symbol">(</a><a id="6804" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6815" href="Categories.Yoneda.html#6501" class="Bound">F</a> <a id="6817" href="Categories.Yoneda.html#6569" class="Bound">A</a><a id="6818" class="Symbol">)</a> <a id="6820" href="Categories.Yoneda.html#6641" class="Bound">X</a> <a id="6822" href="Categories.Yoneda.html#6643" class="Bound">Y</a> <a id="6824" class="Symbol">→</a>
|
|||
|
<a id="6848" href="Categories.Yoneda.html#6605" class="Bound">h</a> <a id="6850" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="6852" href="Categories.Yoneda.html#6607" class="Bound">i</a> <a id="6854" class="Symbol">→</a>
|
|||
|
<a id="6878" href="Relation.Binary.Bundles.html#1107" class="Field Operator">Setoid._≈_</a> <a id="6889" class="Symbol">(</a><a id="6890" href="Categories.Functor.Core.html#432" class="Field">Functor.F₀</a> <a id="6901" href="Categories.Yoneda.html#6503" class="Bound">G</a> <a id="6903" href="Categories.Yoneda.html#6573" class="Bound">Z</a><a id="6904" class="Symbol">)</a> <a id="6906" class="Symbol">(</a><a id="6907" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="6918" href="Categories.Yoneda.html#6503" class="Bound">G</a> <a id="6920" href="Categories.Yoneda.html#6605" class="Bound">h</a> <a id="6922" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6926" class="Symbol">(</a><a id="6927" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="6929" href="Categories.Yoneda.html#6703" class="Bound">α</a> <a id="6931" href="Categories.Yoneda.html#6571" class="Bound">B</a> <a id="6933" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6937" class="Symbol">(</a><a id="6938" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="6949" href="Categories.Yoneda.html#6501" class="Bound">F</a> <a id="6951" href="Categories.Yoneda.html#6757" class="Bound">f</a> <a id="6953" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="6957" href="Categories.Yoneda.html#6641" class="Bound">X</a><a id="6958" class="Symbol">)))</a>
|
|||
|
<a id="7004" class="Symbol">(</a><a id="7005" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7007" href="Categories.Yoneda.html#6703" class="Bound">α</a> <a id="7009" href="Categories.Yoneda.html#6573" class="Bound">Z</a> <a id="7011" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7015" class="Symbol">(</a><a id="7016" href="Categories.Functor.Core.html#455" class="Field">Functor.F₁</a> <a id="7027" href="Categories.Yoneda.html#6501" class="Bound">F</a> <a id="7029" class="Symbol">(</a><a id="7030" href="Categories.Yoneda.html#6757" class="Bound">f</a> <a id="7032" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="7034" href="Categories.Yoneda.html#6607" class="Bound">i</a><a id="7035" class="Symbol">)</a> <a id="7037" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7041" href="Categories.Yoneda.html#6643" class="Bound">Y</a><a id="7042" class="Symbol">))</a>
|
|||
|
<a id="7055" href="Categories.Yoneda.html#6488" class="Function">helper′</a> <a id="7063" class="Symbol">{</a><a id="7064" href="Categories.Yoneda.html#7064" class="Bound">F</a><a id="7065" class="Symbol">}</a> <a id="7067" class="Symbol">{</a><a id="7068" href="Categories.Yoneda.html#7068" class="Bound">G</a><a id="7069" class="Symbol">}</a> <a id="7071" class="Symbol">{</a><a id="7072" href="Categories.Yoneda.html#7072" class="Bound">A</a><a id="7073" class="Symbol">}</a> <a id="7075" class="Symbol">{</a><a id="7076" href="Categories.Yoneda.html#7076" class="Bound">B</a><a id="7077" class="Symbol">}</a> <a id="7079" class="Symbol">{</a><a id="7080" href="Categories.Yoneda.html#7080" class="Bound">Z</a><a id="7081" class="Symbol">}</a> <a id="7083" class="Symbol">{</a><a id="7084" href="Categories.Yoneda.html#7084" class="Bound">h</a><a id="7085" class="Symbol">}</a> <a id="7087" class="Symbol">{</a><a id="7088" href="Categories.Yoneda.html#7088" class="Bound">i</a><a id="7089" class="Symbol">}</a> <a id="7091" class="Symbol">{</a><a id="7092" href="Categories.Yoneda.html#7092" class="Bound">X</a><a id="7093" class="Symbol">}</a> <a id="7095" class="Symbol">{</a><a id="7096" href="Categories.Yoneda.html#7096" class="Bound">Y</a><a id="7097" class="Symbol">}</a> <a id="7099" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7101" href="Categories.Yoneda.html#7101" class="Bound">f</a> <a id="7103" href="Categories.Yoneda.html#7103" class="Bound">eq</a> <a id="7106" href="Categories.Yoneda.html#7106" class="Bound">eq′</a> <a id="7110" class="Symbol">=</a> <a id="7112" href="Relation.Binary.Reasoning.Base.Single.html#1925" class="Function Operator">S.begin</a>
|
|||
|
<a id="7132" href="Categories.Functor.Core.html#806" class="Function">G.₁</a> <a id="7136" href="Categories.Yoneda.html#7084" class="Bound">h</a> <a id="7138" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7142" class="Symbol">(</a><a id="7143" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7145" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7147" href="Categories.Yoneda.html#7076" class="Bound">B</a> <a id="7149" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7153" class="Symbol">(</a><a id="7154" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7158" href="Categories.Yoneda.html#7101" class="Bound">f</a> <a id="7160" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7164" href="Categories.Yoneda.html#7092" class="Bound">X</a><a id="7165" class="Symbol">))</a> <a id="7168" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">S.≈˘⟨</a> <a id="7174" href="Categories.NaturalTransformation.Core.html#827" class="Field">commute</a> <a id="7182" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7184" href="Categories.Yoneda.html#7084" class="Bound">h</a> <a id="7186" class="Symbol">(</a><a id="7187" href="Relation.Binary.Structures.html#1603" class="Function">S′.sym</a> <a id="7194" class="Symbol">(</a><a id="7195" href="Function.Equality.html#1140" class="Field">cong</a> <a id="7200" class="Symbol">(</a><a id="7201" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7205" href="Categories.Yoneda.html#7101" class="Bound">f</a><a id="7206" class="Symbol">)</a> <a id="7208" href="Categories.Yoneda.html#7103" class="Bound">eq</a><a id="7210" class="Symbol">))</a> <a id="7213" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">⟩</a>
|
|||
|
<a id="7227" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7229" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7231" href="Categories.Yoneda.html#7080" class="Bound">Z</a> <a id="7233" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7237" class="Symbol">(</a><a id="7238" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7242" href="Categories.Yoneda.html#7084" class="Bound">h</a> <a id="7244" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7248" class="Symbol">(</a><a id="7249" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7253" href="Categories.Yoneda.html#7101" class="Bound">f</a> <a id="7255" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7259" href="Categories.Yoneda.html#7096" class="Bound">Y</a><a id="7260" class="Symbol">))</a> <a id="7263" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">S.≈⟨</a> <a id="7268" href="Function.Equality.html#1140" class="Field">cong</a> <a id="7273" class="Symbol">(</a><a id="7274" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7276" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7278" href="Categories.Yoneda.html#7080" class="Bound">Z</a><a id="7279" class="Symbol">)</a> <a id="7281" class="Symbol">(</a><a id="7282" href="Categories.Functor.Core.html#696" class="Function">F.F-resp-≈</a> <a id="7293" href="Categories.Yoneda.html#7106" class="Bound">eq′</a> <a id="7297" href="Relation.Binary.Structures.html#1577" class="Function">S′.refl</a><a id="7304" class="Symbol">)</a> <a id="7306" href="Relation.Binary.Reasoning.Setoid.html#1061" class="Function">⟩</a>
|
|||
|
<a id="7320" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7322" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7324" href="Categories.Yoneda.html#7080" class="Bound">Z</a> <a id="7326" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7330" class="Symbol">(</a><a id="7331" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7335" href="Categories.Yoneda.html#7088" class="Bound">i</a> <a id="7337" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7341" class="Symbol">(</a><a id="7342" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7346" href="Categories.Yoneda.html#7101" class="Bound">f</a> <a id="7348" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7352" href="Categories.Yoneda.html#7096" class="Bound">Y</a><a id="7353" class="Symbol">))</a> <a id="7356" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">S.≈˘⟨</a> <a id="7362" href="Function.Equality.html#1140" class="Field">cong</a> <a id="7367" class="Symbol">(</a><a id="7368" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7370" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7372" href="Categories.Yoneda.html#7080" class="Bound">Z</a><a id="7373" class="Symbol">)</a> <a id="7375" class="Symbol">(</a><a id="7376" href="Categories.Functor.Core.html#565" class="Function">F.homomorphism</a> <a id="7391" class="Symbol">(</a><a id="7392" href="Relation.Binary.Structures.html#1577" class="Function">Setoid.refl</a> <a id="7404" class="Symbol">(</a><a id="7405" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="7409" href="Categories.Yoneda.html#7072" class="Bound">A</a><a id="7410" class="Symbol">)))</a> <a id="7414" href="Relation.Binary.Reasoning.Setoid.html#1162" class="Function">⟩</a>
|
|||
|
<a id="7428" href="Categories.NaturalTransformation.Core.html#783" class="Field">η</a> <a id="7430" href="Categories.Yoneda.html#7099" class="Bound">α</a> <a id="7432" href="Categories.Yoneda.html#7080" class="Bound">Z</a> <a id="7434" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7438" class="Symbol">(</a><a id="7439" href="Categories.Functor.Core.html#806" class="Function">F.₁</a> <a id="7443" class="Symbol">(</a><a id="7444" href="Categories.Yoneda.html#7101" class="Bound">f</a> <a id="7446" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="7448" href="Categories.Yoneda.html#7088" class="Bound">i</a><a id="7449" class="Symbol">)</a> <a id="7451" href="Function.Equality.html#1073" class="Field Operator">⟨$⟩</a> <a id="7455" href="Categories.Yoneda.html#7096" class="Bound">Y</a><a id="7456" class="Symbol">)</a> <a id="7465" href="Relation.Binary.Reasoning.Base.Single.html#2564" class="Function Operator">S.∎</a>
|
|||
|
<a id="7481" class="Keyword">where</a>
|
|||
|
<a id="7501" class="Keyword">module</a> <a id="7508" href="Categories.Yoneda.html#7508" class="Module">F</a> <a id="7510" class="Symbol">=</a> <a id="7512" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="7520" href="Categories.Yoneda.html#7064" class="Bound">F</a> <a id="7522" class="Keyword">using</a> <a id="7528" class="Symbol">(</a><a id="7529" href="Categories.Functor.Core.html#797" class="Function">₀</a><a id="7530" class="Symbol">;</a> <a id="7532" href="Categories.Functor.Core.html#806" class="Function">₁</a><a id="7533" class="Symbol">;</a> <a id="7535" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a><a id="7547" class="Symbol">;</a> <a id="7549" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a><a id="7557" class="Symbol">)</a>
|
|||
|
<a id="7573" class="Keyword">module</a> <a id="7580" href="Categories.Yoneda.html#7580" class="Module">G</a> <a id="7582" class="Symbol">=</a> <a id="7584" href="Categories.Functor.Core.html#248" class="Module">Functor</a> <a id="7592" href="Categories.Yoneda.html#7068" class="Bound">G</a> <a id="7594" class="Keyword">using</a> <a id="7600" class="Symbol">(</a><a id="7601" href="Categories.Functor.Core.html#797" class="Function">₀</a><a id="7602" class="Symbol">;</a> <a id="7604" href="Categories.Functor.Core.html#806" class="Function">₁</a><a id="7605" class="Symbol">)</a>
|
|||
|
<a id="7621" class="Keyword">module</a> <a id="7628" href="Categories.Yoneda.html#7628" class="Module">S</a> <a id="7630" class="Symbol">=</a> <a id="7632" href="Relation.Binary.Reasoning.Setoid.html" class="Module">SetoidR</a> <a id="7640" class="Symbol">(</a><a id="7641" href="Categories.Functor.Core.html#797" class="Function">G.₀</a> <a id="7645" href="Categories.Yoneda.html#7080" class="Bound">Z</a><a id="7646" class="Symbol">)</a>
|
|||
|
<a id="7662" class="Keyword">module</a> <a id="7669" href="Categories.Yoneda.html#7669" class="Module">S′</a> <a id="7672" class="Symbol">=</a> <a id="7674" href="Relation.Binary.Bundles.html#1018" class="Module">Setoid</a> <a id="7681" class="Symbol">(</a><a id="7682" href="Categories.Functor.Core.html#797" class="Function">F.₀</a> <a id="7686" href="Categories.Yoneda.html#7076" class="Bound">B</a><a id="7687" class="Symbol">)</a> <a id="7689" class="Keyword">using</a> <a id="7695" class="Symbol">(</a><a id="7696" href="Relation.Binary.Structures.html#1577" class="Function">refl</a><a id="7700" class="Symbol">;</a> <a id="7702" href="Relation.Binary.Structures.html#1603" class="Function">sym</a><a id="7705" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="7710" class="Keyword">module</a> <a id="Yoneda.yoneda"></a><a id="7717" href="Categories.Yoneda.html#7717" class="Module">yoneda</a> <a id="7724" class="Symbol">=</a> <a id="7726" href="Categories.NaturalTransformation.NaturalIsomorphism.html#651" class="Module">NaturalIsomorphism</a> <a id="7745" href="Categories.Yoneda.html#4789" class="Function">yoneda</a>
|
|||
|
</pre></body></html>
|