bsc-leon-vatthauer/agda/bsc-thesis/Relation.Binary.Reasoning.Base.Triple.html
2024-02-09 17:53:52 +01:00

130 lines
No EOL
54 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Relation.Binary.Reasoning.Base.Triple</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">-- The basic code for equational reasoning with three relations:</a>
<a id="171" class="Comment">-- equality, strict ordering and non-strict ordering.</a>
<a id="225" class="Comment">------------------------------------------------------------------------</a>
<a id="298" class="Comment">--</a>
<a id="301" class="Comment">-- See `Data.Nat.Properties` or `Relation.Binary.Reasoning.PartialOrder`</a>
<a id="374" class="Comment">-- for examples of how to instantiate this module.</a>
<a id="426" class="Symbol">{-#</a> <a id="430" class="Keyword">OPTIONS</a> <a id="438" class="Pragma">--cubical-compatible</a> <a id="459" class="Pragma">--safe</a> <a id="466" class="Symbol">#-}</a>
<a id="471" class="Keyword">open</a> <a id="476" class="Keyword">import</a> <a id="483" href="Data.Product.Base.html" class="Module">Data.Product.Base</a> <a id="501" class="Keyword">using</a> <a id="507" class="Symbol">(</a><a id="508" href="Data.Product.Base.html#636" class="Field">proj₁</a><a id="513" class="Symbol">;</a> <a id="515" href="Data.Product.Base.html#650" class="Field">proj₂</a><a id="520" class="Symbol">)</a>
<a id="522" class="Keyword">open</a> <a id="527" class="Keyword">import</a> <a id="534" href="Level.html" class="Module">Level</a> <a id="540" class="Keyword">using</a> <a id="546" class="Symbol">(</a><a id="547" href="Agda.Primitive.html#961" class="Primitive Operator">_⊔_</a><a id="550" class="Symbol">)</a>
<a id="552" class="Keyword">open</a> <a id="557" class="Keyword">import</a> <a id="564" href="Function.html" class="Module">Function</a> <a id="573" class="Keyword">using</a> <a id="579" class="Symbol">(</a><a id="580" href="Function.Base.html#4042" class="Function Operator">case_of_</a><a id="588" class="Symbol">)</a>
<a id="590" class="Keyword">open</a> <a id="595" class="Keyword">import</a> <a id="602" href="Relation.Nullary.Decidable.Core.html" class="Module">Relation.Nullary.Decidable.Core</a>
<a id="636" class="Keyword">using</a> <a id="642" class="Symbol">(</a><a id="643" href="Relation.Nullary.Decidable.Core.html#1485" class="Record">Dec</a><a id="646" class="Symbol">;</a> <a id="648" href="Relation.Nullary.Decidable.Core.html#1618" class="InductiveConstructor">yes</a><a id="651" class="Symbol">;</a> <a id="653" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a><a id="655" class="Symbol">)</a>
<a id="657" class="Keyword">open</a> <a id="662" class="Keyword">import</a> <a id="669" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a> <a id="690" class="Keyword">using</a> <a id="696" class="Symbol">(</a><a id="697" href="Relation.Binary.Core.html#896" class="Function">Rel</a><a id="700" class="Symbol">;</a> <a id="702" href="Relation.Binary.Core.html#1268" class="Function Operator">_⇒_</a><a id="705" class="Symbol">)</a>
<a id="707" class="Keyword">open</a> <a id="712" class="Keyword">import</a> <a id="719" href="Relation.Binary.Structures.html" class="Module">Relation.Binary.Structures</a> <a id="746" class="Keyword">using</a> <a id="752" class="Symbol">(</a><a id="753" href="Relation.Binary.Structures.html#2191" class="Record">IsPreorder</a><a id="763" class="Symbol">)</a>
<a id="765" class="Keyword">open</a> <a id="770" class="Keyword">import</a> <a id="777" href="Relation.Binary.Definitions.html" class="Module">Relation.Binary.Definitions</a>
<a id="807" class="Keyword">using</a> <a id="813" class="Symbol">(</a><a id="814" href="Relation.Binary.Definitions.html#2103" class="Function">Transitive</a><a id="824" class="Symbol">;</a> <a id="826" href="Relation.Binary.Definitions.html#5663" class="Function Operator">_Respects₂_</a><a id="837" class="Symbol">;</a> <a id="839" href="Relation.Binary.Definitions.html#1428" class="Function">Reflexive</a><a id="848" class="Symbol">;</a> <a id="850" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a><a id="855" class="Symbol">;</a> <a id="857" href="Relation.Binary.Definitions.html#2478" class="Function">Irreflexive</a><a id="868" class="Symbol">;</a> <a id="870" href="Relation.Binary.Definitions.html#2590" class="Function">Asymmetric</a><a id="880" class="Symbol">)</a>
<a id="882" class="Keyword">open</a> <a id="887" class="Keyword">import</a> <a id="894" href="Relation.Binary.PropositionalEquality.Core.html" class="Module">Relation.Binary.PropositionalEquality.Core</a> <a id="937" class="Symbol">as</a> <a id="940" class="Module">P</a> <a id="942" class="Keyword">using</a> <a id="948" class="Symbol">(</a><a id="949" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a><a id="952" class="Symbol">)</a>
<a id="954" class="Keyword">open</a> <a id="959" class="Keyword">import</a> <a id="966" href="Relation.Binary.Reasoning.Syntax.html" class="Module">Relation.Binary.Reasoning.Syntax</a>
<a id="1000" class="Keyword">module</a> <a id="1007" href="Relation.Binary.Reasoning.Base.Triple.html" class="Module">Relation.Binary.Reasoning.Base.Triple</a> <a id="1045" class="Symbol">{</a><a id="1046" href="Relation.Binary.Reasoning.Base.Triple.html#1046" class="Bound">a</a> <a id="1048" href="Relation.Binary.Reasoning.Base.Triple.html#1048" class="Bound">ℓ₁</a> <a id="1051" href="Relation.Binary.Reasoning.Base.Triple.html#1051" class="Bound">ℓ₂</a> <a id="1054" href="Relation.Binary.Reasoning.Base.Triple.html#1054" class="Bound">ℓ₃</a><a id="1056" class="Symbol">}</a> <a id="1058" class="Symbol">{</a><a id="1059" href="Relation.Binary.Reasoning.Base.Triple.html#1059" class="Bound">A</a> <a id="1061" class="Symbol">:</a> <a id="1063" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1067" href="Relation.Binary.Reasoning.Base.Triple.html#1046" class="Bound">a</a><a id="1068" class="Symbol">}</a>
<a id="1072" class="Symbol">{</a><a id="1073" href="Relation.Binary.Reasoning.Base.Triple.html#1073" class="Bound Operator">_≈_</a> <a id="1077" class="Symbol">:</a> <a id="1079" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="1083" href="Relation.Binary.Reasoning.Base.Triple.html#1059" class="Bound">A</a> <a id="1085" href="Relation.Binary.Reasoning.Base.Triple.html#1048" class="Bound">ℓ₁</a><a id="1087" class="Symbol">}</a> <a id="1089" class="Symbol">{</a><a id="1090" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a> <a id="1094" class="Symbol">:</a> <a id="1096" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="1100" href="Relation.Binary.Reasoning.Base.Triple.html#1059" class="Bound">A</a> <a id="1102" href="Relation.Binary.Reasoning.Base.Triple.html#1051" class="Bound">ℓ₂</a><a id="1104" class="Symbol">}</a> <a id="1106" class="Symbol">{</a><a id="1107" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a> <a id="1111" class="Symbol">:</a> <a id="1113" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="1117" href="Relation.Binary.Reasoning.Base.Triple.html#1059" class="Bound">A</a> <a id="1119" href="Relation.Binary.Reasoning.Base.Triple.html#1054" class="Bound">ℓ₃</a><a id="1121" class="Symbol">}</a>
<a id="1125" class="Symbol">(</a><a id="1126" href="Relation.Binary.Reasoning.Base.Triple.html#1126" class="Bound">isPreorder</a> <a id="1137" class="Symbol">:</a> <a id="1139" href="Relation.Binary.Structures.html#2191" class="Record">IsPreorder</a> <a id="1150" href="Relation.Binary.Reasoning.Base.Triple.html#1073" class="Bound Operator">_≈_</a> <a id="1154" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a><a id="1157" class="Symbol">)</a>
<a id="1161" class="Symbol">(</a><a id="1162" href="Relation.Binary.Reasoning.Base.Triple.html#1162" class="Bound">&lt;-asym</a> <a id="1169" class="Symbol">:</a> <a id="1171" href="Relation.Binary.Definitions.html#2590" class="Function">Asymmetric</a> <a id="1182" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a><a id="1185" class="Symbol">)</a> <a id="1187" class="Symbol">(</a><a id="1188" href="Relation.Binary.Reasoning.Base.Triple.html#1188" class="Bound">&lt;-trans</a> <a id="1196" class="Symbol">:</a> <a id="1198" href="Relation.Binary.Definitions.html#2103" class="Function">Transitive</a> <a id="1209" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a><a id="1212" class="Symbol">)</a> <a id="1214" class="Symbol">(</a><a id="1215" href="Relation.Binary.Reasoning.Base.Triple.html#1215" class="Bound">&lt;-resp-≈</a> <a id="1224" class="Symbol">:</a> <a id="1226" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a> <a id="1230" href="Relation.Binary.Definitions.html#5663" class="Function Operator">Respects₂</a> <a id="1240" href="Relation.Binary.Reasoning.Base.Triple.html#1073" class="Bound Operator">_≈_</a><a id="1243" class="Symbol">)</a>
<a id="1247" class="Symbol">(</a><a id="1248" href="Relation.Binary.Reasoning.Base.Triple.html#1248" class="Bound">&lt;⇒≤</a> <a id="1252" class="Symbol">:</a> <a id="1254" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a> <a id="1258" href="Relation.Binary.Core.html#1268" class="Function Operator"></a> <a id="1260" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a><a id="1263" class="Symbol">)</a>
<a id="1267" class="Symbol">(</a><a id="1268" href="Relation.Binary.Reasoning.Base.Triple.html#1268" class="Bound">&lt;-≤-trans</a> <a id="1278" class="Symbol">:</a> <a id="1280" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a> <a id="1286" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a> <a id="1290" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a> <a id="1294" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a><a id="1297" class="Symbol">)</a> <a id="1299" class="Symbol">(</a><a id="1300" href="Relation.Binary.Reasoning.Base.Triple.html#1300" class="Bound">≤-&lt;-trans</a> <a id="1310" class="Symbol">:</a> <a id="1312" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a> <a id="1318" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a> <a id="1322" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a> <a id="1326" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a><a id="1329" class="Symbol">)</a>
<a id="1333" class="Keyword">where</a>
<a id="1340" class="Keyword">open</a> <a id="1345" href="Relation.Binary.Structures.html#2191" class="Module">IsPreorder</a> <a id="1356" href="Relation.Binary.Reasoning.Base.Triple.html#1126" class="Bound">isPreorder</a>
<a id="1368" class="Comment">------------------------------------------------------------------------</a>
<a id="1441" class="Comment">-- A datatype to abstract over the current relation</a>
<a id="1494" class="Keyword">infix</a> <a id="1500" class="Number">4</a> <a id="1502" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a>
<a id="1517" class="Keyword">data</a> <a id="_IsRelatedTo_"></a><a id="1522" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="1536" class="Symbol">(</a><a id="1537" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1539" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a> <a id="1541" class="Symbol">:</a> <a id="1543" href="Relation.Binary.Reasoning.Base.Triple.html#1059" class="Bound">A</a><a id="1544" class="Symbol">)</a> <a id="1546" class="Symbol">:</a> <a id="1548" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1552" class="Symbol">(</a><a id="1553" href="Relation.Binary.Reasoning.Base.Triple.html#1046" class="Bound">a</a> <a id="1555" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1557" href="Relation.Binary.Reasoning.Base.Triple.html#1048" class="Bound">ℓ₁</a> <a id="1560" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1562" href="Relation.Binary.Reasoning.Base.Triple.html#1051" class="Bound">ℓ₂</a> <a id="1565" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1567" href="Relation.Binary.Reasoning.Base.Triple.html#1054" class="Bound">ℓ₃</a><a id="1569" class="Symbol">)</a> <a id="1571" class="Keyword">where</a>
<a id="_IsRelatedTo_.strict"></a><a id="1579" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="1589" class="Symbol">:</a> <a id="1591" class="Symbol">(</a><a id="1592" href="Relation.Binary.Reasoning.Base.Triple.html#1592" class="Bound">x&lt;y</a> <a id="1596" class="Symbol">:</a> <a id="1598" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1600" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">&lt;</a> <a id="1602" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a><a id="1603" class="Symbol">)</a> <a id="1605" class="Symbol"></a> <a id="1607" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1609" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="1621" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a>
<a id="_IsRelatedTo_.nonstrict"></a><a id="1625" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="1635" class="Symbol">:</a> <a id="1637" class="Symbol">(</a><a id="1638" href="Relation.Binary.Reasoning.Base.Triple.html#1638" class="Bound">x≤y</a> <a id="1642" class="Symbol">:</a> <a id="1644" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1646" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator"></a> <a id="1648" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a><a id="1649" class="Symbol">)</a> <a id="1651" class="Symbol"></a> <a id="1653" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1655" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="1667" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a>
<a id="_IsRelatedTo_.equals"></a><a id="1671" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="1681" class="Symbol">:</a> <a id="1683" class="Symbol">(</a><a id="1684" href="Relation.Binary.Reasoning.Base.Triple.html#1684" class="Bound">x≈y</a> <a id="1688" class="Symbol">:</a> <a id="1690" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1692" href="Relation.Binary.Reasoning.Base.Triple.html#1073" class="Bound Operator"></a> <a id="1694" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a><a id="1695" class="Symbol">)</a> <a id="1697" class="Symbol"></a> <a id="1699" href="Relation.Binary.Reasoning.Base.Triple.html#1537" class="Bound">x</a> <a id="1701" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="1713" href="Relation.Binary.Reasoning.Base.Triple.html#1539" class="Bound">y</a>
<a id="start"></a><a id="1716" href="Relation.Binary.Reasoning.Base.Triple.html#1716" class="Function">start</a> <a id="1722" class="Symbol">:</a> <a id="1724" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="1738" href="Relation.Binary.Core.html#1268" class="Function Operator"></a> <a id="1740" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a>
<a id="1744" href="Relation.Binary.Reasoning.Base.Triple.html#1716" class="Function">start</a> <a id="1750" class="Symbol">(</a><a id="1751" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="1758" href="Relation.Binary.Reasoning.Base.Triple.html#1758" class="Bound">x≈y</a><a id="1761" class="Symbol">)</a> <a id="1763" class="Symbol">=</a> <a id="1765" href="Relation.Binary.Structures.html#2359" class="Function">reflexive</a> <a id="1775" href="Relation.Binary.Reasoning.Base.Triple.html#1758" class="Bound">x≈y</a>
<a id="1779" href="Relation.Binary.Reasoning.Base.Triple.html#1716" class="Function">start</a> <a id="1785" class="Symbol">(</a><a id="1786" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="1796" href="Relation.Binary.Reasoning.Base.Triple.html#1796" class="Bound">x≤y</a><a id="1799" class="Symbol">)</a> <a id="1801" class="Symbol">=</a> <a id="1803" href="Relation.Binary.Reasoning.Base.Triple.html#1796" class="Bound">x≤y</a>
<a id="1807" href="Relation.Binary.Reasoning.Base.Triple.html#1716" class="Function">start</a> <a id="1813" class="Symbol">(</a><a id="1814" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="1821" href="Relation.Binary.Reasoning.Base.Triple.html#1821" class="Bound">x&lt;y</a><a id="1824" class="Symbol">)</a> <a id="1826" class="Symbol">=</a> <a id="1828" href="Relation.Binary.Reasoning.Base.Triple.html#1248" class="Bound">&lt;⇒≤</a> <a id="1832" href="Relation.Binary.Reasoning.Base.Triple.html#1821" class="Bound">x&lt;y</a>
<a id="≡-go"></a><a id="1837" href="Relation.Binary.Reasoning.Base.Triple.html#1837" class="Function">≡-go</a> <a id="1842" class="Symbol">:</a> <a id="1844" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a> <a id="1850" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="1854" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="1868" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a>
<a id="1882" href="Relation.Binary.Reasoning.Base.Triple.html#1837" class="Function">≡-go</a> <a id="1887" href="Relation.Binary.Reasoning.Base.Triple.html#1887" class="Bound">x≡y</a> <a id="1891" class="Symbol">(</a><a id="1892" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="1899" href="Relation.Binary.Reasoning.Base.Triple.html#1899" class="Bound">y≈z</a><a id="1902" class="Symbol">)</a> <a id="1904" class="Symbol">=</a> <a id="1906" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="1913" class="Symbol">(</a><a id="1914" href="Function.Base.html#4042" class="Function Operator">case</a> <a id="1919" href="Relation.Binary.Reasoning.Base.Triple.html#1887" class="Bound">x≡y</a> <a id="1923" href="Function.Base.html#4042" class="Function Operator">of</a> <a id="1926" class="Symbol">λ</a> <a id="1928" class="Keyword">where</a> <a id="1934" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">P.refl</a> <a id="1941" class="Symbol"></a> <a id="1943" href="Relation.Binary.Reasoning.Base.Triple.html#1899" class="Bound">y≈z</a><a id="1946" class="Symbol">)</a>
<a id="1948" href="Relation.Binary.Reasoning.Base.Triple.html#1837" class="Function">≡-go</a> <a id="1953" href="Relation.Binary.Reasoning.Base.Triple.html#1953" class="Bound">x≡y</a> <a id="1957" class="Symbol">(</a><a id="1958" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="1968" href="Relation.Binary.Reasoning.Base.Triple.html#1968" class="Bound">y≤z</a><a id="1971" class="Symbol">)</a> <a id="1973" class="Symbol">=</a> <a id="1975" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="1985" class="Symbol">(</a><a id="1986" href="Function.Base.html#4042" class="Function Operator">case</a> <a id="1991" href="Relation.Binary.Reasoning.Base.Triple.html#1953" class="Bound">x≡y</a> <a id="1995" href="Function.Base.html#4042" class="Function Operator">of</a> <a id="1998" class="Symbol">λ</a> <a id="2000" class="Keyword">where</a> <a id="2006" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">P.refl</a> <a id="2013" class="Symbol"></a> <a id="2015" href="Relation.Binary.Reasoning.Base.Triple.html#1968" class="Bound">y≤z</a><a id="2018" class="Symbol">)</a>
<a id="2020" href="Relation.Binary.Reasoning.Base.Triple.html#1837" class="Function">≡-go</a> <a id="2025" href="Relation.Binary.Reasoning.Base.Triple.html#2025" class="Bound">x≡y</a> <a id="2029" class="Symbol">(</a><a id="2030" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2037" href="Relation.Binary.Reasoning.Base.Triple.html#2037" class="Bound">y&lt;z</a><a id="2040" class="Symbol">)</a> <a id="2042" class="Symbol">=</a> <a id="2044" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2051" class="Symbol">(</a><a id="2052" href="Function.Base.html#4042" class="Function Operator">case</a> <a id="2057" href="Relation.Binary.Reasoning.Base.Triple.html#2025" class="Bound">x≡y</a> <a id="2061" href="Function.Base.html#4042" class="Function Operator">of</a> <a id="2064" class="Symbol">λ</a> <a id="2066" class="Keyword">where</a> <a id="2072" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">P.refl</a> <a id="2079" class="Symbol"></a> <a id="2081" href="Relation.Binary.Reasoning.Base.Triple.html#2037" class="Bound">y&lt;z</a><a id="2084" class="Symbol">)</a>
<a id="≈-go"></a><a id="2087" href="Relation.Binary.Reasoning.Base.Triple.html#2087" class="Function">≈-go</a> <a id="2092" class="Symbol">:</a> <a id="2094" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a> <a id="2100" href="Relation.Binary.Reasoning.Base.Triple.html#1073" class="Bound Operator">_≈_</a> <a id="2104" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="2118" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a>
<a id="2132" href="Relation.Binary.Reasoning.Base.Triple.html#2087" class="Function">≈-go</a> <a id="2137" href="Relation.Binary.Reasoning.Base.Triple.html#2137" class="Bound">x≈y</a> <a id="2141" class="Symbol">(</a><a id="2142" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="2149" href="Relation.Binary.Reasoning.Base.Triple.html#2149" class="Bound">y≈z</a><a id="2152" class="Symbol">)</a> <a id="2154" class="Symbol">=</a> <a id="2156" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="2163" class="Symbol">(</a><a id="2164" href="Relation.Binary.Structures.html#1648" class="Function">Eq.trans</a> <a id="2173" href="Relation.Binary.Reasoning.Base.Triple.html#2137" class="Bound">x≈y</a> <a id="2177" href="Relation.Binary.Reasoning.Base.Triple.html#2149" class="Bound">y≈z</a><a id="2180" class="Symbol">)</a>
<a id="2182" href="Relation.Binary.Reasoning.Base.Triple.html#2087" class="Function">≈-go</a> <a id="2187" href="Relation.Binary.Reasoning.Base.Triple.html#2187" class="Bound">x≈y</a> <a id="2191" class="Symbol">(</a><a id="2192" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="2202" href="Relation.Binary.Reasoning.Base.Triple.html#2202" class="Bound">y≤z</a><a id="2205" class="Symbol">)</a> <a id="2207" class="Symbol">=</a> <a id="2209" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="2219" class="Symbol">(</a><a id="2220" href="Relation.Binary.Structures.html#2755" class="Function">-respˡ-≈</a> <a id="2230" class="Symbol">(</a><a id="2231" href="Relation.Binary.Structures.html#1622" class="Function">Eq.sym</a> <a id="2238" href="Relation.Binary.Reasoning.Base.Triple.html#2187" class="Bound">x≈y</a><a id="2241" class="Symbol">)</a> <a id="2243" href="Relation.Binary.Reasoning.Base.Triple.html#2202" class="Bound">y≤z</a><a id="2246" class="Symbol">)</a>
<a id="2248" href="Relation.Binary.Reasoning.Base.Triple.html#2087" class="Function">≈-go</a> <a id="2253" href="Relation.Binary.Reasoning.Base.Triple.html#2253" class="Bound">x≈y</a> <a id="2257" class="Symbol">(</a><a id="2258" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2265" href="Relation.Binary.Reasoning.Base.Triple.html#2265" class="Bound">y&lt;z</a><a id="2268" class="Symbol">)</a> <a id="2270" class="Symbol">=</a> <a id="2272" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2279" class="Symbol">(</a><a id="2280" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="2286" href="Relation.Binary.Reasoning.Base.Triple.html#1215" class="Bound">&lt;-resp-≈</a> <a id="2295" class="Symbol">(</a><a id="2296" href="Relation.Binary.Structures.html#1622" class="Function">Eq.sym</a> <a id="2303" href="Relation.Binary.Reasoning.Base.Triple.html#2253" class="Bound">x≈y</a><a id="2306" class="Symbol">)</a> <a id="2308" href="Relation.Binary.Reasoning.Base.Triple.html#2265" class="Bound">y&lt;z</a><a id="2311" class="Symbol">)</a>
<a id="≤-go"></a><a id="2314" href="Relation.Binary.Reasoning.Base.Triple.html#2314" class="Function">≤-go</a> <a id="2319" class="Symbol">:</a> <a id="2321" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a> <a id="2327" href="Relation.Binary.Reasoning.Base.Triple.html#1090" class="Bound Operator">_≤_</a> <a id="2331" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="2345" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a>
<a id="2359" href="Relation.Binary.Reasoning.Base.Triple.html#2314" class="Function">≤-go</a> <a id="2364" href="Relation.Binary.Reasoning.Base.Triple.html#2364" class="Bound">x≤y</a> <a id="2368" class="Symbol">(</a><a id="2369" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="2376" href="Relation.Binary.Reasoning.Base.Triple.html#2376" class="Bound">y≈z</a><a id="2379" class="Symbol">)</a> <a id="2381" class="Symbol">=</a> <a id="2383" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="2393" class="Symbol">(</a><a id="2394" href="Relation.Binary.Structures.html#2898" class="Function">-respʳ-≈</a> <a id="2404" href="Relation.Binary.Reasoning.Base.Triple.html#2376" class="Bound">y≈z</a> <a id="2408" href="Relation.Binary.Reasoning.Base.Triple.html#2364" class="Bound">x≤y</a><a id="2411" class="Symbol">)</a>
<a id="2413" href="Relation.Binary.Reasoning.Base.Triple.html#2314" class="Function">≤-go</a> <a id="2418" href="Relation.Binary.Reasoning.Base.Triple.html#2418" class="Bound">x≤y</a> <a id="2422" class="Symbol">(</a><a id="2423" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="2433" href="Relation.Binary.Reasoning.Base.Triple.html#2433" class="Bound">y≤z</a><a id="2436" class="Symbol">)</a> <a id="2438" class="Symbol">=</a> <a id="2440" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="2450" class="Symbol">(</a><a id="2451" href="Relation.Binary.Structures.html#2389" class="Function">trans</a> <a id="2457" href="Relation.Binary.Reasoning.Base.Triple.html#2418" class="Bound">x≤y</a> <a id="2461" href="Relation.Binary.Reasoning.Base.Triple.html#2433" class="Bound">y≤z</a><a id="2464" class="Symbol">)</a>
<a id="2466" href="Relation.Binary.Reasoning.Base.Triple.html#2314" class="Function">≤-go</a> <a id="2471" href="Relation.Binary.Reasoning.Base.Triple.html#2471" class="Bound">x≤y</a> <a id="2475" class="Symbol">(</a><a id="2476" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2483" href="Relation.Binary.Reasoning.Base.Triple.html#2483" class="Bound">y&lt;z</a><a id="2486" class="Symbol">)</a> <a id="2488" class="Symbol">=</a> <a id="2490" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2497" class="Symbol">(</a><a id="2498" href="Relation.Binary.Reasoning.Base.Triple.html#1300" class="Bound">≤-&lt;-trans</a> <a id="2508" href="Relation.Binary.Reasoning.Base.Triple.html#2471" class="Bound">x≤y</a> <a id="2512" href="Relation.Binary.Reasoning.Base.Triple.html#2483" class="Bound">y&lt;z</a><a id="2515" class="Symbol">)</a>
<a id="&lt;-go"></a><a id="2518" href="Relation.Binary.Reasoning.Base.Triple.html#2518" class="Function">&lt;-go</a> <a id="2523" class="Symbol">:</a> <a id="2525" href="Relation.Binary.Definitions.html#1674" class="Function">Trans</a> <a id="2531" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">_&lt;_</a> <a id="2535" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="2549" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a>
<a id="2563" href="Relation.Binary.Reasoning.Base.Triple.html#2518" class="Function">&lt;-go</a> <a id="2568" href="Relation.Binary.Reasoning.Base.Triple.html#2568" class="Bound">x&lt;y</a> <a id="2572" class="Symbol">(</a><a id="2573" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="2580" href="Relation.Binary.Reasoning.Base.Triple.html#2580" class="Bound">y≈z</a><a id="2583" class="Symbol">)</a> <a id="2585" class="Symbol">=</a> <a id="2587" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2594" class="Symbol">(</a><a id="2595" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="2601" href="Relation.Binary.Reasoning.Base.Triple.html#1215" class="Bound">&lt;-resp-≈</a> <a id="2610" href="Relation.Binary.Reasoning.Base.Triple.html#2580" class="Bound">y≈z</a> <a id="2614" href="Relation.Binary.Reasoning.Base.Triple.html#2568" class="Bound">x&lt;y</a><a id="2617" class="Symbol">)</a>
<a id="2619" href="Relation.Binary.Reasoning.Base.Triple.html#2518" class="Function">&lt;-go</a> <a id="2624" href="Relation.Binary.Reasoning.Base.Triple.html#2624" class="Bound">x&lt;y</a> <a id="2628" class="Symbol">(</a><a id="2629" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="2639" href="Relation.Binary.Reasoning.Base.Triple.html#2639" class="Bound">y≤z</a><a id="2642" class="Symbol">)</a> <a id="2644" class="Symbol">=</a> <a id="2646" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2653" class="Symbol">(</a><a id="2654" href="Relation.Binary.Reasoning.Base.Triple.html#1268" class="Bound">&lt;-≤-trans</a> <a id="2664" href="Relation.Binary.Reasoning.Base.Triple.html#2624" class="Bound">x&lt;y</a> <a id="2668" href="Relation.Binary.Reasoning.Base.Triple.html#2639" class="Bound">y≤z</a><a id="2671" class="Symbol">)</a>
<a id="2673" href="Relation.Binary.Reasoning.Base.Triple.html#2518" class="Function">&lt;-go</a> <a id="2678" href="Relation.Binary.Reasoning.Base.Triple.html#2678" class="Bound">x&lt;y</a> <a id="2682" class="Symbol">(</a><a id="2683" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2690" href="Relation.Binary.Reasoning.Base.Triple.html#2690" class="Bound">y&lt;z</a><a id="2693" class="Symbol">)</a> <a id="2695" class="Symbol">=</a> <a id="2697" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="2704" class="Symbol">(</a><a id="2705" href="Relation.Binary.Reasoning.Base.Triple.html#1188" class="Bound">&lt;-trans</a> <a id="2713" href="Relation.Binary.Reasoning.Base.Triple.html#2678" class="Bound">x&lt;y</a> <a id="2717" href="Relation.Binary.Reasoning.Base.Triple.html#2690" class="Bound">y&lt;z</a><a id="2720" class="Symbol">)</a>
<a id="stop"></a><a id="2723" href="Relation.Binary.Reasoning.Base.Triple.html#2723" class="Function">stop</a> <a id="2728" class="Symbol">:</a> <a id="2730" href="Relation.Binary.Definitions.html#1428" class="Function">Reflexive</a> <a id="2740" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a>
<a id="2754" href="Relation.Binary.Reasoning.Base.Triple.html#2723" class="Function">stop</a> <a id="2759" class="Symbol">=</a> <a id="2761" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="2768" href="Relation.Binary.Structures.html#1596" class="Function">Eq.refl</a>
<a id="2778" class="Comment">------------------------------------------------------------------------</a>
<a id="2851" class="Comment">-- Types that are used to ensure that the final relation proved by the</a>
<a id="2922" class="Comment">-- chain of reasoning can be converted into the required relation.</a>
<a id="2990" class="Keyword">data</a> <a id="IsStrict"></a><a id="2995" href="Relation.Binary.Reasoning.Base.Triple.html#2995" class="Datatype">IsStrict</a> <a id="3004" class="Symbol">{</a><a id="3005" href="Relation.Binary.Reasoning.Base.Triple.html#3005" class="Bound">x</a> <a id="3007" href="Relation.Binary.Reasoning.Base.Triple.html#3007" class="Bound">y</a><a id="3008" class="Symbol">}</a> <a id="3010" class="Symbol">:</a> <a id="3012" href="Relation.Binary.Reasoning.Base.Triple.html#3005" class="Bound">x</a> <a id="3014" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="3026" href="Relation.Binary.Reasoning.Base.Triple.html#3007" class="Bound">y</a> <a id="3028" class="Symbol"></a> <a id="3030" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3034" class="Symbol">(</a><a id="3035" href="Relation.Binary.Reasoning.Base.Triple.html#1046" class="Bound">a</a> <a id="3037" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3039" href="Relation.Binary.Reasoning.Base.Triple.html#1048" class="Bound">ℓ₁</a> <a id="3042" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3044" href="Relation.Binary.Reasoning.Base.Triple.html#1051" class="Bound">ℓ₂</a> <a id="3047" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3049" href="Relation.Binary.Reasoning.Base.Triple.html#1054" class="Bound">ℓ₃</a><a id="3051" class="Symbol">)</a> <a id="3053" class="Keyword">where</a>
<a id="IsStrict.isStrict"></a><a id="3061" href="Relation.Binary.Reasoning.Base.Triple.html#3061" class="InductiveConstructor">isStrict</a> <a id="3070" class="Symbol">:</a> <a id="3072" class="Symbol"></a> <a id="3074" href="Relation.Binary.Reasoning.Base.Triple.html#3074" class="Bound">x&lt;y</a> <a id="3078" class="Symbol"></a> <a id="3080" href="Relation.Binary.Reasoning.Base.Triple.html#2995" class="Datatype">IsStrict</a> <a id="3089" class="Symbol">(</a><a id="3090" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="3097" href="Relation.Binary.Reasoning.Base.Triple.html#3074" class="Bound">x&lt;y</a><a id="3100" class="Symbol">)</a>
<a id="IsStrict?"></a><a id="3103" href="Relation.Binary.Reasoning.Base.Triple.html#3103" class="Function">IsStrict?</a> <a id="3113" class="Symbol">:</a> <a id="3115" class="Symbol"></a> <a id="3117" class="Symbol">{</a><a id="3118" href="Relation.Binary.Reasoning.Base.Triple.html#3118" class="Bound">x</a> <a id="3120" href="Relation.Binary.Reasoning.Base.Triple.html#3120" class="Bound">y</a><a id="3121" class="Symbol">}</a> <a id="3123" class="Symbol">(</a><a id="3124" href="Relation.Binary.Reasoning.Base.Triple.html#3124" class="Bound">x≲y</a> <a id="3128" class="Symbol">:</a> <a id="3130" href="Relation.Binary.Reasoning.Base.Triple.html#3118" class="Bound">x</a> <a id="3132" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="3144" href="Relation.Binary.Reasoning.Base.Triple.html#3120" class="Bound">y</a><a id="3145" class="Symbol">)</a> <a id="3147" class="Symbol"></a> <a id="3149" href="Relation.Nullary.Decidable.Core.html#1485" class="Record">Dec</a> <a id="3153" class="Symbol">(</a><a id="3154" href="Relation.Binary.Reasoning.Base.Triple.html#2995" class="Datatype">IsStrict</a> <a id="3163" href="Relation.Binary.Reasoning.Base.Triple.html#3124" class="Bound">x≲y</a><a id="3166" class="Symbol">)</a>
<a id="3168" href="Relation.Binary.Reasoning.Base.Triple.html#3103" class="Function">IsStrict?</a> <a id="3178" class="Symbol">(</a><a id="3179" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="3189" href="Relation.Binary.Reasoning.Base.Triple.html#3189" class="Bound">x&lt;y</a><a id="3192" class="Symbol">)</a> <a id="3194" class="Symbol">=</a> <a id="3196" href="Relation.Nullary.Decidable.Core.html#1618" class="InductiveConstructor">yes</a> <a id="3200" class="Symbol">(</a><a id="3201" href="Relation.Binary.Reasoning.Base.Triple.html#3061" class="InductiveConstructor">isStrict</a> <a id="3210" href="Relation.Binary.Reasoning.Base.Triple.html#3189" class="Bound">x&lt;y</a><a id="3213" class="Symbol">)</a>
<a id="3215" href="Relation.Binary.Reasoning.Base.Triple.html#3103" class="Function">IsStrict?</a> <a id="3225" class="Symbol">(</a><a id="3226" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="3236" class="Symbol">_)</a> <a id="3241" class="Symbol">=</a> <a id="3243" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a> <a id="3246" class="Symbol">λ()</a>
<a id="3250" href="Relation.Binary.Reasoning.Base.Triple.html#3103" class="Function">IsStrict?</a> <a id="3260" class="Symbol">(</a><a id="3261" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="3271" class="Symbol">_)</a> <a id="3276" class="Symbol">=</a> <a id="3278" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a> <a id="3281" class="Symbol">λ()</a>
<a id="extractStrict"></a><a id="3286" href="Relation.Binary.Reasoning.Base.Triple.html#3286" class="Function">extractStrict</a> <a id="3300" class="Symbol">:</a> <a id="3302" class="Symbol"></a> <a id="3304" class="Symbol">{</a><a id="3305" href="Relation.Binary.Reasoning.Base.Triple.html#3305" class="Bound">x</a> <a id="3307" href="Relation.Binary.Reasoning.Base.Triple.html#3307" class="Bound">y</a><a id="3308" class="Symbol">}</a> <a id="3310" class="Symbol">{</a><a id="3311" href="Relation.Binary.Reasoning.Base.Triple.html#3311" class="Bound">x≲y</a> <a id="3315" class="Symbol">:</a> <a id="3317" href="Relation.Binary.Reasoning.Base.Triple.html#3305" class="Bound">x</a> <a id="3319" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="3331" href="Relation.Binary.Reasoning.Base.Triple.html#3307" class="Bound">y</a><a id="3332" class="Symbol">}</a> <a id="3334" class="Symbol"></a> <a id="3336" href="Relation.Binary.Reasoning.Base.Triple.html#2995" class="Datatype">IsStrict</a> <a id="3345" href="Relation.Binary.Reasoning.Base.Triple.html#3311" class="Bound">x≲y</a> <a id="3349" class="Symbol"></a> <a id="3351" href="Relation.Binary.Reasoning.Base.Triple.html#3305" class="Bound">x</a> <a id="3353" href="Relation.Binary.Reasoning.Base.Triple.html#1107" class="Bound Operator">&lt;</a> <a id="3355" href="Relation.Binary.Reasoning.Base.Triple.html#3307" class="Bound">y</a>
<a id="3357" href="Relation.Binary.Reasoning.Base.Triple.html#3286" class="Function">extractStrict</a> <a id="3371" class="Symbol">(</a><a id="3372" href="Relation.Binary.Reasoning.Base.Triple.html#3061" class="InductiveConstructor">isStrict</a> <a id="3381" href="Relation.Binary.Reasoning.Base.Triple.html#3381" class="Bound">x&lt;y</a><a id="3384" class="Symbol">)</a> <a id="3386" class="Symbol">=</a> <a id="3388" href="Relation.Binary.Reasoning.Base.Triple.html#3381" class="Bound">x&lt;y</a>
<a id="strictRelation"></a><a id="3393" href="Relation.Binary.Reasoning.Base.Triple.html#3393" class="Function">strictRelation</a> <a id="3408" class="Symbol">:</a> <a id="3410" href="Relation.Binary.Reasoning.Syntax.html#1920" class="Record">SubRelation</a> <a id="3422" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="3436" class="Symbol">_</a> <a id="3438" class="Symbol">_</a>
<a id="3440" href="Relation.Binary.Reasoning.Base.Triple.html#3393" class="Function">strictRelation</a> <a id="3455" class="Symbol">=</a> <a id="3457" class="Keyword">record</a>
<a id="3466" class="Symbol">{</a> <a id="3468" href="Relation.Binary.Reasoning.Syntax.html#2033" class="Field">IsS</a> <a id="3472" class="Symbol">=</a> <a id="3474" href="Relation.Binary.Reasoning.Base.Triple.html#2995" class="Datatype">IsStrict</a>
<a id="3485" class="Symbol">;</a> <a id="3487" href="Relation.Binary.Reasoning.Syntax.html#2058" class="Field">IsS?</a> <a id="3492" class="Symbol">=</a> <a id="3494" href="Relation.Binary.Reasoning.Base.Triple.html#3103" class="Function">IsStrict?</a>
<a id="3506" class="Symbol">;</a> <a id="3508" href="Relation.Binary.Reasoning.Syntax.html#2101" class="Field">extract</a> <a id="3516" class="Symbol">=</a> <a id="3518" href="Relation.Binary.Reasoning.Base.Triple.html#3286" class="Function">extractStrict</a>
<a id="3534" class="Symbol">}</a>
<a id="3537" class="Comment">------------------------------------------------------------------------</a>
<a id="3610" class="Comment">-- Equality sub-relation</a>
<a id="3636" class="Keyword">data</a> <a id="IsEquality"></a><a id="3641" href="Relation.Binary.Reasoning.Base.Triple.html#3641" class="Datatype">IsEquality</a> <a id="3652" class="Symbol">{</a><a id="3653" href="Relation.Binary.Reasoning.Base.Triple.html#3653" class="Bound">x</a> <a id="3655" href="Relation.Binary.Reasoning.Base.Triple.html#3655" class="Bound">y</a><a id="3656" class="Symbol">}</a> <a id="3658" class="Symbol">:</a> <a id="3660" href="Relation.Binary.Reasoning.Base.Triple.html#3653" class="Bound">x</a> <a id="3662" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="3674" href="Relation.Binary.Reasoning.Base.Triple.html#3655" class="Bound">y</a> <a id="3676" class="Symbol"></a> <a id="3678" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3682" class="Symbol">(</a><a id="3683" href="Relation.Binary.Reasoning.Base.Triple.html#1046" class="Bound">a</a> <a id="3685" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3687" href="Relation.Binary.Reasoning.Base.Triple.html#1048" class="Bound">ℓ₁</a> <a id="3690" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3692" href="Relation.Binary.Reasoning.Base.Triple.html#1051" class="Bound">ℓ₂</a> <a id="3695" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3697" href="Relation.Binary.Reasoning.Base.Triple.html#1054" class="Bound">ℓ₃</a><a id="3699" class="Symbol">)</a> <a id="3701" class="Keyword">where</a>
<a id="IsEquality.isEquality"></a><a id="3709" href="Relation.Binary.Reasoning.Base.Triple.html#3709" class="InductiveConstructor">isEquality</a> <a id="3720" class="Symbol">:</a> <a id="3722" class="Symbol"></a> <a id="3724" href="Relation.Binary.Reasoning.Base.Triple.html#3724" class="Bound">x≈y</a> <a id="3728" class="Symbol"></a> <a id="3730" href="Relation.Binary.Reasoning.Base.Triple.html#3641" class="Datatype">IsEquality</a> <a id="3741" class="Symbol">(</a><a id="3742" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="3749" href="Relation.Binary.Reasoning.Base.Triple.html#3724" class="Bound">x≈y</a><a id="3752" class="Symbol">)</a>
<a id="IsEquality?"></a><a id="3755" href="Relation.Binary.Reasoning.Base.Triple.html#3755" class="Function">IsEquality?</a> <a id="3767" class="Symbol">:</a> <a id="3769" class="Symbol"></a> <a id="3771" class="Symbol">{</a><a id="3772" href="Relation.Binary.Reasoning.Base.Triple.html#3772" class="Bound">x</a> <a id="3774" href="Relation.Binary.Reasoning.Base.Triple.html#3774" class="Bound">y</a><a id="3775" class="Symbol">}</a> <a id="3777" class="Symbol">(</a><a id="3778" href="Relation.Binary.Reasoning.Base.Triple.html#3778" class="Bound">x≲y</a> <a id="3782" class="Symbol">:</a> <a id="3784" href="Relation.Binary.Reasoning.Base.Triple.html#3772" class="Bound">x</a> <a id="3786" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="3798" href="Relation.Binary.Reasoning.Base.Triple.html#3774" class="Bound">y</a><a id="3799" class="Symbol">)</a> <a id="3801" class="Symbol"></a> <a id="3803" href="Relation.Nullary.Decidable.Core.html#1485" class="Record">Dec</a> <a id="3807" class="Symbol">(</a><a id="3808" href="Relation.Binary.Reasoning.Base.Triple.html#3641" class="Datatype">IsEquality</a> <a id="3819" href="Relation.Binary.Reasoning.Base.Triple.html#3778" class="Bound">x≲y</a><a id="3822" class="Symbol">)</a>
<a id="3824" href="Relation.Binary.Reasoning.Base.Triple.html#3755" class="Function">IsEquality?</a> <a id="3836" class="Symbol">(</a><a id="3837" href="Relation.Binary.Reasoning.Base.Triple.html#1579" class="InductiveConstructor">strict</a> <a id="3847" class="Symbol">_)</a> <a id="3850" class="Symbol">=</a> <a id="3852" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a> <a id="3855" class="Symbol">λ()</a>
<a id="3859" href="Relation.Binary.Reasoning.Base.Triple.html#3755" class="Function">IsEquality?</a> <a id="3871" class="Symbol">(</a><a id="3872" href="Relation.Binary.Reasoning.Base.Triple.html#1625" class="InductiveConstructor">nonstrict</a> <a id="3882" class="Symbol">_)</a> <a id="3885" class="Symbol">=</a> <a id="3887" href="Relation.Nullary.Decidable.Core.html#1655" class="InductiveConstructor">no</a> <a id="3890" class="Symbol">λ()</a>
<a id="3894" href="Relation.Binary.Reasoning.Base.Triple.html#3755" class="Function">IsEquality?</a> <a id="3906" class="Symbol">(</a><a id="3907" href="Relation.Binary.Reasoning.Base.Triple.html#1671" class="InductiveConstructor">equals</a> <a id="3914" href="Relation.Binary.Reasoning.Base.Triple.html#3914" class="Bound">x≈y</a><a id="3917" class="Symbol">)</a> <a id="3920" class="Symbol">=</a> <a id="3922" href="Relation.Nullary.Decidable.Core.html#1618" class="InductiveConstructor">yes</a> <a id="3926" class="Symbol">(</a><a id="3927" href="Relation.Binary.Reasoning.Base.Triple.html#3709" class="InductiveConstructor">isEquality</a> <a id="3938" href="Relation.Binary.Reasoning.Base.Triple.html#3914" class="Bound">x≈y</a><a id="3941" class="Symbol">)</a>
<a id="extractEquality"></a><a id="3944" href="Relation.Binary.Reasoning.Base.Triple.html#3944" class="Function">extractEquality</a> <a id="3960" class="Symbol">:</a> <a id="3962" class="Symbol"></a> <a id="3964" class="Symbol">{</a><a id="3965" href="Relation.Binary.Reasoning.Base.Triple.html#3965" class="Bound">x</a> <a id="3967" href="Relation.Binary.Reasoning.Base.Triple.html#3967" class="Bound">y</a><a id="3968" class="Symbol">}</a> <a id="3970" class="Symbol">{</a><a id="3971" href="Relation.Binary.Reasoning.Base.Triple.html#3971" class="Bound">x≲y</a> <a id="3975" class="Symbol">:</a> <a id="3977" href="Relation.Binary.Reasoning.Base.Triple.html#3965" class="Bound">x</a> <a id="3979" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">IsRelatedTo</a> <a id="3991" href="Relation.Binary.Reasoning.Base.Triple.html#3967" class="Bound">y</a><a id="3992" class="Symbol">}</a> <a id="3994" class="Symbol"></a> <a id="3996" href="Relation.Binary.Reasoning.Base.Triple.html#3641" class="Datatype">IsEquality</a> <a id="4007" href="Relation.Binary.Reasoning.Base.Triple.html#3971" class="Bound">x≲y</a> <a id="4011" class="Symbol"></a> <a id="4013" href="Relation.Binary.Reasoning.Base.Triple.html#3965" class="Bound">x</a> <a id="4015" href="Relation.Binary.Reasoning.Base.Triple.html#1073" class="Bound Operator"></a> <a id="4017" href="Relation.Binary.Reasoning.Base.Triple.html#3967" class="Bound">y</a>
<a id="4019" href="Relation.Binary.Reasoning.Base.Triple.html#3944" class="Function">extractEquality</a> <a id="4035" class="Symbol">(</a><a id="4036" href="Relation.Binary.Reasoning.Base.Triple.html#3709" class="InductiveConstructor">isEquality</a> <a id="4047" href="Relation.Binary.Reasoning.Base.Triple.html#4047" class="Bound">x≈y</a><a id="4050" class="Symbol">)</a> <a id="4052" class="Symbol">=</a> <a id="4054" href="Relation.Binary.Reasoning.Base.Triple.html#4047" class="Bound">x≈y</a>
<a id="eqRelation"></a><a id="4059" href="Relation.Binary.Reasoning.Base.Triple.html#4059" class="Function">eqRelation</a> <a id="4070" class="Symbol">:</a> <a id="4072" href="Relation.Binary.Reasoning.Syntax.html#1920" class="Record">SubRelation</a> <a id="4084" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4098" class="Symbol">_</a> <a id="4100" class="Symbol">_</a>
<a id="4102" href="Relation.Binary.Reasoning.Base.Triple.html#4059" class="Function">eqRelation</a> <a id="4113" class="Symbol">=</a> <a id="4115" class="Keyword">record</a>
<a id="4124" class="Symbol">{</a> <a id="4126" href="Relation.Binary.Reasoning.Syntax.html#2033" class="Field">IsS</a> <a id="4130" class="Symbol">=</a> <a id="4132" href="Relation.Binary.Reasoning.Base.Triple.html#3641" class="Datatype">IsEquality</a>
<a id="4145" class="Symbol">;</a> <a id="4147" href="Relation.Binary.Reasoning.Syntax.html#2058" class="Field">IsS?</a> <a id="4152" class="Symbol">=</a> <a id="4154" href="Relation.Binary.Reasoning.Base.Triple.html#3755" class="Function">IsEquality?</a>
<a id="4168" class="Symbol">;</a> <a id="4170" href="Relation.Binary.Reasoning.Syntax.html#2101" class="Field">extract</a> <a id="4178" class="Symbol">=</a> <a id="4180" href="Relation.Binary.Reasoning.Base.Triple.html#3944" class="Function">extractEquality</a>
<a id="4198" class="Symbol">}</a>
<a id="4201" class="Comment">------------------------------------------------------------------------</a>
<a id="4274" class="Comment">-- Reasoning combinators</a>
<a id="4300" class="Keyword">open</a> <a id="4305" href="Relation.Binary.Reasoning.Syntax.html#1408" class="Module">begin-syntax</a> <a id="4318" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4332" href="Relation.Binary.Reasoning.Base.Triple.html#1716" class="Function">start</a> <a id="4338" class="Keyword">public</a>
<a id="4345" class="Keyword">open</a> <a id="4350" href="Relation.Binary.Reasoning.Syntax.html#2412" class="Module">begin-equality-syntax</a> <a id="4372" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4386" href="Relation.Binary.Reasoning.Base.Triple.html#4059" class="Function">eqRelation</a> <a id="4397" class="Keyword">public</a>
<a id="4404" class="Keyword">open</a> <a id="4409" href="Relation.Binary.Reasoning.Syntax.html#2803" class="Module">begin-strict-syntax</a> <a id="4429" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4443" href="Relation.Binary.Reasoning.Base.Triple.html#3393" class="Function">strictRelation</a> <a id="4458" class="Keyword">public</a>
<a id="4465" class="Keyword">open</a> <a id="4470" href="Relation.Binary.Reasoning.Syntax.html#3541" class="Module">begin-contradiction-syntax</a> <a id="4497" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4511" href="Relation.Binary.Reasoning.Base.Triple.html#3393" class="Function">strictRelation</a> <a id="4526" href="Relation.Binary.Reasoning.Base.Triple.html#1162" class="Bound">&lt;-asym</a> <a id="4533" class="Keyword">public</a>
<a id="4540" class="Keyword">open</a> <a id="4545" href="Relation.Binary.Reasoning.Syntax.html#10883" class="Module">≡-syntax</a> <a id="4554" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4568" href="Relation.Binary.Reasoning.Base.Triple.html#1837" class="Function">≡-go</a> <a id="4573" class="Keyword">public</a>
<a id="4580" class="Keyword">open</a> <a id="4585" href="Relation.Binary.Reasoning.Syntax.html#6995" class="Module">≈-syntax</a> <a id="4594" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4608" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4622" href="Relation.Binary.Reasoning.Base.Triple.html#2087" class="Function">≈-go</a> <a id="4627" href="Relation.Binary.Structures.html#1622" class="Function">Eq.sym</a> <a id="4634" class="Keyword">public</a>
<a id="4641" class="Keyword">open</a> <a id="4646" href="Relation.Binary.Reasoning.Syntax.html#5443" class="Module">≤-syntax</a> <a id="4655" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4669" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4683" href="Relation.Binary.Reasoning.Base.Triple.html#2314" class="Function">≤-go</a> <a id="4688" class="Keyword">public</a>
<a id="4695" class="Keyword">open</a> <a id="4700" href="Relation.Binary.Reasoning.Syntax.html#5588" class="Module">&lt;-syntax</a> <a id="4709" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4723" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4737" href="Relation.Binary.Reasoning.Base.Triple.html#2518" class="Function">&lt;-go</a> <a id="4742" class="Keyword">public</a>
<a id="4749" class="Keyword">open</a> <a id="4754" href="Relation.Binary.Reasoning.Syntax.html#12202" class="Module">end-syntax</a> <a id="4765" href="Relation.Binary.Reasoning.Base.Triple.html#1522" class="Datatype Operator">_IsRelatedTo_</a> <a id="4779" href="Relation.Binary.Reasoning.Base.Triple.html#2723" class="Function">stop</a> <a id="4784" class="Keyword">public</a>
</pre></body></html>