mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
133 lines
33 KiB
HTML
133 lines
33 KiB
HTML
|
<!DOCTYPE HTML>
|
|||
|
<html><head><meta charset="utf-8"><title>Function.Surjection</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">-- Surjections</a>
|
|||
|
<a id="121" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
|
|||
|
<a id="195" class="Symbol">{-#</a> <a id="199" class="Keyword">OPTIONS</a> <a id="207" class="Pragma">--cubical-compatible</a> <a id="228" class="Pragma">--safe</a> <a id="235" class="Symbol">#-}</a>
|
|||
|
|
|||
|
<a id="240" class="Comment">-- Note: use of the standard function hierarchy is encouraged. The</a>
|
|||
|
<a id="307" class="Comment">-- module `Function` re-exports `Surjective`, `IsSurjection` and</a>
|
|||
|
<a id="372" class="Comment">-- `Surjection`. The alternative definitions found in this file will</a>
|
|||
|
<a id="441" class="Comment">-- eventually be deprecated.</a>
|
|||
|
|
|||
|
<a id="471" class="Keyword">module</a> <a id="478" href="Function.Surjection.html" class="Module">Function.Surjection</a> <a id="498" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="505" class="Keyword">open</a> <a id="510" class="Keyword">import</a> <a id="517" href="Level.html" class="Module">Level</a>
|
|||
|
<a id="523" class="Keyword">open</a> <a id="528" class="Keyword">import</a> <a id="535" href="Function.Equality.html" class="Module">Function.Equality</a> <a id="553" class="Symbol">as</a> <a id="556" class="Module">F</a>
|
|||
|
<a id="560" class="Keyword">using</a> <a id="566" class="Symbol">(</a><a id="567" href="Function.Equality.html#1227" class="Function Operator">_⟶_</a><a id="570" class="Symbol">)</a> <a id="572" class="Keyword">renaming</a> <a id="581" class="Symbol">(</a><a id="582" href="Function.Equality.html#1540" class="Function Operator">_∘_</a> <a id="586" class="Symbol">to</a> <a id="589" class="Function Operator">_⟪∘⟫_</a><a id="594" class="Symbol">)</a>
|
|||
|
<a id="596" class="Keyword">open</a> <a id="601" class="Keyword">import</a> <a id="608" href="Function.Equivalence.html" class="Module">Function.Equivalence</a> <a id="629" class="Keyword">using</a> <a id="635" class="Symbol">(</a><a id="636" href="Function.Equivalence.html#838" class="Record">Equivalence</a><a id="647" class="Symbol">)</a>
|
|||
|
<a id="649" class="Keyword">open</a> <a id="654" class="Keyword">import</a> <a id="661" href="Function.Injection.html" class="Module">Function.Injection</a> <a id="690" class="Keyword">hiding</a> <a id="697" class="Symbol">(</a><a id="698" href="Function.Injection.html#2060" class="Function">id</a><a id="700" class="Symbol">;</a> <a id="702" href="Function.Injection.html#2171" class="Function Operator">_∘_</a><a id="705" class="Symbol">;</a> <a id="707" href="Function.Injection.html#1727" class="Function">injection</a><a id="716" class="Symbol">)</a>
|
|||
|
<a id="718" class="Keyword">open</a> <a id="723" class="Keyword">import</a> <a id="730" href="Function.LeftInverse.html" class="Module">Function.LeftInverse</a> <a id="751" class="Symbol">as</a> <a id="754" class="Module">Left</a> <a id="759" class="Keyword">hiding</a> <a id="766" class="Symbol">(</a><a id="767" href="Function.LeftInverse.html#3422" class="Function">id</a><a id="769" class="Symbol">;</a> <a id="771" href="Function.LeftInverse.html#3611" class="Function Operator">_∘_</a><a id="774" class="Symbol">)</a>
|
|||
|
<a id="776" class="Keyword">open</a> <a id="781" class="Keyword">import</a> <a id="788" href="Data.Product.html" class="Module">Data.Product</a>
|
|||
|
<a id="801" class="Keyword">open</a> <a id="806" class="Keyword">import</a> <a id="813" href="Relation.Binary.html" class="Module">Relation.Binary</a>
|
|||
|
<a id="829" class="Keyword">open</a> <a id="834" class="Keyword">import</a> <a id="841" href="Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a> <a id="879" class="Symbol">as</a> <a id="882" class="Module">P</a> <a id="884" class="Keyword">using</a> <a id="890" class="Symbol">(</a><a id="891" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">_≡_</a><a id="894" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="897" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="970" class="Comment">-- Surjective functions.</a>
|
|||
|
|
|||
|
<a id="996" class="Keyword">record</a> <a id="Surjective"></a><a id="1003" href="Function.Surjection.html#1003" class="Record">Surjective</a> <a id="1014" class="Symbol">{</a><a id="1015" href="Function.Surjection.html#1015" class="Bound">f₁</a> <a id="1018" href="Function.Surjection.html#1018" class="Bound">f₂</a> <a id="1021" href="Function.Surjection.html#1021" class="Bound">t₁</a> <a id="1024" href="Function.Surjection.html#1024" class="Bound">t₂</a><a id="1026" class="Symbol">}</a>
|
|||
|
<a id="1046" class="Symbol">{</a><a id="1047" href="Function.Surjection.html#1047" class="Bound">From</a> <a id="1052" class="Symbol">:</a> <a id="1054" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="1061" href="Function.Surjection.html#1015" class="Bound">f₁</a> <a id="1064" href="Function.Surjection.html#1018" class="Bound">f₂</a><a id="1066" class="Symbol">}</a> <a id="1068" class="Symbol">{</a><a id="1069" href="Function.Surjection.html#1069" class="Bound">To</a> <a id="1072" class="Symbol">:</a> <a id="1074" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="1081" href="Function.Surjection.html#1021" class="Bound">t₁</a> <a id="1084" href="Function.Surjection.html#1024" class="Bound">t₂</a><a id="1086" class="Symbol">}</a>
|
|||
|
<a id="1106" class="Symbol">(</a><a id="1107" href="Function.Surjection.html#1107" class="Bound">to</a> <a id="1110" class="Symbol">:</a> <a id="1112" href="Function.Surjection.html#1047" class="Bound">From</a> <a id="1117" href="Function.Equality.html#1227" class="Function Operator">⟶</a> <a id="1119" href="Function.Surjection.html#1069" class="Bound">To</a><a id="1121" class="Symbol">)</a> <a id="1123" class="Symbol">:</a>
|
|||
|
<a id="1143" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1147" class="Symbol">(</a><a id="1148" href="Function.Surjection.html#1015" class="Bound">f₁</a> <a id="1151" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1153" href="Function.Surjection.html#1018" class="Bound">f₂</a> <a id="1156" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1158" href="Function.Surjection.html#1021" class="Bound">t₁</a> <a id="1161" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1163" href="Function.Surjection.html#1024" class="Bound">t₂</a><a id="1165" class="Symbol">)</a> <a id="1167" class="Keyword">where</a>
|
|||
|
<a id="1175" class="Keyword">field</a>
|
|||
|
<a id="Surjective.from"></a><a id="1185" href="Function.Surjection.html#1185" class="Field">from</a> <a id="1202" class="Symbol">:</a> <a id="1204" href="Function.Surjection.html#1069" class="Bound">To</a> <a id="1207" href="Function.Equality.html#1227" class="Function Operator">⟶</a> <a id="1209" href="Function.Surjection.html#1047" class="Bound">From</a>
|
|||
|
<a id="Surjective.right-inverse-of"></a><a id="1218" href="Function.Surjection.html#1218" class="Field">right-inverse-of</a> <a id="1235" class="Symbol">:</a> <a id="1237" href="Function.Surjection.html#1185" class="Field">from</a> <a id="1242" href="Function.LeftInverse.html#1198" class="Function Operator">RightInverseOf</a> <a id="1257" href="Function.Surjection.html#1107" class="Bound">to</a>
|
|||
|
|
|||
|
<a id="1261" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="1334" class="Comment">-- The set of all surjections from one setoid to another.</a>
|
|||
|
|
|||
|
<a id="1393" class="Keyword">record</a> <a id="Surjection"></a><a id="1400" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="1411" class="Symbol">{</a><a id="1412" href="Function.Surjection.html#1412" class="Bound">f₁</a> <a id="1415" href="Function.Surjection.html#1415" class="Bound">f₂</a> <a id="1418" href="Function.Surjection.html#1418" class="Bound">t₁</a> <a id="1421" href="Function.Surjection.html#1421" class="Bound">t₂</a><a id="1423" class="Symbol">}</a>
|
|||
|
<a id="1443" class="Symbol">(</a><a id="1444" href="Function.Surjection.html#1444" class="Bound">From</a> <a id="1449" class="Symbol">:</a> <a id="1451" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="1458" href="Function.Surjection.html#1412" class="Bound">f₁</a> <a id="1461" href="Function.Surjection.html#1415" class="Bound">f₂</a><a id="1463" class="Symbol">)</a> <a id="1465" class="Symbol">(</a><a id="1466" href="Function.Surjection.html#1466" class="Bound">To</a> <a id="1469" class="Symbol">:</a> <a id="1471" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="1478" href="Function.Surjection.html#1418" class="Bound">t₁</a> <a id="1481" href="Function.Surjection.html#1421" class="Bound">t₂</a><a id="1483" class="Symbol">)</a> <a id="1485" class="Symbol">:</a>
|
|||
|
<a id="1505" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1509" class="Symbol">(</a><a id="1510" href="Function.Surjection.html#1412" class="Bound">f₁</a> <a id="1513" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1515" href="Function.Surjection.html#1415" class="Bound">f₂</a> <a id="1518" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1520" href="Function.Surjection.html#1418" class="Bound">t₁</a> <a id="1523" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1525" href="Function.Surjection.html#1421" class="Bound">t₂</a><a id="1527" class="Symbol">)</a> <a id="1529" class="Keyword">where</a>
|
|||
|
<a id="1537" class="Keyword">field</a>
|
|||
|
<a id="Surjection.to"></a><a id="1547" href="Function.Surjection.html#1547" class="Field">to</a> <a id="1558" class="Symbol">:</a> <a id="1560" href="Function.Surjection.html#1444" class="Bound">From</a> <a id="1565" href="Function.Equality.html#1227" class="Function Operator">⟶</a> <a id="1567" href="Function.Surjection.html#1466" class="Bound">To</a>
|
|||
|
<a id="Surjection.surjective"></a><a id="1574" href="Function.Surjection.html#1574" class="Field">surjective</a> <a id="1585" class="Symbol">:</a> <a id="1587" href="Function.Surjection.html#1003" class="Record">Surjective</a> <a id="1598" href="Function.Surjection.html#1547" class="Field">to</a>
|
|||
|
|
|||
|
<a id="1604" class="Keyword">open</a> <a id="1609" href="Function.Surjection.html#1003" class="Module">Surjective</a> <a id="1620" href="Function.Surjection.html#1574" class="Field">surjective</a> <a id="1631" class="Keyword">public</a>
|
|||
|
|
|||
|
<a id="Surjection.right-inverse"></a><a id="1641" href="Function.Surjection.html#1641" class="Function">right-inverse</a> <a id="1655" class="Symbol">:</a> <a id="1657" href="Function.LeftInverse.html#2540" class="Function">RightInverse</a> <a id="1670" href="Function.Surjection.html#1444" class="Bound">From</a> <a id="1675" href="Function.Surjection.html#1466" class="Bound">To</a>
|
|||
|
<a id="1680" href="Function.Surjection.html#1641" class="Function">right-inverse</a> <a id="1694" class="Symbol">=</a> <a id="1696" class="Keyword">record</a>
|
|||
|
<a id="1707" class="Symbol">{</a> <a id="1709" href="Function.LeftInverse.html#1635" class="Field">to</a> <a id="1725" class="Symbol">=</a> <a id="1727" href="Function.Surjection.html#1185" class="Function">from</a>
|
|||
|
<a id="1736" class="Symbol">;</a> <a id="1738" href="Function.LeftInverse.html#1667" class="Field">from</a> <a id="1754" class="Symbol">=</a> <a id="1756" href="Function.Surjection.html#1547" class="Field">to</a>
|
|||
|
<a id="1763" class="Symbol">;</a> <a id="1765" href="Function.LeftInverse.html#1699" class="Field">left-inverse-of</a> <a id="1781" class="Symbol">=</a> <a id="1783" href="Function.Surjection.html#1218" class="Function">right-inverse-of</a>
|
|||
|
<a id="1804" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="1809" class="Keyword">open</a> <a id="1814" href="Function.LeftInverse.html#1485" class="Module">LeftInverse</a> <a id="1826" href="Function.Surjection.html#1641" class="Function">right-inverse</a> <a id="1840" class="Keyword">public</a>
|
|||
|
<a id="1851" class="Keyword">using</a> <a id="1857" class="Symbol">()</a> <a id="1860" class="Keyword">renaming</a> <a id="1869" class="Symbol">(</a><a id="1870" href="Function.LeftInverse.html#2264" class="Function">to-from</a> <a id="1878" class="Symbol">to</a> <a id="1881" class="Function">from-to</a><a id="1888" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="Surjection.injective"></a><a id="1893" href="Function.Surjection.html#1893" class="Function">injective</a> <a id="1903" class="Symbol">:</a> <a id="1905" href="Function.Injection.html#856" class="Function">Injective</a> <a id="1915" href="Function.Surjection.html#1185" class="Function">from</a>
|
|||
|
<a id="1922" href="Function.Surjection.html#1893" class="Function">injective</a> <a id="1932" class="Symbol">=</a> <a id="1934" href="Function.LeftInverse.html#1839" class="Function">LeftInverse.injective</a> <a id="1956" href="Function.Surjection.html#1641" class="Function">right-inverse</a>
|
|||
|
|
|||
|
<a id="Surjection.injection"></a><a id="1973" href="Function.Surjection.html#1973" class="Function">injection</a> <a id="1983" class="Symbol">:</a> <a id="1985" href="Function.Injection.html#1231" class="Record">Injection</a> <a id="1995" href="Function.Surjection.html#1466" class="Bound">To</a> <a id="1998" href="Function.Surjection.html#1444" class="Bound">From</a>
|
|||
|
<a id="2005" href="Function.Surjection.html#1973" class="Function">injection</a> <a id="2015" class="Symbol">=</a> <a id="2017" href="Function.LeftInverse.html#2075" class="Function">LeftInverse.injection</a> <a id="2039" href="Function.Surjection.html#1641" class="Function">right-inverse</a>
|
|||
|
|
|||
|
<a id="Surjection.equivalence"></a><a id="2056" href="Function.Surjection.html#2056" class="Function">equivalence</a> <a id="2068" class="Symbol">:</a> <a id="2070" href="Function.Equivalence.html#838" class="Record">Equivalence</a> <a id="2082" href="Function.Surjection.html#1444" class="Bound">From</a> <a id="2087" href="Function.Surjection.html#1466" class="Bound">To</a>
|
|||
|
<a id="2092" href="Function.Surjection.html#2056" class="Function">equivalence</a> <a id="2104" class="Symbol">=</a> <a id="2106" class="Keyword">record</a>
|
|||
|
<a id="2117" class="Symbol">{</a> <a id="2119" href="Function.Equivalence.html#988" class="Field">to</a> <a id="2124" class="Symbol">=</a> <a id="2126" href="Function.Surjection.html#1547" class="Field">to</a>
|
|||
|
<a id="2133" class="Symbol">;</a> <a id="2135" href="Function.Equivalence.html#1009" class="Field">from</a> <a id="2140" class="Symbol">=</a> <a id="2142" href="Function.Surjection.html#1185" class="Function">from</a>
|
|||
|
<a id="2151" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="2154" class="Comment">-- Right inverses can be turned into surjections.</a>
|
|||
|
|
|||
|
<a id="fromRightInverse"></a><a id="2205" href="Function.Surjection.html#2205" class="Function">fromRightInverse</a> <a id="2222" class="Symbol">:</a>
|
|||
|
<a id="2226" class="Symbol">∀</a> <a id="2228" class="Symbol">{</a><a id="2229" href="Function.Surjection.html#2229" class="Bound">f₁</a> <a id="2232" href="Function.Surjection.html#2232" class="Bound">f₂</a> <a id="2235" href="Function.Surjection.html#2235" class="Bound">t₁</a> <a id="2238" href="Function.Surjection.html#2238" class="Bound">t₂</a><a id="2240" class="Symbol">}</a> <a id="2242" class="Symbol">{</a><a id="2243" href="Function.Surjection.html#2243" class="Bound">From</a> <a id="2248" class="Symbol">:</a> <a id="2250" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="2257" href="Function.Surjection.html#2229" class="Bound">f₁</a> <a id="2260" href="Function.Surjection.html#2232" class="Bound">f₂</a><a id="2262" class="Symbol">}</a> <a id="2264" class="Symbol">{</a><a id="2265" href="Function.Surjection.html#2265" class="Bound">To</a> <a id="2268" class="Symbol">:</a> <a id="2270" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="2277" href="Function.Surjection.html#2235" class="Bound">t₁</a> <a id="2280" href="Function.Surjection.html#2238" class="Bound">t₂</a><a id="2282" class="Symbol">}</a> <a id="2284" class="Symbol">→</a>
|
|||
|
<a id="2288" href="Function.LeftInverse.html#2540" class="Function">RightInverse</a> <a id="2301" href="Function.Surjection.html#2243" class="Bound">From</a> <a id="2306" href="Function.Surjection.html#2265" class="Bound">To</a> <a id="2309" class="Symbol">→</a> <a id="2311" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="2322" href="Function.Surjection.html#2243" class="Bound">From</a> <a id="2327" href="Function.Surjection.html#2265" class="Bound">To</a>
|
|||
|
<a id="2330" href="Function.Surjection.html#2205" class="Function">fromRightInverse</a> <a id="2347" href="Function.Surjection.html#2347" class="Bound">r</a> <a id="2349" class="Symbol">=</a> <a id="2351" class="Keyword">record</a>
|
|||
|
<a id="2360" class="Symbol">{</a> <a id="2362" href="Function.Surjection.html#1547" class="Field">to</a> <a id="2373" class="Symbol">=</a> <a id="2375" href="Function.LeftInverse.html#1667" class="Field">from</a>
|
|||
|
<a id="2382" class="Symbol">;</a> <a id="2384" href="Function.Surjection.html#1574" class="Field">surjective</a> <a id="2395" class="Symbol">=</a> <a id="2397" class="Keyword">record</a>
|
|||
|
<a id="2408" class="Symbol">{</a> <a id="2410" href="Function.Surjection.html#1185" class="Field">from</a> <a id="2427" class="Symbol">=</a> <a id="2429" href="Function.LeftInverse.html#1635" class="Field">to</a>
|
|||
|
<a id="2436" class="Symbol">;</a> <a id="2438" href="Function.Surjection.html#1218" class="Field">right-inverse-of</a> <a id="2455" class="Symbol">=</a> <a id="2457" href="Function.LeftInverse.html#1699" class="Field">left-inverse-of</a>
|
|||
|
<a id="2477" class="Symbol">}</a>
|
|||
|
<a id="2481" class="Symbol">}</a> <a id="2483" class="Keyword">where</a> <a id="2489" class="Keyword">open</a> <a id="2494" href="Function.LeftInverse.html#1485" class="Module">LeftInverse</a> <a id="2506" href="Function.Surjection.html#2347" class="Bound">r</a>
|
|||
|
|
|||
|
<a id="2509" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="2582" class="Comment">-- The set of all surjections from one set to another (i.e. sujections</a>
|
|||
|
<a id="2653" class="Comment">-- with propositional equality)</a>
|
|||
|
|
|||
|
<a id="2686" class="Keyword">infix</a> <a id="2692" class="Number">3</a> <a id="2694" href="Function.Surjection.html#2699" class="Function Operator">_↠_</a>
|
|||
|
|
|||
|
<a id="_↠_"></a><a id="2699" href="Function.Surjection.html#2699" class="Function Operator">_↠_</a> <a id="2703" class="Symbol">:</a> <a id="2705" class="Symbol">∀</a> <a id="2707" class="Symbol">{</a><a id="2708" href="Function.Surjection.html#2708" class="Bound">f</a> <a id="2710" href="Function.Surjection.html#2710" class="Bound">t</a><a id="2711" class="Symbol">}</a> <a id="2713" class="Symbol">→</a> <a id="2715" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2719" href="Function.Surjection.html#2708" class="Bound">f</a> <a id="2721" class="Symbol">→</a> <a id="2723" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2727" href="Function.Surjection.html#2710" class="Bound">t</a> <a id="2729" class="Symbol">→</a> <a id="2731" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2735" class="Symbol">_</a>
|
|||
|
<a id="2737" href="Function.Surjection.html#2737" class="Bound">From</a> <a id="2742" href="Function.Surjection.html#2699" class="Function Operator">↠</a> <a id="2744" href="Function.Surjection.html#2744" class="Bound">To</a> <a id="2747" class="Symbol">=</a> <a id="2749" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="2760" class="Symbol">(</a><a id="2761" href="Relation.Binary.PropositionalEquality.Properties.html#3981" class="Function">P.setoid</a> <a id="2770" href="Function.Surjection.html#2737" class="Bound">From</a><a id="2774" class="Symbol">)</a> <a id="2776" class="Symbol">(</a><a id="2777" href="Relation.Binary.PropositionalEquality.Properties.html#3981" class="Function">P.setoid</a> <a id="2786" href="Function.Surjection.html#2744" class="Bound">To</a><a id="2788" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="surjection"></a><a id="2791" href="Function.Surjection.html#2791" class="Function">surjection</a> <a id="2802" class="Symbol">:</a> <a id="2804" class="Symbol">∀</a> <a id="2806" class="Symbol">{</a><a id="2807" href="Function.Surjection.html#2807" class="Bound">f</a> <a id="2809" href="Function.Surjection.html#2809" class="Bound">t</a><a id="2810" class="Symbol">}</a> <a id="2812" class="Symbol">{</a><a id="2813" href="Function.Surjection.html#2813" class="Bound">From</a> <a id="2818" class="Symbol">:</a> <a id="2820" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2824" href="Function.Surjection.html#2807" class="Bound">f</a><a id="2825" class="Symbol">}</a> <a id="2827" class="Symbol">{</a><a id="2828" href="Function.Surjection.html#2828" class="Bound">To</a> <a id="2831" class="Symbol">:</a> <a id="2833" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2837" href="Function.Surjection.html#2809" class="Bound">t</a><a id="2838" class="Symbol">}</a> <a id="2840" class="Symbol">→</a>
|
|||
|
<a id="2855" class="Symbol">(</a><a id="2856" href="Function.Surjection.html#2856" class="Bound">to</a> <a id="2859" class="Symbol">:</a> <a id="2861" href="Function.Surjection.html#2813" class="Bound">From</a> <a id="2866" class="Symbol">→</a> <a id="2868" href="Function.Surjection.html#2828" class="Bound">To</a><a id="2870" class="Symbol">)</a> <a id="2872" class="Symbol">(</a><a id="2873" href="Function.Surjection.html#2873" class="Bound">from</a> <a id="2878" class="Symbol">:</a> <a id="2880" href="Function.Surjection.html#2828" class="Bound">To</a> <a id="2883" class="Symbol">→</a> <a id="2885" href="Function.Surjection.html#2813" class="Bound">From</a><a id="2889" class="Symbol">)</a> <a id="2891" class="Symbol">→</a>
|
|||
|
<a id="2906" class="Symbol">(∀</a> <a id="2909" href="Function.Surjection.html#2909" class="Bound">x</a> <a id="2911" class="Symbol">→</a> <a id="2913" href="Function.Surjection.html#2856" class="Bound">to</a> <a id="2916" class="Symbol">(</a><a id="2917" href="Function.Surjection.html#2873" class="Bound">from</a> <a id="2922" href="Function.Surjection.html#2909" class="Bound">x</a><a id="2923" class="Symbol">)</a> <a id="2925" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="2927" href="Function.Surjection.html#2909" class="Bound">x</a><a id="2928" class="Symbol">)</a> <a id="2930" class="Symbol">→</a>
|
|||
|
<a id="2945" href="Function.Surjection.html#2813" class="Bound">From</a> <a id="2950" href="Function.Surjection.html#2699" class="Function Operator">↠</a> <a id="2952" href="Function.Surjection.html#2828" class="Bound">To</a>
|
|||
|
<a id="2955" href="Function.Surjection.html#2791" class="Function">surjection</a> <a id="2966" href="Function.Surjection.html#2966" class="Bound">to</a> <a id="2969" href="Function.Surjection.html#2969" class="Bound">from</a> <a id="2974" href="Function.Surjection.html#2974" class="Bound">surjective</a> <a id="2985" class="Symbol">=</a> <a id="2987" class="Keyword">record</a>
|
|||
|
<a id="2996" class="Symbol">{</a> <a id="2998" href="Function.Surjection.html#1547" class="Field">to</a> <a id="3009" class="Symbol">=</a> <a id="3011" href="Relation.Binary.PropositionalEquality.html#1807" class="Function">P.→-to-⟶</a> <a id="3020" href="Function.Surjection.html#2966" class="Bound">to</a>
|
|||
|
<a id="3025" class="Symbol">;</a> <a id="3027" href="Function.Surjection.html#1574" class="Field">surjective</a> <a id="3038" class="Symbol">=</a> <a id="3040" class="Keyword">record</a>
|
|||
|
<a id="3051" class="Symbol">{</a> <a id="3053" href="Function.Surjection.html#1185" class="Field">from</a> <a id="3070" class="Symbol">=</a> <a id="3072" href="Relation.Binary.PropositionalEquality.html#1807" class="Function">P.→-to-⟶</a> <a id="3081" href="Function.Surjection.html#2969" class="Bound">from</a>
|
|||
|
<a id="3090" class="Symbol">;</a> <a id="3092" href="Function.Surjection.html#1218" class="Field">right-inverse-of</a> <a id="3109" class="Symbol">=</a> <a id="3111" href="Function.Surjection.html#2974" class="Bound">surjective</a>
|
|||
|
<a id="3126" class="Symbol">}</a>
|
|||
|
<a id="3130" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="3133" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="3206" class="Comment">-- Identity and composition.</a>
|
|||
|
|
|||
|
<a id="id"></a><a id="3236" href="Function.Surjection.html#3236" class="Function">id</a> <a id="3239" class="Symbol">:</a> <a id="3241" class="Symbol">∀</a> <a id="3243" class="Symbol">{</a><a id="3244" href="Function.Surjection.html#3244" class="Bound">s₁</a> <a id="3247" href="Function.Surjection.html#3247" class="Bound">s₂</a><a id="3249" class="Symbol">}</a> <a id="3251" class="Symbol">{</a><a id="3252" href="Function.Surjection.html#3252" class="Bound">S</a> <a id="3254" class="Symbol">:</a> <a id="3256" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="3263" href="Function.Surjection.html#3244" class="Bound">s₁</a> <a id="3266" href="Function.Surjection.html#3247" class="Bound">s₂</a><a id="3268" class="Symbol">}</a> <a id="3270" class="Symbol">→</a> <a id="3272" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="3283" href="Function.Surjection.html#3252" class="Bound">S</a> <a id="3285" href="Function.Surjection.html#3252" class="Bound">S</a>
|
|||
|
<a id="3287" href="Function.Surjection.html#3236" class="Function">id</a> <a id="3290" class="Symbol">{</a><a id="3291" class="Argument">S</a> <a id="3293" class="Symbol">=</a> <a id="3295" href="Function.Surjection.html#3295" class="Bound">S</a><a id="3296" class="Symbol">}</a> <a id="3298" class="Symbol">=</a> <a id="3300" class="Keyword">record</a>
|
|||
|
<a id="3309" class="Symbol">{</a> <a id="3311" href="Function.Surjection.html#1547" class="Field">to</a> <a id="3322" class="Symbol">=</a> <a id="3324" href="Function.Equality.html#1437" class="Function">F.id</a>
|
|||
|
<a id="3331" class="Symbol">;</a> <a id="3333" href="Function.Surjection.html#1574" class="Field">surjective</a> <a id="3344" class="Symbol">=</a> <a id="3346" class="Keyword">record</a>
|
|||
|
<a id="3357" class="Symbol">{</a> <a id="3359" href="Function.Surjection.html#1185" class="Field">from</a> <a id="3376" class="Symbol">=</a> <a id="3378" href="Function.LeftInverse.html#1635" class="Field">LeftInverse.to</a> <a id="3406" href="Function.Surjection.html#3483" class="Function">id′</a>
|
|||
|
<a id="3414" class="Symbol">;</a> <a id="3416" href="Function.Surjection.html#1218" class="Field">right-inverse-of</a> <a id="3433" class="Symbol">=</a> <a id="3435" href="Function.LeftInverse.html#1699" class="Field">LeftInverse.left-inverse-of</a> <a id="3463" href="Function.Surjection.html#3483" class="Function">id′</a>
|
|||
|
<a id="3471" class="Symbol">}</a>
|
|||
|
<a id="3475" class="Symbol">}</a> <a id="3477" class="Keyword">where</a> <a id="3483" href="Function.Surjection.html#3483" class="Function">id′</a> <a id="3487" class="Symbol">=</a> <a id="3489" href="Function.LeftInverse.html#3422" class="Function">Left.id</a> <a id="3497" class="Symbol">{</a><a id="3498" class="Argument">S</a> <a id="3500" class="Symbol">=</a> <a id="3502" href="Function.Surjection.html#3295" class="Bound">S</a><a id="3503" class="Symbol">}</a>
|
|||
|
|
|||
|
<a id="3506" class="Keyword">infixr</a> <a id="3513" class="Number">9</a> <a id="3515" href="Function.Surjection.html#3520" class="Function Operator">_∘_</a>
|
|||
|
|
|||
|
<a id="_∘_"></a><a id="3520" href="Function.Surjection.html#3520" class="Function Operator">_∘_</a> <a id="3524" class="Symbol">:</a> <a id="3526" class="Symbol">∀</a> <a id="3528" class="Symbol">{</a><a id="3529" href="Function.Surjection.html#3529" class="Bound">f₁</a> <a id="3532" href="Function.Surjection.html#3532" class="Bound">f₂</a> <a id="3535" href="Function.Surjection.html#3535" class="Bound">m₁</a> <a id="3538" href="Function.Surjection.html#3538" class="Bound">m₂</a> <a id="3541" href="Function.Surjection.html#3541" class="Bound">t₁</a> <a id="3544" href="Function.Surjection.html#3544" class="Bound">t₂</a><a id="3546" class="Symbol">}</a>
|
|||
|
<a id="3556" class="Symbol">{</a><a id="3557" href="Function.Surjection.html#3557" class="Bound">F</a> <a id="3559" class="Symbol">:</a> <a id="3561" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="3568" href="Function.Surjection.html#3529" class="Bound">f₁</a> <a id="3571" href="Function.Surjection.html#3532" class="Bound">f₂</a><a id="3573" class="Symbol">}</a> <a id="3575" class="Symbol">{</a><a id="3576" href="Function.Surjection.html#3576" class="Bound">M</a> <a id="3578" class="Symbol">:</a> <a id="3580" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="3587" href="Function.Surjection.html#3535" class="Bound">m₁</a> <a id="3590" href="Function.Surjection.html#3538" class="Bound">m₂</a><a id="3592" class="Symbol">}</a> <a id="3594" class="Symbol">{</a><a id="3595" href="Function.Surjection.html#3595" class="Bound">T</a> <a id="3597" class="Symbol">:</a> <a id="3599" href="Relation.Binary.Bundles.html#1018" class="Record">Setoid</a> <a id="3606" href="Function.Surjection.html#3541" class="Bound">t₁</a> <a id="3609" href="Function.Surjection.html#3544" class="Bound">t₂</a><a id="3611" class="Symbol">}</a> <a id="3613" class="Symbol">→</a>
|
|||
|
<a id="3621" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="3632" href="Function.Surjection.html#3576" class="Bound">M</a> <a id="3634" href="Function.Surjection.html#3595" class="Bound">T</a> <a id="3636" class="Symbol">→</a> <a id="3638" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="3649" href="Function.Surjection.html#3557" class="Bound">F</a> <a id="3651" href="Function.Surjection.html#3576" class="Bound">M</a> <a id="3653" class="Symbol">→</a> <a id="3655" href="Function.Surjection.html#1400" class="Record">Surjection</a> <a id="3666" href="Function.Surjection.html#3557" class="Bound">F</a> <a id="3668" href="Function.Surjection.html#3595" class="Bound">T</a>
|
|||
|
<a id="3670" href="Function.Surjection.html#3670" class="Bound">f</a> <a id="3672" href="Function.Surjection.html#3520" class="Function Operator">∘</a> <a id="3674" href="Function.Surjection.html#3674" class="Bound">g</a> <a id="3676" class="Symbol">=</a> <a id="3678" class="Keyword">record</a>
|
|||
|
<a id="3687" class="Symbol">{</a> <a id="3689" href="Function.Surjection.html#1547" class="Field">to</a> <a id="3700" class="Symbol">=</a> <a id="3702" href="Function.Surjection.html#1547" class="Field">to</a> <a id="3705" href="Function.Surjection.html#3670" class="Bound">f</a> <a id="3707" href="Function.Surjection.html#589" class="Function Operator">⟪∘⟫</a> <a id="3711" href="Function.Surjection.html#1547" class="Field">to</a> <a id="3714" href="Function.Surjection.html#3674" class="Bound">g</a>
|
|||
|
<a id="3718" class="Symbol">;</a> <a id="3720" href="Function.Surjection.html#1574" class="Field">surjective</a> <a id="3731" class="Symbol">=</a> <a id="3733" class="Keyword">record</a>
|
|||
|
<a id="3744" class="Symbol">{</a> <a id="3746" href="Function.Surjection.html#1185" class="Field">from</a> <a id="3763" class="Symbol">=</a> <a id="3765" href="Function.LeftInverse.html#1635" class="Field">LeftInverse.to</a> <a id="3793" href="Function.Surjection.html#3892" class="Function">g∘f</a>
|
|||
|
<a id="3801" class="Symbol">;</a> <a id="3803" href="Function.Surjection.html#1218" class="Field">right-inverse-of</a> <a id="3820" class="Symbol">=</a> <a id="3822" href="Function.LeftInverse.html#1699" class="Field">LeftInverse.left-inverse-of</a> <a id="3850" href="Function.Surjection.html#3892" class="Function">g∘f</a>
|
|||
|
<a id="3858" class="Symbol">}</a>
|
|||
|
<a id="3862" class="Symbol">}</a>
|
|||
|
<a id="3866" class="Keyword">where</a>
|
|||
|
<a id="3874" class="Keyword">open</a> <a id="3879" href="Function.Surjection.html#1400" class="Module">Surjection</a>
|
|||
|
<a id="3892" href="Function.Surjection.html#3892" class="Function">g∘f</a> <a id="3896" class="Symbol">=</a> <a id="3898" href="Function.LeftInverse.html#3611" class="Function Operator">Left._∘_</a> <a id="3907" class="Symbol">(</a><a id="3908" href="Function.Surjection.html#1641" class="Function">right-inverse</a> <a id="3922" href="Function.Surjection.html#3674" class="Bound">g</a><a id="3923" class="Symbol">)</a> <a id="3925" class="Symbol">(</a><a id="3926" href="Function.Surjection.html#1641" class="Function">right-inverse</a> <a id="3940" href="Function.Surjection.html#3670" class="Bound">f</a><a id="3941" class="Symbol">)</a>
|
|||
|
</pre></body></html>
|