bsc-leon-vatthauer/agda/bsc-thesis/Axiom.UniquenessOfIdentityProofs.html

79 lines
23 KiB
HTML
Raw Normal View History

2024-02-09 17:53:52 +01:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Axiom.UniquenessOfIdentityProofs</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">-- Results concerning uniqueness of identity proofs</a>
<a id="158" class="Comment">------------------------------------------------------------------------</a>
<a id="232" class="Symbol">{-#</a> <a id="236" class="Keyword">OPTIONS</a> <a id="244" class="Pragma">--cubical-compatible</a> <a id="265" class="Pragma">--safe</a> <a id="272" class="Symbol">#-}</a>
<a id="277" class="Keyword">module</a> <a id="284" href="Axiom.UniquenessOfIdentityProofs.html" class="Module">Axiom.UniquenessOfIdentityProofs</a> <a id="317" class="Keyword">where</a>
<a id="324" class="Keyword">open</a> <a id="329" class="Keyword">import</a> <a id="336" href="Data.Bool.Base.html" class="Module">Data.Bool.Base</a> <a id="351" class="Keyword">using</a> <a id="357" class="Symbol">(</a><a id="358" href="Agda.Builtin.Bool.html#198" class="InductiveConstructor">true</a><a id="362" class="Symbol">;</a> <a id="364" href="Agda.Builtin.Bool.html#192" class="InductiveConstructor">false</a><a id="369" class="Symbol">)</a>
<a id="371" class="Keyword">open</a> <a id="376" class="Keyword">import</a> <a id="383" href="Data.Empty.html" class="Module">Data.Empty</a>
<a id="394" class="Keyword">open</a> <a id="399" class="Keyword">import</a> <a id="406" href="Relation.Nullary.Reflects.html" class="Module">Relation.Nullary.Reflects</a> <a id="432" class="Keyword">using</a> <a id="438" class="Symbol">(</a><a id="439" href="Relation.Nullary.Reflects.html#1582" class="Function">invert</a><a id="445" class="Symbol">)</a>
<a id="447" class="Keyword">open</a> <a id="452" class="Keyword">import</a> <a id="459" href="Relation.Nullary.html" class="Module">Relation.Nullary</a> <a id="476" class="Keyword">hiding</a> <a id="483" class="Symbol">(</a><a id="484" href="Relation.Nullary.html#755" class="Function">Irrelevant</a><a id="494" class="Symbol">)</a>
<a id="496" class="Keyword">open</a> <a id="501" class="Keyword">import</a> <a id="508" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a>
<a id="529" class="Keyword">open</a> <a id="534" class="Keyword">import</a> <a id="541" href="Relation.Binary.Definitions.html" class="Module">Relation.Binary.Definitions</a>
<a id="569" class="Keyword">open</a> <a id="574" class="Keyword">import</a> <a id="581" href="Relation.Binary.PropositionalEquality.Core.html" class="Module">Relation.Binary.PropositionalEquality.Core</a>
<a id="624" class="Keyword">open</a> <a id="629" class="Keyword">import</a> <a id="636" href="Relation.Binary.PropositionalEquality.Properties.html" class="Module">Relation.Binary.PropositionalEquality.Properties</a>
<a id="686" class="Comment">------------------------------------------------------------------------</a>
<a id="759" class="Comment">-- Definition</a>
<a id="773" class="Comment">--</a>
<a id="776" class="Comment">-- Uniqueness of Identity Proofs (UIP) states that all proofs of</a>
<a id="841" class="Comment">-- equality are themselves equal. In other words, the equality relation</a>
<a id="913" class="Comment">-- is irrelevant. Here we define UIP relative to a given type.</a>
<a id="UIP"></a><a id="977" href="Axiom.UniquenessOfIdentityProofs.html#977" class="Function">UIP</a> <a id="981" class="Symbol">:</a> <a id="983" class="Symbol"></a> <a id="985" class="Symbol">{</a><a id="986" href="Axiom.UniquenessOfIdentityProofs.html#986" class="Bound">a</a><a id="987" class="Symbol">}</a> <a id="989" class="Symbol">(</a><a id="990" href="Axiom.UniquenessOfIdentityProofs.html#990" class="Bound">A</a> <a id="992" class="Symbol">:</a> <a id="994" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="998" href="Axiom.UniquenessOfIdentityProofs.html#986" class="Bound">a</a><a id="999" class="Symbol">)</a> <a id="1001" class="Symbol"></a> <a id="1003" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1007" href="Axiom.UniquenessOfIdentityProofs.html#986" class="Bound">a</a>
<a id="1009" href="Axiom.UniquenessOfIdentityProofs.html#977" class="Function">UIP</a> <a id="1013" href="Axiom.UniquenessOfIdentityProofs.html#1013" class="Bound">A</a> <a id="1015" class="Symbol">=</a> <a id="1017" href="Relation.Binary.Definitions.html#6651" class="Function">Irrelevant</a> <a id="1028" class="Symbol">{</a><a id="1029" class="Argument">A</a> <a id="1031" class="Symbol">=</a> <a id="1033" href="Axiom.UniquenessOfIdentityProofs.html#1013" class="Bound">A</a><a id="1034" class="Symbol">}</a> <a id="1036" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a>
<a id="1041" class="Comment">------------------------------------------------------------------------</a>
<a id="1114" class="Comment">-- Properties</a>
<a id="1129" class="Comment">-- UIP always holds when using axiom K</a>
<a id="1168" class="Comment">-- (see `Axiom.UniquenessOfIdentityProofs.WithK`).</a>
<a id="1220" class="Comment">-- The existence of a constant function over proofs of equality for</a>
<a id="1288" class="Comment">-- elements in A is enough to prove UIP for A. Indeed, we can relate any</a>
<a id="1361" class="Comment">-- proof to its image via this function which we then know is equal to</a>
<a id="1432" class="Comment">-- the image of any other proof.</a>
<a id="1466" class="Keyword">module</a> <a id="Constant⇒UIP"></a><a id="1473" href="Axiom.UniquenessOfIdentityProofs.html#1473" class="Module">Constant⇒UIP</a>
<a id="1488" class="Symbol">{</a><a id="1489" href="Axiom.UniquenessOfIdentityProofs.html#1489" class="Bound">a</a><a id="1490" class="Symbol">}</a> <a id="1492" class="Symbol">{</a><a id="1493" href="Axiom.UniquenessOfIdentityProofs.html#1493" class="Bound">A</a> <a id="1495" class="Symbol">:</a> <a id="1497" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1501" href="Axiom.UniquenessOfIdentityProofs.html#1489" class="Bound">a</a><a id="1502" class="Symbol">}</a> <a id="1504" class="Symbol">(</a><a id="1505" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1507" class="Symbol">:</a> <a id="1509" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="1513" class="Symbol">{</a><a id="1514" class="Argument">A</a> <a id="1516" class="Symbol">=</a> <a id="1518" href="Axiom.UniquenessOfIdentityProofs.html#1493" class="Bound">A</a><a id="1519" class="Symbol">}</a> <a id="1521" href="Relation.Binary.Core.html#1268" class="Function Operator"></a> <a id="1523" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a><a id="1526" class="Symbol">)</a>
<a id="1530" class="Symbol">(</a><a id="1531" href="Axiom.UniquenessOfIdentityProofs.html#1531" class="Bound">f-constant</a> <a id="1542" class="Symbol">:</a> <a id="1544" class="Symbol"></a> <a id="1546" class="Symbol">{</a><a id="1547" href="Axiom.UniquenessOfIdentityProofs.html#1547" class="Bound">a</a> <a id="1549" href="Axiom.UniquenessOfIdentityProofs.html#1549" class="Bound">b</a><a id="1550" class="Symbol">}</a> <a id="1552" class="Symbol">(</a><a id="1553" href="Axiom.UniquenessOfIdentityProofs.html#1553" class="Bound">p</a> <a id="1555" href="Axiom.UniquenessOfIdentityProofs.html#1555" class="Bound">q</a> <a id="1557" class="Symbol">:</a> <a id="1559" href="Axiom.UniquenessOfIdentityProofs.html#1547" class="Bound">a</a> <a id="1561" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1563" href="Axiom.UniquenessOfIdentityProofs.html#1549" class="Bound">b</a><a id="1564" class="Symbol">)</a> <a id="1566" class="Symbol"></a> <a id="1568" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1570" href="Axiom.UniquenessOfIdentityProofs.html#1553" class="Bound">p</a> <a id="1572" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1574" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1576" href="Axiom.UniquenessOfIdentityProofs.html#1555" class="Bound">q</a><a id="1577" class="Symbol">)</a>
<a id="1581" class="Keyword">where</a>
<a id="Constant⇒UIP.≡-canonical"></a><a id="1590" href="Axiom.UniquenessOfIdentityProofs.html#1590" class="Function">≡-canonical</a> <a id="1602" class="Symbol">:</a> <a id="1604" class="Symbol"></a> <a id="1606" class="Symbol">{</a><a id="1607" href="Axiom.UniquenessOfIdentityProofs.html#1607" class="Bound">a</a> <a id="1609" href="Axiom.UniquenessOfIdentityProofs.html#1609" class="Bound">b</a><a id="1610" class="Symbol">}</a> <a id="1612" class="Symbol">(</a><a id="1613" href="Axiom.UniquenessOfIdentityProofs.html#1613" class="Bound">p</a> <a id="1615" class="Symbol">:</a> <a id="1617" href="Axiom.UniquenessOfIdentityProofs.html#1607" class="Bound">a</a> <a id="1619" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1621" href="Axiom.UniquenessOfIdentityProofs.html#1609" class="Bound">b</a><a id="1622" class="Symbol">)</a> <a id="1624" class="Symbol"></a> <a id="1626" href="Relation.Binary.PropositionalEquality.Core.html#1757" class="Function">trans</a> <a id="1632" class="Symbol">(</a><a id="1633" href="Relation.Binary.PropositionalEquality.Core.html#1712" class="Function">sym</a> <a id="1637" class="Symbol">(</a><a id="1638" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1640" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="1644" class="Symbol">))</a> <a id="1647" class="Symbol">(</a><a id="1648" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1650" href="Axiom.UniquenessOfIdentityProofs.html#1613" class="Bound">p</a><a id="1651" class="Symbol">)</a> <a id="1653" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="1655" href="Axiom.UniquenessOfIdentityProofs.html#1613" class="Bound">p</a>
<a id="1659" href="Axiom.UniquenessOfIdentityProofs.html#1590" class="Function">≡-canonical</a> <a id="1671" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a> <a id="1676" class="Symbol">=</a> <a id="1678" href="Relation.Binary.PropositionalEquality.Properties.html#2564" class="Function">trans-symˡ</a> <a id="1689" class="Symbol">(</a><a id="1690" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1692" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="1696" class="Symbol">)</a>
<a id="Constant⇒UIP.≡-irrelevant"></a><a id="1701" href="Axiom.UniquenessOfIdentityProofs.html#1701" class="Function">≡-irrelevant</a> <a id="1714" class="Symbol">:</a> <a id="1716" href="Axiom.UniquenessOfIdentityProofs.html#977" class="Function">UIP</a> <a id="1720" href="Axiom.UniquenessOfIdentityProofs.html#1493" class="Bound">A</a>
<a id="1724" href="Axiom.UniquenessOfIdentityProofs.html#1701" class="Function">≡-irrelevant</a> <a id="1737" href="Axiom.UniquenessOfIdentityProofs.html#1737" class="Bound">p</a> <a id="1739" href="Axiom.UniquenessOfIdentityProofs.html#1739" class="Bound">q</a> <a id="1741" class="Symbol">=</a> <a id="1743" href="Relation.Binary.Reasoning.Syntax.html#1510" class="Function Operator">begin</a>
<a id="1753" href="Axiom.UniquenessOfIdentityProofs.html#1737" class="Bound">p</a> <a id="1780" href="Relation.Binary.Reasoning.Syntax.html#10986" class="Function">≡⟨</a> <a id="1783" href="Relation.Binary.PropositionalEquality.Core.html#1712" class="Function">sym</a> <a id="1787" class="Symbol">(</a><a id="1788" href="Axiom.UniquenessOfIdentityProofs.html#1590" class="Function">≡-canonical</a> <a id="1800" href="Axiom.UniquenessOfIdentityProofs.html#1737" class="Bound">p</a><a id="1801" class="Symbol">)</a> <a id="1803" href="Relation.Binary.Reasoning.Syntax.html#10986" class="Function"></a>
<a id="1809" href="Relation.Binary.PropositionalEquality.Core.html#1757" class="Function">trans</a> <a id="1815" class="Symbol">(</a><a id="1816" href="Relation.Binary.PropositionalEquality.Core.html#1712" class="Function">sym</a> <a id="1820" class="Symbol">(</a><a id="1821" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1823" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="1827" class="Symbol">))</a> <a id="1830" class="Symbol">(</a><a id="1831" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1833" href="Axiom.UniquenessOfIdentityProofs.html#1737" class="Bound">p</a><a id="1834" class="Symbol">)</a> <a id="1836" href="Relation.Binary.Reasoning.Syntax.html#10986" class="Function">≡⟨</a> <a id="1839" href="Relation.Binary.PropositionalEquality.Core.html#1158" class="Function">cong</a> <a id="1844" class="Symbol">(</a><a id="1845" href="Relation.Binary.PropositionalEquality.Core.html#1757" class="Function">trans</a> <a id="1851" class="Symbol">_)</a> <a id="1854" class="Symbol">(</a><a id="1855" href="Axiom.UniquenessOfIdentityProofs.html#1531" class="Bound">f-constant</a> <a id="1866" href="Axiom.UniquenessOfIdentityProofs.html#1737" class="Bound">p</a> <a id="1868" href="Axiom.UniquenessOfIdentityProofs.html#1739" class="Bound">q</a><a id="1869" class="Symbol">)</a> <a id="1871" href="Relation.Binary.Reasoning.Syntax.html#10986" class="Function"></a>
<a id="1877" href="Relation.Binary.PropositionalEquality.Core.html#1757" class="Function">trans</a> <a id="1883" class="Symbol">(</a><a id="1884" href="Relation.Binary.PropositionalEquality.Core.html#1712" class="Function">sym</a> <a id="1888" class="Symbol">(</a><a id="1889" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1891" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a><a id="1895" class="Symbol">))</a> <a id="1898" class="Symbol">(</a><a id="1899" href="Axiom.UniquenessOfIdentityProofs.html#1505" class="Bound">f</a> <a id="1901" href="Axiom.UniquenessOfIdentityProofs.html#1739" class="Bound">q</a><a id="1902" class="Symbol">)</a> <a id="1904" href="Relation.Binary.Reasoning.Syntax.html#10986" class="Function">≡⟨</a> <a id="1907" href="Axiom.UniquenessOfIdentityProofs.html#1590" class="Function">≡-canonical</a> <a id="1919" href="Axiom.UniquenessOfIdentityProofs.html#1739" class="Bound">q</a> <a id="1921" href="Relation.Binary.Reasoning.Syntax.html#10986" class="Function"></a>
<a id="1927" href="Axiom.UniquenessOfIdentityProofs.html#1739" class="Bound">q</a> <a id="1954" href="Relation.Binary.Reasoning.Syntax.html#12283" class="Function Operator"></a>
<a id="1960" class="Keyword">where</a> <a id="1966" class="Keyword">open</a> <a id="1971" href="Relation.Binary.PropositionalEquality.Properties.html#6744" class="Module">≡-Reasoning</a>
<a id="1984" class="Comment">-- If equality is decidable for a given type, then we can prove UIP for</a>
<a id="2056" class="Comment">-- that type. Indeed, the decision procedure allows us to define a</a>
<a id="2123" class="Comment">-- function over proofs of equality which is constant: it returns the</a>
<a id="2193" class="Comment">-- proof produced by the decision procedure.</a>
<a id="2239" class="Keyword">module</a> <a id="Decidable⇒UIP"></a><a id="2246" href="Axiom.UniquenessOfIdentityProofs.html#2246" class="Module">Decidable⇒UIP</a>
<a id="2262" class="Symbol">{</a><a id="2263" href="Axiom.UniquenessOfIdentityProofs.html#2263" class="Bound">a</a><a id="2264" class="Symbol">}</a> <a id="2266" class="Symbol">{</a><a id="2267" href="Axiom.UniquenessOfIdentityProofs.html#2267" class="Bound">A</a> <a id="2269" class="Symbol">:</a> <a id="2271" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2275" href="Axiom.UniquenessOfIdentityProofs.html#2263" class="Bound">a</a><a id="2276" class="Symbol">}</a> <a id="2278" class="Symbol">(</a><a id="2279" href="Axiom.UniquenessOfIdentityProofs.html#2279" class="Bound Operator">_≟_</a> <a id="2283" class="Symbol">:</a> <a id="2285" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="2295" class="Symbol">{</a><a id="2296" class="Argument">A</a> <a id="2298" class="Symbol">=</a> <a id="2300" href="Axiom.UniquenessOfIdentityProofs.html#2267" class="Bound">A</a><a id="2301" class="Symbol">}</a> <a id="2303" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a><a id="2306" class="Symbol">)</a>
<a id="2310" class="Keyword">where</a>
<a id="Decidable⇒UIP.≡-normalise"></a><a id="2319" href="Axiom.UniquenessOfIdentityProofs.html#2319" class="Function">≡-normalise</a> <a id="2331" class="Symbol">:</a> <a id="2333" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="2337" class="Symbol">{</a><a id="2338" class="Argument">A</a> <a id="2340" class="Symbol">=</a> <a id="2342" href="Axiom.UniquenessOfIdentityProofs.html#2267" class="Bound">A</a><a id="2343" class="Symbol">}</a> <a id="2345" href="Relation.Binary.Core.html#1268" class="Function Operator"></a> <a id="2347" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a>
<a id="2353" href="Axiom.UniquenessOfIdentityProofs.html#2319" class="Function">≡-normalise</a> <a id="2365" class="Symbol">{</a><a id="2366" href="Axiom.UniquenessOfIdentityProofs.html#2366" class="Bound">a</a><a id="2367" class="Symbol">}</a> <a id="2369" class="Symbol">{</a><a id="2370" href="Axiom.UniquenessOfIdentityProofs.html#2370" class="Bound">b</a><a id="2371" class="Symbol">}</a> <a id="2373" href="Axiom.UniquenessOfIdentityProofs.html#2373" class="Bound">a≡b</a> <a id="2377" class="Keyword">with</a> <a id="2382" href="Axiom.UniquenessOfIdentityProofs.html#2366" class="Bound">a</a> <a id="2384" href="Axiom.UniquenessOfIdentityProofs.html#2279" class="Bound Operator"></a> <a id="2386" href="Axiom.UniquenessOfIdentityProofs.html#2370" class="Bound">b</a>
<a id="2390" class="Symbol">...</a> <a id="2394" class="Symbol">|</a> <a id="2396" href="Agda.Builtin.Bool.html#198" class="InductiveConstructor">true</a> <a id="2402" href="Relation.Nullary.Decidable.Core.html#1529" class="InductiveConstructor Operator">because</a> <a id="2411" href="Axiom.UniquenessOfIdentityProofs.html#2411" class="Bound">[p]</a> <a id="2415" class="Symbol">=</a> <a id="2417" href="Relation.Nullary.Reflects.html#1582" class="Function">invert</a> <a id="2424" href="Axiom.UniquenessOfIdentityProofs.html#2411" class="Bound">[p]</a>
<a id="2430" class="Symbol">...</a> <a id="2434" class="Symbol">|</a> <a id="2436" href="Agda.Builtin.Bool.html#192" class="InductiveConstructor">false</a> <a id="2442" href="Relation.Nullary.Decidable.Core.html#1529" class="InductiveConstructor Operator">because</a> <a id="2450" href="Axiom.UniquenessOfIdentityProofs.html#2450" class="Bound">[¬p]</a> <a id="2455" class="Symbol">=</a> <a id="2457" href="Data.Empty.html#1050" class="Function">⊥-elim</a> <a id="2464" class="Symbol">(</a><a id="2465" href="Relation.Nullary.Reflects.html#1582" class="Function">invert</a> <a id="2472" href="Axiom.UniquenessOfIdentityProofs.html#2450" class="Bound">[¬p]</a> <a id="2477" class="Bound">a≡b</a><a id="2480" class="Symbol">)</a>
<a id="Decidable⇒UIP.≡-normalise-constant"></a><a id="2485" href="Axiom.UniquenessOfIdentityProofs.html#2485" class="Function">≡-normalise-constant</a> <a id="2506" class="Symbol">:</a> <a id="2508" class="Symbol"></a> <a id="2510" class="Symbol">{</a><a id="2511" href="Axiom.UniquenessOfIdentityProofs.html#2511" class="Bound">a</a> <a id="2513" href="Axiom.UniquenessOfIdentityProofs.html#2513" class="Bound">b</a><a id="2514" class="Symbol">}</a> <a id="2516" class="Symbol">(</a><a id="2517" href="Axiom.UniquenessOfIdentityProofs.html#2517" class="Bound">p</a> <a id="2519" href="Axiom.UniquenessOfIdentityProofs.html#2519" class="Bound">q</a> <a id="2521" class="Symbol">:</a> <a id="2523" href="Axiom.UniquenessOfIdentityProofs.html#2511" class="Bound">a</a> <a id="2525" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2527" href="Axiom.UniquenessOfIdentityProofs.html#2513" class="Bound">b</a><a id="2528" class="Symbol">)</a> <a id="2530" class="Symbol"></a> <a id="2532" href="Axiom.UniquenessOfIdentityProofs.html#2319" class="Function">≡-normalise</a> <a id="2544" href="Axiom.UniquenessOfIdentityProofs.html#2517" class="Bound">p</a> <a id="2546" href="Agda.Builtin.Equality.html#150" class="Datatype Operator"></a> <a id="2548" href="Axiom.UniquenessOfIdentityProofs.html#2319" class="Function">≡-normalise</a> <a id="2560" href="Axiom.UniquenessOfIdentityProofs.html#2519" class="Bound">q</a>
<a id="2564" href="Axiom.UniquenessOfIdentityProofs.html#2485" class="Function">≡-normalise-constant</a> <a id="2585" class="Symbol">{</a><a id="2586" href="Axiom.UniquenessOfIdentityProofs.html#2586" class="Bound">a</a><a id="2587" class="Symbol">}</a> <a id="2589" class="Symbol">{</a><a id="2590" href="Axiom.UniquenessOfIdentityProofs.html#2590" class="Bound">b</a><a id="2591" class="Symbol">}</a> <a id="2593" href="Axiom.UniquenessOfIdentityProofs.html#2593" class="Bound">p</a> <a id="2595" href="Axiom.UniquenessOfIdentityProofs.html#2595" class="Bound">q</a> <a id="2597" class="Keyword">with</a> <a id="2602" href="Axiom.UniquenessOfIdentityProofs.html#2586" class="Bound">a</a> <a id="2604" href="Axiom.UniquenessOfIdentityProofs.html#2279" class="Bound Operator"></a> <a id="2606" href="Axiom.UniquenessOfIdentityProofs.html#2590" class="Bound">b</a>
<a id="2610" class="Symbol">...</a> <a id="2614" class="Symbol">|</a> <a id="2616" href="Agda.Builtin.Bool.html#198" class="InductiveConstructor">true</a> <a id="2622" href="Relation.Nullary.Decidable.Core.html#1529" class="InductiveConstructor Operator">because</a> <a id="2632" class="Symbol">_</a> <a id="2635" class="Symbol">=</a> <a id="2637" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">refl</a>
<a id="2644" class="Symbol">...</a> <a id="2648" class="Symbol">|</a> <a id="2650" href="Agda.Builtin.Bool.html#192" class="InductiveConstructor">false</a> <a id="2656" href="Relation.Nullary.Decidable.Core.html#1529" class="InductiveConstructor Operator">because</a> <a id="2664" href="Axiom.UniquenessOfIdentityProofs.html#2664" class="Bound">[¬p]</a> <a id="2669" class="Symbol">=</a> <a id="2671" href="Data.Empty.html#1050" class="Function">⊥-elim</a> <a id="2678" class="Symbol">(</a><a id="2679" href="Relation.Nullary.Reflects.html#1582" class="Function">invert</a> <a id="2686" href="Axiom.UniquenessOfIdentityProofs.html#2664" class="Bound">[¬p]</a> <a id="2691" class="Bound">p</a><a id="2692" class="Symbol">)</a>
<a id="Decidable⇒UIP.≡-irrelevant"></a><a id="2697" href="Axiom.UniquenessOfIdentityProofs.html#2697" class="Function">≡-irrelevant</a> <a id="2710" class="Symbol">:</a> <a id="2712" href="Axiom.UniquenessOfIdentityProofs.html#977" class="Function">UIP</a> <a id="2716" href="Axiom.UniquenessOfIdentityProofs.html#2267" class="Bound">A</a>
<a id="2720" href="Axiom.UniquenessOfIdentityProofs.html#2697" class="Function">≡-irrelevant</a> <a id="2733" class="Symbol">=</a> <a id="2735" href="Axiom.UniquenessOfIdentityProofs.html#1701" class="Function">Constant⇒UIP.≡-irrelevant</a> <a id="2761" href="Axiom.UniquenessOfIdentityProofs.html#2319" class="Function">≡-normalise</a> <a id="2773" href="Axiom.UniquenessOfIdentityProofs.html#2485" class="Function">≡-normalise-constant</a>
</pre></body></html>