bsc-leon-vatthauer/agda/bsc-thesis/Data.Product.Properties.html
2024-02-09 17:53:52 +01:00

114 lines
No EOL
55 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Data.Product.Properties</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">-- Properties of products</a>
<a id="132" class="Comment">------------------------------------------------------------------------</a>
<a id="206" class="Symbol">{-#</a> <a id="210" class="Keyword">OPTIONS</a> <a id="218" class="Pragma">--cubical-compatible</a> <a id="239" class="Pragma">--safe</a> <a id="246" class="Symbol">#-}</a>
<a id="251" class="Keyword">module</a> <a id="258" href="Data.Product.Properties.html" class="Module">Data.Product.Properties</a> <a id="282" class="Keyword">where</a>
<a id="289" class="Keyword">open</a> <a id="294" class="Keyword">import</a> <a id="301" href="Axiom.UniquenessOfIdentityProofs.html" class="Module">Axiom.UniquenessOfIdentityProofs</a>
<a id="334" class="Keyword">open</a> <a id="339" class="Keyword">import</a> <a id="346" href="Data.Product.Base.html" class="Module">Data.Product.Base</a>
<a id="364" class="Keyword">open</a> <a id="369" class="Keyword">import</a> <a id="376" href="Function.Base.html" class="Module">Function.Base</a> <a id="390" class="Keyword">using</a> <a id="396" class="Symbol">(</a><a id="397" href="Function.Base.html#4486" class="Function Operator">_∋_</a><a id="400" class="Symbol">;</a> <a id="402" href="Function.Base.html#1115" class="Function Operator">_∘_</a><a id="405" class="Symbol">;</a> <a id="407" href="Function.Base.html#704" class="Function">id</a><a id="409" class="Symbol">)</a>
<a id="411" class="Keyword">open</a> <a id="416" class="Keyword">import</a> <a id="423" href="Function.Bundles.html" class="Module">Function.Bundles</a> <a id="440" class="Keyword">using</a> <a id="446" class="Symbol">(</a><a id="447" href="Function.Bundles.html#12340" class="Function Operator">_↔_</a><a id="450" class="Symbol">;</a> <a id="452" href="Function.Bundles.html#14563" class="Function">mk↔ₛ</a><a id="457" class="Symbol">)</a>
<a id="459" class="Keyword">open</a> <a id="464" class="Keyword">import</a> <a id="471" href="Level.html" class="Module">Level</a> <a id="477" class="Keyword">using</a> <a id="483" class="Symbol">(</a><a id="484" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="489" class="Symbol">)</a>
<a id="491" class="Keyword">open</a> <a id="496" class="Keyword">import</a> <a id="503" href="Relation.Binary.Definitions.html" class="Module">Relation.Binary.Definitions</a> <a id="531" class="Keyword">using</a> <a id="537" class="Symbol">(</a><a id="538" href="Relation.Binary.Definitions.html#6469" class="Function">DecidableEquality</a><a id="555" class="Symbol">)</a>
<a id="557" class="Keyword">open</a> <a id="562" class="Keyword">import</a> <a id="569" href="Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a>
<a id="607" class="Keyword">open</a> <a id="612" class="Keyword">import</a> <a id="619" href="Relation.Nullary.Decidable.html" class="Module">Relation.Nullary.Decidable</a> <a id="646" class="Symbol">as</a> <a id="649" class="Module">Dec</a> <a id="653" class="Keyword">using</a> <a id="659" class="Symbol">(</a><a id="660" href="Relation.Nullary.Decidable.Core.html#1485" class="Record">Dec</a><a id="663" class="Symbol">;</a> <a id="665" href="Relation.Nullary.Decidable.Core.html#1618" class="InductiveConstructor">yes</a><a id="668" class="Symbol">;</a> <a id="670" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a><a id="672" class="Symbol">)</a>
<a id="675" class="Keyword">private</a>
<a id="685" class="Keyword">variable</a>
<a id="698" href="Data.Product.Properties.html#698" class="Generalizable">a</a> <a id="700" href="Data.Product.Properties.html#700" class="Generalizable">b</a> <a id="702" href="Data.Product.Properties.html#702" class="Generalizable">c</a> <a id="704" href="Data.Product.Properties.html#704" class="Generalizable">d</a> <a id="706" href="Data.Product.Properties.html#706" class="Generalizable"></a> <a id="708" class="Symbol">:</a> <a id="710" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="720" href="Data.Product.Properties.html#720" class="Generalizable">A</a> <a id="722" class="Symbol">:</a> <a id="724" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="728" href="Data.Product.Properties.html#698" class="Generalizable">a</a>
<a id="734" href="Data.Product.Properties.html#734" class="Generalizable">B</a> <a id="736" class="Symbol">:</a> <a id="738" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="742" href="Data.Product.Properties.html#700" class="Generalizable">b</a>
<a id="748" href="Data.Product.Properties.html#748" class="Generalizable">C</a> <a id="750" class="Symbol">:</a> <a id="752" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="756" href="Data.Product.Properties.html#702" class="Generalizable">c</a>
<a id="762" href="Data.Product.Properties.html#762" class="Generalizable">D</a> <a id="764" class="Symbol">:</a> <a id="766" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="770" href="Data.Product.Properties.html#704" class="Generalizable">d</a>
<a id="773" class="Comment">------------------------------------------------------------------------</a>
<a id="846" class="Comment">-- Equality (dependent)</a>
<a id="871" class="Keyword">module</a> <a id="878" href="Data.Product.Properties.html#878" class="Module">_</a> <a id="880" class="Symbol">{</a><a id="881" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="883" class="Symbol">:</a> <a id="885" href="Data.Product.Properties.html#720" class="Generalizable">A</a> <a id="887" class="Symbol"></a> <a id="889" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="893" href="Data.Product.Properties.html#700" class="Generalizable">b</a><a id="894" class="Symbol">}</a> <a id="896" class="Keyword">where</a>
<a id="905" href="Data.Product.Properties.html#905" class="Function">,-injectiveˡ</a> <a id="918" class="Symbol">:</a> <a id="920" class="Symbol"></a> <a id="922" class="Symbol">{</a><a id="923" href="Data.Product.Properties.html#923" class="Bound">a</a> <a id="925" href="Data.Product.Properties.html#925" class="Bound">c</a><a id="926" class="Symbol">}</a> <a id="928" class="Symbol">{</a><a id="929" href="Data.Product.Properties.html#929" class="Bound">b</a> <a id="931" class="Symbol">:</a> <a id="933" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="935" href="Data.Product.Properties.html#923" class="Bound">a</a><a id="936" class="Symbol">}</a> <a id="938" class="Symbol">{</a><a id="939" href="Data.Product.Properties.html#939" class="Bound">d</a> <a id="941" class="Symbol">:</a> <a id="943" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="945" href="Data.Product.Properties.html#925" class="Bound">c</a><a id="946" class="Symbol">}</a> <a id="948" class="Symbol"></a> <a id="950" class="Symbol">(</a><a id="951" href="Data.Product.Properties.html#923" class="Bound">a</a> <a id="953" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="955" href="Data.Product.Properties.html#929" class="Bound">b</a><a id="956" class="Symbol">)</a> <a id="958" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="960" class="Symbol">(</a><a id="961" href="Data.Product.Properties.html#925" class="Bound">c</a> <a id="963" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="965" href="Data.Product.Properties.html#939" class="Bound">d</a><a id="966" class="Symbol">)</a> <a id="968" class="Symbol"></a> <a id="970" href="Data.Product.Properties.html#923" class="Bound">a</a> <a id="972" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="974" href="Data.Product.Properties.html#925" class="Bound">c</a>
<a id="978" href="Data.Product.Properties.html#905" class="Function">,-injectiveˡ</a> <a id="991" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="996" class="Symbol">=</a> <a id="998" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="1006" href="Data.Product.Properties.html#1006" class="Function">,-injectiveʳ-≡</a> <a id="1021" class="Symbol">:</a> <a id="1023" class="Symbol"></a> <a id="1025" class="Symbol">{</a><a id="1026" href="Data.Product.Properties.html#1026" class="Bound">a</a> <a id="1028" href="Data.Product.Properties.html#1028" class="Bound">b</a><a id="1029" class="Symbol">}</a> <a id="1031" class="Symbol">{</a><a id="1032" href="Data.Product.Properties.html#1032" class="Bound">c</a> <a id="1034" class="Symbol">:</a> <a id="1036" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1038" href="Data.Product.Properties.html#1026" class="Bound">a</a><a id="1039" class="Symbol">}</a> <a id="1041" class="Symbol">{</a><a id="1042" href="Data.Product.Properties.html#1042" class="Bound">d</a> <a id="1044" class="Symbol">:</a> <a id="1046" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1048" href="Data.Product.Properties.html#1028" class="Bound">b</a><a id="1049" class="Symbol">}</a> <a id="1051" class="Symbol"></a> <a id="1053" href="Axiom.UniquenessOfIdentityProofs.html#977" class="Function">UIP</a> <a id="1057" href="Data.Product.Properties.html#885" class="Bound">A</a> <a id="1059" class="Symbol"></a> <a id="1061" class="Symbol">(</a><a id="1062" href="Data.Product.Properties.html#1026" class="Bound">a</a> <a id="1064" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1066" href="Data.Product.Properties.html#1032" class="Bound">c</a><a id="1067" class="Symbol">)</a> <a id="1069" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1071" class="Symbol">(</a><a id="1072" href="Data.Product.Properties.html#1028" class="Bound">b</a> <a id="1074" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1076" href="Data.Product.Properties.html#1042" class="Bound">d</a><a id="1077" class="Symbol">)</a> <a id="1079" class="Symbol"></a> <a id="1081" class="Symbol">(</a><a id="1082" href="Data.Product.Properties.html#1082" class="Bound">q</a> <a id="1084" class="Symbol">:</a> <a id="1086" href="Data.Product.Properties.html#1026" class="Bound">a</a> <a id="1088" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1090" href="Data.Product.Properties.html#1028" class="Bound">b</a><a id="1091" class="Symbol">)</a> <a id="1093" class="Symbol"></a> <a id="1095" href="Relation.Binary.PropositionalEquality.Core.html#1808" class="Function">subst</a> <a id="1101" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1103" href="Data.Product.Properties.html#1082" class="Bound">q</a> <a id="1105" href="Data.Product.Properties.html#1032" class="Bound">c</a> <a id="1107" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1109" href="Data.Product.Properties.html#1042" class="Bound">d</a>
<a id="1113" href="Data.Product.Properties.html#1006" class="Function">,-injectiveʳ-≡</a> <a id="1128" class="Symbol">{</a><a id="1129" class="Argument">c</a> <a id="1131" class="Symbol">=</a> <a id="1133" href="Data.Product.Properties.html#1133" class="Bound">c</a><a id="1134" class="Symbol">}</a> <a id="1136" href="Data.Product.Properties.html#1136" class="Bound">u</a> <a id="1138" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="1143" href="Data.Product.Properties.html#1143" class="Bound">q</a> <a id="1145" class="Symbol">=</a> <a id="1147" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">cong</a> <a id="1152" class="Symbol"></a> <a id="1155" href="Data.Product.Properties.html#1155" class="Bound">x</a> <a id="1157" class="Symbol"></a> <a id="1159" href="Relation.Binary.PropositionalEquality.Core.html#1808" class="Function">subst</a> <a id="1165" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1167" href="Data.Product.Properties.html#1155" class="Bound">x</a> <a id="1169" href="Data.Product.Properties.html#1133" class="Bound">c</a><a id="1170" class="Symbol">)</a> <a id="1172" class="Symbol">(</a><a id="1173" href="Data.Product.Properties.html#1136" class="Bound">u</a> <a id="1175" href="Data.Product.Properties.html#1143" class="Bound">q</a> <a id="1177" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="1181" class="Symbol">)</a>
<a id="1186" href="Data.Product.Properties.html#1186" class="Function">,-injectiveʳ-UIP</a> <a id="1203" class="Symbol">:</a> <a id="1205" class="Symbol"></a> <a id="1207" class="Symbol">{</a><a id="1208" href="Data.Product.Properties.html#1208" class="Bound">a</a><a id="1209" class="Symbol">}</a> <a id="1211" class="Symbol">{</a><a id="1212" href="Data.Product.Properties.html#1212" class="Bound">b</a> <a id="1214" href="Data.Product.Properties.html#1214" class="Bound">c</a> <a id="1216" class="Symbol">:</a> <a id="1218" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1220" href="Data.Product.Properties.html#1208" class="Bound">a</a><a id="1221" class="Symbol">}</a> <a id="1223" class="Symbol"></a> <a id="1225" href="Axiom.UniquenessOfIdentityProofs.html#977" class="Function">UIP</a> <a id="1229" href="Data.Product.Properties.html#885" class="Bound">A</a> <a id="1231" class="Symbol"></a> <a id="1233" class="Symbol">(</a><a id="1234" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="1236" href="Data.Product.Properties.html#885" class="Bound">A</a> <a id="1238" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1240" href="Function.Base.html#4486" class="Function Operator"></a> <a id="1242" class="Symbol">(</a><a id="1243" href="Data.Product.Properties.html#1208" class="Bound">a</a> <a id="1245" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1247" href="Data.Product.Properties.html#1212" class="Bound">b</a><a id="1248" class="Symbol">))</a> <a id="1251" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1253" class="Symbol">(</a><a id="1254" href="Data.Product.Properties.html#1208" class="Bound">a</a> <a id="1256" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1258" href="Data.Product.Properties.html#1214" class="Bound">c</a><a id="1259" class="Symbol">)</a> <a id="1261" class="Symbol"></a> <a id="1263" href="Data.Product.Properties.html#1212" class="Bound">b</a> <a id="1265" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1267" href="Data.Product.Properties.html#1214" class="Bound">c</a>
<a id="1271" href="Data.Product.Properties.html#1186" class="Function">,-injectiveʳ-UIP</a> <a id="1288" href="Data.Product.Properties.html#1288" class="Bound">u</a> <a id="1290" href="Data.Product.Properties.html#1290" class="Bound">p</a> <a id="1292" class="Symbol">=</a> <a id="1294" href="Data.Product.Properties.html#1006" class="Function">,-injectiveʳ-≡</a> <a id="1309" href="Data.Product.Properties.html#1288" class="Bound">u</a> <a id="1311" href="Data.Product.Properties.html#1290" class="Bound">p</a> <a id="1313" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="1321" href="Data.Product.Properties.html#1321" class="Function">≡-dec</a> <a id="1327" class="Symbol">:</a> <a id="1329" href="Relation.Binary.Definitions.html#6469" class="Function">DecidableEquality</a> <a id="1347" href="Data.Product.Properties.html#885" class="Bound">A</a> <a id="1349" class="Symbol"></a> <a id="1351" class="Symbol">(∀</a> <a id="1354" class="Symbol">{</a><a id="1355" href="Data.Product.Properties.html#1355" class="Bound">a</a><a id="1356" class="Symbol">}</a> <a id="1358" class="Symbol"></a> <a id="1360" href="Relation.Binary.Definitions.html#6469" class="Function">DecidableEquality</a> <a id="1378" class="Symbol">(</a><a id="1379" href="Data.Product.Properties.html#881" class="Bound">B</a> <a id="1381" href="Data.Product.Properties.html#1355" class="Bound">a</a><a id="1382" class="Symbol">))</a> <a id="1385" class="Symbol"></a>
<a id="1397" href="Relation.Binary.Definitions.html#6469" class="Function">DecidableEquality</a> <a id="1415" class="Symbol">(</a><a id="1416" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="1418" href="Data.Product.Properties.html#885" class="Bound">A</a> <a id="1420" href="Data.Product.Properties.html#881" class="Bound">B</a><a id="1421" class="Symbol">)</a>
<a id="1425" href="Data.Product.Properties.html#1321" class="Function">≡-dec</a> <a id="1431" href="Data.Product.Properties.html#1431" class="Bound">dec₁</a> <a id="1436" href="Data.Product.Properties.html#1436" class="Bound">dec₂</a> <a id="1441" class="Symbol">(</a><a id="1442" href="Data.Product.Properties.html#1442" class="Bound">a</a> <a id="1444" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1446" href="Data.Product.Properties.html#1446" class="Bound">x</a><a id="1447" class="Symbol">)</a> <a id="1449" class="Symbol">(</a><a id="1450" href="Data.Product.Properties.html#1450" class="Bound">b</a> <a id="1452" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1454" href="Data.Product.Properties.html#1454" class="Bound">y</a><a id="1455" class="Symbol">)</a> <a id="1457" class="Keyword">with</a> <a id="1462" href="Data.Product.Properties.html#1431" class="Bound">dec₁</a> <a id="1467" href="Data.Product.Properties.html#1442" class="Bound">a</a> <a id="1469" href="Data.Product.Properties.html#1450" class="Bound">b</a>
<a id="1473" class="Symbol">...</a> <a id="1477" class="Symbol">|</a> <a id="1479" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a> <a id="1482" href="Data.Product.Properties.html#1482" class="Bound">[a≢b]</a> <a id="1488" class="Symbol">=</a> <a id="1490" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a> <a id="1493" class="Symbol">(</a><a id="1494" href="Data.Product.Properties.html#1482" class="Bound">[a≢b]</a> <a id="1500" href="Function.Base.html#1115" class="Function Operator"></a> <a id="1502" href="Data.Product.Properties.html#905" class="Function">,-injectiveˡ</a><a id="1514" class="Symbol">)</a>
<a id="1518" class="Symbol">...</a> <a id="1522" class="Symbol">|</a> <a id="1524" href="Relation.Nullary.Decidable.Core.html#1618" class="InductiveConstructor">yes</a> <a id="1528" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="1533" class="Symbol">=</a> <a id="1535" href="Relation.Nullary.Decidable.Core.html#4901" class="Function">Dec.map</a> <a id="1544" class="Symbol">(</a><a id="1545" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">cong</a> <a id="1550" class="Symbol">(</a><a id="1551" class="Bound">a</a> <a id="1553" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,_</a><a id="1555" class="Symbol">))</a> <a id="1558" class="Symbol">(</a><a id="1559" href="Data.Product.Properties.html#1186" class="Function">,-injectiveʳ-UIP</a> <a id="1576" class="Symbol">(</a><a id="1577" href="Axiom.UniquenessOfIdentityProofs.html#2697" class="Function">Decidable⇒UIP.≡-irrelevant</a> <a id="1604" class="Bound">dec₁</a><a id="1608" class="Symbol">))</a> <a id="1611" class="Symbol">(</a><a id="1612" class="Bound">dec₂</a> <a id="1617" class="Bound">x</a> <a id="1619" class="Bound">y</a><a id="1620" class="Symbol">)</a>
<a id="1623" class="Comment">------------------------------------------------------------------------</a>
<a id="1696" class="Comment">-- Equality (non-dependent)</a>
<a id=",-injectiveʳ"></a><a id="1725" href="Data.Product.Properties.html#1725" class="Function">,-injectiveʳ</a> <a id="1738" class="Symbol">:</a> <a id="1740" class="Symbol"></a> <a id="1742" class="Symbol">{</a><a id="1743" href="Data.Product.Properties.html#1743" class="Bound">a</a> <a id="1745" href="Data.Product.Properties.html#1745" class="Bound">c</a> <a id="1747" class="Symbol">:</a> <a id="1749" href="Data.Product.Properties.html#720" class="Generalizable">A</a><a id="1750" class="Symbol">}</a> <a id="1752" class="Symbol">{</a><a id="1753" href="Data.Product.Properties.html#1753" class="Bound">b</a> <a id="1755" href="Data.Product.Properties.html#1755" class="Bound">d</a> <a id="1757" class="Symbol">:</a> <a id="1759" href="Data.Product.Properties.html#734" class="Generalizable">B</a><a id="1760" class="Symbol">}</a> <a id="1762" class="Symbol"></a> <a id="1764" class="Symbol">(</a><a id="1765" href="Data.Product.Properties.html#1743" class="Bound">a</a> <a id="1767" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1769" href="Data.Product.Properties.html#1753" class="Bound">b</a><a id="1770" class="Symbol">)</a> <a id="1772" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1774" class="Symbol">(</a><a id="1775" href="Data.Product.Properties.html#1745" class="Bound">c</a> <a id="1777" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1779" href="Data.Product.Properties.html#1755" class="Bound">d</a><a id="1780" class="Symbol">)</a> <a id="1782" class="Symbol"></a> <a id="1784" href="Data.Product.Properties.html#1753" class="Bound">b</a> <a id="1786" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1788" href="Data.Product.Properties.html#1755" class="Bound">d</a>
<a id="1790" href="Data.Product.Properties.html#1725" class="Function">,-injectiveʳ</a> <a id="1803" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="1808" class="Symbol">=</a> <a id="1810" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id=",-injective"></a><a id="1816" href="Data.Product.Properties.html#1816" class="Function">,-injective</a> <a id="1828" class="Symbol">:</a> <a id="1830" class="Symbol"></a> <a id="1832" class="Symbol">{</a><a id="1833" href="Data.Product.Properties.html#1833" class="Bound">a</a> <a id="1835" href="Data.Product.Properties.html#1835" class="Bound">c</a> <a id="1837" class="Symbol">:</a> <a id="1839" href="Data.Product.Properties.html#720" class="Generalizable">A</a><a id="1840" class="Symbol">}</a> <a id="1842" class="Symbol">{</a><a id="1843" href="Data.Product.Properties.html#1843" class="Bound">b</a> <a id="1845" href="Data.Product.Properties.html#1845" class="Bound">d</a> <a id="1847" class="Symbol">:</a> <a id="1849" href="Data.Product.Properties.html#734" class="Generalizable">B</a><a id="1850" class="Symbol">}</a> <a id="1852" class="Symbol"></a> <a id="1854" class="Symbol">(</a><a id="1855" href="Data.Product.Properties.html#1833" class="Bound">a</a> <a id="1857" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1859" href="Data.Product.Properties.html#1843" class="Bound">b</a><a id="1860" class="Symbol">)</a> <a id="1862" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1864" class="Symbol">(</a><a id="1865" href="Data.Product.Properties.html#1835" class="Bound">c</a> <a id="1867" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1869" href="Data.Product.Properties.html#1845" class="Bound">d</a><a id="1870" class="Symbol">)</a> <a id="1872" class="Symbol"></a> <a id="1874" href="Data.Product.Properties.html#1833" class="Bound">a</a> <a id="1876" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1878" href="Data.Product.Properties.html#1835" class="Bound">c</a> <a id="1880" href="Data.Product.Base.html#1618" class="Function Operator">×</a> <a id="1882" href="Data.Product.Properties.html#1843" class="Bound">b</a> <a id="1884" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1886" href="Data.Product.Properties.html#1845" class="Bound">d</a>
<a id="1888" href="Data.Product.Properties.html#1816" class="Function">,-injective</a> <a id="1900" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="1905" class="Symbol">=</a> <a id="1907" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="1912" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="1914" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="map-cong"></a><a id="1920" href="Data.Product.Properties.html#1920" class="Function">map-cong</a> <a id="1929" class="Symbol">:</a> <a id="1931" class="Symbol"></a> <a id="1933" class="Symbol">{</a><a id="1934" href="Data.Product.Properties.html#1934" class="Bound">f</a> <a id="1936" href="Data.Product.Properties.html#1936" class="Bound">g</a> <a id="1938" class="Symbol">:</a> <a id="1940" href="Data.Product.Properties.html#720" class="Generalizable">A</a> <a id="1942" class="Symbol"></a> <a id="1944" href="Data.Product.Properties.html#748" class="Generalizable">C</a><a id="1945" class="Symbol">}</a> <a id="1947" class="Symbol">{</a><a id="1948" href="Data.Product.Properties.html#1948" class="Bound">h</a> <a id="1950" href="Data.Product.Properties.html#1950" class="Bound">i</a> <a id="1952" class="Symbol">:</a> <a id="1954" href="Data.Product.Properties.html#734" class="Generalizable">B</a> <a id="1956" class="Symbol"></a> <a id="1958" href="Data.Product.Properties.html#762" class="Generalizable">D</a><a id="1959" class="Symbol">}</a> <a id="1961" class="Symbol"></a> <a id="1963" href="Data.Product.Properties.html#1934" class="Bound">f</a> <a id="1965" href="Relation.Binary.PropositionalEquality.html#1557" class="Function Operator"></a> <a id="1967" href="Data.Product.Properties.html#1936" class="Bound">g</a> <a id="1969" class="Symbol"></a> <a id="1971" href="Data.Product.Properties.html#1948" class="Bound">h</a> <a id="1973" href="Relation.Binary.PropositionalEquality.html#1557" class="Function Operator"></a> <a id="1975" href="Data.Product.Properties.html#1950" class="Bound">i</a> <a id="1977" class="Symbol"></a> <a id="1979" href="Data.Product.Base.html#2173" class="Function">map</a> <a id="1983" href="Data.Product.Properties.html#1934" class="Bound">f</a> <a id="1985" href="Data.Product.Properties.html#1948" class="Bound">h</a> <a id="1987" href="Relation.Binary.PropositionalEquality.html#1557" class="Function Operator"></a> <a id="1989" href="Data.Product.Base.html#2173" class="Function">map</a> <a id="1993" href="Data.Product.Properties.html#1936" class="Bound">g</a> <a id="1995" href="Data.Product.Properties.html#1950" class="Bound">i</a>
<a id="1997" href="Data.Product.Properties.html#1920" class="Function">map-cong</a> <a id="2006" href="Data.Product.Properties.html#2006" class="Bound">f≗g</a> <a id="2010" href="Data.Product.Properties.html#2010" class="Bound">h≗i</a> <a id="2014" class="Symbol">(</a><a id="2015" href="Data.Product.Properties.html#2015" class="Bound">x</a> <a id="2017" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2019" href="Data.Product.Properties.html#2019" class="Bound">y</a><a id="2020" class="Symbol">)</a> <a id="2022" class="Symbol">=</a> <a id="2024" href="Relation.Binary.PropositionalEquality.Core.html#1395" class="Function">cong₂</a> <a id="2030" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a> <a id="2034" class="Symbol">(</a><a id="2035" href="Data.Product.Properties.html#2006" class="Bound">f≗g</a> <a id="2039" href="Data.Product.Properties.html#2015" class="Bound">x</a><a id="2040" class="Symbol">)</a> <a id="2042" class="Symbol">(</a><a id="2043" href="Data.Product.Properties.html#2010" class="Bound">h≗i</a> <a id="2047" href="Data.Product.Properties.html#2019" class="Bound">y</a><a id="2048" class="Symbol">)</a>
<a id="2051" class="Comment">-- The following properties are definitionally true (because of η)</a>
<a id="2118" class="Comment">-- but for symmetry with ⊎ it is convenient to define and name them.</a>
<a id="swap-involutive"></a><a id="2188" href="Data.Product.Properties.html#2188" class="Function">swap-involutive</a> <a id="2204" class="Symbol">:</a> <a id="2206" href="Data.Product.Base.html#5054" class="Function">swap</a> <a id="2211" class="Symbol">{</a><a id="2212" class="Argument">A</a> <a id="2214" class="Symbol">=</a> <a id="2216" href="Data.Product.Properties.html#720" class="Generalizable">A</a><a id="2217" class="Symbol">}</a> <a id="2219" class="Symbol">{</a><a id="2220" class="Argument">B</a> <a id="2222" class="Symbol">=</a> <a id="2224" href="Data.Product.Properties.html#734" class="Generalizable">B</a><a id="2225" class="Symbol">}</a> <a id="2227" href="Function.Base.html#1115" class="Function Operator"></a> <a id="2229" href="Data.Product.Base.html#5054" class="Function">swap</a> <a id="2234" href="Relation.Binary.PropositionalEquality.html#1557" class="Function Operator"></a> <a id="2236" href="Function.Base.html#704" class="Function">id</a>
<a id="2239" href="Data.Product.Properties.html#2188" class="Function">swap-involutive</a> <a id="2255" class="Symbol">_</a> <a id="2257" class="Symbol">=</a> <a id="2259" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="2265" class="Comment">------------------------------------------------------------------------</a>
<a id="2338" class="Comment">-- Equality between pairs can be expressed as a pair of equalities</a>
<a id="2406" class="Keyword">module</a> <a id="2413" href="Data.Product.Properties.html#2413" class="Module">_</a> <a id="2415" class="Symbol">{</a><a id="2416" href="Data.Product.Properties.html#2416" class="Bound">A</a> <a id="2418" class="Symbol">:</a> <a id="2420" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2424" href="Data.Product.Properties.html#698" class="Generalizable">a</a><a id="2425" class="Symbol">}</a> <a id="2427" class="Symbol">{</a><a id="2428" href="Data.Product.Properties.html#2428" class="Bound">B</a> <a id="2430" class="Symbol">:</a> <a id="2432" href="Data.Product.Properties.html#2416" class="Bound">A</a> <a id="2434" class="Symbol"></a> <a id="2436" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2440" href="Data.Product.Properties.html#700" class="Generalizable">b</a><a id="2441" class="Symbol">}</a> <a id="2443" class="Symbol">{</a><a id="2444" href="Data.Product.Properties.html#2444" class="Bound">p₁</a><a id="2446" class="Symbol">@(</a><a id="2448" href="Data.Product.Properties.html#2448" class="Bound">a₁</a> <a id="2451" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2453" href="Data.Product.Properties.html#2453" class="Bound">b₁</a><a id="2455" class="Symbol">)</a> <a id="2457" href="Data.Product.Properties.html#2457" class="Bound">p₂</a><a id="2459" class="Symbol">@(</a><a id="2461" href="Data.Product.Properties.html#2461" class="Bound">a₂</a> <a id="2464" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2466" href="Data.Product.Properties.html#2466" class="Bound">b₂</a><a id="2468" class="Symbol">)</a> <a id="2470" class="Symbol">:</a> <a id="2472" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="2474" href="Data.Product.Properties.html#2416" class="Bound">A</a> <a id="2476" href="Data.Product.Properties.html#2428" class="Bound">B</a><a id="2477" class="Symbol">}</a> <a id="2479" class="Keyword">where</a>
<a id="2487" href="Data.Product.Properties.html#2487" class="Function">Σ-≡,≡→≡</a> <a id="2495" class="Symbol">:</a> <a id="2497" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="2499" class="Symbol">(</a><a id="2500" href="Data.Product.Properties.html#2448" class="Bound">a₁</a> <a id="2503" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2505" href="Data.Product.Properties.html#2461" class="Bound">a₂</a><a id="2507" class="Symbol">)</a> <a id="2509" class="Symbol"></a> <a id="2512" href="Data.Product.Properties.html#2512" class="Bound">p</a> <a id="2514" class="Symbol"></a> <a id="2516" href="Relation.Binary.PropositionalEquality.Core.html#1808" class="Function">subst</a> <a id="2522" href="Data.Product.Properties.html#2428" class="Bound">B</a> <a id="2524" href="Data.Product.Properties.html#2512" class="Bound">p</a> <a id="2526" href="Data.Product.Properties.html#2453" class="Bound">b₁</a> <a id="2529" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2531" href="Data.Product.Properties.html#2466" class="Bound">b₂</a><a id="2533" class="Symbol">)</a> <a id="2535" class="Symbol"></a> <a id="2537" href="Data.Product.Properties.html#2444" class="Bound">p₁</a> <a id="2540" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2542" href="Data.Product.Properties.html#2457" class="Bound">p₂</a>
<a id="2547" href="Data.Product.Properties.html#2487" class="Function">Σ-≡,≡→≡</a> <a id="2555" class="Symbol">(</a><a id="2556" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="2561" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2563" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="2567" class="Symbol">)</a> <a id="2569" class="Symbol">=</a> <a id="2571" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="2579" href="Data.Product.Properties.html#2579" class="Function">Σ-≡,≡←≡</a> <a id="2587" class="Symbol">:</a> <a id="2589" href="Data.Product.Properties.html#2444" class="Bound">p₁</a> <a id="2592" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2594" href="Data.Product.Properties.html#2457" class="Bound">p₂</a> <a id="2597" class="Symbol"></a> <a id="2599" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="2601" class="Symbol">(</a><a id="2602" href="Data.Product.Properties.html#2448" class="Bound">a₁</a> <a id="2605" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2607" href="Data.Product.Properties.html#2461" class="Bound">a₂</a><a id="2609" class="Symbol">)</a> <a id="2611" class="Symbol"></a> <a id="2614" href="Data.Product.Properties.html#2614" class="Bound">p</a> <a id="2616" class="Symbol"></a> <a id="2618" href="Relation.Binary.PropositionalEquality.Core.html#1808" class="Function">subst</a> <a id="2624" href="Data.Product.Properties.html#2428" class="Bound">B</a> <a id="2626" href="Data.Product.Properties.html#2614" class="Bound">p</a> <a id="2628" href="Data.Product.Properties.html#2453" class="Bound">b₁</a> <a id="2631" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2633" href="Data.Product.Properties.html#2466" class="Bound">b₂</a><a id="2635" class="Symbol">)</a>
<a id="2639" href="Data.Product.Properties.html#2579" class="Function">Σ-≡,≡←≡</a> <a id="2647" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="2652" class="Symbol">=</a> <a id="2654" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="2659" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2661" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="2669" class="Keyword">private</a>
<a id="2681" href="Data.Product.Properties.html#2681" class="Function">left-inverse-of</a> <a id="2697" class="Symbol">:</a> <a id="2699" class="Symbol">(</a><a id="2700" href="Data.Product.Properties.html#2700" class="Bound">p</a> <a id="2702" class="Symbol">:</a> <a id="2704" href="Agda.Builtin.Sigma.html#165" class="Record">Σ</a> <a id="2706" class="Symbol">(</a><a id="2707" href="Data.Product.Properties.html#2448" class="Bound">a₁</a> <a id="2710" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2712" href="Data.Product.Properties.html#2461" class="Bound">a₂</a><a id="2714" class="Symbol">)</a> <a id="2716" class="Symbol"></a> <a id="2719" href="Data.Product.Properties.html#2719" class="Bound">x</a> <a id="2721" class="Symbol"></a> <a id="2723" href="Relation.Binary.PropositionalEquality.Core.html#1808" class="Function">subst</a> <a id="2729" href="Data.Product.Properties.html#2428" class="Bound">B</a> <a id="2731" href="Data.Product.Properties.html#2719" class="Bound">x</a> <a id="2733" href="Data.Product.Properties.html#2453" class="Bound">b₁</a> <a id="2736" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2738" href="Data.Product.Properties.html#2466" class="Bound">b₂</a><a id="2740" class="Symbol">))</a> <a id="2743" class="Symbol"></a>
<a id="2767" href="Data.Product.Properties.html#2579" class="Function">Σ-≡,≡←≡</a> <a id="2775" class="Symbol">(</a><a id="2776" href="Data.Product.Properties.html#2487" class="Function">Σ-≡,≡→≡</a> <a id="2784" href="Data.Product.Properties.html#2700" class="Bound">p</a><a id="2785" class="Symbol">)</a> <a id="2787" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2789" href="Data.Product.Properties.html#2700" class="Bound">p</a>
<a id="2795" href="Data.Product.Properties.html#2681" class="Function">left-inverse-of</a> <a id="2811" class="Symbol">(</a><a id="2812" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="2817" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2819" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="2823" class="Symbol">)</a> <a id="2825" class="Symbol">=</a> <a id="2827" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="2837" href="Data.Product.Properties.html#2837" class="Function">right-inverse-of</a> <a id="2854" class="Symbol">:</a> <a id="2856" class="Symbol">(</a><a id="2857" href="Data.Product.Properties.html#2857" class="Bound">p</a> <a id="2859" class="Symbol">:</a> <a id="2861" href="Data.Product.Properties.html#2444" class="Bound">p₁</a> <a id="2864" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2866" href="Data.Product.Properties.html#2457" class="Bound">p₂</a><a id="2868" class="Symbol">)</a> <a id="2870" class="Symbol"></a> <a id="2872" href="Data.Product.Properties.html#2487" class="Function">Σ-≡,≡→≡</a> <a id="2880" class="Symbol">(</a><a id="2881" href="Data.Product.Properties.html#2579" class="Function">Σ-≡,≡←≡</a> <a id="2889" href="Data.Product.Properties.html#2857" class="Bound">p</a><a id="2890" class="Symbol">)</a> <a id="2892" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2894" href="Data.Product.Properties.html#2857" class="Bound">p</a>
<a id="2900" href="Data.Product.Properties.html#2837" class="Function">right-inverse-of</a> <a id="2917" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="2922" class="Symbol">=</a> <a id="2924" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="2932" href="Data.Product.Properties.html#2932" class="Function">Σ-≡,≡↔≡</a> <a id="2940" class="Symbol">:</a> <a id="2942" class="Symbol">(</a><a id="2943" href="Data.Product.Base.html#852" class="Function"></a> <a id="2945" class="Symbol">λ</a> <a id="2947" class="Symbol">(</a><a id="2948" href="Data.Product.Properties.html#2948" class="Bound">p</a> <a id="2950" class="Symbol">:</a> <a id="2952" href="Data.Product.Properties.html#2448" class="Bound">a₁</a> <a id="2955" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2957" href="Data.Product.Properties.html#2461" class="Bound">a₂</a><a id="2959" class="Symbol">)</a> <a id="2961" class="Symbol"></a> <a id="2963" href="Relation.Binary.PropositionalEquality.Core.html#1808" class="Function">subst</a> <a id="2969" href="Data.Product.Properties.html#2428" class="Bound">B</a> <a id="2971" href="Data.Product.Properties.html#2948" class="Bound">p</a> <a id="2973" href="Data.Product.Properties.html#2453" class="Bound">b₁</a> <a id="2976" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2978" href="Data.Product.Properties.html#2466" class="Bound">b₂</a><a id="2980" class="Symbol">)</a> <a id="2982" href="Function.Bundles.html#12340" class="Function Operator"></a> <a id="2984" href="Data.Product.Properties.html#2444" class="Bound">p₁</a> <a id="2987" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2989" href="Data.Product.Properties.html#2457" class="Bound">p₂</a>
<a id="2994" href="Data.Product.Properties.html#2932" class="Function">Σ-≡,≡↔≡</a> <a id="3002" class="Symbol">=</a> <a id="3004" href="Function.Bundles.html#14563" class="Function">mk↔ₛ</a> <a id="3010" href="Data.Product.Properties.html#2487" class="Function">Σ-≡,≡→≡</a> <a id="3018" href="Data.Product.Properties.html#2579" class="Function">Σ-≡,≡←≡</a> <a id="3026" href="Data.Product.Properties.html#2837" class="Function">right-inverse-of</a> <a id="3043" href="Data.Product.Properties.html#2681" class="Function">left-inverse-of</a>
<a id="3060" class="Comment">-- the non-dependent case. Proofs are exactly as above, and straightforward.</a>
<a id="3137" class="Keyword">module</a> <a id="3144" href="Data.Product.Properties.html#3144" class="Module">_</a> <a id="3146" class="Symbol">{</a><a id="3147" href="Data.Product.Properties.html#3147" class="Bound">p₁</a><a id="3149" class="Symbol">@(</a><a id="3151" href="Data.Product.Properties.html#3151" class="Bound">a₁</a> <a id="3154" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3156" href="Data.Product.Properties.html#3156" class="Bound">b₁</a><a id="3158" class="Symbol">)</a> <a id="3160" href="Data.Product.Properties.html#3160" class="Bound">p₂</a><a id="3162" class="Symbol">@(</a><a id="3164" href="Data.Product.Properties.html#3164" class="Bound">a₂</a> <a id="3167" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3169" href="Data.Product.Properties.html#3169" class="Bound">b₂</a><a id="3171" class="Symbol">)</a> <a id="3173" class="Symbol">:</a> <a id="3175" href="Data.Product.Properties.html#720" class="Generalizable">A</a> <a id="3177" href="Data.Product.Base.html#1618" class="Function Operator">×</a> <a id="3179" href="Data.Product.Properties.html#734" class="Generalizable">B</a><a id="3180" class="Symbol">}</a> <a id="3182" class="Keyword">where</a>
<a id="3190" href="Data.Product.Properties.html#3190" class="Function">×-≡,≡→≡</a> <a id="3198" class="Symbol">:</a> <a id="3200" class="Symbol">(</a><a id="3201" href="Data.Product.Properties.html#3151" class="Bound">a₁</a> <a id="3204" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3206" href="Data.Product.Properties.html#3164" class="Bound">a₂</a> <a id="3209" href="Data.Product.Base.html#1618" class="Function Operator">×</a> <a id="3211" href="Data.Product.Properties.html#3156" class="Bound">b₁</a> <a id="3214" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3216" href="Data.Product.Properties.html#3169" class="Bound">b₂</a><a id="3218" class="Symbol">)</a> <a id="3220" class="Symbol"></a> <a id="3222" href="Data.Product.Properties.html#3147" class="Bound">p₁</a> <a id="3225" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3227" href="Data.Product.Properties.html#3160" class="Bound">p₂</a>
<a id="3232" href="Data.Product.Properties.html#3190" class="Function">×-≡,≡→≡</a> <a id="3240" class="Symbol">(</a><a id="3241" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3246" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3248" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="3252" class="Symbol">)</a> <a id="3254" class="Symbol">=</a> <a id="3256" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="3264" href="Data.Product.Properties.html#3264" class="Function">×-≡,≡←≡</a> <a id="3272" class="Symbol">:</a> <a id="3274" href="Data.Product.Properties.html#3147" class="Bound">p₁</a> <a id="3277" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3279" href="Data.Product.Properties.html#3160" class="Bound">p₂</a> <a id="3282" class="Symbol"></a> <a id="3284" class="Symbol">(</a><a id="3285" href="Data.Product.Properties.html#3151" class="Bound">a₁</a> <a id="3288" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3290" href="Data.Product.Properties.html#3164" class="Bound">a₂</a> <a id="3293" href="Data.Product.Base.html#1618" class="Function Operator">×</a> <a id="3295" href="Data.Product.Properties.html#3156" class="Bound">b₁</a> <a id="3298" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3300" href="Data.Product.Properties.html#3169" class="Bound">b₂</a><a id="3302" class="Symbol">)</a>
<a id="3306" href="Data.Product.Properties.html#3264" class="Function">×-≡,≡←≡</a> <a id="3314" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3319" class="Symbol">=</a> <a id="3321" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3326" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3328" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="3336" href="Data.Product.Properties.html#3336" class="Function">×-≡,≡↔≡</a> <a id="3344" class="Symbol">:</a> <a id="3346" class="Symbol">(</a><a id="3347" href="Data.Product.Properties.html#3151" class="Bound">a₁</a> <a id="3350" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3352" href="Data.Product.Properties.html#3164" class="Bound">a₂</a> <a id="3355" href="Data.Product.Base.html#1618" class="Function Operator">×</a> <a id="3357" href="Data.Product.Properties.html#3156" class="Bound">b₁</a> <a id="3360" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3362" href="Data.Product.Properties.html#3169" class="Bound">b₂</a><a id="3364" class="Symbol">)</a> <a id="3366" href="Function.Bundles.html#12340" class="Function Operator"></a> <a id="3368" href="Data.Product.Properties.html#3147" class="Bound">p₁</a> <a id="3371" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="3373" href="Data.Product.Properties.html#3160" class="Bound">p₂</a>
<a id="3378" href="Data.Product.Properties.html#3336" class="Function">×-≡,≡↔≡</a> <a id="3386" class="Symbol">=</a> <a id="3388" href="Function.Bundles.html#14563" class="Function">mk↔ₛ</a>
<a id="3398" href="Data.Product.Properties.html#3190" class="Function">×-≡,≡→≡</a>
<a id="3410" href="Data.Product.Properties.html#3264" class="Function">×-≡,≡←≡</a>
<a id="3422" class="Symbol"></a> <a id="3425" class="Symbol">{</a> <a id="3427" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3441" class="Symbol"></a> <a id="3443" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3455" class="Symbol">})</a>
<a id="3462" class="Symbol"></a> <a id="3465" class="Symbol">{</a> <a id="3467" class="Symbol">(</a><a id="3468" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3473" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3475" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="3479" class="Symbol">)</a> <a id="3481" class="Symbol"></a> <a id="3483" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="3495" class="Symbol">})</a>
<a id="3499" class="Comment">------------------------------------------------------------------------</a>
<a id="3572" class="Comment">-- The order of ∃₂ can be swapped</a>
<a id="∃∃↔∃∃"></a><a id="3607" href="Data.Product.Properties.html#3607" class="Function">∃∃↔∃∃</a> <a id="3613" class="Symbol">:</a> <a id="3615" class="Symbol">(</a><a id="3616" href="Data.Product.Properties.html#3616" class="Bound">R</a> <a id="3618" class="Symbol">:</a> <a id="3620" href="Data.Product.Properties.html#720" class="Generalizable">A</a> <a id="3622" class="Symbol"></a> <a id="3624" href="Data.Product.Properties.html#734" class="Generalizable">B</a> <a id="3626" class="Symbol"></a> <a id="3628" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3632" href="Data.Product.Properties.html#706" class="Generalizable"></a><a id="3633" class="Symbol">)</a> <a id="3635" class="Symbol"></a> <a id="3637" class="Symbol">(</a><a id="3638" href="Data.Product.Base.html#907" class="Function">∃₂</a> <a id="3641" class="Symbol">λ</a> <a id="3643" href="Data.Product.Properties.html#3643" class="Bound">x</a> <a id="3645" href="Data.Product.Properties.html#3645" class="Bound">y</a> <a id="3647" class="Symbol"></a> <a id="3649" href="Data.Product.Properties.html#3616" class="Bound">R</a> <a id="3651" href="Data.Product.Properties.html#3643" class="Bound">x</a> <a id="3653" href="Data.Product.Properties.html#3645" class="Bound">y</a><a id="3654" class="Symbol">)</a> <a id="3656" href="Function.Bundles.html#12340" class="Function Operator"></a> <a id="3658" class="Symbol">(</a><a id="3659" href="Data.Product.Base.html#907" class="Function">∃₂</a> <a id="3662" class="Symbol">λ</a> <a id="3664" href="Data.Product.Properties.html#3664" class="Bound">y</a> <a id="3666" href="Data.Product.Properties.html#3666" class="Bound">x</a> <a id="3668" class="Symbol"></a> <a id="3670" href="Data.Product.Properties.html#3616" class="Bound">R</a> <a id="3672" href="Data.Product.Properties.html#3666" class="Bound">x</a> <a id="3674" href="Data.Product.Properties.html#3664" class="Bound">y</a><a id="3675" class="Symbol">)</a>
<a id="3677" href="Data.Product.Properties.html#3607" class="Function">∃∃↔∃∃</a> <a id="3683" href="Data.Product.Properties.html#3683" class="Bound">R</a> <a id="3685" class="Symbol">=</a> <a id="3687" href="Function.Bundles.html#14563" class="Function">mk↔ₛ</a> <a id="3693" href="Data.Product.Properties.html#3723" class="Function">to</a> <a id="3696" href="Data.Product.Properties.html#3806" class="Function">from</a> <a id="3701" href="Relation.Binary.PropositionalEquality.Core.html#1225" class="Function">cong</a> <a id="3707" href="Relation.Binary.PropositionalEquality.Core.html#1225" class="Function">cong</a>
<a id="3715" class="Keyword">where</a>
<a id="3723" href="Data.Product.Properties.html#3723" class="Function">to</a> <a id="3726" class="Symbol">:</a> <a id="3728" class="Symbol">(</a><a id="3729" href="Data.Product.Base.html#907" class="Function">∃₂</a> <a id="3732" class="Symbol">λ</a> <a id="3734" href="Data.Product.Properties.html#3734" class="Bound">x</a> <a id="3736" href="Data.Product.Properties.html#3736" class="Bound">y</a> <a id="3738" class="Symbol"></a> <a id="3740" href="Data.Product.Properties.html#3683" class="Bound">R</a> <a id="3742" href="Data.Product.Properties.html#3734" class="Bound">x</a> <a id="3744" href="Data.Product.Properties.html#3736" class="Bound">y</a><a id="3745" class="Symbol">)</a> <a id="3747" class="Symbol"></a> <a id="3749" class="Symbol">(</a><a id="3750" href="Data.Product.Base.html#907" class="Function">∃₂</a> <a id="3753" class="Symbol">λ</a> <a id="3755" href="Data.Product.Properties.html#3755" class="Bound">y</a> <a id="3757" href="Data.Product.Properties.html#3757" class="Bound">x</a> <a id="3759" class="Symbol"></a> <a id="3761" href="Data.Product.Properties.html#3683" class="Bound">R</a> <a id="3763" href="Data.Product.Properties.html#3757" class="Bound">x</a> <a id="3765" href="Data.Product.Properties.html#3755" class="Bound">y</a><a id="3766" class="Symbol">)</a>
<a id="3770" href="Data.Product.Properties.html#3723" class="Function">to</a> <a id="3773" class="Symbol">(</a><a id="3774" href="Data.Product.Properties.html#3774" class="Bound">x</a> <a id="3776" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3778" href="Data.Product.Properties.html#3778" class="Bound">y</a> <a id="3780" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3782" href="Data.Product.Properties.html#3782" class="Bound">Rxy</a><a id="3785" class="Symbol">)</a> <a id="3787" class="Symbol">=</a> <a id="3789" class="Symbol">(</a><a id="3790" href="Data.Product.Properties.html#3778" class="Bound">y</a> <a id="3792" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3794" href="Data.Product.Properties.html#3774" class="Bound">x</a> <a id="3796" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3798" href="Data.Product.Properties.html#3782" class="Bound">Rxy</a><a id="3801" class="Symbol">)</a>
<a id="3806" href="Data.Product.Properties.html#3806" class="Function">from</a> <a id="3811" class="Symbol">:</a> <a id="3813" class="Symbol">(</a><a id="3814" href="Data.Product.Base.html#907" class="Function">∃₂</a> <a id="3817" class="Symbol">λ</a> <a id="3819" href="Data.Product.Properties.html#3819" class="Bound">y</a> <a id="3821" href="Data.Product.Properties.html#3821" class="Bound">x</a> <a id="3823" class="Symbol"></a> <a id="3825" href="Data.Product.Properties.html#3683" class="Bound">R</a> <a id="3827" href="Data.Product.Properties.html#3821" class="Bound">x</a> <a id="3829" href="Data.Product.Properties.html#3819" class="Bound">y</a><a id="3830" class="Symbol">)</a> <a id="3832" class="Symbol"></a> <a id="3834" class="Symbol">(</a><a id="3835" href="Data.Product.Base.html#907" class="Function">∃₂</a> <a id="3838" class="Symbol">λ</a> <a id="3840" href="Data.Product.Properties.html#3840" class="Bound">x</a> <a id="3842" href="Data.Product.Properties.html#3842" class="Bound">y</a> <a id="3844" class="Symbol"></a> <a id="3846" href="Data.Product.Properties.html#3683" class="Bound">R</a> <a id="3848" href="Data.Product.Properties.html#3840" class="Bound">x</a> <a id="3850" href="Data.Product.Properties.html#3842" class="Bound">y</a><a id="3851" class="Symbol">)</a>
<a id="3855" href="Data.Product.Properties.html#3806" class="Function">from</a> <a id="3860" class="Symbol">(</a><a id="3861" href="Data.Product.Properties.html#3861" class="Bound">y</a> <a id="3863" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3865" href="Data.Product.Properties.html#3865" class="Bound">x</a> <a id="3867" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3869" href="Data.Product.Properties.html#3869" class="Bound">Rxy</a><a id="3872" class="Symbol">)</a> <a id="3874" class="Symbol">=</a> <a id="3876" class="Symbol">(</a><a id="3877" href="Data.Product.Properties.html#3865" class="Bound">x</a> <a id="3879" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3881" href="Data.Product.Properties.html#3861" class="Bound">y</a> <a id="3883" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="3885" href="Data.Product.Properties.html#3869" class="Bound">Rxy</a><a id="3888" class="Symbol">)</a>
</pre></body></html>