mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
165 lines
53 KiB
HTML
165 lines
53 KiB
HTML
|
<!DOCTYPE HTML>
|
|||
|
<html><head><meta charset="utf-8"><title>Categories.Category.CartesianClosed.Canonical</title><link rel="stylesheet" href="Agda.css"></head><body><pre class="Agda"><a id="1" class="Symbol">{-#</a> <a id="5" class="Keyword">OPTIONS</a> <a id="13" class="Pragma">--without-K</a> <a id="25" class="Pragma">--safe</a> <a id="32" class="Symbol">#-}</a>
|
|||
|
<a id="36" class="Keyword">open</a> <a id="41" class="Keyword">import</a> <a id="48" href="Categories.Category.Core.html" class="Module">Categories.Category.Core</a> <a id="73" class="Keyword">using</a> <a id="79" class="Symbol">(</a><a id="80" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="88" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="91" class="Comment">-- A "canonical" presentation of cartesian closed categories.</a>
|
|||
|
<a id="153" class="Comment">--</a>
|
|||
|
<a id="156" class="Comment">-- This presentation is equivalent to the one in</a>
|
|||
|
<a id="205" class="Comment">-- Categories.Category.CartesianClosed but it is easier to work with</a>
|
|||
|
<a id="274" class="Comment">-- in some circumstances.</a>
|
|||
|
<a id="300" class="Comment">--</a>
|
|||
|
<a id="303" class="Comment">-- Here, exponentials are not defined in terms of arbitrary products,</a>
|
|||
|
<a id="373" class="Comment">-- but in terms of a family of "canonical" products. Since products</a>
|
|||
|
<a id="442" class="Comment">-- are defined only up to isomorphism the choice of product does not</a>
|
|||
|
<a id="511" class="Comment">-- matter for the property of being cartesian closed, but working with</a>
|
|||
|
<a id="582" class="Comment">-- a fixed choice of representatives simplifies the constructions of</a>
|
|||
|
<a id="651" class="Comment">-- some instances of CCCs (e.g. Cats).</a>
|
|||
|
|
|||
|
<a id="691" class="Keyword">module</a> <a id="698" href="Categories.Category.CartesianClosed.Canonical.html" class="Module">Categories.Category.CartesianClosed.Canonical</a> <a id="744" class="Symbol">{</a><a id="745" href="Categories.Category.CartesianClosed.Canonical.html#745" class="Bound">o</a> <a id="747" href="Categories.Category.CartesianClosed.Canonical.html#747" class="Bound">ℓ</a> <a id="749" href="Categories.Category.CartesianClosed.Canonical.html#749" class="Bound">e</a><a id="750" class="Symbol">}</a> <a id="752" class="Symbol">(</a><a id="753" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a> <a id="755" class="Symbol">:</a> <a id="757" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="766" href="Categories.Category.CartesianClosed.Canonical.html#745" class="Bound">o</a> <a id="768" href="Categories.Category.CartesianClosed.Canonical.html#747" class="Bound">ℓ</a> <a id="770" href="Categories.Category.CartesianClosed.Canonical.html#749" class="Bound">e</a><a id="771" class="Symbol">)</a> <a id="773" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="780" class="Keyword">open</a> <a id="785" class="Keyword">import</a> <a id="792" href="Level.html" class="Module">Level</a> <a id="798" class="Keyword">using</a> <a id="804" class="Symbol">(</a><a id="805" href="Level.html#602" class="Function">levelOfTerm</a><a id="816" class="Symbol">)</a>
|
|||
|
<a id="818" class="Keyword">open</a> <a id="823" class="Keyword">import</a> <a id="830" href="Function.html" class="Module">Function</a> <a id="839" class="Keyword">using</a> <a id="845" class="Symbol">(</a><a id="846" href="Function.Base.html#1638" class="Function">flip</a><a id="850" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="853" class="Keyword">open</a> <a id="858" class="Keyword">import</a> <a id="865" href="Categories.Category.BinaryProducts.html" class="Module">Categories.Category.BinaryProducts</a> <a id="900" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a>
|
|||
|
<a id="902" class="Keyword">open</a> <a id="907" class="Keyword">import</a> <a id="914" href="Categories.Category.Cartesian.html" class="Module">Categories.Category.Cartesian</a> <a id="944" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a> <a id="946" class="Keyword">using</a> <a id="952" class="Symbol">(</a><a id="953" href="Categories.Category.Cartesian.html#727" class="Record">Cartesian</a><a id="962" class="Symbol">)</a>
|
|||
|
<a id="964" class="Keyword">import</a> <a id="971" href="Categories.Category.CartesianClosed.html" class="Module">Categories.Category.CartesianClosed</a> <a id="1007" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a> as <a id="𝒞-CC"></a><a id="1012" href="Categories.Category.CartesianClosed.Canonical.html#1012" class="Module">𝒞-CC</a>
|
|||
|
<a id="1017" class="Keyword">open</a> <a id="1022" class="Keyword">import</a> <a id="1029" href="Categories.Object.Exponential.html" class="Module">Categories.Object.Exponential</a> <a id="1059" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a> <a id="1061" class="Keyword">using</a> <a id="1067" class="Symbol">(</a><a id="1068" href="Categories.Object.Exponential.html#583" class="Record">Exponential</a><a id="1079" class="Symbol">)</a>
|
|||
|
<a id="1081" class="Keyword">open</a> <a id="1086" class="Keyword">import</a> <a id="1093" href="Categories.Object.Product.html" class="Module">Categories.Object.Product</a> <a id="1119" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a>
|
|||
|
<a id="1121" class="Keyword">open</a> <a id="1126" class="Keyword">import</a> <a id="1133" href="Categories.Object.Terminal.html" class="Module">Categories.Object.Terminal</a> <a id="1160" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a> <a id="1162" class="Keyword">using</a> <a id="1168" class="Symbol">(</a><a id="1169" href="Categories.Object.Terminal.html#860" class="Record">Terminal</a><a id="1177" class="Symbol">)</a>
|
|||
|
<a id="1179" class="Keyword">open</a> <a id="1184" class="Keyword">import</a> <a id="1191" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="1221" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a>
|
|||
|
|
|||
|
<a id="1224" class="Keyword">private</a>
|
|||
|
<a id="1234" class="Keyword">open</a> <a id="1239" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="1248" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a>
|
|||
|
<a id="1252" class="Keyword">open</a> <a id="1257" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
|
|||
|
|
|||
|
<a id="1273" class="Keyword">variable</a>
|
|||
|
<a id="1286" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1288" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="1290" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="1292" class="Symbol">:</a> <a id="1294" href="Categories.Category.Core.html#559" class="Field">Obj</a>
|
|||
|
<a id="1302" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="1304" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a> <a id="1306" href="Categories.Category.CartesianClosed.Canonical.html#1306" class="Generalizable">h</a> <a id="1308" class="Symbol">:</a> <a id="1310" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1312" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1314" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a>
|
|||
|
|
|||
|
<a id="1317" class="Comment">-- A (canonical) cartesian closed category is a category with all</a>
|
|||
|
<a id="1383" class="Comment">-- (canonical) products and exponentials</a>
|
|||
|
<a id="1424" class="Comment">--</a>
|
|||
|
<a id="1427" class="Comment">-- This presentation is equivalent to the one in</a>
|
|||
|
<a id="1476" class="Comment">-- Categories.Category.CartesianClosed.CartesianClosed.</a>
|
|||
|
<a id="1532" class="Keyword">record</a> <a id="CartesianClosed"></a><a id="1539" href="Categories.Category.CartesianClosed.Canonical.html#1539" class="Record">CartesianClosed</a> <a id="1555" class="Symbol">:</a> <a id="1557" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1561" class="Symbol">(</a><a id="1562" href="Level.html#602" class="Function">levelOfTerm</a> <a id="1574" href="Categories.Category.CartesianClosed.Canonical.html#753" class="Bound">𝒞</a><a id="1575" class="Symbol">)</a> <a id="1577" class="Keyword">where</a>
|
|||
|
<a id="1585" class="Keyword">infixr</a> <a id="1592" class="Number">7</a> <a id="1594" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">_×_</a>
|
|||
|
<a id="1600" class="Keyword">infixr</a> <a id="1607" class="Number">9</a> <a id="1609" href="Categories.Category.CartesianClosed.Canonical.html#2601" class="Field Operator">_^_</a>
|
|||
|
<a id="1615" class="Keyword">infix</a> <a id="1621" class="Number">10</a> <a id="1624" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟨_,_⟩</a>
|
|||
|
|
|||
|
<a id="1633" class="Keyword">field</a>
|
|||
|
|
|||
|
<a id="1644" class="Comment">-- Canonical products</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.⊤"></a><a id="1671" href="Categories.Category.CartesianClosed.Canonical.html#1671" class="Field">⊤</a> <a id="1676" class="Symbol">:</a> <a id="1678" href="Categories.Category.Core.html#559" class="Field">Obj</a>
|
|||
|
<a id="CartesianClosed._×_"></a><a id="1686" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">_×_</a> <a id="1691" class="Symbol">:</a> <a id="1693" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="1697" class="Symbol">→</a> <a id="1699" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="1703" class="Symbol">→</a> <a id="1705" href="Categories.Category.Core.html#559" class="Field">Obj</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.!"></a><a id="1714" href="Categories.Category.CartesianClosed.Canonical.html#1714" class="Field">!</a> <a id="1720" class="Symbol">:</a> <a id="1722" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1724" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1726" href="Categories.Category.CartesianClosed.Canonical.html#1671" class="Field">⊤</a>
|
|||
|
<a id="CartesianClosed.π₁"></a><a id="1732" href="Categories.Category.CartesianClosed.Canonical.html#1732" class="Field">π₁</a> <a id="1738" class="Symbol">:</a> <a id="1740" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1742" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">×</a> <a id="1744" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="1746" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1748" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a>
|
|||
|
<a id="CartesianClosed.π₂"></a><a id="1754" href="Categories.Category.CartesianClosed.Canonical.html#1754" class="Field">π₂</a> <a id="1760" class="Symbol">:</a> <a id="1762" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1764" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">×</a> <a id="1766" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="1768" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1770" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a>
|
|||
|
<a id="CartesianClosed.⟨_,_⟩"></a><a id="1776" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟨_,_⟩</a> <a id="1782" class="Symbol">:</a> <a id="1784" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="1786" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1788" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1790" class="Symbol">→</a> <a id="1792" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="1794" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1796" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="1798" class="Symbol">→</a> <a id="1800" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="1802" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1804" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1806" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">×</a> <a id="1808" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.!-unique"></a><a id="1815" href="Categories.Category.CartesianClosed.Canonical.html#1815" class="Field">!-unique</a> <a id="1824" class="Symbol">:</a> <a id="1826" class="Symbol">(</a><a id="1827" href="Categories.Category.CartesianClosed.Canonical.html#1827" class="Bound">f</a> <a id="1829" class="Symbol">:</a> <a id="1831" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1833" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1835" href="Categories.Category.CartesianClosed.Canonical.html#1671" class="Field">⊤</a><a id="1836" class="Symbol">)</a> <a id="1838" class="Symbol">→</a> <a id="1840" href="Categories.Category.CartesianClosed.Canonical.html#1714" class="Field">!</a> <a id="1842" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1844" href="Categories.Category.CartesianClosed.Canonical.html#1827" class="Bound">f</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.π₁-comp"></a><a id="1851" href="Categories.Category.CartesianClosed.Canonical.html#1851" class="Field">π₁-comp</a> <a id="1860" class="Symbol">:</a> <a id="1862" href="Categories.Category.CartesianClosed.Canonical.html#1732" class="Field">π₁</a> <a id="1865" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1867" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟨</a> <a id="1869" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="1871" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">,</a> <a id="1873" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a> <a id="1875" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟩</a> <a id="1877" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1879" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a>
|
|||
|
<a id="CartesianClosed.π₂-comp"></a><a id="1885" href="Categories.Category.CartesianClosed.Canonical.html#1885" class="Field">π₂-comp</a> <a id="1894" class="Symbol">:</a> <a id="1896" href="Categories.Category.CartesianClosed.Canonical.html#1754" class="Field">π₂</a> <a id="1899" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1901" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟨</a> <a id="1903" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="1905" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">,</a> <a id="1907" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a> <a id="1909" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟩</a> <a id="1911" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1913" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.⟨,⟩-unique"></a><a id="1920" href="Categories.Category.CartesianClosed.Canonical.html#1920" class="Field">⟨,⟩-unique</a> <a id="1931" class="Symbol">:</a> <a id="1933" class="Symbol">∀</a> <a id="1935" class="Symbol">{</a><a id="1936" href="Categories.Category.CartesianClosed.Canonical.html#1936" class="Bound">f</a> <a id="1938" href="Categories.Category.CartesianClosed.Canonical.html#1938" class="Bound">g</a><a id="1939" class="Symbol">}</a> <a id="1941" class="Symbol">{</a><a id="1942" href="Categories.Category.CartesianClosed.Canonical.html#1942" class="Bound">h</a> <a id="1944" class="Symbol">:</a> <a id="1946" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="1948" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="1950" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="1952" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">×</a> <a id="1954" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a><a id="1955" class="Symbol">}</a> <a id="1957" class="Symbol">→</a>
|
|||
|
<a id="1976" href="Categories.Category.CartesianClosed.Canonical.html#1732" class="Field">π₁</a> <a id="1979" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1981" href="Categories.Category.CartesianClosed.Canonical.html#1942" class="Bound">h</a> <a id="1983" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1985" href="Categories.Category.CartesianClosed.Canonical.html#1936" class="Bound">f</a> <a id="1987" class="Symbol">→</a> <a id="1989" href="Categories.Category.CartesianClosed.Canonical.html#1754" class="Field">π₂</a> <a id="1992" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="1994" href="Categories.Category.CartesianClosed.Canonical.html#1942" class="Bound">h</a> <a id="1996" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="1998" href="Categories.Category.CartesianClosed.Canonical.html#1938" class="Bound">g</a> <a id="2000" class="Symbol">→</a> <a id="2002" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟨</a> <a id="2004" href="Categories.Category.CartesianClosed.Canonical.html#1936" class="Bound">f</a> <a id="2006" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">,</a> <a id="2008" href="Categories.Category.CartesianClosed.Canonical.html#1938" class="Bound">g</a> <a id="2010" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟩</a> <a id="2012" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2014" href="Categories.Category.CartesianClosed.Canonical.html#1942" class="Bound">h</a>
|
|||
|
|
|||
|
<a id="2019" class="Comment">-- The above defines canonical finite products, making 𝒞 cartesian.</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.⊤-terminal"></a><a id="2090" href="Categories.Category.CartesianClosed.Canonical.html#2090" class="Function">⊤-terminal</a> <a id="2101" class="Symbol">:</a> <a id="2103" href="Categories.Object.Terminal.html#860" class="Record">Terminal</a>
|
|||
|
<a id="2114" href="Categories.Category.CartesianClosed.Canonical.html#2090" class="Function">⊤-terminal</a> <a id="2125" class="Symbol">=</a> <a id="2127" class="Keyword">record</a> <a id="2134" class="Symbol">{</a> <a id="2136" href="Categories.Object.Terminal.html#917" class="Field">⊤-is-terminal</a> <a id="2150" class="Symbol">=</a> <a id="2152" class="Keyword">record</a> <a id="2159" class="Symbol">{</a> <a id="2161" href="Categories.Object.Terminal.html#605" class="Field">!-unique</a> <a id="2170" class="Symbol">=</a> <a id="2172" href="Categories.Category.CartesianClosed.Canonical.html#1815" class="Field">!-unique</a> <a id="2181" class="Symbol">}</a> <a id="2183" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.×-product"></a><a id="2188" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="2198" class="Symbol">:</a> <a id="2200" class="Symbol">∀</a> <a id="2202" class="Symbol">{</a><a id="2203" href="Categories.Category.CartesianClosed.Canonical.html#2203" class="Bound">A</a> <a id="2205" href="Categories.Category.CartesianClosed.Canonical.html#2205" class="Bound">B</a><a id="2206" class="Symbol">}</a> <a id="2208" class="Symbol">→</a> <a id="2210" href="Categories.Object.Product.Core.html#435" class="Record">Product</a> <a id="2218" href="Categories.Category.CartesianClosed.Canonical.html#2203" class="Bound">A</a> <a id="2220" href="Categories.Category.CartesianClosed.Canonical.html#2205" class="Bound">B</a>
|
|||
|
<a id="2224" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="2234" class="Symbol">{</a><a id="2235" href="Categories.Category.CartesianClosed.Canonical.html#2235" class="Bound">A</a><a id="2236" class="Symbol">}</a> <a id="2238" class="Symbol">{</a><a id="2239" href="Categories.Category.CartesianClosed.Canonical.html#2239" class="Bound">B</a><a id="2240" class="Symbol">}</a> <a id="2242" class="Symbol">=</a>
|
|||
|
<a id="2248" class="Keyword">record</a> <a id="2255" class="Symbol">{</a> <a id="2257" href="Categories.Object.Product.Core.html#603" class="Field">project₁</a> <a id="2266" class="Symbol">=</a> <a id="2268" href="Categories.Category.CartesianClosed.Canonical.html#1851" class="Field">π₁-comp</a><a id="2275" class="Symbol">;</a> <a id="2277" href="Categories.Object.Product.Core.html#637" class="Field">project₂</a> <a id="2286" class="Symbol">=</a> <a id="2288" href="Categories.Category.CartesianClosed.Canonical.html#1885" class="Field">π₂-comp</a><a id="2295" class="Symbol">;</a> <a id="2297" href="Categories.Object.Product.Core.html#671" class="Field">unique</a> <a id="2304" class="Symbol">=</a> <a id="2306" href="Categories.Category.CartesianClosed.Canonical.html#1920" class="Field">⟨,⟩-unique</a> <a id="2317" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.isCartesian"></a><a id="2322" href="Categories.Category.CartesianClosed.Canonical.html#2322" class="Function">isCartesian</a> <a id="2334" class="Symbol">:</a> <a id="2336" href="Categories.Category.Cartesian.html#727" class="Record">Cartesian</a>
|
|||
|
<a id="2348" href="Categories.Category.CartesianClosed.Canonical.html#2322" class="Function">isCartesian</a> <a id="2360" class="Symbol">=</a> <a id="2362" class="Keyword">record</a>
|
|||
|
<a id="2373" class="Symbol">{</a> <a id="2375" href="Categories.Category.Cartesian.html#777" class="Field">terminal</a> <a id="2384" class="Symbol">=</a> <a id="2386" href="Categories.Category.CartesianClosed.Canonical.html#2090" class="Function">⊤-terminal</a>
|
|||
|
<a id="2401" class="Symbol">;</a> <a id="2403" href="Categories.Category.Cartesian.html#801" class="Field">products</a> <a id="2412" class="Symbol">=</a> <a id="2414" class="Keyword">record</a> <a id="2421" class="Symbol">{</a> <a id="2423" href="Categories.Category.BinaryProducts.html#952" class="Field">product</a> <a id="2431" class="Symbol">=</a> <a id="2433" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="2443" class="Symbol">}</a>
|
|||
|
<a id="2449" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="2454" class="Keyword">open</a> <a id="2459" href="Categories.Category.Cartesian.html#727" class="Module">Cartesian</a> <a id="2469" href="Categories.Category.CartesianClosed.Canonical.html#2322" class="Function">isCartesian</a>
|
|||
|
<a id="2483" class="Keyword">open</a> <a id="2488" href="Categories.Category.BinaryProducts.html#848" class="Module">BinaryProducts</a> <a id="2503" href="Categories.Category.Cartesian.html#801" class="Function">products</a> <a id="2512" class="Keyword">using</a> <a id="2518" class="Symbol">(</a><a id="2519" href="Categories.Category.BinaryProducts.html#1465" class="Function Operator">_⁂_</a><a id="2522" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="2527" class="Keyword">field</a>
|
|||
|
|
|||
|
<a id="2538" class="Comment">-- Canonical exponentials (w.r.t. the canonical products)</a>
|
|||
|
|
|||
|
<a id="CartesianClosed._^_"></a><a id="2601" href="Categories.Category.CartesianClosed.Canonical.html#2601" class="Field Operator">_^_</a> <a id="2607" class="Symbol">:</a> <a id="2609" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="2613" class="Symbol">→</a> <a id="2615" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="2619" class="Symbol">→</a> <a id="2621" href="Categories.Category.Core.html#559" class="Field">Obj</a>
|
|||
|
<a id="CartesianClosed.eval"></a><a id="2629" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="2635" class="Symbol">:</a> <a id="2637" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="2639" href="Categories.Category.CartesianClosed.Canonical.html#2601" class="Field Operator">^</a> <a id="2641" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="2643" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">×</a> <a id="2645" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="2647" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="2649" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a>
|
|||
|
<a id="CartesianClosed.curry"></a><a id="2655" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="2661" class="Symbol">:</a> <a id="2663" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="2665" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">×</a> <a id="2667" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a> <a id="2669" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="2671" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="2673" class="Symbol">→</a> <a id="2675" href="Categories.Category.CartesianClosed.Canonical.html#1290" class="Generalizable">C</a> <a id="2677" href="Categories.Category.Core.html#575" class="Field Operator">⇒</a> <a id="2679" href="Categories.Category.CartesianClosed.Canonical.html#1288" class="Generalizable">B</a> <a id="2681" href="Categories.Category.CartesianClosed.Canonical.html#2601" class="Field Operator">^</a> <a id="2683" href="Categories.Category.CartesianClosed.Canonical.html#1286" class="Generalizable">A</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.eval-comp"></a><a id="2690" href="Categories.Category.CartesianClosed.Canonical.html#2690" class="Field">eval-comp</a> <a id="2701" class="Symbol">:</a> <a id="2703" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="2708" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2710" class="Symbol">(</a><a id="2711" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="2717" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="2719" href="Categories.Category.BinaryProducts.html#1465" class="Function Operator">⁂</a> <a id="2721" href="Categories.Category.Core.html#630" class="Field">id</a><a id="2723" class="Symbol">)</a> <a id="2725" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2727" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.curry-unique"></a><a id="2734" href="Categories.Category.CartesianClosed.Canonical.html#2734" class="Field">curry-unique</a> <a id="2747" class="Symbol">:</a> <a id="2749" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="2754" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="2756" class="Symbol">(</a><a id="2757" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="2759" href="Categories.Category.BinaryProducts.html#1465" class="Function Operator">⁂</a> <a id="2761" href="Categories.Category.Core.html#630" class="Field">id</a><a id="2763" class="Symbol">)</a> <a id="2765" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2767" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a> <a id="2769" class="Symbol">→</a> <a id="2771" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="2773" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2775" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="2781" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.curry-resp-≈"></a><a id="2786" href="Categories.Category.CartesianClosed.Canonical.html#2786" class="Function">curry-resp-≈</a> <a id="2799" class="Symbol">:</a> <a id="2801" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="2803" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2805" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a> <a id="2807" class="Symbol">→</a> <a id="2809" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="2815" href="Categories.Category.CartesianClosed.Canonical.html#1302" class="Generalizable">f</a> <a id="2817" href="Categories.Category.Core.html#595" class="Field Operator">≈</a> <a id="2819" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="2825" href="Categories.Category.CartesianClosed.Canonical.html#1304" class="Generalizable">g</a>
|
|||
|
<a id="2829" href="Categories.Category.CartesianClosed.Canonical.html#2786" class="Function">curry-resp-≈</a> <a id="2842" href="Categories.Category.CartesianClosed.Canonical.html#2842" class="Bound">f≈g</a> <a id="2846" class="Symbol">=</a> <a id="2848" href="Categories.Category.CartesianClosed.Canonical.html#2734" class="Field">curry-unique</a> <a id="2861" class="Symbol">(</a><a id="2862" href="Categories.Category.CartesianClosed.Canonical.html#2690" class="Field">eval-comp</a> <a id="2872" href="Categories.Category.Core.html#3061" class="Function Operator">○</a> <a id="2874" href="Categories.Category.CartesianClosed.Canonical.html#2842" class="Bound">f≈g</a><a id="2877" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="2882" class="Comment">-- The above defines canonical exponentials, making 𝒞 cartesian closed.</a>
|
|||
|
<a id="2956" class="Comment">--</a>
|
|||
|
<a id="2961" class="Comment">-- NOTE: below we use "⊗" to indicate "non-canonical" products.</a>
|
|||
|
|
|||
|
<a id="CartesianClosed.^-exponential"></a><a id="3028" href="Categories.Category.CartesianClosed.Canonical.html#3028" class="Function">^-exponential</a> <a id="3042" class="Symbol">:</a> <a id="3044" class="Symbol">∀</a> <a id="3046" class="Symbol">{</a><a id="3047" href="Categories.Category.CartesianClosed.Canonical.html#3047" class="Bound">A</a> <a id="3049" href="Categories.Category.CartesianClosed.Canonical.html#3049" class="Bound">B</a><a id="3050" class="Symbol">}</a> <a id="3052" class="Symbol">→</a> <a id="3054" href="Categories.Object.Exponential.html#583" class="Record">Exponential</a> <a id="3066" href="Categories.Category.CartesianClosed.Canonical.html#3047" class="Bound">A</a> <a id="3068" href="Categories.Category.CartesianClosed.Canonical.html#3049" class="Bound">B</a>
|
|||
|
<a id="3072" href="Categories.Category.CartesianClosed.Canonical.html#3028" class="Function">^-exponential</a> <a id="3086" class="Symbol">{</a><a id="3087" href="Categories.Category.CartesianClosed.Canonical.html#3087" class="Bound">A</a><a id="3088" class="Symbol">}</a> <a id="3090" class="Symbol">{</a><a id="3091" href="Categories.Category.CartesianClosed.Canonical.html#3091" class="Bound">B</a><a id="3092" class="Symbol">}</a> <a id="3094" class="Symbol">=</a> <a id="3096" class="Keyword">record</a>
|
|||
|
<a id="3107" class="Symbol">{</a> <a id="3109" href="Categories.Object.Exponential.html#643" class="Field">B^A</a> <a id="3118" class="Symbol">=</a> <a id="3120" href="Categories.Category.CartesianClosed.Canonical.html#3091" class="Bound">B</a> <a id="3122" href="Categories.Category.CartesianClosed.Canonical.html#2601" class="Field Operator">^</a> <a id="3124" href="Categories.Category.CartesianClosed.Canonical.html#3087" class="Bound">A</a>
|
|||
|
<a id="3130" class="Symbol">;</a> <a id="3132" href="Categories.Object.Exponential.html#657" class="Field">product</a> <a id="3141" class="Symbol">=</a> <a id="3143" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a>
|
|||
|
<a id="3157" class="Symbol">;</a> <a id="3159" href="Categories.Object.Exponential.html#767" class="Field">eval</a> <a id="3168" class="Symbol">=</a> <a id="3170" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a>
|
|||
|
<a id="3179" class="Symbol">;</a> <a id="3181" href="Categories.Object.Exponential.html#792" class="Field">λg</a> <a id="3190" class="Symbol">=</a> <a id="3192" class="Symbol">λ</a> <a id="3194" href="Categories.Category.CartesianClosed.Canonical.html#3194" class="Bound">C⊗A</a> <a id="3198" href="Categories.Category.CartesianClosed.Canonical.html#3198" class="Bound">f</a> <a id="3200" class="Symbol">→</a> <a id="3202" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="3208" class="Symbol">(</a><a id="3209" href="Categories.Category.CartesianClosed.Canonical.html#3198" class="Bound">f</a> <a id="3211" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3213" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3220" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3230" href="Categories.Category.CartesianClosed.Canonical.html#3194" class="Bound">C⊗A</a><a id="3233" class="Symbol">)</a>
|
|||
|
<a id="3239" class="Symbol">;</a> <a id="3241" href="Categories.Object.Exponential.html#865" class="Field">β</a> <a id="3250" class="Symbol">=</a> <a id="3252" class="Symbol">λ</a> <a id="3254" class="Symbol">{</a><a id="3255" href="Categories.Category.CartesianClosed.Canonical.html#3255" class="Bound">C</a><a id="3256" class="Symbol">}</a> <a id="3258" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a> <a id="3262" class="Symbol">{</a><a id="3263" href="Categories.Category.CartesianClosed.Canonical.html#3263" class="Bound">g</a><a id="3264" class="Symbol">}</a> <a id="3266" class="Symbol">→</a>
|
|||
|
<a id="3274" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
|
|||
|
<a id="3288" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="3293" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3295" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">[</a> <a id="3297" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a> <a id="3301" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">⇒</a> <a id="3303" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3313" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">]</a> <a id="3315" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="3321" class="Symbol">(</a><a id="3322" href="Categories.Category.CartesianClosed.Canonical.html#3263" class="Bound">g</a> <a id="3324" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3326" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3333" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3343" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a><a id="3346" class="Symbol">)</a> <a id="3348" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">×id</a>
|
|||
|
<a id="3358" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="3362" href="Categories.Morphism.Reasoning.Core.html#1914" class="Function">pullʳ</a> <a id="3368" href="Categories.Object.Product.Morphisms.html#1982" class="Function Operator">[</a> <a id="3370" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3380" href="Categories.Object.Product.Morphisms.html#1982" class="Function Operator">⇒</a> <a id="3382" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3392" href="Categories.Object.Product.Morphisms.html#1982" class="Function Operator">]×∘⟨⟩</a> <a id="3398" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">⟩</a>
|
|||
|
<a id="3408" class="Symbol">(</a><a id="3409" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="3414" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3416" class="Symbol">(</a><a id="3417" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="3423" class="Symbol">(</a><a id="3424" href="Categories.Category.CartesianClosed.Canonical.html#3263" class="Bound">g</a> <a id="3426" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3428" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3435" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3445" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a><a id="3448" class="Symbol">)</a> <a id="3450" href="Categories.Category.BinaryProducts.html#1465" class="Function Operator">⁂</a> <a id="3452" href="Categories.Category.Core.html#630" class="Field">id</a><a id="3454" class="Symbol">))</a> <a id="3457" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3459" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3466" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a> <a id="3470" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a>
|
|||
|
<a id="3486" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3489" href="Categories.Category.CartesianClosed.Canonical.html#2690" class="Field">eval-comp</a> <a id="3499" href="Categories.Category.Core.html#2837" class="Function Operator">⟩∘⟨refl</a> <a id="3507" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3517" class="Symbol">(</a><a id="3518" href="Categories.Category.CartesianClosed.Canonical.html#3263" class="Bound">g</a> <a id="3520" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3522" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3529" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3539" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a><a id="3542" class="Symbol">)</a> <a id="3544" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3546" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3553" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a> <a id="3557" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a>
|
|||
|
<a id="3573" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3576" href="Categories.Morphism.Reasoning.Core.html#6665" class="Function">cancelʳ</a> <a id="3584" class="Symbol">(</a><a id="3585" href="Categories.Object.Product.Morphisms.html#2858" class="Function">repack∘repack≈id</a> <a id="3602" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3612" href="Categories.Category.CartesianClosed.Canonical.html#3258" class="Bound">C⊗A</a><a id="3615" class="Symbol">)</a> <a id="3617" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3627" href="Categories.Category.CartesianClosed.Canonical.html#3263" class="Bound">g</a>
|
|||
|
<a id="3635" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">∎</a>
|
|||
|
<a id="3641" class="Symbol">;</a> <a id="3643" href="Categories.Object.Exponential.html#991" class="Field">λ-unique</a> <a id="3652" class="Symbol">=</a> <a id="3654" class="Symbol">λ</a> <a id="3656" class="Symbol">{</a><a id="3657" href="Categories.Category.CartesianClosed.Canonical.html#3657" class="Bound">C</a><a id="3658" class="Symbol">}</a> <a id="3660" href="Categories.Category.CartesianClosed.Canonical.html#3660" class="Bound">C⊗A</a> <a id="3664" class="Symbol">{</a><a id="3665" href="Categories.Category.CartesianClosed.Canonical.html#3665" class="Bound">g</a><a id="3666" class="Symbol">}</a> <a id="3668" class="Symbol">{</a><a id="3669" href="Categories.Category.CartesianClosed.Canonical.html#3669" class="Bound">f</a><a id="3670" class="Symbol">}</a> <a id="3672" href="Categories.Category.CartesianClosed.Canonical.html#3672" class="Bound">hyp</a> <a id="3676" class="Symbol">→</a>
|
|||
|
<a id="3684" href="Categories.Category.CartesianClosed.Canonical.html#2734" class="Field">curry-unique</a> <a id="3697" class="Symbol">(</a><a id="3698" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
|
|||
|
<a id="3712" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="3717" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3719" class="Symbol">(</a><a id="3720" href="Categories.Category.CartesianClosed.Canonical.html#3669" class="Bound">f</a> <a id="3722" href="Categories.Category.BinaryProducts.html#1465" class="Function Operator">⁂</a> <a id="3724" href="Categories.Category.Core.html#630" class="Field">id</a><a id="3726" class="Symbol">)</a>
|
|||
|
<a id="3734" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">≈˘⟨</a> <a id="3738" href="Categories.Morphism.Reasoning.Core.html#1914" class="Function">pullʳ</a> <a id="3744" href="Categories.Object.Product.Morphisms.html#1982" class="Function Operator">[</a> <a id="3746" href="Categories.Category.CartesianClosed.Canonical.html#3660" class="Bound">C⊗A</a> <a id="3750" href="Categories.Object.Product.Morphisms.html#1982" class="Function Operator">⇒</a> <a id="3752" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3762" href="Categories.Object.Product.Morphisms.html#1982" class="Function Operator">]×∘⟨⟩</a> <a id="3768" href="Relation.Binary.Reasoning.Syntax.html#7400" class="Function">⟩</a>
|
|||
|
<a id="3778" class="Symbol">(</a><a id="3779" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="3784" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3786" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">[</a> <a id="3788" href="Categories.Category.CartesianClosed.Canonical.html#3660" class="Bound">C⊗A</a> <a id="3792" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">⇒</a> <a id="3794" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3804" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">]</a> <a id="3806" href="Categories.Category.CartesianClosed.Canonical.html#3669" class="Bound">f</a> <a id="3808" href="Categories.Object.Product.Morphisms.html#4276" class="Function Operator">×id</a><a id="3811" class="Symbol">)</a> <a id="3813" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3815" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3822" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3832" href="Categories.Category.CartesianClosed.Canonical.html#3660" class="Bound">C⊗A</a>
|
|||
|
<a id="3842" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">≈⟨</a> <a id="3845" href="Categories.Category.CartesianClosed.Canonical.html#3672" class="Bound">hyp</a> <a id="3849" href="Categories.Category.Core.html#2837" class="Function Operator">⟩∘⟨refl</a> <a id="3857" href="Relation.Binary.Reasoning.Syntax.html#7049" class="Function">⟩</a>
|
|||
|
<a id="3867" href="Categories.Category.CartesianClosed.Canonical.html#3665" class="Bound">g</a> <a id="3869" href="Categories.Category.Core.html#656" class="Field Operator">∘</a> <a id="3871" href="Categories.Object.Product.Core.html#2078" class="Function">repack</a> <a id="3878" href="Categories.Category.CartesianClosed.Canonical.html#2188" class="Function">×-product</a> <a id="3888" href="Categories.Category.CartesianClosed.Canonical.html#3660" class="Bound">C⊗A</a>
|
|||
|
<a id="3898" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator">∎</a><a id="3899" class="Symbol">)</a>
|
|||
|
<a id="3905" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="3908" class="Keyword">module</a> <a id="Equivalence"></a><a id="3915" href="Categories.Category.CartesianClosed.Canonical.html#3915" class="Module">Equivalence</a> <a id="3927" class="Keyword">where</a>
|
|||
|
<a id="3935" class="Keyword">open</a> <a id="3940" href="Categories.Category.CartesianClosed.Canonical.html#1012" class="Module">𝒞-CC</a> <a id="3945" class="Keyword">using</a> <a id="3951" class="Symbol">()</a> <a id="3954" class="Keyword">renaming</a> <a id="3963" class="Symbol">(</a><a id="3964" href="Categories.Category.CartesianClosed.html#1233" class="Record">CartesianClosed</a> <a id="3980" class="Symbol">to</a> <a id="3983" class="Record">CartesianClosed′</a><a id="3999" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4004" class="Comment">-- The two presentations of CCCs are equivalent</a>
|
|||
|
|
|||
|
<a id="Equivalence.fromCanonical"></a><a id="4055" href="Categories.Category.CartesianClosed.Canonical.html#4055" class="Function">fromCanonical</a> <a id="4069" class="Symbol">:</a> <a id="4071" href="Categories.Category.CartesianClosed.Canonical.html#1539" class="Record">CartesianClosed</a> <a id="4087" class="Symbol">→</a> <a id="4089" href="Categories.Category.CartesianClosed.Canonical.html#3983" class="Record">CartesianClosed′</a>
|
|||
|
<a id="4108" href="Categories.Category.CartesianClosed.Canonical.html#4055" class="Function">fromCanonical</a> <a id="4122" href="Categories.Category.CartesianClosed.Canonical.html#4122" class="Bound">cc</a> <a id="4125" class="Symbol">=</a> <a id="4127" class="Keyword">record</a>
|
|||
|
<a id="4138" class="Symbol">{</a> <a id="4140" href="Categories.Category.CartesianClosed.html#1408" class="Field">cartesian</a> <a id="4150" class="Symbol">=</a> <a id="4152" href="Categories.Category.CartesianClosed.Canonical.html#2322" class="Function">CartesianClosed.isCartesian</a> <a id="4180" href="Categories.Category.CartesianClosed.Canonical.html#4122" class="Bound">cc</a>
|
|||
|
<a id="4187" class="Symbol">;</a> <a id="4189" href="Categories.Category.CartesianClosed.html#1434" class="Field">exp</a> <a id="4199" class="Symbol">=</a> <a id="4201" href="Categories.Category.CartesianClosed.Canonical.html#3028" class="Function">CartesianClosed.^-exponential</a> <a id="4231" href="Categories.Category.CartesianClosed.Canonical.html#4122" class="Bound">cc</a>
|
|||
|
<a id="4238" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="Equivalence.toCanonical"></a><a id="4243" href="Categories.Category.CartesianClosed.Canonical.html#4243" class="Function">toCanonical</a> <a id="4255" class="Symbol">:</a> <a id="4257" href="Categories.Category.CartesianClosed.Canonical.html#3983" class="Record">CartesianClosed′</a> <a id="4274" class="Symbol">→</a> <a id="4276" href="Categories.Category.CartesianClosed.Canonical.html#1539" class="Record">CartesianClosed</a>
|
|||
|
<a id="4294" href="Categories.Category.CartesianClosed.Canonical.html#4243" class="Function">toCanonical</a> <a id="4306" href="Categories.Category.CartesianClosed.Canonical.html#4306" class="Bound">cc</a> <a id="4309" class="Symbol">=</a> <a id="4311" class="Keyword">record</a>
|
|||
|
<a id="4322" class="Symbol">{</a> <a id="4324" href="Categories.Category.CartesianClosed.Canonical.html#1671" class="Field">⊤</a> <a id="4330" class="Symbol">=</a> <a id="4332" href="Categories.Object.Terminal.html#905" class="Function">⊤</a>
|
|||
|
<a id="4338" class="Symbol">;</a> <a id="4340" href="Categories.Category.CartesianClosed.Canonical.html#1686" class="Field Operator">_×_</a> <a id="4346" class="Symbol">=</a> <a id="4348" href="Categories.Category.BinaryProducts.html#1053" class="Function Operator">_×_</a>
|
|||
|
<a id="4356" class="Symbol">;</a> <a id="4358" href="Categories.Category.CartesianClosed.Canonical.html#1714" class="Field">!</a> <a id="4364" class="Symbol">=</a> <a id="4366" href="Categories.Object.Terminal.html#577" class="Function">!</a>
|
|||
|
<a id="4372" class="Symbol">;</a> <a id="4374" href="Categories.Category.CartesianClosed.Canonical.html#1732" class="Field">π₁</a> <a id="4380" class="Symbol">=</a> <a id="4382" href="Categories.Object.Product.Core.html#526" class="Function">π₁</a>
|
|||
|
<a id="4389" class="Symbol">;</a> <a id="4391" href="Categories.Category.CartesianClosed.Canonical.html#1754" class="Field">π₂</a> <a id="4397" class="Symbol">=</a> <a id="4399" href="Categories.Object.Product.Core.html#546" class="Function">π₂</a>
|
|||
|
<a id="4406" class="Symbol">;</a> <a id="4408" href="Categories.Category.CartesianClosed.Canonical.html#1776" class="Field Operator">⟨_,_⟩</a> <a id="4414" class="Symbol">=</a> <a id="4416" href="Categories.Category.BinaryProducts.html#1396" class="Function Operator">⟨_,_⟩</a>
|
|||
|
<a id="4426" class="Symbol">;</a> <a id="4428" href="Categories.Category.CartesianClosed.Canonical.html#1815" class="Field">!-unique</a> <a id="4439" class="Symbol">=</a> <a id="4441" href="Categories.Object.Terminal.html#605" class="Function">!-unique</a>
|
|||
|
<a id="4454" class="Symbol">;</a> <a id="4456" href="Categories.Category.CartesianClosed.Canonical.html#1851" class="Field">π₁-comp</a> <a id="4467" class="Symbol">=</a> <a id="4469" href="Categories.Object.Product.Core.html#603" class="Function">project₁</a>
|
|||
|
<a id="4482" class="Symbol">;</a> <a id="4484" href="Categories.Category.CartesianClosed.Canonical.html#1885" class="Field">π₂-comp</a> <a id="4495" class="Symbol">=</a> <a id="4497" href="Categories.Object.Product.Core.html#637" class="Function">project₂</a>
|
|||
|
<a id="4510" class="Symbol">;</a> <a id="4512" href="Categories.Category.CartesianClosed.Canonical.html#1920" class="Field">⟨,⟩-unique</a> <a id="4523" class="Symbol">=</a> <a id="4525" href="Categories.Object.Product.Core.html#671" class="Function">unique</a>
|
|||
|
<a id="4536" class="Symbol">;</a> <a id="4538" href="Categories.Category.CartesianClosed.Canonical.html#2601" class="Field Operator">_^_</a> <a id="4544" class="Symbol">=</a> <a id="4546" href="Categories.Category.CartesianClosed.html#1513" class="Function Operator">_^_</a>
|
|||
|
<a id="4554" class="Symbol">;</a> <a id="4556" href="Categories.Category.CartesianClosed.Canonical.html#2629" class="Field">eval</a> <a id="4562" class="Symbol">=</a> <a id="4564" href="Categories.Category.CartesianClosed.html#3883" class="Function">eval′</a>
|
|||
|
<a id="4574" class="Symbol">;</a> <a id="4576" href="Categories.Category.CartesianClosed.Canonical.html#2655" class="Field">curry</a> <a id="4582" class="Symbol">=</a> <a id="4584" href="Categories.Category.CartesianClosed.html#2130" class="Function">λg</a>
|
|||
|
<a id="4591" class="Symbol">;</a> <a id="4593" href="Categories.Category.CartesianClosed.Canonical.html#2690" class="Field">eval-comp</a> <a id="4606" class="Symbol">=</a> <a id="4608" href="Categories.Category.CartesianClosed.html#4217" class="Function">β′</a>
|
|||
|
<a id="4615" class="Symbol">;</a> <a id="4617" href="Categories.Category.CartesianClosed.Canonical.html#2734" class="Field">curry-unique</a> <a id="4630" class="Symbol">=</a> <a id="4632" href="Categories.Category.CartesianClosed.html#3957" class="Function">λ-unique′</a>
|
|||
|
<a id="4646" class="Symbol">}</a>
|
|||
|
<a id="4652" class="Keyword">where</a>
|
|||
|
<a id="4664" class="Keyword">open</a> <a id="4669" href="Categories.Category.CartesianClosed.Canonical.html#3983" class="Module">CartesianClosed′</a> <a id="4686" href="Categories.Category.CartesianClosed.Canonical.html#4306" class="Bound">cc</a>
|
|||
|
<a id="4695" class="Keyword">open</a> <a id="4700" href="Categories.Category.BinaryProducts.html#848" class="Module">BinaryProducts</a> <a id="4715" class="Symbol">(</a><a id="4716" href="Categories.Category.Cartesian.html#801" class="Field">Cartesian.products</a> <a id="4735" href="Categories.Category.CartesianClosed.html#1408" class="Field">cartesian</a><a id="4744" class="Symbol">)</a>
|
|||
|
<a id="4752" class="Keyword">open</a> <a id="4757" href="Categories.Object.Terminal.html#860" class="Module">Terminal</a> <a id="4766" class="Symbol">(</a><a id="4767" href="Categories.Category.Cartesian.html#777" class="Field">Cartesian.terminal</a> <a id="4786" href="Categories.Category.CartesianClosed.html#1408" class="Field">cartesian</a><a id="4795" class="Symbol">)</a>
|
|||
|
</pre></body></html>
|