bsc-leon-vatthauer/agda/bsc-thesis/Function.Bundles.html

542 lines
127 KiB
HTML
Raw Normal View History

2024-02-09 17:53:52 +01:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Function.Bundles</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">-- Bundles for types of functions</a>
<a id="140" class="Comment">------------------------------------------------------------------------</a>
<a id="214" class="Comment">-- The contents of this file should usually be accessed from `Function`.</a>
<a id="288" class="Comment">-- Note that these bundles differ from those found elsewhere in other</a>
<a id="358" class="Comment">-- library hierarchies as they take Setoids as parameters. This is</a>
<a id="425" class="Comment">-- because a function is of no use without knowing what its domain and</a>
<a id="496" class="Comment">-- codomain is, as well which equalities are being considered over them.</a>
<a id="569" class="Comment">-- One consequence of this is that they are not built from the</a>
<a id="632" class="Comment">-- definitions found in `Function.Structures` as is usually the case in</a>
<a id="704" class="Comment">-- other library hierarchies, as this would duplicate the equality</a>
<a id="771" class="Comment">-- axioms.</a>
<a id="783" class="Symbol">{-#</a> <a id="787" class="Keyword">OPTIONS</a> <a id="795" class="Pragma">--cubical-compatible</a> <a id="816" class="Pragma">--safe</a> <a id="823" class="Symbol">#-}</a>
<a id="828" class="Keyword">module</a> <a id="835" href="Function.Bundles.html" class="Module">Function.Bundles</a> <a id="852" class="Keyword">where</a>
<a id="859" class="Keyword">open</a> <a id="864" class="Keyword">import</a> <a id="871" href="Function.Base.html" class="Module">Function.Base</a> <a id="885" class="Keyword">using</a> <a id="891" class="Symbol">(</a><a id="892" href="Function.Base.html#1115" class="Function Operator">_∘_</a><a id="895" class="Symbol">)</a>
<a id="897" class="Keyword">open</a> <a id="902" class="Keyword">import</a> <a id="909" href="Function.Definitions.html" class="Module">Function.Definitions</a>
<a id="930" class="Keyword">import</a> <a id="937" href="Function.Structures.html" class="Module">Function.Structures</a> <a id="957" class="Symbol">as</a> <a id="960" class="Module">FunctionStructures</a>
<a id="979" class="Keyword">open</a> <a id="984" class="Keyword">import</a> <a id="991" href="Level.html" class="Module">Level</a> <a id="997" class="Keyword">using</a> <a id="1003" class="Symbol">(</a><a id="1004" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="1009" class="Symbol">;</a> <a id="1011" href="Agda.Primitive.html#961" class="Primitive Operator">_⊔_</a><a id="1014" class="Symbol">;</a> <a id="1016" href="Agda.Primitive.html#931" class="Primitive">suc</a><a id="1019" class="Symbol">)</a>
<a id="1021" class="Keyword">open</a> <a id="1026" class="Keyword">import</a> <a id="1033" href="Data.Product.Base.html" class="Module">Data.Product.Base</a> <a id="1051" class="Keyword">using</a> <a id="1057" class="Symbol">(</a><a id="1058" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a><a id="1061" class="Symbol">;</a> <a id="1063" href="Data.Product.Base.html#636" class="Field">proj₁</a><a id="1068" class="Symbol">;</a> <a id="1070" href="Data.Product.Base.html#650" class="Field">proj₂</a><a id="1075" class="Symbol">)</a>
<a id="1077" class="Keyword">open</a> <a id="1082" class="Keyword">import</a> <a id="1089" href="Relation.Binary.Bundles.html" class="Module">Relation.Binary.Bundles</a> <a id="1113" class="Keyword">using</a> <a id="1119" class="Symbol">(</a><a id="1120" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a><a id="1126" class="Symbol">)</a>
<a id="1128" class="Keyword">open</a> <a id="1133" class="Keyword">import</a> <a id="1140" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a> <a id="1161" class="Keyword">using</a> <a id="1167" class="Symbol">(</a><a id="1168" href="Relation.Binary.Core.html#1577" class="Function Operator">_Preserves_⟶_</a><a id="1181" class="Symbol">)</a>
<a id="1183" class="Keyword">open</a> <a id="1188" class="Keyword">import</a> <a id="1195" href="Relation.Binary.PropositionalEquality.Core.html" class="Module">Relation.Binary.PropositionalEquality.Core</a> <a id="1238" class="Symbol">as</a> <a id="1241" class="Module"></a>
<a id="1245" class="Keyword">using</a> <a id="1251" class="Symbol">(</a><a id="1252" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a><a id="1255" class="Symbol">)</a>
<a id="1257" class="Keyword">import</a> <a id="1264" href="Relation.Binary.PropositionalEquality.Properties.html" class="Module">Relation.Binary.PropositionalEquality.Properties</a> <a id="1313" class="Symbol">as</a> <a id="1316" class="Module"></a>
<a id="1318" class="Keyword">open</a> <a id="1323" class="Keyword">import</a> <a id="1330" href="Function.Consequences.Propositional.html" class="Module">Function.Consequences.Propositional</a>
<a id="1366" class="Keyword">open</a> <a id="1371" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="1378" class="Keyword">using</a> <a id="1384" class="Symbol">(</a><a id="1385" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a><a id="1398" class="Symbol">)</a>
<a id="1401" class="Keyword">private</a>
<a id="1411" class="Keyword">variable</a>
<a id="1424" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="1426" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="1428" href="Function.Bundles.html#1428" class="Generalizable">ℓ₁</a> <a id="1431" href="Function.Bundles.html#1431" class="Generalizable">ℓ₂</a> <a id="1434" class="Symbol">:</a> <a id="1436" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="1443" class="Comment">------------------------------------------------------------------------</a>
<a id="1516" class="Comment">-- Setoid bundles</a>
<a id="1534" class="Comment">------------------------------------------------------------------------</a>
<a id="1608" class="Keyword">module</a> <a id="1615" href="Function.Bundles.html#1615" class="Module">_</a> <a id="1617" class="Symbol">(</a><a id="1618" href="Function.Bundles.html#1618" class="Bound">From</a> <a id="1623" class="Symbol">:</a> <a id="1625" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="1632" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="1634" href="Function.Bundles.html#1428" class="Generalizable">ℓ₁</a><a id="1636" class="Symbol">)</a> <a id="1638" class="Symbol">(</a><a id="1639" href="Function.Bundles.html#1639" class="Bound">To</a> <a id="1642" class="Symbol">:</a> <a id="1644" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="1651" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="1653" href="Function.Bundles.html#1431" class="Generalizable">ℓ₂</a><a id="1655" class="Symbol">)</a> <a id="1657" class="Keyword">where</a>
<a id="1666" class="Keyword">open</a> <a id="1671" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="1678" href="Function.Bundles.html#1618" class="Bound">From</a> <a id="1683" class="Keyword">using</a> <a id="1689" class="Symbol">()</a> <a id="1692" class="Keyword">renaming</a> <a id="1701" class="Symbol">(</a><a id="1702" href="Relation.Binary.Bundles.html#1143" class="Field">Carrier</a> <a id="1710" class="Symbol">to</a> <a id="1713" class="Field">A</a><a id="1714" class="Symbol">;</a> <a id="1716" href="Relation.Binary.Bundles.html#1169" class="Field Operator">_≈_</a> <a id="1720" class="Symbol">to</a> <a id="1723" class="Field Operator">_≈₁_</a><a id="1727" class="Symbol">)</a>
<a id="1731" class="Keyword">open</a> <a id="1736" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="1743" href="Function.Bundles.html#1639" class="Bound">To</a> <a id="1748" class="Keyword">using</a> <a id="1754" class="Symbol">()</a> <a id="1757" class="Keyword">renaming</a> <a id="1766" class="Symbol">(</a><a id="1767" href="Relation.Binary.Bundles.html#1143" class="Field">Carrier</a> <a id="1775" class="Symbol">to</a> <a id="1778" class="Field">B</a><a id="1779" class="Symbol">;</a> <a id="1781" href="Relation.Binary.Bundles.html#1169" class="Field Operator">_≈_</a> <a id="1785" class="Symbol">to</a> <a id="1788" class="Field Operator">_≈₂_</a><a id="1792" class="Symbol">)</a>
<a id="1796" class="Keyword">open</a> <a id="1801" href="Function.Structures.html" class="Module">FunctionStructures</a> <a id="1820" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="1825" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a>
<a id="1831" class="Comment">------------------------------------------------------------------------</a>
<a id="1904" class="Comment">-- Bundles with one element</a>
<a id="1935" class="Comment">-- Called `Func` rather than `Function` in order to avoid clashing</a>
<a id="2004" class="Comment">-- with the top-level module.</a>
<a id="2036" class="Keyword">record</a> <a id="2043" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="2048" class="Symbol">:</a> <a id="2050" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2054" class="Symbol">(</a><a id="2055" href="Function.Bundles.html#1632" class="Bound">a</a> <a id="2057" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2059" href="Function.Bundles.html#1651" class="Bound">b</a> <a id="2061" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2063" href="Function.Bundles.html#1634" class="Bound">ℓ₁</a> <a id="2066" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2068" href="Function.Bundles.html#1653" class="Bound">ℓ₂</a><a id="2070" class="Symbol">)</a> <a id="2072" class="Keyword">where</a>
<a id="2082" class="Keyword">field</a>
<a id="2094" href="Function.Bundles.html#2094" class="Field">to</a> <a id="2099" class="Symbol">:</a> <a id="2101" href="Function.Bundles.html#1713" class="Function">A</a> <a id="2103" class="Symbol"></a> <a id="2105" href="Function.Bundles.html#1778" class="Field">B</a>
<a id="2113" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="2118" class="Symbol">:</a> <a id="2120" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="2130" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="2135" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="2140" href="Function.Bundles.html#2094" class="Field">to</a>
<a id="2148" href="Function.Bundles.html#2148" class="Function">isCongruent</a> <a id="2160" class="Symbol">:</a> <a id="2162" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="2174" href="Function.Bundles.html#2094" class="Field">to</a>
<a id="2181" href="Function.Bundles.html#2148" class="Function">isCongruent</a> <a id="2193" class="Symbol">=</a> <a id="2195" class="Keyword">record</a>
<a id="2208" class="Symbol">{</a> <a id="2210" href="Function.Structures.html#1062" class="Field">cong</a> <a id="2225" class="Symbol">=</a> <a id="2227" href="Function.Bundles.html#2113" class="Field">cong</a>
<a id="2238" class="Symbol">;</a> <a id="2240" href="Function.Structures.html#1106" class="Field">isEquivalence₁</a> <a id="2255" class="Symbol">=</a> <a id="2257" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="2271" href="Function.Bundles.html#1618" class="Bound">From</a>
<a id="2282" class="Symbol">;</a> <a id="2284" href="Function.Structures.html#1146" class="Field">isEquivalence₂</a> <a id="2299" class="Symbol">=</a> <a id="2301" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="2315" href="Function.Bundles.html#1639" class="Bound">To</a>
<a id="2324" class="Symbol">}</a>
<a id="2331" class="Keyword">open</a> <a id="2336" href="Function.Structures.html#995" class="Module">IsCongruent</a> <a id="2348" href="Function.Bundles.html#2148" class="Function">isCongruent</a> <a id="2360" class="Keyword">public</a>
<a id="2373" class="Keyword">using</a> <a id="2379" class="Symbol">(</a><a id="2380" class="Keyword">module</a> <a id="2387" href="Function.Structures.html#1192" class="Module">Eq₁</a><a id="2390" class="Symbol">;</a> <a id="2392" class="Keyword">module</a> <a id="2399" href="Function.Structures.html#1336" class="Module">Eq₂</a><a id="2402" class="Symbol">)</a>
<a id="2408" class="Keyword">record</a> <a id="2415" href="Function.Bundles.html#2415" class="Record">Injection</a> <a id="2425" class="Symbol">:</a> <a id="2427" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2431" class="Symbol">(</a><a id="2432" href="Function.Bundles.html#1632" class="Bound">a</a> <a id="2434" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2436" href="Function.Bundles.html#1651" class="Bound">b</a> <a id="2438" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2440" href="Function.Bundles.html#1634" class="Bound">ℓ₁</a> <a id="2443" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2445" href="Function.Bundles.html#1653" class="Bound">ℓ₂</a><a id="2447" class="Symbol">)</a> <a id="2449" class="Keyword">where</a>
<a id="2459" class="Keyword">field</a>
<a id="2471" href="Function.Bundles.html#2471" class="Field">to</a> <a id="2483" class="Symbol">:</a> <a id="2485" href="Function.Bundles.html#1713" class="Function">A</a> <a id="2487" class="Symbol"></a> <a id="2489" href="Function.Bundles.html#1778" class="Field">B</a>
<a id="2497" href="Function.Bundles.html#2497" class="Field">cong</a> <a id="2509" class="Symbol">:</a> <a id="2511" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="2521" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="2526" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="2531" href="Function.Bundles.html#2471" class="Field">to</a>
<a id="2540" href="Function.Bundles.html#2540" class="Field">injective</a> <a id="2552" class="Symbol">:</a> <a id="2554" href="Function.Definitions.html#842" class="Function">Injective</a> <a id="2564" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="2569" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="2574" href="Function.Bundles.html#2471" class="Field">to</a>
<a id="2582" href="Function.Bundles.html#2582" class="Function">function</a> <a id="2591" class="Symbol">:</a> <a id="2593" href="Function.Bundles.html#2043" class="Record">Func</a>
<a id="2602" href="Function.Bundles.html#2582" class="Function">function</a> <a id="2611" class="Symbol">=</a> <a id="2613" class="Keyword">record</a>
<a id="2626" class="Symbol">{</a> <a id="2628" href="Function.Bundles.html#2094" class="Field">to</a> <a id="2633" class="Symbol">=</a> <a id="2635" href="Function.Bundles.html#2471" class="Field">to</a>
<a id="2644" class="Symbol">;</a> <a id="2646" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="2651" class="Symbol">=</a> <a id="2653" href="Function.Bundles.html#2497" class="Field">cong</a>
<a id="2664" class="Symbol">}</a>
<a id="2671" class="Keyword">open</a> <a id="2676" href="Function.Bundles.html#2043" class="Module">Func</a> <a id="2681" href="Function.Bundles.html#2582" class="Function">function</a> <a id="2690" class="Keyword">public</a>
<a id="2703" class="Keyword">hiding</a> <a id="2710" class="Symbol">(</a><a id="2711" href="Function.Bundles.html#2094" class="Field">to</a><a id="2713" class="Symbol">;</a> <a id="2715" href="Function.Bundles.html#2113" class="Field">cong</a><a id="2719" class="Symbol">)</a>
<a id="2726" href="Function.Bundles.html#2726" class="Function">isInjection</a> <a id="2738" class="Symbol">:</a> <a id="2740" href="Function.Structures.html#1479" class="Record">IsInjection</a> <a id="2752" href="Function.Bundles.html#2471" class="Field">to</a>
<a id="2759" href="Function.Bundles.html#2726" class="Function">isInjection</a> <a id="2771" class="Symbol">=</a> <a id="2773" class="Keyword">record</a>
<a id="2786" class="Symbol">{</a> <a id="2788" href="Function.Structures.html#1546" class="Field">isCongruent</a> <a id="2800" class="Symbol">=</a> <a id="2802" href="Function.Bundles.html#2148" class="Function">isCongruent</a>
<a id="2820" class="Symbol">;</a> <a id="2822" href="Function.Structures.html#1579" class="Field">injective</a> <a id="2834" class="Symbol">=</a> <a id="2836" href="Function.Bundles.html#2540" class="Field">injective</a>
<a id="2852" class="Symbol">}</a>
<a id="2858" class="Keyword">record</a> <a id="2865" href="Function.Bundles.html#2865" class="Record">Surjection</a> <a id="2876" class="Symbol">:</a> <a id="2878" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2882" class="Symbol">(</a><a id="2883" href="Function.Bundles.html#1632" class="Bound">a</a> <a id="2885" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2887" href="Function.Bundles.html#1651" class="Bound">b</a> <a id="2889" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2891" href="Function.Bundles.html#1634" class="Bound">ℓ₁</a> <a id="2894" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2896" href="Function.Bundles.html#1653" class="Bound">ℓ₂</a><a id="2898" class="Symbol">)</a> <a id="2900" class="Keyword">where</a>
<a id="2910" class="Keyword">field</a>
<a id="2922" href="Function.Bundles.html#2922" class="Field">to</a> <a id="2933" class="Symbol">:</a> <a id="2935" href="Function.Bundles.html#1713" class="Function">A</a> <a id="2937" class="Symbol"></a> <a id="2939" href="Function.Bundles.html#1778" class="Field">B</a>
<a id="2947" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="2958" class="Symbol">:</a> <a id="2960" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="2970" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="2975" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="2980" href="Function.Bundles.html#2922" class="Field">to</a>
<a id="2989" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="3000" class="Symbol">:</a> <a id="3002" href="Function.Definitions.html#919" class="Function">Surjective</a> <a id="3013" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="3018" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="3023" href="Function.Bundles.html#2922" class="Field">to</a>
<a id="3031" href="Function.Bundles.html#3031" class="Function">function</a> <a id="3040" class="Symbol">:</a> <a id="3042" href="Function.Bundles.html#2043" class="Record">Func</a>
<a id="3051" href="Function.Bundles.html#3031" class="Function">function</a> <a id="3060" class="Symbol">=</a> <a id="3062" class="Keyword">record</a>
<a id="3075" class="Symbol">{</a> <a id="3077" href="Function.Bundles.html#2094" class="Field">to</a> <a id="3082" class="Symbol">=</a> <a id="3084" href="Function.Bundles.html#2922" class="Field">to</a>
<a id="3093" class="Symbol">;</a> <a id="3095" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="3100" class="Symbol">=</a> <a id="3102" href="Function.Bundles.html#2947" class="Field">cong</a>
<a id="3113" class="Symbol">}</a>
<a id="3120" class="Keyword">open</a> <a id="3125" href="Function.Bundles.html#2043" class="Module">Func</a> <a id="3130" href="Function.Bundles.html#3031" class="Function">function</a> <a id="3139" class="Keyword">public</a>
<a id="3152" class="Keyword">hiding</a> <a id="3159" class="Symbol">(</a><a id="3160" href="Function.Bundles.html#2094" class="Field">to</a><a id="3162" class="Symbol">;</a> <a id="3164" href="Function.Bundles.html#2113" class="Field">cong</a><a id="3168" class="Symbol">)</a>
<a id="3175" href="Function.Bundles.html#3175" class="Function">isSurjection</a> <a id="3188" class="Symbol">:</a> <a id="3190" href="Function.Structures.html#1664" class="Record">IsSurjection</a> <a id="3203" href="Function.Bundles.html#2922" class="Field">to</a>
<a id="3210" href="Function.Bundles.html#3175" class="Function">isSurjection</a> <a id="3223" class="Symbol">=</a> <a id="3225" class="Keyword">record</a>
<a id="3238" class="Symbol">{</a> <a id="3240" href="Function.Structures.html#1731" class="Field">isCongruent</a> <a id="3252" class="Symbol">=</a> <a id="3254" href="Function.Bundles.html#2148" class="Function">isCongruent</a>
<a id="3272" class="Symbol">;</a> <a id="3274" href="Function.Structures.html#1763" class="Field">surjective</a> <a id="3286" class="Symbol">=</a> <a id="3288" href="Function.Bundles.html#2989" class="Field">surjective</a>
<a id="3305" class="Symbol">}</a>
<a id="3312" class="Keyword">open</a> <a id="3317" href="Function.Structures.html#1664" class="Module">IsSurjection</a> <a id="3330" href="Function.Bundles.html#3175" class="Function">isSurjection</a> <a id="3343" class="Keyword">public</a>
<a id="3356" class="Keyword">using</a>
<a id="3368" class="Symbol">(</a> <a id="3370" href="Function.Structures.html#1842" class="Function">strictlySurjective</a>
<a id="3395" class="Symbol">)</a>
<a id="3402" href="Function.Bundles.html#3402" class="Function">to⁻</a> <a id="3406" class="Symbol">:</a> <a id="3408" href="Function.Bundles.html#1778" class="Field">B</a> <a id="3410" class="Symbol"></a> <a id="3412" href="Function.Bundles.html#1713" class="Function">A</a>
<a id="3418" href="Function.Bundles.html#3402" class="Function">to⁻</a> <a id="3422" class="Symbol">=</a> <a id="3424" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="3430" href="Function.Base.html#1115" class="Function Operator"></a> <a id="3432" href="Function.Bundles.html#2989" class="Field">surjective</a>
<a id="3448" href="Function.Bundles.html#3448" class="Function">to∘to⁻</a> <a id="3455" class="Symbol">:</a> <a id="3457" class="Symbol"></a> <a id="3459" href="Function.Bundles.html#3459" class="Bound">x</a> <a id="3461" class="Symbol"></a> <a id="3463" href="Function.Bundles.html#2922" class="Field">to</a> <a id="3466" class="Symbol">(</a><a id="3467" href="Function.Bundles.html#3402" class="Function">to⁻</a> <a id="3471" href="Function.Bundles.html#3459" class="Bound">x</a><a id="3472" class="Symbol">)</a> <a id="3474" href="Function.Bundles.html#1788" class="Field Operator">≈₂</a> <a id="3477" href="Function.Bundles.html#3459" class="Bound">x</a>
<a id="3483" href="Function.Bundles.html#3448" class="Function">to∘to⁻</a> <a id="3490" class="Symbol">=</a> <a id="3492" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="3498" href="Function.Base.html#1115" class="Function Operator"></a> <a id="3500" href="Function.Structures.html#1842" class="Function">strictlySurjective</a>
<a id="3523" class="Keyword">record</a> <a id="3530" href="Function.Bundles.html#3530" class="Record">Bijection</a> <a id="3540" class="Symbol">:</a> <a id="3542" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3546" class="Symbol">(</a><a id="3547" href="Function.Bundles.html#1632" class="Bound">a</a> <a id="3549" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3551" href="Function.Bundles.html#1651" class="Bound">b</a> <a id="3553" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3555" href="Function.Bundles.html#1634" class="Bound">ℓ₁</a> <a id="3558" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3560" href="Function.Bundles.html#1653" class="Bound">ℓ₂</a><a id="3562" class="Symbol">)</a> <a id="3564" class="Keyword">where</a>
<a id="3574" class="Keyword">field</a>
<a id="3586" href="Function.Bundles.html#3586" class="Field">to</a> <a id="3596" class="Symbol">:</a> <a id="3598" href="Function.Bundles.html#1713" class="Function">A</a> <a id="3600" class="Symbol"></a> <a id="3602" href="Function.Bundles.html#1778" class="Field">B</a>
<a id="3610" href="Function.Bundles.html#3610" class="Field">cong</a> <a id="3620" class="Symbol">:</a> <a id="3622" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="3632" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="3637" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="3642" href="Function.Bundles.html#3586" class="Field">to</a>
<a id="3651" href="Function.Bundles.html#3651" class="Field">bijective</a> <a id="3661" class="Symbol">:</a> <a id="3663" href="Function.Definitions.html#1008" class="Function">Bijective</a> <a id="3673" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="3678" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="3683" href="Function.Bundles.html#3586" class="Field">to</a>
<a id="3691" href="Function.Bundles.html#3691" class="Function">injective</a> <a id="3701" class="Symbol">:</a> <a id="3703" href="Function.Definitions.html#842" class="Function">Injective</a> <a id="3713" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="3718" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="3723" href="Function.Bundles.html#3586" class="Field">to</a>
<a id="3730" href="Function.Bundles.html#3691" class="Function">injective</a> <a id="3740" class="Symbol">=</a> <a id="3742" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="3748" href="Function.Bundles.html#3651" class="Field">bijective</a>
<a id="3763" href="Function.Bundles.html#3763" class="Function">surjective</a> <a id="3774" class="Symbol">:</a> <a id="3776" href="Function.Definitions.html#919" class="Function">Surjective</a> <a id="3787" href="Function.Bundles.html#1723" class="Function Operator">_≈₁_</a> <a id="3792" href="Function.Bundles.html#1788" class="Field Operator">_≈₂_</a> <a id="3797" href="Function.Bundles.html#3586" class="Field">to</a>
<a id="3804" href="Function.Bundles.html#3763" class="Function">surjective</a> <a id="3815" class="Symbol">=</a> <a id="3817" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="3823" href="Function.Bundles.html#3651" class="Field">bijective</a>
<a id="3838" href="Function.Bundles.html#3838" class="Function">injection</a> <a id="3848" class="Symbol">:</a> <a id="3850" href="Function.Bundles.html#2415" class="Record">Injection</a>
<a id="3864" href="Function.Bundles.html#3838" class="Function">injection</a> <a id="3874" class="Symbol">=</a> <a id="3876" class="Keyword">record</a>
<a id="3889" class="Symbol">{</a> <a id="3891" href="Function.Bundles.html#2497" class="Field">cong</a> <a id="3901" class="Symbol">=</a> <a id="3903" href="Function.Bundles.html#3610" class="Field">cong</a>
<a id="3914" class="Symbol">;</a> <a id="3916" href="Function.Bundles.html#2540" class="Field">injective</a> <a id="3926" class="Symbol">=</a> <a id="3928" href="Function.Bundles.html#3691" class="Function">injective</a>
<a id="3944" class="Symbol">}</a>
<a id="3951" href="Function.Bundles.html#3951" class="Function">surjection</a> <a id="3962" class="Symbol">:</a> <a id="3964" href="Function.Bundles.html#2865" class="Record">Surjection</a>
<a id="3979" href="Function.Bundles.html#3951" class="Function">surjection</a> <a id="3990" class="Symbol">=</a> <a id="3992" class="Keyword">record</a>
<a id="4005" class="Symbol">{</a> <a id="4007" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="4018" class="Symbol">=</a> <a id="4020" href="Function.Bundles.html#3610" class="Field">cong</a>
<a id="4031" class="Symbol">;</a> <a id="4033" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="4044" class="Symbol">=</a> <a id="4046" href="Function.Bundles.html#3763" class="Function">surjective</a>
<a id="4063" class="Symbol">}</a>
<a id="4070" class="Keyword">open</a> <a id="4075" href="Function.Bundles.html#2415" class="Module">Injection</a> <a id="4086" href="Function.Bundles.html#3838" class="Function">injection</a> <a id="4097" class="Keyword">public</a> <a id="4104" class="Keyword">using</a> <a id="4110" class="Symbol">(</a><a id="4111" href="Function.Bundles.html#2726" class="Function">isInjection</a><a id="4122" class="Symbol">)</a>
<a id="4128" class="Keyword">open</a> <a id="4133" href="Function.Bundles.html#2865" class="Module">Surjection</a> <a id="4144" href="Function.Bundles.html#3951" class="Function">surjection</a> <a id="4155" class="Keyword">public</a> <a id="4162" class="Keyword">using</a> <a id="4168" class="Symbol">(</a><a id="4169" href="Function.Bundles.html#3175" class="Function">isSurjection</a><a id="4181" class="Symbol">;</a> <a id="4183" href="Function.Bundles.html#3402" class="Function">to⁻</a><a id="4186" class="Symbol">;</a> <a id="4189" href="Function.Structures.html#1842" class="Function">strictlySurjective</a><a id="4207" class="Symbol">)</a>
<a id="4214" href="Function.Bundles.html#4214" class="Function">isBijection</a> <a id="4226" class="Symbol">:</a> <a id="4228" href="Function.Structures.html#1970" class="Record">IsBijection</a> <a id="4240" href="Function.Bundles.html#3586" class="Field">to</a>
<a id="4247" href="Function.Bundles.html#4214" class="Function">isBijection</a> <a id="4259" class="Symbol">=</a> <a id="4261" class="Keyword">record</a>
<a id="4274" class="Symbol">{</a> <a id="4276" href="Function.Structures.html#2036" class="Field">isInjection</a> <a id="4288" class="Symbol">=</a> <a id="4290" href="Function.Bundles.html#2726" class="Function">isInjection</a>
<a id="4308" class="Symbol">;</a> <a id="4310" href="Function.Structures.html#2068" class="Field">surjective</a> <a id="4322" class="Symbol">=</a> <a id="4324" href="Function.Bundles.html#3763" class="Function">surjective</a>
<a id="4341" class="Symbol">}</a>
<a id="4348" class="Keyword">open</a> <a id="4353" href="Function.Structures.html#1970" class="Module">IsBijection</a> <a id="4365" href="Function.Bundles.html#4214" class="Function">isBijection</a> <a id="4377" class="Keyword">public</a> <a id="4384" class="Keyword">using</a> <a id="4390" class="Symbol">(</a><a id="4391" class="Keyword">module</a> <a id="4398" href="Function.Structures.html#1192" class="Module">Eq₁</a><a id="4401" class="Symbol">;</a> <a id="4403" class="Keyword">module</a> <a id="4410" href="Function.Structures.html#1336" class="Module">Eq₂</a><a id="4413" class="Symbol">)</a>
<a id="4417" class="Comment">------------------------------------------------------------------------</a>
<a id="4490" class="Comment">-- Bundles with two elements</a>
<a id="4520" class="Keyword">module</a> <a id="4527" href="Function.Bundles.html#4527" class="Module">_</a> <a id="4529" class="Symbol">(</a><a id="4530" href="Function.Bundles.html#4530" class="Bound">From</a> <a id="4535" class="Symbol">:</a> <a id="4537" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="4544" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="4546" href="Function.Bundles.html#1428" class="Generalizable">ℓ₁</a><a id="4548" class="Symbol">)</a> <a id="4550" class="Symbol">(</a><a id="4551" href="Function.Bundles.html#4551" class="Bound">To</a> <a id="4554" class="Symbol">:</a> <a id="4556" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="4563" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="4565" href="Function.Bundles.html#1431" class="Generalizable">ℓ₂</a><a id="4567" class="Symbol">)</a> <a id="4569" class="Keyword">where</a>
<a id="4578" class="Keyword">open</a> <a id="4583" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="4590" href="Function.Bundles.html#4530" class="Bound">From</a> <a id="4595" class="Keyword">using</a> <a id="4601" class="Symbol">()</a> <a id="4604" class="Keyword">renaming</a> <a id="4613" class="Symbol">(</a><a id="4614" href="Relation.Binary.Bundles.html#1143" class="Field">Carrier</a> <a id="4622" class="Symbol">to</a> <a id="4625" class="Field">A</a><a id="4626" class="Symbol">;</a> <a id="4628" href="Relation.Binary.Bundles.html#1169" class="Field Operator">_≈_</a> <a id="4632" class="Symbol">to</a> <a id="4635" class="Field Operator">_≈₁_</a><a id="4639" class="Symbol">)</a>
<a id="4643" class="Keyword">open</a> <a id="4648" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a> <a id="4655" href="Function.Bundles.html#4551" class="Bound">To</a> <a id="4660" class="Keyword">using</a> <a id="4666" class="Symbol">()</a> <a id="4669" class="Keyword">renaming</a> <a id="4678" class="Symbol">(</a><a id="4679" href="Relation.Binary.Bundles.html#1143" class="Field">Carrier</a> <a id="4687" class="Symbol">to</a> <a id="4690" class="Field">B</a><a id="4691" class="Symbol">;</a> <a id="4693" href="Relation.Binary.Bundles.html#1169" class="Field Operator">_≈_</a> <a id="4697" class="Symbol">to</a> <a id="4700" class="Field Operator">_≈₂_</a><a id="4704" class="Symbol">)</a>
<a id="4708" class="Keyword">open</a> <a id="4713" href="Function.Structures.html" class="Module">FunctionStructures</a> <a id="4732" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="4737" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a>
<a id="4745" class="Keyword">record</a> <a id="4752" href="Function.Bundles.html#4752" class="Record">Equivalence</a> <a id="4764" class="Symbol">:</a> <a id="4766" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="4770" class="Symbol">(</a><a id="4771" href="Function.Bundles.html#4544" class="Bound">a</a> <a id="4773" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4775" href="Function.Bundles.html#4563" class="Bound">b</a> <a id="4777" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4779" href="Function.Bundles.html#4546" class="Bound">ℓ₁</a> <a id="4782" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4784" href="Function.Bundles.html#4565" class="Bound">ℓ₂</a><a id="4786" class="Symbol">)</a> <a id="4788" class="Keyword">where</a>
<a id="4798" class="Keyword">field</a>
<a id="4810" href="Function.Bundles.html#4810" class="Field">to</a> <a id="4820" class="Symbol">:</a> <a id="4822" href="Function.Bundles.html#4625" class="Function">A</a> <a id="4824" class="Symbol"></a> <a id="4826" href="Function.Bundles.html#4690" class="Field">B</a>
<a id="4834" href="Function.Bundles.html#4834" class="Field">from</a> <a id="4844" class="Symbol">:</a> <a id="4846" href="Function.Bundles.html#4690" class="Field">B</a> <a id="4848" class="Symbol"></a> <a id="4850" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="4858" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="4868" class="Symbol">:</a> <a id="4870" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="4880" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="4885" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="4890" href="Function.Bundles.html#4810" class="Field">to</a>
<a id="4899" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="4909" class="Symbol">:</a> <a id="4911" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="4921" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="4926" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="4931" href="Function.Bundles.html#4834" class="Field">from</a>
<a id="4941" href="Function.Bundles.html#4941" class="Function">toFunction</a> <a id="4952" class="Symbol">:</a> <a id="4954" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="4959" href="Function.Bundles.html#4530" class="Bound">From</a> <a id="4964" href="Function.Bundles.html#4551" class="Bound">To</a>
<a id="4971" href="Function.Bundles.html#4941" class="Function">toFunction</a> <a id="4982" class="Symbol">=</a> <a id="4984" class="Keyword">record</a>
<a id="4997" class="Symbol">{</a> <a id="4999" href="Function.Bundles.html#2094" class="Field">to</a> <a id="5002" class="Symbol">=</a> <a id="5004" href="Function.Bundles.html#4810" class="Field">to</a>
<a id="5013" class="Symbol">;</a> <a id="5015" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="5020" class="Symbol">=</a> <a id="5022" href="Function.Bundles.html#4858" class="Field">to-cong</a>
<a id="5036" class="Symbol">}</a>
<a id="5043" class="Keyword">open</a> <a id="5048" href="Function.Bundles.html#2043" class="Module">Func</a> <a id="5053" href="Function.Bundles.html#4941" class="Function">toFunction</a> <a id="5064" class="Keyword">public</a>
<a id="5077" class="Keyword">using</a> <a id="5083" class="Symbol">(</a><a id="5084" class="Keyword">module</a> <a id="5091" href="Function.Structures.html#1192" class="Module">Eq₁</a><a id="5094" class="Symbol">;</a> <a id="5096" class="Keyword">module</a> <a id="5103" href="Function.Structures.html#1336" class="Module">Eq₂</a><a id="5106" class="Symbol">)</a>
<a id="5114" class="Keyword">renaming</a> <a id="5123" class="Symbol">(</a><a id="5124" href="Function.Bundles.html#2148" class="Function">isCongruent</a> <a id="5136" class="Symbol">to</a> <a id="5139" class="Function">to-isCongruent</a><a id="5153" class="Symbol">)</a>
<a id="5160" href="Function.Bundles.html#5160" class="Function">fromFunction</a> <a id="5173" class="Symbol">:</a> <a id="5175" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="5180" href="Function.Bundles.html#4551" class="Bound">To</a> <a id="5183" href="Function.Bundles.html#4530" class="Bound">From</a>
<a id="5192" href="Function.Bundles.html#5160" class="Function">fromFunction</a> <a id="5205" class="Symbol">=</a> <a id="5207" class="Keyword">record</a>
<a id="5220" class="Symbol">{</a> <a id="5222" href="Function.Bundles.html#2094" class="Field">to</a> <a id="5225" class="Symbol">=</a> <a id="5227" href="Function.Bundles.html#4834" class="Field">from</a>
<a id="5238" class="Symbol">;</a> <a id="5240" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="5245" class="Symbol">=</a> <a id="5247" href="Function.Bundles.html#4899" class="Field">from-cong</a>
<a id="5263" class="Symbol">}</a>
<a id="5270" class="Keyword">open</a> <a id="5275" href="Function.Bundles.html#2043" class="Module">Func</a> <a id="5280" href="Function.Bundles.html#5160" class="Function">fromFunction</a> <a id="5293" class="Keyword">public</a>
<a id="5306" class="Keyword">using</a> <a id="5312" class="Symbol">()</a>
<a id="5321" class="Keyword">renaming</a> <a id="5330" class="Symbol">(</a><a id="5331" href="Function.Bundles.html#2148" class="Function">isCongruent</a> <a id="5343" class="Symbol">to</a> <a id="5346" class="Function">from-isCongruent</a><a id="5362" class="Symbol">)</a>
<a id="5368" class="Keyword">record</a> <a id="5375" href="Function.Bundles.html#5375" class="Record">LeftInverse</a> <a id="5387" class="Symbol">:</a> <a id="5389" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="5393" class="Symbol">(</a><a id="5394" href="Function.Bundles.html#4544" class="Bound">a</a> <a id="5396" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5398" href="Function.Bundles.html#4563" class="Bound">b</a> <a id="5400" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5402" href="Function.Bundles.html#4546" class="Bound">ℓ₁</a> <a id="5405" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5407" href="Function.Bundles.html#4565" class="Bound">ℓ₂</a><a id="5409" class="Symbol">)</a> <a id="5411" class="Keyword">where</a>
<a id="5421" class="Keyword">field</a>
<a id="5433" href="Function.Bundles.html#5433" class="Field">to</a> <a id="5443" class="Symbol">:</a> <a id="5445" href="Function.Bundles.html#4625" class="Function">A</a> <a id="5447" class="Symbol"></a> <a id="5449" href="Function.Bundles.html#4690" class="Field">B</a>
<a id="5457" href="Function.Bundles.html#5457" class="Field">from</a> <a id="5467" class="Symbol">:</a> <a id="5469" href="Function.Bundles.html#4690" class="Field">B</a> <a id="5471" class="Symbol"></a> <a id="5473" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="5481" href="Function.Bundles.html#5481" class="Field">to-cong</a> <a id="5491" class="Symbol">:</a> <a id="5493" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="5503" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="5508" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="5513" href="Function.Bundles.html#5433" class="Field">to</a>
<a id="5522" href="Function.Bundles.html#5522" class="Field">from-cong</a> <a id="5532" class="Symbol">:</a> <a id="5534" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="5544" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="5549" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="5554" href="Function.Bundles.html#5457" class="Field">from</a>
<a id="5565" href="Function.Bundles.html#5565" class="Field">inverseˡ</a> <a id="5575" class="Symbol">:</a> <a id="5577" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="5586" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="5591" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="5596" href="Function.Bundles.html#5433" class="Field">to</a> <a id="5599" href="Function.Bundles.html#5457" class="Field">from</a>
<a id="5609" href="Function.Bundles.html#5609" class="Function">isCongruent</a> <a id="5621" class="Symbol">:</a> <a id="5623" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="5635" href="Function.Bundles.html#5433" class="Field">to</a>
<a id="5642" href="Function.Bundles.html#5609" class="Function">isCongruent</a> <a id="5654" class="Symbol">=</a> <a id="5656" class="Keyword">record</a>
<a id="5669" class="Symbol">{</a> <a id="5671" href="Function.Structures.html#1062" class="Field">cong</a> <a id="5686" class="Symbol">=</a> <a id="5688" href="Function.Bundles.html#5481" class="Field">to-cong</a>
<a id="5702" class="Symbol">;</a> <a id="5704" href="Function.Structures.html#1106" class="Field">isEquivalence₁</a> <a id="5719" class="Symbol">=</a> <a id="5721" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="5735" href="Function.Bundles.html#4530" class="Bound">From</a>
<a id="5746" class="Symbol">;</a> <a id="5748" href="Function.Structures.html#1146" class="Field">isEquivalence₂</a> <a id="5763" class="Symbol">=</a> <a id="5765" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="5779" href="Function.Bundles.html#4551" class="Bound">To</a>
<a id="5788" class="Symbol">}</a>
<a id="5795" href="Function.Bundles.html#5795" class="Function">isLeftInverse</a> <a id="5809" class="Symbol">:</a> <a id="5811" href="Function.Structures.html#2598" class="Record">IsLeftInverse</a> <a id="5825" href="Function.Bundles.html#5433" class="Field">to</a> <a id="5828" href="Function.Bundles.html#5457" class="Field">from</a>
<a id="5837" href="Function.Bundles.html#5795" class="Function">isLeftInverse</a> <a id="5851" class="Symbol">=</a> <a id="5853" class="Keyword">record</a>
<a id="5866" class="Symbol">{</a> <a id="5868" href="Function.Structures.html#2682" class="Field">isCongruent</a> <a id="5880" class="Symbol">=</a> <a id="5882" href="Function.Bundles.html#5609" class="Function">isCongruent</a>
<a id="5900" class="Symbol">;</a> <a id="5902" href="Function.Structures.html#2716" class="Field">from-cong</a> <a id="5914" class="Symbol">=</a> <a id="5916" href="Function.Bundles.html#5522" class="Field">from-cong</a>
<a id="5932" class="Symbol">;</a> <a id="5934" href="Function.Structures.html#2760" class="Field">inverseˡ</a> <a id="5946" class="Symbol">=</a> <a id="5948" href="Function.Bundles.html#5565" class="Field">inverseˡ</a>
<a id="5963" class="Symbol">}</a>
<a id="5970" class="Keyword">open</a> <a id="5975" href="Function.Structures.html#2598" class="Module">IsLeftInverse</a> <a id="5989" href="Function.Bundles.html#5795" class="Function">isLeftInverse</a> <a id="6003" class="Keyword">public</a>
<a id="6016" class="Keyword">using</a> <a id="6022" class="Symbol">(</a><a id="6023" class="Keyword">module</a> <a id="6030" href="Function.Structures.html#1192" class="Module">Eq₁</a><a id="6033" class="Symbol">;</a> <a id="6035" class="Keyword">module</a> <a id="6042" href="Function.Structures.html#1336" class="Module">Eq₂</a><a id="6045" class="Symbol">;</a> <a id="6047" href="Function.Structures.html#2875" class="Function">strictlyInverseˡ</a><a id="6063" class="Symbol">;</a> <a id="6065" href="Function.Structures.html#2968" class="Function">isSurjection</a><a id="6077" class="Symbol">)</a>
<a id="6084" href="Function.Bundles.html#6084" class="Function">equivalence</a> <a id="6096" class="Symbol">:</a> <a id="6098" href="Function.Bundles.html#4752" class="Record">Equivalence</a>
<a id="6114" href="Function.Bundles.html#6084" class="Function">equivalence</a> <a id="6126" class="Symbol">=</a> <a id="6128" class="Keyword">record</a>
<a id="6141" class="Symbol">{</a> <a id="6143" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="6153" class="Symbol">=</a> <a id="6155" href="Function.Bundles.html#5481" class="Field">to-cong</a>
<a id="6169" class="Symbol">;</a> <a id="6171" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="6181" class="Symbol">=</a> <a id="6183" href="Function.Bundles.html#5522" class="Field">from-cong</a>
<a id="6199" class="Symbol">}</a>
<a id="6206" href="Function.Bundles.html#6206" class="Function">isSplitSurjection</a> <a id="6224" class="Symbol">:</a> <a id="6226" href="Function.Structures.html#5174" class="Record">IsSplitSurjection</a> <a id="6244" href="Function.Bundles.html#5433" class="Field">to</a>
<a id="6251" href="Function.Bundles.html#6206" class="Function">isSplitSurjection</a> <a id="6269" class="Symbol">=</a> <a id="6271" class="Keyword">record</a>
<a id="6284" class="Symbol">{</a> <a id="6286" href="Function.Structures.html#5246" class="Field">from</a> <a id="6291" class="Symbol">=</a> <a id="6293" href="Function.Bundles.html#5457" class="Field">from</a>
<a id="6304" class="Symbol">;</a> <a id="6306" href="Function.Structures.html#5263" class="Field">isLeftInverse</a> <a id="6320" class="Symbol">=</a> <a id="6322" href="Function.Bundles.html#5795" class="Function">isLeftInverse</a>
<a id="6342" class="Symbol">}</a>
<a id="6349" href="Function.Bundles.html#6349" class="Function">surjection</a> <a id="6360" class="Symbol">:</a> <a id="6362" href="Function.Bundles.html#2865" class="Record">Surjection</a> <a id="6373" href="Function.Bundles.html#4530" class="Bound">From</a> <a id="6378" href="Function.Bundles.html#4551" class="Bound">To</a>
<a id="6385" href="Function.Bundles.html#6349" class="Function">surjection</a> <a id="6396" class="Symbol">=</a> <a id="6398" class="Keyword">record</a>
<a id="6411" class="Symbol">{</a> <a id="6413" href="Function.Bundles.html#2922" class="Field">to</a> <a id="6416" class="Symbol">=</a> <a id="6418" href="Function.Bundles.html#5433" class="Field">to</a>
<a id="6427" class="Symbol">;</a> <a id="6429" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="6434" class="Symbol">=</a> <a id="6436" href="Function.Bundles.html#5481" class="Field">to-cong</a>
<a id="6450" class="Symbol">;</a> <a id="6452" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="6463" class="Symbol">=</a> <a id="6465" class="Symbol">λ</a> <a id="6467" href="Function.Bundles.html#6467" class="Bound">y</a> <a id="6469" class="Symbol"></a> <a id="6471" href="Function.Bundles.html#5457" class="Field">from</a> <a id="6476" href="Function.Bundles.html#6467" class="Bound">y</a> <a id="6478" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="6480" href="Function.Bundles.html#5565" class="Field">inverseˡ</a>
<a id="6495" class="Symbol">}</a>
<a id="6502" class="Keyword">record</a> <a id="6509" href="Function.Bundles.html#6509" class="Record">RightInverse</a> <a id="6522" class="Symbol">:</a> <a id="6524" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="6528" class="Symbol">(</a><a id="6529" href="Function.Bundles.html#4544" class="Bound">a</a> <a id="6531" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="6533" href="Function.Bundles.html#4563" class="Bound">b</a> <a id="6535" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="6537" href="Function.Bundles.html#4546" class="Bound">ℓ₁</a> <a id="6540" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="6542" href="Function.Bundles.html#4565" class="Bound">ℓ₂</a><a id="6544" class="Symbol">)</a> <a id="6546" class="Keyword">where</a>
<a id="6556" class="Keyword">field</a>
<a id="6568" href="Function.Bundles.html#6568" class="Field">to</a> <a id="6578" class="Symbol">:</a> <a id="6580" href="Function.Bundles.html#4625" class="Function">A</a> <a id="6582" class="Symbol"></a> <a id="6584" href="Function.Bundles.html#4690" class="Field">B</a>
<a id="6592" href="Function.Bundles.html#6592" class="Field">from</a> <a id="6602" class="Symbol">:</a> <a id="6604" href="Function.Bundles.html#4690" class="Field">B</a> <a id="6606" class="Symbol"></a> <a id="6608" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="6616" href="Function.Bundles.html#6616" class="Field">to-cong</a> <a id="6626" class="Symbol">:</a> <a id="6628" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="6638" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="6643" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="6648" href="Function.Bundles.html#6568" class="Field">to</a>
<a id="6657" href="Function.Bundles.html#6657" class="Field">from-cong</a> <a id="6667" class="Symbol">:</a> <a id="6669" href="Function.Bundles.html#6592" class="Field">from</a> <a id="6674" href="Relation.Binary.Core.html#1577" class="Function Operator">Preserves</a> <a id="6684" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="6689" href="Relation.Binary.Core.html#1577" class="Function Operator"></a> <a id="6691" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a>
<a id="6702" href="Function.Bundles.html#6702" class="Field">inverseʳ</a> <a id="6712" class="Symbol">:</a> <a id="6714" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="6723" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="6728" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="6733" href="Function.Bundles.html#6568" class="Field">to</a> <a id="6736" href="Function.Bundles.html#6592" class="Field">from</a>
<a id="6746" href="Function.Bundles.html#6746" class="Function">isCongruent</a> <a id="6758" class="Symbol">:</a> <a id="6760" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="6772" href="Function.Bundles.html#6568" class="Field">to</a>
<a id="6779" href="Function.Bundles.html#6746" class="Function">isCongruent</a> <a id="6791" class="Symbol">=</a> <a id="6793" class="Keyword">record</a>
<a id="6806" class="Symbol">{</a> <a id="6808" href="Function.Structures.html#1062" class="Field">cong</a> <a id="6823" class="Symbol">=</a> <a id="6825" href="Function.Bundles.html#6616" class="Field">to-cong</a>
<a id="6839" class="Symbol">;</a> <a id="6841" href="Function.Structures.html#1106" class="Field">isEquivalence₁</a> <a id="6856" class="Symbol">=</a> <a id="6858" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="6872" href="Function.Bundles.html#4530" class="Bound">From</a>
<a id="6883" class="Symbol">;</a> <a id="6885" href="Function.Structures.html#1146" class="Field">isEquivalence₂</a> <a id="6900" class="Symbol">=</a> <a id="6902" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="6916" href="Function.Bundles.html#4551" class="Bound">To</a>
<a id="6925" class="Symbol">}</a>
<a id="6932" href="Function.Bundles.html#6932" class="Function">isRightInverse</a> <a id="6947" class="Symbol">:</a> <a id="6949" href="Function.Structures.html#3113" class="Record">IsRightInverse</a> <a id="6964" href="Function.Bundles.html#6568" class="Field">to</a> <a id="6967" href="Function.Bundles.html#6592" class="Field">from</a>
<a id="6976" href="Function.Bundles.html#6932" class="Function">isRightInverse</a> <a id="6991" class="Symbol">=</a> <a id="6993" class="Keyword">record</a>
<a id="7006" class="Symbol">{</a> <a id="7008" href="Function.Structures.html#3198" class="Field">isCongruent</a> <a id="7020" class="Symbol">=</a> <a id="7022" href="Function.Bundles.html#6746" class="Function">isCongruent</a>
<a id="7040" class="Symbol">;</a> <a id="7042" href="Function.Structures.html#3231" class="Field">from-cong</a> <a id="7054" class="Symbol">=</a> <a id="7056" href="Function.Bundles.html#6657" class="Field">from-cong</a>
<a id="7072" class="Symbol">;</a> <a id="7074" href="Function.Structures.html#3274" class="Field">inverseʳ</a> <a id="7086" class="Symbol">=</a> <a id="7088" href="Function.Bundles.html#6702" class="Field">inverseʳ</a>
<a id="7103" class="Symbol">}</a>
<a id="7110" class="Keyword">open</a> <a id="7115" href="Function.Structures.html#3113" class="Module">IsRightInverse</a> <a id="7130" href="Function.Bundles.html#6932" class="Function">isRightInverse</a> <a id="7145" class="Keyword">public</a>
<a id="7158" class="Keyword">using</a> <a id="7164" class="Symbol">(</a><a id="7165" class="Keyword">module</a> <a id="7172" href="Function.Structures.html#1192" class="Module">Eq₁</a><a id="7175" class="Symbol">;</a> <a id="7177" class="Keyword">module</a> <a id="7184" href="Function.Structures.html#1336" class="Module">Eq₂</a><a id="7187" class="Symbol">;</a> <a id="7189" href="Function.Structures.html#3388" class="Function">strictlyInverseʳ</a><a id="7205" class="Symbol">)</a>
<a id="7212" href="Function.Bundles.html#7212" class="Function">equivalence</a> <a id="7224" class="Symbol">:</a> <a id="7226" href="Function.Bundles.html#4752" class="Record">Equivalence</a>
<a id="7242" href="Function.Bundles.html#7212" class="Function">equivalence</a> <a id="7254" class="Symbol">=</a> <a id="7256" class="Keyword">record</a>
<a id="7269" class="Symbol">{</a> <a id="7271" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="7281" class="Symbol">=</a> <a id="7283" href="Function.Bundles.html#6616" class="Field">to-cong</a>
<a id="7297" class="Symbol">;</a> <a id="7299" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="7309" class="Symbol">=</a> <a id="7311" href="Function.Bundles.html#6657" class="Field">from-cong</a>
<a id="7327" class="Symbol">}</a>
<a id="7333" class="Keyword">record</a> <a id="7340" href="Function.Bundles.html#7340" class="Record">Inverse</a> <a id="7348" class="Symbol">:</a> <a id="7350" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="7354" class="Symbol">(</a><a id="7355" href="Function.Bundles.html#4544" class="Bound">a</a> <a id="7357" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="7359" href="Function.Bundles.html#4563" class="Bound">b</a> <a id="7361" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="7363" href="Function.Bundles.html#4546" class="Bound">ℓ₁</a> <a id="7366" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="7368" href="Function.Bundles.html#4565" class="Bound">ℓ₂</a><a id="7370" class="Symbol">)</a> <a id="7372" class="Keyword">where</a>
<a id="7382" class="Keyword">field</a>
<a id="7394" href="Function.Bundles.html#7394" class="Field">to</a> <a id="7404" class="Symbol">:</a> <a id="7406" href="Function.Bundles.html#4625" class="Function">A</a> <a id="7408" class="Symbol"></a> <a id="7410" href="Function.Bundles.html#4690" class="Field">B</a>
<a id="7418" href="Function.Bundles.html#7418" class="Field">from</a> <a id="7428" class="Symbol">:</a> <a id="7430" href="Function.Bundles.html#4690" class="Field">B</a> <a id="7432" class="Symbol"></a> <a id="7434" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="7442" href="Function.Bundles.html#7442" class="Field">to-cong</a> <a id="7452" class="Symbol">:</a> <a id="7454" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="7464" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="7469" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="7474" href="Function.Bundles.html#7394" class="Field">to</a>
<a id="7483" href="Function.Bundles.html#7483" class="Field">from-cong</a> <a id="7493" class="Symbol">:</a> <a id="7495" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="7505" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="7510" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="7515" href="Function.Bundles.html#7418" class="Field">from</a>
<a id="7526" href="Function.Bundles.html#7526" class="Field">inverse</a> <a id="7536" class="Symbol">:</a> <a id="7538" href="Function.Definitions.html#1256" class="Function">Inverseᵇ</a> <a id="7547" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="7552" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="7557" href="Function.Bundles.html#7394" class="Field">to</a> <a id="7560" href="Function.Bundles.html#7418" class="Field">from</a>
<a id="7570" href="Function.Bundles.html#7570" class="Function">inverseˡ</a> <a id="7579" class="Symbol">:</a> <a id="7581" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="7590" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="7595" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="7600" href="Function.Bundles.html#7394" class="Field">to</a> <a id="7603" href="Function.Bundles.html#7418" class="Field">from</a>
<a id="7612" href="Function.Bundles.html#7570" class="Function">inverseˡ</a> <a id="7621" class="Symbol">=</a> <a id="7623" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="7629" href="Function.Bundles.html#7526" class="Field">inverse</a>
<a id="7642" href="Function.Bundles.html#7642" class="Function">inverseʳ</a> <a id="7651" class="Symbol">:</a> <a id="7653" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="7662" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="7667" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="7672" href="Function.Bundles.html#7394" class="Field">to</a> <a id="7675" href="Function.Bundles.html#7418" class="Field">from</a>
<a id="7684" href="Function.Bundles.html#7642" class="Function">inverseʳ</a> <a id="7693" class="Symbol">=</a> <a id="7695" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="7701" href="Function.Bundles.html#7526" class="Field">inverse</a>
<a id="7714" href="Function.Bundles.html#7714" class="Function">leftInverse</a> <a id="7726" class="Symbol">:</a> <a id="7728" href="Function.Bundles.html#5375" class="Record">LeftInverse</a>
<a id="7744" href="Function.Bundles.html#7714" class="Function">leftInverse</a> <a id="7756" class="Symbol">=</a> <a id="7758" class="Keyword">record</a>
<a id="7771" class="Symbol">{</a> <a id="7773" href="Function.Bundles.html#5481" class="Field">to-cong</a> <a id="7783" class="Symbol">=</a> <a id="7785" href="Function.Bundles.html#7442" class="Field">to-cong</a>
<a id="7799" class="Symbol">;</a> <a id="7801" href="Function.Bundles.html#5522" class="Field">from-cong</a> <a id="7811" class="Symbol">=</a> <a id="7813" href="Function.Bundles.html#7483" class="Field">from-cong</a>
<a id="7829" class="Symbol">;</a> <a id="7831" href="Function.Bundles.html#5565" class="Field">inverseˡ</a> <a id="7841" class="Symbol">=</a> <a id="7843" href="Function.Bundles.html#7570" class="Function">inverseˡ</a>
<a id="7858" class="Symbol">}</a>
<a id="7865" href="Function.Bundles.html#7865" class="Function">rightInverse</a> <a id="7878" class="Symbol">:</a> <a id="7880" href="Function.Bundles.html#6509" class="Record">RightInverse</a>
<a id="7897" href="Function.Bundles.html#7865" class="Function">rightInverse</a> <a id="7910" class="Symbol">=</a> <a id="7912" class="Keyword">record</a>
<a id="7925" class="Symbol">{</a> <a id="7927" href="Function.Bundles.html#6616" class="Field">to-cong</a> <a id="7937" class="Symbol">=</a> <a id="7939" href="Function.Bundles.html#7442" class="Field">to-cong</a>
<a id="7953" class="Symbol">;</a> <a id="7955" href="Function.Bundles.html#6657" class="Field">from-cong</a> <a id="7965" class="Symbol">=</a> <a id="7967" href="Function.Bundles.html#7483" class="Field">from-cong</a>
<a id="7983" class="Symbol">;</a> <a id="7985" href="Function.Bundles.html#6702" class="Field">inverseʳ</a> <a id="7995" class="Symbol">=</a> <a id="7997" href="Function.Bundles.html#7642" class="Function">inverseʳ</a>
<a id="8012" class="Symbol">}</a>
<a id="8019" class="Keyword">open</a> <a id="8024" href="Function.Bundles.html#5375" class="Module">LeftInverse</a> <a id="8036" href="Function.Bundles.html#7714" class="Function">leftInverse</a> <a id="8050" class="Keyword">public</a> <a id="8057" class="Keyword">using</a> <a id="8063" class="Symbol">(</a><a id="8064" href="Function.Bundles.html#5795" class="Function">isLeftInverse</a><a id="8077" class="Symbol">;</a> <a id="8079" href="Function.Structures.html#2875" class="Function">strictlyInverseˡ</a><a id="8095" class="Symbol">)</a>
<a id="8101" class="Keyword">open</a> <a id="8106" href="Function.Bundles.html#6509" class="Module">RightInverse</a> <a id="8119" href="Function.Bundles.html#7865" class="Function">rightInverse</a> <a id="8132" class="Keyword">public</a> <a id="8139" class="Keyword">using</a> <a id="8145" class="Symbol">(</a><a id="8146" href="Function.Bundles.html#6932" class="Function">isRightInverse</a><a id="8160" class="Symbol">;</a> <a id="8162" href="Function.Structures.html#3388" class="Function">strictlyInverseʳ</a><a id="8178" class="Symbol">)</a>
<a id="8185" href="Function.Bundles.html#8185" class="Function">isInverse</a> <a id="8195" class="Symbol">:</a> <a id="8197" href="Function.Structures.html#3487" class="Record">IsInverse</a> <a id="8207" href="Function.Bundles.html#7394" class="Field">to</a> <a id="8210" href="Function.Bundles.html#7418" class="Field">from</a>
<a id="8219" href="Function.Bundles.html#8185" class="Function">isInverse</a> <a id="8229" class="Symbol">=</a> <a id="8231" class="Keyword">record</a>
<a id="8244" class="Symbol">{</a> <a id="8246" href="Function.Structures.html#3567" class="Field">isLeftInverse</a> <a id="8260" class="Symbol">=</a> <a id="8262" href="Function.Bundles.html#5795" class="Function">isLeftInverse</a>
<a id="8282" class="Symbol">;</a> <a id="8284" href="Function.Structures.html#3609" class="Field">inverseʳ</a> <a id="8298" class="Symbol">=</a> <a id="8300" href="Function.Bundles.html#7642" class="Function">inverseʳ</a>
<a id="8315" class="Symbol">}</a>
<a id="8322" class="Keyword">open</a> <a id="8327" href="Function.Structures.html#3487" class="Module">IsInverse</a> <a id="8337" href="Function.Bundles.html#8185" class="Function">isInverse</a> <a id="8347" class="Keyword">public</a> <a id="8354" class="Keyword">using</a> <a id="8360" class="Symbol">(</a><a id="8361" class="Keyword">module</a> <a id="8368" href="Function.Structures.html#1192" class="Module">Eq₁</a><a id="8371" class="Symbol">;</a> <a id="8373" class="Keyword">module</a> <a id="8380" href="Function.Structures.html#1336" class="Module">Eq₂</a><a id="8383" class="Symbol">)</a>
<a id="8387" class="Comment">------------------------------------------------------------------------</a>
<a id="8460" class="Comment">-- Bundles with three elements</a>
<a id="8494" class="Keyword">record</a> <a id="8501" href="Function.Bundles.html#8501" class="Record">BiEquivalence</a> <a id="8515" class="Symbol">:</a> <a id="8517" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="8521" class="Symbol">(</a><a id="8522" href="Function.Bundles.html#4544" class="Bound">a</a> <a id="8524" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8526" href="Function.Bundles.html#4563" class="Bound">b</a> <a id="8528" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8530" href="Function.Bundles.html#4546" class="Bound">ℓ₁</a> <a id="8533" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8535" href="Function.Bundles.html#4565" class="Bound">ℓ₂</a><a id="8537" class="Symbol">)</a> <a id="8539" class="Keyword">where</a>
<a id="8549" class="Keyword">field</a>
<a id="8561" href="Function.Bundles.html#8561" class="Field">to</a> <a id="8572" class="Symbol">:</a> <a id="8574" href="Function.Bundles.html#4625" class="Function">A</a> <a id="8576" class="Symbol"></a> <a id="8578" href="Function.Bundles.html#4690" class="Field">B</a>
<a id="8586" href="Function.Bundles.html#8586" class="Field">from₁</a> <a id="8597" class="Symbol">:</a> <a id="8599" href="Function.Bundles.html#4690" class="Field">B</a> <a id="8601" class="Symbol"></a> <a id="8603" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="8611" href="Function.Bundles.html#8611" class="Field">from₂</a> <a id="8622" class="Symbol">:</a> <a id="8624" href="Function.Bundles.html#4690" class="Field">B</a> <a id="8626" class="Symbol"></a> <a id="8628" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="8636" href="Function.Bundles.html#8636" class="Field">to-cong</a> <a id="8647" class="Symbol">:</a> <a id="8649" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="8659" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="8664" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="8669" href="Function.Bundles.html#8561" class="Field">to</a>
<a id="8678" href="Function.Bundles.html#8678" class="Field">from₁-cong</a> <a id="8689" class="Symbol">:</a> <a id="8691" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="8701" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="8706" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="8711" href="Function.Bundles.html#8586" class="Field">from₁</a>
<a id="8723" href="Function.Bundles.html#8723" class="Field">from₂-cong</a> <a id="8734" class="Symbol">:</a> <a id="8736" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="8746" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="8751" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="8756" href="Function.Bundles.html#8611" class="Field">from₂</a>
<a id="8766" class="Keyword">record</a> <a id="8773" href="Function.Bundles.html#8773" class="Record">BiInverse</a> <a id="8783" class="Symbol">:</a> <a id="8785" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="8789" class="Symbol">(</a><a id="8790" href="Function.Bundles.html#4544" class="Bound">a</a> <a id="8792" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8794" href="Function.Bundles.html#4563" class="Bound">b</a> <a id="8796" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8798" href="Function.Bundles.html#4546" class="Bound">ℓ₁</a> <a id="8801" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8803" href="Function.Bundles.html#4565" class="Bound">ℓ₂</a><a id="8805" class="Symbol">)</a> <a id="8807" class="Keyword">where</a>
<a id="8817" class="Keyword">field</a>
<a id="8829" href="Function.Bundles.html#8829" class="Field">to</a> <a id="8841" class="Symbol">:</a> <a id="8843" href="Function.Bundles.html#4625" class="Function">A</a> <a id="8845" class="Symbol"></a> <a id="8847" href="Function.Bundles.html#4690" class="Field">B</a>
<a id="8855" href="Function.Bundles.html#8855" class="Field">from₁</a> <a id="8867" class="Symbol">:</a> <a id="8869" href="Function.Bundles.html#4690" class="Field">B</a> <a id="8871" class="Symbol"></a> <a id="8873" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="8881" href="Function.Bundles.html#8881" class="Field">from₂</a> <a id="8893" class="Symbol">:</a> <a id="8895" href="Function.Bundles.html#4690" class="Field">B</a> <a id="8897" class="Symbol"></a> <a id="8899" href="Function.Bundles.html#4625" class="Function">A</a>
<a id="8907" href="Function.Bundles.html#8907" class="Field">to-cong</a> <a id="8919" class="Symbol">:</a> <a id="8921" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="8931" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="8936" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="8941" href="Function.Bundles.html#8829" class="Field">to</a>
<a id="8950" href="Function.Bundles.html#8950" class="Field">from₁-cong</a> <a id="8962" class="Symbol">:</a> <a id="8964" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="8974" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="8979" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="8984" href="Function.Bundles.html#8855" class="Field">from₁</a>
<a id="8996" href="Function.Bundles.html#8996" class="Field">from₂-cong</a> <a id="9008" class="Symbol">:</a> <a id="9010" href="Function.Definitions.html#765" class="Function">Congruent</a> <a id="9020" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="9025" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="9030" href="Function.Bundles.html#8881" class="Field">from₂</a>
<a id="9042" href="Function.Bundles.html#9042" class="Field">inverseˡ</a> <a id="9052" class="Symbol">:</a> <a id="9054" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="9063" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="9068" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="9073" href="Function.Bundles.html#8829" class="Field">to</a> <a id="9076" href="Function.Bundles.html#8855" class="Field">from₁</a>
<a id="9088" href="Function.Bundles.html#9088" class="Field">inverseʳ</a> <a id="9098" class="Symbol">:</a> <a id="9100" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="9109" href="Function.Bundles.html#4635" class="Function Operator">_≈₁_</a> <a id="9114" href="Function.Bundles.html#4700" class="Field Operator">_≈₂_</a> <a id="9119" href="Function.Bundles.html#8829" class="Field">to</a> <a id="9122" href="Function.Bundles.html#8881" class="Field">from₂</a>
<a id="9133" href="Function.Bundles.html#9133" class="Function">to-isCongruent</a> <a id="9148" class="Symbol">:</a> <a id="9150" href="Function.Structures.html#995" class="Record">IsCongruent</a> <a id="9162" href="Function.Bundles.html#8829" class="Field">to</a>
<a id="9169" href="Function.Bundles.html#9133" class="Function">to-isCongruent</a> <a id="9184" class="Symbol">=</a> <a id="9186" class="Keyword">record</a>
<a id="9199" class="Symbol">{</a> <a id="9201" href="Function.Structures.html#1062" class="Field">cong</a> <a id="9216" class="Symbol">=</a> <a id="9218" href="Function.Bundles.html#8907" class="Field">to-cong</a>
<a id="9232" class="Symbol">;</a> <a id="9234" href="Function.Structures.html#1106" class="Field">isEquivalence₁</a> <a id="9249" class="Symbol">=</a> <a id="9251" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="9265" href="Function.Bundles.html#4530" class="Bound">From</a>
<a id="9276" class="Symbol">;</a> <a id="9278" href="Function.Structures.html#1146" class="Field">isEquivalence₂</a> <a id="9293" class="Symbol">=</a> <a id="9295" href="Relation.Binary.Bundles.html#1203" class="Field">isEquivalence</a> <a id="9309" href="Function.Bundles.html#4551" class="Bound">To</a>
<a id="9318" class="Symbol">}</a>
<a id="9325" href="Function.Bundles.html#9325" class="Function">isBiInverse</a> <a id="9337" class="Symbol">:</a> <a id="9339" href="Function.Structures.html#4503" class="Record">IsBiInverse</a> <a id="9351" href="Function.Bundles.html#8829" class="Field">to</a> <a id="9354" href="Function.Bundles.html#8855" class="Field">from₁</a> <a id="9360" href="Function.Bundles.html#8881" class="Field">from₂</a>
<a id="9370" href="Function.Bundles.html#9325" class="Function">isBiInverse</a> <a id="9382" class="Symbol">=</a> <a id="9384" class="Keyword">record</a>
<a id="9397" class="Symbol">{</a> <a id="9399" href="Function.Structures.html#4604" class="Field">to-isCongruent</a> <a id="9414" class="Symbol">=</a> <a id="9416" href="Function.Bundles.html#9133" class="Function">to-isCongruent</a>
<a id="9437" class="Symbol">;</a> <a id="9439" href="Function.Structures.html#4640" class="Field">from₁-cong</a> <a id="9454" class="Symbol">=</a> <a id="9456" href="Function.Bundles.html#8950" class="Field">from₁-cong</a>
<a id="9473" class="Symbol">;</a> <a id="9475" href="Function.Structures.html#4687" class="Field">from₂-cong</a> <a id="9490" class="Symbol">=</a> <a id="9492" href="Function.Bundles.html#8996" class="Field">from₂-cong</a>
<a id="9509" class="Symbol">;</a> <a id="9511" href="Function.Structures.html#4734" class="Field">inverseˡ</a> <a id="9526" class="Symbol">=</a> <a id="9528" href="Function.Bundles.html#9042" class="Field">inverseˡ</a>
<a id="9543" class="Symbol">;</a> <a id="9545" href="Function.Structures.html#4783" class="Field">inverseʳ</a> <a id="9560" class="Symbol">=</a> <a id="9562" href="Function.Bundles.html#9088" class="Field">inverseʳ</a>
<a id="9577" class="Symbol">}</a>
<a id="9584" href="Function.Bundles.html#9584" class="Function">biEquivalence</a> <a id="9598" class="Symbol">:</a> <a id="9600" href="Function.Bundles.html#8501" class="Record">BiEquivalence</a>
<a id="9618" href="Function.Bundles.html#9584" class="Function">biEquivalence</a> <a id="9632" class="Symbol">=</a> <a id="9634" class="Keyword">record</a>
<a id="9647" class="Symbol">{</a> <a id="9649" href="Function.Bundles.html#8636" class="Field">to-cong</a> <a id="9660" class="Symbol">=</a> <a id="9662" href="Function.Bundles.html#8907" class="Field">to-cong</a>
<a id="9676" class="Symbol">;</a> <a id="9678" href="Function.Bundles.html#8678" class="Field">from₁-cong</a> <a id="9689" class="Symbol">=</a> <a id="9691" href="Function.Bundles.html#8950" class="Field">from₁-cong</a>
<a id="9708" class="Symbol">;</a> <a id="9710" href="Function.Bundles.html#8723" class="Field">from₂-cong</a> <a id="9721" class="Symbol">=</a> <a id="9723" href="Function.Bundles.html#8996" class="Field">from₂-cong</a>
<a id="9740" class="Symbol">}</a>
<a id="9743" class="Comment">------------------------------------------------------------------------</a>
<a id="9816" class="Comment">-- Other</a>
<a id="9828" class="Comment">-- A left inverse is also known as a “split surjection”.</a>
<a id="9887" class="Comment">--</a>
<a id="9892" class="Comment">-- As the name implies, a split surjection is a special kind of</a>
<a id="9958" class="Comment">-- surjection where the witness generated in the domain in the</a>
<a id="10023" class="Comment">-- function for elements `x₁` and `x₂` are equal if `x₁ ≈ x₂` .</a>
<a id="10089" class="Comment">--</a>
<a id="10094" class="Comment">-- The difference is the `from-cong` law --- generally, the section</a>
<a id="10164" class="Comment">-- (called `Surjection.to⁻` or `SplitSurjection.from`) of a surjection</a>
<a id="10237" class="Comment">-- need not respect equality, whereas it must in a split surjection.</a>
<a id="10308" class="Comment">--</a>
<a id="10313" class="Comment">-- The two notions coincide when the equivalence relation on `B` is</a>
<a id="10383" class="Comment">-- propositional equality (because all functions respect propositional</a>
<a id="10456" class="Comment">-- equality).</a>
<a id="10472" class="Comment">--</a>
<a id="10477" class="Comment">-- For further background on (split) surjections, one may consult any</a>
<a id="10549" class="Comment">-- general mathematical references which work without the principle</a>
<a id="10619" class="Comment">-- of choice. For example:</a>
<a id="10648" class="Comment">--</a>
<a id="10653" class="Comment">-- https://ncatlab.org/nlab/show/split+epimorphism.</a>
<a id="10709" class="Comment">--</a>
<a id="10714" class="Comment">-- The connection to set-theoretic notions with the same names is</a>
<a id="10782" class="Comment">-- justified by the setoid type theory/homotopy type theory</a>
<a id="10844" class="Comment">-- observation/definition that (∃x : A. P) = ∥ Σx : A. P ∥ --- i.e.,</a>
<a id="10915" class="Comment">-- we can read set-theoretic ∃ as squashed/propositionally truncated Σ.</a>
<a id="10989" class="Comment">--</a>
<a id="10994" class="Comment">-- We see working with setoids as working in the MLTT model of a setoid</a>
<a id="11068" class="Comment">-- type theory, in which ∥ X ∥ is interpreted as the setoid with carrier</a>
<a id="11143" class="Comment">-- set X and the equivalence relation that relates all elements.</a>
<a id="11210" class="Comment">-- All maps into ∥ X ∥ respect equality, so in the idiomatic definitions</a>
<a id="11285" class="Comment">-- here, we drop the corresponding trivial `cong` field completely.</a>
<a id="11356" href="Function.Bundles.html#11356" class="Function">SplitSurjection</a> <a id="11372" class="Symbol">:</a> <a id="11374" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11378" class="Symbol">_</a>
<a id="11382" href="Function.Bundles.html#11356" class="Function">SplitSurjection</a> <a id="11398" class="Symbol">=</a> <a id="11400" href="Function.Bundles.html#5375" class="Record">LeftInverse</a>
<a id="11415" class="Keyword">module</a> <a id="11422" href="Function.Bundles.html#11422" class="Module">SplitSurjection</a> <a id="11438" class="Symbol">(</a><a id="11439" href="Function.Bundles.html#11439" class="Bound">splitSurjection</a> <a id="11455" class="Symbol">:</a> <a id="11457" href="Function.Bundles.html#11356" class="Function">SplitSurjection</a><a id="11472" class="Symbol">)</a> <a id="11474" class="Symbol">=</a>
<a id="11480" href="Function.Bundles.html#5375" class="Module">LeftInverse</a> <a id="11492" href="Function.Bundles.html#11439" class="Bound">splitSurjection</a>
<a id="11509" class="Comment">------------------------------------------------------------------------</a>
<a id="11582" class="Comment">-- Bundles specialised for propositional equality</a>
<a id="11632" class="Comment">------------------------------------------------------------------------</a>
<a id="11706" class="Keyword">infix</a> <a id="11712" class="Number">3</a> <a id="11714" href="Function.Bundles.html#11751" class="Function Operator">_⟶_</a> <a id="11718" href="Function.Bundles.html#11819" class="Function Operator">_↣_</a> <a id="11722" href="Function.Bundles.html#11892" class="Function Operator">_↠_</a> <a id="11726" href="Function.Bundles.html#11966" class="Function Operator">_⤖_</a> <a id="11730" href="Function.Bundles.html#12039" class="Function Operator">_⇔_</a> <a id="11734" href="Function.Bundles.html#12114" class="Function Operator">_↩_</a> <a id="11738" href="Function.Bundles.html#12189" class="Function Operator">_↪_</a> <a id="11742" href="Function.Bundles.html#12265" class="Function Operator">_↩↪_</a> <a id="11747" href="Function.Bundles.html#12340" class="Function Operator">_↔_</a>
<a id="_⟶_"></a><a id="11751" href="Function.Bundles.html#11751" class="Function Operator">_⟶_</a> <a id="11755" class="Symbol">:</a> <a id="11757" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11761" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="11763" class="Symbol"></a> <a id="11765" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11769" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="11771" class="Symbol"></a> <a id="11773" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11777" class="Symbol">_</a>
<a id="11779" href="Function.Bundles.html#11779" class="Bound">A</a> <a id="11781" href="Function.Bundles.html#11751" class="Function Operator"></a> <a id="11783" href="Function.Bundles.html#11783" class="Bound">B</a> <a id="11785" class="Symbol">=</a> <a id="11787" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="11792" class="Symbol">(</a><a id="11793" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="11802" href="Function.Bundles.html#11779" class="Bound">A</a><a id="11803" class="Symbol">)</a> <a id="11805" class="Symbol">(</a><a id="11806" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="11815" href="Function.Bundles.html#11783" class="Bound">B</a><a id="11816" class="Symbol">)</a>
<a id="_↣_"></a><a id="11819" href="Function.Bundles.html#11819" class="Function Operator">_↣_</a> <a id="11823" class="Symbol">:</a> <a id="11825" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11829" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="11831" class="Symbol"></a> <a id="11833" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11837" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="11839" class="Symbol"></a> <a id="11841" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11845" class="Symbol">_</a>
<a id="11847" href="Function.Bundles.html#11847" class="Bound">A</a> <a id="11849" href="Function.Bundles.html#11819" class="Function Operator"></a> <a id="11851" href="Function.Bundles.html#11851" class="Bound">B</a> <a id="11853" class="Symbol">=</a> <a id="11855" href="Function.Bundles.html#2415" class="Record">Injection</a> <a id="11865" class="Symbol">(</a><a id="11866" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="11875" href="Function.Bundles.html#11847" class="Bound">A</a><a id="11876" class="Symbol">)</a> <a id="11878" class="Symbol">(</a><a id="11879" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="11888" href="Function.Bundles.html#11851" class="Bound">B</a><a id="11889" class="Symbol">)</a>
<a id="_↠_"></a><a id="11892" href="Function.Bundles.html#11892" class="Function Operator">_↠_</a> <a id="11896" class="Symbol">:</a> <a id="11898" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11902" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="11904" class="Symbol"></a> <a id="11906" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11910" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="11912" class="Symbol"></a> <a id="11914" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11918" class="Symbol">_</a>
<a id="11920" href="Function.Bundles.html#11920" class="Bound">A</a> <a id="11922" href="Function.Bundles.html#11892" class="Function Operator"></a> <a id="11924" href="Function.Bundles.html#11924" class="Bound">B</a> <a id="11926" class="Symbol">=</a> <a id="11928" href="Function.Bundles.html#2865" class="Record">Surjection</a> <a id="11939" class="Symbol">(</a><a id="11940" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="11949" href="Function.Bundles.html#11920" class="Bound">A</a><a id="11950" class="Symbol">)</a> <a id="11952" class="Symbol">(</a><a id="11953" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="11962" href="Function.Bundles.html#11924" class="Bound">B</a><a id="11963" class="Symbol">)</a>
<a id="_⤖_"></a><a id="11966" href="Function.Bundles.html#11966" class="Function Operator">_⤖_</a> <a id="11970" class="Symbol">:</a> <a id="11972" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11976" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="11978" class="Symbol"></a> <a id="11980" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11984" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="11986" class="Symbol"></a> <a id="11988" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="11992" class="Symbol">_</a>
<a id="11994" href="Function.Bundles.html#11994" class="Bound">A</a> <a id="11996" href="Function.Bundles.html#11966" class="Function Operator"></a> <a id="11998" href="Function.Bundles.html#11998" class="Bound">B</a> <a id="12000" class="Symbol">=</a> <a id="12002" href="Function.Bundles.html#3530" class="Record">Bijection</a> <a id="12012" class="Symbol">(</a><a id="12013" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12022" href="Function.Bundles.html#11994" class="Bound">A</a><a id="12023" class="Symbol">)</a> <a id="12025" class="Symbol">(</a><a id="12026" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12035" href="Function.Bundles.html#11998" class="Bound">B</a><a id="12036" class="Symbol">)</a>
<a id="_⇔_"></a><a id="12039" href="Function.Bundles.html#12039" class="Function Operator">_⇔_</a> <a id="12043" class="Symbol">:</a> <a id="12045" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12049" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="12051" class="Symbol"></a> <a id="12053" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12057" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="12059" class="Symbol"></a> <a id="12061" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12065" class="Symbol">_</a>
<a id="12067" href="Function.Bundles.html#12067" class="Bound">A</a> <a id="12069" href="Function.Bundles.html#12039" class="Function Operator"></a> <a id="12071" href="Function.Bundles.html#12071" class="Bound">B</a> <a id="12073" class="Symbol">=</a> <a id="12075" href="Function.Bundles.html#4752" class="Record">Equivalence</a> <a id="12087" class="Symbol">(</a><a id="12088" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12097" href="Function.Bundles.html#12067" class="Bound">A</a><a id="12098" class="Symbol">)</a> <a id="12100" class="Symbol">(</a><a id="12101" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12110" href="Function.Bundles.html#12071" class="Bound">B</a><a id="12111" class="Symbol">)</a>
<a id="_↩_"></a><a id="12114" href="Function.Bundles.html#12114" class="Function Operator">_↩_</a> <a id="12118" class="Symbol">:</a> <a id="12120" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12124" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="12126" class="Symbol"></a> <a id="12128" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12132" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="12134" class="Symbol"></a> <a id="12136" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12140" class="Symbol">_</a>
<a id="12142" href="Function.Bundles.html#12142" class="Bound">A</a> <a id="12144" href="Function.Bundles.html#12114" class="Function Operator"></a> <a id="12146" href="Function.Bundles.html#12146" class="Bound">B</a> <a id="12148" class="Symbol">=</a> <a id="12150" href="Function.Bundles.html#5375" class="Record">LeftInverse</a> <a id="12162" class="Symbol">(</a><a id="12163" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12172" href="Function.Bundles.html#12142" class="Bound">A</a><a id="12173" class="Symbol">)</a> <a id="12175" class="Symbol">(</a><a id="12176" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12185" href="Function.Bundles.html#12146" class="Bound">B</a><a id="12186" class="Symbol">)</a>
<a id="_↪_"></a><a id="12189" href="Function.Bundles.html#12189" class="Function Operator">_↪_</a> <a id="12193" class="Symbol">:</a> <a id="12195" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12199" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="12201" class="Symbol"></a> <a id="12203" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12207" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="12209" class="Symbol"></a> <a id="12211" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12215" class="Symbol">_</a>
<a id="12217" href="Function.Bundles.html#12217" class="Bound">A</a> <a id="12219" href="Function.Bundles.html#12189" class="Function Operator"></a> <a id="12221" href="Function.Bundles.html#12221" class="Bound">B</a> <a id="12223" class="Symbol">=</a> <a id="12225" href="Function.Bundles.html#6509" class="Record">RightInverse</a> <a id="12238" class="Symbol">(</a><a id="12239" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12248" href="Function.Bundles.html#12217" class="Bound">A</a><a id="12249" class="Symbol">)</a> <a id="12251" class="Symbol">(</a><a id="12252" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12261" href="Function.Bundles.html#12221" class="Bound">B</a><a id="12262" class="Symbol">)</a>
<a id="_↩↪_"></a><a id="12265" href="Function.Bundles.html#12265" class="Function Operator">_↩↪_</a> <a id="12270" class="Symbol">:</a> <a id="12272" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12276" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="12278" class="Symbol"></a> <a id="12280" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12284" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="12286" class="Symbol"></a> <a id="12288" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12292" class="Symbol">_</a>
<a id="12294" href="Function.Bundles.html#12294" class="Bound">A</a> <a id="12296" href="Function.Bundles.html#12265" class="Function Operator">↩↪</a> <a id="12299" href="Function.Bundles.html#12299" class="Bound">B</a> <a id="12301" class="Symbol">=</a> <a id="12303" href="Function.Bundles.html#8773" class="Record">BiInverse</a> <a id="12313" class="Symbol">(</a><a id="12314" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12323" href="Function.Bundles.html#12294" class="Bound">A</a><a id="12324" class="Symbol">)</a> <a id="12326" class="Symbol">(</a><a id="12327" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12336" href="Function.Bundles.html#12299" class="Bound">B</a><a id="12337" class="Symbol">)</a>
<a id="_↔_"></a><a id="12340" href="Function.Bundles.html#12340" class="Function Operator">_↔_</a> <a id="12344" class="Symbol">:</a> <a id="12346" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12350" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="12352" class="Symbol"></a> <a id="12354" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12358" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="12360" class="Symbol"></a> <a id="12362" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12366" class="Symbol">_</a>
<a id="12368" href="Function.Bundles.html#12368" class="Bound">A</a> <a id="12370" href="Function.Bundles.html#12340" class="Function Operator"></a> <a id="12372" href="Function.Bundles.html#12372" class="Bound">B</a> <a id="12374" class="Symbol">=</a> <a id="12376" href="Function.Bundles.html#7340" class="Record">Inverse</a> <a id="12384" class="Symbol">(</a><a id="12385" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12394" href="Function.Bundles.html#12368" class="Bound">A</a><a id="12395" class="Symbol">)</a> <a id="12397" class="Symbol">(</a><a id="12398" href="Relation.Binary.PropositionalEquality.Properties.html#5700" class="Function">≡.setoid</a> <a id="12407" href="Function.Bundles.html#12372" class="Bound">B</a><a id="12408" class="Symbol">)</a>
<a id="12411" class="Comment">-- We now define some constructors for the above that</a>
<a id="12465" class="Comment">-- automatically provide the required congruency proofs.</a>
<a id="12523" class="Keyword">module</a> <a id="12530" href="Function.Bundles.html#12530" class="Module">_</a> <a id="12532" class="Symbol">{</a><a id="12533" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12535" class="Symbol">:</a> <a id="12537" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12541" href="Function.Bundles.html#1424" class="Generalizable">a</a><a id="12542" class="Symbol">}</a> <a id="12544" class="Symbol">{</a><a id="12545" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="12547" class="Symbol">:</a> <a id="12549" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="12553" href="Function.Bundles.html#1426" class="Generalizable">b</a><a id="12554" class="Symbol">}</a> <a id="12556" class="Keyword">where</a>
<a id="12565" href="Function.Bundles.html#12565" class="Function">mk⟶</a> <a id="12569" class="Symbol">:</a> <a id="12571" class="Symbol">(</a><a id="12572" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12574" class="Symbol"></a> <a id="12576" href="Function.Bundles.html#12545" class="Bound">B</a><a id="12577" class="Symbol">)</a> <a id="12579" class="Symbol"></a> <a id="12581" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12583" href="Function.Bundles.html#11751" class="Function Operator"></a> <a id="12585" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="12589" href="Function.Bundles.html#12565" class="Function">mk⟶</a> <a id="12593" href="Function.Bundles.html#12593" class="Bound">to</a> <a id="12596" class="Symbol">=</a> <a id="12598" class="Keyword">record</a>
<a id="12609" class="Symbol">{</a> <a id="12611" href="Function.Bundles.html#2094" class="Field">to</a> <a id="12621" class="Symbol">=</a> <a id="12623" href="Function.Bundles.html#12593" class="Bound">to</a>
<a id="12630" class="Symbol">;</a> <a id="12632" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="12642" class="Symbol">=</a> <a id="12644" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="12651" href="Function.Bundles.html#12593" class="Bound">to</a>
<a id="12658" class="Symbol">}</a>
<a id="12663" href="Function.Bundles.html#12663" class="Function">mk↣</a> <a id="12667" class="Symbol">:</a> <a id="12669" class="Symbol"></a> <a id="12671" class="Symbol">{</a><a id="12672" href="Function.Bundles.html#12672" class="Bound">to</a> <a id="12675" class="Symbol">:</a> <a id="12677" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12679" class="Symbol"></a> <a id="12681" href="Function.Bundles.html#12545" class="Bound">B</a><a id="12682" class="Symbol">}</a> <a id="12684" class="Symbol"></a> <a id="12686" href="Function.Definitions.html#842" class="Function">Injective</a> <a id="12696" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="12700" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="12704" href="Function.Bundles.html#12672" class="Bound">to</a> <a id="12707" class="Symbol"></a> <a id="12709" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12711" href="Function.Bundles.html#11819" class="Function Operator"></a> <a id="12713" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="12717" href="Function.Bundles.html#12663" class="Function">mk↣</a> <a id="12721" class="Symbol">{</a><a id="12722" href="Function.Bundles.html#12722" class="Bound">to</a><a id="12724" class="Symbol">}</a> <a id="12726" href="Function.Bundles.html#12726" class="Bound">inj</a> <a id="12730" class="Symbol">=</a> <a id="12732" class="Keyword">record</a>
<a id="12743" class="Symbol">{</a> <a id="12745" href="Function.Bundles.html#2471" class="Field">to</a> <a id="12756" class="Symbol">=</a> <a id="12758" href="Function.Bundles.html#12722" class="Bound">to</a>
<a id="12765" class="Symbol">;</a> <a id="12767" href="Function.Bundles.html#2497" class="Field">cong</a> <a id="12777" class="Symbol">=</a> <a id="12779" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="12786" href="Function.Bundles.html#12722" class="Bound">to</a>
<a id="12793" class="Symbol">;</a> <a id="12795" href="Function.Bundles.html#2540" class="Field">injective</a> <a id="12805" class="Symbol">=</a> <a id="12807" href="Function.Bundles.html#12726" class="Bound">inj</a>
<a id="12815" class="Symbol">}</a>
<a id="12820" href="Function.Bundles.html#12820" class="Function">mk↠</a> <a id="12824" class="Symbol">:</a> <a id="12826" class="Symbol"></a> <a id="12828" class="Symbol">{</a><a id="12829" href="Function.Bundles.html#12829" class="Bound">to</a> <a id="12832" class="Symbol">:</a> <a id="12834" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12836" class="Symbol"></a> <a id="12838" href="Function.Bundles.html#12545" class="Bound">B</a><a id="12839" class="Symbol">}</a> <a id="12841" class="Symbol"></a> <a id="12843" href="Function.Definitions.html#919" class="Function">Surjective</a> <a id="12854" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="12858" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="12862" href="Function.Bundles.html#12829" class="Bound">to</a> <a id="12865" class="Symbol"></a> <a id="12867" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12869" href="Function.Bundles.html#11892" class="Function Operator"></a> <a id="12871" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="12875" href="Function.Bundles.html#12820" class="Function">mk↠</a> <a id="12879" class="Symbol">{</a><a id="12880" href="Function.Bundles.html#12880" class="Bound">to</a><a id="12882" class="Symbol">}</a> <a id="12884" href="Function.Bundles.html#12884" class="Bound">surj</a> <a id="12889" class="Symbol">=</a> <a id="12891" class="Keyword">record</a>
<a id="12902" class="Symbol">{</a> <a id="12904" href="Function.Bundles.html#2922" class="Field">to</a> <a id="12915" class="Symbol">=</a> <a id="12917" href="Function.Bundles.html#12880" class="Bound">to</a>
<a id="12924" class="Symbol">;</a> <a id="12926" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="12937" class="Symbol">=</a> <a id="12939" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="12946" href="Function.Bundles.html#12880" class="Bound">to</a>
<a id="12953" class="Symbol">;</a> <a id="12955" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="12966" class="Symbol">=</a> <a id="12968" href="Function.Bundles.html#12884" class="Bound">surj</a>
<a id="12977" class="Symbol">}</a>
<a id="12982" href="Function.Bundles.html#12982" class="Function">mk⤖</a> <a id="12986" class="Symbol">:</a> <a id="12988" class="Symbol"></a> <a id="12990" class="Symbol">{</a><a id="12991" href="Function.Bundles.html#12991" class="Bound">to</a> <a id="12994" class="Symbol">:</a> <a id="12996" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="12998" class="Symbol"></a> <a id="13000" href="Function.Bundles.html#12545" class="Bound">B</a><a id="13001" class="Symbol">}</a> <a id="13003" class="Symbol"></a> <a id="13005" href="Function.Definitions.html#1008" class="Function">Bijective</a> <a id="13015" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13019" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13023" href="Function.Bundles.html#12991" class="Bound">to</a> <a id="13026" class="Symbol"></a> <a id="13028" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13030" href="Function.Bundles.html#11966" class="Function Operator"></a> <a id="13032" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="13036" href="Function.Bundles.html#12982" class="Function">mk⤖</a> <a id="13040" class="Symbol">{</a><a id="13041" href="Function.Bundles.html#13041" class="Bound">to</a><a id="13043" class="Symbol">}</a> <a id="13045" href="Function.Bundles.html#13045" class="Bound">bij</a> <a id="13049" class="Symbol">=</a> <a id="13051" class="Keyword">record</a>
<a id="13062" class="Symbol">{</a> <a id="13064" href="Function.Bundles.html#3586" class="Field">to</a> <a id="13074" class="Symbol">=</a> <a id="13076" href="Function.Bundles.html#13041" class="Bound">to</a>
<a id="13083" class="Symbol">;</a> <a id="13085" href="Function.Bundles.html#3610" class="Field">cong</a> <a id="13095" class="Symbol">=</a> <a id="13097" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13104" href="Function.Bundles.html#13041" class="Bound">to</a>
<a id="13111" class="Symbol">;</a> <a id="13113" href="Function.Bundles.html#3651" class="Field">bijective</a> <a id="13123" class="Symbol">=</a> <a id="13125" href="Function.Bundles.html#13045" class="Bound">bij</a>
<a id="13133" class="Symbol">}</a>
<a id="13138" href="Function.Bundles.html#13138" class="Function">mk⇔</a> <a id="13142" class="Symbol">:</a> <a id="13144" class="Symbol"></a> <a id="13146" class="Symbol">(</a><a id="13147" href="Function.Bundles.html#13147" class="Bound">to</a> <a id="13150" class="Symbol">:</a> <a id="13152" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13154" class="Symbol"></a> <a id="13156" href="Function.Bundles.html#12545" class="Bound">B</a><a id="13157" class="Symbol">)</a> <a id="13159" class="Symbol">(</a><a id="13160" href="Function.Bundles.html#13160" class="Bound">from</a> <a id="13165" class="Symbol">:</a> <a id="13167" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="13169" class="Symbol"></a> <a id="13171" href="Function.Bundles.html#12533" class="Bound">A</a><a id="13172" class="Symbol">)</a> <a id="13174" class="Symbol"></a> <a id="13176" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13178" href="Function.Bundles.html#12039" class="Function Operator"></a> <a id="13180" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="13184" href="Function.Bundles.html#13138" class="Function">mk⇔</a> <a id="13188" href="Function.Bundles.html#13188" class="Bound">to</a> <a id="13191" href="Function.Bundles.html#13191" class="Bound">from</a> <a id="13196" class="Symbol">=</a> <a id="13198" class="Keyword">record</a>
<a id="13209" class="Symbol">{</a> <a id="13211" href="Function.Bundles.html#4810" class="Field">to</a> <a id="13221" class="Symbol">=</a> <a id="13223" href="Function.Bundles.html#13188" class="Bound">to</a>
<a id="13230" class="Symbol">;</a> <a id="13232" href="Function.Bundles.html#4834" class="Field">from</a> <a id="13242" class="Symbol">=</a> <a id="13244" href="Function.Bundles.html#13191" class="Bound">from</a>
<a id="13253" class="Symbol">;</a> <a id="13255" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="13265" class="Symbol">=</a> <a id="13267" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13274" href="Function.Bundles.html#13188" class="Bound">to</a>
<a id="13281" class="Symbol">;</a> <a id="13283" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="13293" class="Symbol">=</a> <a id="13295" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13302" href="Function.Bundles.html#13191" class="Bound">from</a>
<a id="13311" class="Symbol">}</a>
<a id="13316" href="Function.Bundles.html#13316" class="Function">mk↩</a> <a id="13320" class="Symbol">:</a> <a id="13322" class="Symbol"></a> <a id="13324" class="Symbol">{</a><a id="13325" href="Function.Bundles.html#13325" class="Bound">to</a> <a id="13328" class="Symbol">:</a> <a id="13330" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13332" class="Symbol"></a> <a id="13334" href="Function.Bundles.html#12545" class="Bound">B</a><a id="13335" class="Symbol">}</a> <a id="13337" class="Symbol">{</a><a id="13338" href="Function.Bundles.html#13338" class="Bound">from</a> <a id="13343" class="Symbol">:</a> <a id="13345" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="13347" class="Symbol"></a> <a id="13349" href="Function.Bundles.html#12533" class="Bound">A</a><a id="13350" class="Symbol">}</a> <a id="13352" class="Symbol"></a> <a id="13354" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="13363" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13367" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13371" href="Function.Bundles.html#13325" class="Bound">to</a> <a id="13374" href="Function.Bundles.html#13338" class="Bound">from</a> <a id="13379" class="Symbol"></a> <a id="13381" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13383" href="Function.Bundles.html#12114" class="Function Operator"></a> <a id="13385" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="13389" href="Function.Bundles.html#13316" class="Function">mk↩</a> <a id="13393" class="Symbol">{</a><a id="13394" href="Function.Bundles.html#13394" class="Bound">to</a><a id="13396" class="Symbol">}</a> <a id="13398" class="Symbol">{</a><a id="13399" href="Function.Bundles.html#13399" class="Bound">from</a><a id="13403" class="Symbol">}</a> <a id="13405" href="Function.Bundles.html#13405" class="Bound">invˡ</a> <a id="13410" class="Symbol">=</a> <a id="13412" class="Keyword">record</a>
<a id="13423" class="Symbol">{</a> <a id="13425" href="Function.Bundles.html#5433" class="Field">to</a> <a id="13435" class="Symbol">=</a> <a id="13437" href="Function.Bundles.html#13394" class="Bound">to</a>
<a id="13444" class="Symbol">;</a> <a id="13446" href="Function.Bundles.html#5457" class="Field">from</a> <a id="13456" class="Symbol">=</a> <a id="13458" href="Function.Bundles.html#13399" class="Bound">from</a>
<a id="13467" class="Symbol">;</a> <a id="13469" href="Function.Bundles.html#5481" class="Field">to-cong</a> <a id="13479" class="Symbol">=</a> <a id="13481" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13488" href="Function.Bundles.html#13394" class="Bound">to</a>
<a id="13495" class="Symbol">;</a> <a id="13497" href="Function.Bundles.html#5522" class="Field">from-cong</a> <a id="13507" class="Symbol">=</a> <a id="13509" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13516" href="Function.Bundles.html#13399" class="Bound">from</a>
<a id="13525" class="Symbol">;</a> <a id="13527" href="Function.Bundles.html#5565" class="Field">inverseˡ</a> <a id="13537" class="Symbol">=</a> <a id="13539" href="Function.Bundles.html#13405" class="Bound">invˡ</a>
<a id="13548" class="Symbol">}</a>
<a id="13553" href="Function.Bundles.html#13553" class="Function">mk↪</a> <a id="13557" class="Symbol">:</a> <a id="13559" class="Symbol"></a> <a id="13561" class="Symbol">{</a><a id="13562" href="Function.Bundles.html#13562" class="Bound">to</a> <a id="13565" class="Symbol">:</a> <a id="13567" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13569" class="Symbol"></a> <a id="13571" href="Function.Bundles.html#12545" class="Bound">B</a><a id="13572" class="Symbol">}</a> <a id="13574" class="Symbol">{</a><a id="13575" href="Function.Bundles.html#13575" class="Bound">from</a> <a id="13580" class="Symbol">:</a> <a id="13582" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="13584" class="Symbol"></a> <a id="13586" href="Function.Bundles.html#12533" class="Bound">A</a><a id="13587" class="Symbol">}</a> <a id="13589" class="Symbol"></a> <a id="13591" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="13600" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13604" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13608" href="Function.Bundles.html#13562" class="Bound">to</a> <a id="13611" href="Function.Bundles.html#13575" class="Bound">from</a> <a id="13616" class="Symbol"></a> <a id="13618" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13620" href="Function.Bundles.html#12189" class="Function Operator"></a> <a id="13622" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="13626" href="Function.Bundles.html#13553" class="Function">mk↪</a> <a id="13630" class="Symbol">{</a><a id="13631" href="Function.Bundles.html#13631" class="Bound">to</a><a id="13633" class="Symbol">}</a> <a id="13635" class="Symbol">{</a><a id="13636" href="Function.Bundles.html#13636" class="Bound">from</a><a id="13640" class="Symbol">}</a> <a id="13642" href="Function.Bundles.html#13642" class="Bound">invʳ</a> <a id="13647" class="Symbol">=</a> <a id="13649" class="Keyword">record</a>
<a id="13660" class="Symbol">{</a> <a id="13662" href="Function.Bundles.html#6568" class="Field">to</a> <a id="13672" class="Symbol">=</a> <a id="13674" href="Function.Bundles.html#13631" class="Bound">to</a>
<a id="13681" class="Symbol">;</a> <a id="13683" href="Function.Bundles.html#6592" class="Field">from</a> <a id="13693" class="Symbol">=</a> <a id="13695" href="Function.Bundles.html#13636" class="Bound">from</a>
<a id="13704" class="Symbol">;</a> <a id="13706" href="Function.Bundles.html#6616" class="Field">to-cong</a> <a id="13716" class="Symbol">=</a> <a id="13718" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13725" href="Function.Bundles.html#13631" class="Bound">to</a>
<a id="13732" class="Symbol">;</a> <a id="13734" href="Function.Bundles.html#6657" class="Field">from-cong</a> <a id="13744" class="Symbol">=</a> <a id="13746" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="13753" href="Function.Bundles.html#13636" class="Bound">from</a>
<a id="13762" class="Symbol">;</a> <a id="13764" href="Function.Bundles.html#6702" class="Field">inverseʳ</a> <a id="13774" class="Symbol">=</a> <a id="13776" href="Function.Bundles.html#13642" class="Bound">invʳ</a>
<a id="13785" class="Symbol">}</a>
<a id="13790" href="Function.Bundles.html#13790" class="Function">mk↩↪</a> <a id="13795" class="Symbol">:</a> <a id="13797" class="Symbol"></a> <a id="13799" class="Symbol">{</a><a id="13800" href="Function.Bundles.html#13800" class="Bound">to</a> <a id="13803" class="Symbol">:</a> <a id="13805" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13807" class="Symbol"></a> <a id="13809" href="Function.Bundles.html#12545" class="Bound">B</a><a id="13810" class="Symbol">}</a> <a id="13812" class="Symbol">{</a><a id="13813" href="Function.Bundles.html#13813" class="Bound">from₁</a> <a id="13819" class="Symbol">:</a> <a id="13821" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="13823" class="Symbol"></a> <a id="13825" href="Function.Bundles.html#12533" class="Bound">A</a><a id="13826" class="Symbol">}</a> <a id="13828" class="Symbol">{</a><a id="13829" href="Function.Bundles.html#13829" class="Bound">from₂</a> <a id="13835" class="Symbol">:</a> <a id="13837" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="13839" class="Symbol"></a> <a id="13841" href="Function.Bundles.html#12533" class="Bound">A</a><a id="13842" class="Symbol">}</a> <a id="13844" class="Symbol"></a>
<a id="13855" href="Function.Definitions.html#1082" class="Function">Inverseˡ</a> <a id="13864" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13868" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13872" href="Function.Bundles.html#13800" class="Bound">to</a> <a id="13875" href="Function.Bundles.html#13813" class="Bound">from₁</a> <a id="13881" class="Symbol"></a> <a id="13883" href="Function.Definitions.html#1169" class="Function">Inverseʳ</a> <a id="13892" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13896" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="13900" href="Function.Bundles.html#13800" class="Bound">to</a> <a id="13903" href="Function.Bundles.html#13829" class="Bound">from₂</a> <a id="13909" class="Symbol"></a> <a id="13911" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="13913" href="Function.Bundles.html#12265" class="Function Operator">↩↪</a> <a id="13916" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="13920" href="Function.Bundles.html#13790" class="Function">mk↩↪</a> <a id="13925" class="Symbol">{</a><a id="13926" href="Function.Bundles.html#13926" class="Bound">to</a><a id="13928" class="Symbol">}</a> <a id="13930" class="Symbol">{</a><a id="13931" href="Function.Bundles.html#13931" class="Bound">from₁</a><a id="13936" class="Symbol">}</a> <a id="13938" class="Symbol">{</a><a id="13939" href="Function.Bundles.html#13939" class="Bound">from₂</a><a id="13944" class="Symbol">}</a> <a id="13946" href="Function.Bundles.html#13946" class="Bound">invˡ</a> <a id="13951" href="Function.Bundles.html#13951" class="Bound">invʳ</a> <a id="13956" class="Symbol">=</a> <a id="13958" class="Keyword">record</a>
<a id="13969" class="Symbol">{</a> <a id="13971" href="Function.Bundles.html#8829" class="Field">to</a> <a id="13982" class="Symbol">=</a> <a id="13984" href="Function.Bundles.html#13926" class="Bound">to</a>
<a id="13991" class="Symbol">;</a> <a id="13993" href="Function.Bundles.html#8855" class="Field">from₁</a> <a id="14004" class="Symbol">=</a> <a id="14006" href="Function.Bundles.html#13931" class="Bound">from₁</a>
<a id="14016" class="Symbol">;</a> <a id="14018" href="Function.Bundles.html#8881" class="Field">from₂</a> <a id="14029" class="Symbol">=</a> <a id="14031" href="Function.Bundles.html#13939" class="Bound">from₂</a>
<a id="14041" class="Symbol">;</a> <a id="14043" href="Function.Bundles.html#8907" class="Field">to-cong</a> <a id="14054" class="Symbol">=</a> <a id="14056" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="14063" href="Function.Bundles.html#13926" class="Bound">to</a>
<a id="14070" class="Symbol">;</a> <a id="14072" href="Function.Bundles.html#8950" class="Field">from₁-cong</a> <a id="14083" class="Symbol">=</a> <a id="14085" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="14092" href="Function.Bundles.html#13931" class="Bound">from₁</a>
<a id="14102" class="Symbol">;</a> <a id="14104" href="Function.Bundles.html#8996" class="Field">from₂-cong</a> <a id="14115" class="Symbol">=</a> <a id="14117" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="14124" href="Function.Bundles.html#13939" class="Bound">from₂</a>
<a id="14134" class="Symbol">;</a> <a id="14136" href="Function.Bundles.html#9042" class="Field">inverseˡ</a> <a id="14147" class="Symbol">=</a> <a id="14149" href="Function.Bundles.html#13946" class="Bound">invˡ</a>
<a id="14158" class="Symbol">;</a> <a id="14160" href="Function.Bundles.html#9088" class="Field">inverseʳ</a> <a id="14171" class="Symbol">=</a> <a id="14173" href="Function.Bundles.html#13951" class="Bound">invʳ</a>
<a id="14182" class="Symbol">}</a>
<a id="14187" href="Function.Bundles.html#14187" class="Function">mk↔</a> <a id="14191" class="Symbol">:</a> <a id="14193" class="Symbol"></a> <a id="14195" class="Symbol">{</a><a id="14196" href="Function.Bundles.html#14196" class="Bound">to</a> <a id="14199" class="Symbol">:</a> <a id="14201" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="14203" class="Symbol"></a> <a id="14205" href="Function.Bundles.html#12545" class="Bound">B</a><a id="14206" class="Symbol">}</a> <a id="14208" class="Symbol">{</a><a id="14209" href="Function.Bundles.html#14209" class="Bound">from</a> <a id="14214" class="Symbol">:</a> <a id="14216" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="14218" class="Symbol"></a> <a id="14220" href="Function.Bundles.html#12533" class="Bound">A</a><a id="14221" class="Symbol">}</a> <a id="14223" class="Symbol"></a> <a id="14225" href="Function.Definitions.html#1256" class="Function">Inverseᵇ</a> <a id="14234" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="14238" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="14242" href="Function.Bundles.html#14196" class="Bound">to</a> <a id="14245" href="Function.Bundles.html#14209" class="Bound">from</a> <a id="14250" class="Symbol"></a> <a id="14252" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="14254" href="Function.Bundles.html#12340" class="Function Operator"></a> <a id="14256" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="14260" href="Function.Bundles.html#14187" class="Function">mk↔</a> <a id="14264" class="Symbol">{</a><a id="14265" href="Function.Bundles.html#14265" class="Bound">to</a><a id="14267" class="Symbol">}</a> <a id="14269" class="Symbol">{</a><a id="14270" href="Function.Bundles.html#14270" class="Bound">from</a><a id="14274" class="Symbol">}</a> <a id="14276" href="Function.Bundles.html#14276" class="Bound">inv</a> <a id="14280" class="Symbol">=</a> <a id="14282" class="Keyword">record</a>
<a id="14293" class="Symbol">{</a> <a id="14295" href="Function.Bundles.html#7394" class="Field">to</a> <a id="14305" class="Symbol">=</a> <a id="14307" href="Function.Bundles.html#14265" class="Bound">to</a>
<a id="14314" class="Symbol">;</a> <a id="14316" href="Function.Bundles.html#7418" class="Field">from</a> <a id="14326" class="Symbol">=</a> <a id="14328" href="Function.Bundles.html#14270" class="Bound">from</a>
<a id="14337" class="Symbol">;</a> <a id="14339" href="Function.Bundles.html#7442" class="Field">to-cong</a> <a id="14349" class="Symbol">=</a> <a id="14351" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="14358" href="Function.Bundles.html#14265" class="Bound">to</a>
<a id="14365" class="Symbol">;</a> <a id="14367" href="Function.Bundles.html#7483" class="Field">from-cong</a> <a id="14377" class="Symbol">=</a> <a id="14379" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">≡.cong</a> <a id="14386" href="Function.Bundles.html#14270" class="Bound">from</a>
<a id="14395" class="Symbol">;</a> <a id="14397" href="Function.Bundles.html#7526" class="Field">inverse</a> <a id="14407" class="Symbol">=</a> <a id="14409" href="Function.Bundles.html#14276" class="Bound">inv</a>
<a id="14417" class="Symbol">}</a>
<a id="14423" class="Comment">-- Strict variant of the above.</a>
<a id="14457" href="Function.Bundles.html#14457" class="Function">mk↠ₛ</a> <a id="14462" class="Symbol">:</a> <a id="14464" class="Symbol"></a> <a id="14466" class="Symbol">{</a><a id="14467" href="Function.Bundles.html#14467" class="Bound">to</a> <a id="14470" class="Symbol">:</a> <a id="14472" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="14474" class="Symbol"></a> <a id="14476" href="Function.Bundles.html#12545" class="Bound">B</a><a id="14477" class="Symbol">}</a> <a id="14479" class="Symbol"></a> <a id="14481" href="Function.Definitions.html#1522" class="Function">StrictlySurjective</a> <a id="14500" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="14504" href="Function.Bundles.html#14467" class="Bound">to</a> <a id="14507" class="Symbol"></a> <a id="14509" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="14511" href="Function.Bundles.html#11892" class="Function Operator"></a> <a id="14513" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="14517" href="Function.Bundles.html#14457" class="Function">mk↠ₛ</a> <a id="14522" class="Symbol">=</a> <a id="14524" href="Function.Bundles.html#12820" class="Function">mk↠</a> <a id="14528" href="Function.Base.html#1115" class="Function Operator"></a> <a id="14530" href="Function.Consequences.Propositional.html#1154" class="Function">strictlySurjective⇒surjective</a>
<a id="14563" href="Function.Bundles.html#14563" class="Function">mk↔ₛ</a> <a id="14569" class="Symbol">:</a> <a id="14571" class="Symbol"></a> <a id="14573" class="Symbol">(</a><a id="14574" href="Function.Bundles.html#14574" class="Bound">to</a> <a id="14577" class="Symbol">:</a> <a id="14579" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="14581" class="Symbol"></a> <a id="14583" href="Function.Bundles.html#12545" class="Bound">B</a><a id="14584" class="Symbol">)</a> <a id="14586" class="Symbol">(</a><a id="14587" href="Function.Bundles.html#14587" class="Bound">from</a> <a id="14592" class="Symbol">:</a> <a id="14594" href="Function.Bundles.html#12545" class="Bound">B</a> <a id="14596" class="Symbol"></a> <a id="14598" href="Function.Bundles.html#12533" class="Bound">A</a><a id="14599" class="Symbol">)</a> <a id="14601" class="Symbol"></a>
<a id="14613" href="Function.Definitions.html#1622" class="Function">StrictlyInverseˡ</a> <a id="14630" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="14634" href="Function.Bundles.html#14574" class="Bound">to</a> <a id="14637" href="Function.Bundles.html#14587" class="Bound">from</a> <a id="14642" class="Symbol"></a>
<a id="14654" href="Function.Definitions.html#1726" class="Function">StrictlyInverseʳ</a> <a id="14671" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="14675" href="Function.Bundles.html#14574" class="Bound">to</a> <a id="14678" href="Function.Bundles.html#14587" class="Bound">from</a> <a id="14683" class="Symbol"></a>
<a id="14695" href="Function.Bundles.html#12533" class="Bound">A</a> <a id="14697" href="Function.Bundles.html#12340" class="Function Operator"></a> <a id="14699" href="Function.Bundles.html#12545" class="Bound">B</a>
<a id="14703" href="Function.Bundles.html#14563" class="Function">mk↔ₛ</a> <a id="14709" href="Function.Bundles.html#14709" class="Bound">to</a> <a id="14712" href="Function.Bundles.html#14712" class="Bound">from</a> <a id="14717" href="Function.Bundles.html#14717" class="Bound">invˡ</a> <a id="14722" href="Function.Bundles.html#14722" class="Bound">invʳ</a> <a id="14727" class="Symbol">=</a> <a id="14729" href="Function.Bundles.html#14187" class="Function">mk↔</a> <a id="14733" class="Symbol">{</a><a id="14734" href="Function.Bundles.html#14709" class="Bound">to</a><a id="14736" class="Symbol">}</a> <a id="14738" class="Symbol">{</a><a id="14739" href="Function.Bundles.html#14712" class="Bound">from</a><a id="14743" class="Symbol">}</a>
<a id="14749" class="Symbol">(</a> <a id="14751" href="Function.Consequences.Propositional.html#1347" class="Function">strictlyInverseˡ⇒inverseˡ</a> <a id="14777" href="Function.Bundles.html#14709" class="Bound">to</a> <a id="14780" href="Function.Bundles.html#14717" class="Bound">invˡ</a>
<a id="14789" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="14791" href="Function.Consequences.Propositional.html#1536" class="Function">strictlyInverseʳ⇒inverseʳ</a> <a id="14817" href="Function.Bundles.html#14709" class="Bound">to</a> <a id="14820" href="Function.Bundles.html#14722" class="Bound">invʳ</a>
<a id="14829" class="Symbol">)</a>
<a id="14832" class="Comment">------------------------------------------------------------------------</a>
<a id="14905" class="Comment">-- Other</a>
<a id="14914" class="Comment">------------------------------------------------------------------------</a>
<a id="14988" class="Comment">-- Alternative syntax for the application of functions</a>
<a id="15044" class="Keyword">module</a> <a id="15051" href="Function.Bundles.html#15051" class="Module">_</a> <a id="15053" class="Symbol">{</a><a id="15054" href="Function.Bundles.html#15054" class="Bound">From</a> <a id="15059" class="Symbol">:</a> <a id="15061" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="15068" href="Function.Bundles.html#1424" class="Generalizable">a</a> <a id="15070" href="Function.Bundles.html#1428" class="Generalizable">ℓ₁</a><a id="15072" class="Symbol">}</a> <a id="15074" class="Symbol">{</a><a id="15075" href="Function.Bundles.html#15075" class="Bound">To</a> <a id="15078" class="Symbol">:</a> <a id="15080" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="15087" href="Function.Bundles.html#1426" class="Generalizable">b</a> <a id="15089" href="Function.Bundles.html#1431" class="Generalizable">ℓ₂</a><a id="15091" class="Symbol">}</a> <a id="15093" class="Keyword">where</a>
<a id="15101" class="Keyword">open</a> <a id="15106" href="Relation.Binary.Bundles.html#1080" class="Module">Setoid</a>
<a id="15116" class="Keyword">infixl</a> <a id="15123" class="Number">5</a> <a id="15125" href="Function.Bundles.html#15133" class="Function Operator">_⟨$⟩_</a>
<a id="15133" href="Function.Bundles.html#15133" class="Function Operator">_⟨$⟩_</a> <a id="15139" class="Symbol">:</a> <a id="15141" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="15146" href="Function.Bundles.html#15054" class="Bound">From</a> <a id="15151" href="Function.Bundles.html#15075" class="Bound">To</a> <a id="15154" class="Symbol"></a> <a id="15156" href="Relation.Binary.Bundles.html#1143" class="Field">Carrier</a> <a id="15164" href="Function.Bundles.html#15054" class="Bound">From</a> <a id="15169" class="Symbol"></a> <a id="15171" href="Relation.Binary.Bundles.html#1143" class="Field">Carrier</a> <a id="15179" href="Function.Bundles.html#15075" class="Bound">To</a>
<a id="15184" href="Function.Bundles.html#15133" class="Function Operator">_⟨$⟩_</a> <a id="15190" class="Symbol">=</a> <a id="15192" href="Function.Bundles.html#2094" class="Field">Func.to</a>
</pre></body></html>