bsc-leon-vatthauer/agda/bsc-thesis/Algebra.Elgot.Free.html
2024-02-09 17:53:52 +01:00

77 lines
12 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 xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Algebra.Elgot.Free</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
</style>
<link rel="stylesheet" href="Agda.css" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<!--
<pre class="Agda"><a id="14" class="Keyword">open</a> <a id="19" class="Keyword">import</a> <a id="26" href="Level.html" class="Module">Level</a>
<a id="32" class="Keyword">open</a> <a id="37" class="Keyword">import</a> <a id="44" href="Category.Ambient.html" class="Module">Category.Ambient</a> <a id="61" class="Keyword">using</a> <a id="67" class="Symbol">(</a><a id="68" href="Category.Ambient.html#1681" class="Record">Ambient</a><a id="75" class="Symbol">)</a>
<a id="77" class="Keyword">open</a> <a id="82" class="Keyword">import</a> <a id="89" href="Categories.FreeObjects.Free.html" class="Module">Categories.FreeObjects.Free</a>
<a id="117" class="Keyword">open</a> <a id="122" class="Keyword">import</a> <a id="129" href="Categories.Functor.Core.html" class="Module">Categories.Functor.Core</a>
<a id="153" class="Keyword">open</a> <a id="158" class="Keyword">import</a> <a id="165" href="Categories.Functor.Algebra.html" class="Module">Categories.Functor.Algebra</a>
<a id="192" class="Keyword">open</a> <a id="197" class="Keyword">import</a> <a id="204" href="Categories.Functor.Coalgebra.html" class="Module">Categories.Functor.Coalgebra</a>
<a id="233" class="Keyword">open</a> <a id="238" class="Keyword">import</a> <a id="245" href="Categories.Object.Terminal.html" class="Module">Categories.Object.Terminal</a>
<a id="272" class="Keyword">open</a> <a id="277" class="Keyword">import</a> <a id="284" href="Categories.Category.Core.html" class="Module">Categories.Category.Core</a> <a id="309" class="Keyword">using</a> <a id="315" class="Symbol">(</a><a id="316" href="Categories.Category.Core.html#442" class="Record">Category</a><a id="324" class="Symbol">)</a>
<a id="326" class="Keyword">open</a> <a id="331" class="Keyword">import</a> <a id="338" href="Categories.Category.Cocartesian.html" class="Module">Categories.Category.Cocartesian</a> <a id="370" class="Keyword">using</a> <a id="376" class="Symbol">(</a><a id="377" href="Categories.Category.Cocartesian.html#3385" class="Record">Cocartesian</a><a id="388" class="Symbol">)</a>
<a id="390" class="Keyword">open</a> <a id="395" class="Keyword">import</a> <a id="402" href="Categories.Category.Cartesian.html" class="Module">Categories.Category.Cartesian</a> <a id="432" class="Keyword">using</a> <a id="438" class="Symbol">(</a><a id="439" href="Categories.Category.Cartesian.html#727" class="Record">Cartesian</a><a id="448" class="Symbol">)</a>
<a id="450" class="Keyword">open</a> <a id="455" class="Keyword">import</a> <a id="462" href="Categories.Category.BinaryProducts.html" class="Module">Categories.Category.BinaryProducts</a> <a id="497" class="Keyword">using</a> <a id="503" class="Symbol">(</a><a id="504" href="Categories.Category.BinaryProducts.html#848" class="Record">BinaryProducts</a><a id="518" class="Symbol">)</a>
<a id="520" class="Keyword">open</a> <a id="525" class="Keyword">import</a> <a id="532" href="Categories.Category.Construction.EilenbergMoore.html" class="Module">Categories.Category.Construction.EilenbergMoore</a>
<a id="580" class="Keyword">open</a> <a id="585" class="Keyword">import</a> <a id="592" href="Categories.Monad.Relative.html" class="Module">Categories.Monad.Relative</a> <a id="618" class="Keyword">renaming</a> <a id="627" class="Symbol">(</a><a id="628" href="Categories.Monad.Relative.html#602" class="Record">Monad</a> <a id="634" class="Symbol">to</a> <a id="637" class="Record">RMonad</a><a id="643" class="Symbol">)</a>
<a id="646" class="Keyword">import</a> <a id="653" href="Categories.Morphism.html" class="Module">Categories.Morphism</a> <a id="673" class="Symbol">as</a> <a id="676" class="Module">M</a>
<a id="678" class="Keyword">import</a> <a id="685" href="Categories.Morphism.Reasoning.html" class="Module">Categories.Morphism.Reasoning</a> <a id="715" class="Symbol">as</a> <a id="718" class="Module">MR</a>
</pre>-->
<pre class="Agda"><a id="738" class="Keyword">module</a> <a id="745" href="Algebra.Elgot.Free.html" class="Module">Algebra.Elgot.Free</a> <a id="764" class="Symbol">{</a><a id="765" href="Algebra.Elgot.Free.html#765" class="Bound">o</a> <a id="767" href="Algebra.Elgot.Free.html#767" class="Bound"></a> <a id="769" href="Algebra.Elgot.Free.html#769" class="Bound">e</a><a id="770" class="Symbol">}</a> <a id="772" class="Symbol">{</a><a id="773" href="Algebra.Elgot.Free.html#773" class="Bound">C</a> <a id="775" class="Symbol">:</a> <a id="777" href="Categories.Category.Core.html#442" class="Record">Category</a> <a id="786" href="Algebra.Elgot.Free.html#765" class="Bound">o</a> <a id="788" href="Algebra.Elgot.Free.html#767" class="Bound"></a> <a id="790" href="Algebra.Elgot.Free.html#769" class="Bound">e</a><a id="791" class="Symbol">}</a> <a id="793" class="Symbol">(</a><a id="794" href="Algebra.Elgot.Free.html#794" class="Bound">cocartesian</a> <a id="806" class="Symbol">:</a> <a id="808" href="Categories.Category.Cocartesian.html#3385" class="Record">Cocartesian</a> <a id="820" href="Algebra.Elgot.Free.html#773" class="Bound">C</a><a id="821" class="Symbol">)</a> <a id="823" class="Keyword">where</a>
<a id="831" class="Keyword">open</a> <a id="836" class="Keyword">import</a> <a id="843" href="Algebra.Elgot.html" class="Module">Algebra.Elgot</a> <a id="857" href="Algebra.Elgot.Free.html#794" class="Bound">cocartesian</a>
<a id="871" class="Keyword">open</a> <a id="876" class="Keyword">import</a> <a id="883" href="Category.Construction.ElgotAlgebras.html" class="Module">Category.Construction.ElgotAlgebras</a> <a id="919" href="Algebra.Elgot.Free.html#794" class="Bound">cocartesian</a>
<a id="933" class="Keyword">open</a> <a id="938" class="Keyword">import</a> <a id="945" href="Categories.Morphism.Properties.html" class="Module">Categories.Morphism.Properties</a> <a id="976" href="Algebra.Elgot.Free.html#773" class="Bound">C</a>
<a id="981" class="Keyword">open</a> <a id="986" href="Categories.Category.Core.html#442" class="Module">Category</a> <a id="995" href="Algebra.Elgot.Free.html#773" class="Bound">C</a>
<a id="999" class="Keyword">open</a> <a id="1004" href="Categories.Category.Cocartesian.html#3385" class="Module">Cocartesian</a> <a id="1016" href="Algebra.Elgot.Free.html#794" class="Bound">cocartesian</a>
<a id="1030" class="Keyword">open</a> <a id="1035" href="Categories.Category.Core.html#1530" class="Module">Equiv</a>
<a id="1043" class="Keyword">open</a> <a id="1048" href="Categories.Category.Core.html#2462" class="Module">HomReasoning</a>
<a id="1063" class="Keyword">open</a> <a id="1068" href="Categories.Morphism.Reasoning.html" class="Module">MR</a> <a id="1071" href="Algebra.Elgot.Free.html#773" class="Bound">C</a>
<a id="1075" class="Keyword">open</a> <a id="1080" href="Categories.Morphism.html" class="Module">M</a> <a id="1082" href="Algebra.Elgot.Free.html#773" class="Bound">C</a>
</pre>
<h1 id="free-elgot-algebras">Free Elgot algebras</h1>
<p>A free elgot algebra is a free object in the category of Elgot
algebras.</p>
<pre class="Agda"> <a id="elgotForgetfulF"></a><a id="1197" href="Algebra.Elgot.Free.html#1197" class="Function">elgotForgetfulF</a> <a id="1213" class="Symbol">:</a> <a id="1215" href="Categories.Functor.Core.html#248" class="Record">Functor</a> <a id="1223" href="Category.Construction.ElgotAlgebras.html#939" class="Function">Elgot-Algebras</a> <a id="1238" href="Algebra.Elgot.Free.html#773" class="Bound">C</a>
<a id="1242" href="Algebra.Elgot.Free.html#1197" class="Function">elgotForgetfulF</a> <a id="1258" class="Symbol">=</a> <a id="1260" class="Keyword">record</a>
<a id="1271" class="Symbol">{</a> <a id="1273" href="Categories.Functor.Core.html#432" class="Field">F₀</a> <a id="1276" class="Symbol">=</a> <a id="1278" class="Symbol">λ</a> <a id="1280" href="Algebra.Elgot.Free.html#1280" class="Bound">X</a> <a id="1282" class="Symbol"></a> <a id="1284" href="Algebra.Elgot.html#16018" class="Field">Elgot-Algebra.A</a> <a id="1300" href="Algebra.Elgot.Free.html#1280" class="Bound">X</a>
<a id="1306" class="Symbol">;</a> <a id="1308" href="Categories.Functor.Core.html#455" class="Field">F₁</a> <a id="1311" class="Symbol">=</a> <a id="1313" class="Symbol">λ</a> <a id="1315" href="Algebra.Elgot.Free.html#1315" class="Bound">f</a> <a id="1317" class="Symbol"></a> <a id="1319" href="Category.Construction.ElgotAlgebras.html#794" class="Field">Elgot-Algebra-Morphism.h</a> <a id="1344" href="Algebra.Elgot.Free.html#1315" class="Bound">f</a>
<a id="1350" class="Symbol">;</a> <a id="1352" href="Categories.Functor.Core.html#511" class="Field">identity</a> <a id="1361" class="Symbol">=</a> <a id="1363" href="Relation.Binary.Structures.html#1596" class="Function">refl</a>
<a id="1372" class="Symbol">;</a> <a id="1374" href="Categories.Functor.Core.html#565" class="Field">homomorphism</a> <a id="1387" class="Symbol">=</a> <a id="1389" href="Relation.Binary.Structures.html#1596" class="Function">refl</a>
<a id="1398" class="Symbol">;</a> <a id="1400" href="Categories.Functor.Core.html#696" class="Field">F-resp-≈</a> <a id="1409" class="Symbol">=</a> <a id="1411" class="Symbol">λ</a> <a id="1413" href="Algebra.Elgot.Free.html#1413" class="Bound">x</a> <a id="1415" class="Symbol"></a> <a id="1417" href="Algebra.Elgot.Free.html#1413" class="Bound">x</a>
<a id="1423" class="Symbol">}</a>
<a id="1428" class="Comment">-- typedef</a>
<a id="FreeElgotAlgebra"></a><a id="1441" href="Algebra.Elgot.Free.html#1441" class="Function">FreeElgotAlgebra</a> <a id="1458" class="Symbol">:</a> <a id="1460" href="Categories.Category.Core.html#559" class="Function">Obj</a> <a id="1464" class="Symbol"></a> <a id="1466" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1470" class="Symbol">(</a><a id="1471" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="1475" href="Algebra.Elgot.Free.html#765" class="Bound">o</a> <a id="1477" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1479" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="1483" href="Algebra.Elgot.Free.html#767" class="Bound"></a> <a id="1485" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1487" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="1491" href="Algebra.Elgot.Free.html#769" class="Bound">e</a><a id="1492" class="Symbol">)</a>
<a id="1496" href="Algebra.Elgot.Free.html#1441" class="Function">FreeElgotAlgebra</a> <a id="1513" href="Algebra.Elgot.Free.html#1513" class="Bound">X</a> <a id="1515" class="Symbol">=</a> <a id="1517" href="Categories.FreeObjects.Free.html#485" class="Record">FreeObject</a> <a id="1528" class="Symbol">{</a><a id="1529" class="Argument">C</a> <a id="1531" class="Symbol">=</a> <a id="1533" href="Algebra.Elgot.Free.html#773" class="Bound">C</a><a id="1534" class="Symbol">}</a> <a id="1536" class="Symbol">{</a><a id="1537" class="Argument">D</a> <a id="1539" class="Symbol">=</a> <a id="1541" href="Category.Construction.ElgotAlgebras.html#939" class="Function">Elgot-Algebras</a><a id="1555" class="Symbol">}</a> <a id="1557" href="Algebra.Elgot.Free.html#1197" class="Function">elgotForgetfulF</a> <a id="1573" href="Algebra.Elgot.Free.html#1513" class="Bound">X</a>
</pre>
</body>
</html>