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

38 lines
No EOL
9.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Categories.Category.Cartesian</title><link rel="stylesheet" href="Agda.css"></head><body><pre class="Agda"><a id="1" class="Symbol">{-#</a> <a id="5" class="Keyword">OPTIONS</a> <a id="13" class="Pragma">--without-K</a> <a id="25" class="Pragma">--safe</a> <a id="32" class="Symbol">#-}</a>
<a id="37" class="Keyword">open</a> <a id="42" class="Keyword">import</a> <a id="49" href="Categories.Category.html" class="Module">Categories.Category</a> <a id="69" class="Keyword">using</a> <a id="75" class="Symbol">(</a><a id="76" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="84" class="Symbol">)</a>
<a id="87" class="Comment">-- Defines the following properties of a Category:</a>
<a id="138" class="Comment">-- Cartesian -- a Cartesian category is a category with all products</a>
<a id="208" class="Comment">-- (for the induced Monoidal structure, see Cartesian.Monoidal)</a>
<a id="274" class="Keyword">module</a> <a id="281" href="Categories.Category.Cartesian.html" class="Module">Categories.Category.Cartesian</a> <a id="311" class="Symbol">{</a><a id="312" href="Categories.Category.Cartesian.html#312" class="Bound">o</a> <a id="314" href="Categories.Category.Cartesian.html#314" class="Bound"></a> <a id="316" href="Categories.Category.Cartesian.html#316" class="Bound">e</a><a id="317" class="Symbol">}</a> <a id="319" class="Symbol">(</a><a id="320" href="Categories.Category.Cartesian.html#320" class="Bound">𝒞</a> <a id="322" class="Symbol">:</a> <a id="324" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="333" href="Categories.Category.Cartesian.html#312" class="Bound">o</a> <a id="335" href="Categories.Category.Cartesian.html#314" class="Bound"></a> <a id="337" href="Categories.Category.Cartesian.html#316" class="Bound">e</a><a id="338" class="Symbol">)</a> <a id="340" class="Keyword">where</a>
<a id="347" class="Keyword">open</a> <a id="352" class="Keyword">import</a> <a id="359" href="Level.html" class="Module">Level</a> <a id="365" class="Keyword">using</a> <a id="371" class="Symbol">(</a><a id="372" href="Level.html#602" class="Function">levelOfTerm</a><a id="383" class="Symbol">)</a>
<a id="385" class="Keyword">open</a> <a id="390" class="Keyword">import</a> <a id="397" href="Data.Nat.html" class="Module">Data.Nat</a> <a id="406" class="Keyword">using</a> <a id="412" class="Symbol">(</a><a id="413" href="Agda.Builtin.Nat.html#203" class="Datatype"></a><a id="414" class="Symbol">;</a> <a id="416" href="Agda.Builtin.Nat.html#221" class="InductiveConstructor">zero</a><a id="420" class="Symbol">;</a> <a id="422" href="Agda.Builtin.Nat.html#234" class="InductiveConstructor">suc</a><a id="425" class="Symbol">)</a>
<a id="428" class="Keyword">open</a> <a id="433" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="442" href="Categories.Category.Cartesian.html#320" class="Bound">𝒞</a>
<a id="444" class="Keyword">open</a> <a id="449" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
<a id="463" class="Keyword">open</a> <a id="468" class="Keyword">import</a> <a id="475" href="Categories.Category.BinaryProducts.html" class="Module">Categories.Category.BinaryProducts</a> <a id="510" href="Categories.Category.Cartesian.html#320" class="Bound">𝒞</a> <a id="512" class="Keyword">using</a> <a id="518" class="Symbol">(</a><a id="519" href="Categories.Category.BinaryProducts.html#848" class="Record">BinaryProducts</a><a id="533" class="Symbol">;</a> <a id="535" class="Keyword">module</a> <a id="542" href="Categories.Category.BinaryProducts.html#848" class="Module">BinaryProducts</a><a id="556" class="Symbol">)</a>
<a id="558" class="Keyword">open</a> <a id="563" class="Keyword">import</a> <a id="570" href="Categories.Object.Terminal.html" class="Module">Categories.Object.Terminal</a> <a id="597" href="Categories.Category.Cartesian.html#320" class="Bound">𝒞</a> <a id="599" class="Keyword">using</a> <a id="605" class="Symbol">(</a><a id="606" href="Categories.Object.Terminal.html#860" class="Record">Terminal</a><a id="614" class="Symbol">)</a>
<a id="617" class="Keyword">private</a>
<a id="627" class="Keyword">variable</a>
<a id="640" href="Categories.Category.Cartesian.html#640" class="Generalizable">A</a> <a id="642" href="Categories.Category.Cartesian.html#642" class="Generalizable">B</a> <a id="644" href="Categories.Category.Cartesian.html#644" class="Generalizable">C</a> <a id="646" href="Categories.Category.Cartesian.html#646" class="Generalizable">D</a> <a id="648" href="Categories.Category.Cartesian.html#648" class="Generalizable">W</a> <a id="650" href="Categories.Category.Cartesian.html#650" class="Generalizable">X</a> <a id="652" href="Categories.Category.Cartesian.html#652" class="Generalizable">Y</a> <a id="654" href="Categories.Category.Cartesian.html#654" class="Generalizable">Z</a> <a id="656" class="Symbol">:</a> <a id="658" href="Categories.Category.Core.html#559" class="Field">Obj</a>
<a id="666" href="Categories.Category.Cartesian.html#666" class="Generalizable">f</a> <a id="668" href="Categories.Category.Cartesian.html#668" class="Generalizable">f</a> <a id="671" href="Categories.Category.Cartesian.html#671" class="Generalizable">g</a> <a id="673" href="Categories.Category.Cartesian.html#673" class="Generalizable">g</a> <a id="676" href="Categories.Category.Cartesian.html#676" class="Generalizable">h</a> <a id="678" href="Categories.Category.Cartesian.html#678" class="Generalizable">i</a> <a id="680" class="Symbol">:</a> <a id="682" href="Categories.Category.Cartesian.html#640" class="Generalizable">A</a> <a id="684" href="Categories.Category.Core.html#575" class="Field Operator"></a> <a id="686" href="Categories.Category.Cartesian.html#642" class="Generalizable">B</a>
<a id="689" class="Comment">-- Cartesian monoidal category</a>
<a id="720" class="Keyword">record</a> <a id="Cartesian"></a><a id="727" href="Categories.Category.Cartesian.html#727" class="Record">Cartesian</a> <a id="737" class="Symbol">:</a> <a id="739" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="743" class="Symbol">(</a><a id="744" href="Level.html#602" class="Function">levelOfTerm</a> <a id="756" href="Categories.Category.Cartesian.html#320" class="Bound">𝒞</a><a id="757" class="Symbol">)</a> <a id="759" class="Keyword">where</a>
<a id="767" class="Keyword">field</a>
<a id="Cartesian.terminal"></a><a id="777" href="Categories.Category.Cartesian.html#777" class="Field">terminal</a> <a id="786" class="Symbol">:</a> <a id="788" href="Categories.Object.Terminal.html#860" class="Record">Terminal</a>
<a id="Cartesian.products"></a><a id="801" href="Categories.Category.Cartesian.html#801" class="Field">products</a> <a id="810" class="Symbol">:</a> <a id="812" href="Categories.Category.BinaryProducts.html#848" class="Record">BinaryProducts</a>
<a id="829" class="Keyword">open</a> <a id="834" href="Categories.Category.BinaryProducts.html#848" class="Module">BinaryProducts</a> <a id="849" href="Categories.Category.Cartesian.html#801" class="Field">products</a> <a id="858" class="Keyword">using</a> <a id="864" class="Symbol">(</a><a id="865" href="Categories.Category.BinaryProducts.html#1053" class="Function Operator">_×_</a><a id="868" class="Symbol">)</a>
<a id="Cartesian.power"></a><a id="873" href="Categories.Category.Cartesian.html#873" class="Function">power</a> <a id="879" class="Symbol">:</a> <a id="881" href="Categories.Category.Core.html#559" class="Field">Obj</a> <a id="885" class="Symbol"></a> <a id="887" href="Agda.Builtin.Nat.html#203" class="Datatype"></a> <a id="889" class="Symbol"></a> <a id="891" href="Categories.Category.Core.html#559" class="Field">Obj</a>
<a id="897" href="Categories.Category.Cartesian.html#873" class="Function">power</a> <a id="903" href="Categories.Category.Cartesian.html#903" class="Bound">A</a> <a id="905" class="Number">0</a> <a id="907" class="Symbol">=</a> <a id="909" href="Categories.Object.Terminal.html#905" class="Field">Terminal.</a> <a id="920" href="Categories.Category.Cartesian.html#777" class="Field">terminal</a>
<a id="931" href="Categories.Category.Cartesian.html#873" class="Function">power</a> <a id="937" href="Categories.Category.Cartesian.html#937" class="Bound">A</a> <a id="939" class="Number">1</a> <a id="941" class="Symbol">=</a> <a id="943" href="Categories.Category.Cartesian.html#937" class="Bound">A</a>
<a id="947" href="Categories.Category.Cartesian.html#873" class="Function">power</a> <a id="953" href="Categories.Category.Cartesian.html#953" class="Bound">A</a> <a id="955" class="Symbol">(</a><a id="956" href="Agda.Builtin.Nat.html#234" class="InductiveConstructor">suc</a> <a id="960" class="Symbol">(</a><a id="961" href="Agda.Builtin.Nat.html#234" class="InductiveConstructor">suc</a> <a id="965" href="Categories.Category.Cartesian.html#965" class="Bound">n</a><a id="966" class="Symbol">))</a> <a id="969" class="Symbol">=</a> <a id="971" href="Categories.Category.Cartesian.html#953" class="Bound">A</a> <a id="973" href="Categories.Category.BinaryProducts.html#1053" class="Function Operator">×</a> <a id="975" href="Categories.Category.Cartesian.html#873" class="Function">power</a> <a id="981" href="Categories.Category.Cartesian.html#953" class="Bound">A</a> <a id="983" class="Symbol">(</a><a id="984" href="Agda.Builtin.Nat.html#234" class="InductiveConstructor">suc</a> <a id="988" href="Categories.Category.Cartesian.html#965" class="Bound">n</a><a id="989" class="Symbol">)</a>
</pre></body></html>