mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
153 lines
69 KiB
HTML
153 lines
69 KiB
HTML
|
<!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="Relation.Binary.html" class="Module">Relation.Binary</a>
|
|||
|
|
|||
|
<a id="500" class="Keyword">module</a> <a id="507" href="Relation.Binary.Reasoning.Base.Triple.html" class="Module">Relation.Binary.Reasoning.Base.Triple</a> <a id="545" class="Symbol">{</a><a id="546" href="Relation.Binary.Reasoning.Base.Triple.html#546" class="Bound">a</a> <a id="548" href="Relation.Binary.Reasoning.Base.Triple.html#548" class="Bound">ℓ₁</a> <a id="551" href="Relation.Binary.Reasoning.Base.Triple.html#551" class="Bound">ℓ₂</a> <a id="554" href="Relation.Binary.Reasoning.Base.Triple.html#554" class="Bound">ℓ₃</a><a id="556" class="Symbol">}</a> <a id="558" class="Symbol">{</a><a id="559" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a> <a id="561" class="Symbol">:</a> <a id="563" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="567" href="Relation.Binary.Reasoning.Base.Triple.html#546" class="Bound">a</a><a id="568" class="Symbol">}</a>
|
|||
|
<a id="572" class="Symbol">{</a><a id="573" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">_≈_</a> <a id="577" class="Symbol">:</a> <a id="579" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="583" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a> <a id="585" href="Relation.Binary.Reasoning.Base.Triple.html#548" class="Bound">ℓ₁</a><a id="587" class="Symbol">}</a> <a id="589" class="Symbol">{</a><a id="590" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">_≤_</a> <a id="594" class="Symbol">:</a> <a id="596" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="600" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a> <a id="602" href="Relation.Binary.Reasoning.Base.Triple.html#551" class="Bound">ℓ₂</a><a id="604" class="Symbol">}</a> <a id="606" class="Symbol">{</a><a id="607" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a> <a id="611" class="Symbol">:</a> <a id="613" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="617" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a> <a id="619" href="Relation.Binary.Reasoning.Base.Triple.html#554" class="Bound">ℓ₃</a><a id="621" class="Symbol">}</a>
|
|||
|
<a id="625" class="Symbol">(</a><a id="626" href="Relation.Binary.Reasoning.Base.Triple.html#626" class="Bound">isPreorder</a> <a id="637" class="Symbol">:</a> <a id="639" href="Relation.Binary.Structures.html#2172" class="Record">IsPreorder</a> <a id="650" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">_≈_</a> <a id="654" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">_≤_</a><a id="657" class="Symbol">)</a>
|
|||
|
<a id="661" class="Symbol">(</a><a id="662" href="Relation.Binary.Reasoning.Base.Triple.html#662" class="Bound"><-trans</a> <a id="670" class="Symbol">:</a> <a id="672" href="Relation.Binary.Definitions.html#1875" class="Function">Transitive</a> <a id="683" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a><a id="686" class="Symbol">)</a> <a id="688" class="Symbol">(</a><a id="689" href="Relation.Binary.Reasoning.Base.Triple.html#689" class="Bound"><-resp-≈</a> <a id="698" class="Symbol">:</a> <a id="700" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a> <a id="704" href="Relation.Binary.Definitions.html#4086" class="Function Operator">Respects₂</a> <a id="714" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">_≈_</a><a id="717" class="Symbol">)</a> <a id="719" class="Symbol">(</a><a id="720" href="Relation.Binary.Reasoning.Base.Triple.html#720" class="Bound"><⇒≤</a> <a id="724" class="Symbol">:</a> <a id="726" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a> <a id="730" href="Relation.Binary.Core.html#1263" class="Function Operator">⇒</a> <a id="732" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">_≤_</a><a id="735" class="Symbol">)</a>
|
|||
|
<a id="739" class="Symbol">(</a><a id="740" href="Relation.Binary.Reasoning.Base.Triple.html#740" class="Bound"><-≤-trans</a> <a id="750" class="Symbol">:</a> <a id="752" href="Relation.Binary.Definitions.html#1594" class="Function">Trans</a> <a id="758" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a> <a id="762" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">_≤_</a> <a id="766" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a><a id="769" class="Symbol">)</a> <a id="771" class="Symbol">(</a><a id="772" href="Relation.Binary.Reasoning.Base.Triple.html#772" class="Bound">≤-<-trans</a> <a id="782" class="Symbol">:</a> <a id="784" href="Relation.Binary.Definitions.html#1594" class="Function">Trans</a> <a id="790" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">_≤_</a> <a id="794" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a> <a id="798" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator">_<_</a><a id="801" class="Symbol">)</a>
|
|||
|
<a id="805" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="812" class="Keyword">open</a> <a id="817" class="Keyword">import</a> <a id="824" href="Data.Product.html" class="Module">Data.Product</a> <a id="837" class="Keyword">using</a> <a id="843" class="Symbol">(</a><a id="844" href="Agda.Builtin.Sigma.html#234" class="Field">proj₁</a><a id="849" class="Symbol">;</a> <a id="851" href="Agda.Builtin.Sigma.html#246" class="Field">proj₂</a><a id="856" class="Symbol">)</a>
|
|||
|
<a id="858" class="Keyword">open</a> <a id="863" class="Keyword">import</a> <a id="870" href="Function.Base.html" class="Module">Function.Base</a> <a id="884" class="Keyword">using</a> <a id="890" class="Symbol">(</a><a id="891" href="Function.Base.html#4130" class="Function Operator">case_of_</a><a id="899" class="Symbol">;</a> <a id="901" href="Function.Base.html#624" class="Function">id</a><a id="903" class="Symbol">)</a>
|
|||
|
<a id="905" class="Keyword">open</a> <a id="910" class="Keyword">import</a> <a id="917" href="Level.html" class="Module">Level</a> <a id="923" class="Keyword">using</a> <a id="929" class="Symbol">(</a><a id="930" href="Agda.Primitive.html#591" class="Postulate">Level</a><a id="935" class="Symbol">;</a> <a id="937" href="Agda.Primitive.html#804" class="Primitive Operator">_⊔_</a><a id="940" class="Symbol">;</a> <a id="942" href="Level.html#409" class="Record">Lift</a><a id="946" class="Symbol">;</a> <a id="948" href="Level.html#466" class="InductiveConstructor">lift</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.PropositionalEquality.Core.html" class="Module">Relation.Binary.PropositionalEquality.Core</a>
|
|||
|
<a id="1011" class="Keyword">using</a> <a id="1017" class="Symbol">(</a><a id="1018" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">_≡_</a><a id="1021" class="Symbol">;</a> <a id="1023" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a><a id="1027" class="Symbol">;</a> <a id="1029" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a><a id="1032" class="Symbol">)</a>
|
|||
|
<a id="1034" class="Keyword">open</a> <a id="1039" class="Keyword">import</a> <a id="1046" href="Relation.Nullary.html" class="Module">Relation.Nullary</a> <a id="1063" class="Keyword">using</a> <a id="1069" class="Symbol">(</a><a id="1070" href="Relation.Nullary.html#1520" class="Record">Dec</a><a id="1073" class="Symbol">;</a> <a id="1075" href="Relation.Nullary.html#1657" class="InductiveConstructor">yes</a><a id="1078" class="Symbol">;</a> <a id="1080" href="Relation.Nullary.html#1694" class="InductiveConstructor">no</a><a id="1082" class="Symbol">)</a>
|
|||
|
<a id="1084" class="Keyword">open</a> <a id="1089" class="Keyword">import</a> <a id="1096" href="Relation.Nullary.Decidable.html" class="Module">Relation.Nullary.Decidable</a> <a id="1123" class="Keyword">using</a> <a id="1129" class="Symbol">(</a><a id="1130" href="Relation.Nullary.Decidable.Core.html#1374" class="Function">True</a><a id="1134" class="Symbol">;</a> <a id="1136" href="Relation.Nullary.Decidable.Core.html#1493" class="Function">toWitness</a><a id="1145" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="1148" class="Keyword">open</a> <a id="1153" href="Relation.Binary.Structures.html#2172" class="Module">IsPreorder</a> <a id="1164" href="Relation.Binary.Reasoning.Base.Triple.html#626" class="Bound">isPreorder</a>
|
|||
|
<a id="1177" class="Keyword">renaming</a>
|
|||
|
<a id="1188" class="Symbol">(</a> <a id="1190" href="Relation.Binary.Structures.html#2340" class="Field">reflexive</a> <a id="1200" class="Symbol">to</a> <a id="1203" class="Field">≤-reflexive</a>
|
|||
|
<a id="1217" class="Symbol">;</a> <a id="1219" href="Relation.Binary.Structures.html#2370" class="Field">trans</a> <a id="1229" class="Symbol">to</a> <a id="1232" class="Field">≤-trans</a>
|
|||
|
<a id="1242" class="Symbol">;</a> <a id="1244" href="Relation.Binary.Structures.html#2669" class="Function">∼-resp-≈</a> <a id="1254" class="Symbol">to</a> <a id="1257" class="Function">≤-resp-≈</a>
|
|||
|
<a id="1268" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="1271" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="1344" class="Comment">-- A datatype to abstract over the current relation</a>
|
|||
|
|
|||
|
<a id="1397" class="Keyword">infix</a> <a id="1403" class="Number">4</a> <a id="1405" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">_IsRelatedTo_</a>
|
|||
|
|
|||
|
<a id="1420" class="Keyword">data</a> <a id="_IsRelatedTo_"></a><a id="1425" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">_IsRelatedTo_</a> <a id="1439" class="Symbol">(</a><a id="1440" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1442" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a> <a id="1444" class="Symbol">:</a> <a id="1446" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a><a id="1447" class="Symbol">)</a> <a id="1449" class="Symbol">:</a> <a id="1451" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1455" class="Symbol">(</a><a id="1456" href="Relation.Binary.Reasoning.Base.Triple.html#546" class="Bound">a</a> <a id="1458" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1460" href="Relation.Binary.Reasoning.Base.Triple.html#548" class="Bound">ℓ₁</a> <a id="1463" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1465" href="Relation.Binary.Reasoning.Base.Triple.html#551" class="Bound">ℓ₂</a> <a id="1468" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1470" href="Relation.Binary.Reasoning.Base.Triple.html#554" class="Bound">ℓ₃</a><a id="1472" class="Symbol">)</a> <a id="1474" class="Keyword">where</a>
|
|||
|
<a id="_IsRelatedTo_.strict"></a><a id="1482" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="1492" class="Symbol">:</a> <a id="1494" class="Symbol">(</a><a id="1495" href="Relation.Binary.Reasoning.Base.Triple.html#1495" class="Bound">x<y</a> <a id="1499" class="Symbol">:</a> <a id="1501" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1503" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator"><</a> <a id="1505" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a><a id="1506" class="Symbol">)</a> <a id="1508" class="Symbol">→</a> <a id="1510" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1512" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="1524" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a>
|
|||
|
<a id="_IsRelatedTo_.nonstrict"></a><a id="1528" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="1538" class="Symbol">:</a> <a id="1540" class="Symbol">(</a><a id="1541" href="Relation.Binary.Reasoning.Base.Triple.html#1541" class="Bound">x≤y</a> <a id="1545" class="Symbol">:</a> <a id="1547" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1549" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">≤</a> <a id="1551" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a><a id="1552" class="Symbol">)</a> <a id="1554" class="Symbol">→</a> <a id="1556" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1558" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="1570" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a>
|
|||
|
<a id="_IsRelatedTo_.equals"></a><a id="1574" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="1584" class="Symbol">:</a> <a id="1586" class="Symbol">(</a><a id="1587" href="Relation.Binary.Reasoning.Base.Triple.html#1587" class="Bound">x≈y</a> <a id="1591" class="Symbol">:</a> <a id="1593" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1595" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">≈</a> <a id="1597" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a><a id="1598" class="Symbol">)</a> <a id="1600" class="Symbol">→</a> <a id="1602" href="Relation.Binary.Reasoning.Base.Triple.html#1440" class="Bound">x</a> <a id="1604" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="1616" href="Relation.Binary.Reasoning.Base.Triple.html#1442" class="Bound">y</a>
|
|||
|
|
|||
|
<a id="1619" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="1692" class="Comment">-- Types that are used to ensure that the final relation proved by the</a>
|
|||
|
<a id="1763" class="Comment">-- chain of reasoning can be converted into the required relation.</a>
|
|||
|
|
|||
|
<a id="1831" class="Keyword">data</a> <a id="IsStrict"></a><a id="1836" href="Relation.Binary.Reasoning.Base.Triple.html#1836" class="Datatype">IsStrict</a> <a id="1845" class="Symbol">{</a><a id="1846" href="Relation.Binary.Reasoning.Base.Triple.html#1846" class="Bound">x</a> <a id="1848" href="Relation.Binary.Reasoning.Base.Triple.html#1848" class="Bound">y</a><a id="1849" class="Symbol">}</a> <a id="1851" class="Symbol">:</a> <a id="1853" href="Relation.Binary.Reasoning.Base.Triple.html#1846" class="Bound">x</a> <a id="1855" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="1867" href="Relation.Binary.Reasoning.Base.Triple.html#1848" class="Bound">y</a> <a id="1869" class="Symbol">→</a> <a id="1871" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1875" class="Symbol">(</a><a id="1876" href="Relation.Binary.Reasoning.Base.Triple.html#546" class="Bound">a</a> <a id="1878" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1880" href="Relation.Binary.Reasoning.Base.Triple.html#548" class="Bound">ℓ₁</a> <a id="1883" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1885" href="Relation.Binary.Reasoning.Base.Triple.html#551" class="Bound">ℓ₂</a> <a id="1888" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1890" href="Relation.Binary.Reasoning.Base.Triple.html#554" class="Bound">ℓ₃</a><a id="1892" class="Symbol">)</a> <a id="1894" class="Keyword">where</a>
|
|||
|
<a id="IsStrict.isStrict"></a><a id="1902" href="Relation.Binary.Reasoning.Base.Triple.html#1902" class="InductiveConstructor">isStrict</a> <a id="1911" class="Symbol">:</a> <a id="1913" class="Symbol">∀</a> <a id="1915" href="Relation.Binary.Reasoning.Base.Triple.html#1915" class="Bound">x<y</a> <a id="1919" class="Symbol">→</a> <a id="1921" href="Relation.Binary.Reasoning.Base.Triple.html#1836" class="Datatype">IsStrict</a> <a id="1930" class="Symbol">(</a><a id="1931" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="1938" href="Relation.Binary.Reasoning.Base.Triple.html#1915" class="Bound">x<y</a><a id="1941" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="IsStrict?"></a><a id="1944" href="Relation.Binary.Reasoning.Base.Triple.html#1944" class="Function">IsStrict?</a> <a id="1954" class="Symbol">:</a> <a id="1956" class="Symbol">∀</a> <a id="1958" class="Symbol">{</a><a id="1959" href="Relation.Binary.Reasoning.Base.Triple.html#1959" class="Bound">x</a> <a id="1961" href="Relation.Binary.Reasoning.Base.Triple.html#1961" class="Bound">y</a><a id="1962" class="Symbol">}</a> <a id="1964" class="Symbol">(</a><a id="1965" href="Relation.Binary.Reasoning.Base.Triple.html#1965" class="Bound">x≲y</a> <a id="1969" class="Symbol">:</a> <a id="1971" href="Relation.Binary.Reasoning.Base.Triple.html#1959" class="Bound">x</a> <a id="1973" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="1985" href="Relation.Binary.Reasoning.Base.Triple.html#1961" class="Bound">y</a><a id="1986" class="Symbol">)</a> <a id="1988" class="Symbol">→</a> <a id="1990" href="Relation.Nullary.html#1520" class="Record">Dec</a> <a id="1994" class="Symbol">(</a><a id="1995" href="Relation.Binary.Reasoning.Base.Triple.html#1836" class="Datatype">IsStrict</a> <a id="2004" href="Relation.Binary.Reasoning.Base.Triple.html#1965" class="Bound">x≲y</a><a id="2007" class="Symbol">)</a>
|
|||
|
<a id="2009" href="Relation.Binary.Reasoning.Base.Triple.html#1944" class="Function">IsStrict?</a> <a id="2019" class="Symbol">(</a><a id="2020" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="2030" href="Relation.Binary.Reasoning.Base.Triple.html#2030" class="Bound">x<y</a><a id="2033" class="Symbol">)</a> <a id="2035" class="Symbol">=</a> <a id="2037" href="Relation.Nullary.html#1657" class="InductiveConstructor">yes</a> <a id="2041" class="Symbol">(</a><a id="2042" href="Relation.Binary.Reasoning.Base.Triple.html#1902" class="InductiveConstructor">isStrict</a> <a id="2051" href="Relation.Binary.Reasoning.Base.Triple.html#2030" class="Bound">x<y</a><a id="2054" class="Symbol">)</a>
|
|||
|
<a id="2056" href="Relation.Binary.Reasoning.Base.Triple.html#1944" class="Function">IsStrict?</a> <a id="2066" class="Symbol">(</a><a id="2067" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="2077" class="Symbol">_)</a> <a id="2082" class="Symbol">=</a> <a id="2084" href="Relation.Nullary.html#1694" class="InductiveConstructor">no</a> <a id="2087" class="Symbol">λ()</a>
|
|||
|
<a id="2091" href="Relation.Binary.Reasoning.Base.Triple.html#1944" class="Function">IsStrict?</a> <a id="2101" class="Symbol">(</a><a id="2102" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="2112" class="Symbol">_)</a> <a id="2117" class="Symbol">=</a> <a id="2119" href="Relation.Nullary.html#1694" class="InductiveConstructor">no</a> <a id="2122" class="Symbol">λ()</a>
|
|||
|
|
|||
|
<a id="extractStrict"></a><a id="2127" href="Relation.Binary.Reasoning.Base.Triple.html#2127" class="Function">extractStrict</a> <a id="2141" class="Symbol">:</a> <a id="2143" class="Symbol">∀</a> <a id="2145" class="Symbol">{</a><a id="2146" href="Relation.Binary.Reasoning.Base.Triple.html#2146" class="Bound">x</a> <a id="2148" href="Relation.Binary.Reasoning.Base.Triple.html#2148" class="Bound">y</a><a id="2149" class="Symbol">}</a> <a id="2151" class="Symbol">{</a><a id="2152" href="Relation.Binary.Reasoning.Base.Triple.html#2152" class="Bound">x≲y</a> <a id="2156" class="Symbol">:</a> <a id="2158" href="Relation.Binary.Reasoning.Base.Triple.html#2146" class="Bound">x</a> <a id="2160" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="2172" href="Relation.Binary.Reasoning.Base.Triple.html#2148" class="Bound">y</a><a id="2173" class="Symbol">}</a> <a id="2175" class="Symbol">→</a> <a id="2177" href="Relation.Binary.Reasoning.Base.Triple.html#1836" class="Datatype">IsStrict</a> <a id="2186" href="Relation.Binary.Reasoning.Base.Triple.html#2152" class="Bound">x≲y</a> <a id="2190" class="Symbol">→</a> <a id="2192" href="Relation.Binary.Reasoning.Base.Triple.html#2146" class="Bound">x</a> <a id="2194" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator"><</a> <a id="2196" href="Relation.Binary.Reasoning.Base.Triple.html#2148" class="Bound">y</a>
|
|||
|
<a id="2198" href="Relation.Binary.Reasoning.Base.Triple.html#2127" class="Function">extractStrict</a> <a id="2212" class="Symbol">(</a><a id="2213" href="Relation.Binary.Reasoning.Base.Triple.html#1902" class="InductiveConstructor">isStrict</a> <a id="2222" href="Relation.Binary.Reasoning.Base.Triple.html#2222" class="Bound">x<y</a><a id="2225" class="Symbol">)</a> <a id="2227" class="Symbol">=</a> <a id="2229" href="Relation.Binary.Reasoning.Base.Triple.html#2222" class="Bound">x<y</a>
|
|||
|
|
|||
|
<a id="2234" class="Keyword">data</a> <a id="IsEquality"></a><a id="2239" href="Relation.Binary.Reasoning.Base.Triple.html#2239" class="Datatype">IsEquality</a> <a id="2250" class="Symbol">{</a><a id="2251" href="Relation.Binary.Reasoning.Base.Triple.html#2251" class="Bound">x</a> <a id="2253" href="Relation.Binary.Reasoning.Base.Triple.html#2253" class="Bound">y</a><a id="2254" class="Symbol">}</a> <a id="2256" class="Symbol">:</a> <a id="2258" href="Relation.Binary.Reasoning.Base.Triple.html#2251" class="Bound">x</a> <a id="2260" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="2272" href="Relation.Binary.Reasoning.Base.Triple.html#2253" class="Bound">y</a> <a id="2274" class="Symbol">→</a> <a id="2276" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="2280" class="Symbol">(</a><a id="2281" href="Relation.Binary.Reasoning.Base.Triple.html#546" class="Bound">a</a> <a id="2283" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="2285" href="Relation.Binary.Reasoning.Base.Triple.html#548" class="Bound">ℓ₁</a> <a id="2288" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="2290" href="Relation.Binary.Reasoning.Base.Triple.html#551" class="Bound">ℓ₂</a> <a id="2293" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="2295" href="Relation.Binary.Reasoning.Base.Triple.html#554" class="Bound">ℓ₃</a><a id="2297" class="Symbol">)</a> <a id="2299" class="Keyword">where</a>
|
|||
|
<a id="IsEquality.isEquality"></a><a id="2307" href="Relation.Binary.Reasoning.Base.Triple.html#2307" class="InductiveConstructor">isEquality</a> <a id="2318" class="Symbol">:</a> <a id="2320" class="Symbol">∀</a> <a id="2322" href="Relation.Binary.Reasoning.Base.Triple.html#2322" class="Bound">x≈y</a> <a id="2326" class="Symbol">→</a> <a id="2328" href="Relation.Binary.Reasoning.Base.Triple.html#2239" class="Datatype">IsEquality</a> <a id="2339" class="Symbol">(</a><a id="2340" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="2347" href="Relation.Binary.Reasoning.Base.Triple.html#2322" class="Bound">x≈y</a><a id="2350" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="IsEquality?"></a><a id="2353" href="Relation.Binary.Reasoning.Base.Triple.html#2353" class="Function">IsEquality?</a> <a id="2365" class="Symbol">:</a> <a id="2367" class="Symbol">∀</a> <a id="2369" class="Symbol">{</a><a id="2370" href="Relation.Binary.Reasoning.Base.Triple.html#2370" class="Bound">x</a> <a id="2372" href="Relation.Binary.Reasoning.Base.Triple.html#2372" class="Bound">y</a><a id="2373" class="Symbol">}</a> <a id="2375" class="Symbol">(</a><a id="2376" href="Relation.Binary.Reasoning.Base.Triple.html#2376" class="Bound">x≲y</a> <a id="2380" class="Symbol">:</a> <a id="2382" href="Relation.Binary.Reasoning.Base.Triple.html#2370" class="Bound">x</a> <a id="2384" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="2396" href="Relation.Binary.Reasoning.Base.Triple.html#2372" class="Bound">y</a><a id="2397" class="Symbol">)</a> <a id="2399" class="Symbol">→</a> <a id="2401" href="Relation.Nullary.html#1520" class="Record">Dec</a> <a id="2405" class="Symbol">(</a><a id="2406" href="Relation.Binary.Reasoning.Base.Triple.html#2239" class="Datatype">IsEquality</a> <a id="2417" href="Relation.Binary.Reasoning.Base.Triple.html#2376" class="Bound">x≲y</a><a id="2420" class="Symbol">)</a>
|
|||
|
<a id="2422" href="Relation.Binary.Reasoning.Base.Triple.html#2353" class="Function">IsEquality?</a> <a id="2434" class="Symbol">(</a><a id="2435" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="2445" class="Symbol">_)</a> <a id="2448" class="Symbol">=</a> <a id="2450" href="Relation.Nullary.html#1694" class="InductiveConstructor">no</a> <a id="2453" class="Symbol">λ()</a>
|
|||
|
<a id="2457" href="Relation.Binary.Reasoning.Base.Triple.html#2353" class="Function">IsEquality?</a> <a id="2469" class="Symbol">(</a><a id="2470" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="2480" class="Symbol">_)</a> <a id="2483" class="Symbol">=</a> <a id="2485" href="Relation.Nullary.html#1694" class="InductiveConstructor">no</a> <a id="2488" class="Symbol">λ()</a>
|
|||
|
<a id="2492" href="Relation.Binary.Reasoning.Base.Triple.html#2353" class="Function">IsEquality?</a> <a id="2504" class="Symbol">(</a><a id="2505" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="2512" href="Relation.Binary.Reasoning.Base.Triple.html#2512" class="Bound">x≈y</a><a id="2515" class="Symbol">)</a> <a id="2518" class="Symbol">=</a> <a id="2520" href="Relation.Nullary.html#1657" class="InductiveConstructor">yes</a> <a id="2524" class="Symbol">(</a><a id="2525" href="Relation.Binary.Reasoning.Base.Triple.html#2307" class="InductiveConstructor">isEquality</a> <a id="2536" href="Relation.Binary.Reasoning.Base.Triple.html#2512" class="Bound">x≈y</a><a id="2539" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="extractEquality"></a><a id="2542" href="Relation.Binary.Reasoning.Base.Triple.html#2542" class="Function">extractEquality</a> <a id="2558" class="Symbol">:</a> <a id="2560" class="Symbol">∀</a> <a id="2562" class="Symbol">{</a><a id="2563" href="Relation.Binary.Reasoning.Base.Triple.html#2563" class="Bound">x</a> <a id="2565" href="Relation.Binary.Reasoning.Base.Triple.html#2565" class="Bound">y</a><a id="2566" class="Symbol">}</a> <a id="2568" class="Symbol">{</a><a id="2569" href="Relation.Binary.Reasoning.Base.Triple.html#2569" class="Bound">x≲y</a> <a id="2573" class="Symbol">:</a> <a id="2575" href="Relation.Binary.Reasoning.Base.Triple.html#2563" class="Bound">x</a> <a id="2577" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="2589" href="Relation.Binary.Reasoning.Base.Triple.html#2565" class="Bound">y</a><a id="2590" class="Symbol">}</a> <a id="2592" class="Symbol">→</a> <a id="2594" href="Relation.Binary.Reasoning.Base.Triple.html#2239" class="Datatype">IsEquality</a> <a id="2605" href="Relation.Binary.Reasoning.Base.Triple.html#2569" class="Bound">x≲y</a> <a id="2609" class="Symbol">→</a> <a id="2611" href="Relation.Binary.Reasoning.Base.Triple.html#2563" class="Bound">x</a> <a id="2613" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">≈</a> <a id="2615" href="Relation.Binary.Reasoning.Base.Triple.html#2565" class="Bound">y</a>
|
|||
|
<a id="2617" href="Relation.Binary.Reasoning.Base.Triple.html#2542" class="Function">extractEquality</a> <a id="2633" class="Symbol">(</a><a id="2634" href="Relation.Binary.Reasoning.Base.Triple.html#2307" class="InductiveConstructor">isEquality</a> <a id="2645" href="Relation.Binary.Reasoning.Base.Triple.html#2645" class="Bound">x≈y</a><a id="2648" class="Symbol">)</a> <a id="2650" class="Symbol">=</a> <a id="2652" href="Relation.Binary.Reasoning.Base.Triple.html#2645" class="Bound">x≈y</a>
|
|||
|
|
|||
|
<a id="2657" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="2730" class="Comment">-- Reasoning combinators</a>
|
|||
|
|
|||
|
<a id="2756" class="Comment">-- See `Relation.Binary.Reasoning.Base.Partial` for the design decisions</a>
|
|||
|
<a id="2829" class="Comment">-- behind these combinators.</a>
|
|||
|
|
|||
|
<a id="2859" class="Keyword">infix</a> <a id="2866" class="Number">1</a> <a id="2868" href="Relation.Binary.Reasoning.Base.Triple.html#3019" class="Function Operator">begin_</a> <a id="2875" href="Relation.Binary.Reasoning.Base.Triple.html#3163" class="Function Operator">begin-strict_</a> <a id="2889" href="Relation.Binary.Reasoning.Base.Triple.html#3295" class="Function Operator">begin-equality_</a>
|
|||
|
<a id="2905" class="Keyword">infixr</a> <a id="2912" class="Number">2</a> <a id="2914" href="Relation.Binary.Reasoning.Base.Triple.html#3469" class="Function">step-<</a> <a id="2921" href="Relation.Binary.Reasoning.Base.Triple.html#3754" class="Function">step-≤</a> <a id="2928" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="2935" href="Relation.Binary.Reasoning.Base.Triple.html#4367" class="Function">step-≈˘</a> <a id="2943" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="2950" href="Relation.Binary.Reasoning.Base.Triple.html#4879" class="Function">step-≡˘</a> <a id="2958" href="Relation.Binary.Reasoning.Base.Triple.html#5032" class="Function Operator">_≡⟨⟩_</a>
|
|||
|
<a id="2964" class="Keyword">infix</a> <a id="2971" class="Number">3</a> <a id="2973" href="Relation.Binary.Reasoning.Base.Triple.html#5128" class="Function Operator">_∎</a>
|
|||
|
|
|||
|
<a id="2977" class="Comment">-- Beginnings of various types of proofs</a>
|
|||
|
|
|||
|
<a id="begin_"></a><a id="3019" href="Relation.Binary.Reasoning.Base.Triple.html#3019" class="Function Operator">begin_</a> <a id="3026" class="Symbol">:</a> <a id="3028" class="Symbol">∀</a> <a id="3030" class="Symbol">{</a><a id="3031" href="Relation.Binary.Reasoning.Base.Triple.html#3031" class="Bound">x</a> <a id="3033" href="Relation.Binary.Reasoning.Base.Triple.html#3033" class="Bound">y</a><a id="3034" class="Symbol">}</a> <a id="3036" class="Symbol">→</a> <a id="3038" href="Relation.Binary.Reasoning.Base.Triple.html#3031" class="Bound">x</a> <a id="3040" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3052" href="Relation.Binary.Reasoning.Base.Triple.html#3033" class="Bound">y</a> <a id="3054" class="Symbol">→</a> <a id="3056" href="Relation.Binary.Reasoning.Base.Triple.html#3031" class="Bound">x</a> <a id="3058" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">≤</a> <a id="3060" href="Relation.Binary.Reasoning.Base.Triple.html#3033" class="Bound">y</a>
|
|||
|
<a id="3062" href="Relation.Binary.Reasoning.Base.Triple.html#3019" class="Function Operator">begin</a> <a id="3068" class="Symbol">(</a><a id="3069" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3079" href="Relation.Binary.Reasoning.Base.Triple.html#3079" class="Bound">x<y</a><a id="3082" class="Symbol">)</a> <a id="3084" class="Symbol">=</a> <a id="3086" href="Relation.Binary.Reasoning.Base.Triple.html#720" class="Bound"><⇒≤</a> <a id="3090" href="Relation.Binary.Reasoning.Base.Triple.html#3079" class="Bound">x<y</a>
|
|||
|
<a id="3094" href="Relation.Binary.Reasoning.Base.Triple.html#3019" class="Function Operator">begin</a> <a id="3100" class="Symbol">(</a><a id="3101" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="3111" href="Relation.Binary.Reasoning.Base.Triple.html#3111" class="Bound">x≤y</a><a id="3114" class="Symbol">)</a> <a id="3116" class="Symbol">=</a> <a id="3118" href="Relation.Binary.Reasoning.Base.Triple.html#3111" class="Bound">x≤y</a>
|
|||
|
<a id="3122" href="Relation.Binary.Reasoning.Base.Triple.html#3019" class="Function Operator">begin</a> <a id="3128" class="Symbol">(</a><a id="3129" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="3139" href="Relation.Binary.Reasoning.Base.Triple.html#3139" class="Bound">x≈y</a><a id="3142" class="Symbol">)</a> <a id="3144" class="Symbol">=</a> <a id="3146" href="Relation.Binary.Reasoning.Base.Triple.html#1203" class="Function">≤-reflexive</a> <a id="3158" href="Relation.Binary.Reasoning.Base.Triple.html#3139" class="Bound">x≈y</a>
|
|||
|
|
|||
|
<a id="begin-strict_"></a><a id="3163" href="Relation.Binary.Reasoning.Base.Triple.html#3163" class="Function Operator">begin-strict_</a> <a id="3177" class="Symbol">:</a> <a id="3179" class="Symbol">∀</a> <a id="3181" class="Symbol">{</a><a id="3182" href="Relation.Binary.Reasoning.Base.Triple.html#3182" class="Bound">x</a> <a id="3184" href="Relation.Binary.Reasoning.Base.Triple.html#3184" class="Bound">y</a><a id="3185" class="Symbol">}</a> <a id="3187" class="Symbol">(</a><a id="3188" href="Relation.Binary.Reasoning.Base.Triple.html#3188" class="Bound">r</a> <a id="3190" class="Symbol">:</a> <a id="3192" href="Relation.Binary.Reasoning.Base.Triple.html#3182" class="Bound">x</a> <a id="3194" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3206" href="Relation.Binary.Reasoning.Base.Triple.html#3184" class="Bound">y</a><a id="3207" class="Symbol">)</a> <a id="3209" class="Symbol">→</a> <a id="3211" class="Symbol">{</a><a id="3212" href="Relation.Binary.Reasoning.Base.Triple.html#3212" class="Bound">s</a> <a id="3214" class="Symbol">:</a> <a id="3216" href="Relation.Nullary.Decidable.Core.html#1374" class="Function">True</a> <a id="3221" class="Symbol">(</a><a id="3222" href="Relation.Binary.Reasoning.Base.Triple.html#1944" class="Function">IsStrict?</a> <a id="3232" href="Relation.Binary.Reasoning.Base.Triple.html#3188" class="Bound">r</a><a id="3233" class="Symbol">)}</a> <a id="3236" class="Symbol">→</a> <a id="3238" href="Relation.Binary.Reasoning.Base.Triple.html#3182" class="Bound">x</a> <a id="3240" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator"><</a> <a id="3242" href="Relation.Binary.Reasoning.Base.Triple.html#3184" class="Bound">y</a>
|
|||
|
<a id="3244" href="Relation.Binary.Reasoning.Base.Triple.html#3163" class="Function Operator">begin-strict_</a> <a id="3258" href="Relation.Binary.Reasoning.Base.Triple.html#3258" class="Bound">r</a> <a id="3260" class="Symbol">{</a><a id="3261" href="Relation.Binary.Reasoning.Base.Triple.html#3261" class="Bound">s</a><a id="3262" class="Symbol">}</a> <a id="3264" class="Symbol">=</a> <a id="3266" href="Relation.Binary.Reasoning.Base.Triple.html#2127" class="Function">extractStrict</a> <a id="3280" class="Symbol">(</a><a id="3281" href="Relation.Nullary.Decidable.Core.html#1493" class="Function">toWitness</a> <a id="3291" href="Relation.Binary.Reasoning.Base.Triple.html#3261" class="Bound">s</a><a id="3292" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="begin-equality_"></a><a id="3295" href="Relation.Binary.Reasoning.Base.Triple.html#3295" class="Function Operator">begin-equality_</a> <a id="3311" class="Symbol">:</a> <a id="3313" class="Symbol">∀</a> <a id="3315" class="Symbol">{</a><a id="3316" href="Relation.Binary.Reasoning.Base.Triple.html#3316" class="Bound">x</a> <a id="3318" href="Relation.Binary.Reasoning.Base.Triple.html#3318" class="Bound">y</a><a id="3319" class="Symbol">}</a> <a id="3321" class="Symbol">(</a><a id="3322" href="Relation.Binary.Reasoning.Base.Triple.html#3322" class="Bound">r</a> <a id="3324" class="Symbol">:</a> <a id="3326" href="Relation.Binary.Reasoning.Base.Triple.html#3316" class="Bound">x</a> <a id="3328" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3340" href="Relation.Binary.Reasoning.Base.Triple.html#3318" class="Bound">y</a><a id="3341" class="Symbol">)</a> <a id="3343" class="Symbol">→</a> <a id="3345" class="Symbol">{</a><a id="3346" href="Relation.Binary.Reasoning.Base.Triple.html#3346" class="Bound">s</a> <a id="3348" class="Symbol">:</a> <a id="3350" href="Relation.Nullary.Decidable.Core.html#1374" class="Function">True</a> <a id="3355" class="Symbol">(</a><a id="3356" href="Relation.Binary.Reasoning.Base.Triple.html#2353" class="Function">IsEquality?</a> <a id="3368" href="Relation.Binary.Reasoning.Base.Triple.html#3322" class="Bound">r</a><a id="3369" class="Symbol">)}</a> <a id="3372" class="Symbol">→</a> <a id="3374" href="Relation.Binary.Reasoning.Base.Triple.html#3316" class="Bound">x</a> <a id="3376" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">≈</a> <a id="3378" href="Relation.Binary.Reasoning.Base.Triple.html#3318" class="Bound">y</a>
|
|||
|
<a id="3380" href="Relation.Binary.Reasoning.Base.Triple.html#3295" class="Function Operator">begin-equality_</a> <a id="3396" href="Relation.Binary.Reasoning.Base.Triple.html#3396" class="Bound">r</a> <a id="3398" class="Symbol">{</a><a id="3399" href="Relation.Binary.Reasoning.Base.Triple.html#3399" class="Bound">s</a><a id="3400" class="Symbol">}</a> <a id="3402" class="Symbol">=</a> <a id="3404" href="Relation.Binary.Reasoning.Base.Triple.html#2542" class="Function">extractEquality</a> <a id="3420" class="Symbol">(</a><a id="3421" href="Relation.Nullary.Decidable.Core.html#1493" class="Function">toWitness</a> <a id="3431" href="Relation.Binary.Reasoning.Base.Triple.html#3399" class="Bound">s</a><a id="3432" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="3435" class="Comment">-- Step with the strict relation</a>
|
|||
|
|
|||
|
<a id="step-<"></a><a id="3469" href="Relation.Binary.Reasoning.Base.Triple.html#3469" class="Function">step-<</a> <a id="3476" class="Symbol">:</a> <a id="3478" class="Symbol">∀</a> <a id="3480" class="Symbol">(</a><a id="3481" href="Relation.Binary.Reasoning.Base.Triple.html#3481" class="Bound">x</a> <a id="3483" class="Symbol">:</a> <a id="3485" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a><a id="3486" class="Symbol">)</a> <a id="3488" class="Symbol">{</a><a id="3489" href="Relation.Binary.Reasoning.Base.Triple.html#3489" class="Bound">y</a> <a id="3491" href="Relation.Binary.Reasoning.Base.Triple.html#3491" class="Bound">z</a><a id="3492" class="Symbol">}</a> <a id="3494" class="Symbol">→</a> <a id="3496" href="Relation.Binary.Reasoning.Base.Triple.html#3489" class="Bound">y</a> <a id="3498" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3510" href="Relation.Binary.Reasoning.Base.Triple.html#3491" class="Bound">z</a> <a id="3512" class="Symbol">→</a> <a id="3514" href="Relation.Binary.Reasoning.Base.Triple.html#3481" class="Bound">x</a> <a id="3516" href="Relation.Binary.Reasoning.Base.Triple.html#607" class="Bound Operator"><</a> <a id="3518" href="Relation.Binary.Reasoning.Base.Triple.html#3489" class="Bound">y</a> <a id="3520" class="Symbol">→</a> <a id="3522" href="Relation.Binary.Reasoning.Base.Triple.html#3481" class="Bound">x</a> <a id="3524" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3536" href="Relation.Binary.Reasoning.Base.Triple.html#3491" class="Bound">z</a>
|
|||
|
<a id="3538" href="Relation.Binary.Reasoning.Base.Triple.html#3469" class="Function">step-<</a> <a id="3545" href="Relation.Binary.Reasoning.Base.Triple.html#3545" class="Bound">x</a> <a id="3547" class="Symbol">(</a><a id="3548" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3558" href="Relation.Binary.Reasoning.Base.Triple.html#3558" class="Bound">y<z</a><a id="3561" class="Symbol">)</a> <a id="3563" href="Relation.Binary.Reasoning.Base.Triple.html#3563" class="Bound">x<y</a> <a id="3567" class="Symbol">=</a> <a id="3569" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3576" class="Symbol">(</a><a id="3577" href="Relation.Binary.Reasoning.Base.Triple.html#662" class="Bound"><-trans</a> <a id="3585" href="Relation.Binary.Reasoning.Base.Triple.html#3563" class="Bound">x<y</a> <a id="3589" href="Relation.Binary.Reasoning.Base.Triple.html#3558" class="Bound">y<z</a><a id="3592" class="Symbol">)</a>
|
|||
|
<a id="3594" href="Relation.Binary.Reasoning.Base.Triple.html#3469" class="Function">step-<</a> <a id="3601" href="Relation.Binary.Reasoning.Base.Triple.html#3601" class="Bound">x</a> <a id="3603" class="Symbol">(</a><a id="3604" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="3614" href="Relation.Binary.Reasoning.Base.Triple.html#3614" class="Bound">y≤z</a><a id="3617" class="Symbol">)</a> <a id="3619" href="Relation.Binary.Reasoning.Base.Triple.html#3619" class="Bound">x<y</a> <a id="3623" class="Symbol">=</a> <a id="3625" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3632" class="Symbol">(</a><a id="3633" href="Relation.Binary.Reasoning.Base.Triple.html#740" class="Bound"><-≤-trans</a> <a id="3643" href="Relation.Binary.Reasoning.Base.Triple.html#3619" class="Bound">x<y</a> <a id="3647" href="Relation.Binary.Reasoning.Base.Triple.html#3614" class="Bound">y≤z</a><a id="3650" class="Symbol">)</a>
|
|||
|
<a id="3652" href="Relation.Binary.Reasoning.Base.Triple.html#3469" class="Function">step-<</a> <a id="3659" href="Relation.Binary.Reasoning.Base.Triple.html#3659" class="Bound">x</a> <a id="3661" class="Symbol">(</a><a id="3662" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="3672" href="Relation.Binary.Reasoning.Base.Triple.html#3672" class="Bound">y≈z</a><a id="3675" class="Symbol">)</a> <a id="3677" href="Relation.Binary.Reasoning.Base.Triple.html#3677" class="Bound">x<y</a> <a id="3681" class="Symbol">=</a> <a id="3683" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3690" class="Symbol">(</a><a id="3691" href="Agda.Builtin.Sigma.html#234" class="Field">proj₁</a> <a id="3697" href="Relation.Binary.Reasoning.Base.Triple.html#689" class="Bound"><-resp-≈</a> <a id="3706" href="Relation.Binary.Reasoning.Base.Triple.html#3672" class="Bound">y≈z</a> <a id="3710" href="Relation.Binary.Reasoning.Base.Triple.html#3677" class="Bound">x<y</a><a id="3713" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="3716" class="Comment">-- Step with the non-strict relation</a>
|
|||
|
|
|||
|
<a id="step-≤"></a><a id="3754" href="Relation.Binary.Reasoning.Base.Triple.html#3754" class="Function">step-≤</a> <a id="3761" class="Symbol">:</a> <a id="3763" class="Symbol">∀</a> <a id="3765" class="Symbol">(</a><a id="3766" href="Relation.Binary.Reasoning.Base.Triple.html#3766" class="Bound">x</a> <a id="3768" class="Symbol">:</a> <a id="3770" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a><a id="3771" class="Symbol">)</a> <a id="3773" class="Symbol">{</a><a id="3774" href="Relation.Binary.Reasoning.Base.Triple.html#3774" class="Bound">y</a> <a id="3776" href="Relation.Binary.Reasoning.Base.Triple.html#3776" class="Bound">z</a><a id="3777" class="Symbol">}</a> <a id="3779" class="Symbol">→</a> <a id="3781" href="Relation.Binary.Reasoning.Base.Triple.html#3774" class="Bound">y</a> <a id="3783" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3795" href="Relation.Binary.Reasoning.Base.Triple.html#3776" class="Bound">z</a> <a id="3797" class="Symbol">→</a> <a id="3799" href="Relation.Binary.Reasoning.Base.Triple.html#3766" class="Bound">x</a> <a id="3801" href="Relation.Binary.Reasoning.Base.Triple.html#590" class="Bound Operator">≤</a> <a id="3803" href="Relation.Binary.Reasoning.Base.Triple.html#3774" class="Bound">y</a> <a id="3805" class="Symbol">→</a> <a id="3807" href="Relation.Binary.Reasoning.Base.Triple.html#3766" class="Bound">x</a> <a id="3809" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="3821" href="Relation.Binary.Reasoning.Base.Triple.html#3776" class="Bound">z</a>
|
|||
|
<a id="3823" href="Relation.Binary.Reasoning.Base.Triple.html#3754" class="Function">step-≤</a> <a id="3830" href="Relation.Binary.Reasoning.Base.Triple.html#3830" class="Bound">x</a> <a id="3832" class="Symbol">(</a><a id="3833" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3843" href="Relation.Binary.Reasoning.Base.Triple.html#3843" class="Bound">y<z</a><a id="3846" class="Symbol">)</a> <a id="3848" href="Relation.Binary.Reasoning.Base.Triple.html#3848" class="Bound">x≤y</a> <a id="3852" class="Symbol">=</a> <a id="3854" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="3864" class="Symbol">(</a><a id="3865" href="Relation.Binary.Reasoning.Base.Triple.html#772" class="Bound">≤-<-trans</a> <a id="3875" href="Relation.Binary.Reasoning.Base.Triple.html#3848" class="Bound">x≤y</a> <a id="3879" href="Relation.Binary.Reasoning.Base.Triple.html#3843" class="Bound">y<z</a><a id="3882" class="Symbol">)</a>
|
|||
|
<a id="3884" href="Relation.Binary.Reasoning.Base.Triple.html#3754" class="Function">step-≤</a> <a id="3891" href="Relation.Binary.Reasoning.Base.Triple.html#3891" class="Bound">x</a> <a id="3893" class="Symbol">(</a><a id="3894" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="3904" href="Relation.Binary.Reasoning.Base.Triple.html#3904" class="Bound">y≤z</a><a id="3907" class="Symbol">)</a> <a id="3909" href="Relation.Binary.Reasoning.Base.Triple.html#3909" class="Bound">x≤y</a> <a id="3913" class="Symbol">=</a> <a id="3915" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="3925" class="Symbol">(</a><a id="3926" href="Relation.Binary.Reasoning.Base.Triple.html#1232" class="Function">≤-trans</a> <a id="3934" href="Relation.Binary.Reasoning.Base.Triple.html#3909" class="Bound">x≤y</a> <a id="3938" href="Relation.Binary.Reasoning.Base.Triple.html#3904" class="Bound">y≤z</a><a id="3941" class="Symbol">)</a>
|
|||
|
<a id="3943" href="Relation.Binary.Reasoning.Base.Triple.html#3754" class="Function">step-≤</a> <a id="3950" href="Relation.Binary.Reasoning.Base.Triple.html#3950" class="Bound">x</a> <a id="3952" class="Symbol">(</a><a id="3953" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="3963" href="Relation.Binary.Reasoning.Base.Triple.html#3963" class="Bound">y≈z</a><a id="3966" class="Symbol">)</a> <a id="3968" href="Relation.Binary.Reasoning.Base.Triple.html#3968" class="Bound">x≤y</a> <a id="3972" class="Symbol">=</a> <a id="3974" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="3984" class="Symbol">(</a><a id="3985" href="Agda.Builtin.Sigma.html#234" class="Field">proj₁</a> <a id="3991" href="Relation.Binary.Reasoning.Base.Triple.html#1257" class="Function">≤-resp-≈</a> <a id="4000" href="Relation.Binary.Reasoning.Base.Triple.html#3963" class="Bound">y≈z</a> <a id="4004" href="Relation.Binary.Reasoning.Base.Triple.html#3968" class="Bound">x≤y</a><a id="4007" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4010" class="Comment">-- Step with the setoid equality</a>
|
|||
|
|
|||
|
<a id="step-≈"></a><a id="4044" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="4052" class="Symbol">:</a> <a id="4054" class="Symbol">∀</a> <a id="4056" class="Symbol">(</a><a id="4057" href="Relation.Binary.Reasoning.Base.Triple.html#4057" class="Bound">x</a> <a id="4059" class="Symbol">:</a> <a id="4061" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a><a id="4062" class="Symbol">)</a> <a id="4064" class="Symbol">{</a><a id="4065" href="Relation.Binary.Reasoning.Base.Triple.html#4065" class="Bound">y</a> <a id="4067" href="Relation.Binary.Reasoning.Base.Triple.html#4067" class="Bound">z</a><a id="4068" class="Symbol">}</a> <a id="4070" class="Symbol">→</a> <a id="4072" href="Relation.Binary.Reasoning.Base.Triple.html#4065" class="Bound">y</a> <a id="4074" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4086" href="Relation.Binary.Reasoning.Base.Triple.html#4067" class="Bound">z</a> <a id="4088" class="Symbol">→</a> <a id="4090" href="Relation.Binary.Reasoning.Base.Triple.html#4057" class="Bound">x</a> <a id="4092" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">≈</a> <a id="4094" href="Relation.Binary.Reasoning.Base.Triple.html#4065" class="Bound">y</a> <a id="4096" class="Symbol">→</a> <a id="4098" href="Relation.Binary.Reasoning.Base.Triple.html#4057" class="Bound">x</a> <a id="4100" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4112" href="Relation.Binary.Reasoning.Base.Triple.html#4067" class="Bound">z</a>
|
|||
|
<a id="4114" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="4121" href="Relation.Binary.Reasoning.Base.Triple.html#4121" class="Bound">x</a> <a id="4123" class="Symbol">(</a><a id="4124" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="4134" href="Relation.Binary.Reasoning.Base.Triple.html#4134" class="Bound">y<z</a><a id="4137" class="Symbol">)</a> <a id="4139" href="Relation.Binary.Reasoning.Base.Triple.html#4139" class="Bound">x≈y</a> <a id="4143" class="Symbol">=</a> <a id="4145" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="4155" class="Symbol">(</a><a id="4156" href="Agda.Builtin.Sigma.html#246" class="Field">proj₂</a> <a id="4162" href="Relation.Binary.Reasoning.Base.Triple.html#689" class="Bound"><-resp-≈</a> <a id="4171" class="Symbol">(</a><a id="4172" href="Relation.Binary.Structures.html#1603" class="Function">Eq.sym</a> <a id="4179" href="Relation.Binary.Reasoning.Base.Triple.html#4139" class="Bound">x≈y</a><a id="4182" class="Symbol">)</a> <a id="4184" href="Relation.Binary.Reasoning.Base.Triple.html#4134" class="Bound">y<z</a><a id="4187" class="Symbol">)</a>
|
|||
|
<a id="4189" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="4196" href="Relation.Binary.Reasoning.Base.Triple.html#4196" class="Bound">x</a> <a id="4198" class="Symbol">(</a><a id="4199" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="4209" href="Relation.Binary.Reasoning.Base.Triple.html#4209" class="Bound">y≤z</a><a id="4212" class="Symbol">)</a> <a id="4214" href="Relation.Binary.Reasoning.Base.Triple.html#4214" class="Bound">x≈y</a> <a id="4218" class="Symbol">=</a> <a id="4220" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="4230" class="Symbol">(</a><a id="4231" href="Agda.Builtin.Sigma.html#246" class="Field">proj₂</a> <a id="4237" href="Relation.Binary.Reasoning.Base.Triple.html#1257" class="Function">≤-resp-≈</a> <a id="4246" class="Symbol">(</a><a id="4247" href="Relation.Binary.Structures.html#1603" class="Function">Eq.sym</a> <a id="4254" href="Relation.Binary.Reasoning.Base.Triple.html#4214" class="Bound">x≈y</a><a id="4257" class="Symbol">)</a> <a id="4259" href="Relation.Binary.Reasoning.Base.Triple.html#4209" class="Bound">y≤z</a><a id="4262" class="Symbol">)</a>
|
|||
|
<a id="4264" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="4271" href="Relation.Binary.Reasoning.Base.Triple.html#4271" class="Bound">x</a> <a id="4273" class="Symbol">(</a><a id="4274" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="4284" href="Relation.Binary.Reasoning.Base.Triple.html#4284" class="Bound">y≈z</a><a id="4287" class="Symbol">)</a> <a id="4289" href="Relation.Binary.Reasoning.Base.Triple.html#4289" class="Bound">x≈y</a> <a id="4293" class="Symbol">=</a> <a id="4295" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="4305" class="Symbol">(</a><a id="4306" href="Relation.Binary.Structures.html#1629" class="Function">Eq.trans</a> <a id="4315" href="Relation.Binary.Reasoning.Base.Triple.html#4289" class="Bound">x≈y</a> <a id="4319" href="Relation.Binary.Reasoning.Base.Triple.html#4284" class="Bound">y≈z</a><a id="4322" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4325" class="Comment">-- Flipped step with the setoid equality</a>
|
|||
|
|
|||
|
<a id="step-≈˘"></a><a id="4367" href="Relation.Binary.Reasoning.Base.Triple.html#4367" class="Function">step-≈˘</a> <a id="4375" class="Symbol">:</a> <a id="4377" class="Symbol">∀</a> <a id="4379" href="Relation.Binary.Reasoning.Base.Triple.html#4379" class="Bound">x</a> <a id="4381" class="Symbol">{</a><a id="4382" href="Relation.Binary.Reasoning.Base.Triple.html#4382" class="Bound">y</a> <a id="4384" href="Relation.Binary.Reasoning.Base.Triple.html#4384" class="Bound">z</a><a id="4385" class="Symbol">}</a> <a id="4387" class="Symbol">→</a> <a id="4389" href="Relation.Binary.Reasoning.Base.Triple.html#4382" class="Bound">y</a> <a id="4391" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4403" href="Relation.Binary.Reasoning.Base.Triple.html#4384" class="Bound">z</a> <a id="4405" class="Symbol">→</a> <a id="4407" href="Relation.Binary.Reasoning.Base.Triple.html#4382" class="Bound">y</a> <a id="4409" href="Relation.Binary.Reasoning.Base.Triple.html#573" class="Bound Operator">≈</a> <a id="4411" href="Relation.Binary.Reasoning.Base.Triple.html#4379" class="Bound">x</a> <a id="4413" class="Symbol">→</a> <a id="4415" href="Relation.Binary.Reasoning.Base.Triple.html#4379" class="Bound">x</a> <a id="4417" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4429" href="Relation.Binary.Reasoning.Base.Triple.html#4384" class="Bound">z</a>
|
|||
|
<a id="4431" href="Relation.Binary.Reasoning.Base.Triple.html#4367" class="Function">step-≈˘</a> <a id="4439" href="Relation.Binary.Reasoning.Base.Triple.html#4439" class="Bound">x</a> <a id="4441" href="Relation.Binary.Reasoning.Base.Triple.html#4441" class="Bound">y∼z</a> <a id="4445" href="Relation.Binary.Reasoning.Base.Triple.html#4445" class="Bound">x≈y</a> <a id="4449" class="Symbol">=</a> <a id="4451" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="4458" href="Relation.Binary.Reasoning.Base.Triple.html#4439" class="Bound">x</a> <a id="4460" href="Relation.Binary.Reasoning.Base.Triple.html#4441" class="Bound">y∼z</a> <a id="4464" class="Symbol">(</a><a id="4465" href="Relation.Binary.Structures.html#1603" class="Function">Eq.sym</a> <a id="4472" href="Relation.Binary.Reasoning.Base.Triple.html#4445" class="Bound">x≈y</a><a id="4475" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4478" class="Comment">-- Step with non-trivial propositional equality</a>
|
|||
|
|
|||
|
<a id="step-≡"></a><a id="4527" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="4534" class="Symbol">:</a> <a id="4536" class="Symbol">∀</a> <a id="4538" class="Symbol">(</a><a id="4539" href="Relation.Binary.Reasoning.Base.Triple.html#4539" class="Bound">x</a> <a id="4541" class="Symbol">:</a> <a id="4543" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a><a id="4544" class="Symbol">)</a> <a id="4546" class="Symbol">{</a><a id="4547" href="Relation.Binary.Reasoning.Base.Triple.html#4547" class="Bound">y</a> <a id="4549" href="Relation.Binary.Reasoning.Base.Triple.html#4549" class="Bound">z</a><a id="4550" class="Symbol">}</a> <a id="4552" class="Symbol">→</a> <a id="4554" href="Relation.Binary.Reasoning.Base.Triple.html#4547" class="Bound">y</a> <a id="4556" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4568" href="Relation.Binary.Reasoning.Base.Triple.html#4549" class="Bound">z</a> <a id="4570" class="Symbol">→</a> <a id="4572" href="Relation.Binary.Reasoning.Base.Triple.html#4539" class="Bound">x</a> <a id="4574" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="4576" href="Relation.Binary.Reasoning.Base.Triple.html#4547" class="Bound">y</a> <a id="4578" class="Symbol">→</a> <a id="4580" href="Relation.Binary.Reasoning.Base.Triple.html#4539" class="Bound">x</a> <a id="4582" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4594" href="Relation.Binary.Reasoning.Base.Triple.html#4549" class="Bound">z</a>
|
|||
|
<a id="4596" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="4603" href="Relation.Binary.Reasoning.Base.Triple.html#4603" class="Bound">x</a> <a id="4605" class="Symbol">(</a><a id="4606" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="4616" href="Relation.Binary.Reasoning.Base.Triple.html#4616" class="Bound">y<z</a><a id="4619" class="Symbol">)</a> <a id="4621" href="Relation.Binary.Reasoning.Base.Triple.html#4621" class="Bound">x≡y</a> <a id="4626" class="Symbol">=</a> <a id="4628" href="Relation.Binary.Reasoning.Base.Triple.html#1482" class="InductiveConstructor">strict</a> <a id="4638" class="Symbol">(</a><a id="4639" href="Function.Base.html#4130" class="Function Operator">case</a> <a id="4644" href="Relation.Binary.Reasoning.Base.Triple.html#4621" class="Bound">x≡y</a> <a id="4648" href="Function.Base.html#4130" class="Function Operator">of</a> <a id="4651" class="Symbol">λ</a> <a id="4653" class="Keyword">where</a> <a id="4659" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="4664" class="Symbol">→</a> <a id="4666" href="Relation.Binary.Reasoning.Base.Triple.html#4616" class="Bound">y<z</a><a id="4669" class="Symbol">)</a>
|
|||
|
<a id="4671" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="4678" href="Relation.Binary.Reasoning.Base.Triple.html#4678" class="Bound">x</a> <a id="4680" class="Symbol">(</a><a id="4681" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="4691" href="Relation.Binary.Reasoning.Base.Triple.html#4691" class="Bound">y≤z</a><a id="4694" class="Symbol">)</a> <a id="4696" href="Relation.Binary.Reasoning.Base.Triple.html#4696" class="Bound">x≡y</a> <a id="4701" class="Symbol">=</a> <a id="4703" href="Relation.Binary.Reasoning.Base.Triple.html#1528" class="InductiveConstructor">nonstrict</a> <a id="4713" class="Symbol">(</a><a id="4714" href="Function.Base.html#4130" class="Function Operator">case</a> <a id="4719" href="Relation.Binary.Reasoning.Base.Triple.html#4696" class="Bound">x≡y</a> <a id="4723" href="Function.Base.html#4130" class="Function Operator">of</a> <a id="4726" class="Symbol">λ</a> <a id="4728" class="Keyword">where</a> <a id="4734" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="4739" class="Symbol">→</a> <a id="4741" href="Relation.Binary.Reasoning.Base.Triple.html#4691" class="Bound">y≤z</a><a id="4744" class="Symbol">)</a>
|
|||
|
<a id="4746" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="4753" href="Relation.Binary.Reasoning.Base.Triple.html#4753" class="Bound">x</a> <a id="4755" class="Symbol">(</a><a id="4756" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="4766" href="Relation.Binary.Reasoning.Base.Triple.html#4766" class="Bound">y≈z</a><a id="4769" class="Symbol">)</a> <a id="4771" href="Relation.Binary.Reasoning.Base.Triple.html#4771" class="Bound">x≡y</a> <a id="4776" class="Symbol">=</a> <a id="4778" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="4788" class="Symbol">(</a><a id="4789" href="Function.Base.html#4130" class="Function Operator">case</a> <a id="4794" href="Relation.Binary.Reasoning.Base.Triple.html#4771" class="Bound">x≡y</a> <a id="4798" href="Function.Base.html#4130" class="Function Operator">of</a> <a id="4801" class="Symbol">λ</a> <a id="4803" class="Keyword">where</a> <a id="4809" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a> <a id="4814" class="Symbol">→</a> <a id="4816" href="Relation.Binary.Reasoning.Base.Triple.html#4766" class="Bound">y≈z</a><a id="4819" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4822" class="Comment">-- Flipped step with non-trivial propositional equality</a>
|
|||
|
|
|||
|
<a id="step-≡˘"></a><a id="4879" href="Relation.Binary.Reasoning.Base.Triple.html#4879" class="Function">step-≡˘</a> <a id="4887" class="Symbol">:</a> <a id="4889" class="Symbol">∀</a> <a id="4891" href="Relation.Binary.Reasoning.Base.Triple.html#4891" class="Bound">x</a> <a id="4893" class="Symbol">{</a><a id="4894" href="Relation.Binary.Reasoning.Base.Triple.html#4894" class="Bound">y</a> <a id="4896" href="Relation.Binary.Reasoning.Base.Triple.html#4896" class="Bound">z</a><a id="4897" class="Symbol">}</a> <a id="4899" class="Symbol">→</a> <a id="4901" href="Relation.Binary.Reasoning.Base.Triple.html#4894" class="Bound">y</a> <a id="4903" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4915" href="Relation.Binary.Reasoning.Base.Triple.html#4896" class="Bound">z</a> <a id="4917" class="Symbol">→</a> <a id="4919" href="Relation.Binary.Reasoning.Base.Triple.html#4894" class="Bound">y</a> <a id="4921" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="4923" href="Relation.Binary.Reasoning.Base.Triple.html#4891" class="Bound">x</a> <a id="4925" class="Symbol">→</a> <a id="4927" href="Relation.Binary.Reasoning.Base.Triple.html#4891" class="Bound">x</a> <a id="4929" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="4941" href="Relation.Binary.Reasoning.Base.Triple.html#4896" class="Bound">z</a>
|
|||
|
<a id="4943" href="Relation.Binary.Reasoning.Base.Triple.html#4879" class="Function">step-≡˘</a> <a id="4951" href="Relation.Binary.Reasoning.Base.Triple.html#4951" class="Bound">x</a> <a id="4953" href="Relation.Binary.Reasoning.Base.Triple.html#4953" class="Bound">y∼z</a> <a id="4957" href="Relation.Binary.Reasoning.Base.Triple.html#4957" class="Bound">x≡y</a> <a id="4961" class="Symbol">=</a> <a id="4963" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="4970" href="Relation.Binary.Reasoning.Base.Triple.html#4951" class="Bound">x</a> <a id="4972" href="Relation.Binary.Reasoning.Base.Triple.html#4953" class="Bound">y∼z</a> <a id="4976" class="Symbol">(</a><a id="4977" href="Relation.Binary.PropositionalEquality.Core.html#1693" class="Function">sym</a> <a id="4981" href="Relation.Binary.Reasoning.Base.Triple.html#4957" class="Bound">x≡y</a><a id="4984" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="4987" class="Comment">-- Step with trivial propositional equality</a>
|
|||
|
|
|||
|
<a id="_≡⟨⟩_"></a><a id="5032" href="Relation.Binary.Reasoning.Base.Triple.html#5032" class="Function Operator">_≡⟨⟩_</a> <a id="5038" class="Symbol">:</a> <a id="5040" class="Symbol">∀</a> <a id="5042" class="Symbol">(</a><a id="5043" href="Relation.Binary.Reasoning.Base.Triple.html#5043" class="Bound">x</a> <a id="5045" class="Symbol">:</a> <a id="5047" href="Relation.Binary.Reasoning.Base.Triple.html#559" class="Bound">A</a><a id="5048" class="Symbol">)</a> <a id="5050" class="Symbol">{</a><a id="5051" href="Relation.Binary.Reasoning.Base.Triple.html#5051" class="Bound">y</a><a id="5052" class="Symbol">}</a> <a id="5054" class="Symbol">→</a> <a id="5056" href="Relation.Binary.Reasoning.Base.Triple.html#5043" class="Bound">x</a> <a id="5058" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="5070" href="Relation.Binary.Reasoning.Base.Triple.html#5051" class="Bound">y</a> <a id="5072" class="Symbol">→</a> <a id="5074" href="Relation.Binary.Reasoning.Base.Triple.html#5043" class="Bound">x</a> <a id="5076" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="5088" href="Relation.Binary.Reasoning.Base.Triple.html#5051" class="Bound">y</a>
|
|||
|
<a id="5090" href="Relation.Binary.Reasoning.Base.Triple.html#5090" class="Bound">x</a> <a id="5092" href="Relation.Binary.Reasoning.Base.Triple.html#5032" class="Function Operator">≡⟨⟩</a> <a id="5096" href="Relation.Binary.Reasoning.Base.Triple.html#5096" class="Bound">x≲y</a> <a id="5100" class="Symbol">=</a> <a id="5102" href="Relation.Binary.Reasoning.Base.Triple.html#5096" class="Bound">x≲y</a>
|
|||
|
|
|||
|
<a id="5107" class="Comment">-- Termination step</a>
|
|||
|
|
|||
|
<a id="_∎"></a><a id="5128" href="Relation.Binary.Reasoning.Base.Triple.html#5128" class="Function Operator">_∎</a> <a id="5131" class="Symbol">:</a> <a id="5133" class="Symbol">∀</a> <a id="5135" href="Relation.Binary.Reasoning.Base.Triple.html#5135" class="Bound">x</a> <a id="5137" class="Symbol">→</a> <a id="5139" href="Relation.Binary.Reasoning.Base.Triple.html#5135" class="Bound">x</a> <a id="5141" href="Relation.Binary.Reasoning.Base.Triple.html#1425" class="Datatype Operator">IsRelatedTo</a> <a id="5153" href="Relation.Binary.Reasoning.Base.Triple.html#5135" class="Bound">x</a>
|
|||
|
<a id="5155" href="Relation.Binary.Reasoning.Base.Triple.html#5155" class="Bound">x</a> <a id="5157" href="Relation.Binary.Reasoning.Base.Triple.html#5128" class="Function Operator">∎</a> <a id="5159" class="Symbol">=</a> <a id="5161" href="Relation.Binary.Reasoning.Base.Triple.html#1574" class="InductiveConstructor">equals</a> <a id="5168" href="Relation.Binary.Structures.html#1577" class="Function">Eq.refl</a>
|
|||
|
|
|||
|
<a id="5177" class="Comment">-- Syntax declarations</a>
|
|||
|
|
|||
|
<a id="5201" class="Keyword">syntax</a> <a id="5208" href="Relation.Binary.Reasoning.Base.Triple.html#3469" class="Function">step-<</a> <a id="5216" class="Bound">x</a> <a id="5218" class="Bound">y∼z</a> <a id="5222" class="Bound">x<y</a> <a id="5226" class="Symbol">=</a> <a id="5228" class="Bound">x</a> <a id="5230" class="Function"><⟨</a> <a id="5234" class="Bound">x<y</a> <a id="5238" class="Function">⟩</a> <a id="5240" class="Bound">y∼z</a>
|
|||
|
<a id="5244" class="Keyword">syntax</a> <a id="5251" href="Relation.Binary.Reasoning.Base.Triple.html#3754" class="Function">step-≤</a> <a id="5259" class="Bound">x</a> <a id="5261" class="Bound">y∼z</a> <a id="5265" class="Bound">x≤y</a> <a id="5269" class="Symbol">=</a> <a id="5271" class="Bound">x</a> <a id="5273" class="Function">≤⟨</a> <a id="5277" class="Bound">x≤y</a> <a id="5281" class="Function">⟩</a> <a id="5283" class="Bound">y∼z</a>
|
|||
|
<a id="5287" class="Keyword">syntax</a> <a id="5294" href="Relation.Binary.Reasoning.Base.Triple.html#4044" class="Function">step-≈</a> <a id="5302" class="Bound">x</a> <a id="5304" class="Bound">y∼z</a> <a id="5308" class="Bound">x≈y</a> <a id="5312" class="Symbol">=</a> <a id="5314" class="Bound">x</a> <a id="5316" class="Function">≈⟨</a> <a id="5320" class="Bound">x≈y</a> <a id="5324" class="Function">⟩</a> <a id="5326" class="Bound">y∼z</a>
|
|||
|
<a id="5330" class="Keyword">syntax</a> <a id="5337" href="Relation.Binary.Reasoning.Base.Triple.html#4367" class="Function">step-≈˘</a> <a id="5345" class="Bound">x</a> <a id="5347" class="Bound">y∼z</a> <a id="5351" class="Bound">y≈x</a> <a id="5355" class="Symbol">=</a> <a id="5357" class="Bound">x</a> <a id="5359" class="Function">≈˘⟨</a> <a id="5363" class="Bound">y≈x</a> <a id="5367" class="Function">⟩</a> <a id="5369" class="Bound">y∼z</a>
|
|||
|
<a id="5373" class="Keyword">syntax</a> <a id="5380" href="Relation.Binary.Reasoning.Base.Triple.html#4527" class="Function">step-≡</a> <a id="5388" class="Bound">x</a> <a id="5390" class="Bound">y∼z</a> <a id="5394" class="Bound">x≡y</a> <a id="5398" class="Symbol">=</a> <a id="5400" class="Bound">x</a> <a id="5402" class="Function">≡⟨</a> <a id="5406" class="Bound">x≡y</a> <a id="5410" class="Function">⟩</a> <a id="5412" class="Bound">y∼z</a>
|
|||
|
<a id="5416" class="Keyword">syntax</a> <a id="5423" href="Relation.Binary.Reasoning.Base.Triple.html#4879" class="Function">step-≡˘</a> <a id="5431" class="Bound">x</a> <a id="5433" class="Bound">y∼z</a> <a id="5437" class="Bound">y≡x</a> <a id="5441" class="Symbol">=</a> <a id="5443" class="Bound">x</a> <a id="5445" class="Function">≡˘⟨</a> <a id="5449" class="Bound">y≡x</a> <a id="5453" class="Function">⟩</a> <a id="5455" class="Bound">y∼z</a>
|
|||
|
</pre></body></html>
|