rachel.cafe/misc/Function.Bundles.html
2022-06-23 22:12:24 +02:00

424 lines
105 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Function.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">--without-K</a> <a id="807" class="Pragma">--safe</a> <a id="814" class="Symbol">#-}</a>
<a id="819" class="Keyword">module</a> <a id="826" href="Function.Bundles.html" class="Module">Function.Bundles</a> <a id="843" class="Keyword">where</a>
<a id="850" class="Keyword">import</a> <a id="857" href="Function.Definitions.html" class="Module">Function.Definitions</a> <a id="878" class="Symbol">as</a> <a id="881" class="Module">FunctionDefinitions</a>
<a id="901" class="Keyword">import</a> <a id="908" href="Function.Structures.html" class="Module">Function.Structures</a> <a id="928" class="Symbol">as</a> <a id="931" class="Module">FunctionStructures</a>
<a id="950" class="Keyword">open</a> <a id="955" class="Keyword">import</a> <a id="962" href="Level.html" class="Module">Level</a> <a id="968" class="Keyword">using</a> <a id="974" class="Symbol">(</a><a id="975" href="Agda.Primitive.html#597" class="Postulate">Level</a><a id="980" class="Symbol">;</a> <a id="982" href="Agda.Primitive.html#810" class="Primitive Operator">_⊔_</a><a id="985" class="Symbol">;</a> <a id="987" href="Agda.Primitive.html#780" class="Primitive">suc</a><a id="990" class="Symbol">)</a>
<a id="992" class="Keyword">open</a> <a id="997" class="Keyword">import</a> <a id="1004" href="Data.Product.html" class="Module">Data.Product</a> <a id="1017" class="Keyword">using</a> <a id="1023" class="Symbol">(</a><a id="1024" href="Agda.Builtin.Sigma.html#236" class="InductiveConstructor Operator">_,_</a><a id="1027" class="Symbol">;</a> <a id="1029" href="Agda.Builtin.Sigma.html#252" class="Field">proj₁</a><a id="1034" class="Symbol">;</a> <a id="1036" href="Agda.Builtin.Sigma.html#264" class="Field">proj₂</a><a id="1041" class="Symbol">)</a>
<a id="1043" class="Keyword">open</a> <a id="1048" class="Keyword">import</a> <a id="1055" href="Relation.Binary.html" class="Module">Relation.Binary</a> <a id="1071" class="Keyword">hiding</a> <a id="1078" class="Symbol">(</a><a id="1079" href="Relation.Binary.Core.html#1325" class="Function Operator">_⇔_</a><a id="1082" class="Symbol">)</a>
<a id="1084" class="Keyword">open</a> <a id="1089" class="Keyword">import</a> <a id="1096" href="Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a> <a id="1134" class="Symbol">as</a> <a id="1137" class="Module"></a>
<a id="1141" class="Keyword">using</a> <a id="1147" class="Symbol">(</a><a id="1148" href="Agda.Builtin.Equality.html#151" class="Datatype Operator">_≡_</a><a id="1151" class="Symbol">)</a>
<a id="1153" class="Keyword">open</a> <a id="1158" href="Relation.Binary.Bundles.html#1009" class="Module">Setoid</a> <a id="1165" class="Keyword">using</a> <a id="1171" class="Symbol">(</a><a id="1172" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a><a id="1185" class="Symbol">)</a>
<a id="1188" class="Keyword">private</a>
<a id="1198" class="Keyword">variable</a>
<a id="1211" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="1213" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="1215" href="Function.Bundles.html#1215" class="Generalizable">ℓ₁</a> <a id="1218" href="Function.Bundles.html#1218" class="Generalizable">ℓ₂</a> <a id="1221" class="Symbol">:</a> <a id="1223" href="Agda.Primitive.html#597" class="Postulate">Level</a>
<a id="1230" class="Comment">------------------------------------------------------------------------</a>
<a id="1303" class="Comment">-- Setoid bundles</a>
<a id="1321" class="Comment">------------------------------------------------------------------------</a>
<a id="1395" class="Keyword">module</a> <a id="1402" href="Function.Bundles.html#1402" class="Module">_</a> <a id="1404" class="Symbol">(</a><a id="1405" href="Function.Bundles.html#1405" class="Bound">From</a> <a id="1410" class="Symbol">:</a> <a id="1412" href="Relation.Binary.Bundles.html#1009" class="Record">Setoid</a> <a id="1419" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="1421" href="Function.Bundles.html#1215" class="Generalizable">ℓ₁</a><a id="1423" class="Symbol">)</a> <a id="1425" class="Symbol">(</a><a id="1426" href="Function.Bundles.html#1426" class="Bound">To</a> <a id="1429" class="Symbol">:</a> <a id="1431" href="Relation.Binary.Bundles.html#1009" class="Record">Setoid</a> <a id="1438" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="1440" href="Function.Bundles.html#1218" class="Generalizable">ℓ₂</a><a id="1442" class="Symbol">)</a> <a id="1444" class="Keyword">where</a>
<a id="1453" class="Keyword">open</a> <a id="1458" href="Relation.Binary.Bundles.html#1009" class="Module">Setoid</a> <a id="1465" href="Function.Bundles.html#1405" class="Bound">From</a> <a id="1470" class="Keyword">using</a> <a id="1476" class="Symbol">()</a> <a id="1479" class="Keyword">renaming</a> <a id="1488" class="Symbol">(</a><a id="1489" href="Relation.Binary.Bundles.html#1072" class="Field">Carrier</a> <a id="1497" class="Symbol">to</a> <a id="1500" class="Field">A</a><a id="1501" class="Symbol">;</a> <a id="1503" href="Relation.Binary.Bundles.html#1098" class="Field Operator">_≈_</a> <a id="1507" class="Symbol">to</a> <a id="1510" class="Field Operator">_≈₁_</a><a id="1514" class="Symbol">)</a>
<a id="1518" class="Keyword">open</a> <a id="1523" href="Relation.Binary.Bundles.html#1009" class="Module">Setoid</a> <a id="1530" href="Function.Bundles.html#1426" class="Bound">To</a> <a id="1535" class="Keyword">using</a> <a id="1541" class="Symbol">()</a> <a id="1544" class="Keyword">renaming</a> <a id="1553" class="Symbol">(</a><a id="1554" href="Relation.Binary.Bundles.html#1072" class="Field">Carrier</a> <a id="1562" class="Symbol">to</a> <a id="1565" class="Field">B</a><a id="1566" class="Symbol">;</a> <a id="1568" href="Relation.Binary.Bundles.html#1098" class="Field Operator">_≈_</a> <a id="1572" class="Symbol">to</a> <a id="1575" class="Field Operator">_≈₂_</a><a id="1579" class="Symbol">)</a>
<a id="1583" class="Keyword">open</a> <a id="1588" href="Function.Definitions.html" class="Module">FunctionDefinitions</a> <a id="1608" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="1613" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="1620" class="Keyword">open</a> <a id="1625" href="Function.Structures.html" class="Module">FunctionStructures</a> <a id="1645" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="1650" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="1656" class="Comment">------------------------------------------------------------------------</a>
<a id="1729" class="Comment">-- Bundles with one element</a>
<a id="1760" class="Comment">-- Called `Func` rather than `Function` in order to avoid clashing</a>
<a id="1829" class="Comment">-- with the top-level module.</a>
<a id="1861" class="Keyword">record</a> <a id="1868" href="Function.Bundles.html#1868" class="Record">Func</a> <a id="1873" class="Symbol">:</a> <a id="1875" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="1879" class="Symbol">(</a><a id="1880" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="1882" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="1884" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="1886" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="1888" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="1891" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="1893" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="1895" class="Symbol">)</a> <a id="1897" class="Keyword">where</a>
<a id="1907" class="Keyword">field</a>
<a id="1919" href="Function.Bundles.html#1919" class="Field">f</a> <a id="1924" class="Symbol">:</a> <a id="1926" href="Function.Bundles.html#1500" class="Function">A</a> <a id="1928" class="Symbol"></a> <a id="1930" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="1938" href="Function.Bundles.html#1938" class="Field">cong</a> <a id="1943" class="Symbol">:</a> <a id="1945" href="Function.Bundles.html#1919" class="Field">f</a> <a id="1947" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="1957" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="1962" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="1964" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="1974" href="Function.Bundles.html#1974" class="Function">isCongruent</a> <a id="1986" class="Symbol">:</a> <a id="1988" href="Function.Structures.html#841" class="Record">IsCongruent</a> <a id="2000" href="Function.Bundles.html#1919" class="Field">f</a>
<a id="2006" href="Function.Bundles.html#1974" class="Function">isCongruent</a> <a id="2018" class="Symbol">=</a> <a id="2020" class="Keyword">record</a>
<a id="2033" class="Symbol">{</a> <a id="2035" href="Function.Structures.html#907" class="Field">cong</a> <a id="2050" class="Symbol">=</a> <a id="2052" href="Function.Bundles.html#1938" class="Field">cong</a>
<a id="2063" class="Symbol">;</a> <a id="2065" href="Function.Structures.html#950" class="Field">isEquivalence₁</a> <a id="2080" class="Symbol">=</a> <a id="2082" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="2096" href="Function.Bundles.html#1405" class="Bound">From</a>
<a id="2107" class="Symbol">;</a> <a id="2109" href="Function.Structures.html#990" class="Field">isEquivalence₂</a> <a id="2124" class="Symbol">=</a> <a id="2126" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="2140" href="Function.Bundles.html#1426" class="Bound">To</a>
<a id="2149" class="Symbol">}</a>
<a id="2156" class="Keyword">open</a> <a id="2161" href="Function.Structures.html#841" class="Module">IsCongruent</a> <a id="2173" href="Function.Bundles.html#1974" class="Function">isCongruent</a> <a id="2185" class="Keyword">public</a>
<a id="2198" class="Keyword">using</a> <a id="2204" class="Symbol">(</a><a id="2205" class="Keyword">module</a> <a id="2212" href="Function.Structures.html#1036" class="Module">Eq₁</a><a id="2215" class="Symbol">;</a> <a id="2217" class="Keyword">module</a> <a id="2224" href="Function.Structures.html#1180" class="Module">Eq₂</a><a id="2227" class="Symbol">)</a>
<a id="2233" class="Keyword">record</a> <a id="2240" href="Function.Bundles.html#2240" class="Record">Injection</a> <a id="2250" class="Symbol">:</a> <a id="2252" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="2256" class="Symbol">(</a><a id="2257" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="2259" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="2261" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="2263" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="2265" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="2268" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="2270" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="2272" class="Symbol">)</a> <a id="2274" class="Keyword">where</a>
<a id="2284" class="Keyword">field</a>
<a id="2296" href="Function.Bundles.html#2296" class="Field">f</a> <a id="2308" class="Symbol">:</a> <a id="2310" href="Function.Bundles.html#1500" class="Function">A</a> <a id="2312" class="Symbol"></a> <a id="2314" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="2322" href="Function.Bundles.html#2322" class="Field">cong</a> <a id="2334" class="Symbol">:</a> <a id="2336" href="Function.Bundles.html#2296" class="Field">f</a> <a id="2338" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="2348" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="2353" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="2355" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="2366" href="Function.Bundles.html#2366" class="Field">injective</a> <a id="2378" class="Symbol">:</a> <a id="2380" href="Function.Definitions.html#889" class="Function">Injective</a> <a id="2390" href="Function.Bundles.html#2296" class="Field">f</a>
<a id="2397" href="Function.Bundles.html#2397" class="Function">function</a> <a id="2406" class="Symbol">:</a> <a id="2408" href="Function.Bundles.html#1868" class="Record">Func</a>
<a id="2417" href="Function.Bundles.html#2397" class="Function">function</a> <a id="2426" class="Symbol">=</a> <a id="2428" class="Keyword">record</a>
<a id="2441" class="Symbol">{</a> <a id="2443" href="Function.Bundles.html#1919" class="Field">f</a> <a id="2448" class="Symbol">=</a> <a id="2450" href="Function.Bundles.html#2296" class="Field">f</a>
<a id="2458" class="Symbol">;</a> <a id="2460" href="Function.Bundles.html#1938" class="Field">cong</a> <a id="2465" class="Symbol">=</a> <a id="2467" href="Function.Bundles.html#2322" class="Field">cong</a>
<a id="2478" class="Symbol">}</a>
<a id="2485" class="Keyword">open</a> <a id="2490" href="Function.Bundles.html#1868" class="Module">Func</a> <a id="2495" href="Function.Bundles.html#2397" class="Function">function</a> <a id="2504" class="Keyword">public</a>
<a id="2517" class="Keyword">hiding</a> <a id="2524" class="Symbol">(</a><a id="2525" href="Function.Bundles.html#1919" class="Field">f</a><a id="2526" class="Symbol">;</a> <a id="2528" href="Function.Bundles.html#1938" class="Field">cong</a><a id="2532" class="Symbol">)</a>
<a id="2539" href="Function.Bundles.html#2539" class="Function">isInjection</a> <a id="2551" class="Symbol">:</a> <a id="2553" href="Function.Structures.html#1323" class="Record">IsInjection</a> <a id="2565" href="Function.Bundles.html#2296" class="Field">f</a>
<a id="2571" href="Function.Bundles.html#2539" class="Function">isInjection</a> <a id="2583" class="Symbol">=</a> <a id="2585" class="Keyword">record</a>
<a id="2598" class="Symbol">{</a> <a id="2600" href="Function.Structures.html#1389" class="Field">isCongruent</a> <a id="2612" class="Symbol">=</a> <a id="2614" href="Function.Bundles.html#1974" class="Function">isCongruent</a>
<a id="2632" class="Symbol">;</a> <a id="2634" href="Function.Structures.html#1421" class="Field">injective</a> <a id="2646" class="Symbol">=</a> <a id="2648" href="Function.Bundles.html#2366" class="Field">injective</a>
<a id="2664" class="Symbol">}</a>
<a id="2670" class="Keyword">record</a> <a id="2677" href="Function.Bundles.html#2677" class="Record">Surjection</a> <a id="2688" class="Symbol">:</a> <a id="2690" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="2694" class="Symbol">(</a><a id="2695" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="2697" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="2699" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="2701" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="2703" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="2706" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="2708" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="2710" class="Symbol">)</a> <a id="2712" class="Keyword">where</a>
<a id="2722" class="Keyword">field</a>
<a id="2734" href="Function.Bundles.html#2734" class="Field">f</a> <a id="2745" class="Symbol">:</a> <a id="2747" href="Function.Bundles.html#1500" class="Function">A</a> <a id="2749" class="Symbol"></a> <a id="2751" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="2759" href="Function.Bundles.html#2759" class="Field">cong</a> <a id="2770" class="Symbol">:</a> <a id="2772" href="Function.Bundles.html#2734" class="Field">f</a> <a id="2774" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="2784" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="2789" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="2791" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="2802" href="Function.Bundles.html#2802" class="Field">surjective</a> <a id="2813" class="Symbol">:</a> <a id="2815" href="Function.Definitions.Core2.html#663" class="Function">Surjective</a> <a id="2826" href="Function.Bundles.html#2734" class="Field">f</a>
<a id="2833" href="Function.Bundles.html#2833" class="Function">isCongruent</a> <a id="2845" class="Symbol">:</a> <a id="2847" href="Function.Structures.html#841" class="Record">IsCongruent</a> <a id="2859" href="Function.Bundles.html#2734" class="Field">f</a>
<a id="2865" href="Function.Bundles.html#2833" class="Function">isCongruent</a> <a id="2877" class="Symbol">=</a> <a id="2879" class="Keyword">record</a>
<a id="2892" class="Symbol">{</a> <a id="2894" href="Function.Structures.html#907" class="Field">cong</a> <a id="2909" class="Symbol">=</a> <a id="2911" href="Function.Bundles.html#2759" class="Field">cong</a>
<a id="2922" class="Symbol">;</a> <a id="2924" href="Function.Structures.html#950" class="Field">isEquivalence₁</a> <a id="2939" class="Symbol">=</a> <a id="2941" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="2955" href="Function.Bundles.html#1405" class="Bound">From</a>
<a id="2966" class="Symbol">;</a> <a id="2968" href="Function.Structures.html#990" class="Field">isEquivalence₂</a> <a id="2983" class="Symbol">=</a> <a id="2985" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="2999" href="Function.Bundles.html#1426" class="Bound">To</a>
<a id="3008" class="Symbol">}</a>
<a id="3015" class="Keyword">open</a> <a id="3020" href="Function.Structures.html#841" class="Module">IsCongruent</a> <a id="3032" href="Function.Bundles.html#2833" class="Function">isCongruent</a> <a id="3044" class="Keyword">public</a> <a id="3051" class="Keyword">using</a> <a id="3057" class="Symbol">(</a><a id="3058" class="Keyword">module</a> <a id="3065" href="Function.Structures.html#1036" class="Module">Eq₁</a><a id="3068" class="Symbol">;</a> <a id="3070" class="Keyword">module</a> <a id="3077" href="Function.Structures.html#1180" class="Module">Eq₂</a><a id="3080" class="Symbol">)</a>
<a id="3087" href="Function.Bundles.html#3087" class="Function">isSurjection</a> <a id="3100" class="Symbol">:</a> <a id="3102" href="Function.Structures.html#1505" class="Record">IsSurjection</a> <a id="3115" href="Function.Bundles.html#2734" class="Field">f</a>
<a id="3121" href="Function.Bundles.html#3087" class="Function">isSurjection</a> <a id="3134" class="Symbol">=</a> <a id="3136" class="Keyword">record</a>
<a id="3149" class="Symbol">{</a> <a id="3151" href="Function.Structures.html#1572" class="Field">isCongruent</a> <a id="3163" class="Symbol">=</a> <a id="3165" href="Function.Bundles.html#2833" class="Function">isCongruent</a>
<a id="3183" class="Symbol">;</a> <a id="3185" href="Function.Structures.html#1604" class="Field">surjective</a> <a id="3197" class="Symbol">=</a> <a id="3199" href="Function.Bundles.html#2802" class="Field">surjective</a>
<a id="3216" class="Symbol">}</a>
<a id="3222" class="Keyword">record</a> <a id="3229" href="Function.Bundles.html#3229" class="Record">Bijection</a> <a id="3239" class="Symbol">:</a> <a id="3241" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="3245" class="Symbol">(</a><a id="3246" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="3248" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="3250" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="3252" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="3254" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="3257" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="3259" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="3261" class="Symbol">)</a> <a id="3263" class="Keyword">where</a>
<a id="3273" class="Keyword">field</a>
<a id="3285" href="Function.Bundles.html#3285" class="Field">f</a> <a id="3295" class="Symbol">:</a> <a id="3297" href="Function.Bundles.html#1500" class="Function">A</a> <a id="3299" class="Symbol"></a> <a id="3301" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="3309" href="Function.Bundles.html#3309" class="Field">cong</a> <a id="3319" class="Symbol">:</a> <a id="3321" href="Function.Bundles.html#3285" class="Field">f</a> <a id="3323" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="3333" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="3338" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="3340" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="3351" href="Function.Bundles.html#3351" class="Field">bijective</a> <a id="3361" class="Symbol">:</a> <a id="3363" href="Function.Definitions.html#1019" class="Function">Bijective</a> <a id="3373" href="Function.Bundles.html#3285" class="Field">f</a>
<a id="3380" href="Function.Bundles.html#3380" class="Function">injective</a> <a id="3390" class="Symbol">:</a> <a id="3392" href="Function.Definitions.html#889" class="Function">Injective</a> <a id="3402" href="Function.Bundles.html#3285" class="Field">f</a>
<a id="3408" href="Function.Bundles.html#3380" class="Function">injective</a> <a id="3418" class="Symbol">=</a> <a id="3420" href="Agda.Builtin.Sigma.html#252" class="Field">proj₁</a> <a id="3426" href="Function.Bundles.html#3351" class="Field">bijective</a>
<a id="3441" href="Function.Bundles.html#3441" class="Function">surjective</a> <a id="3452" class="Symbol">:</a> <a id="3454" href="Function.Definitions.Core2.html#663" class="Function">Surjective</a> <a id="3465" href="Function.Bundles.html#3285" class="Field">f</a>
<a id="3471" href="Function.Bundles.html#3441" class="Function">surjective</a> <a id="3482" class="Symbol">=</a> <a id="3484" href="Agda.Builtin.Sigma.html#264" class="Field">proj₂</a> <a id="3490" href="Function.Bundles.html#3351" class="Field">bijective</a>
<a id="3505" href="Function.Bundles.html#3505" class="Function">injection</a> <a id="3515" class="Symbol">:</a> <a id="3517" href="Function.Bundles.html#2240" class="Record">Injection</a>
<a id="3531" href="Function.Bundles.html#3505" class="Function">injection</a> <a id="3541" class="Symbol">=</a> <a id="3543" class="Keyword">record</a>
<a id="3556" class="Symbol">{</a> <a id="3558" href="Function.Bundles.html#2322" class="Field">cong</a> <a id="3568" class="Symbol">=</a> <a id="3570" href="Function.Bundles.html#3309" class="Field">cong</a>
<a id="3581" class="Symbol">;</a> <a id="3583" href="Function.Bundles.html#2366" class="Field">injective</a> <a id="3593" class="Symbol">=</a> <a id="3595" href="Function.Bundles.html#3380" class="Function">injective</a>
<a id="3611" class="Symbol">}</a>
<a id="3618" href="Function.Bundles.html#3618" class="Function">surjection</a> <a id="3629" class="Symbol">:</a> <a id="3631" href="Function.Bundles.html#2677" class="Record">Surjection</a>
<a id="3646" href="Function.Bundles.html#3618" class="Function">surjection</a> <a id="3657" class="Symbol">=</a> <a id="3659" class="Keyword">record</a>
<a id="3672" class="Symbol">{</a> <a id="3674" href="Function.Bundles.html#2759" class="Field">cong</a> <a id="3685" class="Symbol">=</a> <a id="3687" href="Function.Bundles.html#3309" class="Field">cong</a>
<a id="3698" class="Symbol">;</a> <a id="3700" href="Function.Bundles.html#2802" class="Field">surjective</a> <a id="3711" class="Symbol">=</a> <a id="3713" href="Function.Bundles.html#3441" class="Function">surjective</a>
<a id="3730" class="Symbol">}</a>
<a id="3737" class="Keyword">open</a> <a id="3742" href="Function.Bundles.html#2240" class="Module">Injection</a> <a id="3753" href="Function.Bundles.html#3505" class="Function">injection</a> <a id="3764" class="Keyword">public</a> <a id="3771" class="Keyword">using</a> <a id="3777" class="Symbol">(</a><a id="3778" href="Function.Bundles.html#2539" class="Function">isInjection</a><a id="3789" class="Symbol">)</a>
<a id="3795" class="Keyword">open</a> <a id="3800" href="Function.Bundles.html#2677" class="Module">Surjection</a> <a id="3811" href="Function.Bundles.html#3618" class="Function">surjection</a> <a id="3822" class="Keyword">public</a> <a id="3829" class="Keyword">using</a> <a id="3835" class="Symbol">(</a><a id="3836" href="Function.Bundles.html#3087" class="Function">isSurjection</a><a id="3848" class="Symbol">)</a>
<a id="3855" href="Function.Bundles.html#3855" class="Function">isBijection</a> <a id="3867" class="Symbol">:</a> <a id="3869" href="Function.Structures.html#1689" class="Record">IsBijection</a> <a id="3881" href="Function.Bundles.html#3285" class="Field">f</a>
<a id="3887" href="Function.Bundles.html#3855" class="Function">isBijection</a> <a id="3899" class="Symbol">=</a> <a id="3901" class="Keyword">record</a>
<a id="3914" class="Symbol">{</a> <a id="3916" href="Function.Structures.html#1755" class="Field">isInjection</a> <a id="3928" class="Symbol">=</a> <a id="3930" href="Function.Bundles.html#2539" class="Function">isInjection</a>
<a id="3948" class="Symbol">;</a> <a id="3950" href="Function.Structures.html#1787" class="Field">surjective</a> <a id="3962" class="Symbol">=</a> <a id="3964" href="Function.Bundles.html#3441" class="Function">surjective</a>
<a id="3981" class="Symbol">}</a>
<a id="3988" class="Keyword">open</a> <a id="3993" href="Function.Structures.html#1689" class="Module">IsBijection</a> <a id="4005" href="Function.Bundles.html#3855" class="Function">isBijection</a> <a id="4017" class="Keyword">public</a> <a id="4024" class="Keyword">using</a> <a id="4030" class="Symbol">(</a><a id="4031" class="Keyword">module</a> <a id="4038" href="Function.Structures.html#1036" class="Module">Eq₁</a><a id="4041" class="Symbol">;</a> <a id="4043" class="Keyword">module</a> <a id="4050" href="Function.Structures.html#1180" class="Module">Eq₂</a><a id="4053" class="Symbol">)</a>
<a id="4057" class="Comment">------------------------------------------------------------------------</a>
<a id="4130" class="Comment">-- Bundles with two elements</a>
<a id="4162" class="Keyword">record</a> <a id="4169" href="Function.Bundles.html#4169" class="Record">Equivalence</a> <a id="4181" class="Symbol">:</a> <a id="4183" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="4187" class="Symbol">(</a><a id="4188" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="4190" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="4192" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="4194" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="4196" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="4199" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="4201" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="4203" class="Symbol">)</a> <a id="4205" class="Keyword">where</a>
<a id="4215" class="Keyword">field</a>
<a id="4227" href="Function.Bundles.html#4227" class="Field">f</a> <a id="4233" class="Symbol">:</a> <a id="4235" href="Function.Bundles.html#1500" class="Function">A</a> <a id="4237" class="Symbol"></a> <a id="4239" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="4247" href="Function.Bundles.html#4247" class="Field">g</a> <a id="4253" class="Symbol">:</a> <a id="4255" href="Function.Bundles.html#1565" class="Field">B</a> <a id="4257" class="Symbol"></a> <a id="4259" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="4267" href="Function.Bundles.html#4267" class="Field">cong₁</a> <a id="4273" class="Symbol">:</a> <a id="4275" href="Function.Bundles.html#4227" class="Field">f</a> <a id="4277" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="4287" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="4292" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="4294" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="4305" href="Function.Bundles.html#4305" class="Field">cong₂</a> <a id="4311" class="Symbol">:</a> <a id="4313" href="Function.Bundles.html#4247" class="Field">g</a> <a id="4315" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="4325" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="4330" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="4332" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="4341" class="Keyword">record</a> <a id="4348" href="Function.Bundles.html#4348" class="Record">LeftInverse</a> <a id="4360" class="Symbol">:</a> <a id="4362" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="4366" class="Symbol">(</a><a id="4367" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="4369" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="4371" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="4373" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="4375" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="4378" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="4380" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="4382" class="Symbol">)</a> <a id="4384" class="Keyword">where</a>
<a id="4394" class="Keyword">field</a>
<a id="4406" href="Function.Bundles.html#4406" class="Field">f</a> <a id="4416" class="Symbol">:</a> <a id="4418" href="Function.Bundles.html#1500" class="Function">A</a> <a id="4420" class="Symbol"></a> <a id="4422" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="4430" href="Function.Bundles.html#4430" class="Field">g</a> <a id="4440" class="Symbol">:</a> <a id="4442" href="Function.Bundles.html#1565" class="Field">B</a> <a id="4444" class="Symbol"></a> <a id="4446" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="4454" href="Function.Bundles.html#4454" class="Field">cong₁</a> <a id="4464" class="Symbol">:</a> <a id="4466" href="Function.Bundles.html#4406" class="Field">f</a> <a id="4468" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="4478" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="4483" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="4485" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="4496" href="Function.Bundles.html#4496" class="Field">cong₂</a> <a id="4506" class="Symbol">:</a> <a id="4508" href="Function.Bundles.html#4430" class="Field">g</a> <a id="4510" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="4520" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="4525" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="4527" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="4538" href="Function.Bundles.html#4538" class="Field">inverseˡ</a> <a id="4548" class="Symbol">:</a> <a id="4550" href="Function.Definitions.Core2.html#818" class="Function">Inverseˡ</a> <a id="4559" href="Function.Bundles.html#4406" class="Field">f</a> <a id="4561" href="Function.Bundles.html#4430" class="Field">g</a>
<a id="4568" href="Function.Bundles.html#4568" class="Function">isCongruent</a> <a id="4580" class="Symbol">:</a> <a id="4582" href="Function.Structures.html#841" class="Record">IsCongruent</a> <a id="4594" href="Function.Bundles.html#4406" class="Field">f</a>
<a id="4600" href="Function.Bundles.html#4568" class="Function">isCongruent</a> <a id="4612" class="Symbol">=</a> <a id="4614" class="Keyword">record</a>
<a id="4627" class="Symbol">{</a> <a id="4629" href="Function.Structures.html#907" class="Field">cong</a> <a id="4644" class="Symbol">=</a> <a id="4646" href="Function.Bundles.html#4454" class="Field">cong₁</a>
<a id="4658" class="Symbol">;</a> <a id="4660" href="Function.Structures.html#950" class="Field">isEquivalence₁</a> <a id="4675" class="Symbol">=</a> <a id="4677" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="4691" href="Function.Bundles.html#1405" class="Bound">From</a>
<a id="4702" class="Symbol">;</a> <a id="4704" href="Function.Structures.html#990" class="Field">isEquivalence₂</a> <a id="4719" class="Symbol">=</a> <a id="4721" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="4735" href="Function.Bundles.html#1426" class="Bound">To</a>
<a id="4744" class="Symbol">}</a>
<a id="4751" class="Keyword">open</a> <a id="4756" href="Function.Structures.html#841" class="Module">IsCongruent</a> <a id="4768" href="Function.Bundles.html#4568" class="Function">isCongruent</a> <a id="4780" class="Keyword">public</a> <a id="4787" class="Keyword">using</a> <a id="4793" class="Symbol">(</a><a id="4794" class="Keyword">module</a> <a id="4801" href="Function.Structures.html#1036" class="Module">Eq₁</a><a id="4804" class="Symbol">;</a> <a id="4806" class="Keyword">module</a> <a id="4813" href="Function.Structures.html#1180" class="Module">Eq₂</a><a id="4816" class="Symbol">)</a>
<a id="4823" href="Function.Bundles.html#4823" class="Function">isLeftInverse</a> <a id="4837" class="Symbol">:</a> <a id="4839" href="Function.Structures.html#2245" class="Record">IsLeftInverse</a> <a id="4853" href="Function.Bundles.html#4406" class="Field">f</a> <a id="4855" href="Function.Bundles.html#4430" class="Field">g</a>
<a id="4861" href="Function.Bundles.html#4823" class="Function">isLeftInverse</a> <a id="4875" class="Symbol">=</a> <a id="4877" class="Keyword">record</a>
<a id="4890" class="Symbol">{</a> <a id="4892" href="Function.Structures.html#2325" class="Field">isCongruent</a> <a id="4904" class="Symbol">=</a> <a id="4906" href="Function.Bundles.html#4568" class="Function">isCongruent</a>
<a id="4924" class="Symbol">;</a> <a id="4926" href="Function.Structures.html#2358" class="Field">cong₂</a> <a id="4938" class="Symbol">=</a> <a id="4940" href="Function.Bundles.html#4496" class="Field">cong₂</a>
<a id="4952" class="Symbol">;</a> <a id="4954" href="Function.Structures.html#2399" class="Field">inverseˡ</a> <a id="4966" class="Symbol">=</a> <a id="4968" href="Function.Bundles.html#4538" class="Field">inverseˡ</a>
<a id="4983" class="Symbol">}</a>
<a id="4990" href="Function.Bundles.html#4990" class="Function">equivalence</a> <a id="5002" class="Symbol">:</a> <a id="5004" href="Function.Bundles.html#4169" class="Record">Equivalence</a>
<a id="5020" href="Function.Bundles.html#4990" class="Function">equivalence</a> <a id="5032" class="Symbol">=</a> <a id="5034" class="Keyword">record</a>
<a id="5047" class="Symbol">{</a> <a id="5049" href="Function.Bundles.html#4267" class="Field">cong₁</a> <a id="5055" class="Symbol">=</a> <a id="5057" href="Function.Bundles.html#4454" class="Field">cong₁</a>
<a id="5069" class="Symbol">;</a> <a id="5071" href="Function.Bundles.html#4305" class="Field">cong₂</a> <a id="5077" class="Symbol">=</a> <a id="5079" href="Function.Bundles.html#4496" class="Field">cong₂</a>
<a id="5091" class="Symbol">}</a>
<a id="5097" class="Keyword">record</a> <a id="5104" href="Function.Bundles.html#5104" class="Record">RightInverse</a> <a id="5117" class="Symbol">:</a> <a id="5119" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="5123" class="Symbol">(</a><a id="5124" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="5126" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="5128" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="5130" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="5132" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="5135" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="5137" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="5139" class="Symbol">)</a> <a id="5141" class="Keyword">where</a>
<a id="5151" class="Keyword">field</a>
<a id="5163" href="Function.Bundles.html#5163" class="Field">f</a> <a id="5173" class="Symbol">:</a> <a id="5175" href="Function.Bundles.html#1500" class="Function">A</a> <a id="5177" class="Symbol"></a> <a id="5179" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="5187" href="Function.Bundles.html#5187" class="Field">g</a> <a id="5197" class="Symbol">:</a> <a id="5199" href="Function.Bundles.html#1565" class="Field">B</a> <a id="5201" class="Symbol"></a> <a id="5203" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="5211" href="Function.Bundles.html#5211" class="Field">cong₁</a> <a id="5221" class="Symbol">:</a> <a id="5223" href="Function.Bundles.html#5163" class="Field">f</a> <a id="5225" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="5235" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="5240" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="5242" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="5253" href="Function.Bundles.html#5253" class="Field">cong₂</a> <a id="5263" class="Symbol">:</a> <a id="5265" href="Function.Bundles.html#5187" class="Field">g</a> <a id="5267" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="5277" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="5282" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="5284" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="5295" href="Function.Bundles.html#5295" class="Field">inverseʳ</a> <a id="5305" class="Symbol">:</a> <a id="5307" href="Function.Definitions.Core1.html#675" class="Function">Inverseʳ</a> <a id="5316" href="Function.Bundles.html#5163" class="Field">f</a> <a id="5318" href="Function.Bundles.html#5187" class="Field">g</a>
<a id="5325" href="Function.Bundles.html#5325" class="Function">isCongruent</a> <a id="5337" class="Symbol">:</a> <a id="5339" href="Function.Structures.html#841" class="Record">IsCongruent</a> <a id="5351" href="Function.Bundles.html#5163" class="Field">f</a>
<a id="5357" href="Function.Bundles.html#5325" class="Function">isCongruent</a> <a id="5369" class="Symbol">=</a> <a id="5371" class="Keyword">record</a>
<a id="5384" class="Symbol">{</a> <a id="5386" href="Function.Structures.html#907" class="Field">cong</a> <a id="5401" class="Symbol">=</a> <a id="5403" href="Function.Bundles.html#5211" class="Field">cong₁</a>
<a id="5415" class="Symbol">;</a> <a id="5417" href="Function.Structures.html#950" class="Field">isEquivalence₁</a> <a id="5432" class="Symbol">=</a> <a id="5434" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="5448" href="Function.Bundles.html#1405" class="Bound">From</a>
<a id="5459" class="Symbol">;</a> <a id="5461" href="Function.Structures.html#990" class="Field">isEquivalence₂</a> <a id="5476" class="Symbol">=</a> <a id="5478" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="5492" href="Function.Bundles.html#1426" class="Bound">To</a>
<a id="5501" class="Symbol">}</a>
<a id="5508" href="Function.Bundles.html#5508" class="Function">isRightInverse</a> <a id="5523" class="Symbol">:</a> <a id="5525" href="Function.Structures.html#2514" class="Record">IsRightInverse</a> <a id="5540" href="Function.Bundles.html#5163" class="Field">f</a> <a id="5542" href="Function.Bundles.html#5187" class="Field">g</a>
<a id="5548" href="Function.Bundles.html#5508" class="Function">isRightInverse</a> <a id="5563" class="Symbol">=</a> <a id="5565" class="Keyword">record</a>
<a id="5578" class="Symbol">{</a> <a id="5580" href="Function.Structures.html#2595" class="Field">isCongruent</a> <a id="5592" class="Symbol">=</a> <a id="5594" href="Function.Bundles.html#5325" class="Function">isCongruent</a>
<a id="5612" class="Symbol">;</a> <a id="5614" href="Function.Structures.html#2627" class="Field">cong₂</a> <a id="5626" class="Symbol">=</a> <a id="5628" href="Function.Bundles.html#5253" class="Field">cong₂</a>
<a id="5640" class="Symbol">;</a> <a id="5642" href="Function.Structures.html#2667" class="Field">inverseʳ</a> <a id="5654" class="Symbol">=</a> <a id="5656" href="Function.Bundles.html#5295" class="Field">inverseʳ</a>
<a id="5671" class="Symbol">}</a>
<a id="5678" href="Function.Bundles.html#5678" class="Function">equivalence</a> <a id="5690" class="Symbol">:</a> <a id="5692" href="Function.Bundles.html#4169" class="Record">Equivalence</a>
<a id="5708" href="Function.Bundles.html#5678" class="Function">equivalence</a> <a id="5720" class="Symbol">=</a> <a id="5722" class="Keyword">record</a>
<a id="5735" class="Symbol">{</a> <a id="5737" href="Function.Bundles.html#4267" class="Field">cong₁</a> <a id="5743" class="Symbol">=</a> <a id="5745" href="Function.Bundles.html#5211" class="Field">cong₁</a>
<a id="5757" class="Symbol">;</a> <a id="5759" href="Function.Bundles.html#4305" class="Field">cong₂</a> <a id="5765" class="Symbol">=</a> <a id="5767" href="Function.Bundles.html#5253" class="Field">cong₂</a>
<a id="5779" class="Symbol">}</a>
<a id="5785" class="Keyword">record</a> <a id="5792" href="Function.Bundles.html#5792" class="Record">Inverse</a> <a id="5800" class="Symbol">:</a> <a id="5802" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="5806" class="Symbol">(</a><a id="5807" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="5809" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="5811" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="5813" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="5815" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="5818" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="5820" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="5822" class="Symbol">)</a> <a id="5824" class="Keyword">where</a>
<a id="5834" class="Keyword">field</a>
<a id="5846" href="Function.Bundles.html#5846" class="Field">f</a> <a id="5856" class="Symbol">:</a> <a id="5858" href="Function.Bundles.html#1500" class="Function">A</a> <a id="5860" class="Symbol"></a> <a id="5862" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="5870" href="Function.Bundles.html#5870" class="Field">f⁻¹</a> <a id="5880" class="Symbol">:</a> <a id="5882" href="Function.Bundles.html#1565" class="Field">B</a> <a id="5884" class="Symbol"></a> <a id="5886" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="5894" href="Function.Bundles.html#5894" class="Field">cong₁</a> <a id="5904" class="Symbol">:</a> <a id="5906" href="Function.Bundles.html#5846" class="Field">f</a> <a id="5908" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="5918" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="5923" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="5925" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="5936" href="Function.Bundles.html#5936" class="Field">cong₂</a> <a id="5946" class="Symbol">:</a> <a id="5948" href="Function.Bundles.html#5870" class="Field">f⁻¹</a> <a id="5952" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="5962" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="5967" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="5969" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="5980" href="Function.Bundles.html#5980" class="Field">inverse</a> <a id="5990" class="Symbol">:</a> <a id="5992" href="Function.Definitions.html#1191" class="Function">Inverseᵇ</a> <a id="6001" href="Function.Bundles.html#5846" class="Field">f</a> <a id="6003" href="Function.Bundles.html#5870" class="Field">f⁻¹</a>
<a id="6012" href="Function.Bundles.html#6012" class="Function">inverseˡ</a> <a id="6021" class="Symbol">:</a> <a id="6023" href="Function.Definitions.Core2.html#818" class="Function">Inverseˡ</a> <a id="6032" href="Function.Bundles.html#5846" class="Field">f</a> <a id="6034" href="Function.Bundles.html#5870" class="Field">f⁻¹</a>
<a id="6042" href="Function.Bundles.html#6012" class="Function">inverseˡ</a> <a id="6051" class="Symbol">=</a> <a id="6053" href="Agda.Builtin.Sigma.html#252" class="Field">proj₁</a> <a id="6059" href="Function.Bundles.html#5980" class="Field">inverse</a>
<a id="6072" href="Function.Bundles.html#6072" class="Function">inverseʳ</a> <a id="6081" class="Symbol">:</a> <a id="6083" href="Function.Definitions.Core1.html#675" class="Function">Inverseʳ</a> <a id="6092" href="Function.Bundles.html#5846" class="Field">f</a> <a id="6094" href="Function.Bundles.html#5870" class="Field">f⁻¹</a>
<a id="6102" href="Function.Bundles.html#6072" class="Function">inverseʳ</a> <a id="6111" class="Symbol">=</a> <a id="6113" href="Agda.Builtin.Sigma.html#264" class="Field">proj₂</a> <a id="6119" href="Function.Bundles.html#5980" class="Field">inverse</a>
<a id="6132" href="Function.Bundles.html#6132" class="Function">leftInverse</a> <a id="6144" class="Symbol">:</a> <a id="6146" href="Function.Bundles.html#4348" class="Record">LeftInverse</a>
<a id="6162" href="Function.Bundles.html#6132" class="Function">leftInverse</a> <a id="6174" class="Symbol">=</a> <a id="6176" class="Keyword">record</a>
<a id="6189" class="Symbol">{</a> <a id="6191" href="Function.Bundles.html#4454" class="Field">cong₁</a> <a id="6200" class="Symbol">=</a> <a id="6202" href="Function.Bundles.html#5894" class="Field">cong₁</a>
<a id="6214" class="Symbol">;</a> <a id="6216" href="Function.Bundles.html#4496" class="Field">cong₂</a> <a id="6225" class="Symbol">=</a> <a id="6227" href="Function.Bundles.html#5936" class="Field">cong₂</a>
<a id="6239" class="Symbol">;</a> <a id="6241" href="Function.Bundles.html#4538" class="Field">inverseˡ</a> <a id="6250" class="Symbol">=</a> <a id="6252" href="Function.Bundles.html#6012" class="Function">inverseˡ</a>
<a id="6267" class="Symbol">}</a>
<a id="6274" href="Function.Bundles.html#6274" class="Function">rightInverse</a> <a id="6287" class="Symbol">:</a> <a id="6289" href="Function.Bundles.html#5104" class="Record">RightInverse</a>
<a id="6306" href="Function.Bundles.html#6274" class="Function">rightInverse</a> <a id="6319" class="Symbol">=</a> <a id="6321" class="Keyword">record</a>
<a id="6334" class="Symbol">{</a> <a id="6336" href="Function.Bundles.html#5211" class="Field">cong₁</a> <a id="6345" class="Symbol">=</a> <a id="6347" href="Function.Bundles.html#5894" class="Field">cong₁</a>
<a id="6359" class="Symbol">;</a> <a id="6361" href="Function.Bundles.html#5253" class="Field">cong₂</a> <a id="6370" class="Symbol">=</a> <a id="6372" href="Function.Bundles.html#5936" class="Field">cong₂</a>
<a id="6384" class="Symbol">;</a> <a id="6386" href="Function.Bundles.html#5295" class="Field">inverseʳ</a> <a id="6395" class="Symbol">=</a> <a id="6397" href="Function.Bundles.html#6072" class="Function">inverseʳ</a>
<a id="6412" class="Symbol">}</a>
<a id="6419" class="Keyword">open</a> <a id="6424" href="Function.Bundles.html#4348" class="Module">LeftInverse</a> <a id="6436" href="Function.Bundles.html#6132" class="Function">leftInverse</a> <a id="6450" class="Keyword">public</a> <a id="6457" class="Keyword">using</a> <a id="6463" class="Symbol">(</a><a id="6464" href="Function.Bundles.html#4823" class="Function">isLeftInverse</a><a id="6477" class="Symbol">)</a>
<a id="6483" class="Keyword">open</a> <a id="6488" href="Function.Bundles.html#5104" class="Module">RightInverse</a> <a id="6501" href="Function.Bundles.html#6274" class="Function">rightInverse</a> <a id="6514" class="Keyword">public</a> <a id="6521" class="Keyword">using</a> <a id="6527" class="Symbol">(</a><a id="6528" href="Function.Bundles.html#5508" class="Function">isRightInverse</a><a id="6542" class="Symbol">)</a>
<a id="6549" href="Function.Bundles.html#6549" class="Function">isInverse</a> <a id="6559" class="Symbol">:</a> <a id="6561" href="Function.Structures.html#2781" class="Record">IsInverse</a> <a id="6571" href="Function.Bundles.html#5846" class="Field">f</a> <a id="6573" href="Function.Bundles.html#5870" class="Field">f⁻¹</a>
<a id="6581" href="Function.Bundles.html#6549" class="Function">isInverse</a> <a id="6591" class="Symbol">=</a> <a id="6593" class="Keyword">record</a>
<a id="6606" class="Symbol">{</a> <a id="6608" href="Function.Structures.html#2857" class="Field">isLeftInverse</a> <a id="6622" class="Symbol">=</a> <a id="6624" href="Function.Bundles.html#4823" class="Function">isLeftInverse</a>
<a id="6644" class="Symbol">;</a> <a id="6646" href="Function.Structures.html#2895" class="Field">inverseʳ</a> <a id="6660" class="Symbol">=</a> <a id="6662" href="Function.Bundles.html#6072" class="Function">inverseʳ</a>
<a id="6677" class="Symbol">}</a>
<a id="6684" class="Keyword">open</a> <a id="6689" href="Function.Structures.html#2781" class="Module">IsInverse</a> <a id="6699" href="Function.Bundles.html#6549" class="Function">isInverse</a> <a id="6709" class="Keyword">public</a> <a id="6716" class="Keyword">using</a> <a id="6722" class="Symbol">(</a><a id="6723" class="Keyword">module</a> <a id="6730" href="Function.Structures.html#1036" class="Module">Eq₁</a><a id="6733" class="Symbol">;</a> <a id="6735" class="Keyword">module</a> <a id="6742" href="Function.Structures.html#1180" class="Module">Eq₂</a><a id="6745" class="Symbol">)</a>
<a id="6749" class="Comment">------------------------------------------------------------------------</a>
<a id="6822" class="Comment">-- Bundles with three elements</a>
<a id="6856" class="Keyword">record</a> <a id="6863" href="Function.Bundles.html#6863" class="Record">BiEquivalence</a> <a id="6877" class="Symbol">:</a> <a id="6879" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="6883" class="Symbol">(</a><a id="6884" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="6886" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="6888" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="6890" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="6892" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="6895" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="6897" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="6899" class="Symbol">)</a> <a id="6901" class="Keyword">where</a>
<a id="6911" class="Keyword">field</a>
<a id="6923" href="Function.Bundles.html#6923" class="Field">f</a> <a id="6929" class="Symbol">:</a> <a id="6931" href="Function.Bundles.html#1500" class="Function">A</a> <a id="6933" class="Symbol"></a> <a id="6935" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="6943" href="Function.Bundles.html#6943" class="Field">g₁</a> <a id="6949" class="Symbol">:</a> <a id="6951" href="Function.Bundles.html#1565" class="Field">B</a> <a id="6953" class="Symbol"></a> <a id="6955" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="6963" href="Function.Bundles.html#6963" class="Field">g₂</a> <a id="6969" class="Symbol">:</a> <a id="6971" href="Function.Bundles.html#1565" class="Field">B</a> <a id="6973" class="Symbol"></a> <a id="6975" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="6983" href="Function.Bundles.html#6983" class="Field">cong₁</a> <a id="6989" class="Symbol">:</a> <a id="6991" href="Function.Bundles.html#6923" class="Field">f</a> <a id="6993" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="7003" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="7008" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="7010" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="7021" href="Function.Bundles.html#7021" class="Field">cong₂</a> <a id="7027" class="Symbol">:</a> <a id="7029" href="Function.Bundles.html#6943" class="Field">g₁</a> <a id="7032" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="7042" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="7047" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="7049" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="7060" href="Function.Bundles.html#7060" class="Field">cong₃</a> <a id="7066" class="Symbol">:</a> <a id="7068" href="Function.Bundles.html#6963" class="Field">g₂</a> <a id="7071" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="7081" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="7086" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="7088" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="7097" class="Keyword">record</a> <a id="7104" href="Function.Bundles.html#7104" class="Record">BiInverse</a> <a id="7114" class="Symbol">:</a> <a id="7116" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="7120" class="Symbol">(</a><a id="7121" href="Function.Bundles.html#1419" class="Bound">a</a> <a id="7123" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="7125" href="Function.Bundles.html#1438" class="Bound">b</a> <a id="7127" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="7129" href="Function.Bundles.html#1421" class="Bound">ℓ₁</a> <a id="7132" href="Agda.Primitive.html#810" class="Primitive Operator"></a> <a id="7134" href="Function.Bundles.html#1440" class="Bound">ℓ₂</a><a id="7136" class="Symbol">)</a> <a id="7138" class="Keyword">where</a>
<a id="7148" class="Keyword">field</a>
<a id="7160" href="Function.Bundles.html#7160" class="Field">f</a> <a id="7170" class="Symbol">:</a> <a id="7172" href="Function.Bundles.html#1500" class="Function">A</a> <a id="7174" class="Symbol"></a> <a id="7176" href="Function.Bundles.html#1565" class="Field">B</a>
<a id="7184" href="Function.Bundles.html#7184" class="Field">g₁</a> <a id="7194" class="Symbol">:</a> <a id="7196" href="Function.Bundles.html#1565" class="Field">B</a> <a id="7198" class="Symbol"></a> <a id="7200" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="7208" href="Function.Bundles.html#7208" class="Field">g₂</a> <a id="7218" class="Symbol">:</a> <a id="7220" href="Function.Bundles.html#1565" class="Field">B</a> <a id="7222" class="Symbol"></a> <a id="7224" href="Function.Bundles.html#1500" class="Function">A</a>
<a id="7232" href="Function.Bundles.html#7232" class="Field">cong₁</a> <a id="7242" class="Symbol">:</a> <a id="7244" href="Function.Bundles.html#7160" class="Field">f</a> <a id="7246" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="7256" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a> <a id="7261" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="7263" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a>
<a id="7274" href="Function.Bundles.html#7274" class="Field">cong₂</a> <a id="7284" class="Symbol">:</a> <a id="7286" href="Function.Bundles.html#7184" class="Field">g₁</a> <a id="7289" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="7299" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="7304" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="7306" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="7317" href="Function.Bundles.html#7317" class="Field">cong₃</a> <a id="7327" class="Symbol">:</a> <a id="7329" href="Function.Bundles.html#7208" class="Field">g₂</a> <a id="7332" href="Relation.Binary.Core.html#1563" class="Function Operator">Preserves</a> <a id="7342" href="Function.Bundles.html#1575" class="Field Operator">_≈₂_</a> <a id="7347" href="Relation.Binary.Core.html#1563" class="Function Operator"></a> <a id="7349" href="Function.Bundles.html#1510" class="Function Operator">_≈₁_</a>
<a id="7360" href="Function.Bundles.html#7360" class="Field">inverseˡ</a> <a id="7370" class="Symbol">:</a> <a id="7372" href="Function.Definitions.Core2.html#818" class="Function">Inverseˡ</a> <a id="7381" href="Function.Bundles.html#7160" class="Field">f</a> <a id="7383" href="Function.Bundles.html#7184" class="Field">g₁</a>
<a id="7392" href="Function.Bundles.html#7392" class="Field">inverseʳ</a> <a id="7402" class="Symbol">:</a> <a id="7404" href="Function.Definitions.Core1.html#675" class="Function">Inverseʳ</a> <a id="7413" href="Function.Bundles.html#7160" class="Field">f</a> <a id="7415" href="Function.Bundles.html#7208" class="Field">g₂</a>
<a id="7423" href="Function.Bundles.html#7423" class="Function">f-isCongruent</a> <a id="7437" class="Symbol">:</a> <a id="7439" href="Function.Structures.html#841" class="Record">IsCongruent</a> <a id="7451" href="Function.Bundles.html#7160" class="Field">f</a>
<a id="7457" href="Function.Bundles.html#7423" class="Function">f-isCongruent</a> <a id="7471" class="Symbol">=</a> <a id="7473" class="Keyword">record</a>
<a id="7486" class="Symbol">{</a> <a id="7488" href="Function.Structures.html#907" class="Field">cong</a> <a id="7503" class="Symbol">=</a> <a id="7505" href="Function.Bundles.html#7232" class="Field">cong₁</a>
<a id="7517" class="Symbol">;</a> <a id="7519" href="Function.Structures.html#950" class="Field">isEquivalence₁</a> <a id="7534" class="Symbol">=</a> <a id="7536" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="7550" href="Function.Bundles.html#1405" class="Bound">From</a>
<a id="7561" class="Symbol">;</a> <a id="7563" href="Function.Structures.html#990" class="Field">isEquivalence₂</a> <a id="7578" class="Symbol">=</a> <a id="7580" href="Relation.Binary.Bundles.html#1132" class="Field">isEquivalence</a> <a id="7594" href="Function.Bundles.html#1426" class="Bound">To</a>
<a id="7603" class="Symbol">}</a>
<a id="7610" href="Function.Bundles.html#7610" class="Function">isBiInverse</a> <a id="7622" class="Symbol">:</a> <a id="7624" href="Function.Structures.html#3680" class="Record">IsBiInverse</a> <a id="7636" href="Function.Bundles.html#7160" class="Field">f</a> <a id="7638" href="Function.Bundles.html#7184" class="Field">g₁</a> <a id="7641" href="Function.Bundles.html#7208" class="Field">g₂</a>
<a id="7648" href="Function.Bundles.html#7610" class="Function">isBiInverse</a> <a id="7660" class="Symbol">=</a> <a id="7662" class="Keyword">record</a>
<a id="7675" class="Symbol">{</a> <a id="7677" href="Function.Structures.html#3774" class="Field">f-isCongruent</a> <a id="7691" class="Symbol">=</a> <a id="7693" href="Function.Bundles.html#7423" class="Function">f-isCongruent</a>
<a id="7713" class="Symbol">;</a> <a id="7715" href="Function.Structures.html#3808" class="Field">cong₂</a> <a id="7729" class="Symbol">=</a> <a id="7731" href="Function.Bundles.html#7274" class="Field">cong₂</a>
<a id="7743" class="Symbol">;</a> <a id="7745" href="Function.Structures.html#3851" class="Field">inverseˡ</a> <a id="7759" class="Symbol">=</a> <a id="7761" href="Function.Bundles.html#7360" class="Field">inverseˡ</a>
<a id="7776" class="Symbol">;</a> <a id="7778" href="Function.Structures.html#3895" class="Field">cong₃</a> <a id="7792" class="Symbol">=</a> <a id="7794" href="Function.Bundles.html#7317" class="Field">cong₃</a>
<a id="7806" class="Symbol">;</a> <a id="7808" href="Function.Structures.html#3938" class="Field">inverseʳ</a> <a id="7822" class="Symbol">=</a> <a id="7824" href="Function.Bundles.html#7392" class="Field">inverseʳ</a>
<a id="7839" class="Symbol">}</a>
<a id="7846" href="Function.Bundles.html#7846" class="Function">biEquivalence</a> <a id="7860" class="Symbol">:</a> <a id="7862" href="Function.Bundles.html#6863" class="Record">BiEquivalence</a>
<a id="7880" href="Function.Bundles.html#7846" class="Function">biEquivalence</a> <a id="7894" class="Symbol">=</a> <a id="7896" class="Keyword">record</a>
<a id="7909" class="Symbol">{</a> <a id="7911" href="Function.Bundles.html#6983" class="Field">cong₁</a> <a id="7917" class="Symbol">=</a> <a id="7919" href="Function.Bundles.html#7232" class="Field">cong₁</a>
<a id="7931" class="Symbol">;</a> <a id="7933" href="Function.Bundles.html#7021" class="Field">cong₂</a> <a id="7939" class="Symbol">=</a> <a id="7941" href="Function.Bundles.html#7274" class="Field">cong₂</a>
<a id="7953" class="Symbol">;</a> <a id="7955" href="Function.Bundles.html#7060" class="Field">cong₃</a> <a id="7961" class="Symbol">=</a> <a id="7963" href="Function.Bundles.html#7317" class="Field">cong₃</a>
<a id="7975" class="Symbol">}</a>
<a id="7979" class="Comment">------------------------------------------------------------------------</a>
<a id="8052" class="Comment">-- Bundles specialised for propositional equality</a>
<a id="8102" class="Comment">------------------------------------------------------------------------</a>
<a id="8176" class="Keyword">infix</a> <a id="8182" class="Number">3</a> <a id="8184" href="Function.Bundles.html#8221" class="Function Operator">_⟶_</a> <a id="8188" href="Function.Bundles.html#8289" class="Function Operator">_↣_</a> <a id="8192" href="Function.Bundles.html#8362" class="Function Operator">_↠_</a> <a id="8196" href="Function.Bundles.html#8436" class="Function Operator">_⤖_</a> <a id="8200" href="Function.Bundles.html#8509" class="Function Operator">_⇔_</a> <a id="8204" href="Function.Bundles.html#8584" class="Function Operator">_↩_</a> <a id="8208" href="Function.Bundles.html#8659" class="Function Operator">_↪_</a> <a id="8212" href="Function.Bundles.html#8735" class="Function Operator">_↩↪_</a> <a id="8217" href="Function.Bundles.html#8810" class="Function Operator">_↔_</a>
<a id="_⟶_"></a><a id="8221" href="Function.Bundles.html#8221" class="Function Operator">_⟶_</a> <a id="8225" class="Symbol">:</a> <a id="8227" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8231" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8233" class="Symbol"></a> <a id="8235" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8239" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8241" class="Symbol"></a> <a id="8243" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8247" class="Symbol">_</a>
<a id="8249" href="Function.Bundles.html#8249" class="Bound">A</a> <a id="8251" href="Function.Bundles.html#8221" class="Function Operator"></a> <a id="8253" href="Function.Bundles.html#8253" class="Bound">B</a> <a id="8255" class="Symbol">=</a> <a id="8257" href="Function.Bundles.html#1868" class="Record">Func</a> <a id="8262" class="Symbol">(</a><a id="8263" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8272" href="Function.Bundles.html#8249" class="Bound">A</a><a id="8273" class="Symbol">)</a> <a id="8275" class="Symbol">(</a><a id="8276" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8285" href="Function.Bundles.html#8253" class="Bound">B</a><a id="8286" class="Symbol">)</a>
<a id="_↣_"></a><a id="8289" href="Function.Bundles.html#8289" class="Function Operator">_↣_</a> <a id="8293" class="Symbol">:</a> <a id="8295" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8299" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8301" class="Symbol"></a> <a id="8303" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8307" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8309" class="Symbol"></a> <a id="8311" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8315" class="Symbol">_</a>
<a id="8317" href="Function.Bundles.html#8317" class="Bound">A</a> <a id="8319" href="Function.Bundles.html#8289" class="Function Operator"></a> <a id="8321" href="Function.Bundles.html#8321" class="Bound">B</a> <a id="8323" class="Symbol">=</a> <a id="8325" href="Function.Bundles.html#2240" class="Record">Injection</a> <a id="8335" class="Symbol">(</a><a id="8336" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8345" href="Function.Bundles.html#8317" class="Bound">A</a><a id="8346" class="Symbol">)</a> <a id="8348" class="Symbol">(</a><a id="8349" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8358" href="Function.Bundles.html#8321" class="Bound">B</a><a id="8359" class="Symbol">)</a>
<a id="_↠_"></a><a id="8362" href="Function.Bundles.html#8362" class="Function Operator">_↠_</a> <a id="8366" class="Symbol">:</a> <a id="8368" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8372" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8374" class="Symbol"></a> <a id="8376" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8380" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8382" class="Symbol"></a> <a id="8384" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8388" class="Symbol">_</a>
<a id="8390" href="Function.Bundles.html#8390" class="Bound">A</a> <a id="8392" href="Function.Bundles.html#8362" class="Function Operator"></a> <a id="8394" href="Function.Bundles.html#8394" class="Bound">B</a> <a id="8396" class="Symbol">=</a> <a id="8398" href="Function.Bundles.html#2677" class="Record">Surjection</a> <a id="8409" class="Symbol">(</a><a id="8410" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8419" href="Function.Bundles.html#8390" class="Bound">A</a><a id="8420" class="Symbol">)</a> <a id="8422" class="Symbol">(</a><a id="8423" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8432" href="Function.Bundles.html#8394" class="Bound">B</a><a id="8433" class="Symbol">)</a>
<a id="_⤖_"></a><a id="8436" href="Function.Bundles.html#8436" class="Function Operator">_⤖_</a> <a id="8440" class="Symbol">:</a> <a id="8442" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8446" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8448" class="Symbol"></a> <a id="8450" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8454" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8456" class="Symbol"></a> <a id="8458" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8462" class="Symbol">_</a>
<a id="8464" href="Function.Bundles.html#8464" class="Bound">A</a> <a id="8466" href="Function.Bundles.html#8436" class="Function Operator"></a> <a id="8468" href="Function.Bundles.html#8468" class="Bound">B</a> <a id="8470" class="Symbol">=</a> <a id="8472" href="Function.Bundles.html#3229" class="Record">Bijection</a> <a id="8482" class="Symbol">(</a><a id="8483" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8492" href="Function.Bundles.html#8464" class="Bound">A</a><a id="8493" class="Symbol">)</a> <a id="8495" class="Symbol">(</a><a id="8496" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8505" href="Function.Bundles.html#8468" class="Bound">B</a><a id="8506" class="Symbol">)</a>
<a id="_⇔_"></a><a id="8509" href="Function.Bundles.html#8509" class="Function Operator">_⇔_</a> <a id="8513" class="Symbol">:</a> <a id="8515" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8519" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8521" class="Symbol"></a> <a id="8523" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8527" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8529" class="Symbol"></a> <a id="8531" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8535" class="Symbol">_</a>
<a id="8537" href="Function.Bundles.html#8537" class="Bound">A</a> <a id="8539" href="Function.Bundles.html#8509" class="Function Operator"></a> <a id="8541" href="Function.Bundles.html#8541" class="Bound">B</a> <a id="8543" class="Symbol">=</a> <a id="8545" href="Function.Bundles.html#4169" class="Record">Equivalence</a> <a id="8557" class="Symbol">(</a><a id="8558" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8567" href="Function.Bundles.html#8537" class="Bound">A</a><a id="8568" class="Symbol">)</a> <a id="8570" class="Symbol">(</a><a id="8571" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8580" href="Function.Bundles.html#8541" class="Bound">B</a><a id="8581" class="Symbol">)</a>
<a id="_↩_"></a><a id="8584" href="Function.Bundles.html#8584" class="Function Operator">_↩_</a> <a id="8588" class="Symbol">:</a> <a id="8590" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8594" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8596" class="Symbol"></a> <a id="8598" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8602" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8604" class="Symbol"></a> <a id="8606" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8610" class="Symbol">_</a>
<a id="8612" href="Function.Bundles.html#8612" class="Bound">A</a> <a id="8614" href="Function.Bundles.html#8584" class="Function Operator"></a> <a id="8616" href="Function.Bundles.html#8616" class="Bound">B</a> <a id="8618" class="Symbol">=</a> <a id="8620" href="Function.Bundles.html#4348" class="Record">LeftInverse</a> <a id="8632" class="Symbol">(</a><a id="8633" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8642" href="Function.Bundles.html#8612" class="Bound">A</a><a id="8643" class="Symbol">)</a> <a id="8645" class="Symbol">(</a><a id="8646" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8655" href="Function.Bundles.html#8616" class="Bound">B</a><a id="8656" class="Symbol">)</a>
<a id="_↪_"></a><a id="8659" href="Function.Bundles.html#8659" class="Function Operator">_↪_</a> <a id="8663" class="Symbol">:</a> <a id="8665" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8669" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8671" class="Symbol"></a> <a id="8673" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8677" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8679" class="Symbol"></a> <a id="8681" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8685" class="Symbol">_</a>
<a id="8687" href="Function.Bundles.html#8687" class="Bound">A</a> <a id="8689" href="Function.Bundles.html#8659" class="Function Operator"></a> <a id="8691" href="Function.Bundles.html#8691" class="Bound">B</a> <a id="8693" class="Symbol">=</a> <a id="8695" href="Function.Bundles.html#5104" class="Record">RightInverse</a> <a id="8708" class="Symbol">(</a><a id="8709" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8718" href="Function.Bundles.html#8687" class="Bound">A</a><a id="8719" class="Symbol">)</a> <a id="8721" class="Symbol">(</a><a id="8722" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8731" href="Function.Bundles.html#8691" class="Bound">B</a><a id="8732" class="Symbol">)</a>
<a id="_↩↪_"></a><a id="8735" href="Function.Bundles.html#8735" class="Function Operator">_↩↪_</a> <a id="8740" class="Symbol">:</a> <a id="8742" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8746" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8748" class="Symbol"></a> <a id="8750" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8754" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8756" class="Symbol"></a> <a id="8758" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8762" class="Symbol">_</a>
<a id="8764" href="Function.Bundles.html#8764" class="Bound">A</a> <a id="8766" href="Function.Bundles.html#8735" class="Function Operator">↩↪</a> <a id="8769" href="Function.Bundles.html#8769" class="Bound">B</a> <a id="8771" class="Symbol">=</a> <a id="8773" href="Function.Bundles.html#7104" class="Record">BiInverse</a> <a id="8783" class="Symbol">(</a><a id="8784" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8793" href="Function.Bundles.html#8764" class="Bound">A</a><a id="8794" class="Symbol">)</a> <a id="8796" class="Symbol">(</a><a id="8797" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8806" href="Function.Bundles.html#8769" class="Bound">B</a><a id="8807" class="Symbol">)</a>
<a id="_↔_"></a><a id="8810" href="Function.Bundles.html#8810" class="Function Operator">_↔_</a> <a id="8814" class="Symbol">:</a> <a id="8816" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8820" href="Function.Bundles.html#1211" class="Generalizable">a</a> <a id="8822" class="Symbol"></a> <a id="8824" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8828" href="Function.Bundles.html#1213" class="Generalizable">b</a> <a id="8830" class="Symbol"></a> <a id="8832" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="8836" class="Symbol">_</a>
<a id="8838" href="Function.Bundles.html#8838" class="Bound">A</a> <a id="8840" href="Function.Bundles.html#8810" class="Function Operator"></a> <a id="8842" href="Function.Bundles.html#8842" class="Bound">B</a> <a id="8844" class="Symbol">=</a> <a id="8846" href="Function.Bundles.html#5792" class="Record">Inverse</a> <a id="8854" class="Symbol">(</a><a id="8855" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8864" href="Function.Bundles.html#8838" class="Bound">A</a><a id="8865" class="Symbol">)</a> <a id="8867" class="Symbol">(</a><a id="8868" href="Relation.Binary.PropositionalEquality.Properties.html#3972" class="Function">≡.setoid</a> <a id="8877" href="Function.Bundles.html#8842" class="Bound">B</a><a id="8878" class="Symbol">)</a>
<a id="8881" class="Comment">-- We now define some constructors for the above that</a>
<a id="8935" class="Comment">-- automatically provide the required congruency proofs.</a>
<a id="8993" class="Keyword">module</a> <a id="9000" href="Function.Bundles.html#9000" class="Module">_</a> <a id="9002" class="Symbol">{</a><a id="9003" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9005" class="Symbol">:</a> <a id="9007" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="9011" href="Function.Bundles.html#1211" class="Generalizable">a</a><a id="9012" class="Symbol">}</a> <a id="9014" class="Symbol">{</a><a id="9015" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="9017" class="Symbol">:</a> <a id="9019" href="Agda.Primitive.html#326" class="Primitive">Set</a> <a id="9023" href="Function.Bundles.html#1213" class="Generalizable">b</a><a id="9024" class="Symbol">}</a> <a id="9026" class="Keyword">where</a>
<a id="9035" class="Keyword">open</a> <a id="9040" href="Function.Definitions.html" class="Module">FunctionDefinitions</a> <a id="9060" class="Symbol">{</a><a id="9061" class="Argument">A</a> <a id="9063" class="Symbol">=</a> <a id="9065" href="Function.Bundles.html#9003" class="Bound">A</a><a id="9066" class="Symbol">}</a> <a id="9068" class="Symbol">{</a><a id="9069" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9070" class="Symbol">}</a> <a id="9072" href="Agda.Builtin.Equality.html#151" class="Datatype Operator">_≡_</a> <a id="9076" href="Agda.Builtin.Equality.html#151" class="Datatype Operator">_≡_</a>
<a id="9083" href="Function.Bundles.html#9083" class="Function">mk⟶</a> <a id="9087" class="Symbol">:</a> <a id="9089" class="Symbol">(</a><a id="9090" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9092" class="Symbol"></a> <a id="9094" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9095" class="Symbol">)</a> <a id="9097" class="Symbol"></a> <a id="9099" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9101" href="Function.Bundles.html#8221" class="Function Operator"></a> <a id="9103" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="9107" href="Function.Bundles.html#9083" class="Function">mk⟶</a> <a id="9111" href="Function.Bundles.html#9111" class="Bound">f</a> <a id="9113" class="Symbol">=</a> <a id="9115" class="Keyword">record</a>
<a id="9126" class="Symbol">{</a> <a id="9128" href="Function.Bundles.html#1919" class="Field">f</a> <a id="9138" class="Symbol">=</a> <a id="9140" href="Function.Bundles.html#9111" class="Bound">f</a>
<a id="9146" class="Symbol">;</a> <a id="9148" href="Function.Bundles.html#1938" class="Field">cong</a> <a id="9158" class="Symbol">=</a> <a id="9160" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9167" href="Function.Bundles.html#9111" class="Bound">f</a>
<a id="9173" class="Symbol">}</a>
<a id="9178" href="Function.Bundles.html#9178" class="Function">mk↣</a> <a id="9182" class="Symbol">:</a> <a id="9184" class="Symbol"></a> <a id="9186" class="Symbol">{</a><a id="9187" href="Function.Bundles.html#9187" class="Bound">f</a> <a id="9189" class="Symbol">:</a> <a id="9191" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9193" class="Symbol"></a> <a id="9195" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9196" class="Symbol">}</a> <a id="9198" class="Symbol"></a> <a id="9200" href="Function.Definitions.html#889" class="Function">Injective</a> <a id="9210" href="Function.Bundles.html#9187" class="Bound">f</a> <a id="9212" class="Symbol"></a> <a id="9214" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9216" href="Function.Bundles.html#8289" class="Function Operator"></a> <a id="9218" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="9222" href="Function.Bundles.html#9178" class="Function">mk↣</a> <a id="9226" class="Symbol">{</a><a id="9227" href="Function.Bundles.html#9227" class="Bound">f</a><a id="9228" class="Symbol">}</a> <a id="9230" href="Function.Bundles.html#9230" class="Bound">inj</a> <a id="9234" class="Symbol">=</a> <a id="9236" class="Keyword">record</a>
<a id="9247" class="Symbol">{</a> <a id="9249" href="Function.Bundles.html#2296" class="Field">f</a> <a id="9259" class="Symbol">=</a> <a id="9261" href="Function.Bundles.html#9227" class="Bound">f</a>
<a id="9267" class="Symbol">;</a> <a id="9269" href="Function.Bundles.html#2322" class="Field">cong</a> <a id="9279" class="Symbol">=</a> <a id="9281" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9288" href="Function.Bundles.html#9227" class="Bound">f</a>
<a id="9294" class="Symbol">;</a> <a id="9296" href="Function.Bundles.html#2366" class="Field">injective</a> <a id="9306" class="Symbol">=</a> <a id="9308" href="Function.Bundles.html#9230" class="Bound">inj</a>
<a id="9316" class="Symbol">}</a>
<a id="9321" href="Function.Bundles.html#9321" class="Function">mk↠</a> <a id="9325" class="Symbol">:</a> <a id="9327" class="Symbol"></a> <a id="9329" class="Symbol">{</a><a id="9330" href="Function.Bundles.html#9330" class="Bound">f</a> <a id="9332" class="Symbol">:</a> <a id="9334" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9336" class="Symbol"></a> <a id="9338" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9339" class="Symbol">}</a> <a id="9341" class="Symbol"></a> <a id="9343" href="Function.Definitions.Core2.html#663" class="Function">Surjective</a> <a id="9354" href="Function.Bundles.html#9330" class="Bound">f</a> <a id="9356" class="Symbol"></a> <a id="9358" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9360" href="Function.Bundles.html#8362" class="Function Operator"></a> <a id="9362" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="9366" href="Function.Bundles.html#9321" class="Function">mk↠</a> <a id="9370" class="Symbol">{</a><a id="9371" href="Function.Bundles.html#9371" class="Bound">f</a><a id="9372" class="Symbol">}</a> <a id="9374" href="Function.Bundles.html#9374" class="Bound">surj</a> <a id="9379" class="Symbol">=</a> <a id="9381" class="Keyword">record</a>
<a id="9392" class="Symbol">{</a> <a id="9394" href="Function.Bundles.html#2734" class="Field">f</a> <a id="9405" class="Symbol">=</a> <a id="9407" href="Function.Bundles.html#9371" class="Bound">f</a>
<a id="9413" class="Symbol">;</a> <a id="9415" href="Function.Bundles.html#2759" class="Field">cong</a> <a id="9426" class="Symbol">=</a> <a id="9428" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9435" href="Function.Bundles.html#9371" class="Bound">f</a>
<a id="9441" class="Symbol">;</a> <a id="9443" href="Function.Bundles.html#2802" class="Field">surjective</a> <a id="9454" class="Symbol">=</a> <a id="9456" href="Function.Bundles.html#9374" class="Bound">surj</a>
<a id="9465" class="Symbol">}</a>
<a id="9470" href="Function.Bundles.html#9470" class="Function">mk⤖</a> <a id="9474" class="Symbol">:</a> <a id="9476" class="Symbol"></a> <a id="9478" class="Symbol">{</a><a id="9479" href="Function.Bundles.html#9479" class="Bound">f</a> <a id="9481" class="Symbol">:</a> <a id="9483" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9485" class="Symbol"></a> <a id="9487" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9488" class="Symbol">}</a> <a id="9490" class="Symbol"></a> <a id="9492" href="Function.Definitions.html#1019" class="Function">Bijective</a> <a id="9502" href="Function.Bundles.html#9479" class="Bound">f</a> <a id="9504" class="Symbol"></a> <a id="9506" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9508" href="Function.Bundles.html#8436" class="Function Operator"></a> <a id="9510" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="9514" href="Function.Bundles.html#9470" class="Function">mk⤖</a> <a id="9518" class="Symbol">{</a><a id="9519" href="Function.Bundles.html#9519" class="Bound">f</a><a id="9520" class="Symbol">}</a> <a id="9522" href="Function.Bundles.html#9522" class="Bound">bij</a> <a id="9526" class="Symbol">=</a> <a id="9528" class="Keyword">record</a>
<a id="9539" class="Symbol">{</a> <a id="9541" href="Function.Bundles.html#3285" class="Field">f</a> <a id="9551" class="Symbol">=</a> <a id="9553" href="Function.Bundles.html#9519" class="Bound">f</a>
<a id="9559" class="Symbol">;</a> <a id="9561" href="Function.Bundles.html#3309" class="Field">cong</a> <a id="9571" class="Symbol">=</a> <a id="9573" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9580" href="Function.Bundles.html#9519" class="Bound">f</a>
<a id="9586" class="Symbol">;</a> <a id="9588" href="Function.Bundles.html#3351" class="Field">bijective</a> <a id="9598" class="Symbol">=</a> <a id="9600" href="Function.Bundles.html#9522" class="Bound">bij</a>
<a id="9608" class="Symbol">}</a>
<a id="9613" href="Function.Bundles.html#9613" class="Function">mk⇔</a> <a id="9617" class="Symbol">:</a> <a id="9619" class="Symbol"></a> <a id="9621" class="Symbol">(</a><a id="9622" href="Function.Bundles.html#9622" class="Bound">f</a> <a id="9624" class="Symbol">:</a> <a id="9626" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9628" class="Symbol"></a> <a id="9630" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9631" class="Symbol">)</a> <a id="9633" class="Symbol">(</a><a id="9634" href="Function.Bundles.html#9634" class="Bound">g</a> <a id="9636" class="Symbol">:</a> <a id="9638" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="9640" class="Symbol"></a> <a id="9642" href="Function.Bundles.html#9003" class="Bound">A</a><a id="9643" class="Symbol">)</a> <a id="9645" class="Symbol"></a> <a id="9647" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9649" href="Function.Bundles.html#8509" class="Function Operator"></a> <a id="9651" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="9655" href="Function.Bundles.html#9613" class="Function">mk⇔</a> <a id="9659" href="Function.Bundles.html#9659" class="Bound">f</a> <a id="9661" href="Function.Bundles.html#9661" class="Bound">g</a> <a id="9663" class="Symbol">=</a> <a id="9665" class="Keyword">record</a>
<a id="9676" class="Symbol">{</a> <a id="9678" href="Function.Bundles.html#4227" class="Field">f</a> <a id="9684" class="Symbol">=</a> <a id="9686" href="Function.Bundles.html#9659" class="Bound">f</a>
<a id="9692" class="Symbol">;</a> <a id="9694" href="Function.Bundles.html#4247" class="Field">g</a> <a id="9700" class="Symbol">=</a> <a id="9702" href="Function.Bundles.html#9661" class="Bound">g</a>
<a id="9708" class="Symbol">;</a> <a id="9710" href="Function.Bundles.html#4267" class="Field">cong₁</a> <a id="9716" class="Symbol">=</a> <a id="9718" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9725" href="Function.Bundles.html#9659" class="Bound">f</a>
<a id="9731" class="Symbol">;</a> <a id="9733" href="Function.Bundles.html#4305" class="Field">cong₂</a> <a id="9739" class="Symbol">=</a> <a id="9741" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9748" href="Function.Bundles.html#9661" class="Bound">g</a>
<a id="9754" class="Symbol">}</a>
<a id="9759" href="Function.Bundles.html#9759" class="Function">mk↩</a> <a id="9763" class="Symbol">:</a> <a id="9765" class="Symbol"></a> <a id="9767" class="Symbol">{</a><a id="9768" href="Function.Bundles.html#9768" class="Bound">f</a> <a id="9770" class="Symbol">:</a> <a id="9772" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9774" class="Symbol"></a> <a id="9776" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9777" class="Symbol">}</a> <a id="9779" class="Symbol">{</a><a id="9780" href="Function.Bundles.html#9780" class="Bound">g</a> <a id="9782" class="Symbol">:</a> <a id="9784" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="9786" class="Symbol"></a> <a id="9788" href="Function.Bundles.html#9003" class="Bound">A</a><a id="9789" class="Symbol">}</a> <a id="9791" class="Symbol"></a> <a id="9793" href="Function.Definitions.Core2.html#818" class="Function">Inverseˡ</a> <a id="9802" href="Function.Bundles.html#9768" class="Bound">f</a> <a id="9804" href="Function.Bundles.html#9780" class="Bound">g</a> <a id="9806" class="Symbol"></a> <a id="9808" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9810" href="Function.Bundles.html#8584" class="Function Operator"></a> <a id="9812" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="9816" href="Function.Bundles.html#9759" class="Function">mk↩</a> <a id="9820" class="Symbol">{</a><a id="9821" href="Function.Bundles.html#9821" class="Bound">f</a><a id="9822" class="Symbol">}</a> <a id="9824" class="Symbol">{</a><a id="9825" href="Function.Bundles.html#9825" class="Bound">g</a><a id="9826" class="Symbol">}</a> <a id="9828" href="Function.Bundles.html#9828" class="Bound">invˡ</a> <a id="9833" class="Symbol">=</a> <a id="9835" class="Keyword">record</a>
<a id="9846" class="Symbol">{</a> <a id="9848" href="Function.Bundles.html#4406" class="Field">f</a> <a id="9857" class="Symbol">=</a> <a id="9859" href="Function.Bundles.html#9821" class="Bound">f</a>
<a id="9865" class="Symbol">;</a> <a id="9867" href="Function.Bundles.html#4430" class="Field">g</a> <a id="9876" class="Symbol">=</a> <a id="9878" href="Function.Bundles.html#9825" class="Bound">g</a>
<a id="9884" class="Symbol">;</a> <a id="9886" href="Function.Bundles.html#4454" class="Field">cong₁</a> <a id="9895" class="Symbol">=</a> <a id="9897" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9904" href="Function.Bundles.html#9821" class="Bound">f</a>
<a id="9910" class="Symbol">;</a> <a id="9912" href="Function.Bundles.html#4496" class="Field">cong₂</a> <a id="9921" class="Symbol">=</a> <a id="9923" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="9930" href="Function.Bundles.html#9825" class="Bound">g</a>
<a id="9936" class="Symbol">;</a> <a id="9938" href="Function.Bundles.html#4538" class="Field">inverseˡ</a> <a id="9947" class="Symbol">=</a> <a id="9949" href="Function.Bundles.html#9828" class="Bound">invˡ</a>
<a id="9958" class="Symbol">}</a>
<a id="9963" href="Function.Bundles.html#9963" class="Function">mk↪</a> <a id="9967" class="Symbol">:</a> <a id="9969" class="Symbol"></a> <a id="9971" class="Symbol">{</a><a id="9972" href="Function.Bundles.html#9972" class="Bound">f</a> <a id="9974" class="Symbol">:</a> <a id="9976" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="9978" class="Symbol"></a> <a id="9980" href="Function.Bundles.html#9015" class="Bound">B</a><a id="9981" class="Symbol">}</a> <a id="9983" class="Symbol">{</a><a id="9984" href="Function.Bundles.html#9984" class="Bound">g</a> <a id="9986" class="Symbol">:</a> <a id="9988" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="9990" class="Symbol"></a> <a id="9992" href="Function.Bundles.html#9003" class="Bound">A</a><a id="9993" class="Symbol">}</a> <a id="9995" class="Symbol"></a> <a id="9997" href="Function.Definitions.Core1.html#675" class="Function">Inverseʳ</a> <a id="10006" href="Function.Bundles.html#9972" class="Bound">f</a> <a id="10008" href="Function.Bundles.html#9984" class="Bound">g</a> <a id="10010" class="Symbol"></a> <a id="10012" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10014" href="Function.Bundles.html#8659" class="Function Operator"></a> <a id="10016" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="10020" href="Function.Bundles.html#9963" class="Function">mk↪</a> <a id="10024" class="Symbol">{</a><a id="10025" href="Function.Bundles.html#10025" class="Bound">f</a><a id="10026" class="Symbol">}</a> <a id="10028" class="Symbol">{</a><a id="10029" href="Function.Bundles.html#10029" class="Bound">g</a><a id="10030" class="Symbol">}</a> <a id="10032" href="Function.Bundles.html#10032" class="Bound">invʳ</a> <a id="10037" class="Symbol">=</a> <a id="10039" class="Keyword">record</a>
<a id="10050" class="Symbol">{</a> <a id="10052" href="Function.Bundles.html#5163" class="Field">f</a> <a id="10061" class="Symbol">=</a> <a id="10063" href="Function.Bundles.html#10025" class="Bound">f</a>
<a id="10069" class="Symbol">;</a> <a id="10071" href="Function.Bundles.html#5187" class="Field">g</a> <a id="10080" class="Symbol">=</a> <a id="10082" href="Function.Bundles.html#10029" class="Bound">g</a>
<a id="10088" class="Symbol">;</a> <a id="10090" href="Function.Bundles.html#5211" class="Field">cong₁</a> <a id="10099" class="Symbol">=</a> <a id="10101" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10108" href="Function.Bundles.html#10025" class="Bound">f</a>
<a id="10114" class="Symbol">;</a> <a id="10116" href="Function.Bundles.html#5253" class="Field">cong₂</a> <a id="10125" class="Symbol">=</a> <a id="10127" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10134" href="Function.Bundles.html#10029" class="Bound">g</a>
<a id="10140" class="Symbol">;</a> <a id="10142" href="Function.Bundles.html#5295" class="Field">inverseʳ</a> <a id="10151" class="Symbol">=</a> <a id="10153" href="Function.Bundles.html#10032" class="Bound">invʳ</a>
<a id="10162" class="Symbol">}</a>
<a id="10167" href="Function.Bundles.html#10167" class="Function">mk↩↪</a> <a id="10172" class="Symbol">:</a> <a id="10174" class="Symbol"></a> <a id="10176" class="Symbol">{</a><a id="10177" href="Function.Bundles.html#10177" class="Bound">f</a> <a id="10179" class="Symbol">:</a> <a id="10181" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10183" class="Symbol"></a> <a id="10185" href="Function.Bundles.html#9015" class="Bound">B</a><a id="10186" class="Symbol">}</a> <a id="10188" class="Symbol">{</a><a id="10189" href="Function.Bundles.html#10189" class="Bound">g₁</a> <a id="10192" class="Symbol">:</a> <a id="10194" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="10196" class="Symbol"></a> <a id="10198" href="Function.Bundles.html#9003" class="Bound">A</a><a id="10199" class="Symbol">}</a> <a id="10201" class="Symbol">{</a><a id="10202" href="Function.Bundles.html#10202" class="Bound">g₂</a> <a id="10205" class="Symbol">:</a> <a id="10207" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="10209" class="Symbol"></a> <a id="10211" href="Function.Bundles.html#9003" class="Bound">A</a><a id="10212" class="Symbol">}</a> <a id="10214" class="Symbol"></a>
<a id="10225" href="Function.Definitions.Core2.html#818" class="Function">Inverseˡ</a> <a id="10234" href="Function.Bundles.html#10177" class="Bound">f</a> <a id="10236" href="Function.Bundles.html#10189" class="Bound">g₁</a> <a id="10239" class="Symbol"></a> <a id="10241" href="Function.Definitions.Core1.html#675" class="Function">Inverseʳ</a> <a id="10250" href="Function.Bundles.html#10177" class="Bound">f</a> <a id="10252" href="Function.Bundles.html#10202" class="Bound">g₂</a> <a id="10255" class="Symbol"></a> <a id="10257" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10259" href="Function.Bundles.html#8735" class="Function Operator">↩↪</a> <a id="10262" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="10266" href="Function.Bundles.html#10167" class="Function">mk↩↪</a> <a id="10271" class="Symbol">{</a><a id="10272" href="Function.Bundles.html#10272" class="Bound">f</a><a id="10273" class="Symbol">}</a> <a id="10275" class="Symbol">{</a><a id="10276" href="Function.Bundles.html#10276" class="Bound">g₁</a><a id="10278" class="Symbol">}</a> <a id="10280" class="Symbol">{</a><a id="10281" href="Function.Bundles.html#10281" class="Bound">g₂</a><a id="10283" class="Symbol">}</a> <a id="10285" href="Function.Bundles.html#10285" class="Bound">invˡ</a> <a id="10290" href="Function.Bundles.html#10290" class="Bound">invʳ</a> <a id="10295" class="Symbol">=</a> <a id="10297" class="Keyword">record</a>
<a id="10308" class="Symbol">{</a> <a id="10310" href="Function.Bundles.html#7160" class="Field">f</a> <a id="10319" class="Symbol">=</a> <a id="10321" href="Function.Bundles.html#10272" class="Bound">f</a>
<a id="10327" class="Symbol">;</a> <a id="10329" href="Function.Bundles.html#7184" class="Field">g₁</a> <a id="10338" class="Symbol">=</a> <a id="10340" href="Function.Bundles.html#10276" class="Bound">g₁</a>
<a id="10347" class="Symbol">;</a> <a id="10349" href="Function.Bundles.html#7208" class="Field">g₂</a> <a id="10358" class="Symbol">=</a> <a id="10360" href="Function.Bundles.html#10281" class="Bound">g₂</a>
<a id="10367" class="Symbol">;</a> <a id="10369" href="Function.Bundles.html#7232" class="Field">cong₁</a> <a id="10378" class="Symbol">=</a> <a id="10380" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10387" href="Function.Bundles.html#10272" class="Bound">f</a>
<a id="10393" class="Symbol">;</a> <a id="10395" href="Function.Bundles.html#7274" class="Field">cong₂</a> <a id="10404" class="Symbol">=</a> <a id="10406" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10413" href="Function.Bundles.html#10276" class="Bound">g₁</a>
<a id="10420" class="Symbol">;</a> <a id="10422" href="Function.Bundles.html#7317" class="Field">cong₃</a> <a id="10431" class="Symbol">=</a> <a id="10433" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10440" href="Function.Bundles.html#10281" class="Bound">g₂</a>
<a id="10447" class="Symbol">;</a> <a id="10449" href="Function.Bundles.html#7360" class="Field">inverseˡ</a> <a id="10458" class="Symbol">=</a> <a id="10460" href="Function.Bundles.html#10285" class="Bound">invˡ</a>
<a id="10469" class="Symbol">;</a> <a id="10471" href="Function.Bundles.html#7392" class="Field">inverseʳ</a> <a id="10480" class="Symbol">=</a> <a id="10482" href="Function.Bundles.html#10290" class="Bound">invʳ</a>
<a id="10491" class="Symbol">}</a>
<a id="10496" href="Function.Bundles.html#10496" class="Function">mk↔</a> <a id="10500" class="Symbol">:</a> <a id="10502" class="Symbol"></a> <a id="10504" class="Symbol">{</a><a id="10505" href="Function.Bundles.html#10505" class="Bound">f</a> <a id="10507" class="Symbol">:</a> <a id="10509" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10511" class="Symbol"></a> <a id="10513" href="Function.Bundles.html#9015" class="Bound">B</a><a id="10514" class="Symbol">}</a> <a id="10516" class="Symbol">{</a><a id="10517" href="Function.Bundles.html#10517" class="Bound">f⁻¹</a> <a id="10521" class="Symbol">:</a> <a id="10523" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="10525" class="Symbol"></a> <a id="10527" href="Function.Bundles.html#9003" class="Bound">A</a><a id="10528" class="Symbol">}</a> <a id="10530" class="Symbol"></a> <a id="10532" href="Function.Definitions.html#1191" class="Function">Inverseᵇ</a> <a id="10541" href="Function.Bundles.html#10505" class="Bound">f</a> <a id="10543" href="Function.Bundles.html#10517" class="Bound">f⁻¹</a> <a id="10547" class="Symbol"></a> <a id="10549" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10551" href="Function.Bundles.html#8810" class="Function Operator"></a> <a id="10553" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="10557" href="Function.Bundles.html#10496" class="Function">mk↔</a> <a id="10561" class="Symbol">{</a><a id="10562" href="Function.Bundles.html#10562" class="Bound">f</a><a id="10563" class="Symbol">}</a> <a id="10565" class="Symbol">{</a><a id="10566" href="Function.Bundles.html#10566" class="Bound">f⁻¹</a><a id="10569" class="Symbol">}</a> <a id="10571" href="Function.Bundles.html#10571" class="Bound">inv</a> <a id="10575" class="Symbol">=</a> <a id="10577" class="Keyword">record</a>
<a id="10588" class="Symbol">{</a> <a id="10590" href="Function.Bundles.html#5846" class="Field">f</a> <a id="10598" class="Symbol">=</a> <a id="10600" href="Function.Bundles.html#10562" class="Bound">f</a>
<a id="10606" class="Symbol">;</a> <a id="10608" href="Function.Bundles.html#5870" class="Field">f⁻¹</a> <a id="10616" class="Symbol">=</a> <a id="10618" href="Function.Bundles.html#10566" class="Bound">f⁻¹</a>
<a id="10626" class="Symbol">;</a> <a id="10628" href="Function.Bundles.html#5894" class="Field">cong₁</a> <a id="10636" class="Symbol">=</a> <a id="10638" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10645" href="Function.Bundles.html#10562" class="Bound">f</a>
<a id="10651" class="Symbol">;</a> <a id="10653" href="Function.Bundles.html#5936" class="Field">cong₂</a> <a id="10661" class="Symbol">=</a> <a id="10663" href="Relation.Binary.PropositionalEquality.Core.html#1130" class="Function">≡.cong</a> <a id="10670" href="Function.Bundles.html#10566" class="Bound">f⁻¹</a>
<a id="10678" class="Symbol">;</a> <a id="10680" href="Function.Bundles.html#5980" class="Field">inverse</a> <a id="10688" class="Symbol">=</a> <a id="10690" href="Function.Bundles.html#10571" class="Bound">inv</a>
<a id="10698" class="Symbol">}</a>
<a id="10703" class="Comment">-- Sometimes the implicit arguments above cannot be inferred</a>
<a id="10766" href="Function.Bundles.html#10766" class="Function">mk↔</a> <a id="10771" class="Symbol">:</a> <a id="10773" class="Symbol"></a> <a id="10775" class="Symbol">(</a><a id="10776" href="Function.Bundles.html#10776" class="Bound">f</a> <a id="10778" class="Symbol">:</a> <a id="10780" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10782" class="Symbol"></a> <a id="10784" href="Function.Bundles.html#9015" class="Bound">B</a><a id="10785" class="Symbol">)</a> <a id="10787" class="Symbol">(</a><a id="10788" href="Function.Bundles.html#10788" class="Bound">f⁻¹</a> <a id="10792" class="Symbol">:</a> <a id="10794" href="Function.Bundles.html#9015" class="Bound">B</a> <a id="10796" class="Symbol"></a> <a id="10798" href="Function.Bundles.html#9003" class="Bound">A</a><a id="10799" class="Symbol">)</a> <a id="10801" class="Symbol"></a> <a id="10803" href="Function.Definitions.Core2.html#818" class="Function">Inverseˡ</a> <a id="10812" href="Function.Bundles.html#10776" class="Bound">f</a> <a id="10814" href="Function.Bundles.html#10788" class="Bound">f⁻¹</a> <a id="10818" class="Symbol"></a> <a id="10820" href="Function.Definitions.Core1.html#675" class="Function">Inverseʳ</a> <a id="10829" href="Function.Bundles.html#10776" class="Bound">f</a> <a id="10831" href="Function.Bundles.html#10788" class="Bound">f⁻¹</a> <a id="10835" class="Symbol"></a> <a id="10837" href="Function.Bundles.html#9003" class="Bound">A</a> <a id="10839" href="Function.Bundles.html#8810" class="Function Operator"></a> <a id="10841" href="Function.Bundles.html#9015" class="Bound">B</a>
<a id="10845" href="Function.Bundles.html#10766" class="Function">mk↔</a> <a id="10850" href="Function.Bundles.html#10850" class="Bound">f</a> <a id="10852" href="Function.Bundles.html#10852" class="Bound">f⁻¹</a> <a id="10856" href="Function.Bundles.html#10856" class="Bound">invˡ</a> <a id="10861" href="Function.Bundles.html#10861" class="Bound">invʳ</a> <a id="10866" class="Symbol">=</a> <a id="10868" href="Function.Bundles.html#10496" class="Function">mk↔</a> <a id="10872" class="Symbol">{</a><a id="10873" class="Argument">f</a> <a id="10875" class="Symbol">=</a> <a id="10877" href="Function.Bundles.html#10850" class="Bound">f</a><a id="10878" class="Symbol">}</a> <a id="10880" class="Symbol">{</a><a id="10881" class="Argument">f⁻¹</a> <a id="10885" class="Symbol">=</a> <a id="10887" href="Function.Bundles.html#10852" class="Bound">f⁻¹</a><a id="10890" class="Symbol">}</a> <a id="10892" class="Symbol">(</a><a id="10893" href="Function.Bundles.html#10856" class="Bound">invˡ</a> <a id="10898" href="Agda.Builtin.Sigma.html#236" class="InductiveConstructor Operator">,</a> <a id="10900" href="Function.Bundles.html#10861" class="Bound">invʳ</a><a id="10904" class="Symbol">)</a>
</pre></body></html>