bsc-leon-vatthauer/agda/bsc-thesis/Data.Product.Function.NonDependent.Setoid.html

136 lines
58 KiB
HTML
Raw Normal View History

2024-02-09 17:53:52 +01:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Data.Product.Function.NonDependent.Setoid</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">-- Non-dependent product combinators for setoid equality preserving</a>
<a id="174" class="Comment">-- functions</a>
<a id="187" class="Comment">------------------------------------------------------------------------</a>
<a id="261" class="Symbol">{-#</a> <a id="265" class="Keyword">OPTIONS</a> <a id="273" class="Pragma">--cubical-compatible</a> <a id="294" class="Pragma">--safe</a> <a id="301" class="Symbol">#-}</a>
<a id="306" class="Keyword">module</a> <a id="313" href="Data.Product.Function.NonDependent.Setoid.html" class="Module">Data.Product.Function.NonDependent.Setoid</a> <a id="355" class="Keyword">where</a>
<a id="362" class="Keyword">open</a> <a id="367" class="Keyword">import</a> <a id="374" href="Data.Product.Base.html" class="Module">Data.Product.Base</a> <a id="392" class="Symbol">as</a> <a id="395" class="Module">Prod</a>
<a id="400" class="Keyword">open</a> <a id="405" class="Keyword">import</a> <a id="412" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html" class="Module">Data.Product.Relation.Binary.Pointwise.NonDependent</a>
<a id="464" class="Keyword">open</a> <a id="469" class="Keyword">import</a> <a id="476" href="Level.html" class="Module">Level</a> <a id="482" class="Keyword">using</a> <a id="488" class="Symbol">(</a><a id="489" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="494" class="Symbol">)</a>
<a id="496" class="Keyword">open</a> <a id="501" class="Keyword">import</a> <a id="508" href="Relation.Binary.html" class="Module">Relation.Binary</a>
<a id="524" class="Keyword">open</a> <a id="529" class="Keyword">import</a> <a id="536" href="Function.html" class="Module">Function</a>
<a id="546" class="Keyword">private</a>
<a id="556" class="Keyword">variable</a>
<a id="569" href="Data.Product.Function.NonDependent.Setoid.html#569" class="Generalizable">a₁</a> <a id="572" href="Data.Product.Function.NonDependent.Setoid.html#572" class="Generalizable">a₂</a> <a id="575" href="Data.Product.Function.NonDependent.Setoid.html#575" class="Generalizable">b₁</a> <a id="578" href="Data.Product.Function.NonDependent.Setoid.html#578" class="Generalizable">b₂</a> <a id="581" href="Data.Product.Function.NonDependent.Setoid.html#581" class="Generalizable">c₁</a> <a id="584" href="Data.Product.Function.NonDependent.Setoid.html#584" class="Generalizable">c₂</a> <a id="587" href="Data.Product.Function.NonDependent.Setoid.html#587" class="Generalizable">d₁</a> <a id="590" href="Data.Product.Function.NonDependent.Setoid.html#590" class="Generalizable">d₂</a> <a id="593" class="Symbol">:</a> <a id="595" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="605" href="Data.Product.Function.NonDependent.Setoid.html#605" class="Generalizable">a</a> <a id="607" href="Data.Product.Function.NonDependent.Setoid.html#607" class="Generalizable"></a> <a id="609" class="Symbol">:</a> <a id="611" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="621" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="623" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="625" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="627" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="629" class="Symbol">:</a> <a id="631" href="Relation.Binary.Bundles.html#1080" class="Record">Setoid</a> <a id="638" href="Data.Product.Function.NonDependent.Setoid.html#605" class="Generalizable">a</a> <a id="640" href="Data.Product.Function.NonDependent.Setoid.html#607" class="Generalizable"></a>
<a id="643" class="Comment">------------------------------------------------------------------------</a>
<a id="716" class="Comment">-- Combinators for equality preserving functions</a>
<a id="proj₁ₛ"></a><a id="766" href="Data.Product.Function.NonDependent.Setoid.html#766" class="Function">proj₁ₛ</a> <a id="773" class="Symbol">:</a> <a id="775" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="780" class="Symbol">(</a><a id="781" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="783" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="786" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a><a id="787" class="Symbol">)</a> <a id="789" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a>
<a id="791" href="Data.Product.Function.NonDependent.Setoid.html#766" class="Function">proj₁ₛ</a> <a id="798" class="Symbol">=</a> <a id="800" class="Keyword">record</a> <a id="807" class="Symbol">{</a> <a id="809" href="Function.Bundles.html#2094" class="Field">to</a> <a id="812" class="Symbol">=</a> <a id="814" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="820" class="Symbol">;</a> <a id="822" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="827" class="Symbol">=</a> <a id="829" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="835" class="Symbol">}</a>
<a id="proj₂ₛ"></a><a id="838" href="Data.Product.Function.NonDependent.Setoid.html#838" class="Function">proj₂ₛ</a> <a id="845" class="Symbol">:</a> <a id="847" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="852" class="Symbol">(</a><a id="853" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="855" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="858" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a><a id="859" class="Symbol">)</a> <a id="861" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a>
<a id="863" href="Data.Product.Function.NonDependent.Setoid.html#838" class="Function">proj₂ₛ</a> <a id="870" class="Symbol">=</a> <a id="872" class="Keyword">record</a> <a id="879" class="Symbol">{</a> <a id="881" href="Function.Bundles.html#2094" class="Field">to</a> <a id="884" class="Symbol">=</a> <a id="886" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="892" class="Symbol">;</a> <a id="894" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="899" class="Symbol">=</a> <a id="901" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="907" class="Symbol">}</a>
<a id="&lt;_,_&gt;ₛ"></a><a id="910" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">&lt;_,_&gt;</a> <a id="917" class="Symbol">:</a> <a id="919" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="924" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="926" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="928" class="Symbol"></a> <a id="930" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="935" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="937" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="939" class="Symbol"></a> <a id="941" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="946" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="948" class="Symbol">(</a><a id="949" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="951" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="954" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="955" class="Symbol">)</a>
<a id="957" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">&lt;</a> <a id="959" href="Data.Product.Function.NonDependent.Setoid.html#959" class="Bound">f</a> <a id="961" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">,</a> <a id="963" href="Data.Product.Function.NonDependent.Setoid.html#963" class="Bound">g</a> <a id="965" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">&gt;</a> <a id="968" class="Symbol">=</a> <a id="970" class="Keyword">record</a>
<a id="979" class="Symbol">{</a> <a id="981" href="Function.Bundles.html#2094" class="Field">to</a> <a id="986" class="Symbol">=</a> <a id="988" href="Data.Product.Base.html#2000" class="Function Operator">&lt;</a> <a id="990" href="Function.Bundles.html#2094" class="Field">to</a> <a id="995" href="Data.Product.Function.NonDependent.Setoid.html#959" class="Bound">f</a> <a id="997" href="Data.Product.Base.html#2000" class="Function Operator">,</a> <a id="999" href="Function.Bundles.html#2094" class="Field">to</a> <a id="1004" href="Data.Product.Function.NonDependent.Setoid.html#963" class="Bound">g</a> <a id="1006" href="Data.Product.Base.html#2000" class="Function Operator">&gt;</a>
<a id="1010" class="Symbol">;</a> <a id="1012" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="1017" class="Symbol">=</a> <a id="1019" href="Data.Product.Base.html#2000" class="Function Operator">&lt;</a> <a id="1021" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="1026" href="Data.Product.Function.NonDependent.Setoid.html#959" class="Bound">f</a> <a id="1028" href="Data.Product.Base.html#2000" class="Function Operator">,</a> <a id="1030" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="1035" href="Data.Product.Function.NonDependent.Setoid.html#963" class="Bound">g</a> <a id="1037" href="Data.Product.Base.html#2000" class="Function Operator">&gt;</a>
<a id="1041" class="Symbol">}</a> <a id="1043" class="Keyword">where</a> <a id="1049" class="Keyword">open</a> <a id="1054" href="Function.Bundles.html#2043" class="Module">Func</a>
<a id="swapₛ"></a><a id="1060" href="Data.Product.Function.NonDependent.Setoid.html#1060" class="Function">swapₛ</a> <a id="1066" class="Symbol">:</a> <a id="1068" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="1073" class="Symbol">(</a><a id="1074" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1076" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1079" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a><a id="1080" class="Symbol">)</a> <a id="1082" class="Symbol">(</a><a id="1083" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1085" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1088" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a><a id="1089" class="Symbol">)</a>
<a id="1091" href="Data.Product.Function.NonDependent.Setoid.html#1060" class="Function">swapₛ</a> <a id="1097" class="Symbol">=</a> <a id="1099" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">&lt;</a> <a id="1101" href="Data.Product.Function.NonDependent.Setoid.html#838" class="Function">proj₂ₛ</a> <a id="1108" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">,</a> <a id="1110" href="Data.Product.Function.NonDependent.Setoid.html#766" class="Function">proj₁ₛ</a> <a id="1117" href="Data.Product.Function.NonDependent.Setoid.html#910" class="Function Operator">&gt;</a>
<a id="1121" class="Comment">------------------------------------------------------------------------</a>
<a id="1194" class="Comment">-- Function bundles</a>
<a id="_×-function_"></a><a id="1215" href="Data.Product.Function.NonDependent.Setoid.html#1215" class="Function Operator">_×-function_</a> <a id="1228" class="Symbol">:</a> <a id="1230" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="1235" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1237" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1239" class="Symbol"></a> <a id="1241" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="1246" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="1248" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="1250" class="Symbol"></a> <a id="1252" href="Function.Bundles.html#2043" class="Record">Func</a> <a id="1257" class="Symbol">(</a><a id="1258" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1260" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1263" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="1264" class="Symbol">)</a> <a id="1266" class="Symbol">(</a><a id="1267" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1269" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1272" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="1273" class="Symbol">)</a>
<a id="1275" href="Data.Product.Function.NonDependent.Setoid.html#1275" class="Bound">f</a> <a id="1277" href="Data.Product.Function.NonDependent.Setoid.html#1215" class="Function Operator">×-function</a> <a id="1288" href="Data.Product.Function.NonDependent.Setoid.html#1288" class="Bound">g</a> <a id="1290" class="Symbol">=</a> <a id="1292" class="Keyword">record</a>
<a id="1301" class="Symbol">{</a> <a id="1303" href="Function.Bundles.html#2094" class="Field">to</a> <a id="1309" class="Symbol">=</a> <a id="1311" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1320" class="Symbol">(</a><a id="1321" href="Function.Bundles.html#2094" class="Field">to</a> <a id="1324" href="Data.Product.Function.NonDependent.Setoid.html#1275" class="Bound">f</a><a id="1325" class="Symbol">)</a> <a id="1327" class="Symbol">(</a><a id="1328" href="Function.Bundles.html#2094" class="Field">to</a> <a id="1331" href="Data.Product.Function.NonDependent.Setoid.html#1288" class="Bound">g</a><a id="1332" class="Symbol">)</a>
<a id="1336" class="Symbol">;</a> <a id="1338" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="1344" class="Symbol">=</a> <a id="1346" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1355" class="Symbol">(</a><a id="1356" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="1361" href="Data.Product.Function.NonDependent.Setoid.html#1275" class="Bound">f</a><a id="1362" class="Symbol">)</a> <a id="1364" class="Symbol">(</a><a id="1365" href="Function.Bundles.html#2113" class="Field">cong</a> <a id="1370" href="Data.Product.Function.NonDependent.Setoid.html#1288" class="Bound">g</a><a id="1371" class="Symbol">)</a>
<a id="1375" class="Symbol">}</a> <a id="1377" class="Keyword">where</a> <a id="1383" class="Keyword">open</a> <a id="1388" href="Function.Bundles.html#2043" class="Module">Func</a>
<a id="1394" class="Keyword">infixr</a> <a id="1401" class="Number">2</a> <a id="1403" href="Data.Product.Function.NonDependent.Setoid.html#1451" class="Function Operator">_×-equivalence_</a> <a id="1419" href="Data.Product.Function.NonDependent.Setoid.html#1794" class="Function Operator">_×-injection_</a> <a id="1433" href="Data.Product.Function.NonDependent.Setoid.html#4431" class="Function Operator">_×-left-inverse_</a>
<a id="_×-equivalence_"></a><a id="1451" href="Data.Product.Function.NonDependent.Setoid.html#1451" class="Function Operator">_×-equivalence_</a> <a id="1467" class="Symbol">:</a> <a id="1469" href="Function.Bundles.html#4752" class="Record">Equivalence</a> <a id="1481" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1483" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1485" class="Symbol"></a> <a id="1487" href="Function.Bundles.html#4752" class="Record">Equivalence</a> <a id="1499" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="1501" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="1503" class="Symbol"></a>
<a id="1523" href="Function.Bundles.html#4752" class="Record">Equivalence</a> <a id="1535" class="Symbol">(</a><a id="1536" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1538" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1541" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="1542" class="Symbol">)</a> <a id="1544" class="Symbol">(</a><a id="1545" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1547" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1550" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="1551" class="Symbol">)</a>
<a id="1553" href="Data.Product.Function.NonDependent.Setoid.html#1451" class="Function Operator">_×-equivalence_</a> <a id="1569" href="Data.Product.Function.NonDependent.Setoid.html#1569" class="Bound">f</a> <a id="1571" href="Data.Product.Function.NonDependent.Setoid.html#1571" class="Bound">g</a> <a id="1573" class="Symbol">=</a> <a id="1575" class="Keyword">record</a>
<a id="1584" class="Symbol">{</a> <a id="1586" href="Function.Bundles.html#4810" class="Field">to</a> <a id="1596" class="Symbol">=</a> <a id="1598" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1607" class="Symbol">(</a><a id="1608" href="Function.Bundles.html#4810" class="Field">to</a> <a id="1611" href="Data.Product.Function.NonDependent.Setoid.html#1569" class="Bound">f</a><a id="1612" class="Symbol">)</a> <a id="1614" class="Symbol">(</a><a id="1615" href="Function.Bundles.html#4810" class="Field">to</a> <a id="1618" href="Data.Product.Function.NonDependent.Setoid.html#1571" class="Bound">g</a><a id="1619" class="Symbol">)</a>
<a id="1623" class="Symbol">;</a> <a id="1625" href="Function.Bundles.html#4834" class="Field">from</a> <a id="1635" class="Symbol">=</a> <a id="1637" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1646" class="Symbol">(</a><a id="1647" href="Function.Bundles.html#4834" class="Field">from</a> <a id="1652" href="Data.Product.Function.NonDependent.Setoid.html#1569" class="Bound">f</a><a id="1653" class="Symbol">)</a> <a id="1655" class="Symbol">(</a><a id="1656" href="Function.Bundles.html#4834" class="Field">from</a> <a id="1661" href="Data.Product.Function.NonDependent.Setoid.html#1571" class="Bound">g</a><a id="1662" class="Symbol">)</a>
<a id="1666" class="Symbol">;</a> <a id="1668" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="1678" class="Symbol">=</a> <a id="1680" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1689" class="Symbol">(</a><a id="1690" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="1698" href="Data.Product.Function.NonDependent.Setoid.html#1569" class="Bound">f</a><a id="1699" class="Symbol">)</a> <a id="1701" class="Symbol">(</a><a id="1702" href="Function.Bundles.html#4858" class="Field">to-cong</a> <a id="1710" href="Data.Product.Function.NonDependent.Setoid.html#1571" class="Bound">g</a><a id="1711" class="Symbol">)</a>
<a id="1715" class="Symbol">;</a> <a id="1717" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="1727" class="Symbol">=</a> <a id="1729" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1738" class="Symbol">(</a><a id="1739" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="1749" href="Data.Product.Function.NonDependent.Setoid.html#1569" class="Bound">f</a><a id="1750" class="Symbol">)</a> <a id="1752" class="Symbol">(</a><a id="1753" href="Function.Bundles.html#4899" class="Field">from-cong</a> <a id="1763" href="Data.Product.Function.NonDependent.Setoid.html#1571" class="Bound">g</a><a id="1764" class="Symbol">)</a>
<a id="1768" class="Symbol">}</a> <a id="1770" class="Keyword">where</a> <a id="1776" class="Keyword">open</a> <a id="1781" href="Function.Bundles.html#4752" class="Module">Equivalence</a>
<a id="_×-injection_"></a><a id="1794" href="Data.Product.Function.NonDependent.Setoid.html#1794" class="Function Operator">_×-injection_</a> <a id="1808" class="Symbol">:</a> <a id="1810" href="Function.Bundles.html#2415" class="Record">Injection</a> <a id="1820" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1822" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1824" class="Symbol"></a> <a id="1826" href="Function.Bundles.html#2415" class="Record">Injection</a> <a id="1836" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="1838" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="1840" class="Symbol"></a>
<a id="1858" href="Function.Bundles.html#2415" class="Record">Injection</a> <a id="1868" class="Symbol">(</a><a id="1869" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="1871" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1874" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="1875" class="Symbol">)</a> <a id="1877" class="Symbol">(</a><a id="1878" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="1880" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="1883" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="1884" class="Symbol">)</a>
<a id="1886" href="Data.Product.Function.NonDependent.Setoid.html#1886" class="Bound">f</a> <a id="1888" href="Data.Product.Function.NonDependent.Setoid.html#1794" class="Function Operator">×-injection</a> <a id="1900" href="Data.Product.Function.NonDependent.Setoid.html#1900" class="Bound">g</a> <a id="1902" class="Symbol">=</a> <a id="1904" class="Keyword">record</a>
<a id="1913" class="Symbol">{</a> <a id="1915" href="Function.Bundles.html#2471" class="Field">to</a> <a id="1925" class="Symbol">=</a> <a id="1927" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1936" class="Symbol">(</a><a id="1937" href="Function.Bundles.html#2471" class="Field">to</a> <a id="1940" href="Data.Product.Function.NonDependent.Setoid.html#1886" class="Bound">f</a><a id="1941" class="Symbol">)</a> <a id="1943" class="Symbol">(</a><a id="1944" href="Function.Bundles.html#2471" class="Field">to</a> <a id="1947" href="Data.Product.Function.NonDependent.Setoid.html#1900" class="Bound">g</a><a id="1948" class="Symbol">)</a>
<a id="1952" class="Symbol">;</a> <a id="1954" href="Function.Bundles.html#2497" class="Field">cong</a> <a id="1964" class="Symbol">=</a> <a id="1966" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="1975" class="Symbol">(</a><a id="1976" href="Function.Bundles.html#2497" class="Field">cong</a> <a id="1981" href="Data.Product.Function.NonDependent.Setoid.html#1886" class="Bound">f</a><a id="1982" class="Symbol">)</a> <a id="1984" class="Symbol">(</a><a id="1985" href="Function.Bundles.html#2497" class="Field">cong</a> <a id="1990" href="Data.Product.Function.NonDependent.Setoid.html#1900" class="Bound">g</a><a id="1991" class="Symbol">)</a>
<a id="1995" class="Symbol">;</a> <a id="1997" href="Function.Bundles.html#2540" class="Field">injective</a> <a id="2007" class="Symbol">=</a> <a id="2009" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2018" class="Symbol">(</a><a id="2019" href="Function.Bundles.html#2540" class="Field">injective</a> <a id="2029" href="Data.Product.Function.NonDependent.Setoid.html#1886" class="Bound">f</a><a id="2030" class="Symbol">)</a> <a id="2032" class="Symbol">(</a><a id="2033" href="Function.Bundles.html#2540" class="Field">injective</a> <a id="2043" href="Data.Product.Function.NonDependent.Setoid.html#1900" class="Bound">g</a><a id="2044" class="Symbol">)</a>
<a id="2048" class="Symbol">}</a> <a id="2050" class="Keyword">where</a> <a id="2056" class="Keyword">open</a> <a id="2061" href="Function.Bundles.html#2415" class="Module">Injection</a>
<a id="_×-surjection_"></a><a id="2072" href="Data.Product.Function.NonDependent.Setoid.html#2072" class="Function Operator">_×-surjection_</a> <a id="2087" class="Symbol">:</a> <a id="2089" href="Function.Bundles.html#2865" class="Record">Surjection</a> <a id="2100" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="2102" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="2104" class="Symbol"></a> <a id="2106" href="Function.Bundles.html#2865" class="Record">Surjection</a> <a id="2117" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="2119" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="2121" class="Symbol"></a>
<a id="2140" href="Function.Bundles.html#2865" class="Record">Surjection</a> <a id="2151" class="Symbol">(</a><a id="2152" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="2154" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="2157" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="2158" class="Symbol">)</a> <a id="2160" class="Symbol">(</a><a id="2161" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="2163" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="2166" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="2167" class="Symbol">)</a>
<a id="2169" href="Data.Product.Function.NonDependent.Setoid.html#2169" class="Bound">f</a> <a id="2171" href="Data.Product.Function.NonDependent.Setoid.html#2072" class="Function Operator">×-surjection</a> <a id="2184" href="Data.Product.Function.NonDependent.Setoid.html#2184" class="Bound">g</a> <a id="2186" class="Symbol">=</a> <a id="2188" class="Keyword">record</a>
<a id="2197" class="Symbol">{</a> <a id="2199" href="Function.Bundles.html#2922" class="Field">to</a> <a id="2210" class="Symbol">=</a> <a id="2212" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2221" class="Symbol">(</a><a id="2222" href="Function.Bundles.html#2922" class="Field">to</a> <a id="2225" href="Data.Product.Function.NonDependent.Setoid.html#2169" class="Bound">f</a><a id="2226" class="Symbol">)</a> <a id="2228" class="Symbol">(</a><a id="2229" href="Function.Bundles.html#2922" class="Field">to</a> <a id="2232" href="Data.Product.Function.NonDependent.Setoid.html#2184" class="Bound">g</a><a id="2233" class="Symbol">)</a>
<a id="2237" class="Symbol">;</a> <a id="2239" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="2250" class="Symbol">=</a> <a id="2252" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2261" class="Symbol">(</a><a id="2262" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="2267" href="Data.Product.Function.NonDependent.Setoid.html#2169" class="Bound">f</a><a id="2268" class="Symbol">)</a> <a id="2270" class="Symbol">(</a><a id="2271" href="Function.Bundles.html#2947" class="Field">cong</a> <a id="2276" href="Data.Product.Function.NonDependent.Setoid.html#2184" class="Bound">g</a><a id="2277" class="Symbol">)</a>
<a id="2281" class="Symbol">;</a> <a id="2283" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="2294" class="Symbol">=</a> <a id="2296" class="Symbol">λ</a> <a id="2298" href="Data.Product.Function.NonDependent.Setoid.html#2298" class="Bound">y</a> <a id="2300" class="Symbol"></a> <a id="2302" href="Data.Product.Base.html#2747" class="Function">Prod.zip</a> <a id="2311" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a> <a id="2315" class="Symbol"></a> <a id="2318" href="Data.Product.Function.NonDependent.Setoid.html#2318" class="Bound">ff</a> <a id="2321" href="Data.Product.Function.NonDependent.Setoid.html#2321" class="Bound">gg</a> <a id="2324" href="Data.Product.Function.NonDependent.Setoid.html#2324" class="Bound">x₂</a> <a id="2327" class="Symbol"></a> <a id="2329" class="Symbol">(</a><a id="2330" href="Data.Product.Function.NonDependent.Setoid.html#2318" class="Bound">ff</a> <a id="2333" class="Symbol">(</a><a id="2334" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="2340" href="Data.Product.Function.NonDependent.Setoid.html#2324" class="Bound">x₂</a><a id="2342" class="Symbol">))</a> <a id="2345" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2347" class="Symbol">(</a><a id="2348" href="Data.Product.Function.NonDependent.Setoid.html#2321" class="Bound">gg</a> <a id="2351" class="Symbol">(</a><a id="2352" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="2358" href="Data.Product.Function.NonDependent.Setoid.html#2324" class="Bound">x₂</a><a id="2360" class="Symbol">)))</a> <a id="2364" class="Symbol">(</a><a id="2365" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="2376" href="Data.Product.Function.NonDependent.Setoid.html#2169" class="Bound">f</a> <a id="2378" class="Symbol">(</a><a id="2379" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="2385" href="Data.Product.Function.NonDependent.Setoid.html#2298" class="Bound">y</a><a id="2386" class="Symbol">))</a> <a id="2389" class="Symbol">(</a><a id="2390" href="Function.Bundles.html#2989" class="Field">surjective</a> <a id="2401" href="Data.Product.Function.NonDependent.Setoid.html#2184" class="Bound">g</a> <a id="2403" class="Symbol">(</a><a id="2404" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="2410" href="Data.Product.Function.NonDependent.Setoid.html#2298" class="Bound">y</a><a id="2411" class="Symbol">))</a>
<a id="2416" class="Symbol">}</a> <a id="2418" class="Keyword">where</a> <a id="2424" class="Keyword">open</a> <a id="2429" href="Function.Bundles.html#2865" class="Module">Surjection</a>
<a id="_×-bijection_"></a><a id="2441" href="Data.Product.Function.NonDependent.Setoid.html#2441" class="Function Operator">_×-bijection_</a> <a id="2455" class="Symbol">:</a> <a id="2457" href="Function.Bundles.html#3530" class="Record">Bijection</a> <a id="2467" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="2469" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="2471" class="Symbol"></a> <a id="2473" href="Function.Bundles.html#3530" class="Record">Bijection</a> <a id="2483" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="2485" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="2487" class="Symbol"></a>
<a id="2505" href="Function.Bundles.html#3530" class="Record">Bijection</a> <a id="2515" class="Symbol">(</a><a id="2516" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="2518" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="2521" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="2522" class="Symbol">)</a> <a id="2524" class="Symbol">(</a><a id="2525" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="2527" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="2530" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="2531" class="Symbol">)</a>
<a id="2533" href="Data.Product.Function.NonDependent.Setoid.html#2533" class="Bound">f</a> <a id="2535" href="Data.Product.Function.NonDependent.Setoid.html#2441" class="Function Operator">×-bijection</a> <a id="2547" href="Data.Product.Function.NonDependent.Setoid.html#2547" class="Bound">g</a> <a id="2549" class="Symbol">=</a> <a id="2551" class="Keyword">record</a>
<a id="2560" class="Symbol">{</a> <a id="2562" href="Function.Bundles.html#3586" class="Field">to</a> <a id="2573" class="Symbol">=</a> <a id="2575" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2584" class="Symbol">(</a><a id="2585" href="Function.Bundles.html#3586" class="Field">to</a> <a id="2588" href="Data.Product.Function.NonDependent.Setoid.html#2533" class="Bound">f</a><a id="2589" class="Symbol">)</a> <a id="2591" class="Symbol">(</a><a id="2592" href="Function.Bundles.html#3586" class="Field">to</a> <a id="2595" href="Data.Product.Function.NonDependent.Setoid.html#2547" class="Bound">g</a><a id="2596" class="Symbol">)</a>
<a id="2600" class="Symbol">;</a> <a id="2602" href="Function.Bundles.html#3610" class="Field">cong</a> <a id="2613" class="Symbol">=</a> <a id="2615" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2624" class="Symbol">(</a><a id="2625" href="Function.Bundles.html#3610" class="Field">cong</a> <a id="2630" href="Data.Product.Function.NonDependent.Setoid.html#2533" class="Bound">f</a><a id="2631" class="Symbol">)</a> <a id="2633" class="Symbol">(</a><a id="2634" href="Function.Bundles.html#3610" class="Field">cong</a> <a id="2639" href="Data.Product.Function.NonDependent.Setoid.html#2547" class="Bound">g</a><a id="2640" class="Symbol">)</a>
<a id="2644" class="Symbol">;</a> <a id="2646" href="Function.Bundles.html#3651" class="Field">bijective</a> <a id="2657" class="Symbol">=</a> <a id="2659" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2668" class="Symbol">(</a><a id="2669" href="Function.Bundles.html#3691" class="Function">injective</a> <a id="2679" href="Data.Product.Function.NonDependent.Setoid.html#2533" class="Bound">f</a><a id="2680" class="Symbol">)</a> <a id="2682" class="Symbol">(</a><a id="2683" href="Function.Bundles.html#3691" class="Function">injective</a> <a id="2693" href="Data.Product.Function.NonDependent.Setoid.html#2547" class="Bound">g</a><a id="2694" class="Symbol">)</a> <a id="2696" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a>
<a id="2715" class="Symbol">λ</a> <a id="2717" class="Symbol">{</a> <a id="2719" class="Symbol">(</a><a id="2720" href="Data.Product.Function.NonDependent.Setoid.html#2720" class="Bound">y₀</a> <a id="2723" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2725" href="Data.Product.Function.NonDependent.Setoid.html#2725" class="Bound">y₁</a><a id="2727" class="Symbol">)</a> <a id="2729" class="Symbol"></a> <a id="2731" href="Data.Product.Base.html#2747" class="Function">Prod.zip</a> <a id="2740" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a> <a id="2744" class="Symbol"></a> <a id="2747" class="Symbol">{</a><a id="2748" href="Data.Product.Function.NonDependent.Setoid.html#2748" class="Bound">ff</a> <a id="2751" href="Data.Product.Function.NonDependent.Setoid.html#2751" class="Bound">gg</a> <a id="2754" class="Symbol">(</a><a id="2755" href="Data.Product.Function.NonDependent.Setoid.html#2755" class="Bound">x₀</a> <a id="2758" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2760" href="Data.Product.Function.NonDependent.Setoid.html#2760" class="Bound">x₁</a><a id="2762" class="Symbol">)</a> <a id="2764" class="Symbol"></a> <a id="2766" href="Data.Product.Function.NonDependent.Setoid.html#2748" class="Bound">ff</a> <a id="2769" href="Data.Product.Function.NonDependent.Setoid.html#2755" class="Bound">x₀</a> <a id="2772" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2774" href="Data.Product.Function.NonDependent.Setoid.html#2751" class="Bound">gg</a> <a id="2777" href="Data.Product.Function.NonDependent.Setoid.html#2760" class="Bound">x₁</a><a id="2779" class="Symbol">})</a> <a id="2782" class="Symbol">(</a><a id="2783" href="Function.Bundles.html#3763" class="Function">surjective</a> <a id="2794" href="Data.Product.Function.NonDependent.Setoid.html#2533" class="Bound">f</a> <a id="2796" href="Data.Product.Function.NonDependent.Setoid.html#2720" class="Bound">y₀</a><a id="2798" class="Symbol">)</a> <a id="2800" class="Symbol">(</a><a id="2801" href="Function.Bundles.html#3763" class="Function">surjective</a> <a id="2812" href="Data.Product.Function.NonDependent.Setoid.html#2547" class="Bound">g</a> <a id="2814" href="Data.Product.Function.NonDependent.Setoid.html#2725" class="Bound">y₁</a><a id="2816" class="Symbol">)}</a>
<a id="2821" class="Symbol">}</a> <a id="2823" class="Keyword">where</a> <a id="2829" class="Keyword">open</a> <a id="2834" href="Function.Bundles.html#3530" class="Module">Bijection</a>
<a id="_×-leftInverse_"></a><a id="2845" href="Data.Product.Function.NonDependent.Setoid.html#2845" class="Function Operator">_×-leftInverse_</a> <a id="2861" class="Symbol">:</a> <a id="2863" href="Function.Bundles.html#5375" class="Record">LeftInverse</a> <a id="2875" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="2877" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="2879" class="Symbol"></a> <a id="2881" href="Function.Bundles.html#5375" class="Record">LeftInverse</a> <a id="2893" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="2895" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="2897" class="Symbol"></a>
<a id="2917" href="Function.Bundles.html#5375" class="Record">LeftInverse</a> <a id="2929" class="Symbol">(</a><a id="2930" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="2932" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="2935" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="2936" class="Symbol">)</a> <a id="2938" class="Symbol">(</a><a id="2939" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="2941" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="2944" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="2945" class="Symbol">)</a>
<a id="2947" href="Data.Product.Function.NonDependent.Setoid.html#2947" class="Bound">f</a> <a id="2949" href="Data.Product.Function.NonDependent.Setoid.html#2845" class="Function Operator">×-leftInverse</a> <a id="2963" href="Data.Product.Function.NonDependent.Setoid.html#2963" class="Bound">g</a> <a id="2965" class="Symbol">=</a> <a id="2967" class="Keyword">record</a>
<a id="2976" class="Symbol">{</a> <a id="2978" href="Function.Bundles.html#5433" class="Field">to</a> <a id="2988" class="Symbol">=</a> <a id="2990" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="2999" class="Symbol">(</a><a id="3000" href="Function.Bundles.html#5433" class="Field">to</a> <a id="3003" href="Data.Product.Function.NonDependent.Setoid.html#2947" class="Bound">f</a><a id="3004" class="Symbol">)</a> <a id="3006" class="Symbol">(</a><a id="3007" href="Function.Bundles.html#5433" class="Field">to</a> <a id="3010" href="Data.Product.Function.NonDependent.Setoid.html#2963" class="Bound">g</a><a id="3011" class="Symbol">)</a>
<a id="3015" class="Symbol">;</a> <a id="3017" href="Function.Bundles.html#5457" class="Field">from</a> <a id="3027" class="Symbol">=</a> <a id="3029" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3038" class="Symbol">(</a><a id="3039" href="Function.Bundles.html#5457" class="Field">from</a> <a id="3044" href="Data.Product.Function.NonDependent.Setoid.html#2947" class="Bound">f</a><a id="3045" class="Symbol">)</a> <a id="3047" class="Symbol">(</a><a id="3048" href="Function.Bundles.html#5457" class="Field">from</a> <a id="3053" href="Data.Product.Function.NonDependent.Setoid.html#2963" class="Bound">g</a><a id="3054" class="Symbol">)</a>
<a id="3058" class="Symbol">;</a> <a id="3060" href="Function.Bundles.html#5481" class="Field">to-cong</a> <a id="3070" class="Symbol">=</a> <a id="3072" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3081" class="Symbol">(</a><a id="3082" href="Function.Bundles.html#5481" class="Field">to-cong</a> <a id="3090" href="Data.Product.Function.NonDependent.Setoid.html#2947" class="Bound">f</a><a id="3091" class="Symbol">)</a> <a id="3093" class="Symbol">(</a><a id="3094" href="Function.Bundles.html#5481" class="Field">to-cong</a> <a id="3102" href="Data.Product.Function.NonDependent.Setoid.html#2963" class="Bound">g</a><a id="3103" class="Symbol">)</a>
<a id="3107" class="Symbol">;</a> <a id="3109" href="Function.Bundles.html#5522" class="Field">from-cong</a> <a id="3119" class="Symbol">=</a> <a id="3121" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3130" class="Symbol">(</a><a id="3131" href="Function.Bundles.html#5522" class="Field">from-cong</a> <a id="3141" href="Data.Product.Function.NonDependent.Setoid.html#2947" class="Bound">f</a><a id="3142" class="Symbol">)</a> <a id="3144" class="Symbol">(</a><a id="3145" href="Function.Bundles.html#5522" class="Field">from-cong</a> <a id="3155" href="Data.Product.Function.NonDependent.Setoid.html#2963" class="Bound">g</a><a id="3156" class="Symbol">)</a>
<a id="3160" class="Symbol">;</a> <a id="3162" href="Function.Bundles.html#5565" class="Field">inverseˡ</a> <a id="3173" class="Symbol">=</a> <a id="3175" class="Symbol">λ</a> <a id="3177" href="Data.Product.Function.NonDependent.Setoid.html#3177" class="Bound">x</a> <a id="3179" class="Symbol"></a> <a id="3181" href="Function.Bundles.html#5565" class="Field">inverseˡ</a> <a id="3190" href="Data.Product.Function.NonDependent.Setoid.html#2947" class="Bound">f</a> <a id="3192" class="Symbol">(</a><a id="3193" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="3199" href="Data.Product.Function.NonDependent.Setoid.html#3177" class="Bound">x</a><a id="3200" class="Symbol">)</a> <a id="3202" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3204" href="Function.Bundles.html#5565" class="Field">inverseˡ</a> <a id="3213" href="Data.Product.Function.NonDependent.Setoid.html#2963" class="Bound">g</a> <a id="3215" class="Symbol">(</a><a id="3216" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="3222" href="Data.Product.Function.NonDependent.Setoid.html#3177" class="Bound">x</a><a id="3223" class="Symbol">)</a>
<a id="3227" class="Symbol">}</a> <a id="3229" class="Keyword">where</a> <a id="3235" class="Keyword">open</a> <a id="3240" href="Function.Bundles.html#5375" class="Module">LeftInverse</a>
<a id="_×-rightInverse_"></a><a id="3253" href="Data.Product.Function.NonDependent.Setoid.html#3253" class="Function Operator">_×-rightInverse_</a> <a id="3270" class="Symbol">:</a> <a id="3272" href="Function.Bundles.html#6509" class="Record">RightInverse</a> <a id="3285" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="3287" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="3289" class="Symbol"></a> <a id="3291" href="Function.Bundles.html#6509" class="Record">RightInverse</a> <a id="3304" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="3306" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="3308" class="Symbol"></a>
<a id="3329" href="Function.Bundles.html#6509" class="Record">RightInverse</a> <a id="3342" class="Symbol">(</a><a id="3343" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="3345" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="3348" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="3349" class="Symbol">)</a> <a id="3351" class="Symbol">(</a><a id="3352" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="3354" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="3357" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="3358" class="Symbol">)</a>
<a id="3360" href="Data.Product.Function.NonDependent.Setoid.html#3360" class="Bound">f</a> <a id="3362" href="Data.Product.Function.NonDependent.Setoid.html#3253" class="Function Operator">×-rightInverse</a> <a id="3377" href="Data.Product.Function.NonDependent.Setoid.html#3377" class="Bound">g</a> <a id="3379" class="Symbol">=</a> <a id="3381" class="Keyword">record</a>
<a id="3390" class="Symbol">{</a> <a id="3392" href="Function.Bundles.html#6568" class="Field">to</a> <a id="3402" class="Symbol">=</a> <a id="3404" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3413" class="Symbol">(</a><a id="3414" href="Function.Bundles.html#6568" class="Field">to</a> <a id="3417" href="Data.Product.Function.NonDependent.Setoid.html#3360" class="Bound">f</a><a id="3418" class="Symbol">)</a> <a id="3420" class="Symbol">(</a><a id="3421" href="Function.Bundles.html#6568" class="Field">to</a> <a id="3424" href="Data.Product.Function.NonDependent.Setoid.html#3377" class="Bound">g</a><a id="3425" class="Symbol">)</a>
<a id="3429" class="Symbol">;</a> <a id="3431" href="Function.Bundles.html#6592" class="Field">from</a> <a id="3441" class="Symbol">=</a> <a id="3443" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3452" class="Symbol">(</a><a id="3453" href="Function.Bundles.html#6592" class="Field">from</a> <a id="3458" href="Data.Product.Function.NonDependent.Setoid.html#3360" class="Bound">f</a><a id="3459" class="Symbol">)</a> <a id="3461" class="Symbol">(</a><a id="3462" href="Function.Bundles.html#6592" class="Field">from</a> <a id="3467" href="Data.Product.Function.NonDependent.Setoid.html#3377" class="Bound">g</a><a id="3468" class="Symbol">)</a>
<a id="3472" class="Symbol">;</a> <a id="3474" href="Function.Bundles.html#6616" class="Field">to-cong</a> <a id="3484" class="Symbol">=</a> <a id="3486" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3495" class="Symbol">(</a><a id="3496" href="Function.Bundles.html#6616" class="Field">to-cong</a> <a id="3504" href="Data.Product.Function.NonDependent.Setoid.html#3360" class="Bound">f</a><a id="3505" class="Symbol">)</a> <a id="3507" class="Symbol">(</a><a id="3508" href="Function.Bundles.html#6616" class="Field">to-cong</a> <a id="3516" href="Data.Product.Function.NonDependent.Setoid.html#3377" class="Bound">g</a><a id="3517" class="Symbol">)</a>
<a id="3521" class="Symbol">;</a> <a id="3523" href="Function.Bundles.html#6657" class="Field">from-cong</a> <a id="3533" class="Symbol">=</a> <a id="3535" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3544" class="Symbol">(</a><a id="3545" href="Function.Bundles.html#6657" class="Field">from-cong</a> <a id="3555" href="Data.Product.Function.NonDependent.Setoid.html#3360" class="Bound">f</a><a id="3556" class="Symbol">)</a> <a id="3558" class="Symbol">(</a><a id="3559" href="Function.Bundles.html#6657" class="Field">from-cong</a> <a id="3569" href="Data.Product.Function.NonDependent.Setoid.html#3377" class="Bound">g</a><a id="3570" class="Symbol">)</a>
<a id="3574" class="Symbol">;</a> <a id="3576" href="Function.Bundles.html#6702" class="Field">inverseʳ</a> <a id="3587" class="Symbol">=</a> <a id="3589" class="Symbol">λ</a> <a id="3591" href="Data.Product.Function.NonDependent.Setoid.html#3591" class="Bound">x</a> <a id="3593" class="Symbol"></a> <a id="3595" href="Function.Bundles.html#6702" class="Field">inverseʳ</a> <a id="3604" href="Data.Product.Function.NonDependent.Setoid.html#3360" class="Bound">f</a> <a id="3606" class="Symbol">(</a><a id="3607" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="3613" href="Data.Product.Function.NonDependent.Setoid.html#3591" class="Bound">x</a><a id="3614" class="Symbol">)</a> <a id="3616" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3618" href="Function.Bundles.html#6702" class="Field">inverseʳ</a> <a id="3627" href="Data.Product.Function.NonDependent.Setoid.html#3377" class="Bound">g</a> <a id="3629" class="Symbol">(</a><a id="3630" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="3636" href="Data.Product.Function.NonDependent.Setoid.html#3591" class="Bound">x</a><a id="3637" class="Symbol">)</a>
<a id="3641" class="Symbol">}</a> <a id="3643" class="Keyword">where</a> <a id="3649" class="Keyword">open</a> <a id="3654" href="Function.Bundles.html#6509" class="Module">RightInverse</a>
<a id="3668" class="Keyword">infixr</a> <a id="3675" class="Number">2</a> <a id="3677" href="Data.Product.Function.NonDependent.Setoid.html#2072" class="Function Operator">_×-surjection_</a> <a id="3692" href="Data.Product.Function.NonDependent.Setoid.html#3705" class="Function Operator">_×-inverse_</a>
<a id="_×-inverse_"></a><a id="3705" href="Data.Product.Function.NonDependent.Setoid.html#3705" class="Function Operator">_×-inverse_</a> <a id="3717" class="Symbol">:</a> <a id="3719" href="Function.Bundles.html#7340" class="Record">Inverse</a> <a id="3727" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="3729" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="3731" class="Symbol"></a> <a id="3733" href="Function.Bundles.html#7340" class="Record">Inverse</a> <a id="3741" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a> <a id="3743" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a> <a id="3745" class="Symbol"></a>
<a id="3761" href="Function.Bundles.html#7340" class="Record">Inverse</a> <a id="3769" class="Symbol">(</a><a id="3770" href="Data.Product.Function.NonDependent.Setoid.html#621" class="Generalizable">A</a> <a id="3772" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="3775" href="Data.Product.Function.NonDependent.Setoid.html#625" class="Generalizable">C</a><a id="3776" class="Symbol">)</a> <a id="3778" class="Symbol">(</a><a id="3779" href="Data.Product.Function.NonDependent.Setoid.html#623" class="Generalizable">B</a> <a id="3781" href="Data.Product.Relation.Binary.Pointwise.NonDependent.html#7083" class="Function Operator">×ₛ</a> <a id="3784" href="Data.Product.Function.NonDependent.Setoid.html#627" class="Generalizable">D</a><a id="3785" class="Symbol">)</a>
<a id="3787" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a> <a id="3789" href="Data.Product.Function.NonDependent.Setoid.html#3705" class="Function Operator">×-inverse</a> <a id="3799" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a> <a id="3801" class="Symbol">=</a> <a id="3803" class="Keyword">record</a>
<a id="3812" class="Symbol">{</a> <a id="3814" href="Function.Bundles.html#7394" class="Field">to</a> <a id="3824" class="Symbol">=</a> <a id="3826" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3835" class="Symbol">(</a><a id="3836" href="Function.Bundles.html#7394" class="Field">to</a> <a id="3839" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a><a id="3840" class="Symbol">)</a> <a id="3842" class="Symbol">(</a><a id="3843" href="Function.Bundles.html#7394" class="Field">to</a> <a id="3846" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a><a id="3847" class="Symbol">)</a>
<a id="3851" class="Symbol">;</a> <a id="3853" href="Function.Bundles.html#7418" class="Field">from</a> <a id="3863" class="Symbol">=</a> <a id="3865" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3874" class="Symbol">(</a><a id="3875" href="Function.Bundles.html#7418" class="Field">from</a> <a id="3880" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a><a id="3881" class="Symbol">)</a> <a id="3883" class="Symbol">(</a><a id="3884" href="Function.Bundles.html#7418" class="Field">from</a> <a id="3889" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a><a id="3890" class="Symbol">)</a>
<a id="3894" class="Symbol">;</a> <a id="3896" href="Function.Bundles.html#7442" class="Field">to-cong</a> <a id="3906" class="Symbol">=</a> <a id="3908" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3917" class="Symbol">(</a><a id="3918" href="Function.Bundles.html#7442" class="Field">to-cong</a> <a id="3926" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a><a id="3927" class="Symbol">)</a> <a id="3929" class="Symbol">(</a><a id="3930" href="Function.Bundles.html#7442" class="Field">to-cong</a> <a id="3938" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a><a id="3939" class="Symbol">)</a>
<a id="3943" class="Symbol">;</a> <a id="3945" href="Function.Bundles.html#7483" class="Field">from-cong</a> <a id="3955" class="Symbol">=</a> <a id="3957" href="Data.Product.Base.html#2173" class="Function">Prod.map</a> <a id="3966" class="Symbol">(</a><a id="3967" href="Function.Bundles.html#7483" class="Field">from-cong</a> <a id="3977" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a><a id="3978" class="Symbol">)</a> <a id="3980" class="Symbol">(</a><a id="3981" href="Function.Bundles.html#7483" class="Field">from-cong</a> <a id="3991" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a><a id="3992" class="Symbol">)</a>
<a id="3996" class="Symbol">;</a> <a id="3998" href="Function.Bundles.html#7526" class="Field">inverse</a> <a id="4008" class="Symbol">=</a> <a id="4010" class="Symbol"></a> <a id="4013" href="Data.Product.Function.NonDependent.Setoid.html#4013" class="Bound">x</a> <a id="4015" class="Symbol"></a> <a id="4017" href="Function.Bundles.html#7570" class="Function">inverseˡ</a> <a id="4026" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a> <a id="4028" class="Symbol">(</a><a id="4029" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="4035" href="Data.Product.Function.NonDependent.Setoid.html#4013" class="Bound">x</a><a id="4036" class="Symbol">)</a> <a id="4038" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4040" href="Function.Bundles.html#7570" class="Function">inverseˡ</a> <a id="4049" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a> <a id="4051" class="Symbol">(</a><a id="4052" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="4058" href="Data.Product.Function.NonDependent.Setoid.html#4013" class="Bound">x</a><a id="4059" class="Symbol">))</a> <a id="4062" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a>
<a id="4080" class="Symbol"></a> <a id="4083" href="Data.Product.Function.NonDependent.Setoid.html#4083" class="Bound">x</a> <a id="4085" class="Symbol"></a> <a id="4087" href="Function.Bundles.html#7642" class="Function">inverseʳ</a> <a id="4096" href="Data.Product.Function.NonDependent.Setoid.html#3787" class="Bound">f</a> <a id="4098" class="Symbol">(</a><a id="4099" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="4105" href="Data.Product.Function.NonDependent.Setoid.html#4083" class="Bound">x</a><a id="4106" class="Symbol">)</a> <a id="4108" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="4110" href="Function.Bundles.html#7642" class="Function">inverseʳ</a> <a id="4119" href="Data.Product.Function.NonDependent.Setoid.html#3799" class="Bound">g</a> <a id="4121" class="Symbol">(</a><a id="4122" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="4128" href="Data.Product.Function.NonDependent.Setoid.html#4083" class="Bound">x</a><a id="4129" class="Symbol">))</a>
<a id="4134" class="Symbol">}</a> <a id="4136" class="Keyword">where</a> <a id="4142" class="Keyword">open</a> <a id="4147" href="Function.Bundles.html#7340" class="Module">Inverse</a>
<a id="4158" class="Comment">------------------------------------------------------------------------</a>
<a id="4231" class="Comment">-- DEPRECATED NAMES</a>
<a id="4251" class="Comment">------------------------------------------------------------------------</a>
<a id="4324" class="Comment">-- Please use the new names as continuing support for the old names is</a>
<a id="4395" class="Comment">-- not guaranteed.</a>
<a id="4415" class="Comment">-- Version 2.0</a>
<a id="_×-left-inverse_"></a><a id="4431" href="Data.Product.Function.NonDependent.Setoid.html#4431" class="Function Operator">_×-left-inverse_</a> <a id="4448" class="Symbol">=</a> <a id="4450" href="Data.Product.Function.NonDependent.Setoid.html#2845" class="Function Operator">_×-leftInverse_</a>
<a id="4466" class="Symbol">{-#</a> <a id="4470" class="Keyword">WARNING_ON_USAGE</a> <a id="4487" class="Pragma">_×-left-inverse_</a>
<a id="4504" class="String">&quot;Warning: _×-left-inverse_ was deprecated in v2.0.
Please use _×-leftInverse_ instead.&quot;</a>
<a id="4592" class="Symbol">#-}</a>
</pre></body></html>