bsc-leon-vatthauer/public/Data.Product.html

208 lines
89 KiB
HTML
Raw Normal View History

2023-08-19 16:11:22 +02:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Data.Product</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">-- Products</a>
<a id="118" class="Comment">------------------------------------------------------------------------</a>
<a id="192" class="Symbol">{-#</a> <a id="196" class="Keyword">OPTIONS</a> <a id="204" class="Pragma">--cubical-compatible</a> <a id="225" class="Pragma">--safe</a> <a id="232" class="Symbol">#-}</a>
<a id="237" class="Keyword">module</a> <a id="244" href="Data.Product.html" class="Module">Data.Product</a> <a id="257" class="Keyword">where</a>
<a id="264" class="Keyword">open</a> <a id="269" class="Keyword">import</a> <a id="276" href="Function.Base.html" class="Module">Function.Base</a>
<a id="290" class="Keyword">open</a> <a id="295" class="Keyword">import</a> <a id="302" href="Level.html" class="Module">Level</a>
<a id="308" class="Keyword">open</a> <a id="313" class="Keyword">import</a> <a id="320" href="Relation.Nullary.html" class="Module">Relation.Nullary</a>
<a id="337" class="Keyword">open</a> <a id="342" class="Keyword">import</a> <a id="349" href="Agda.Builtin.Equality.html" class="Module">Agda.Builtin.Equality</a>
<a id="372" class="Keyword">private</a>
<a id="382" class="Keyword">variable</a>
<a id="395" href="Data.Product.html#395" class="Generalizable">a</a> <a id="397" href="Data.Product.html#397" class="Generalizable">b</a> <a id="399" href="Data.Product.html#399" class="Generalizable">c</a> <a id="401" href="Data.Product.html#401" class="Generalizable">d</a> <a id="403" href="Data.Product.html#403" class="Generalizable">e</a> <a id="405" href="Data.Product.html#405" class="Generalizable">f</a> <a id="407" href="Data.Product.html#407" class="Generalizable"></a> <a id="409" href="Data.Product.html#409" class="Generalizable">p</a> <a id="411" href="Data.Product.html#411" class="Generalizable">q</a> <a id="413" href="Data.Product.html#413" class="Generalizable">r</a> <a id="415" class="Symbol">:</a> <a id="417" href="Agda.Primitive.html#591" class="Postulate">Level</a>
<a id="427" href="Data.Product.html#427" class="Generalizable">A</a> <a id="429" class="Symbol">:</a> <a id="431" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="435" href="Data.Product.html#395" class="Generalizable">a</a>
<a id="441" href="Data.Product.html#441" class="Generalizable">B</a> <a id="443" class="Symbol">:</a> <a id="445" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="449" href="Data.Product.html#397" class="Generalizable">b</a>
<a id="455" href="Data.Product.html#455" class="Generalizable">C</a> <a id="457" class="Symbol">:</a> <a id="459" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="463" href="Data.Product.html#399" class="Generalizable">c</a>
<a id="469" href="Data.Product.html#469" class="Generalizable">D</a> <a id="471" class="Symbol">:</a> <a id="473" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="477" href="Data.Product.html#401" class="Generalizable">d</a>
<a id="483" href="Data.Product.html#483" class="Generalizable">E</a> <a id="485" class="Symbol">:</a> <a id="487" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="491" href="Data.Product.html#403" class="Generalizable">e</a>
<a id="497" href="Data.Product.html#497" class="Generalizable">F</a> <a id="499" class="Symbol">:</a> <a id="501" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="505" href="Data.Product.html#405" class="Generalizable">f</a>
<a id="508" class="Comment">------------------------------------------------------------------------</a>
<a id="581" class="Comment">-- Definition of dependent products</a>
<a id="618" class="Keyword">open</a> <a id="623" class="Keyword">import</a> <a id="630" href="Agda.Builtin.Sigma.html" class="Module">Agda.Builtin.Sigma</a> <a id="649" class="Keyword">public</a>
<a id="658" class="Keyword">renaming</a> <a id="667" class="Symbol">(</a><a id="668" href="Agda.Builtin.Sigma.html#234" class="Field">fst</a> <a id="672" class="Symbol">to</a> <a id="675" class="Field">proj₁</a><a id="680" class="Symbol">;</a> <a id="682" href="Agda.Builtin.Sigma.html#246" class="Field">snd</a> <a id="686" class="Symbol">to</a> <a id="689" class="Field">proj₂</a><a id="694" class="Symbol">)</a>
<a id="698" class="Keyword">hiding</a> <a id="705" class="Symbol">(</a><a id="706" class="Keyword">module</a> <a id="713" href="Agda.Builtin.Sigma.html#148" class="Module">Σ</a><a id="714" class="Symbol">)</a>
<a id="717" class="Keyword">module</a> <a id="Σ"></a><a id="724" href="Data.Product.html#724" class="Module">Σ</a> <a id="726" class="Symbol">=</a> <a id="728" href="Agda.Builtin.Sigma.html#148" class="Module">Agda.Builtin.Sigma.Σ</a>
<a id="751" class="Keyword">renaming</a> <a id="760" class="Symbol">(</a><a id="761" href="Agda.Builtin.Sigma.html#234" class="Field">fst</a> <a id="765" class="Symbol">to</a> <a id="768" class="Field">proj₁</a><a id="773" class="Symbol">;</a> <a id="775" href="Agda.Builtin.Sigma.html#246" class="Field">snd</a> <a id="779" class="Symbol">to</a> <a id="782" class="Field">proj₂</a><a id="787" class="Symbol">)</a>
<a id="790" class="Comment">-- The syntax declaration below is attached to Σ-syntax, to make it</a>
<a id="858" class="Comment">-- easy to import Σ without the special syntax.</a>
<a id="907" class="Keyword">infix</a> <a id="913" class="Number">2</a> <a id="915" href="Data.Product.html#925" class="Function">Σ-syntax</a>
<a id="Σ-syntax"></a><a id="925" href="Data.Product.html#925" class="Function">Σ-syntax</a> <a id="934" class="Symbol">:</a> <a id="936" class="Symbol">(</a><a id="937" href="Data.Product.html#937" class="Bound">A</a> <a id="939" class="Symbol">:</a> <a id="941" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="945" href="Data.Product.html#395" class="Generalizable">a</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.html#937" class="Bound">A</a> <a id="953" class="Symbol"></a> <a id="955" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="959" href="Data.Product.html#397" class="Generalizable">b</a><a id="960" class="Symbol">)</a> <a id="962" class="Symbol"></a> <a id="964" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="968" class="Symbol">(</a><a id="969" href="Data.Product.html#395" class="Generalizable">a</a> <a id="971" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="973" href="Data.Product.html#397" class="Generalizable">b</a><a id="974" class="Symbol">)</a>
<a id="976" href="Data.Product.html#925" class="Function">Σ-syntax</a> <a id="985" class="Symbol">=</a> <a id="987" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a>
<a id="990" class="Keyword">syntax</a> <a id="997" href="Data.Product.html#925" class="Function">Σ-syntax</a> <a id="1006" class="Bound">A</a> <a id="1008" class="Symbol"></a> <a id="1011" class="Bound">x</a> <a id="1013" class="Symbol"></a> <a id="1015" class="Bound">B</a><a id="1016" class="Symbol">)</a> <a id="1018" class="Symbol">=</a> <a id="1020" class="Function">Σ[</a> <a id="1023" class="Bound">x</a> <a id="1025" class="Function"></a> <a id="1027" class="Bound">A</a> <a id="1029" class="Function">]</a> <a id="1031" class="Bound">B</a>
<a id="1034" class="Comment">------------------------------------------------------------------------</a>
<a id="1107" class="Comment">-- Definition of non-dependent products</a>
<a id="1148" class="Keyword">infixr</a> <a id="1155" class="Number">4</a> <a id="1157" href="Data.Product.html#1244" class="Function Operator">_,_</a>
<a id="1162" class="Keyword">infixr</a> <a id="1169" class="Number">2</a> <a id="1171" href="Data.Product.html#1176" class="Function Operator">_×_</a>
<a id="_×_"></a><a id="1176" href="Data.Product.html#1176" class="Function Operator">_×_</a> <a id="1180" class="Symbol">:</a> <a id="1182" class="Symbol"></a> <a id="1184" class="Symbol">(</a><a id="1185" href="Data.Product.html#1185" class="Bound">A</a> <a id="1187" class="Symbol">:</a> <a id="1189" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1193" href="Data.Product.html#395" class="Generalizable">a</a><a id="1194" class="Symbol">)</a> <a id="1196" class="Symbol">(</a><a id="1197" href="Data.Product.html#1197" class="Bound">B</a> <a id="1199" class="Symbol">:</a> <a id="1201" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1205" href="Data.Product.html#397" class="Generalizable">b</a><a id="1206" class="Symbol">)</a> <a id="1208" class="Symbol"></a> <a id="1210" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1214" class="Symbol">(</a><a id="1215" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1217" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1219" href="Data.Product.html#397" class="Generalizable">b</a><a id="1220" class="Symbol">)</a>
<a id="1222" href="Data.Product.html#1222" class="Bound">A</a> <a id="1224" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="1226" href="Data.Product.html#1226" class="Bound">B</a> <a id="1228" class="Symbol">=</a> <a id="1230" href="Data.Product.html#925" class="Function">Σ[</a> <a id="1233" href="Data.Product.html#1233" class="Bound">x</a> <a id="1235" href="Data.Product.html#925" class="Function"></a> <a id="1237" href="Data.Product.html#1222" class="Bound">A</a> <a id="1239" href="Data.Product.html#925" class="Function">]</a> <a id="1241" href="Data.Product.html#1226" class="Bound">B</a>
<a id="_,_"></a><a id="1244" href="Data.Product.html#1244" class="Function Operator">_,_</a> <a id="1249" class="Symbol">:</a> <a id="1251" href="Data.Product.html#427" class="Generalizable">A</a> <a id="1253" class="Symbol"></a> <a id="1255" href="Data.Product.html#441" class="Generalizable">B</a> <a id="1257" class="Symbol"></a> <a id="1259" href="Data.Product.html#427" class="Generalizable">A</a> <a id="1261" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="1263" href="Data.Product.html#441" class="Generalizable">B</a>
<a id="1265" href="Data.Product.html#1244" class="Function Operator">_,_</a> <a id="1270" class="Symbol">=</a> <a id="1272" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">_,_</a>
<a id="1277" class="Comment">------------------------------------------------------------------------</a>
<a id="1350" class="Comment">-- Existential quantifiers</a>
<a id="∃"></a><a id="1378" href="Data.Product.html#1378" class="Function"></a> <a id="1380" class="Symbol">:</a> <a id="1382" class="Symbol"></a> <a id="1384" class="Symbol">{</a><a id="1385" href="Data.Product.html#1385" class="Bound">A</a> <a id="1387" class="Symbol">:</a> <a id="1389" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1393" href="Data.Product.html#395" class="Generalizable">a</a><a id="1394" class="Symbol">}</a> <a id="1396" class="Symbol"></a> <a id="1398" class="Symbol">(</a><a id="1399" href="Data.Product.html#1385" class="Bound">A</a> <a id="1401" class="Symbol"></a> <a id="1403" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1407" href="Data.Product.html#397" class="Generalizable">b</a><a id="1408" class="Symbol">)</a> <a id="1410" class="Symbol"></a> <a id="1412" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1416" class="Symbol">(</a><a id="1417" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1419" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1421" href="Data.Product.html#397" class="Generalizable">b</a><a id="1422" class="Symbol">)</a>
<a id="1424" href="Data.Product.html#1378" class="Function"></a> <a id="1426" class="Symbol">=</a> <a id="1428" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="1430" class="Symbol">_</a>
<a id="∄"></a><a id="1433" href="Data.Product.html#1433" class="Function"></a> <a id="1435" class="Symbol">:</a> <a id="1437" class="Symbol"></a> <a id="1439" class="Symbol">{</a><a id="1440" href="Data.Product.html#1440" class="Bound">A</a> <a id="1442" class="Symbol">:</a> <a id="1444" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1448" href="Data.Product.html#395" class="Generalizable">a</a><a id="1449" class="Symbol">}</a> <a id="1451" class="Symbol"></a> <a id="1453" class="Symbol">(</a><a id="1454" href="Data.Product.html#1440" class="Bound">A</a> <a id="1456" class="Symbol"></a> <a id="1458" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1462" href="Data.Product.html#397" class="Generalizable">b</a><a id="1463" class="Symbol">)</a> <a id="1465" class="Symbol"></a> <a id="1467" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1471" class="Symbol">(</a><a id="1472" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1474" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1476" href="Data.Product.html#397" class="Generalizable">b</a><a id="1477" class="Symbol">)</a>
<a id="1479" href="Data.Product.html#1433" class="Function"></a> <a id="1481" href="Data.Product.html#1481" class="Bound">P</a> <a id="1483" class="Symbol">=</a> <a id="1485" href="Relation.Nullary.html#665" class="Function Operator">¬</a> <a id="1487" href="Data.Product.html#1378" class="Function"></a> <a id="1489" href="Data.Product.html#1481" class="Bound">P</a>
<a id="∃₂"></a><a id="1492" href="Data.Product.html#1492" class="Function">∃₂</a> <a id="1495" class="Symbol">:</a> <a id="1497" class="Symbol"></a> <a id="1499" class="Symbol">{</a><a id="1500" href="Data.Product.html#1500" class="Bound">A</a> <a id="1502" class="Symbol">:</a> <a id="1504" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1508" href="Data.Product.html#395" class="Generalizable">a</a><a id="1509" class="Symbol">}</a> <a id="1511" class="Symbol">{</a><a id="1512" href="Data.Product.html#1512" class="Bound">B</a> <a id="1514" class="Symbol">:</a> <a id="1516" href="Data.Product.html#1500" class="Bound">A</a> <a id="1518" class="Symbol"></a> <a id="1520" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1524" href="Data.Product.html#397" class="Generalizable">b</a><a id="1525" class="Symbol">}</a>
<a id="1532" class="Symbol">(</a><a id="1533" href="Data.Product.html#1533" class="Bound">C</a> <a id="1535" class="Symbol">:</a> <a id="1537" class="Symbol">(</a><a id="1538" href="Data.Product.html#1538" class="Bound">x</a> <a id="1540" class="Symbol">:</a> <a id="1542" href="Data.Product.html#1500" class="Bound">A</a><a id="1543" class="Symbol">)</a> <a id="1545" class="Symbol"></a> <a id="1547" href="Data.Product.html#1512" class="Bound">B</a> <a id="1549" href="Data.Product.html#1538" class="Bound">x</a> <a id="1551" class="Symbol"></a> <a id="1553" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1557" href="Data.Product.html#399" class="Generalizable">c</a><a id="1558" class="Symbol">)</a> <a id="1560" class="Symbol"></a> <a id="1562" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1566" class="Symbol">(</a><a id="1567" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1569" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1571" href="Data.Product.html#397" class="Generalizable">b</a> <a id="1573" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1575" href="Data.Product.html#399" class="Generalizable">c</a><a id="1576" class="Symbol">)</a>
<a id="1578" href="Data.Product.html#1492" class="Function">∃₂</a> <a id="1581" href="Data.Product.html#1581" class="Bound">C</a> <a id="1583" class="Symbol">=</a> <a id="1585" href="Data.Product.html#1378" class="Function"></a> <a id="1587" class="Symbol">λ</a> <a id="1589" href="Data.Product.html#1589" class="Bound">a</a> <a id="1591" class="Symbol"></a> <a id="1593" href="Data.Product.html#1378" class="Function"></a> <a id="1595" class="Symbol">λ</a> <a id="1597" href="Data.Product.html#1597" class="Bound">b</a> <a id="1599" class="Symbol"></a> <a id="1601" href="Data.Product.html#1581" class="Bound">C</a> <a id="1603" href="Data.Product.html#1589" class="Bound">a</a> <a id="1605" href="Data.Product.html#1597" class="Bound">b</a>
<a id="1608" class="Comment">-- Unique existence (parametrised by an underlying equality).</a>
<a id="∃!"></a><a id="1671" href="Data.Product.html#1671" class="Function">∃!</a> <a id="1674" class="Symbol">:</a> <a id="1676" class="Symbol">{</a><a id="1677" href="Data.Product.html#1677" class="Bound">A</a> <a id="1679" class="Symbol">:</a> <a id="1681" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1685" href="Data.Product.html#395" class="Generalizable">a</a><a id="1686" class="Symbol">}</a> <a id="1688" class="Symbol"></a> <a id="1690" class="Symbol">(</a><a id="1691" href="Data.Product.html#1677" class="Bound">A</a> <a id="1693" class="Symbol"></a> <a id="1695" href="Data.Product.html#1677" class="Bound">A</a> <a id="1697" class="Symbol"></a> <a id="1699" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1703" href="Data.Product.html#407" class="Generalizable"></a><a id="1704" class="Symbol">)</a> <a id="1706" class="Symbol"></a> <a id="1708" class="Symbol">(</a><a id="1709" href="Data.Product.html#1677" class="Bound">A</a> <a id="1711" class="Symbol"></a> <a id="1713" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1717" href="Data.Product.html#397" class="Generalizable">b</a><a id="1718" class="Symbol">)</a> <a id="1720" class="Symbol"></a> <a id="1722" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1726" class="Symbol">(</a><a id="1727" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1729" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1731" href="Data.Product.html#397" class="Generalizable">b</a> <a id="1733" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1735" href="Data.Product.html#407" class="Generalizable"></a><a id="1736" class="Symbol">)</a>
<a id="1738" href="Data.Product.html#1671" class="Function">∃!</a> <a id="1741" href="Data.Product.html#1741" class="Bound Operator">_≈_</a> <a id="1745" href="Data.Product.html#1745" class="Bound">B</a> <a id="1747" class="Symbol">=</a> <a id="1749" href="Data.Product.html#1378" class="Function"></a> <a id="1751" class="Symbol">λ</a> <a id="1753" href="Data.Product.html#1753" class="Bound">x</a> <a id="1755" class="Symbol"></a> <a id="1757" href="Data.Product.html#1745" class="Bound">B</a> <a id="1759" href="Data.Product.html#1753" class="Bound">x</a> <a id="1761" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="1763" class="Symbol">(∀</a> <a id="1766" class="Symbol">{</a><a id="1767" href="Data.Product.html#1767" class="Bound">y</a><a id="1768" class="Symbol">}</a> <a id="1770" class="Symbol"></a> <a id="1772" href="Data.Product.html#1745" class="Bound">B</a> <a id="1774" href="Data.Product.html#1767" class="Bound">y</a> <a id="1776" class="Symbol"></a> <a id="1778" href="Data.Product.html#1753" class="Bound">x</a> <a id="1780" href="Data.Product.html#1741" class="Bound Operator"></a> <a id="1782" href="Data.Product.html#1767" class="Bound">y</a><a id="1783" class="Symbol">)</a>
<a id="1786" class="Comment">-- Syntax</a>
<a id="1797" class="Keyword">infix</a> <a id="1803" class="Number">2</a> <a id="1805" href="Data.Product.html#1815" class="Function">∃-syntax</a>
<a id="∃-syntax"></a><a id="1815" href="Data.Product.html#1815" class="Function">∃-syntax</a> <a id="1824" class="Symbol">:</a> <a id="1826" class="Symbol"></a> <a id="1828" class="Symbol">{</a><a id="1829" href="Data.Product.html#1829" class="Bound">A</a> <a id="1831" class="Symbol">:</a> <a id="1833" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1837" href="Data.Product.html#395" class="Generalizable">a</a><a id="1838" class="Symbol">}</a> <a id="1840" class="Symbol"></a> <a id="1842" class="Symbol">(</a><a id="1843" href="Data.Product.html#1829" class="Bound">A</a> <a id="1845" class="Symbol"></a> <a id="1847" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1851" href="Data.Product.html#397" class="Generalizable">b</a><a id="1852" class="Symbol">)</a> <a id="1854" class="Symbol"></a> <a id="1856" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1860" class="Symbol">(</a><a id="1861" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1863" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1865" href="Data.Product.html#397" class="Generalizable">b</a><a id="1866" class="Symbol">)</a>
<a id="1868" href="Data.Product.html#1815" class="Function">∃-syntax</a> <a id="1877" class="Symbol">=</a> <a id="1879" href="Data.Product.html#1378" class="Function"></a>
<a id="1882" class="Keyword">syntax</a> <a id="1889" href="Data.Product.html#1815" class="Function">∃-syntax</a> <a id="1898" class="Symbol"></a> <a id="1901" class="Bound">x</a> <a id="1903" class="Symbol"></a> <a id="1905" class="Bound">B</a><a id="1906" class="Symbol">)</a> <a id="1908" class="Symbol">=</a> <a id="1910" class="Function">∃[</a> <a id="1913" class="Bound">x</a> <a id="1915" class="Function">]</a> <a id="1917" class="Bound">B</a>
<a id="1920" class="Keyword">infix</a> <a id="1926" class="Number">2</a> <a id="1928" href="Data.Product.html#1938" class="Function">∄-syntax</a>
<a id="∄-syntax"></a><a id="1938" href="Data.Product.html#1938" class="Function">∄-syntax</a> <a id="1947" class="Symbol">:</a> <a id="1949" class="Symbol"></a> <a id="1951" class="Symbol">{</a><a id="1952" href="Data.Product.html#1952" class="Bound">A</a> <a id="1954" class="Symbol">:</a> <a id="1956" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1960" href="Data.Product.html#395" class="Generalizable">a</a><a id="1961" class="Symbol">}</a> <a id="1963" class="Symbol"></a> <a id="1965" class="Symbol">(</a><a id="1966" href="Data.Product.html#1952" class="Bound">A</a> <a id="1968" class="Symbol"></a> <a id="1970" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1974" href="Data.Product.html#397" class="Generalizable">b</a><a id="1975" class="Symbol">)</a> <a id="1977" class="Symbol"></a> <a id="1979" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1983" class="Symbol">(</a><a id="1984" href="Data.Product.html#395" class="Generalizable">a</a> <a id="1986" href="Agda.Primitive.html#804" class="Primitive Operator"></a> <a id="1988" href="Data.Product.html#397" class="Generalizable">b</a><a id="1989" class="Symbol">)</a>
<a id="1991" href="Data.Product.html#1938" class="Function">∄-syntax</a> <a id="2000" class="Symbol">=</a> <a id="2002" href="Data.Product.html#1433" class="Function"></a>
<a id="2005" class="Keyword">syntax</a> <a id="2012" href="Data.Product.html#1938" class="Function">∄-syntax</a> <a id="2021" class="Symbol"></a> <a id="2024" class="Bound">x</a> <a id="2026" class="Symbol"></a> <a id="2028" class="Bound">B</a><a id="2029" class="Symbol">)</a> <a id="2031" class="Symbol">=</a> <a id="2033" class="Function">∄[</a> <a id="2036" class="Bound">x</a> <a id="2038" class="Function">]</a> <a id="2040" class="Bound">B</a>
<a id="2043" class="Comment">------------------------------------------------------------------------</a>
<a id="2116" class="Comment">-- Operations over dependent products</a>
<a id="2155" class="Keyword">infix</a> <a id="2162" class="Number">4</a> <a id="2164" href="Data.Product.html#2256" class="Function Operator">-,_</a>
<a id="2168" class="Keyword">infixr</a> <a id="2175" class="Number">2</a> <a id="2177" href="Data.Product.html#5371" class="Function Operator">_-×-_</a> <a id="2183" href="Data.Product.html#5456" class="Function Operator">_-,-_</a>
<a id="2189" class="Keyword">infixl</a> <a id="2196" class="Number">2</a> <a id="2198" href="Data.Product.html#5104" class="Function Operator">_&lt;*&gt;_</a>
<a id="2205" class="Comment">-- Sometimes the first component can be inferred.</a>
<a id="-,_"></a><a id="2256" href="Data.Product.html#2256" class="Function Operator">-,_</a> <a id="2260" class="Symbol">:</a> <a id="2262" class="Symbol"></a> <a id="2264" class="Symbol">{</a><a id="2265" href="Data.Product.html#2265" class="Bound">A</a> <a id="2267" class="Symbol">:</a> <a id="2269" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2273" href="Data.Product.html#395" class="Generalizable">a</a><a id="2274" class="Symbol">}</a> <a id="2276" class="Symbol">{</a><a id="2277" href="Data.Product.html#2277" class="Bound">B</a> <a id="2279" class="Symbol">:</a> <a id="2281" href="Data.Product.html#2265" class="Bound">A</a> <a id="2283" class="Symbol"></a> <a id="2285" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2289" href="Data.Product.html#397" class="Generalizable">b</a><a id="2290" class="Symbol">}</a> <a id="2292" class="Symbol">{</a><a id="2293" href="Data.Product.html#2293" class="Bound">x</a><a id="2294" class="Symbol">}</a> <a id="2296" class="Symbol"></a> <a id="2298" href="Data.Product.html#2277" class="Bound">B</a> <a id="2300" href="Data.Product.html#2293" class="Bound">x</a> <a id="2302" class="Symbol"></a> <a id="2304" href="Data.Product.html#1378" class="Function"></a> <a id="2306" href="Data.Product.html#2277" class="Bound">B</a>
<a id="2308" href="Data.Product.html#2256" class="Function Operator">-,</a> <a id="2311" href="Data.Product.html#2311" class="Bound">y</a> <a id="2313" class="Symbol">=</a> <a id="2315" class="Symbol">_</a> <a id="2317" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="2319" href="Data.Product.html#2311" class="Bound">y</a>
<a id="&lt;_,_&gt;"></a><a id="2322" href="Data.Product.html#2322" class="Function Operator">&lt;_,_&gt;</a> <a id="2328" class="Symbol">:</a> <a id="2330" class="Symbol"></a> <a id="2332" class="Symbol">{</a><a id="2333" href="Data.Product.html#2333" class="Bound">A</a> <a id="2335" class="Symbol">:</a> <a id="2337" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2341" href="Data.Product.html#395" class="Generalizable">a</a><a id="2342" class="Symbol">}</a> <a id="2344" class="Symbol">{</a><a id="2345" href="Data.Product.html#2345" class="Bound">B</a> <a id="2347" class="Symbol">:</a> <a id="2349" href="Data.Product.html#2333" class="Bound">A</a> <a id="2351" class="Symbol"></a> <a id="2353" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2357" href="Data.Product.html#397" class="Generalizable">b</a><a id="2358" class="Symbol">}</a> <a id="2360" class="Symbol">{</a><a id="2361" href="Data.Product.html#2361" class="Bound">C</a> <a id="2363" class="Symbol">:</a> <a id="2365" class="Symbol"></a> <a id="2367" class="Symbol">{</a><a id="2368" href="Data.Product.html#2368" class="Bound">x</a><a id="2369" class="Symbol">}</a> <a id="2371" class="Symbol"></a> <a id="2373" href="Data.Product.html#2345" class="Bound">B</a> <a id="2375" href="Data.Product.html#2368" class="Bound">x</a> <a id="2377" class="Symbol"></a> <a id="2379" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2383" href="Data.Product.html#399" class="Generalizable">c</a><a id="2384" class="Symbol">}</a>
<a id="2394" class="Symbol">(</a><a id="2395" href="Data.Product.html#2395" class="Bound">f</a> <a id="2397" class="Symbol">:</a> <a id="2399" class="Symbol">(</a><a id="2400" href="Data.Product.html#2400" class="Bound">x</a> <a id="2402" class="Symbol">:</a> <a id="2404" href="Data.Product.html#2333" class="Bound">A</a><a id="2405" class="Symbol">)</a> <a id="2407" class="Symbol"></a> <a id="2409" href="Data.Product.html#2345" class="Bound">B</a> <a id="2411" href="Data.Product.html#2400" class="Bound">x</a><a id="2412" class="Symbol">)</a> <a id="2414" class="Symbol"></a> <a id="2416" class="Symbol">((</a><a id="2418" href="Data.Product.html#2418" class="Bound">x</a> <a id="2420" class="Symbol">:</a> <a id="2422" href="Data.Product.html#2333" class="Bound">A</a><a id="2423" class="Symbol">)</a> <a id="2425" class="Symbol"></a> <a id="2427" href="Data.Product.html#2361" class="Bound">C</a> <a id="2429" class="Symbol">(</a><a id="2430" href="Data.Product.html#2395" class="Bound">f</a> <a id="2432" href="Data.Product.html#2418" class="Bound">x</a><a id="2433" class="Symbol">))</a> <a id="2436" class="Symbol"></a>
<a id="2446" class="Symbol">((</a><a id="2448" href="Data.Product.html#2448" class="Bound">x</a> <a id="2450" class="Symbol">:</a> <a id="2452" href="Data.Product.html#2333" class="Bound">A</a><a id="2453" class="Symbol">)</a> <a id="2455" class="Symbol"></a> <a id="2457" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="2459" class="Symbol">(</a><a id="2460" href="Data.Product.html#2345" class="Bound">B</a> <a id="2462" href="Data.Product.html#2448" class="Bound">x</a><a id="2463" class="Symbol">)</a> <a id="2465" href="Data.Product.html#2361" class="Bound">C</a><a id="2466" class="Symbol">)</a>
<a id="2468" href="Data.Product.html#2322" class="Function Operator">&lt;</a> <a id="2470" href="Data.Product.html#2470" class="Bound">f</a> <a id="2472" href="Data.Product.html#2322" class="Function Operator">,</a> <a id="2474" href="Data.Product.html#2474" class="Bound">g</a> <a id="2476" href="Data.Product.html#2322" class="Function Operator">&gt;</a> <a id="2478" href="Data.Product.html#2478" class="Bound">x</a> <a id="2480" class="Symbol">=</a> <a id="2482" class="Symbol">(</a><a id="2483" href="Data.Product.html#2470" class="Bound">f</a> <a id="2485" href="Data.Product.html#2478" class="Bound">x</a> <a id="2487" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="2489" href="Data.Product.html#2474" class="Bound">g</a> <a id="2491" href="Data.Product.html#2478" class="Bound">x</a><a id="2492" class="Symbol">)</a>
<a id="map"></a><a id="2495" href="Data.Product.html#2495" class="Function">map</a> <a id="2499" class="Symbol">:</a> <a id="2501" class="Symbol"></a> <a id="2503" class="Symbol">{</a><a id="2504" href="Data.Product.html#2504" class="Bound">P</a> <a id="2506" class="Symbol">:</a> <a id="2508" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2510" class="Symbol"></a> <a id="2512" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2516" href="Data.Product.html#409" class="Generalizable">p</a><a id="2517" class="Symbol">}</a> <a id="2519" class="Symbol">{</a><a id="2520" href="Data.Product.html#2520" class="Bound">Q</a> <a id="2522" class="Symbol">:</a> <a id="2524" href="Data.Product.html#441" class="Generalizable">B</a> <a id="2526" class="Symbol"></a> <a id="2528" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2532" href="Data.Product.html#411" class="Generalizable">q</a><a id="2533" class="Symbol">}</a> <a id="2535" class="Symbol"></a>
<a id="2543" class="Symbol">(</a><a id="2544" href="Data.Product.html#2544" class="Bound">f</a> <a id="2546" class="Symbol">:</a> <a id="2548" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2550" class="Symbol"></a> <a id="2552" href="Data.Product.html#441" class="Generalizable">B</a><a id="2553" class="Symbol">)</a> <a id="2555" class="Symbol"></a> <a id="2557" class="Symbol">(∀</a> <a id="2560" class="Symbol">{</a><a id="2561" href="Data.Product.html#2561" class="Bound">x</a><a id="2562" class="Symbol">}</a> <a id="2564" class="Symbol"></a> <a id="2566" href="Data.Product.html#2504" class="Bound">P</a> <a id="2568" href="Data.Product.html#2561" class="Bound">x</a> <a id="2570" class="Symbol"></a> <a id="2572" href="Data.Product.html#2520" class="Bound">Q</a> <a id="2574" class="Symbol">(</a><a id="2575" href="Data.Product.html#2544" class="Bound">f</a> <a id="2577" href="Data.Product.html#2561" class="Bound">x</a><a id="2578" class="Symbol">))</a> <a id="2581" class="Symbol"></a>
<a id="2589" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="2591" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2593" href="Data.Product.html#2504" class="Bound">P</a> <a id="2595" class="Symbol"></a> <a id="2597" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="2599" href="Data.Product.html#441" class="Generalizable">B</a> <a id="2601" href="Data.Product.html#2520" class="Bound">Q</a>
<a id="2603" href="Data.Product.html#2495" class="Function">map</a> <a id="2607" href="Data.Product.html#2607" class="Bound">f</a> <a id="2609" href="Data.Product.html#2609" class="Bound">g</a> <a id="2611" class="Symbol">(</a><a id="2612" href="Data.Product.html#2612" class="Bound">x</a> <a id="2614" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="2616" href="Data.Product.html#2616" class="Bound">y</a><a id="2617" class="Symbol">)</a> <a id="2619" class="Symbol">=</a> <a id="2621" class="Symbol">(</a><a id="2622" href="Data.Product.html#2607" class="Bound">f</a> <a id="2624" href="Data.Product.html#2612" class="Bound">x</a> <a id="2626" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="2628" href="Data.Product.html#2609" class="Bound">g</a> <a id="2630" href="Data.Product.html#2616" class="Bound">y</a><a id="2631" class="Symbol">)</a>
<a id="map₁"></a><a id="2634" href="Data.Product.html#2634" class="Function">map₁</a> <a id="2639" class="Symbol">:</a> <a id="2641" class="Symbol">(</a><a id="2642" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2644" class="Symbol"></a> <a id="2646" href="Data.Product.html#441" class="Generalizable">B</a><a id="2647" class="Symbol">)</a> <a id="2649" class="Symbol"></a> <a id="2651" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2653" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="2655" href="Data.Product.html#455" class="Generalizable">C</a> <a id="2657" class="Symbol"></a> <a id="2659" href="Data.Product.html#441" class="Generalizable">B</a> <a id="2661" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="2663" href="Data.Product.html#455" class="Generalizable">C</a>
<a id="2665" href="Data.Product.html#2634" class="Function">map₁</a> <a id="2670" href="Data.Product.html#2670" class="Bound">f</a> <a id="2672" class="Symbol">=</a> <a id="2674" href="Data.Product.html#2495" class="Function">map</a> <a id="2678" href="Data.Product.html#2670" class="Bound">f</a> <a id="2680" href="Function.Base.html#624" class="Function">id</a>
<a id="map₂"></a><a id="2684" href="Data.Product.html#2684" class="Function">map₂</a> <a id="2689" class="Symbol">:</a> <a id="2691" class="Symbol"></a> <a id="2693" class="Symbol">{</a><a id="2694" href="Data.Product.html#2694" class="Bound">A</a> <a id="2696" class="Symbol">:</a> <a id="2698" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2702" href="Data.Product.html#395" class="Generalizable">a</a><a id="2703" class="Symbol">}</a> <a id="2705" class="Symbol">{</a><a id="2706" href="Data.Product.html#2706" class="Bound">B</a> <a id="2708" class="Symbol">:</a> <a id="2710" href="Data.Product.html#2694" class="Bound">A</a> <a id="2712" class="Symbol"></a> <a id="2714" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2718" href="Data.Product.html#397" class="Generalizable">b</a><a id="2719" class="Symbol">}</a> <a id="2721" class="Symbol">{</a><a id="2722" href="Data.Product.html#2722" class="Bound">C</a> <a id="2724" class="Symbol">:</a> <a id="2726" href="Data.Product.html#2694" class="Bound">A</a> <a id="2728" class="Symbol"></a> <a id="2730" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2734" href="Data.Product.html#399" class="Generalizable">c</a><a id="2735" class="Symbol">}</a> <a id="2737" class="Symbol"></a>
<a id="2746" class="Symbol">(∀</a> <a id="2749" class="Symbol">{</a><a id="2750" href="Data.Product.html#2750" class="Bound">x</a><a id="2751" class="Symbol">}</a> <a id="2753" class="Symbol"></a> <a id="2755" href="Data.Product.html#2706" class="Bound">B</a> <a id="2757" href="Data.Product.html#2750" class="Bound">x</a> <a id="2759" class="Symbol"></a> <a id="2761" href="Data.Product.html#2722" class="Bound">C</a> <a id="2763" href="Data.Product.html#2750" class="Bound">x</a><a id="2764" class="Symbol">)</a> <a id="2766" class="Symbol"></a> <a id="2768" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="2770" href="Data.Product.html#2694" class="Bound">A</a> <a id="2772" href="Data.Product.html#2706" class="Bound">B</a> <a id="2774" class="Symbol"></a> <a id="2776" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="2778" href="Data.Product.html#2694" class="Bound">A</a> <a id="2780" href="Data.Product.html#2722" class="Bound">C</a>
<a id="2782" href="Data.Product.html#2684" class="Function">map₂</a> <a id="2787" href="Data.Product.html#2787" class="Bound">f</a> <a id="2789" class="Symbol">=</a> <a id="2791" href="Data.Product.html#2495" class="Function">map</a> <a id="2795" href="Function.Base.html#624" class="Function">id</a> <a id="2798" href="Data.Product.html#2787" class="Bound">f</a>
<a id="2801" class="Comment">-- A version of map where the output can depend on the input</a>
<a id="dmap"></a><a id="2862" href="Data.Product.html#2862" class="Function">dmap</a> <a id="2867" class="Symbol">:</a> <a id="2869" class="Symbol"></a> <a id="2871" class="Symbol">{</a><a id="2872" href="Data.Product.html#2872" class="Bound">B</a> <a id="2874" class="Symbol">:</a> <a id="2876" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2878" class="Symbol"></a> <a id="2880" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2884" href="Data.Product.html#397" class="Generalizable">b</a><a id="2885" class="Symbol">}</a> <a id="2887" class="Symbol">{</a><a id="2888" href="Data.Product.html#2888" class="Bound">P</a> <a id="2890" class="Symbol">:</a> <a id="2892" href="Data.Product.html#427" class="Generalizable">A</a> <a id="2894" class="Symbol"></a> <a id="2896" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2900" href="Data.Product.html#409" class="Generalizable">p</a><a id="2901" class="Symbol">}</a> <a id="2903" class="Symbol">{</a><a id="2904" href="Data.Product.html#2904" class="Bound">Q</a> <a id="2906" class="Symbol">:</a> <a id="2908" class="Symbol"></a> <a id="2910" class="Symbol">{</a><a id="2911" href="Data.Product.html#2911" class="Bound">a</a><a id="2912" class="Symbol">}</a> <a id="2914" class="Symbol"></a> <a id="2916" href="Data.Product.html#2888" class="Bound">P</a> <a id="2918" href="Data.Product.html#2911" class="Bound">a</a> <a id="2920" class="Symbol"></a> <a id="2922" href="Data.Product.html#2872" class="Bound">B</a> <a id="2924" href="Data.Product.html#2911" class="Bound">a</a> <a id="2926" class="Symbol"></a> <a id="2928" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2932" href="Data.Product.html#411" class="Generalizable">q</a><a id="2933" class="Symbol">}</a> <a id="2935" class="Symbol"></a>
<a id="2944" class="Symbol">(</a><a id="2945" href="Data.Product.html#2945" class="Bound">f</a> <a id="2947" class="Symbol">:</a> <a id="2949" class="Symbol">(</a><a id="2950" href="Data.Product.html#2950" class="Bound">a</a> <a id="2952" class="Symbol">:</a> <a id="2954" href="Data.Product.html#427" class="Generalizable">A</a><a id="2955" class="Symbol">)</a> <a id="2957" class="Symbol"></a> <a id="2959" href="Data.Product.html#2872" class="Bound">B</a> <a id="2961" href="Data.Product.html#2950" class="Bound">a</a><a id="2962" class="Symbol">)</a> <a id="2964" class="Symbol"></a> <a id="2966" class="Symbol">(∀</a> <a id="2969" class="Symbol">{</a><a id="2970" href="Data.Product.html#2970" class="Bound">a</a><a id="2971" class="Symbol">}</a> <a id="2973" class="Symbol">(</a><a id="2974" href="Data.Product.html#2974" class="Bound">b</a> <a id="2976" class="Symbol">:</a> <a id="2978" href="Data.Product.html#2888" class="Bound">P</a> <a id="2980" href="Data.Product.html#2970" class="Bound">a</a><a id="2981" class="Symbol">)</a> <a id="2983" class="Symbol"></a> <a id="2985" href="Data.Product.html#2904" class="Bound">Q</a> <a id="2987" href="Data.Product.html#2974" class="Bound">b</a> <a id="2989" class="Symbol">(</a><a id="2990" href="Data.Product.html#2945" class="Bound">f</a> <a id="2992" href="Data.Product.html#2970" class="Bound">a</a><a id="2993" class="Symbol">))</a> <a id="2996" class="Symbol"></a>
<a id="3005" class="Symbol">(</a><a id="3006" href="Data.Product.html#3006" class="Bound">(</a><a id="3007" href="Data.Product.html#3007" class="Bound">a</a> <a id="3009" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3011" href="Data.Product.html#3011" class="Bound">b</a><a id="3012" href="Data.Product.html#3006" class="Bound">)</a> <a id="3014" class="Symbol">:</a> <a id="3016" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3018" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3020" href="Data.Product.html#2888" class="Bound">P</a><a id="3021" class="Symbol">)</a> <a id="3023" class="Symbol"></a> <a id="3025" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3027" class="Symbol">(</a><a id="3028" href="Data.Product.html#2872" class="Bound">B</a> <a id="3030" href="Data.Product.html#3007" class="Bound">a</a><a id="3031" class="Symbol">)</a> <a id="3033" class="Symbol">(</a><a id="3034" href="Data.Product.html#2904" class="Bound">Q</a> <a id="3036" href="Data.Product.html#3011" class="Bound">b</a><a id="3037" class="Symbol">)</a>
<a id="3039" href="Data.Product.html#2862" class="Function">dmap</a> <a id="3044" href="Data.Product.html#3044" class="Bound">f</a> <a id="3046" href="Data.Product.html#3046" class="Bound">g</a> <a id="3048" class="Symbol">(</a><a id="3049" href="Data.Product.html#3049" class="Bound">x</a> <a id="3051" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3053" href="Data.Product.html#3053" class="Bound">y</a><a id="3054" class="Symbol">)</a> <a id="3056" class="Symbol">=</a> <a id="3058" href="Data.Product.html#3044" class="Bound">f</a> <a id="3060" href="Data.Product.html#3049" class="Bound">x</a> <a id="3062" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3064" href="Data.Product.html#3046" class="Bound">g</a> <a id="3066" href="Data.Product.html#3053" class="Bound">y</a>
<a id="zip"></a><a id="3069" href="Data.Product.html#3069" class="Function">zip</a> <a id="3073" class="Symbol">:</a> <a id="3075" class="Symbol"></a> <a id="3077" class="Symbol">{</a><a id="3078" href="Data.Product.html#3078" class="Bound">P</a> <a id="3080" class="Symbol">:</a> <a id="3082" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3084" class="Symbol"></a> <a id="3086" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3090" href="Data.Product.html#409" class="Generalizable">p</a><a id="3091" class="Symbol">}</a> <a id="3093" class="Symbol">{</a><a id="3094" href="Data.Product.html#3094" class="Bound">Q</a> <a id="3096" class="Symbol">:</a> <a id="3098" href="Data.Product.html#441" class="Generalizable">B</a> <a id="3100" class="Symbol"></a> <a id="3102" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3106" href="Data.Product.html#411" class="Generalizable">q</a><a id="3107" class="Symbol">}</a> <a id="3109" class="Symbol">{</a><a id="3110" href="Data.Product.html#3110" class="Bound">R</a> <a id="3112" class="Symbol">:</a> <a id="3114" href="Data.Product.html#455" class="Generalizable">C</a> <a id="3116" class="Symbol"></a> <a id="3118" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3122" href="Data.Product.html#413" class="Generalizable">r</a><a id="3123" class="Symbol">}</a> <a id="3125" class="Symbol"></a>
<a id="3133" class="Symbol">(</a><a id="3134" href="Data.Product.html#3134" class="Bound Operator">_∙_</a> <a id="3138" class="Symbol">:</a> <a id="3140" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3142" class="Symbol"></a> <a id="3144" href="Data.Product.html#441" class="Generalizable">B</a> <a id="3146" class="Symbol"></a> <a id="3148" href="Data.Product.html#455" class="Generalizable">C</a><a id="3149" class="Symbol">)</a> <a id="3151" class="Symbol"></a>
<a id="3159" class="Symbol">(∀</a> <a id="3162" class="Symbol">{</a><a id="3163" href="Data.Product.html#3163" class="Bound">x</a> <a id="3165" href="Data.Product.html#3165" class="Bound">y</a><a id="3166" class="Symbol">}</a> <a id="3168" class="Symbol"></a> <a id="3170" href="Data.Product.html#3078" class="Bound">P</a> <a id="3172" href="Data.Product.html#3163" class="Bound">x</a> <a id="3174" class="Symbol"></a> <a id="3176" href="Data.Product.html#3094" class="Bound">Q</a> <a id="3178" href="Data.Product.html#3165" class="Bound">y</a> <a id="3180" class="Symbol"></a> <a id="3182" href="Data.Product.html#3110" class="Bound">R</a> <a id="3184" class="Symbol">(</a><a id="3185" href="Data.Product.html#3163" class="Bound">x</a> <a id="3187" href="Data.Product.html#3134" class="Bound Operator"></a> <a id="3189" href="Data.Product.html#3165" class="Bound">y</a><a id="3190" class="Symbol">))</a> <a id="3193" class="Symbol"></a>
<a id="3201" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3203" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3205" href="Data.Product.html#3078" class="Bound">P</a> <a id="3207" class="Symbol"></a> <a id="3209" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3211" href="Data.Product.html#441" class="Generalizable">B</a> <a id="3213" href="Data.Product.html#3094" class="Bound">Q</a> <a id="3215" class="Symbol"></a> <a id="3217" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3219" href="Data.Product.html#455" class="Generalizable">C</a> <a id="3221" href="Data.Product.html#3110" class="Bound">R</a>
<a id="3223" href="Data.Product.html#3069" class="Function">zip</a> <a id="3227" href="Data.Product.html#3227" class="Bound Operator">_∙_</a> <a id="3231" href="Data.Product.html#3231" class="Bound Operator">_∘_</a> <a id="3235" class="Symbol">(</a><a id="3236" href="Data.Product.html#3236" class="Bound">a</a> <a id="3238" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3240" href="Data.Product.html#3240" class="Bound">p</a><a id="3241" class="Symbol">)</a> <a id="3243" class="Symbol">(</a><a id="3244" href="Data.Product.html#3244" class="Bound">b</a> <a id="3246" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3248" href="Data.Product.html#3248" class="Bound">q</a><a id="3249" class="Symbol">)</a> <a id="3251" class="Symbol">=</a> <a id="3253" class="Symbol">((</a><a id="3255" href="Data.Product.html#3236" class="Bound">a</a> <a id="3257" href="Data.Product.html#3227" class="Bound Operator"></a> <a id="3259" href="Data.Product.html#3244" class="Bound">b</a><a id="3260" class="Symbol">)</a> <a id="3262" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3264" class="Symbol">(</a><a id="3265" href="Data.Product.html#3240" class="Bound">p</a> <a id="3267" href="Data.Product.html#3231" class="Bound Operator"></a> <a id="3269" href="Data.Product.html#3248" class="Bound">q</a><a id="3270" class="Symbol">))</a>
<a id="curry"></a><a id="3274" href="Data.Product.html#3274" class="Function">curry</a> <a id="3280" class="Symbol">:</a> <a id="3282" class="Symbol"></a> <a id="3284" class="Symbol">{</a><a id="3285" href="Data.Product.html#3285" class="Bound">A</a> <a id="3287" class="Symbol">:</a> <a id="3289" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3293" href="Data.Product.html#395" class="Generalizable">a</a><a id="3294" class="Symbol">}</a> <a id="3296" class="Symbol">{</a><a id="3297" href="Data.Product.html#3297" class="Bound">B</a> <a id="3299" class="Symbol">:</a> <a id="3301" href="Data.Product.html#3285" class="Bound">A</a> <a id="3303" class="Symbol"></a> <a id="3305" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3309" href="Data.Product.html#397" class="Generalizable">b</a><a id="3310" class="Symbol">}</a> <a id="3312" class="Symbol">{</a><a id="3313" href="Data.Product.html#3313" class="Bound">C</a> <a id="3315" class="Symbol">:</a> <a id="3317" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3319" href="Data.Product.html#3285" class="Bound">A</a> <a id="3321" href="Data.Product.html#3297" class="Bound">B</a> <a id="3323" class="Symbol"></a> <a id="3325" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3329" href="Data.Product.html#399" class="Generalizable">c</a><a id="3330" class="Symbol">}</a> <a id="3332" class="Symbol"></a>
<a id="3342" class="Symbol">((</a><a id="3344" href="Data.Product.html#3344" class="Bound">p</a> <a id="3346" class="Symbol">:</a> <a id="3348" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3350" href="Data.Product.html#3285" class="Bound">A</a> <a id="3352" href="Data.Product.html#3297" class="Bound">B</a><a id="3353" class="Symbol">)</a> <a id="3355" class="Symbol"></a> <a id="3357" href="Data.Product.html#3313" class="Bound">C</a> <a id="3359" href="Data.Product.html#3344" class="Bound">p</a><a id="3360" class="Symbol">)</a> <a id="3362" class="Symbol"></a>
<a id="3372" class="Symbol">((</a><a id="3374" href="Data.Product.html#3374" class="Bound">x</a> <a id="3376" class="Symbol">:</a> <a id="3378" href="Data.Product.html#3285" class="Bound">A</a><a id="3379" class="Symbol">)</a> <a id="3381" class="Symbol"></a> <a id="3383" class="Symbol">(</a><a id="3384" href="Data.Product.html#3384" class="Bound">y</a> <a id="3386" class="Symbol">:</a> <a id="3388" href="Data.Product.html#3297" class="Bound">B</a> <a id="3390" href="Data.Product.html#3374" class="Bound">x</a><a id="3391" class="Symbol">)</a> <a id="3393" class="Symbol"></a> <a id="3395" href="Data.Product.html#3313" class="Bound">C</a> <a id="3397" class="Symbol">(</a><a id="3398" href="Data.Product.html#3374" class="Bound">x</a> <a id="3400" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3402" href="Data.Product.html#3384" class="Bound">y</a><a id="3403" class="Symbol">))</a>
<a id="3406" href="Data.Product.html#3274" class="Function">curry</a> <a id="3412" href="Data.Product.html#3412" class="Bound">f</a> <a id="3414" href="Data.Product.html#3414" class="Bound">x</a> <a id="3416" href="Data.Product.html#3416" class="Bound">y</a> <a id="3418" class="Symbol">=</a> <a id="3420" href="Data.Product.html#3412" class="Bound">f</a> <a id="3422" class="Symbol">(</a><a id="3423" href="Data.Product.html#3414" class="Bound">x</a> <a id="3425" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3427" href="Data.Product.html#3416" class="Bound">y</a><a id="3428" class="Symbol">)</a>
<a id="uncurry"></a><a id="3431" href="Data.Product.html#3431" class="Function">uncurry</a> <a id="3439" class="Symbol">:</a> <a id="3441" class="Symbol"></a> <a id="3443" class="Symbol">{</a><a id="3444" href="Data.Product.html#3444" class="Bound">A</a> <a id="3446" class="Symbol">:</a> <a id="3448" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3452" href="Data.Product.html#395" class="Generalizable">a</a><a id="3453" class="Symbol">}</a> <a id="3455" class="Symbol">{</a><a id="3456" href="Data.Product.html#3456" class="Bound">B</a> <a id="3458" class="Symbol">:</a> <a id="3460" href="Data.Product.html#3444" class="Bound">A</a> <a id="3462" class="Symbol"></a> <a id="3464" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3468" href="Data.Product.html#397" class="Generalizable">b</a><a id="3469" class="Symbol">}</a> <a id="3471" class="Symbol">{</a><a id="3472" href="Data.Product.html#3472" class="Bound">C</a> <a id="3474" class="Symbol">:</a> <a id="3476" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3478" href="Data.Product.html#3444" class="Bound">A</a> <a id="3480" href="Data.Product.html#3456" class="Bound">B</a> <a id="3482" class="Symbol"></a> <a id="3484" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3488" href="Data.Product.html#399" class="Generalizable">c</a><a id="3489" class="Symbol">}</a> <a id="3491" class="Symbol"></a>
<a id="3503" class="Symbol">((</a><a id="3505" href="Data.Product.html#3505" class="Bound">x</a> <a id="3507" class="Symbol">:</a> <a id="3509" href="Data.Product.html#3444" class="Bound">A</a><a id="3510" class="Symbol">)</a> <a id="3512" class="Symbol"></a> <a id="3514" class="Symbol">(</a><a id="3515" href="Data.Product.html#3515" class="Bound">y</a> <a id="3517" class="Symbol">:</a> <a id="3519" href="Data.Product.html#3456" class="Bound">B</a> <a id="3521" href="Data.Product.html#3505" class="Bound">x</a><a id="3522" class="Symbol">)</a> <a id="3524" class="Symbol"></a> <a id="3526" href="Data.Product.html#3472" class="Bound">C</a> <a id="3528" class="Symbol">(</a><a id="3529" href="Data.Product.html#3505" class="Bound">x</a> <a id="3531" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3533" href="Data.Product.html#3515" class="Bound">y</a><a id="3534" class="Symbol">))</a> <a id="3537" class="Symbol"></a>
<a id="3549" class="Symbol">((</a><a id="3551" href="Data.Product.html#3551" class="Bound">p</a> <a id="3553" class="Symbol">:</a> <a id="3555" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3557" href="Data.Product.html#3444" class="Bound">A</a> <a id="3559" href="Data.Product.html#3456" class="Bound">B</a><a id="3560" class="Symbol">)</a> <a id="3562" class="Symbol"></a> <a id="3564" href="Data.Product.html#3472" class="Bound">C</a> <a id="3566" href="Data.Product.html#3551" class="Bound">p</a><a id="3567" class="Symbol">)</a>
<a id="3569" href="Data.Product.html#3431" class="Function">uncurry</a> <a id="3577" href="Data.Product.html#3577" class="Bound">f</a> <a id="3579" class="Symbol">(</a><a id="3580" href="Data.Product.html#3580" class="Bound">x</a> <a id="3582" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3584" href="Data.Product.html#3584" class="Bound">y</a><a id="3585" class="Symbol">)</a> <a id="3587" class="Symbol">=</a> <a id="3589" href="Data.Product.html#3577" class="Bound">f</a> <a id="3591" href="Data.Product.html#3580" class="Bound">x</a> <a id="3593" href="Data.Product.html#3584" class="Bound">y</a>
<a id="3596" class="Comment">-- Rewriting dependent products</a>
<a id="assocʳ"></a><a id="3628" href="Data.Product.html#3628" class="Function">assocʳ</a> <a id="3635" class="Symbol">:</a> <a id="3637" class="Symbol">{</a><a id="3638" href="Data.Product.html#3638" class="Bound">B</a> <a id="3640" class="Symbol">:</a> <a id="3642" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3644" class="Symbol"></a> <a id="3646" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3650" href="Data.Product.html#397" class="Generalizable">b</a><a id="3651" class="Symbol">}</a> <a id="3653" class="Symbol">{</a><a id="3654" href="Data.Product.html#3654" class="Bound">C</a> <a id="3656" class="Symbol">:</a> <a id="3658" class="Symbol">(</a><a id="3659" href="Data.Product.html#3659" class="Bound">a</a> <a id="3661" class="Symbol">:</a> <a id="3663" href="Data.Product.html#427" class="Generalizable">A</a><a id="3664" class="Symbol">)</a> <a id="3666" class="Symbol"></a> <a id="3668" href="Data.Product.html#3638" class="Bound">B</a> <a id="3670" href="Data.Product.html#3659" class="Bound">a</a> <a id="3672" class="Symbol"></a> <a id="3674" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3678" href="Data.Product.html#399" class="Generalizable">c</a><a id="3679" class="Symbol">}</a> <a id="3681" class="Symbol"></a>
<a id="3693" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3695" class="Symbol">(</a><a id="3696" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3698" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3700" href="Data.Product.html#3638" class="Bound">B</a><a id="3701" class="Symbol">)</a> <a id="3703" class="Symbol">(</a><a id="3704" href="Data.Product.html#3431" class="Function">uncurry</a> <a id="3712" href="Data.Product.html#3654" class="Bound">C</a><a id="3713" class="Symbol">)</a> <a id="3715" class="Symbol"></a> <a id="3717" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3719" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3721" class="Symbol"></a> <a id="3724" href="Data.Product.html#3724" class="Bound">a</a> <a id="3726" class="Symbol"></a> <a id="3728" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3730" class="Symbol">(</a><a id="3731" href="Data.Product.html#3638" class="Bound">B</a> <a id="3733" href="Data.Product.html#3724" class="Bound">a</a><a id="3734" class="Symbol">)</a> <a id="3736" class="Symbol">(</a><a id="3737" href="Data.Product.html#3654" class="Bound">C</a> <a id="3739" href="Data.Product.html#3724" class="Bound">a</a><a id="3740" class="Symbol">))</a>
<a id="3743" href="Data.Product.html#3628" class="Function">assocʳ</a> <a id="3750" class="Symbol">((</a><a id="3752" href="Data.Product.html#3752" class="Bound">a</a> <a id="3754" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3756" href="Data.Product.html#3756" class="Bound">b</a><a id="3757" class="Symbol">)</a> <a id="3759" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3761" href="Data.Product.html#3761" class="Bound">c</a><a id="3762" class="Symbol">)</a> <a id="3764" class="Symbol">=</a> <a id="3766" class="Symbol">(</a><a id="3767" href="Data.Product.html#3752" class="Bound">a</a> <a id="3769" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3771" class="Symbol">(</a><a id="3772" href="Data.Product.html#3756" class="Bound">b</a> <a id="3774" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3776" href="Data.Product.html#3761" class="Bound">c</a><a id="3777" class="Symbol">))</a>
<a id="assocˡ"></a><a id="3781" href="Data.Product.html#3781" class="Function">assocˡ</a> <a id="3788" class="Symbol">:</a> <a id="3790" class="Symbol">{</a><a id="3791" href="Data.Product.html#3791" class="Bound">B</a> <a id="3793" class="Symbol">:</a> <a id="3795" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3797" class="Symbol"></a> <a id="3799" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3803" href="Data.Product.html#397" class="Generalizable">b</a><a id="3804" class="Symbol">}</a> <a id="3806" class="Symbol">{</a><a id="3807" href="Data.Product.html#3807" class="Bound">C</a> <a id="3809" class="Symbol">:</a> <a id="3811" class="Symbol">(</a><a id="3812" href="Data.Product.html#3812" class="Bound">a</a> <a id="3814" class="Symbol">:</a> <a id="3816" href="Data.Product.html#427" class="Generalizable">A</a><a id="3817" class="Symbol">)</a> <a id="3819" class="Symbol"></a> <a id="3821" href="Data.Product.html#3791" class="Bound">B</a> <a id="3823" href="Data.Product.html#3812" class="Bound">a</a> <a id="3825" class="Symbol"></a> <a id="3827" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="3831" href="Data.Product.html#399" class="Generalizable">c</a><a id="3832" class="Symbol">}</a> <a id="3834" class="Symbol"></a>
<a id="3846" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3848" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3850" class="Symbol"></a> <a id="3853" href="Data.Product.html#3853" class="Bound">a</a> <a id="3855" class="Symbol"></a> <a id="3857" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3859" class="Symbol">(</a><a id="3860" href="Data.Product.html#3791" class="Bound">B</a> <a id="3862" href="Data.Product.html#3853" class="Bound">a</a><a id="3863" class="Symbol">)</a> <a id="3865" class="Symbol">(</a><a id="3866" href="Data.Product.html#3807" class="Bound">C</a> <a id="3868" href="Data.Product.html#3853" class="Bound">a</a><a id="3869" class="Symbol">))</a> <a id="3872" class="Symbol"></a> <a id="3874" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3876" class="Symbol">(</a><a id="3877" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="3879" href="Data.Product.html#427" class="Generalizable">A</a> <a id="3881" href="Data.Product.html#3791" class="Bound">B</a><a id="3882" class="Symbol">)</a> <a id="3884" class="Symbol">(</a><a id="3885" href="Data.Product.html#3431" class="Function">uncurry</a> <a id="3893" href="Data.Product.html#3807" class="Bound">C</a><a id="3894" class="Symbol">)</a>
<a id="3896" href="Data.Product.html#3781" class="Function">assocˡ</a> <a id="3903" class="Symbol">(</a><a id="3904" href="Data.Product.html#3904" class="Bound">a</a> <a id="3906" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3908" class="Symbol">(</a><a id="3909" href="Data.Product.html#3909" class="Bound">b</a> <a id="3911" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3913" href="Data.Product.html#3913" class="Bound">c</a><a id="3914" class="Symbol">))</a> <a id="3917" class="Symbol">=</a> <a id="3919" class="Symbol">((</a><a id="3921" href="Data.Product.html#3904" class="Bound">a</a> <a id="3923" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3925" href="Data.Product.html#3909" class="Bound">b</a><a id="3926" class="Symbol">)</a> <a id="3928" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="3930" href="Data.Product.html#3913" class="Bound">c</a><a id="3931" class="Symbol">)</a>
<a id="3934" class="Comment">-- Alternate form of associativity for dependent products</a>
<a id="3992" class="Comment">-- where the C parameter is uncurried.</a>
<a id="assocʳ-curried"></a><a id="4031" href="Data.Product.html#4031" class="Function">assocʳ-curried</a> <a id="4046" class="Symbol">:</a> <a id="4048" class="Symbol">{</a><a id="4049" href="Data.Product.html#4049" class="Bound">B</a> <a id="4051" class="Symbol">:</a> <a id="4053" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4055" class="Symbol"></a> <a id="4057" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="4061" href="Data.Product.html#397" class="Generalizable">b</a><a id="4062" class="Symbol">}</a> <a id="4064" class="Symbol">{</a><a id="4065" href="Data.Product.html#4065" class="Bound">C</a> <a id="4067" class="Symbol">:</a> <a id="4069" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4071" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4073" href="Data.Product.html#4049" class="Bound">B</a> <a id="4075" class="Symbol"></a> <a id="4077" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="4081" href="Data.Product.html#399" class="Generalizable">c</a><a id="4082" class="Symbol">}</a> <a id="4084" class="Symbol"></a>
<a id="4103" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4105" class="Symbol">(</a><a id="4106" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4108" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4110" href="Data.Product.html#4049" class="Bound">B</a><a id="4111" class="Symbol">)</a> <a id="4113" href="Data.Product.html#4065" class="Bound">C</a> <a id="4115" class="Symbol"></a> <a id="4117" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4119" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4121" class="Symbol"></a> <a id="4124" href="Data.Product.html#4124" class="Bound">a</a> <a id="4126" class="Symbol"></a> <a id="4128" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4130" class="Symbol">(</a><a id="4131" href="Data.Product.html#4049" class="Bound">B</a> <a id="4133" href="Data.Product.html#4124" class="Bound">a</a><a id="4134" class="Symbol">)</a> <a id="4136" class="Symbol">(</a><a id="4137" href="Data.Product.html#3274" class="Function">curry</a> <a id="4143" href="Data.Product.html#4065" class="Bound">C</a> <a id="4145" href="Data.Product.html#4124" class="Bound">a</a><a id="4146" class="Symbol">))</a>
<a id="4149" href="Data.Product.html#4031" class="Function">assocʳ-curried</a> <a id="4164" class="Symbol">((</a><a id="4166" href="Data.Product.html#4166" class="Bound">a</a> <a id="4168" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4170" href="Data.Product.html#4170" class="Bound">b</a><a id="4171" class="Symbol">)</a> <a id="4173" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4175" href="Data.Product.html#4175" class="Bound">c</a><a id="4176" class="Symbol">)</a> <a id="4178" class="Symbol">=</a> <a id="4180" class="Symbol">(</a><a id="4181" href="Data.Product.html#4166" class="Bound">a</a> <a id="4183" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4185" class="Symbol">(</a><a id="4186" href="Data.Product.html#4170" class="Bound">b</a> <a id="4188" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4190" href="Data.Product.html#4175" class="Bound">c</a><a id="4191" class="Symbol">))</a>
<a id="assocˡ-curried"></a><a id="4195" href="Data.Product.html#4195" class="Function">assocˡ-curried</a> <a id="4210" class="Symbol">:</a> <a id="4212" class="Symbol">{</a><a id="4213" href="Data.Product.html#4213" class="Bound">B</a> <a id="4215" class="Symbol">:</a> <a id="4217" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4219" class="Symbol"></a> <a id="4221" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="4225" href="Data.Product.html#397" class="Generalizable">b</a><a id="4226" class="Symbol">}</a> <a id="4228" class="Symbol">{</a><a id="4229" href="Data.Product.html#4229" class="Bound">C</a> <a id="4231" class="Symbol">:</a> <a id="4233" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4235" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4237" href="Data.Product.html#4213" class="Bound">B</a> <a id="4239" class="Symbol"></a> <a id="4241" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="4245" href="Data.Product.html#399" class="Generalizable">c</a><a id="4246" class="Symbol">}</a> <a id="4248" class="Symbol"></a>
<a id="4260" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4262" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4264" class="Symbol"></a> <a id="4267" href="Data.Product.html#4267" class="Bound">a</a> <a id="4269" class="Symbol"></a> <a id="4271" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4273" class="Symbol">(</a><a id="4274" href="Data.Product.html#4213" class="Bound">B</a> <a id="4276" href="Data.Product.html#4267" class="Bound">a</a><a id="4277" class="Symbol">)</a> <a id="4279" class="Symbol">(</a><a id="4280" href="Data.Product.html#3274" class="Function">curry</a> <a id="4286" href="Data.Product.html#4229" class="Bound">C</a> <a id="4288" href="Data.Product.html#4267" class="Bound">a</a><a id="4289" class="Symbol">))</a> <a id="4292" class="Symbol"></a> <a id="4294" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4296" class="Symbol">(</a><a id="4297" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="4299" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4301" href="Data.Product.html#4213" class="Bound">B</a><a id="4302" class="Symbol">)</a> <a id="4304" href="Data.Product.html#4229" class="Bound">C</a>
<a id="4306" href="Data.Product.html#4195" class="Function">assocˡ-curried</a> <a id="4321" class="Symbol">(</a><a id="4322" href="Data.Product.html#4322" class="Bound">a</a> <a id="4324" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4326" class="Symbol">(</a><a id="4327" href="Data.Product.html#4327" class="Bound">b</a> <a id="4329" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4331" href="Data.Product.html#4331" class="Bound">c</a><a id="4332" class="Symbol">))</a> <a id="4335" class="Symbol">=</a> <a id="4337" class="Symbol">((</a><a id="4339" href="Data.Product.html#4322" class="Bound">a</a> <a id="4341" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4343" href="Data.Product.html#4327" class="Bound">b</a><a id="4344" class="Symbol">)</a> <a id="4346" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="4348" href="Data.Product.html#4331" class="Bound">c</a><a id="4349" class="Symbol">)</a>
<a id="4352" class="Comment">------------------------------------------------------------------------</a>
<a id="4425" class="Comment">-- Operations for non-dependent products</a>
<a id="4467" class="Comment">-- Any of the above operations for dependent products will also work for</a>
<a id="4540" class="Comment">-- non-dependent products but sometimes Agda has difficulty inferring</a>
<a id="4610" class="Comment">-- the non-dependency. Primed ( = \prime) versions of the operations</a>
<a id="4680" class="Comment">-- are therefore provided below that sometimes have better inference</a>
<a id="4749" class="Comment">-- properties.</a>
<a id="zip"></a><a id="4765" href="Data.Product.html#4765" class="Function">zip</a> <a id="4770" class="Symbol">:</a> <a id="4772" class="Symbol">(</a><a id="4773" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4775" class="Symbol"></a> <a id="4777" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4779" class="Symbol"></a> <a id="4781" href="Data.Product.html#455" class="Generalizable">C</a><a id="4782" class="Symbol">)</a> <a id="4784" class="Symbol"></a> <a id="4786" class="Symbol">(</a><a id="4787" href="Data.Product.html#469" class="Generalizable">D</a> <a id="4789" class="Symbol"></a> <a id="4791" href="Data.Product.html#483" class="Generalizable">E</a> <a id="4793" class="Symbol"></a> <a id="4795" href="Data.Product.html#497" class="Generalizable">F</a><a id="4796" class="Symbol">)</a> <a id="4798" class="Symbol"></a> <a id="4800" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4802" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="4804" href="Data.Product.html#469" class="Generalizable">D</a> <a id="4806" class="Symbol"></a> <a id="4808" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4810" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="4812" href="Data.Product.html#483" class="Generalizable">E</a> <a id="4814" class="Symbol"></a> <a id="4816" href="Data.Product.html#455" class="Generalizable">C</a> <a id="4818" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="4820" href="Data.Product.html#497" class="Generalizable">F</a>
<a id="4822" href="Data.Product.html#4765" class="Function">zip</a> <a id="4827" href="Data.Product.html#4827" class="Bound">f</a> <a id="4829" href="Data.Product.html#4829" class="Bound">g</a> <a id="4831" class="Symbol">=</a> <a id="4833" href="Data.Product.html#3069" class="Function">zip</a> <a id="4837" href="Data.Product.html#4827" class="Bound">f</a> <a id="4839" href="Data.Product.html#4829" class="Bound">g</a>
<a id="curry"></a><a id="4842" href="Data.Product.html#4842" class="Function">curry</a> <a id="4849" class="Symbol">:</a> <a id="4851" class="Symbol">(</a><a id="4852" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4854" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="4856" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4858" class="Symbol"></a> <a id="4860" href="Data.Product.html#455" class="Generalizable">C</a><a id="4861" class="Symbol">)</a> <a id="4863" class="Symbol"></a> <a id="4865" class="Symbol">(</a><a id="4866" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4868" class="Symbol"></a> <a id="4870" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4872" class="Symbol"></a> <a id="4874" href="Data.Product.html#455" class="Generalizable">C</a><a id="4875" class="Symbol">)</a>
<a id="4877" href="Data.Product.html#4842" class="Function">curry</a> <a id="4884" class="Symbol">=</a> <a id="4886" href="Data.Product.html#3274" class="Function">curry</a>
<a id="uncurry"></a><a id="4893" href="Data.Product.html#4893" class="Function">uncurry</a> <a id="4902" class="Symbol">:</a> <a id="4904" class="Symbol">(</a><a id="4905" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4907" class="Symbol"></a> <a id="4909" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4911" class="Symbol"></a> <a id="4913" href="Data.Product.html#455" class="Generalizable">C</a><a id="4914" class="Symbol">)</a> <a id="4916" class="Symbol"></a> <a id="4918" class="Symbol">(</a><a id="4919" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4921" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="4923" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4925" class="Symbol"></a> <a id="4927" href="Data.Product.html#455" class="Generalizable">C</a><a id="4928" class="Symbol">)</a>
<a id="4930" href="Data.Product.html#4893" class="Function">uncurry</a> <a id="4939" class="Symbol">=</a> <a id="4941" href="Data.Product.html#3431" class="Function">uncurry</a>
<a id="dmap"></a><a id="4950" href="Data.Product.html#4950" class="Function">dmap</a> <a id="4956" class="Symbol">:</a> <a id="4958" class="Symbol"></a> <a id="4960" class="Symbol">{</a><a id="4961" href="Data.Product.html#4961" class="Bound">x</a> <a id="4963" href="Data.Product.html#4963" class="Bound">y</a><a id="4964" class="Symbol">}</a> <a id="4966" class="Symbol">{</a><a id="4967" href="Data.Product.html#4967" class="Bound">X</a> <a id="4969" class="Symbol">:</a> <a id="4971" href="Data.Product.html#427" class="Generalizable">A</a> <a id="4973" class="Symbol"></a> <a id="4975" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="4979" href="Data.Product.html#4961" class="Bound">x</a><a id="4980" class="Symbol">}</a> <a id="4982" class="Symbol">{</a><a id="4983" href="Data.Product.html#4983" class="Bound">Y</a> <a id="4985" class="Symbol">:</a> <a id="4987" href="Data.Product.html#441" class="Generalizable">B</a> <a id="4989" class="Symbol"></a> <a id="4991" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="4995" href="Data.Product.html#4963" class="Bound">y</a><a id="4996" class="Symbol">}</a> <a id="4998" class="Symbol"></a>
<a id="5008" class="Symbol">((</a><a id="5010" href="Data.Product.html#5010" class="Bound">a</a> <a id="5012" class="Symbol">:</a> <a id="5014" href="Data.Product.html#427" class="Generalizable">A</a><a id="5015" class="Symbol">)</a> <a id="5017" class="Symbol"></a> <a id="5019" href="Data.Product.html#4967" class="Bound">X</a> <a id="5021" href="Data.Product.html#5010" class="Bound">a</a><a id="5022" class="Symbol">)</a> <a id="5024" class="Symbol"></a> <a id="5026" class="Symbol">((</a><a id="5028" href="Data.Product.html#5028" class="Bound">b</a> <a id="5030" class="Symbol">:</a> <a id="5032" href="Data.Product.html#441" class="Generalizable">B</a><a id="5033" class="Symbol">)</a> <a id="5035" class="Symbol"></a> <a id="5037" href="Data.Product.html#4983" class="Bound">Y</a> <a id="5039" href="Data.Product.html#5028" class="Bound">b</a><a id="5040" class="Symbol">)</a> <a id="5042" class="Symbol"></a>
<a id="5052" class="Symbol">(</a><a id="5053" href="Data.Product.html#5053" class="Bound">(</a><a id="5054" href="Data.Product.html#5054" class="Bound">a</a> <a id="5056" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5058" href="Data.Product.html#5058" class="Bound">b</a><a id="5059" href="Data.Product.html#5053" class="Bound">)</a> <a id="5061" class="Symbol">:</a> <a id="5063" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5065" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5067" href="Data.Product.html#441" class="Generalizable">B</a><a id="5068" class="Symbol">)</a> <a id="5070" class="Symbol"></a> <a id="5072" href="Data.Product.html#4967" class="Bound">X</a> <a id="5074" href="Data.Product.html#5054" class="Bound">a</a> <a id="5076" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5078" href="Data.Product.html#4983" class="Bound">Y</a> <a id="5080" href="Data.Product.html#5058" class="Bound">b</a>
<a id="5082" href="Data.Product.html#4950" class="Function">dmap</a> <a id="5088" href="Data.Product.html#5088" class="Bound">f</a> <a id="5090" href="Data.Product.html#5090" class="Bound">g</a> <a id="5092" class="Symbol">=</a> <a id="5094" href="Data.Product.html#2862" class="Function">dmap</a> <a id="5099" href="Data.Product.html#5088" class="Bound">f</a> <a id="5101" href="Data.Product.html#5090" class="Bound">g</a>
<a id="_&lt;*&gt;_"></a><a id="5104" href="Data.Product.html#5104" class="Function Operator">_&lt;*&gt;_</a> <a id="5110" class="Symbol">:</a> <a id="5112" class="Symbol"></a> <a id="5114" class="Symbol">{</a><a id="5115" href="Data.Product.html#5115" class="Bound">x</a> <a id="5117" href="Data.Product.html#5117" class="Bound">y</a><a id="5118" class="Symbol">}</a> <a id="5120" class="Symbol">{</a><a id="5121" href="Data.Product.html#5121" class="Bound">X</a> <a id="5123" class="Symbol">:</a> <a id="5125" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5127" class="Symbol"></a> <a id="5129" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="5133" href="Data.Product.html#5115" class="Bound">x</a><a id="5134" class="Symbol">}</a> <a id="5136" class="Symbol">{</a><a id="5137" href="Data.Product.html#5137" class="Bound">Y</a> <a id="5139" class="Symbol">:</a> <a id="5141" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5143" class="Symbol"></a> <a id="5145" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="5149" href="Data.Product.html#5117" class="Bound">y</a><a id="5150" class="Symbol">}</a> <a id="5152" class="Symbol"></a>
<a id="5162" class="Symbol">((</a><a id="5164" href="Data.Product.html#5164" class="Bound">a</a> <a id="5166" class="Symbol">:</a> <a id="5168" href="Data.Product.html#427" class="Generalizable">A</a><a id="5169" class="Symbol">)</a> <a id="5171" class="Symbol"></a> <a id="5173" href="Data.Product.html#5121" class="Bound">X</a> <a id="5175" href="Data.Product.html#5164" class="Bound">a</a><a id="5176" class="Symbol">)</a> <a id="5178" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5180" class="Symbol">((</a><a id="5182" href="Data.Product.html#5182" class="Bound">b</a> <a id="5184" class="Symbol">:</a> <a id="5186" href="Data.Product.html#441" class="Generalizable">B</a><a id="5187" class="Symbol">)</a> <a id="5189" class="Symbol"></a> <a id="5191" href="Data.Product.html#5137" class="Bound">Y</a> <a id="5193" href="Data.Product.html#5182" class="Bound">b</a><a id="5194" class="Symbol">)</a> <a id="5196" class="Symbol"></a>
<a id="5206" class="Symbol">(</a><a id="5207" href="Data.Product.html#5207" class="Bound">(</a><a id="5208" href="Data.Product.html#5208" class="Bound">a</a> <a id="5210" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5212" href="Data.Product.html#5212" class="Bound">b</a><a id="5213" href="Data.Product.html#5207" class="Bound">)</a> <a id="5215" class="Symbol">:</a> <a id="5217" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5219" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5221" href="Data.Product.html#441" class="Generalizable">B</a><a id="5222" class="Symbol">)</a> <a id="5224" class="Symbol"></a> <a id="5226" href="Data.Product.html#5121" class="Bound">X</a> <a id="5228" href="Data.Product.html#5208" class="Bound">a</a> <a id="5230" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5232" href="Data.Product.html#5137" class="Bound">Y</a> <a id="5234" href="Data.Product.html#5212" class="Bound">b</a>
<a id="5236" href="Data.Product.html#5104" class="Function Operator">_&lt;*&gt;_</a> <a id="5242" class="Symbol">=</a> <a id="5244" href="Data.Product.html#3431" class="Function">uncurry</a> <a id="5252" href="Data.Product.html#4950" class="Function">dmap</a>
<a id="5259" class="Comment">-- Operations that can only be defined for non-dependent products</a>
<a id="swap"></a><a id="5326" href="Data.Product.html#5326" class="Function">swap</a> <a id="5331" class="Symbol">:</a> <a id="5333" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5335" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5337" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5339" class="Symbol"></a> <a id="5341" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5343" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5345" href="Data.Product.html#427" class="Generalizable">A</a>
<a id="5347" href="Data.Product.html#5326" class="Function">swap</a> <a id="5352" class="Symbol">(</a><a id="5353" href="Data.Product.html#5353" class="Bound">x</a> <a id="5355" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5357" href="Data.Product.html#5357" class="Bound">y</a><a id="5358" class="Symbol">)</a> <a id="5360" class="Symbol">=</a> <a id="5362" class="Symbol">(</a><a id="5363" href="Data.Product.html#5357" class="Bound">y</a> <a id="5365" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5367" href="Data.Product.html#5353" class="Bound">x</a><a id="5368" class="Symbol">)</a>
<a id="_-×-_"></a><a id="5371" href="Data.Product.html#5371" class="Function Operator">_-×-_</a> <a id="5377" class="Symbol">:</a> <a id="5379" class="Symbol">(</a><a id="5380" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5382" class="Symbol"></a> <a id="5384" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5386" class="Symbol"></a> <a id="5388" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="5392" href="Data.Product.html#409" class="Generalizable">p</a><a id="5393" class="Symbol">)</a> <a id="5395" class="Symbol"></a> <a id="5397" class="Symbol">(</a><a id="5398" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5400" class="Symbol"></a> <a id="5402" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5404" class="Symbol"></a> <a id="5406" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="5410" href="Data.Product.html#411" class="Generalizable">q</a><a id="5411" class="Symbol">)</a> <a id="5413" class="Symbol"></a> <a id="5415" class="Symbol">(</a><a id="5416" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5418" class="Symbol"></a> <a id="5420" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5422" class="Symbol"></a> <a id="5424" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="5428" class="Symbol">_)</a>
<a id="5431" href="Data.Product.html#5431" class="Bound">f</a> <a id="5433" href="Data.Product.html#5371" class="Function Operator">-×-</a> <a id="5437" href="Data.Product.html#5437" class="Bound">g</a> <a id="5439" class="Symbol">=</a> <a id="5441" href="Data.Product.html#5431" class="Bound">f</a> <a id="5443" href="Function.Base.html#5124" class="Function Operator">-⟪</a> <a id="5446" href="Data.Product.html#1176" class="Function Operator">_×_</a> <a id="5450" href="Function.Base.html#5124" class="Function Operator">⟫-</a> <a id="5453" href="Data.Product.html#5437" class="Bound">g</a>
<a id="_-,-_"></a><a id="5456" href="Data.Product.html#5456" class="Function Operator">_-,-_</a> <a id="5462" class="Symbol">:</a> <a id="5464" class="Symbol">(</a><a id="5465" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5467" class="Symbol"></a> <a id="5469" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5471" class="Symbol"></a> <a id="5473" href="Data.Product.html#455" class="Generalizable">C</a><a id="5474" class="Symbol">)</a> <a id="5476" class="Symbol"></a> <a id="5478" class="Symbol">(</a><a id="5479" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5481" class="Symbol"></a> <a id="5483" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5485" class="Symbol"></a> <a id="5487" href="Data.Product.html#469" class="Generalizable">D</a><a id="5488" class="Symbol">)</a> <a id="5490" class="Symbol"></a> <a id="5492" class="Symbol">(</a><a id="5493" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5495" class="Symbol"></a> <a id="5497" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5499" class="Symbol"></a> <a id="5501" href="Data.Product.html#455" class="Generalizable">C</a> <a id="5503" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5505" href="Data.Product.html#469" class="Generalizable">D</a><a id="5506" class="Symbol">)</a>
<a id="5508" href="Data.Product.html#5508" class="Bound">f</a> <a id="5510" href="Data.Product.html#5456" class="Function Operator">-,-</a> <a id="5514" href="Data.Product.html#5514" class="Bound">g</a> <a id="5516" class="Symbol">=</a> <a id="5518" href="Data.Product.html#5508" class="Bound">f</a> <a id="5520" href="Function.Base.html#5124" class="Function Operator">-⟪</a> <a id="5523" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">_,_</a> <a id="5527" href="Function.Base.html#5124" class="Function Operator">⟫-</a> <a id="5530" href="Data.Product.html#5514" class="Bound">g</a>
<a id="5533" class="Comment">-- Rewriting non-dependent products</a>
<a id="assocʳ"></a><a id="5569" href="Data.Product.html#5569" class="Function">assocʳ</a> <a id="5577" class="Symbol">:</a> <a id="5579" class="Symbol">(</a><a id="5580" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5582" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5584" href="Data.Product.html#441" class="Generalizable">B</a><a id="5585" class="Symbol">)</a> <a id="5587" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5589" href="Data.Product.html#455" class="Generalizable">C</a> <a id="5591" class="Symbol"></a> <a id="5593" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5595" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5597" class="Symbol">(</a><a id="5598" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5600" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5602" href="Data.Product.html#455" class="Generalizable">C</a><a id="5603" class="Symbol">)</a>
<a id="5605" href="Data.Product.html#5569" class="Function">assocʳ</a> <a id="5613" class="Symbol">((</a><a id="5615" href="Data.Product.html#5615" class="Bound">a</a> <a id="5617" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5619" href="Data.Product.html#5619" class="Bound">b</a><a id="5620" class="Symbol">)</a> <a id="5622" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5624" href="Data.Product.html#5624" class="Bound">c</a><a id="5625" class="Symbol">)</a> <a id="5627" class="Symbol">=</a> <a id="5629" class="Symbol">(</a><a id="5630" href="Data.Product.html#5615" class="Bound">a</a> <a id="5632" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5634" class="Symbol">(</a><a id="5635" href="Data.Product.html#5619" class="Bound">b</a> <a id="5637" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5639" href="Data.Product.html#5624" class="Bound">c</a><a id="5640" class="Symbol">))</a>
<a id="assocˡ"></a><a id="5644" href="Data.Product.html#5644" class="Function">assocˡ</a> <a id="5652" class="Symbol">:</a> <a id="5654" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5656" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5658" class="Symbol">(</a><a id="5659" href="Data.Product.html#441" class="Generalizable">B</a> <a id="5661" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5663" href="Data.Product.html#455" class="Generalizable">C</a><a id="5664" class="Symbol">)</a> <a id="5666" class="Symbol"></a> <a id="5668" class="Symbol">(</a><a id="5669" href="Data.Product.html#427" class="Generalizable">A</a> <a id="5671" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5673" href="Data.Product.html#441" class="Generalizable">B</a><a id="5674" class="Symbol">)</a> <a id="5676" href="Data.Product.html#1176" class="Function Operator">×</a> <a id="5678" href="Data.Product.html#455" class="Generalizable">C</a>
<a id="5680" href="Data.Product.html#5644" class="Function">assocˡ</a> <a id="5688" class="Symbol">(</a><a id="5689" href="Data.Product.html#5689" class="Bound">a</a> <a id="5691" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5693" class="Symbol">(</a><a id="5694" href="Data.Product.html#5694" class="Bound">b</a> <a id="5696" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5698" href="Data.Product.html#5698" class="Bound">c</a><a id="5699" class="Symbol">))</a> <a id="5702" class="Symbol">=</a> <a id="5704" class="Symbol">((</a><a id="5706" href="Data.Product.html#5689" class="Bound">a</a> <a id="5708" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5710" href="Data.Product.html#5694" class="Bound">b</a><a id="5711" class="Symbol">)</a> <a id="5713" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="5715" href="Data.Product.html#5698" class="Bound">c</a><a id="5716" class="Symbol">)</a>
</pre></body></html>