bsc-leon-vatthauer/agda/bsc-thesis/Relation.Binary.Structures.html

320 lines
64 KiB
HTML
Raw Normal View History

2024-02-09 17:53:52 +01:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Relation.Binary.Structures</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">-- Structures for homogeneous binary relations</a>
<a id="153" class="Comment">------------------------------------------------------------------------</a>
<a id="227" class="Comment">-- The contents of this module should be accessed via `Relation.Binary`.</a>
<a id="301" class="Symbol">{-#</a> <a id="305" class="Keyword">OPTIONS</a> <a id="313" class="Pragma">--cubical-compatible</a> <a id="334" class="Pragma">--safe</a> <a id="341" class="Symbol">#-}</a>
<a id="346" class="Keyword">open</a> <a id="351" class="Keyword">import</a> <a id="358" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a>
<a id="380" class="Keyword">module</a> <a id="387" href="Relation.Binary.Structures.html" class="Module">Relation.Binary.Structures</a>
<a id="416" class="Symbol">{</a><a id="417" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="419" href="Relation.Binary.Structures.html#419" class="Bound"></a><a id="420" class="Symbol">}</a> <a id="422" class="Symbol">{</a><a id="423" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="425" class="Symbol">:</a> <a id="427" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="431" href="Relation.Binary.Structures.html#417" class="Bound">a</a><a id="432" class="Symbol">}</a> <a id="434" class="Comment">-- The underlying set</a>
<a id="458" class="Symbol">(</a><a id="459" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a> <a id="463" class="Symbol">:</a> <a id="465" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="469" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="471" href="Relation.Binary.Structures.html#419" class="Bound"></a><a id="472" class="Symbol">)</a> <a id="476" class="Comment">-- The underlying equality relation</a>
<a id="514" class="Keyword">where</a>
<a id="521" class="Keyword">open</a> <a id="526" class="Keyword">import</a> <a id="533" href="Data.Product.Base.html" class="Module">Data.Product.Base</a> <a id="551" class="Keyword">using</a> <a id="557" class="Symbol">(</a><a id="558" href="Data.Product.Base.html#636" class="Field">proj₁</a><a id="563" class="Symbol">;</a> <a id="565" href="Data.Product.Base.html#650" class="Field">proj₂</a><a id="570" class="Symbol">;</a> <a id="572" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">_,_</a><a id="575" class="Symbol">)</a>
<a id="577" class="Keyword">open</a> <a id="582" class="Keyword">import</a> <a id="589" href="Level.html" class="Module">Level</a> <a id="595" class="Keyword">using</a> <a id="601" class="Symbol">(</a><a id="602" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="607" class="Symbol">;</a> <a id="609" href="Agda.Primitive.html#961" class="Primitive Operator">_⊔_</a><a id="612" class="Symbol">)</a>
<a id="614" class="Keyword">open</a> <a id="619" class="Keyword">import</a> <a id="626" href="Relation.Nullary.Negation.Core.html" class="Module">Relation.Nullary.Negation.Core</a> <a id="657" class="Keyword">using</a> <a id="663" class="Symbol">(</a><a id="664" href="Relation.Nullary.Negation.Core.html#698" class="Function Operator">¬_</a><a id="666" class="Symbol">)</a>
<a id="668" class="Keyword">open</a> <a id="673" class="Keyword">import</a> <a id="680" href="Relation.Binary.PropositionalEquality.Core.html" class="Module">Relation.Binary.PropositionalEquality.Core</a> <a id="723" class="Symbol">as</a> <a id="726" class="Module">P</a> <a id="728" class="Keyword">using</a> <a id="734" class="Symbol">(</a><a id="735" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a><a id="738" class="Symbol">)</a>
<a id="740" class="Keyword">open</a> <a id="745" class="Keyword">import</a> <a id="752" href="Relation.Binary.Consequences.html" class="Module">Relation.Binary.Consequences</a>
<a id="781" class="Keyword">open</a> <a id="786" class="Keyword">import</a> <a id="793" href="Relation.Binary.Definitions.html" class="Module">Relation.Binary.Definitions</a>
<a id="822" class="Keyword">private</a>
<a id="832" class="Keyword">variable</a>
<a id="845" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a> <a id="848" class="Symbol">:</a> <a id="850" href="Agda.Primitive.html#742" class="Postulate">Level</a>
<a id="857" class="Comment">------------------------------------------------------------------------</a>
<a id="930" class="Comment">-- Equivalences</a>
<a id="946" class="Comment">------------------------------------------------------------------------</a>
<a id="1019" class="Comment">-- Note all the following equivalences refer to the equality provided</a>
<a id="1089" class="Comment">-- as a module parameter at the top of this file.</a>
<a id="1140" class="Keyword">record</a> <a id="IsPartialEquivalence"></a><a id="1147" href="Relation.Binary.Structures.html#1147" class="Record">IsPartialEquivalence</a> <a id="1168" class="Symbol">:</a> <a id="1170" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1174" class="Symbol">(</a><a id="1175" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="1177" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1179" href="Relation.Binary.Structures.html#419" class="Bound"></a><a id="1180" class="Symbol">)</a> <a id="1182" class="Keyword">where</a>
<a id="1190" class="Keyword">field</a>
<a id="IsPartialEquivalence.sym"></a><a id="1200" href="Relation.Binary.Structures.html#1200" class="Field">sym</a> <a id="1206" class="Symbol">:</a> <a id="1208" href="Relation.Binary.Definitions.html#1587" class="Function">Symmetric</a> <a id="1218" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsPartialEquivalence.trans"></a><a id="1226" href="Relation.Binary.Structures.html#1226" class="Field">trans</a> <a id="1232" class="Symbol">:</a> <a id="1234" href="Relation.Binary.Definitions.html#2103" class="Function">Transitive</a> <a id="1245" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="1250" class="Comment">-- The preorders of this library are defined in terms of an underlying</a>
<a id="1321" class="Comment">-- equivalence relation, and hence equivalence relations are not</a>
<a id="1386" class="Comment">-- defined in terms of preorders.</a>
<a id="1421" class="Comment">-- To preserve backwards compatability, equivalence relations are</a>
<a id="1487" class="Comment">-- not defined in terms of their partial counterparts.</a>
<a id="1543" class="Keyword">record</a> <a id="IsEquivalence"></a><a id="1550" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a> <a id="1564" class="Symbol">:</a> <a id="1566" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1570" class="Symbol">(</a><a id="1571" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="1573" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1575" href="Relation.Binary.Structures.html#419" class="Bound"></a><a id="1576" class="Symbol">)</a> <a id="1578" class="Keyword">where</a>
<a id="1586" class="Keyword">field</a>
<a id="IsEquivalence.refl"></a><a id="1596" href="Relation.Binary.Structures.html#1596" class="Field">refl</a> <a id="1602" class="Symbol">:</a> <a id="1604" href="Relation.Binary.Definitions.html#1428" class="Function">Reflexive</a> <a id="1614" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsEquivalence.sym"></a><a id="1622" href="Relation.Binary.Structures.html#1622" class="Field">sym</a> <a id="1628" class="Symbol">:</a> <a id="1630" href="Relation.Binary.Definitions.html#1587" class="Function">Symmetric</a> <a id="1640" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsEquivalence.trans"></a><a id="1648" href="Relation.Binary.Structures.html#1648" class="Field">trans</a> <a id="1654" class="Symbol">:</a> <a id="1656" href="Relation.Binary.Definitions.html#2103" class="Function">Transitive</a> <a id="1667" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsEquivalence.reflexive"></a><a id="1674" href="Relation.Binary.Structures.html#1674" class="Function">reflexive</a> <a id="1684" class="Symbol">:</a> <a id="1686" href="Agda.Builtin.Equality.html#150" class="Datatype Operator">_≡_</a> <a id="1690" href="Relation.Binary.Core.html#1268" class="Function Operator"></a> <a id="1692" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="1698" href="Relation.Binary.Structures.html#1674" class="Function">reflexive</a> <a id="1708" href="Agda.Builtin.Equality.html#207" class="InductiveConstructor">P.refl</a> <a id="1715" class="Symbol">=</a> <a id="1717" href="Relation.Binary.Structures.html#1596" class="Field">refl</a>
<a id="IsEquivalence.isPartialEquivalence"></a><a id="1725" href="Relation.Binary.Structures.html#1725" class="Function">isPartialEquivalence</a> <a id="1746" class="Symbol">:</a> <a id="1748" href="Relation.Binary.Structures.html#1147" class="Record">IsPartialEquivalence</a>
<a id="1771" href="Relation.Binary.Structures.html#1725" class="Function">isPartialEquivalence</a> <a id="1792" class="Symbol">=</a> <a id="1794" class="Keyword">record</a>
<a id="1805" class="Symbol">{</a> <a id="1807" href="Relation.Binary.Structures.html#1200" class="Field">sym</a> <a id="1811" class="Symbol">=</a> <a id="1813" href="Relation.Binary.Structures.html#1622" class="Field">sym</a>
<a id="1821" class="Symbol">;</a> <a id="1823" href="Relation.Binary.Structures.html#1226" class="Field">trans</a> <a id="1829" class="Symbol">=</a> <a id="1831" href="Relation.Binary.Structures.html#1648" class="Field">trans</a>
<a id="1841" class="Symbol">}</a>
<a id="1845" class="Keyword">record</a> <a id="IsDecEquivalence"></a><a id="1852" href="Relation.Binary.Structures.html#1852" class="Record">IsDecEquivalence</a> <a id="1869" class="Symbol">:</a> <a id="1871" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1875" class="Symbol">(</a><a id="1876" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="1878" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1880" href="Relation.Binary.Structures.html#419" class="Bound"></a><a id="1881" class="Symbol">)</a> <a id="1883" class="Keyword">where</a>
<a id="1891" class="Keyword">infix</a> <a id="1897" class="Number">4</a> <a id="1899" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a>
<a id="1905" class="Keyword">field</a>
<a id="IsDecEquivalence.isEquivalence"></a><a id="1915" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="1929" class="Symbol">:</a> <a id="1931" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a>
<a id="IsDecEquivalence._≟_"></a><a id="1949" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a> <a id="1963" class="Symbol">:</a> <a id="1965" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="1975" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="1982" class="Keyword">open</a> <a id="1987" href="Relation.Binary.Structures.html#1550" class="Module">IsEquivalence</a> <a id="2001" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="2015" class="Keyword">public</a>
<a id="2024" class="Comment">------------------------------------------------------------------------</a>
<a id="2097" class="Comment">-- Preorders</a>
<a id="2110" class="Comment">------------------------------------------------------------------------</a>
<a id="2184" class="Keyword">record</a> <a id="IsPreorder"></a><a id="2191" href="Relation.Binary.Structures.html#2191" class="Record">IsPreorder</a> <a id="2202" class="Symbol">(</a><a id="2203" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a> <a id="2207" class="Symbol">:</a> <a id="2209" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2213" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="2215" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="2217" class="Symbol">)</a> <a id="2219" class="Symbol">:</a> <a id="2221" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2225" class="Symbol">(</a><a id="2226" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="2228" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2230" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="2232" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2234" href="Relation.Binary.Structures.html#2215" class="Bound">ℓ₂</a><a id="2236" class="Symbol">)</a> <a id="2238" class="Keyword">where</a>
<a id="2246" class="Keyword">field</a>
<a id="IsPreorder.isEquivalence"></a><a id="2256" href="Relation.Binary.Structures.html#2256" class="Field">isEquivalence</a> <a id="2270" class="Symbol">:</a> <a id="2272" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a>
<a id="2290" class="Comment">-- Reflexivity is expressed in terms of the underlying equality:</a>
<a id="IsPreorder.reflexive"></a><a id="2359" href="Relation.Binary.Structures.html#2359" class="Field">reflexive</a> <a id="2373" class="Symbol">:</a> <a id="2375" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a> <a id="2379" href="Relation.Binary.Core.html#1268" class="Function Operator"></a> <a id="2381" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a>
<a id="IsPreorder.trans"></a><a id="2389" href="Relation.Binary.Structures.html#2389" class="Field">trans</a> <a id="2403" class="Symbol">:</a> <a id="2405" href="Relation.Binary.Definitions.html#2103" class="Function">Transitive</a> <a id="2416" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a>
<a id="2423" class="Keyword">module</a> <a id="IsPreorder.Eq"></a><a id="2430" href="Relation.Binary.Structures.html#2430" class="Module">Eq</a> <a id="2433" class="Symbol">=</a> <a id="2435" href="Relation.Binary.Structures.html#1550" class="Module">IsEquivalence</a> <a id="2449" href="Relation.Binary.Structures.html#2256" class="Field">isEquivalence</a>
<a id="IsPreorder.refl"></a><a id="2466" href="Relation.Binary.Structures.html#2466" class="Function">refl</a> <a id="2471" class="Symbol">:</a> <a id="2473" href="Relation.Binary.Definitions.html#1428" class="Function">Reflexive</a> <a id="2483" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a>
<a id="2489" href="Relation.Binary.Structures.html#2466" class="Function">refl</a> <a id="2494" class="Symbol">=</a> <a id="2496" href="Relation.Binary.Structures.html#2359" class="Field">reflexive</a> <a id="2506" href="Relation.Binary.Structures.html#1596" class="Function">Eq.refl</a>
<a id="IsPreorder.≲-respˡ-≈"></a><a id="2517" href="Relation.Binary.Structures.html#2517" class="Function">≲-respˡ-≈</a> <a id="2527" class="Symbol">:</a> <a id="2529" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a> <a id="2533" href="Relation.Binary.Definitions.html#5500" class="Function Operator">Respectsˡ</a> <a id="2543" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="2549" href="Relation.Binary.Structures.html#2517" class="Function">≲-respˡ-≈</a> <a id="2559" href="Relation.Binary.Structures.html#2559" class="Bound">x≈y</a> <a id="2563" href="Relation.Binary.Structures.html#2563" class="Bound">xz</a> <a id="2567" class="Symbol">=</a> <a id="2569" href="Relation.Binary.Structures.html#2389" class="Field">trans</a> <a id="2575" class="Symbol">(</a><a id="2576" href="Relation.Binary.Structures.html#2359" class="Field">reflexive</a> <a id="2586" class="Symbol">(</a><a id="2587" href="Relation.Binary.Structures.html#1622" class="Function">Eq.sym</a> <a id="2594" href="Relation.Binary.Structures.html#2559" class="Bound">x≈y</a><a id="2597" class="Symbol">))</a> <a id="2600" href="Relation.Binary.Structures.html#2563" class="Bound">xz</a>
<a id="IsPreorder.≲-respʳ-≈"></a><a id="2607" href="Relation.Binary.Structures.html#2607" class="Function">≲-respʳ-≈</a> <a id="2617" class="Symbol">:</a> <a id="2619" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a> <a id="2623" href="Relation.Binary.Definitions.html#5335" class="Function Operator">Respectsʳ</a> <a id="2633" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="2639" href="Relation.Binary.Structures.html#2607" class="Function">≲-respʳ-≈</a> <a id="2649" href="Relation.Binary.Structures.html#2649" class="Bound">x≈y</a> <a id="2653" href="Relation.Binary.Structures.html#2653" class="Bound">zx</a> <a id="2657" class="Symbol">=</a> <a id="2659" href="Relation.Binary.Structures.html#2389" class="Field">trans</a> <a id="2665" href="Relation.Binary.Structures.html#2653" class="Bound">zx</a> <a id="2669" class="Symbol">(</a><a id="2670" href="Relation.Binary.Structures.html#2359" class="Field">reflexive</a> <a id="2680" href="Relation.Binary.Structures.html#2649" class="Bound">x≈y</a><a id="2683" class="Symbol">)</a>
<a id="IsPreorder.≲-resp-≈"></a><a id="2688" href="Relation.Binary.Structures.html#2688" class="Function">≲-resp-≈</a> <a id="2697" class="Symbol">:</a> <a id="2699" href="Relation.Binary.Structures.html#2203" class="Bound Operator">_≲_</a> <a id="2703" href="Relation.Binary.Definitions.html#5663" class="Function Operator">Respects₂</a> <a id="2713" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="2719" href="Relation.Binary.Structures.html#2688" class="Function">≲-resp-≈</a> <a id="2728" class="Symbol">=</a> <a id="2730" href="Relation.Binary.Structures.html#2607" class="Function">≲-respʳ-≈</a> <a id="2740" href="Agda.Builtin.Sigma.html#235" class="InductiveConstructor Operator">,</a> <a id="2742" href="Relation.Binary.Structures.html#2517" class="Function">≲-respˡ-≈</a>
<a id="IsPreorder.-respˡ-≈"></a><a id="2755" href="Relation.Binary.Structures.html#2755" class="Function">-respˡ-≈</a> <a id="2765" class="Symbol">=</a> <a id="2767" href="Relation.Binary.Structures.html#2517" class="Function">≲-respˡ-≈</a>
<a id="2779" class="Symbol">{-#</a> <a id="2783" class="Keyword">WARNING_ON_USAGE</a> <a id="2800" class="Pragma">-respˡ-≈</a>
<a id="2812" class="String">&quot;Warning: -respˡ-≈ was deprecated in v2.0.
Please use ≲-respˡ-≈ instead. &quot;</a>
<a id="2892" class="Symbol">#-}</a>
<a id="IsPreorder.-respʳ-≈"></a><a id="2898" href="Relation.Binary.Structures.html#2898" class="Function">-respʳ-≈</a> <a id="2908" class="Symbol">=</a> <a id="2910" href="Relation.Binary.Structures.html#2607" class="Function">≲-respʳ-≈</a>
<a id="2922" class="Symbol">{-#</a> <a id="2926" class="Keyword">WARNING_ON_USAGE</a> <a id="2943" class="Pragma">-respʳ-≈</a>
<a id="2955" class="String">&quot;Warning: -respʳ-≈ was deprecated in v2.0.
Please use ≲-respʳ-≈ instead. &quot;</a>
<a id="3035" class="Symbol">#-}</a>
<a id="IsPreorder.-resp-≈"></a><a id="3041" href="Relation.Binary.Structures.html#3041" class="Function">-resp-≈</a> <a id="3050" class="Symbol">=</a> <a id="3052" href="Relation.Binary.Structures.html#2688" class="Function">≲-resp-≈</a>
<a id="3063" class="Symbol">{-#</a> <a id="3067" class="Keyword">WARNING_ON_USAGE</a> <a id="3084" class="Pragma">-resp-≈</a>
<a id="3095" class="String">&quot;Warning: -resp-≈ was deprecated in v2.0.
Please use ≲-resp-≈ instead. &quot;</a>
<a id="3173" class="Symbol">#-}</a>
<a id="3179" class="Keyword">record</a> <a id="IsTotalPreorder"></a><a id="3186" href="Relation.Binary.Structures.html#3186" class="Record">IsTotalPreorder</a> <a id="3202" class="Symbol">(</a><a id="3203" href="Relation.Binary.Structures.html#3203" class="Bound Operator">_≲_</a> <a id="3207" class="Symbol">:</a> <a id="3209" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="3213" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="3215" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="3217" class="Symbol">)</a> <a id="3219" class="Symbol">:</a> <a id="3221" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3225" class="Symbol">(</a><a id="3226" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="3228" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3230" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="3232" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3234" href="Relation.Binary.Structures.html#3215" class="Bound">ℓ₂</a><a id="3236" class="Symbol">)</a> <a id="3238" class="Keyword">where</a>
<a id="3246" class="Keyword">field</a>
<a id="IsTotalPreorder.isPreorder"></a><a id="3256" href="Relation.Binary.Structures.html#3256" class="Field">isPreorder</a> <a id="3267" class="Symbol">:</a> <a id="3269" href="Relation.Binary.Structures.html#2191" class="Record">IsPreorder</a> <a id="3280" href="Relation.Binary.Structures.html#3203" class="Bound Operator">_≲_</a>
<a id="IsTotalPreorder.total"></a><a id="3288" href="Relation.Binary.Structures.html#3288" class="Field">total</a> <a id="3299" class="Symbol">:</a> <a id="3301" href="Relation.Binary.Definitions.html#2910" class="Function">Total</a> <a id="3307" href="Relation.Binary.Structures.html#3203" class="Bound Operator">_≲_</a>
<a id="3314" class="Keyword">open</a> <a id="3319" href="Relation.Binary.Structures.html#2191" class="Module">IsPreorder</a> <a id="3330" href="Relation.Binary.Structures.html#3256" class="Field">isPreorder</a> <a id="3341" class="Keyword">public</a>
<a id="3350" class="Comment">------------------------------------------------------------------------</a>
<a id="3423" class="Comment">-- Partial orders</a>
<a id="3441" class="Comment">------------------------------------------------------------------------</a>
<a id="3515" class="Keyword">record</a> <a id="IsPartialOrder"></a><a id="3522" href="Relation.Binary.Structures.html#3522" class="Record">IsPartialOrder</a> <a id="3537" class="Symbol">(</a><a id="3538" href="Relation.Binary.Structures.html#3538" class="Bound Operator">_≤_</a> <a id="3542" class="Symbol">:</a> <a id="3544" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="3548" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="3550" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="3552" class="Symbol">)</a> <a id="3554" class="Symbol">:</a> <a id="3556" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3560" class="Symbol">(</a><a id="3561" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="3563" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3565" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="3567" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3569" href="Relation.Binary.Structures.html#3550" class="Bound">ℓ₂</a><a id="3571" class="Symbol">)</a> <a id="3573" class="Keyword">where</a>
<a id="3581" class="Keyword">field</a>
<a id="IsPartialOrder.isPreorder"></a><a id="3591" href="Relation.Binary.Structures.html#3591" class="Field">isPreorder</a> <a id="3602" class="Symbol">:</a> <a id="3604" href="Relation.Binary.Structures.html#2191" class="Record">IsPreorder</a> <a id="3615" href="Relation.Binary.Structures.html#3538" class="Bound Operator">_≤_</a>
<a id="IsPartialOrder.antisym"></a><a id="3623" href="Relation.Binary.Structures.html#3623" class="Field">antisym</a> <a id="3634" class="Symbol">:</a> <a id="3636" href="Relation.Binary.Definitions.html#2319" class="Function">Antisymmetric</a> <a id="3650" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a> <a id="3654" href="Relation.Binary.Structures.html#3538" class="Bound Operator">_≤_</a>
<a id="3661" class="Keyword">open</a> <a id="3666" href="Relation.Binary.Structures.html#2191" class="Module">IsPreorder</a> <a id="3677" href="Relation.Binary.Structures.html#3591" class="Field">isPreorder</a> <a id="3688" class="Keyword">public</a>
<a id="3699" class="Keyword">renaming</a>
<a id="3712" class="Symbol">(</a> <a id="3714" href="Relation.Binary.Structures.html#2755" class="Function">-respˡ-≈</a> <a id="3724" class="Symbol">to</a> <a id="3727" class="Function">≤-respˡ-≈</a>
<a id="3741" class="Symbol">;</a> <a id="3743" href="Relation.Binary.Structures.html#2898" class="Function">-respʳ-≈</a> <a id="3753" class="Symbol">to</a> <a id="3756" class="Function">≤-respʳ-≈</a>
<a id="3770" class="Symbol">;</a> <a id="3772" href="Relation.Binary.Structures.html#3041" class="Function">-resp-≈</a> <a id="3782" class="Symbol">to</a> <a id="3785" class="Function">≤-resp-≈</a>
<a id="3798" class="Symbol">)</a>
<a id="3802" class="Keyword">record</a> <a id="IsDecPartialOrder"></a><a id="3809" href="Relation.Binary.Structures.html#3809" class="Record">IsDecPartialOrder</a> <a id="3827" class="Symbol">(</a><a id="3828" href="Relation.Binary.Structures.html#3828" class="Bound Operator">_≤_</a> <a id="3832" class="Symbol">:</a> <a id="3834" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="3838" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="3840" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="3842" class="Symbol">)</a> <a id="3844" class="Symbol">:</a> <a id="3846" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3850" class="Symbol">(</a><a id="3851" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="3853" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3855" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="3857" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3859" href="Relation.Binary.Structures.html#3840" class="Bound">ℓ₂</a><a id="3861" class="Symbol">)</a> <a id="3863" class="Keyword">where</a>
<a id="3871" class="Keyword">infix</a> <a id="3877" class="Number">4</a> <a id="3879" href="Relation.Binary.Structures.html#3940" class="Field Operator">_≟_</a> <a id="3883" href="Relation.Binary.Structures.html#3975" class="Field Operator">_≤?_</a>
<a id="3890" class="Keyword">field</a>
<a id="IsDecPartialOrder.isPartialOrder"></a><a id="3900" href="Relation.Binary.Structures.html#3900" class="Field">isPartialOrder</a> <a id="3915" class="Symbol">:</a> <a id="3917" href="Relation.Binary.Structures.html#3522" class="Record">IsPartialOrder</a> <a id="3932" href="Relation.Binary.Structures.html#3828" class="Bound Operator">_≤_</a>
<a id="IsDecPartialOrder._≟_"></a><a id="3940" href="Relation.Binary.Structures.html#3940" class="Field Operator">_≟_</a> <a id="3955" class="Symbol">:</a> <a id="3957" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="3967" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsDecPartialOrder._≤?_"></a><a id="3975" href="Relation.Binary.Structures.html#3975" class="Field Operator">_≤?_</a> <a id="3990" class="Symbol">:</a> <a id="3992" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="4002" href="Relation.Binary.Structures.html#3828" class="Bound Operator">_≤_</a>
<a id="4009" class="Keyword">open</a> <a id="4014" href="Relation.Binary.Structures.html#3522" class="Module">IsPartialOrder</a> <a id="4029" href="Relation.Binary.Structures.html#3900" class="Field">isPartialOrder</a> <a id="4044" class="Keyword">public</a>
<a id="4055" class="Keyword">hiding</a> <a id="4062" class="Symbol">(</a><a id="4063" class="Keyword">module</a> <a id="4070" href="Relation.Binary.Structures.html#2430" class="Module">Eq</a><a id="4072" class="Symbol">)</a>
<a id="4077" class="Keyword">module</a> <a id="IsDecPartialOrder.Eq"></a><a id="4084" href="Relation.Binary.Structures.html#4084" class="Module">Eq</a> <a id="4087" class="Keyword">where</a>
<a id="IsDecPartialOrder.Eq.isDecEquivalence"></a><a id="4098" href="Relation.Binary.Structures.html#4098" class="Function">isDecEquivalence</a> <a id="4115" class="Symbol">:</a> <a id="4117" href="Relation.Binary.Structures.html#1852" class="Record">IsDecEquivalence</a>
<a id="4138" href="Relation.Binary.Structures.html#4098" class="Function">isDecEquivalence</a> <a id="4155" class="Symbol">=</a> <a id="4157" class="Keyword">record</a>
<a id="4170" class="Symbol">{</a> <a id="4172" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="4186" class="Symbol">=</a> <a id="4188" href="Relation.Binary.Structures.html#2256" class="Function">isEquivalence</a>
<a id="4208" class="Symbol">;</a> <a id="4210" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a> <a id="4224" class="Symbol">=</a> <a id="4226" href="Relation.Binary.Structures.html#3940" class="Field Operator">_≟_</a>
<a id="4236" class="Symbol">}</a>
<a id="4243" class="Keyword">open</a> <a id="4248" href="Relation.Binary.Structures.html#1852" class="Module">IsDecEquivalence</a> <a id="4265" href="Relation.Binary.Structures.html#4098" class="Function">isDecEquivalence</a> <a id="4282" class="Keyword">public</a>
<a id="4291" class="Keyword">record</a> <a id="IsStrictPartialOrder"></a><a id="4298" href="Relation.Binary.Structures.html#4298" class="Record">IsStrictPartialOrder</a> <a id="4319" class="Symbol">(</a><a id="4320" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a> <a id="4324" class="Symbol">:</a> <a id="4326" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="4330" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="4332" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="4334" class="Symbol">)</a> <a id="4336" class="Symbol">:</a> <a id="4338" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="4342" class="Symbol">(</a><a id="4343" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="4345" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4347" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="4349" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4351" href="Relation.Binary.Structures.html#4332" class="Bound">ℓ₂</a><a id="4353" class="Symbol">)</a> <a id="4355" class="Keyword">where</a>
<a id="4363" class="Keyword">field</a>
<a id="IsStrictPartialOrder.isEquivalence"></a><a id="4373" href="Relation.Binary.Structures.html#4373" class="Field">isEquivalence</a> <a id="4387" class="Symbol">:</a> <a id="4389" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a>
<a id="IsStrictPartialOrder.irrefl"></a><a id="4407" href="Relation.Binary.Structures.html#4407" class="Field">irrefl</a> <a id="4421" class="Symbol">:</a> <a id="4423" href="Relation.Binary.Definitions.html#2478" class="Function">Irreflexive</a> <a id="4435" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a> <a id="4439" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a>
<a id="IsStrictPartialOrder.trans"></a><a id="4447" href="Relation.Binary.Structures.html#4447" class="Field">trans</a> <a id="4461" class="Symbol">:</a> <a id="4463" href="Relation.Binary.Definitions.html#2103" class="Function">Transitive</a> <a id="4474" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a>
<a id="IsStrictPartialOrder.&lt;-resp-≈"></a><a id="4482" href="Relation.Binary.Structures.html#4482" class="Field">&lt;-resp-≈</a> <a id="4496" class="Symbol">:</a> <a id="4498" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a> <a id="4502" href="Relation.Binary.Definitions.html#5663" class="Function Operator">Respects₂</a> <a id="4512" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="4519" class="Keyword">module</a> <a id="IsStrictPartialOrder.Eq"></a><a id="4526" href="Relation.Binary.Structures.html#4526" class="Module">Eq</a> <a id="4529" class="Symbol">=</a> <a id="4531" href="Relation.Binary.Structures.html#1550" class="Module">IsEquivalence</a> <a id="4545" href="Relation.Binary.Structures.html#4373" class="Field">isEquivalence</a>
<a id="IsStrictPartialOrder.asym"></a><a id="4562" href="Relation.Binary.Structures.html#4562" class="Function">asym</a> <a id="4567" class="Symbol">:</a> <a id="4569" href="Relation.Binary.Definitions.html#2590" class="Function">Asymmetric</a> <a id="4580" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a>
<a id="4586" href="Relation.Binary.Structures.html#4562" class="Function">asym</a> <a id="4591" class="Symbol">{</a><a id="4592" href="Relation.Binary.Structures.html#4592" class="Bound">x</a><a id="4593" class="Symbol">}</a> <a id="4595" class="Symbol">{</a><a id="4596" href="Relation.Binary.Structures.html#4596" class="Bound">y</a><a id="4597" class="Symbol">}</a> <a id="4599" class="Symbol">=</a> <a id="4601" href="Relation.Binary.Consequences.html#4018" class="Function">trans∧irr⇒asym</a> <a id="4616" href="Relation.Binary.Structures.html#1596" class="Function">Eq.refl</a> <a id="4624" href="Relation.Binary.Structures.html#4447" class="Field">trans</a> <a id="4630" href="Relation.Binary.Structures.html#4407" class="Field">irrefl</a> <a id="4637" class="Symbol">{</a><a id="4638" class="Argument">x</a> <a id="4640" class="Symbol">=</a> <a id="4642" href="Relation.Binary.Structures.html#4592" class="Bound">x</a><a id="4643" class="Symbol">}</a> <a id="4645" class="Symbol">{</a><a id="4646" href="Relation.Binary.Structures.html#4596" class="Bound">y</a><a id="4647" class="Symbol">}</a>
<a id="IsStrictPartialOrder.&lt;-respʳ-≈"></a><a id="4652" href="Relation.Binary.Structures.html#4652" class="Function">&lt;-respʳ-≈</a> <a id="4662" class="Symbol">:</a> <a id="4664" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a> <a id="4668" href="Relation.Binary.Definitions.html#5335" class="Function Operator">Respectsʳ</a> <a id="4678" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="4684" href="Relation.Binary.Structures.html#4652" class="Function">&lt;-respʳ-≈</a> <a id="4694" class="Symbol">=</a> <a id="4696" href="Data.Product.Base.html#636" class="Field">proj₁</a> <a id="4702" href="Relation.Binary.Structures.html#4482" class="Field">&lt;-resp-≈</a>
<a id="IsStrictPartialOrder.&lt;-respˡ-≈"></a><a id="4714" href="Relation.Binary.Structures.html#4714" class="Function">&lt;-respˡ-≈</a> <a id="4724" class="Symbol">:</a> <a id="4726" href="Relation.Binary.Structures.html#4320" class="Bound Operator">_&lt;_</a> <a id="4730" href="Relation.Binary.Definitions.html#5500" class="Function Operator">Respectsˡ</a> <a id="4740" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="4746" href="Relation.Binary.Structures.html#4714" class="Function">&lt;-respˡ-≈</a> <a id="4756" class="Symbol">=</a> <a id="4758" href="Data.Product.Base.html#650" class="Field">proj₂</a> <a id="4764" href="Relation.Binary.Structures.html#4482" class="Field">&lt;-resp-≈</a>
<a id="4775" class="Keyword">record</a> <a id="IsDecStrictPartialOrder"></a><a id="4782" href="Relation.Binary.Structures.html#4782" class="Record">IsDecStrictPartialOrder</a> <a id="4806" class="Symbol">(</a><a id="4807" href="Relation.Binary.Structures.html#4807" class="Bound Operator">_&lt;_</a> <a id="4811" class="Symbol">:</a> <a id="4813" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="4817" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="4819" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="4821" class="Symbol">)</a> <a id="4823" class="Symbol">:</a> <a id="4825" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="4829" class="Symbol">(</a><a id="4830" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="4832" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4834" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="4836" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="4838" href="Relation.Binary.Structures.html#4819" class="Bound">ℓ₂</a><a id="4840" class="Symbol">)</a> <a id="4842" class="Keyword">where</a>
<a id="4850" class="Keyword">infix</a> <a id="4856" class="Number">4</a> <a id="4858" href="Relation.Binary.Structures.html#4931" class="Field Operator">_≟_</a> <a id="4862" href="Relation.Binary.Structures.html#4972" class="Field Operator">_&lt;?_</a>
<a id="4869" class="Keyword">field</a>
<a id="IsDecStrictPartialOrder.isStrictPartialOrder"></a><a id="4879" href="Relation.Binary.Structures.html#4879" class="Field">isStrictPartialOrder</a> <a id="4900" class="Symbol">:</a> <a id="4902" href="Relation.Binary.Structures.html#4298" class="Record">IsStrictPartialOrder</a> <a id="4923" href="Relation.Binary.Structures.html#4807" class="Bound Operator">_&lt;_</a>
<a id="IsDecStrictPartialOrder._≟_"></a><a id="4931" href="Relation.Binary.Structures.html#4931" class="Field Operator">_≟_</a> <a id="4952" class="Symbol">:</a> <a id="4954" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="4964" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsDecStrictPartialOrder._&lt;?_"></a><a id="4972" href="Relation.Binary.Structures.html#4972" class="Field Operator">_&lt;?_</a> <a id="4993" class="Symbol">:</a> <a id="4995" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="5005" href="Relation.Binary.Structures.html#4807" class="Bound Operator">_&lt;_</a>
<a id="5012" class="Keyword">private</a>
<a id="5024" class="Keyword">module</a> <a id="IsDecStrictPartialOrder.SPO"></a><a id="5031" href="Relation.Binary.Structures.html#5031" class="Module">SPO</a> <a id="5035" class="Symbol">=</a> <a id="5037" href="Relation.Binary.Structures.html#4298" class="Module">IsStrictPartialOrder</a> <a id="5058" href="Relation.Binary.Structures.html#4879" class="Field">isStrictPartialOrder</a>
<a id="5082" class="Keyword">open</a> <a id="5087" href="Relation.Binary.Structures.html#5031" class="Module">SPO</a> <a id="5091" class="Keyword">public</a> <a id="5098" class="Keyword">hiding</a> <a id="5105" class="Symbol">(</a><a id="5106" class="Keyword">module</a> <a id="5113" href="Relation.Binary.Structures.html#4526" class="Module">Eq</a><a id="5115" class="Symbol">)</a>
<a id="5120" class="Keyword">module</a> <a id="IsDecStrictPartialOrder.Eq"></a><a id="5127" href="Relation.Binary.Structures.html#5127" class="Module">Eq</a> <a id="5130" class="Keyword">where</a>
<a id="IsDecStrictPartialOrder.Eq.isDecEquivalence"></a><a id="5141" href="Relation.Binary.Structures.html#5141" class="Function">isDecEquivalence</a> <a id="5158" class="Symbol">:</a> <a id="5160" href="Relation.Binary.Structures.html#1852" class="Record">IsDecEquivalence</a>
<a id="5181" href="Relation.Binary.Structures.html#5141" class="Function">isDecEquivalence</a> <a id="5198" class="Symbol">=</a> <a id="5200" class="Keyword">record</a>
<a id="5213" class="Symbol">{</a> <a id="5215" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="5229" class="Symbol">=</a> <a id="5231" href="Relation.Binary.Structures.html#4373" class="Function">SPO.isEquivalence</a>
<a id="5255" class="Symbol">;</a> <a id="5257" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a> <a id="5271" class="Symbol">=</a> <a id="5273" href="Relation.Binary.Structures.html#4931" class="Field Operator">_≟_</a>
<a id="5283" class="Symbol">}</a>
<a id="5290" class="Keyword">open</a> <a id="5295" href="Relation.Binary.Structures.html#1852" class="Module">IsDecEquivalence</a> <a id="5312" href="Relation.Binary.Structures.html#5141" class="Function">isDecEquivalence</a> <a id="5329" class="Keyword">public</a>
<a id="5338" class="Comment">------------------------------------------------------------------------</a>
<a id="5411" class="Comment">-- Total orders</a>
<a id="5427" class="Comment">------------------------------------------------------------------------</a>
<a id="5501" class="Keyword">record</a> <a id="IsTotalOrder"></a><a id="5508" href="Relation.Binary.Structures.html#5508" class="Record">IsTotalOrder</a> <a id="5521" class="Symbol">(</a><a id="5522" href="Relation.Binary.Structures.html#5522" class="Bound Operator">_≤_</a> <a id="5526" class="Symbol">:</a> <a id="5528" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="5532" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="5534" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="5536" class="Symbol">)</a> <a id="5538" class="Symbol">:</a> <a id="5540" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="5544" class="Symbol">(</a><a id="5545" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="5547" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5549" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="5551" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5553" href="Relation.Binary.Structures.html#5534" class="Bound">ℓ₂</a><a id="5555" class="Symbol">)</a> <a id="5557" class="Keyword">where</a>
<a id="5565" class="Keyword">field</a>
<a id="IsTotalOrder.isPartialOrder"></a><a id="5575" href="Relation.Binary.Structures.html#5575" class="Field">isPartialOrder</a> <a id="5590" class="Symbol">:</a> <a id="5592" href="Relation.Binary.Structures.html#3522" class="Record">IsPartialOrder</a> <a id="5607" href="Relation.Binary.Structures.html#5522" class="Bound Operator">_≤_</a>
<a id="IsTotalOrder.total"></a><a id="5615" href="Relation.Binary.Structures.html#5615" class="Field">total</a> <a id="5630" class="Symbol">:</a> <a id="5632" href="Relation.Binary.Definitions.html#2910" class="Function">Total</a> <a id="5638" href="Relation.Binary.Structures.html#5522" class="Bound Operator">_≤_</a>
<a id="5645" class="Keyword">open</a> <a id="5650" href="Relation.Binary.Structures.html#3522" class="Module">IsPartialOrder</a> <a id="5665" href="Relation.Binary.Structures.html#5575" class="Field">isPartialOrder</a> <a id="5680" class="Keyword">public</a>
<a id="IsTotalOrder.isTotalPreorder"></a><a id="5690" href="Relation.Binary.Structures.html#5690" class="Function">isTotalPreorder</a> <a id="5706" class="Symbol">:</a> <a id="5708" href="Relation.Binary.Structures.html#3186" class="Record">IsTotalPreorder</a> <a id="5724" href="Relation.Binary.Structures.html#5522" class="Bound Operator">_≤_</a>
<a id="5730" href="Relation.Binary.Structures.html#5690" class="Function">isTotalPreorder</a> <a id="5746" class="Symbol">=</a> <a id="5748" class="Keyword">record</a>
<a id="5759" class="Symbol">{</a> <a id="5761" href="Relation.Binary.Structures.html#3256" class="Field">isPreorder</a> <a id="5772" class="Symbol">=</a> <a id="5774" href="Relation.Binary.Structures.html#3591" class="Function">isPreorder</a>
<a id="5789" class="Symbol">;</a> <a id="5791" href="Relation.Binary.Structures.html#3288" class="Field">total</a> <a id="5802" class="Symbol">=</a> <a id="5804" href="Relation.Binary.Structures.html#5615" class="Field">total</a>
<a id="5814" class="Symbol">}</a>
<a id="5818" class="Keyword">record</a> <a id="IsDecTotalOrder"></a><a id="5825" href="Relation.Binary.Structures.html#5825" class="Record">IsDecTotalOrder</a> <a id="5841" class="Symbol">(</a><a id="5842" href="Relation.Binary.Structures.html#5842" class="Bound Operator">_≤_</a> <a id="5846" class="Symbol">:</a> <a id="5848" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="5852" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="5854" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="5856" class="Symbol">)</a> <a id="5858" class="Symbol">:</a> <a id="5860" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="5864" class="Symbol">(</a><a id="5865" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="5867" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5869" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="5871" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="5873" href="Relation.Binary.Structures.html#5854" class="Bound">ℓ₂</a><a id="5875" class="Symbol">)</a> <a id="5877" class="Keyword">where</a>
<a id="5885" class="Keyword">infix</a> <a id="5891" class="Number">4</a> <a id="5893" href="Relation.Binary.Structures.html#5950" class="Field Operator">_≟_</a> <a id="5897" href="Relation.Binary.Structures.html#5983" class="Field Operator">_≤?_</a>
<a id="5904" class="Keyword">field</a>
<a id="IsDecTotalOrder.isTotalOrder"></a><a id="5914" href="Relation.Binary.Structures.html#5914" class="Field">isTotalOrder</a> <a id="5927" class="Symbol">:</a> <a id="5929" href="Relation.Binary.Structures.html#5508" class="Record">IsTotalOrder</a> <a id="5942" href="Relation.Binary.Structures.html#5842" class="Bound Operator">_≤_</a>
<a id="IsDecTotalOrder._≟_"></a><a id="5950" href="Relation.Binary.Structures.html#5950" class="Field Operator">_≟_</a> <a id="5963" class="Symbol">:</a> <a id="5965" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="5975" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="IsDecTotalOrder._≤?_"></a><a id="5983" href="Relation.Binary.Structures.html#5983" class="Field Operator">_≤?_</a> <a id="5996" class="Symbol">:</a> <a id="5998" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="6008" href="Relation.Binary.Structures.html#5842" class="Bound Operator">_≤_</a>
<a id="6015" class="Keyword">open</a> <a id="6020" href="Relation.Binary.Structures.html#5508" class="Module">IsTotalOrder</a> <a id="6033" href="Relation.Binary.Structures.html#5914" class="Field">isTotalOrder</a> <a id="6046" class="Keyword">public</a>
<a id="6057" class="Keyword">hiding</a> <a id="6064" class="Symbol">(</a><a id="6065" class="Keyword">module</a> <a id="6072" href="Relation.Binary.Structures.html#2430" class="Module">Eq</a><a id="6074" class="Symbol">)</a>
<a id="IsDecTotalOrder.isDecPartialOrder"></a><a id="6079" href="Relation.Binary.Structures.html#6079" class="Function">isDecPartialOrder</a> <a id="6097" class="Symbol">:</a> <a id="6099" href="Relation.Binary.Structures.html#3809" class="Record">IsDecPartialOrder</a> <a id="6117" href="Relation.Binary.Structures.html#5842" class="Bound Operator">_≤_</a>
<a id="6123" href="Relation.Binary.Structures.html#6079" class="Function">isDecPartialOrder</a> <a id="6141" class="Symbol">=</a> <a id="6143" class="Keyword">record</a>
<a id="6154" class="Symbol">{</a> <a id="6156" href="Relation.Binary.Structures.html#3900" class="Field">isPartialOrder</a> <a id="6171" class="Symbol">=</a> <a id="6173" href="Relation.Binary.Structures.html#5575" class="Function">isPartialOrder</a>
<a id="6192" class="Symbol">;</a> <a id="6194" href="Relation.Binary.Structures.html#3940" class="Field Operator">_≟_</a> <a id="6209" class="Symbol">=</a> <a id="6211" href="Relation.Binary.Structures.html#5950" class="Field Operator">_≟_</a>
<a id="6219" class="Symbol">;</a> <a id="6221" href="Relation.Binary.Structures.html#3975" class="Field Operator">_≤?_</a> <a id="6236" class="Symbol">=</a> <a id="6238" href="Relation.Binary.Structures.html#5983" class="Field Operator">_≤?_</a>
<a id="6247" class="Symbol">}</a>
<a id="6252" class="Keyword">module</a> <a id="IsDecTotalOrder.Eq"></a><a id="6259" href="Relation.Binary.Structures.html#6259" class="Module">Eq</a> <a id="6262" class="Keyword">where</a>
<a id="IsDecTotalOrder.Eq.isDecEquivalence"></a><a id="6273" href="Relation.Binary.Structures.html#6273" class="Function">isDecEquivalence</a> <a id="6290" class="Symbol">:</a> <a id="6292" href="Relation.Binary.Structures.html#1852" class="Record">IsDecEquivalence</a>
<a id="6313" href="Relation.Binary.Structures.html#6273" class="Function">isDecEquivalence</a> <a id="6330" class="Symbol">=</a> <a id="6332" class="Keyword">record</a>
<a id="6345" class="Symbol">{</a> <a id="6347" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="6361" class="Symbol">=</a> <a id="6363" href="Relation.Binary.Structures.html#2256" class="Function">isEquivalence</a>
<a id="6383" class="Symbol">;</a> <a id="6385" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a> <a id="6399" class="Symbol">=</a> <a id="6401" href="Relation.Binary.Structures.html#5950" class="Field Operator">_≟_</a>
<a id="6411" class="Symbol">}</a>
<a id="6418" class="Keyword">open</a> <a id="6423" href="Relation.Binary.Structures.html#1852" class="Module">IsDecEquivalence</a> <a id="6440" href="Relation.Binary.Structures.html#6273" class="Function">isDecEquivalence</a> <a id="6457" class="Keyword">public</a>
<a id="6466" class="Comment">-- Note that these orders are decidable. The current implementation</a>
<a id="6534" class="Comment">-- of `Trichotomous` subsumes irreflexivity and asymmetry. See</a>
<a id="6597" class="Comment">-- `Relation.Binary.Structures.Biased` for ways of constructing this</a>
<a id="6666" class="Comment">-- record without having to prove `isStrictPartialOrder`.</a>
<a id="6725" class="Keyword">record</a> <a id="IsStrictTotalOrder"></a><a id="6732" href="Relation.Binary.Structures.html#6732" class="Record">IsStrictTotalOrder</a> <a id="6751" class="Symbol">(</a><a id="6752" href="Relation.Binary.Structures.html#6752" class="Bound Operator">_&lt;_</a> <a id="6756" class="Symbol">:</a> <a id="6758" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="6762" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="6764" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="6766" class="Symbol">)</a> <a id="6768" class="Symbol">:</a> <a id="6770" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="6774" class="Symbol">(</a><a id="6775" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="6777" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="6779" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="6781" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="6783" href="Relation.Binary.Structures.html#6764" class="Bound">ℓ₂</a><a id="6785" class="Symbol">)</a> <a id="6787" class="Keyword">where</a>
<a id="6795" class="Keyword">field</a>
<a id="IsStrictTotalOrder.isStrictPartialOrder"></a><a id="6805" href="Relation.Binary.Structures.html#6805" class="Field">isStrictPartialOrder</a> <a id="6826" class="Symbol">:</a> <a id="6828" href="Relation.Binary.Structures.html#4298" class="Record">IsStrictPartialOrder</a> <a id="6849" href="Relation.Binary.Structures.html#6752" class="Bound Operator">_&lt;_</a>
<a id="IsStrictTotalOrder.compare"></a><a id="6857" href="Relation.Binary.Structures.html#6857" class="Field">compare</a> <a id="6878" class="Symbol">:</a> <a id="6880" href="Relation.Binary.Definitions.html#3281" class="Function">Trichotomous</a> <a id="6893" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a> <a id="6897" href="Relation.Binary.Structures.html#6752" class="Bound Operator">_&lt;_</a>
<a id="6904" class="Keyword">open</a> <a id="6909" href="Relation.Binary.Structures.html#4298" class="Module">IsStrictPartialOrder</a> <a id="6930" href="Relation.Binary.Structures.html#6805" class="Field">isStrictPartialOrder</a> <a id="6951" class="Keyword">public</a>
<a id="6962" class="Keyword">hiding</a> <a id="6969" class="Symbol">(</a><a id="6970" class="Keyword">module</a> <a id="6977" href="Relation.Binary.Structures.html#4526" class="Module">Eq</a><a id="6979" class="Symbol">)</a>
<a id="6984" class="Comment">-- `Trichotomous` necessarily separates out the equality case so</a>
<a id="7051" class="Comment">-- it implies decidability.</a>
<a id="7082" class="Keyword">infix</a> <a id="7088" class="Number">4</a> <a id="7090" href="Relation.Binary.Structures.html#7102" class="Function Operator">_≟_</a> <a id="7094" href="Relation.Binary.Structures.html#7150" class="Function Operator">_&lt;?_</a>
<a id="IsStrictTotalOrder._≟_"></a><a id="7102" href="Relation.Binary.Structures.html#7102" class="Function Operator">_≟_</a> <a id="7106" class="Symbol">:</a> <a id="7108" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="7118" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a>
<a id="7124" href="Relation.Binary.Structures.html#7102" class="Function Operator">_≟_</a> <a id="7128" class="Symbol">=</a> <a id="7130" href="Relation.Binary.Consequences.html#5102" class="Function">tri⇒dec≈</a> <a id="7139" href="Relation.Binary.Structures.html#6857" class="Field">compare</a>
<a id="IsStrictTotalOrder._&lt;?_"></a><a id="7150" href="Relation.Binary.Structures.html#7150" class="Function Operator">_&lt;?_</a> <a id="7155" class="Symbol">:</a> <a id="7157" href="Relation.Binary.Definitions.html#6161" class="Function">Decidable</a> <a id="7167" href="Relation.Binary.Structures.html#6752" class="Bound Operator">_&lt;_</a>
<a id="7173" href="Relation.Binary.Structures.html#7150" class="Function Operator">_&lt;?_</a> <a id="7178" class="Symbol">=</a> <a id="7180" href="Relation.Binary.Consequences.html#5286" class="Function">tri⇒dec&lt;</a> <a id="7189" href="Relation.Binary.Structures.html#6857" class="Field">compare</a>
<a id="IsStrictTotalOrder.isDecStrictPartialOrder"></a><a id="7200" href="Relation.Binary.Structures.html#7200" class="Function">isDecStrictPartialOrder</a> <a id="7224" class="Symbol">:</a> <a id="7226" href="Relation.Binary.Structures.html#4782" class="Record">IsDecStrictPartialOrder</a> <a id="7250" href="Relation.Binary.Structures.html#6752" class="Bound Operator">_&lt;_</a>
<a id="7256" href="Relation.Binary.Structures.html#7200" class="Function">isDecStrictPartialOrder</a> <a id="7280" class="Symbol">=</a> <a id="7282" class="Keyword">record</a>
<a id="7293" class="Symbol">{</a> <a id="7295" href="Relation.Binary.Structures.html#4879" class="Field">isStrictPartialOrder</a> <a id="7316" class="Symbol">=</a> <a id="7318" href="Relation.Binary.Structures.html#6805" class="Field">isStrictPartialOrder</a>
<a id="7343" class="Symbol">;</a> <a id="7345" href="Relation.Binary.Structures.html#4931" class="Field Operator">_≟_</a> <a id="7366" class="Symbol">=</a> <a id="7368" href="Relation.Binary.Structures.html#7102" class="Function Operator">_≟_</a>
<a id="7376" class="Symbol">;</a> <a id="7378" href="Relation.Binary.Structures.html#4972" class="Field Operator">_&lt;?_</a> <a id="7399" class="Symbol">=</a> <a id="7401" href="Relation.Binary.Structures.html#7150" class="Function Operator">_&lt;?_</a>
<a id="7410" class="Symbol">}</a>
<a id="7415" class="Comment">-- Redefine the `Eq` module to include decidability proofs</a>
<a id="7476" class="Keyword">module</a> <a id="IsStrictTotalOrder.Eq"></a><a id="7483" href="Relation.Binary.Structures.html#7483" class="Module">Eq</a> <a id="7486" class="Keyword">where</a>
<a id="IsStrictTotalOrder.Eq.isDecEquivalence"></a><a id="7497" href="Relation.Binary.Structures.html#7497" class="Function">isDecEquivalence</a> <a id="7514" class="Symbol">:</a> <a id="7516" href="Relation.Binary.Structures.html#1852" class="Record">IsDecEquivalence</a>
<a id="7537" href="Relation.Binary.Structures.html#7497" class="Function">isDecEquivalence</a> <a id="7554" class="Symbol">=</a> <a id="7556" class="Keyword">record</a>
<a id="7569" class="Symbol">{</a> <a id="7571" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="7585" class="Symbol">=</a> <a id="7587" href="Relation.Binary.Structures.html#4373" class="Function">isEquivalence</a>
<a id="7607" class="Symbol">;</a> <a id="7609" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a> <a id="7623" class="Symbol">=</a> <a id="7625" href="Relation.Binary.Structures.html#7102" class="Function Operator">_≟_</a>
<a id="7635" class="Symbol">}</a>
<a id="7642" class="Keyword">open</a> <a id="7647" href="Relation.Binary.Structures.html#1852" class="Module">IsDecEquivalence</a> <a id="7664" href="Relation.Binary.Structures.html#7497" class="Function">isDecEquivalence</a> <a id="7681" class="Keyword">public</a>
<a id="IsStrictTotalOrder.isDecEquivalence"></a><a id="7691" href="Relation.Binary.Structures.html#7691" class="Function">isDecEquivalence</a> <a id="7708" class="Symbol">:</a> <a id="7710" href="Relation.Binary.Structures.html#1852" class="Record">IsDecEquivalence</a>
<a id="7729" href="Relation.Binary.Structures.html#7691" class="Function">isDecEquivalence</a> <a id="7746" class="Symbol">=</a> <a id="7748" class="Keyword">record</a>
<a id="7759" class="Symbol">{</a> <a id="7761" href="Relation.Binary.Structures.html#1915" class="Field">isEquivalence</a> <a id="7775" class="Symbol">=</a> <a id="7777" href="Relation.Binary.Structures.html#4373" class="Function">isEquivalence</a>
<a id="7795" class="Symbol">;</a> <a id="7797" href="Relation.Binary.Structures.html#1949" class="Field Operator">_≟_</a> <a id="7811" class="Symbol">=</a> <a id="7813" href="Relation.Binary.Structures.html#7102" class="Function Operator">_≟_</a>
<a id="7821" class="Symbol">}</a>
<a id="7825" class="Symbol">{-#</a> <a id="7829" class="Keyword">WARNING_ON_USAGE</a> <a id="7846" class="Pragma">isDecEquivalence</a>
<a id="7865" class="String">&quot;Warning: isDecEquivalence was deprecated in v2.0.
Please use Eq.isDecEquivalence instead. &quot;</a>
<a id="7962" class="Symbol">#-}</a>
<a id="7967" class="Keyword">record</a> <a id="IsDenseLinearOrder"></a><a id="7974" href="Relation.Binary.Structures.html#7974" class="Record">IsDenseLinearOrder</a> <a id="7993" class="Symbol">(</a><a id="7994" href="Relation.Binary.Structures.html#7994" class="Bound Operator">_&lt;_</a> <a id="7998" class="Symbol">:</a> <a id="8000" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="8004" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="8006" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="8008" class="Symbol">)</a> <a id="8010" class="Symbol">:</a> <a id="8012" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="8016" class="Symbol">(</a><a id="8017" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="8019" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8021" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="8023" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8025" href="Relation.Binary.Structures.html#8006" class="Bound">ℓ₂</a><a id="8027" class="Symbol">)</a> <a id="8029" class="Keyword">where</a>
<a id="8037" class="Keyword">field</a>
<a id="IsDenseLinearOrder.isStrictTotalOrder"></a><a id="8047" href="Relation.Binary.Structures.html#8047" class="Field">isStrictTotalOrder</a> <a id="8066" class="Symbol">:</a> <a id="8068" href="Relation.Binary.Structures.html#6732" class="Record">IsStrictTotalOrder</a> <a id="8087" href="Relation.Binary.Structures.html#7994" class="Bound Operator">_&lt;_</a>
<a id="IsDenseLinearOrder.dense"></a><a id="8095" href="Relation.Binary.Structures.html#8095" class="Field">dense</a> <a id="8114" class="Symbol">:</a> <a id="8116" href="Relation.Binary.Definitions.html#2677" class="Function">Dense</a> <a id="8122" href="Relation.Binary.Structures.html#7994" class="Bound Operator">_&lt;_</a>
<a id="8129" class="Keyword">open</a> <a id="8134" href="Relation.Binary.Structures.html#6732" class="Module">IsStrictTotalOrder</a> <a id="8153" href="Relation.Binary.Structures.html#8047" class="Field">isStrictTotalOrder</a> <a id="8172" class="Keyword">public</a>
<a id="8181" class="Comment">------------------------------------------------------------------------</a>
<a id="8254" class="Comment">-- Apartness relations</a>
<a id="8277" class="Comment">------------------------------------------------------------------------</a>
<a id="8351" class="Keyword">record</a> <a id="IsApartnessRelation"></a><a id="8358" href="Relation.Binary.Structures.html#8358" class="Record">IsApartnessRelation</a> <a id="8378" class="Symbol">(</a><a id="8379" href="Relation.Binary.Structures.html#8379" class="Bound Operator">_#_</a> <a id="8383" class="Symbol">:</a> <a id="8385" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="8389" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="8391" href="Relation.Binary.Structures.html#845" class="Generalizable">ℓ₂</a><a id="8393" class="Symbol">)</a> <a id="8395" class="Symbol">:</a> <a id="8397" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="8401" class="Symbol">(</a><a id="8402" href="Relation.Binary.Structures.html#417" class="Bound">a</a> <a id="8404" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8406" href="Relation.Binary.Structures.html#419" class="Bound"></a> <a id="8408" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="8410" href="Relation.Binary.Structures.html#8391" class="Bound">ℓ₂</a><a id="8412" class="Symbol">)</a> <a id="8414" class="Keyword">where</a>
<a id="8422" class="Keyword">field</a>
<a id="IsApartnessRelation.irrefl"></a><a id="8432" href="Relation.Binary.Structures.html#8432" class="Field">irrefl</a> <a id="8440" class="Symbol">:</a> <a id="8442" href="Relation.Binary.Definitions.html#2478" class="Function">Irreflexive</a> <a id="8454" href="Relation.Binary.Structures.html#459" class="Bound Operator">_≈_</a> <a id="8458" href="Relation.Binary.Structures.html#8379" class="Bound Operator">_#_</a>
<a id="IsApartnessRelation.sym"></a><a id="8466" href="Relation.Binary.Structures.html#8466" class="Field">sym</a> <a id="8474" class="Symbol">:</a> <a id="8476" href="Relation.Binary.Definitions.html#1587" class="Function">Symmetric</a> <a id="8486" href="Relation.Binary.Structures.html#8379" class="Bound Operator">_#_</a>
<a id="IsApartnessRelation.cotrans"></a><a id="8494" href="Relation.Binary.Structures.html#8494" class="Field">cotrans</a> <a id="8502" class="Symbol">:</a> <a id="8504" href="Relation.Binary.Definitions.html#3829" class="Function">Cotransitive</a> <a id="8517" href="Relation.Binary.Structures.html#8379" class="Bound Operator">_#_</a>
<a id="IsApartnessRelation._¬#_"></a><a id="8524" href="Relation.Binary.Structures.html#8524" class="Function Operator">_¬#_</a> <a id="8529" class="Symbol">:</a> <a id="8531" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="8533" class="Symbol"></a> <a id="8535" href="Relation.Binary.Structures.html#423" class="Bound">A</a> <a id="8537" class="Symbol"></a> <a id="8539" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="8543" class="Symbol">_</a>
<a id="8547" href="Relation.Binary.Structures.html#8547" class="Bound">x</a> <a id="8549" href="Relation.Binary.Structures.html#8524" class="Function Operator">¬#</a> <a id="8552" href="Relation.Binary.Structures.html#8552" class="Bound">y</a> <a id="8554" class="Symbol">=</a> <a id="8556" href="Relation.Nullary.Negation.Core.html#698" class="Function Operator">¬</a> <a id="8558" class="Symbol">(</a><a id="8559" href="Relation.Binary.Structures.html#8547" class="Bound">x</a> <a id="8561" href="Relation.Binary.Structures.html#8379" class="Bound Operator">#</a> <a id="8563" href="Relation.Binary.Structures.html#8552" class="Bound">y</a><a id="8564" class="Symbol">)</a>
</pre></body></html>