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

191 lines
No EOL
47 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>Function.Structures</title><link rel="stylesheet" href="Agda.css"></head><body><pre class="Agda"><a id="1" class="Comment">------------------------------------------------------------------------</a>
<a id="74" class="Comment">-- The Agda standard library</a>
<a id="103" class="Comment">--</a>
<a id="106" class="Comment">-- Structures for types of functions</a>
<a id="143" class="Comment">------------------------------------------------------------------------</a>
<a id="217" class="Comment">-- The contents of this file should usually be accessed from `Function`.</a>
<a id="291" class="Symbol">{-#</a> <a id="295" class="Keyword">OPTIONS</a> <a id="303" class="Pragma">--cubical-compatible</a> <a id="324" class="Pragma">--safe</a> <a id="331" class="Symbol">#-}</a>
<a id="336" class="Keyword">open</a> <a id="341" class="Keyword">import</a> <a id="348" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a> <a id="369" class="Keyword">using</a> <a id="375" class="Symbol">(</a><a id="376" href="Relation.Binary.Core.html#896" class="Function">Rel</a><a id="379" class="Symbol">)</a>
<a id="381" class="Keyword">open</a> <a id="386" class="Keyword">import</a> <a id="393" href="Relation.Binary.Bundles.html" class="Module">Relation.Binary.Bundles</a> <a id="417" class="Keyword">using</a> <a id="423" class="Symbol">(</a><a id="424" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a><a id="430" class="Symbol">)</a>
<a id="432" class="Keyword">open</a> <a id="437" class="Keyword">import</a> <a id="444" href="Relation.Binary.Structures.html" class="Module">Relation.Binary.Structures</a> <a id="471" class="Keyword">using</a> <a id="477" class="Symbol">(</a><a id="478" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a><a id="491" class="Symbol">)</a>
<a id="494" class="Keyword">module</a> <a id="501" href="Function.Structures.html" class="Module">Function.Structures</a> <a id="521" class="Symbol">{</a><a id="522" href="Function.Structures.html#522" class="Bound">a</a> <a id="524" href="Function.Structures.html#524" class="Bound">b</a> <a id="526" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="529" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="531" class="Symbol">}</a>
<a id="535" class="Symbol">{</a><a id="536" href="Function.Structures.html#536" class="Bound">A</a> <a id="538" class="Symbol">:</a> <a id="540" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="544" href="Function.Structures.html#522" class="Bound">a</a><a id="545" class="Symbol">}</a> <a id="547" class="Symbol">(</a><a id="548" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="553" class="Symbol">:</a> <a id="555" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="559" href="Function.Structures.html#536" class="Bound">A</a> <a id="561" href="Function.Structures.html#526" class="Bound">ℓ₁</a><a id="563" class="Symbol">)</a> <a id="565" class="Comment">-- Equality over the domain</a>
<a id="595" class="Symbol">{</a><a id="596" href="Function.Structures.html#596" class="Bound">B</a> <a id="598" class="Symbol">:</a> <a id="600" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="604" href="Function.Structures.html#524" class="Bound">b</a><a id="605" class="Symbol">}</a> <a id="607" class="Symbol">(</a><a id="608" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="613" class="Symbol">:</a> <a id="615" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="619" href="Function.Structures.html#596" class="Bound">B</a> <a id="621" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="623" class="Symbol">)</a> <a id="625" class="Comment">-- Equality over the codomain</a>
<a id="657" class="Keyword">where</a>
<a id="664" class="Keyword">open</a> <a id="669" class="Keyword">import</a> <a id="676" href="Data.Product.Base.html" class="Module">Data.Product.Base</a> <a id="694" class="Symbol">as</a> <a id="697" class="Module">Product</a> <a id="705" class="Keyword">using</a> <a id="711" class="Symbol">(</a><a id="712" href="Data.Product.Base.html#852" class="Function"></a><a id="713" class="Symbol">;</a> <a id="715" href="Data.Product.Base.html#1618" class="Function Operator">_×_</a><a id="718" class="Symbol">;</a> <a id="720" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a><a id="723" class="Symbol">)</a>
<a id="725" class="Keyword">open</a> <a id="730" class="Keyword">import</a> <a id="737" href="Function.Base.html" class="Module">Function.Base</a>
<a id="751" class="Keyword">open</a> <a id="756" class="Keyword">import</a> <a id="763" href="Function.Definitions.html" class="Module">Function.Definitions</a>
<a id="784" class="Keyword">open</a> <a id="789" class="Keyword">import</a> <a id="796" href="Level.html" class="Module">Level</a> <a id="802" class="Keyword">using</a> <a id="808" class="Symbol">(</a><a id="809" href="Agda.Primitive.html#961" class="Primitive Operator">_⊔_</a><a id="812" class="Symbol">)</a>
<a id="815" class="Comment">------------------------------------------------------------------------</a>
<a id="888" class="Comment">-- One element structures</a>
<a id="914" class="Comment">------------------------------------------------------------------------</a>
<a id="988" class="Keyword">record</a> <a id="IsCongruent"></a><a id="995" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="1007" class="Symbol">(</a><a id="1008" href="Function.Structures.html#1008" class="Bound">to</a> <a id="1011" class="Symbol">:</a> <a id="1013" href="Function.Structures.html#536" class="Bound">A</a> <a id="1015" class="Symbol"></a> <a id="1017" href="Function.Structures.html#596" class="Bound">B</a><a id="1018" class="Symbol">)</a> <a id="1020" class="Symbol">:</a> <a id="1022" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1026" class="Symbol">(</a><a id="1027" href="Function.Structures.html#522" class="Bound">a</a> <a id="1029" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1031" href="Function.Structures.html#524" class="Bound">b</a> <a id="1033" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1035" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="1038" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1040" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="1042" class="Symbol">)</a> <a id="1044" class="Keyword">where</a>
<a id="1052" class="Keyword">field</a>
<a id="IsCongruent.cong"></a><a id="1062" href="Function.Structures.html#1062" class="Field">cong</a> <a id="1077" class="Symbol">:</a> <a id="1079" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="1089" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="1094" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="1099" href="Function.Structures.html#1008" class="Bound">to</a>
<a id="IsCongruent.isEquivalence₁"></a><a id="1106" href="Function.Structures.html#1106" class="Field">isEquivalence₁</a> <a id="1121" class="Symbol">:</a> <a id="1123" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a> <a id="1137" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a>
<a id="IsCongruent.isEquivalence₂"></a><a id="1146" href="Function.Structures.html#1146" class="Field">isEquivalence₂</a> <a id="1161" class="Symbol">:</a> <a id="1163" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a> <a id="1177" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a>
<a id="1185" class="Keyword">module</a> <a id="IsCongruent.Eq₁"></a><a id="1192" href="Function.Structures.html#1192" class="Module">Eq₁</a> <a id="1196" class="Keyword">where</a>
<a id="IsCongruent.Eq₁.setoid"></a><a id="1207" href="Function.Structures.html#1207" class="Function">setoid</a> <a id="1214" class="Symbol">:</a> <a id="1216" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="1223" href="Function.Structures.html#522" class="Bound">a</a> <a id="1225" href="Function.Structures.html#526" class="Bound">ℓ₁</a>
<a id="1232" href="Function.Structures.html#1207" class="Function">setoid</a> <a id="1239" class="Symbol">=</a> <a id="1241" class="Keyword">record</a>
<a id="1254" class="Symbol">{</a> <a id="1256" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="1270" class="Symbol">=</a> <a id="1272" href="Function.Structures.html#1106" class="Field">isEquivalence₁</a>
<a id="1293" class="Symbol">}</a>
<a id="1300" class="Keyword">open</a> <a id="1305" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="1312" href="Function.Structures.html#1207" class="Function">setoid</a> <a id="1319" class="Keyword">public</a>
<a id="1329" class="Keyword">module</a> <a id="IsCongruent.Eq₂"></a><a id="1336" href="Function.Structures.html#1336" class="Module">Eq₂</a> <a id="1340" class="Keyword">where</a>
<a id="IsCongruent.Eq₂.setoid"></a><a id="1351" href="Function.Structures.html#1351" class="Function">setoid</a> <a id="1358" class="Symbol">:</a> <a id="1360" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="1367" href="Function.Structures.html#524" class="Bound">b</a> <a id="1369" href="Function.Structures.html#529" class="Bound">ℓ₂</a>
<a id="1376" href="Function.Structures.html#1351" class="Function">setoid</a> <a id="1383" class="Symbol">=</a> <a id="1385" class="Keyword">record</a>
<a id="1398" class="Symbol">{</a> <a id="1400" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="1414" class="Symbol">=</a> <a id="1416" href="Function.Structures.html#1146" class="Field">isEquivalence₂</a>
<a id="1437" class="Symbol">}</a>
<a id="1444" class="Keyword">open</a> <a id="1449" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="1456" href="Function.Structures.html#1351" class="Function">setoid</a> <a id="1463" class="Keyword">public</a>
<a id="1472" class="Keyword">record</a> <a id="IsInjection"></a><a id="1479" href="Function.Structures.html#1479" class="Record">IsInjection</a> <a id="1491" class="Symbol">(</a><a id="1492" href="Function.Structures.html#1492" class="Bound">to</a> <a id="1495" class="Symbol">:</a> <a id="1497" href="Function.Structures.html#536" class="Bound">A</a> <a id="1499" class="Symbol"></a> <a id="1501" href="Function.Structures.html#596" class="Bound">B</a><a id="1502" class="Symbol">)</a> <a id="1504" class="Symbol">:</a> <a id="1506" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1510" class="Symbol">(</a><a id="1511" href="Function.Structures.html#522" class="Bound">a</a> <a id="1513" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1515" href="Function.Structures.html#524" class="Bound">b</a> <a id="1517" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1519" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="1522" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1524" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="1526" class="Symbol">)</a> <a id="1528" class="Keyword">where</a>
<a id="1536" class="Keyword">field</a>
<a id="IsInjection.isCongruent"></a><a id="1546" href="Function.Structures.html#1546" class="Field">isCongruent</a> <a id="1558" class="Symbol">:</a> <a id="1560" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="1572" href="Function.Structures.html#1492" class="Bound">to</a>
<a id="IsInjection.injective"></a><a id="1579" href="Function.Structures.html#1579" class="Field">injective</a> <a id="1591" class="Symbol">:</a> <a id="1593" href="Function.Definitions.html#842" class="Function">Injective</a> <a id="1603" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="1608" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="1613" href="Function.Structures.html#1492" class="Bound">to</a>
<a id="1619" class="Keyword">open</a> <a id="1624" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="1636" href="Function.Structures.html#1546" class="Field">isCongruent</a> <a id="1648" class="Keyword">public</a>
<a id="1657" class="Keyword">record</a> <a id="IsSurjection"></a><a id="1664" href="Function.Structures.html#1664" class="Record">IsSurjection</a> <a id="1677" class="Symbol">(</a><a id="1678" href="Function.Structures.html#1678" class="Bound">f</a> <a id="1680" class="Symbol">:</a> <a id="1682" href="Function.Structures.html#536" class="Bound">A</a> <a id="1684" class="Symbol"></a> <a id="1686" href="Function.Structures.html#596" class="Bound">B</a><a id="1687" class="Symbol">)</a> <a id="1689" class="Symbol">:</a> <a id="1691" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1695" class="Symbol">(</a><a id="1696" href="Function.Structures.html#522" class="Bound">a</a> <a id="1698" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1700" href="Function.Structures.html#524" class="Bound">b</a> <a id="1702" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1704" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="1707" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1709" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="1711" class="Symbol">)</a> <a id="1713" class="Keyword">where</a>
<a id="1721" class="Keyword">field</a>
<a id="IsSurjection.isCongruent"></a><a id="1731" href="Function.Structures.html#1731" class="Field">isCongruent</a> <a id="1743" class="Symbol">:</a> <a id="1745" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="1757" href="Function.Structures.html#1678" class="Bound">f</a>
<a id="IsSurjection.surjective"></a><a id="1763" href="Function.Structures.html#1763" class="Field">surjective</a> <a id="1775" class="Symbol">:</a> <a id="1777" href="Function.Definitions.html#919" class="Function">Surjective</a> <a id="1788" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="1793" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="1798" href="Function.Structures.html#1678" class="Bound">f</a>
<a id="1803" class="Keyword">open</a> <a id="1808" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="1820" href="Function.Structures.html#1731" class="Field">isCongruent</a> <a id="1832" class="Keyword">public</a>
<a id="IsSurjection.strictlySurjective"></a><a id="1842" href="Function.Structures.html#1842" class="Function">strictlySurjective</a> <a id="1861" class="Symbol">:</a> <a id="1863" href="Function.Definitions.html#1522" class="Function">StrictlySurjective</a> <a id="1882" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="1887" href="Function.Structures.html#1678" class="Bound">f</a>
<a id="1891" href="Function.Structures.html#1842" class="Function">strictlySurjective</a> <a id="1910" href="Function.Structures.html#1910" class="Bound">x</a> <a id="1912" class="Symbol">=</a> <a id="1914" href="Data.Product.Base.html#2362" class="Function">Product.map₂</a> <a id="1927" class="Symbol"></a> <a id="1930" href="Function.Structures.html#1930" class="Bound">v</a> <a id="1932" class="Symbol"></a> <a id="1934" href="Function.Structures.html#1930" class="Bound">v</a> <a id="1936" href="Relation.Binary.Structures.html#1596" class="Function">Eq₁.refl</a><a id="1944" class="Symbol">)</a> <a id="1946" class="Symbol">(</a><a id="1947" href="Function.Structures.html#1763" class="Field">surjective</a> <a id="1958" href="Function.Structures.html#1910" class="Bound">x</a><a id="1959" class="Symbol">)</a>
<a id="1963" class="Keyword">record</a> <a id="IsBijection"></a><a id="1970" href="Function.Structures.html#1970" class="Record">IsBijection</a> <a id="1982" class="Symbol">(</a><a id="1983" href="Function.Structures.html#1983" class="Bound">f</a> <a id="1985" class="Symbol">:</a> <a id="1987" href="Function.Structures.html#536" class="Bound">A</a> <a id="1989" class="Symbol"></a> <a id="1991" href="Function.Structures.html#596" class="Bound">B</a><a id="1992" class="Symbol">)</a> <a id="1994" class="Symbol">:</a> <a id="1996" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2000" class="Symbol">(</a><a id="2001" href="Function.Structures.html#522" class="Bound">a</a> <a id="2003" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2005" href="Function.Structures.html#524" class="Bound">b</a> <a id="2007" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2009" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="2012" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2014" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="2016" class="Symbol">)</a> <a id="2018" class="Keyword">where</a>
<a id="2026" class="Keyword">field</a>
<a id="IsBijection.isInjection"></a><a id="2036" href="Function.Structures.html#2036" class="Field">isInjection</a> <a id="2048" class="Symbol">:</a> <a id="2050" href="Function.Structures.html#1479" class="Record">IsInjection</a> <a id="2062" href="Function.Structures.html#1983" class="Bound">f</a>
<a id="IsBijection.surjective"></a><a id="2068" href="Function.Structures.html#2068" class="Field">surjective</a> <a id="2080" class="Symbol">:</a> <a id="2082" href="Function.Definitions.html#919" class="Function">Surjective</a> <a id="2093" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="2098" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="2103" href="Function.Structures.html#1983" class="Bound">f</a>
<a id="2108" class="Keyword">open</a> <a id="2113" href="Function.Structures.html#1479" class="Module">IsInjection</a> <a id="2125" href="Function.Structures.html#2036" class="Field">isInjection</a> <a id="2137" class="Keyword">public</a>
<a id="IsBijection.bijective"></a><a id="2147" href="Function.Structures.html#2147" class="Function">bijective</a> <a id="2157" class="Symbol">:</a> <a id="2159" href="Function.Definitions.html#1008" class="Function">Bijective</a> <a id="2169" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="2174" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="2179" href="Function.Structures.html#1983" class="Bound">f</a>
<a id="2183" href="Function.Structures.html#2147" class="Function">bijective</a> <a id="2193" class="Symbol">=</a> <a id="2195" href="Function.Structures.html#1579" class="Function">injective</a> <a id="2205" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2207" href="Function.Structures.html#2068" class="Field">surjective</a>
<a id="IsBijection.isSurjection"></a><a id="2221" href="Function.Structures.html#2221" class="Function">isSurjection</a> <a id="2234" class="Symbol">:</a> <a id="2236" href="Function.Structures.html#1664" class="Record">IsSurjection</a> <a id="2249" href="Function.Structures.html#1983" class="Bound">f</a>
<a id="2253" href="Function.Structures.html#2221" class="Function">isSurjection</a> <a id="2266" class="Symbol">=</a> <a id="2268" class="Keyword">record</a>
<a id="2279" class="Symbol">{</a> <a id="2281" href="Function.Structures.html#1731" class="Field">isCongruent</a> <a id="2293" class="Symbol">=</a> <a id="2295" href="Function.Structures.html#1546" class="Function">isCongruent</a>
<a id="2311" class="Symbol">;</a> <a id="2313" href="Function.Structures.html#1763" class="Field">surjective</a> <a id="2325" class="Symbol">=</a> <a id="2327" href="Function.Structures.html#2068" class="Field">surjective</a>
<a id="2342" class="Symbol">}</a>
<a id="2347" class="Keyword">open</a> <a id="2352" href="Function.Structures.html#1664" class="Module">IsSurjection</a> <a id="2365" href="Function.Structures.html#2221" class="Function">isSurjection</a> <a id="2378" class="Keyword">public</a>
<a id="2389" class="Keyword">using</a> <a id="2395" class="Symbol">(</a><a id="2396" href="Function.Structures.html#1842" class="Function">strictlySurjective</a><a id="2414" class="Symbol">)</a>
<a id="2418" class="Comment">------------------------------------------------------------------------</a>
<a id="2491" class="Comment">-- Two element structures</a>
<a id="2517" class="Comment">------------------------------------------------------------------------</a>
<a id="2591" class="Keyword">record</a> <a id="IsLeftInverse"></a><a id="2598" href="Function.Structures.html#2598" class="Record">IsLeftInverse</a> <a id="2612" class="Symbol">(</a><a id="2613" href="Function.Structures.html#2613" class="Bound">to</a> <a id="2616" class="Symbol">:</a> <a id="2618" href="Function.Structures.html#536" class="Bound">A</a> <a id="2620" class="Symbol"></a> <a id="2622" href="Function.Structures.html#596" class="Bound">B</a><a id="2623" class="Symbol">)</a> <a id="2625" class="Symbol">(</a><a id="2626" href="Function.Structures.html#2626" class="Bound">from</a> <a id="2631" class="Symbol">:</a> <a id="2633" href="Function.Structures.html#596" class="Bound">B</a> <a id="2635" class="Symbol"></a> <a id="2637" href="Function.Structures.html#536" class="Bound">A</a><a id="2638" class="Symbol">)</a> <a id="2640" class="Symbol">:</a> <a id="2642" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2646" class="Symbol">(</a><a id="2647" href="Function.Structures.html#522" class="Bound">a</a> <a id="2649" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2651" href="Function.Structures.html#524" class="Bound">b</a> <a id="2653" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2655" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="2658" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2660" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="2662" class="Symbol">)</a> <a id="2664" class="Keyword">where</a>
<a id="2672" class="Keyword">field</a>
<a id="IsLeftInverse.isCongruent"></a><a id="2682" href="Function.Structures.html#2682" class="Field">isCongruent</a> <a id="2695" class="Symbol">:</a> <a id="2697" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="2709" href="Function.Structures.html#2613" class="Bound">to</a>
<a id="IsLeftInverse.from-cong"></a><a id="2716" href="Function.Structures.html#2716" class="Field">from-cong</a> <a id="2729" class="Symbol">:</a> <a id="2731" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="2741" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="2746" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="2751" href="Function.Structures.html#2626" class="Bound">from</a>
<a id="IsLeftInverse.inverseˡ"></a><a id="2760" href="Function.Structures.html#2760" class="Field">inverseˡ</a> <a id="2773" class="Symbol">:</a> <a id="2775" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="2784" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="2789" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="2794" href="Function.Structures.html#2613" class="Bound">to</a> <a id="2797" href="Function.Structures.html#2626" class="Bound">from</a>
<a id="2805" class="Keyword">open</a> <a id="2810" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="2822" href="Function.Structures.html#2682" class="Field">isCongruent</a> <a id="2834" class="Keyword">public</a>
<a id="2845" class="Keyword">renaming</a> <a id="2854" class="Symbol">(</a><a id="2855" href="Function.Structures.html#1062" class="Field">cong</a> <a id="2860" class="Symbol">to</a> <a id="2863" class="Field">to-cong</a><a id="2870" class="Symbol">)</a>
<a id="IsLeftInverse.strictlyInverseˡ"></a><a id="2875" href="Function.Structures.html#2875" class="Function">strictlyInverseˡ</a> <a id="2892" class="Symbol">:</a> <a id="2894" href="Function.Definitions.html#1622" class="Function">StrictlyInverseˡ</a> <a id="2911" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="2916" href="Function.Structures.html#2613" class="Bound">to</a> <a id="2919" href="Function.Structures.html#2626" class="Bound">from</a>
<a id="2926" href="Function.Structures.html#2875" class="Function">strictlyInverseˡ</a> <a id="2943" href="Function.Structures.html#2943" class="Bound">x</a> <a id="2945" class="Symbol">=</a> <a id="2947" href="Function.Structures.html#2760" class="Field">inverseˡ</a> <a id="2956" href="Relation.Binary.Structures.html#1596" class="Function">Eq₁.refl</a>
<a id="IsLeftInverse.isSurjection"></a><a id="2968" href="Function.Structures.html#2968" class="Function">isSurjection</a> <a id="2981" class="Symbol">:</a> <a id="2983" href="Function.Structures.html#1664" class="Record">IsSurjection</a> <a id="2996" href="Function.Structures.html#2613" class="Bound">to</a>
<a id="3001" href="Function.Structures.html#2968" class="Function">isSurjection</a> <a id="3014" class="Symbol">=</a> <a id="3016" class="Keyword">record</a>
<a id="3027" class="Symbol">{</a> <a id="3029" href="Function.Structures.html#1731" class="Field">isCongruent</a> <a id="3041" class="Symbol">=</a> <a id="3043" href="Function.Structures.html#2682" class="Field">isCongruent</a>
<a id="3059" class="Symbol">;</a> <a id="3061" href="Function.Structures.html#1763" class="Field">surjective</a> <a id="3072" class="Symbol">=</a> <a id="3074" class="Symbol">λ</a> <a id="3076" href="Function.Structures.html#3076" class="Bound">y</a> <a id="3078" class="Symbol"></a> <a id="3080" href="Function.Structures.html#2626" class="Bound">from</a> <a id="3085" href="Function.Structures.html#3076" class="Bound">y</a> <a id="3087" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3089" href="Function.Structures.html#2760" class="Field">inverseˡ</a>
<a id="3102" class="Symbol">}</a>
<a id="3106" class="Keyword">record</a> <a id="IsRightInverse"></a><a id="3113" href="Function.Structures.html#3113" class="Record">IsRightInverse</a> <a id="3128" class="Symbol">(</a><a id="3129" href="Function.Structures.html#3129" class="Bound">to</a> <a id="3132" class="Symbol">:</a> <a id="3134" href="Function.Structures.html#536" class="Bound">A</a> <a id="3136" class="Symbol"></a> <a id="3138" href="Function.Structures.html#596" class="Bound">B</a><a id="3139" class="Symbol">)</a> <a id="3141" class="Symbol">(</a><a id="3142" href="Function.Structures.html#3142" class="Bound">from</a> <a id="3147" class="Symbol">:</a> <a id="3149" href="Function.Structures.html#596" class="Bound">B</a> <a id="3151" class="Symbol"></a> <a id="3153" href="Function.Structures.html#536" class="Bound">A</a><a id="3154" class="Symbol">)</a> <a id="3156" class="Symbol">:</a> <a id="3158" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3162" class="Symbol">(</a><a id="3163" href="Function.Structures.html#522" class="Bound">a</a> <a id="3165" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3167" href="Function.Structures.html#524" class="Bound">b</a> <a id="3169" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3171" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="3174" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3176" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="3178" class="Symbol">)</a> <a id="3180" class="Keyword">where</a>
<a id="3188" class="Keyword">field</a>
<a id="IsRightInverse.isCongruent"></a><a id="3198" href="Function.Structures.html#3198" class="Field">isCongruent</a> <a id="3210" class="Symbol">:</a> <a id="3212" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="3224" href="Function.Structures.html#3129" class="Bound">to</a>
<a id="IsRightInverse.from-cong"></a><a id="3231" href="Function.Structures.html#3231" class="Field">from-cong</a> <a id="3243" class="Symbol">:</a> <a id="3245" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="3255" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="3260" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="3265" href="Function.Structures.html#3142" class="Bound">from</a>
<a id="IsRightInverse.inverseʳ"></a><a id="3274" href="Function.Structures.html#3274" class="Field">inverseʳ</a> <a id="3286" class="Symbol">:</a> <a id="3288" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="3297" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="3302" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="3307" href="Function.Structures.html#3129" class="Bound">to</a> <a id="3310" href="Function.Structures.html#3142" class="Bound">from</a>
<a id="3318" class="Keyword">open</a> <a id="3323" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="3335" href="Function.Structures.html#3198" class="Field">isCongruent</a> <a id="3347" class="Keyword">public</a>
<a id="3358" class="Keyword">renaming</a> <a id="3367" class="Symbol">(</a><a id="3368" href="Function.Structures.html#1062" class="Field">cong</a> <a id="3373" class="Symbol">to</a> <a id="3376" class="Field">to-cong</a><a id="3383" class="Symbol">)</a>
<a id="IsRightInverse.strictlyInverseʳ"></a><a id="3388" href="Function.Structures.html#3388" class="Function">strictlyInverseʳ</a> <a id="3405" class="Symbol">:</a> <a id="3407" href="Function.Definitions.html#1726" class="Function">StrictlyInverseʳ</a> <a id="3424" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="3429" href="Function.Structures.html#3129" class="Bound">to</a> <a id="3432" href="Function.Structures.html#3142" class="Bound">from</a>
<a id="3439" href="Function.Structures.html#3388" class="Function">strictlyInverseʳ</a> <a id="3456" href="Function.Structures.html#3456" class="Bound">x</a> <a id="3458" class="Symbol">=</a> <a id="3460" href="Function.Structures.html#3274" class="Field">inverseʳ</a> <a id="3469" href="Relation.Binary.Structures.html#1596" class="Function">Eq₂.refl</a>
<a id="3480" class="Keyword">record</a> <a id="IsInverse"></a><a id="3487" href="Function.Structures.html#3487" class="Record">IsInverse</a> <a id="3497" class="Symbol">(</a><a id="3498" href="Function.Structures.html#3498" class="Bound">to</a> <a id="3501" class="Symbol">:</a> <a id="3503" href="Function.Structures.html#536" class="Bound">A</a> <a id="3505" class="Symbol"></a> <a id="3507" href="Function.Structures.html#596" class="Bound">B</a><a id="3508" class="Symbol">)</a> <a id="3510" class="Symbol">(</a><a id="3511" href="Function.Structures.html#3511" class="Bound">from</a> <a id="3516" class="Symbol">:</a> <a id="3518" href="Function.Structures.html#596" class="Bound">B</a> <a id="3520" class="Symbol"></a> <a id="3522" href="Function.Structures.html#536" class="Bound">A</a><a id="3523" class="Symbol">)</a> <a id="3525" class="Symbol">:</a> <a id="3527" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3531" class="Symbol">(</a><a id="3532" href="Function.Structures.html#522" class="Bound">a</a> <a id="3534" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3536" href="Function.Structures.html#524" class="Bound">b</a> <a id="3538" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3540" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="3543" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3545" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="3547" class="Symbol">)</a> <a id="3549" class="Keyword">where</a>
<a id="3557" class="Keyword">field</a>
<a id="IsInverse.isLeftInverse"></a><a id="3567" href="Function.Structures.html#3567" class="Field">isLeftInverse</a> <a id="3581" class="Symbol">:</a> <a id="3583" href="Function.Structures.html#2598" class="Record">IsLeftInverse</a> <a id="3597" href="Function.Structures.html#3498" class="Bound">to</a> <a id="3600" href="Function.Structures.html#3511" class="Bound">from</a>
<a id="IsInverse.inverseʳ"></a><a id="3609" href="Function.Structures.html#3609" class="Field">inverseʳ</a> <a id="3623" class="Symbol">:</a> <a id="3625" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="3634" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="3639" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="3644" href="Function.Structures.html#3498" class="Bound">to</a> <a id="3647" href="Function.Structures.html#3511" class="Bound">from</a>
<a id="3655" class="Keyword">open</a> <a id="3660" href="Function.Structures.html#2598" class="Module">IsLeftInverse</a> <a id="3674" href="Function.Structures.html#3567" class="Field">isLeftInverse</a> <a id="3688" class="Keyword">public</a>
<a id="IsInverse.isRightInverse"></a><a id="3698" href="Function.Structures.html#3698" class="Function">isRightInverse</a> <a id="3713" class="Symbol">:</a> <a id="3715" href="Function.Structures.html#3113" class="Record">IsRightInverse</a> <a id="3730" href="Function.Structures.html#3498" class="Bound">to</a> <a id="3733" href="Function.Structures.html#3511" class="Bound">from</a>
<a id="3740" href="Function.Structures.html#3698" class="Function">isRightInverse</a> <a id="3755" class="Symbol">=</a> <a id="3757" class="Keyword">record</a>
<a id="3768" class="Symbol">{</a> <a id="3770" href="Function.Structures.html#3198" class="Field">isCongruent</a> <a id="3782" class="Symbol">=</a> <a id="3784" href="Function.Structures.html#2682" class="Function">isCongruent</a>
<a id="3800" class="Symbol">;</a> <a id="3802" href="Function.Structures.html#3231" class="Field">from-cong</a> <a id="3814" class="Symbol">=</a> <a id="3816" href="Function.Structures.html#2716" class="Function">from-cong</a>
<a id="3830" class="Symbol">;</a> <a id="3832" href="Function.Structures.html#3274" class="Field">inverseʳ</a> <a id="3844" class="Symbol">=</a> <a id="3846" href="Function.Structures.html#3609" class="Field">inverseʳ</a>
<a id="3859" class="Symbol">}</a>
<a id="3864" class="Keyword">open</a> <a id="3869" href="Function.Structures.html#3113" class="Module">IsRightInverse</a> <a id="3884" href="Function.Structures.html#3698" class="Function">isRightInverse</a> <a id="3899" class="Keyword">public</a>
<a id="3910" class="Keyword">using</a> <a id="3916" class="Symbol">(</a><a id="3917" href="Function.Structures.html#3388" class="Function">strictlyInverseʳ</a><a id="3933" class="Symbol">)</a>
<a id="IsInverse.inverse"></a><a id="3938" href="Function.Structures.html#3938" class="Function">inverse</a> <a id="3946" class="Symbol">:</a> <a id="3948" href="Function.Definitions.html#1256" class="Function">Inverseᵇ</a> <a id="3957" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="3962" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="3967" href="Function.Structures.html#3498" class="Bound">to</a> <a id="3970" href="Function.Structures.html#3511" class="Bound">from</a>
<a id="3977" href="Function.Structures.html#3938" class="Function">inverse</a> <a id="3985" class="Symbol">=</a> <a id="3987" href="Function.Structures.html#2760" class="Function">inverseˡ</a> <a id="3996" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3998" href="Function.Structures.html#3609" class="Field">inverseʳ</a>
<a id="4009" class="Comment">------------------------------------------------------------------------</a>
<a id="4082" class="Comment">-- Three element structures</a>
<a id="4110" class="Comment">------------------------------------------------------------------------</a>
<a id="4184" class="Keyword">record</a> <a id="IsBiEquivalence"></a><a id="4191" href="Function.Structures.html#4191" class="Record">IsBiEquivalence</a>
<a id="4209" class="Symbol">(</a><a id="4210" href="Function.Structures.html#4210" class="Bound">to</a> <a id="4213" class="Symbol">:</a> <a id="4215" href="Function.Structures.html#536" class="Bound">A</a> <a id="4217" class="Symbol"></a> <a id="4219" href="Function.Structures.html#596" class="Bound">B</a><a id="4220" class="Symbol">)</a> <a id="4222" class="Symbol">(</a><a id="4223" href="Function.Structures.html#4223" class="Bound">from₁</a> <a id="4229" class="Symbol">:</a> <a id="4231" href="Function.Structures.html#596" class="Bound">B</a> <a id="4233" class="Symbol"></a> <a id="4235" href="Function.Structures.html#536" class="Bound">A</a><a id="4236" class="Symbol">)</a> <a id="4238" class="Symbol">(</a><a id="4239" href="Function.Structures.html#4239" class="Bound">from₂</a> <a id="4245" class="Symbol">:</a> <a id="4247" href="Function.Structures.html#596" class="Bound">B</a> <a id="4249" class="Symbol"></a> <a id="4251" href="Function.Structures.html#536" class="Bound">A</a><a id="4252" class="Symbol">)</a> <a id="4254" class="Symbol">:</a> <a id="4256" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="4260" class="Symbol">(</a><a id="4261" href="Function.Structures.html#522" class="Bound">a</a> <a id="4263" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4265" href="Function.Structures.html#524" class="Bound">b</a> <a id="4267" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4269" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="4272" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4274" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="4276" class="Symbol">)</a> <a id="4278" class="Keyword">where</a>
<a id="4286" class="Keyword">field</a>
<a id="IsBiEquivalence.to-isCongruent"></a><a id="4296" href="Function.Structures.html#4296" class="Field">to-isCongruent</a> <a id="4311" class="Symbol">:</a> <a id="4313" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="4325" href="Function.Structures.html#4210" class="Bound">to</a>
<a id="IsBiEquivalence.from₁-cong"></a><a id="4332" href="Function.Structures.html#4332" class="Field">from₁-cong</a> <a id="4346" class="Symbol">:</a> <a id="4348" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="4358" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="4363" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="4368" href="Function.Structures.html#4223" class="Bound">from₁</a>
<a id="IsBiEquivalence.from₂-cong"></a><a id="4378" href="Function.Structures.html#4378" class="Field">from₂-cong</a> <a id="4392" class="Symbol">:</a> <a id="4394" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="4404" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="4409" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="4414" href="Function.Structures.html#4239" class="Bound">from₂</a>
<a id="4423" class="Keyword">open</a> <a id="4428" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="4440" href="Function.Structures.html#4296" class="Field">to-isCongruent</a> <a id="4455" class="Keyword">public</a>
<a id="4466" class="Keyword">renaming</a> <a id="4475" class="Symbol">(</a><a id="4476" href="Function.Structures.html#1062" class="Field">cong</a> <a id="4481" class="Symbol">to</a> <a id="4484" class="Field">to-cong₁</a><a id="4492" class="Symbol">)</a>
<a id="4496" class="Keyword">record</a> <a id="IsBiInverse"></a><a id="4503" href="Function.Structures.html#4503" class="Record">IsBiInverse</a>
<a id="4517" class="Symbol">(</a><a id="4518" href="Function.Structures.html#4518" class="Bound">to</a> <a id="4521" class="Symbol">:</a> <a id="4523" href="Function.Structures.html#536" class="Bound">A</a> <a id="4525" class="Symbol"></a> <a id="4527" href="Function.Structures.html#596" class="Bound">B</a><a id="4528" class="Symbol">)</a> <a id="4530" class="Symbol">(</a><a id="4531" href="Function.Structures.html#4531" class="Bound">from₁</a> <a id="4537" class="Symbol">:</a> <a id="4539" href="Function.Structures.html#596" class="Bound">B</a> <a id="4541" class="Symbol"></a> <a id="4543" href="Function.Structures.html#536" class="Bound">A</a><a id="4544" class="Symbol">)</a> <a id="4546" class="Symbol">(</a><a id="4547" href="Function.Structures.html#4547" class="Bound">from₂</a> <a id="4553" class="Symbol">:</a> <a id="4555" href="Function.Structures.html#596" class="Bound">B</a> <a id="4557" class="Symbol"></a> <a id="4559" href="Function.Structures.html#536" class="Bound">A</a><a id="4560" class="Symbol">)</a> <a id="4562" class="Symbol">:</a> <a id="4564" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="4568" class="Symbol">(</a><a id="4569" href="Function.Structures.html#522" class="Bound">a</a> <a id="4571" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4573" href="Function.Structures.html#524" class="Bound">b</a> <a id="4575" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4577" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="4580" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4582" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="4584" class="Symbol">)</a> <a id="4586" class="Keyword">where</a>
<a id="4594" class="Keyword">field</a>
<a id="IsBiInverse.to-isCongruent"></a><a id="4604" href="Function.Structures.html#4604" class="Field">to-isCongruent</a> <a id="4619" class="Symbol">:</a> <a id="4621" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="4633" href="Function.Structures.html#4518" class="Bound">to</a>
<a id="IsBiInverse.from₁-cong"></a><a id="4640" href="Function.Structures.html#4640" class="Field">from₁-cong</a> <a id="4655" class="Symbol">:</a> <a id="4657" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="4667" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="4672" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="4677" href="Function.Structures.html#4531" class="Bound">from₁</a>
<a id="IsBiInverse.from₂-cong"></a><a id="4687" href="Function.Structures.html#4687" class="Field">from₂-cong</a> <a id="4702" class="Symbol">:</a> <a id="4704" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="4714" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="4719" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="4724" href="Function.Structures.html#4547" class="Bound">from₂</a>
<a id="IsBiInverse.inverseˡ"></a><a id="4734" href="Function.Structures.html#4734" class="Field">inverseˡ</a> <a id="4749" class="Symbol">:</a> <a id="4751" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="4760" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="4765" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="4770" href="Function.Structures.html#4518" class="Bound">to</a> <a id="4773" href="Function.Structures.html#4531" class="Bound">from₁</a>
<a id="IsBiInverse.inverseʳ"></a><a id="4783" href="Function.Structures.html#4783" class="Field">inverseʳ</a> <a id="4798" class="Symbol">:</a> <a id="4800" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="4809" href="Function.Structures.html#548" class="Bound Operator">_≈₁_</a> <a id="4814" href="Function.Structures.html#608" class="Bound Operator">_≈₂_</a> <a id="4819" href="Function.Structures.html#4518" class="Bound">to</a> <a id="4822" href="Function.Structures.html#4547" class="Bound">from₂</a>
<a id="4831" class="Keyword">open</a> <a id="4836" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="4848" href="Function.Structures.html#4604" class="Field">to-isCongruent</a> <a id="4863" class="Keyword">public</a>
<a id="4874" class="Keyword">renaming</a> <a id="4883" class="Symbol">(</a><a id="4884" href="Function.Structures.html#1062" class="Field">cong</a> <a id="4889" class="Symbol">to</a> <a id="4892" class="Field">to-cong</a><a id="4899" class="Symbol">)</a>
<a id="4903" class="Comment">------------------------------------------------------------------------</a>
<a id="4976" class="Comment">-- Other</a>
<a id="4985" class="Comment">------------------------------------------------------------------------</a>
<a id="5059" class="Comment">-- See the comment on `SplitSurjection` in `Function.Bundles` for an</a>
<a id="5128" class="Comment">-- explanation of (split) surjections.</a>
<a id="5167" class="Keyword">record</a> <a id="IsSplitSurjection"></a><a id="5174" href="Function.Structures.html#5174" class="Record">IsSplitSurjection</a> <a id="5192" class="Symbol">(</a><a id="5193" href="Function.Structures.html#5193" class="Bound">f</a> <a id="5195" class="Symbol">:</a> <a id="5197" href="Function.Structures.html#536" class="Bound">A</a> <a id="5199" class="Symbol"></a> <a id="5201" href="Function.Structures.html#596" class="Bound">B</a><a id="5202" class="Symbol">)</a> <a id="5204" class="Symbol">:</a> <a id="5206" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="5210" class="Symbol">(</a><a id="5211" href="Function.Structures.html#522" class="Bound">a</a> <a id="5213" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5215" href="Function.Structures.html#524" class="Bound">b</a> <a id="5217" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5219" href="Function.Structures.html#526" class="Bound">ℓ₁</a> <a id="5222" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5224" href="Function.Structures.html#529" class="Bound">ℓ₂</a><a id="5226" class="Symbol">)</a> <a id="5228" class="Keyword">where</a>
<a id="5236" class="Keyword">field</a>
<a id="IsSplitSurjection.from"></a><a id="5246" href="Function.Structures.html#5246" class="Field">from</a> <a id="5251" class="Symbol">:</a> <a id="5253" href="Function.Structures.html#596" class="Bound">B</a> <a id="5255" class="Symbol"></a> <a id="5257" href="Function.Structures.html#536" class="Bound">A</a>
<a id="IsSplitSurjection.isLeftInverse"></a><a id="5263" href="Function.Structures.html#5263" class="Field">isLeftInverse</a> <a id="5277" class="Symbol">:</a> <a id="5279" href="Function.Structures.html#2598" class="Record">IsLeftInverse</a> <a id="5293" href="Function.Structures.html#5193" class="Bound">f</a> <a id="5295" href="Function.Structures.html#5246" class="Field">from</a>
<a id="5303" class="Keyword">open</a> <a id="5308" href="Function.Structures.html#2598" class="Module">IsLeftInverse</a> <a id="5322" href="Function.Structures.html#5263" class="Field">isLeftInverse</a> <a id="5336" class="Keyword">public</a>
</pre></body></html>