mirror of
https://git8.cs.fau.de/theses/bsc-leon-vatthauer.git
synced 2024-05-31 07:28:34 +02:00
279 lines
88 KiB
HTML
279 lines
88 KiB
HTML
|
<!DOCTYPE HTML>
|
|||
|
<html><head><meta charset="utf-8"><title>Induction.WellFounded</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">-- Well-founded induction</a>
|
|||
|
<a id="132" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
|
|||
|
<a id="206" class="Symbol">{-#</a> <a id="210" class="Keyword">OPTIONS</a> <a id="218" class="Pragma">--cubical-compatible</a> <a id="239" class="Pragma">--safe</a> <a id="246" class="Symbol">#-}</a>
|
|||
|
|
|||
|
<a id="251" class="Keyword">open</a> <a id="256" class="Keyword">import</a> <a id="263" href="Relation.Binary.html" class="Module">Relation.Binary</a>
|
|||
|
|
|||
|
<a id="280" class="Keyword">module</a> <a id="287" href="Induction.WellFounded.html" class="Module">Induction.WellFounded</a> <a id="309" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="316" class="Keyword">open</a> <a id="321" class="Keyword">import</a> <a id="328" href="Data.Product.html" class="Module">Data.Product</a>
|
|||
|
<a id="341" class="Keyword">open</a> <a id="346" class="Keyword">import</a> <a id="353" href="Function.html" class="Module">Function</a>
|
|||
|
<a id="362" class="Keyword">open</a> <a id="367" class="Keyword">import</a> <a id="374" href="Induction.html" class="Module">Induction</a>
|
|||
|
<a id="384" class="Keyword">open</a> <a id="389" class="Keyword">import</a> <a id="396" href="Level.html" class="Module">Level</a>
|
|||
|
<a id="402" class="Keyword">open</a> <a id="407" class="Keyword">import</a> <a id="414" href="Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a> <a id="452" class="Keyword">hiding</a> <a id="459" class="Symbol">(</a><a id="460" href="Relation.Binary.PropositionalEquality.Core.html#1738" class="Function">trans</a><a id="465" class="Symbol">)</a>
|
|||
|
<a id="467" class="Keyword">open</a> <a id="472" class="Keyword">import</a> <a id="479" href="Relation.Unary.html" class="Module">Relation.Unary</a>
|
|||
|
|
|||
|
<a id="495" class="Keyword">private</a>
|
|||
|
<a id="505" class="Keyword">variable</a>
|
|||
|
<a id="518" href="Induction.WellFounded.html#518" class="Generalizable">a</a> <a id="520" href="Induction.WellFounded.html#520" class="Generalizable">b</a> <a id="522" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a> <a id="524" href="Induction.WellFounded.html#524" class="Generalizable">ℓ₁</a> <a id="527" href="Induction.WellFounded.html#527" class="Generalizable">ℓ₂</a> <a id="530" href="Induction.WellFounded.html#530" class="Generalizable">r</a> <a id="532" class="Symbol">:</a> <a id="534" href="Agda.Primitive.html#591" class="Postulate">Level</a>
|
|||
|
<a id="544" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="546" class="Symbol">:</a> <a id="548" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="552" href="Induction.WellFounded.html#518" class="Generalizable">a</a>
|
|||
|
<a id="558" href="Induction.WellFounded.html#558" class="Generalizable">B</a> <a id="560" class="Symbol">:</a> <a id="562" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="566" href="Induction.WellFounded.html#520" class="Generalizable">b</a>
|
|||
|
|
|||
|
<a id="569" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="642" class="Comment">-- Definitions</a>
|
|||
|
|
|||
|
<a id="658" class="Comment">-- When using well-founded recursion you can recurse arbitrarily, as</a>
|
|||
|
<a id="727" class="Comment">-- long as the arguments become smaller, and "smaller" is</a>
|
|||
|
<a id="785" class="Comment">-- well-founded.</a>
|
|||
|
|
|||
|
<a id="WfRec"></a><a id="803" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="809" class="Symbol">:</a> <a id="811" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="815" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="817" href="Induction.WellFounded.html#530" class="Generalizable">r</a> <a id="819" class="Symbol">→</a> <a id="821" class="Symbol">∀</a> <a id="823" class="Symbol">{</a><a id="824" href="Induction.WellFounded.html#824" class="Bound">ℓ</a><a id="825" class="Symbol">}</a> <a id="827" class="Symbol">→</a> <a id="829" href="Induction.html#769" class="Function">RecStruct</a> <a id="839" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="841" href="Induction.WellFounded.html#824" class="Bound">ℓ</a> <a id="843" class="Symbol">_</a>
|
|||
|
<a id="845" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="851" href="Induction.WellFounded.html#851" class="Bound Operator">_<_</a> <a id="855" href="Induction.WellFounded.html#855" class="Bound">P</a> <a id="857" href="Induction.WellFounded.html#857" class="Bound">x</a> <a id="859" class="Symbol">=</a> <a id="861" class="Symbol">∀</a> <a id="863" href="Induction.WellFounded.html#863" class="Bound">y</a> <a id="865" class="Symbol">→</a> <a id="867" href="Induction.WellFounded.html#863" class="Bound">y</a> <a id="869" href="Induction.WellFounded.html#851" class="Bound Operator"><</a> <a id="871" href="Induction.WellFounded.html#857" class="Bound">x</a> <a id="873" class="Symbol">→</a> <a id="875" href="Induction.WellFounded.html#855" class="Bound">P</a> <a id="877" href="Induction.WellFounded.html#863" class="Bound">y</a>
|
|||
|
|
|||
|
<a id="880" class="Comment">-- The accessibility predicate: x is accessible if everything which is</a>
|
|||
|
<a id="951" class="Comment">-- smaller than x is also accessible (inductively).</a>
|
|||
|
|
|||
|
<a id="1004" class="Keyword">data</a> <a id="Acc"></a><a id="1009" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1013" class="Symbol">{</a><a id="1014" href="Induction.WellFounded.html#1014" class="Bound">A</a> <a id="1016" class="Symbol">:</a> <a id="1018" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1022" href="Induction.WellFounded.html#518" class="Generalizable">a</a><a id="1023" class="Symbol">}</a> <a id="1025" class="Symbol">(</a><a id="1026" href="Induction.WellFounded.html#1026" class="Bound Operator">_<_</a> <a id="1030" class="Symbol">:</a> <a id="1032" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="1036" href="Induction.WellFounded.html#1014" class="Bound">A</a> <a id="1038" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a><a id="1039" class="Symbol">)</a> <a id="1041" class="Symbol">(</a><a id="1042" href="Induction.WellFounded.html#1042" class="Bound">x</a> <a id="1044" class="Symbol">:</a> <a id="1046" href="Induction.WellFounded.html#1014" class="Bound">A</a><a id="1047" class="Symbol">)</a> <a id="1049" class="Symbol">:</a> <a id="1051" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1055" class="Symbol">(</a><a id="1056" href="Induction.WellFounded.html#1022" class="Bound">a</a> <a id="1058" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="1060" href="Induction.WellFounded.html#1038" class="Bound">ℓ</a><a id="1061" class="Symbol">)</a> <a id="1063" class="Keyword">where</a>
|
|||
|
<a id="Acc.acc"></a><a id="1071" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="1075" class="Symbol">:</a> <a id="1077" class="Symbol">(</a><a id="1078" href="Induction.WellFounded.html#1078" class="Bound">rs</a> <a id="1081" class="Symbol">:</a> <a id="1083" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="1089" href="Induction.WellFounded.html#1026" class="Bound Operator">_<_</a> <a id="1093" class="Symbol">(</a><a id="1094" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1098" href="Induction.WellFounded.html#1026" class="Bound Operator">_<_</a><a id="1101" class="Symbol">)</a> <a id="1103" href="Induction.WellFounded.html#1042" class="Bound">x</a><a id="1104" class="Symbol">)</a> <a id="1106" class="Symbol">→</a> <a id="1108" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1112" href="Induction.WellFounded.html#1026" class="Bound Operator">_<_</a> <a id="1116" href="Induction.WellFounded.html#1042" class="Bound">x</a>
|
|||
|
|
|||
|
<a id="1119" class="Comment">-- The accessibility predicate encodes what it means to be</a>
|
|||
|
<a id="1178" class="Comment">-- well-founded; if all elements are accessible, then _<_ is</a>
|
|||
|
<a id="1239" class="Comment">-- well-founded.</a>
|
|||
|
|
|||
|
<a id="WellFounded"></a><a id="1257" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="1269" class="Symbol">:</a> <a id="1271" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="1275" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="1277" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a> <a id="1279" class="Symbol">→</a> <a id="1281" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="1285" class="Symbol">_</a>
|
|||
|
<a id="1287" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="1299" href="Induction.WellFounded.html#1299" class="Bound Operator">_<_</a> <a id="1303" class="Symbol">=</a> <a id="1305" class="Symbol">∀</a> <a id="1307" href="Induction.WellFounded.html#1307" class="Bound">x</a> <a id="1309" class="Symbol">→</a> <a id="1311" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1315" href="Induction.WellFounded.html#1299" class="Bound Operator">_<_</a> <a id="1319" href="Induction.WellFounded.html#1307" class="Bound">x</a>
|
|||
|
|
|||
|
<a id="Well-founded"></a><a id="1322" href="Induction.WellFounded.html#1322" class="Function">Well-founded</a> <a id="1335" class="Symbol">=</a> <a id="1337" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a>
|
|||
|
<a id="1349" class="Symbol">{-#</a> <a id="1353" class="Keyword">WARNING_ON_USAGE</a> <a id="1370" class="Pragma">Well-founded</a>
|
|||
|
<a id="1383" class="String">"Warning: Well-founded was deprecated in v0.15.
|
|||
|
Please use WellFounded instead."</a>
|
|||
|
<a id="1464" class="Symbol">#-}</a>
|
|||
|
|
|||
|
<a id="1469" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="1542" class="Comment">-- Basic properties</a>
|
|||
|
|
|||
|
<a id="acc-inverse"></a><a id="1563" href="Induction.WellFounded.html#1563" class="Function">acc-inverse</a> <a id="1575" class="Symbol">:</a> <a id="1577" class="Symbol">∀</a> <a id="1579" class="Symbol">{</a><a id="1580" href="Induction.WellFounded.html#1580" class="Bound Operator">_<_</a> <a id="1584" class="Symbol">:</a> <a id="1586" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="1590" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="1592" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a><a id="1593" class="Symbol">}</a> <a id="1595" class="Symbol">{</a><a id="1596" href="Induction.WellFounded.html#1596" class="Bound">x</a> <a id="1598" class="Symbol">:</a> <a id="1600" href="Induction.WellFounded.html#544" class="Generalizable">A</a><a id="1601" class="Symbol">}</a> <a id="1603" class="Symbol">(</a><a id="1604" href="Induction.WellFounded.html#1604" class="Bound">q</a> <a id="1606" class="Symbol">:</a> <a id="1608" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1612" href="Induction.WellFounded.html#1580" class="Bound Operator">_<_</a> <a id="1616" href="Induction.WellFounded.html#1596" class="Bound">x</a><a id="1617" class="Symbol">)</a> <a id="1619" class="Symbol">→</a>
|
|||
|
<a id="1635" class="Symbol">(</a><a id="1636" href="Induction.WellFounded.html#1636" class="Bound">y</a> <a id="1638" class="Symbol">:</a> <a id="1640" href="Induction.WellFounded.html#544" class="Generalizable">A</a><a id="1641" class="Symbol">)</a> <a id="1643" class="Symbol">→</a> <a id="1645" href="Induction.WellFounded.html#1636" class="Bound">y</a> <a id="1647" href="Induction.WellFounded.html#1580" class="Bound Operator"><</a> <a id="1649" href="Induction.WellFounded.html#1596" class="Bound">x</a> <a id="1651" class="Symbol">→</a> <a id="1653" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1657" href="Induction.WellFounded.html#1580" class="Bound Operator">_<_</a> <a id="1661" href="Induction.WellFounded.html#1636" class="Bound">y</a>
|
|||
|
<a id="1663" href="Induction.WellFounded.html#1563" class="Function">acc-inverse</a> <a id="1675" class="Symbol">(</a><a id="1676" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="1680" href="Induction.WellFounded.html#1680" class="Bound">rs</a><a id="1682" class="Symbol">)</a> <a id="1684" href="Induction.WellFounded.html#1684" class="Bound">y</a> <a id="1686" href="Induction.WellFounded.html#1686" class="Bound">y<x</a> <a id="1690" class="Symbol">=</a> <a id="1692" href="Induction.WellFounded.html#1680" class="Bound">rs</a> <a id="1695" href="Induction.WellFounded.html#1684" class="Bound">y</a> <a id="1697" href="Induction.WellFounded.html#1686" class="Bound">y<x</a>
|
|||
|
|
|||
|
<a id="Acc-resp-≈"></a><a id="1702" href="Induction.WellFounded.html#1702" class="Function">Acc-resp-≈</a> <a id="1713" class="Symbol">:</a> <a id="1715" class="Symbol">{</a><a id="1716" href="Induction.WellFounded.html#1716" class="Bound Operator">_≈_</a> <a id="1720" class="Symbol">:</a> <a id="1722" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="1726" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="1728" href="Induction.WellFounded.html#524" class="Generalizable">ℓ₁</a><a id="1730" class="Symbol">}</a> <a id="1732" class="Symbol">{</a><a id="1733" href="Induction.WellFounded.html#1733" class="Bound Operator">_<_</a> <a id="1737" class="Symbol">:</a> <a id="1739" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="1743" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="1745" href="Induction.WellFounded.html#527" class="Generalizable">ℓ₂</a><a id="1747" class="Symbol">}</a> <a id="1749" class="Symbol">→</a> <a id="1751" href="Relation.Binary.Definitions.html#1507" class="Function">Symmetric</a> <a id="1761" href="Induction.WellFounded.html#1716" class="Bound Operator">_≈_</a> <a id="1765" class="Symbol">→</a>
|
|||
|
<a id="1780" href="Induction.WellFounded.html#1733" class="Bound Operator">_<_</a> <a id="1784" href="Relation.Binary.Definitions.html#3758" class="Function Operator">Respectsʳ</a> <a id="1794" href="Induction.WellFounded.html#1716" class="Bound Operator">_≈_</a> <a id="1798" class="Symbol">→</a> <a id="1800" class="Symbol">(</a><a id="1801" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="1805" href="Induction.WellFounded.html#1733" class="Bound Operator">_<_</a><a id="1808" class="Symbol">)</a> <a id="1810" href="Relation.Binary.Definitions.html#3602" class="Function Operator">Respects</a> <a id="1819" href="Induction.WellFounded.html#1716" class="Bound Operator">_≈_</a>
|
|||
|
<a id="1823" href="Induction.WellFounded.html#1702" class="Function">Acc-resp-≈</a> <a id="1834" href="Induction.WellFounded.html#1834" class="Bound">sym</a> <a id="1838" href="Induction.WellFounded.html#1838" class="Bound">respʳ</a> <a id="1844" href="Induction.WellFounded.html#1844" class="Bound">x≈y</a> <a id="1848" class="Symbol">(</a><a id="1849" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="1853" href="Induction.WellFounded.html#1853" class="Bound">rec</a><a id="1856" class="Symbol">)</a> <a id="1858" class="Symbol">=</a>
|
|||
|
<a id="1862" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="1866" class="Symbol">(λ</a> <a id="1869" href="Induction.WellFounded.html#1869" class="Bound">z</a> <a id="1871" href="Induction.WellFounded.html#1871" class="Bound">z<y</a> <a id="1875" class="Symbol">→</a> <a id="1877" href="Induction.WellFounded.html#1853" class="Bound">rec</a> <a id="1881" href="Induction.WellFounded.html#1869" class="Bound">z</a> <a id="1883" class="Symbol">(</a><a id="1884" href="Induction.WellFounded.html#1838" class="Bound">respʳ</a> <a id="1890" class="Symbol">(</a><a id="1891" href="Induction.WellFounded.html#1834" class="Bound">sym</a> <a id="1895" href="Induction.WellFounded.html#1844" class="Bound">x≈y</a><a id="1898" class="Symbol">)</a> <a id="1900" href="Induction.WellFounded.html#1871" class="Bound">z<y</a><a id="1903" class="Symbol">))</a>
|
|||
|
|
|||
|
<a id="1907" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="1980" class="Comment">-- Well-founded induction for the subset of accessible elements:</a>
|
|||
|
|
|||
|
<a id="2046" class="Keyword">module</a> <a id="Some"></a><a id="2053" href="Induction.WellFounded.html#2053" class="Module">Some</a> <a id="2058" class="Symbol">{</a><a id="2059" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a> <a id="2063" class="Symbol">:</a> <a id="2065" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="2069" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="2071" href="Induction.WellFounded.html#530" class="Generalizable">r</a><a id="2072" class="Symbol">}</a> <a id="2074" class="Symbol">{</a><a id="2075" href="Induction.WellFounded.html#2075" class="Bound">ℓ</a><a id="2076" class="Symbol">}</a> <a id="2078" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="Some.wfRecBuilder"></a><a id="2087" href="Induction.WellFounded.html#2087" class="Function">wfRecBuilder</a> <a id="2100" class="Symbol">:</a> <a id="2102" href="Induction.html#1570" class="Function">SubsetRecursorBuilder</a> <a id="2124" class="Symbol">(</a><a id="2125" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="2129" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a><a id="2132" class="Symbol">)</a> <a id="2134" class="Symbol">(</a><a id="2135" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="2141" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a> <a id="2145" class="Symbol">{</a><a id="2146" class="Argument">ℓ</a> <a id="2148" class="Symbol">=</a> <a id="2150" href="Induction.WellFounded.html#2075" class="Bound">ℓ</a><a id="2151" class="Symbol">})</a>
|
|||
|
<a id="2156" href="Induction.WellFounded.html#2087" class="Function">wfRecBuilder</a> <a id="2169" href="Induction.WellFounded.html#2169" class="Bound">P</a> <a id="2171" href="Induction.WellFounded.html#2171" class="Bound">f</a> <a id="2173" href="Induction.WellFounded.html#2173" class="Bound">x</a> <a id="2175" class="Symbol">(</a><a id="2176" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="2180" href="Induction.WellFounded.html#2180" class="Bound">rs</a><a id="2182" class="Symbol">)</a> <a id="2184" class="Symbol">=</a> <a id="2186" class="Symbol">λ</a> <a id="2188" href="Induction.WellFounded.html#2188" class="Bound">y</a> <a id="2190" href="Induction.WellFounded.html#2190" class="Bound">y<x</a> <a id="2194" class="Symbol">→</a>
|
|||
|
<a id="2200" href="Induction.WellFounded.html#2171" class="Bound">f</a> <a id="2202" href="Induction.WellFounded.html#2188" class="Bound">y</a> <a id="2204" class="Symbol">(</a><a id="2205" href="Induction.WellFounded.html#2087" class="Function">wfRecBuilder</a> <a id="2218" href="Induction.WellFounded.html#2169" class="Bound">P</a> <a id="2220" href="Induction.WellFounded.html#2171" class="Bound">f</a> <a id="2222" href="Induction.WellFounded.html#2188" class="Bound">y</a> <a id="2224" class="Symbol">(</a><a id="2225" href="Induction.WellFounded.html#2180" class="Bound">rs</a> <a id="2228" href="Induction.WellFounded.html#2188" class="Bound">y</a> <a id="2230" href="Induction.WellFounded.html#2190" class="Bound">y<x</a><a id="2233" class="Symbol">))</a>
|
|||
|
|
|||
|
<a id="Some.wfRec"></a><a id="2239" href="Induction.WellFounded.html#2239" class="Function">wfRec</a> <a id="2245" class="Symbol">:</a> <a id="2247" href="Induction.html#1746" class="Function">SubsetRecursor</a> <a id="2262" class="Symbol">(</a><a id="2263" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="2267" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a><a id="2270" class="Symbol">)</a> <a id="2272" class="Symbol">(</a><a id="2273" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="2279" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a><a id="2282" class="Symbol">)</a>
|
|||
|
<a id="2286" href="Induction.WellFounded.html#2239" class="Function">wfRec</a> <a id="2292" class="Symbol">=</a> <a id="2294" href="Induction.html#1897" class="Function">subsetBuild</a> <a id="2306" href="Induction.WellFounded.html#2087" class="Function">wfRecBuilder</a>
|
|||
|
|
|||
|
<a id="Some.unfold-wfRec"></a><a id="2322" href="Induction.WellFounded.html#2322" class="Function">unfold-wfRec</a> <a id="2335" class="Symbol">:</a> <a id="2337" class="Symbol">(</a><a id="2338" href="Induction.WellFounded.html#2338" class="Bound">P</a> <a id="2340" class="Symbol">:</a> <a id="2342" href="Relation.Unary.html#1110" class="Function">Pred</a> <a id="2347" href="Induction.WellFounded.html#2069" class="Bound">A</a> <a id="2349" href="Induction.WellFounded.html#2075" class="Bound">ℓ</a><a id="2350" class="Symbol">)</a> <a id="2352" class="Symbol">(</a><a id="2353" href="Induction.WellFounded.html#2353" class="Bound">f</a> <a id="2355" class="Symbol">:</a> <a id="2357" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="2363" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a> <a id="2367" href="Induction.WellFounded.html#2338" class="Bound">P</a> <a id="2369" href="Relation.Unary.html#2345" class="Function Operator">⊆′</a> <a id="2372" href="Induction.WellFounded.html#2338" class="Bound">P</a><a id="2373" class="Symbol">)</a> <a id="2375" class="Symbol">{</a><a id="2376" href="Induction.WellFounded.html#2376" class="Bound">x</a> <a id="2378" class="Symbol">:</a> <a id="2380" href="Induction.WellFounded.html#2069" class="Bound">A</a><a id="2381" class="Symbol">}</a> <a id="2383" class="Symbol">(</a><a id="2384" href="Induction.WellFounded.html#2384" class="Bound">q</a> <a id="2386" class="Symbol">:</a> <a id="2388" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="2392" href="Induction.WellFounded.html#2059" class="Bound Operator">_<_</a> <a id="2396" href="Induction.WellFounded.html#2376" class="Bound">x</a><a id="2397" class="Symbol">)</a> <a id="2399" class="Symbol">→</a>
|
|||
|
<a id="2418" href="Induction.WellFounded.html#2239" class="Function">wfRec</a> <a id="2424" href="Induction.WellFounded.html#2338" class="Bound">P</a> <a id="2426" href="Induction.WellFounded.html#2353" class="Bound">f</a> <a id="2428" href="Induction.WellFounded.html#2376" class="Bound">x</a> <a id="2430" href="Induction.WellFounded.html#2384" class="Bound">q</a> <a id="2432" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="2434" href="Induction.WellFounded.html#2353" class="Bound">f</a> <a id="2436" href="Induction.WellFounded.html#2376" class="Bound">x</a> <a id="2438" class="Symbol">(λ</a> <a id="2441" href="Induction.WellFounded.html#2441" class="Bound">y</a> <a id="2443" href="Induction.WellFounded.html#2443" class="Bound">y<x</a> <a id="2447" class="Symbol">→</a> <a id="2449" href="Induction.WellFounded.html#2239" class="Function">wfRec</a> <a id="2455" href="Induction.WellFounded.html#2338" class="Bound">P</a> <a id="2457" href="Induction.WellFounded.html#2353" class="Bound">f</a> <a id="2459" href="Induction.WellFounded.html#2441" class="Bound">y</a> <a id="2461" class="Symbol">(</a><a id="2462" href="Induction.WellFounded.html#1563" class="Function">acc-inverse</a> <a id="2474" href="Induction.WellFounded.html#2384" class="Bound">q</a> <a id="2476" href="Induction.WellFounded.html#2441" class="Bound">y</a> <a id="2478" href="Induction.WellFounded.html#2443" class="Bound">y<x</a><a id="2481" class="Symbol">))</a>
|
|||
|
<a id="2486" href="Induction.WellFounded.html#2322" class="Function">unfold-wfRec</a> <a id="2499" href="Induction.WellFounded.html#2499" class="Bound">P</a> <a id="2501" href="Induction.WellFounded.html#2501" class="Bound">f</a> <a id="2503" class="Symbol">(</a><a id="2504" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="2508" href="Induction.WellFounded.html#2508" class="Bound">rs</a><a id="2510" class="Symbol">)</a> <a id="2512" class="Symbol">=</a> <a id="2514" href="Agda.Builtin.Equality.html#190" class="InductiveConstructor">refl</a>
|
|||
|
|
|||
|
<a id="Some.wfRec-builder"></a><a id="2522" href="Induction.WellFounded.html#2522" class="Function">wfRec-builder</a> <a id="2536" class="Symbol">=</a> <a id="2538" href="Induction.WellFounded.html#2087" class="Function">wfRecBuilder</a>
|
|||
|
<a id="2553" class="Symbol">{-#</a> <a id="2557" class="Keyword">WARNING_ON_USAGE</a> <a id="2574" class="Pragma">wfRec-builder</a>
|
|||
|
<a id="2590" class="String">"Warning: wfRec-builder was deprecated in v0.15.
|
|||
|
\ \Please use wfRecBuilder instead."</a>
|
|||
|
<a id="2678" class="Symbol">#-}</a>
|
|||
|
|
|||
|
|
|||
|
<a id="2684" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="2757" class="Comment">-- Well-founded induction for all elements, assuming they are all</a>
|
|||
|
<a id="2823" class="Comment">-- accessible:</a>
|
|||
|
|
|||
|
<a id="2839" class="Keyword">module</a> <a id="All"></a><a id="2846" href="Induction.WellFounded.html#2846" class="Module">All</a> <a id="2850" class="Symbol">{</a><a id="2851" href="Induction.WellFounded.html#2851" class="Bound Operator">_<_</a> <a id="2855" class="Symbol">:</a> <a id="2857" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="2861" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="2863" href="Induction.WellFounded.html#530" class="Generalizable">r</a><a id="2864" class="Symbol">}</a> <a id="2866" class="Symbol">(</a><a id="2867" href="Induction.WellFounded.html#2867" class="Bound">wf</a> <a id="2870" class="Symbol">:</a> <a id="2872" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="2884" href="Induction.WellFounded.html#2851" class="Bound Operator">_<_</a><a id="2887" class="Symbol">)</a> <a id="2889" href="Induction.WellFounded.html#2889" class="Bound">ℓ</a> <a id="2891" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="All.wfRecBuilder"></a><a id="2900" href="Induction.WellFounded.html#2900" class="Function">wfRecBuilder</a> <a id="2913" class="Symbol">:</a> <a id="2915" href="Induction.html#957" class="Function">RecursorBuilder</a> <a id="2931" class="Symbol">(</a><a id="2932" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="2938" href="Induction.WellFounded.html#2851" class="Bound Operator">_<_</a> <a id="2942" class="Symbol">{</a><a id="2943" class="Argument">ℓ</a> <a id="2945" class="Symbol">=</a> <a id="2947" href="Induction.WellFounded.html#2889" class="Bound">ℓ</a><a id="2948" class="Symbol">})</a>
|
|||
|
<a id="2953" href="Induction.WellFounded.html#2900" class="Function">wfRecBuilder</a> <a id="2966" href="Induction.WellFounded.html#2966" class="Bound">P</a> <a id="2968" href="Induction.WellFounded.html#2968" class="Bound">f</a> <a id="2970" href="Induction.WellFounded.html#2970" class="Bound">x</a> <a id="2972" class="Symbol">=</a> <a id="2974" href="Induction.WellFounded.html#2087" class="Function">Some.wfRecBuilder</a> <a id="2992" href="Induction.WellFounded.html#2966" class="Bound">P</a> <a id="2994" href="Induction.WellFounded.html#2968" class="Bound">f</a> <a id="2996" href="Induction.WellFounded.html#2970" class="Bound">x</a> <a id="2998" class="Symbol">(</a><a id="2999" href="Induction.WellFounded.html#2867" class="Bound">wf</a> <a id="3002" href="Induction.WellFounded.html#2970" class="Bound">x</a><a id="3003" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="All.wfRec"></a><a id="3008" href="Induction.WellFounded.html#3008" class="Function">wfRec</a> <a id="3014" class="Symbol">:</a> <a id="3016" href="Induction.html#1158" class="Function">Recursor</a> <a id="3025" class="Symbol">(</a><a id="3026" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="3032" href="Induction.WellFounded.html#2851" class="Bound Operator">_<_</a><a id="3035" class="Symbol">)</a>
|
|||
|
<a id="3039" href="Induction.WellFounded.html#3008" class="Function">wfRec</a> <a id="3045" class="Symbol">=</a> <a id="3047" href="Induction.html#1329" class="Function">build</a> <a id="3053" href="Induction.WellFounded.html#2900" class="Function">wfRecBuilder</a>
|
|||
|
|
|||
|
<a id="All.wfRec-builder"></a><a id="3069" href="Induction.WellFounded.html#3069" class="Function">wfRec-builder</a> <a id="3083" class="Symbol">=</a> <a id="3085" href="Induction.WellFounded.html#2900" class="Function">wfRecBuilder</a>
|
|||
|
<a id="3100" class="Symbol">{-#</a> <a id="3104" class="Keyword">WARNING_ON_USAGE</a> <a id="3121" class="Pragma">wfRec-builder</a>
|
|||
|
<a id="3137" class="String">"Warning: wfRec-builder was deprecated in v0.15.
|
|||
|
\ \Please use wfRecBuilder instead."</a>
|
|||
|
<a id="3225" class="Symbol">#-}</a>
|
|||
|
|
|||
|
<a id="3230" class="Keyword">module</a> <a id="FixPoint"></a><a id="3237" href="Induction.WellFounded.html#3237" class="Module">FixPoint</a>
|
|||
|
<a id="3248" class="Symbol">{</a><a id="3249" href="Induction.WellFounded.html#3249" class="Bound Operator">_<_</a> <a id="3253" class="Symbol">:</a> <a id="3255" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="3259" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="3261" href="Induction.WellFounded.html#530" class="Generalizable">r</a><a id="3262" class="Symbol">}</a> <a id="3264" class="Symbol">(</a><a id="3265" href="Induction.WellFounded.html#3265" class="Bound">wf</a> <a id="3268" class="Symbol">:</a> <a id="3270" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="3282" href="Induction.WellFounded.html#3249" class="Bound Operator">_<_</a><a id="3285" class="Symbol">)</a>
|
|||
|
<a id="3289" class="Symbol">(</a><a id="3290" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3292" class="Symbol">:</a> <a id="3294" href="Relation.Unary.html#1110" class="Function">Pred</a> <a id="3299" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="3301" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a><a id="3302" class="Symbol">)</a> <a id="3304" class="Symbol">(</a><a id="3305" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3307" class="Symbol">:</a> <a id="3309" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="3315" href="Induction.WellFounded.html#3249" class="Bound Operator">_<_</a> <a id="3319" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3321" href="Relation.Unary.html#2345" class="Function Operator">⊆′</a> <a id="3324" href="Induction.WellFounded.html#3290" class="Bound">P</a><a id="3325" class="Symbol">)</a>
|
|||
|
<a id="3329" class="Symbol">(</a><a id="3330" href="Induction.WellFounded.html#3330" class="Bound">f-ext</a> <a id="3336" class="Symbol">:</a> <a id="3338" class="Symbol">(</a><a id="3339" href="Induction.WellFounded.html#3339" class="Bound">x</a> <a id="3341" class="Symbol">:</a> <a id="3343" href="Induction.WellFounded.html#544" class="Generalizable">A</a><a id="3344" class="Symbol">)</a> <a id="3346" class="Symbol">{</a><a id="3347" href="Induction.WellFounded.html#3347" class="Bound">IH</a> <a id="3350" href="Induction.WellFounded.html#3350" class="Bound">IH′</a> <a id="3354" class="Symbol">:</a> <a id="3356" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="3362" href="Induction.WellFounded.html#3249" class="Bound Operator">_<_</a> <a id="3366" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3368" href="Induction.WellFounded.html#3339" class="Bound">x</a><a id="3369" class="Symbol">}</a> <a id="3371" class="Symbol">→</a> <a id="3373" class="Symbol">(∀</a> <a id="3376" class="Symbol">{</a><a id="3377" href="Induction.WellFounded.html#3377" class="Bound">y</a><a id="3378" class="Symbol">}</a> <a id="3380" href="Induction.WellFounded.html#3380" class="Bound">y<x</a> <a id="3384" class="Symbol">→</a> <a id="3386" href="Induction.WellFounded.html#3347" class="Bound">IH</a> <a id="3389" href="Induction.WellFounded.html#3377" class="Bound">y</a> <a id="3391" href="Induction.WellFounded.html#3380" class="Bound">y<x</a> <a id="3395" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="3397" href="Induction.WellFounded.html#3350" class="Bound">IH′</a> <a id="3401" href="Induction.WellFounded.html#3377" class="Bound">y</a> <a id="3403" href="Induction.WellFounded.html#3380" class="Bound">y<x</a><a id="3406" class="Symbol">)</a> <a id="3408" class="Symbol">→</a> <a id="3410" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3412" href="Induction.WellFounded.html#3339" class="Bound">x</a> <a id="3414" href="Induction.WellFounded.html#3347" class="Bound">IH</a> <a id="3417" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="3419" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3421" href="Induction.WellFounded.html#3339" class="Bound">x</a> <a id="3423" href="Induction.WellFounded.html#3350" class="Bound">IH′</a><a id="3426" class="Symbol">)</a>
|
|||
|
<a id="3430" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="FixPoint.some-wfRec-irrelevant"></a><a id="3439" href="Induction.WellFounded.html#3439" class="Function">some-wfRec-irrelevant</a> <a id="3461" class="Symbol">:</a> <a id="3463" class="Symbol">∀</a> <a id="3465" href="Induction.WellFounded.html#3465" class="Bound">x</a> <a id="3467" class="Symbol">→</a> <a id="3469" class="Symbol">(</a><a id="3470" href="Induction.WellFounded.html#3470" class="Bound">q</a> <a id="3472" href="Induction.WellFounded.html#3472" class="Bound">q′</a> <a id="3475" class="Symbol">:</a> <a id="3477" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="3481" href="Induction.WellFounded.html#3249" class="Bound Operator">_<_</a> <a id="3485" href="Induction.WellFounded.html#3465" class="Bound">x</a><a id="3486" class="Symbol">)</a> <a id="3488" class="Symbol">→</a> <a id="3490" href="Induction.WellFounded.html#2239" class="Function">Some.wfRec</a> <a id="3501" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3503" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3505" href="Induction.WellFounded.html#3465" class="Bound">x</a> <a id="3507" href="Induction.WellFounded.html#3470" class="Bound">q</a> <a id="3509" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="3511" href="Induction.WellFounded.html#2239" class="Function">Some.wfRec</a> <a id="3522" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3524" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3526" href="Induction.WellFounded.html#3465" class="Bound">x</a> <a id="3528" href="Induction.WellFounded.html#3472" class="Bound">q′</a>
|
|||
|
<a id="3533" href="Induction.WellFounded.html#3439" class="Function">some-wfRec-irrelevant</a> <a id="3555" class="Symbol">=</a> <a id="3557" href="Induction.WellFounded.html#3008" class="Function">All.wfRec</a> <a id="3567" href="Induction.WellFounded.html#3265" class="Bound">wf</a> <a id="3570" class="Symbol">_</a>
|
|||
|
<a id="3607" class="Symbol">(λ</a> <a id="3610" href="Induction.WellFounded.html#3610" class="Bound">x</a> <a id="3612" class="Symbol">→</a> <a id="3614" class="Symbol">(</a><a id="3615" href="Induction.WellFounded.html#3615" class="Bound">q</a> <a id="3617" href="Induction.WellFounded.html#3617" class="Bound">q′</a> <a id="3620" class="Symbol">:</a> <a id="3622" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="3626" href="Induction.WellFounded.html#3249" class="Bound Operator">_<_</a> <a id="3630" href="Induction.WellFounded.html#3610" class="Bound">x</a><a id="3631" class="Symbol">)</a> <a id="3633" class="Symbol">→</a> <a id="3635" href="Induction.WellFounded.html#2239" class="Function">Some.wfRec</a> <a id="3646" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3648" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3650" href="Induction.WellFounded.html#3610" class="Bound">x</a> <a id="3652" href="Induction.WellFounded.html#3615" class="Bound">q</a> <a id="3654" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="3656" href="Induction.WellFounded.html#2239" class="Function">Some.wfRec</a> <a id="3667" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3669" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3671" href="Induction.WellFounded.html#3610" class="Bound">x</a> <a id="3673" href="Induction.WellFounded.html#3617" class="Bound">q′</a><a id="3675" class="Symbol">)</a>
|
|||
|
<a id="3712" class="Symbol">(λ</a> <a id="3715" class="Symbol">{</a> <a id="3717" href="Induction.WellFounded.html#3717" class="Bound">x</a> <a id="3719" href="Induction.WellFounded.html#3719" class="Bound">IH</a> <a id="3722" class="Symbol">(</a><a id="3723" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="3727" href="Induction.WellFounded.html#3727" class="Bound">rs</a><a id="3729" class="Symbol">)</a> <a id="3731" class="Symbol">(</a><a id="3732" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="3736" href="Induction.WellFounded.html#3736" class="Bound">rs′</a><a id="3739" class="Symbol">)</a> <a id="3741" class="Symbol">→</a> <a id="3743" href="Induction.WellFounded.html#3330" class="Bound">f-ext</a> <a id="3749" href="Induction.WellFounded.html#3717" class="Bound">x</a> <a id="3751" class="Symbol">(λ</a> <a id="3754" href="Induction.WellFounded.html#3754" class="Bound">y<x</a> <a id="3758" class="Symbol">→</a> <a id="3760" href="Induction.WellFounded.html#3719" class="Bound">IH</a> <a id="3763" class="Symbol">_</a> <a id="3765" href="Induction.WellFounded.html#3754" class="Bound">y<x</a> <a id="3769" class="Symbol">(</a><a id="3770" href="Induction.WellFounded.html#3727" class="Bound">rs</a> <a id="3773" class="Symbol">_</a> <a id="3775" href="Induction.WellFounded.html#3754" class="Bound">y<x</a><a id="3778" class="Symbol">)</a> <a id="3780" class="Symbol">(</a><a id="3781" href="Induction.WellFounded.html#3736" class="Bound">rs′</a> <a id="3785" class="Symbol">_</a> <a id="3787" href="Induction.WellFounded.html#3754" class="Bound">y<x</a><a id="3790" class="Symbol">))</a> <a id="3793" class="Symbol">})</a>
|
|||
|
|
|||
|
<a id="3799" class="Keyword">open</a> <a id="3804" href="Induction.WellFounded.html#2846" class="Module">All</a> <a id="3808" href="Induction.WellFounded.html#3265" class="Bound">wf</a> <a id="3811" href="Induction.WellFounded.html#3301" class="Bound">ℓ</a>
|
|||
|
<a id="FixPoint.wfRecBuilder-wfRec"></a><a id="3815" href="Induction.WellFounded.html#3815" class="Function">wfRecBuilder-wfRec</a> <a id="3834" class="Symbol">:</a> <a id="3836" class="Symbol">∀</a> <a id="3838" class="Symbol">{</a><a id="3839" href="Induction.WellFounded.html#3839" class="Bound">x</a> <a id="3841" href="Induction.WellFounded.html#3841" class="Bound">y</a><a id="3842" class="Symbol">}</a> <a id="3844" href="Induction.WellFounded.html#3844" class="Bound">y<x</a> <a id="3848" class="Symbol">→</a> <a id="3850" href="Induction.WellFounded.html#2900" class="Function">wfRecBuilder</a> <a id="3863" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3865" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3867" href="Induction.WellFounded.html#3839" class="Bound">x</a> <a id="3869" href="Induction.WellFounded.html#3841" class="Bound">y</a> <a id="3871" href="Induction.WellFounded.html#3844" class="Bound">y<x</a> <a id="3875" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="3877" href="Induction.WellFounded.html#3008" class="Function">wfRec</a> <a id="3883" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="3885" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="3887" href="Induction.WellFounded.html#3841" class="Bound">y</a>
|
|||
|
<a id="3891" href="Induction.WellFounded.html#3815" class="Function">wfRecBuilder-wfRec</a> <a id="3910" class="Symbol">{</a><a id="3911" href="Induction.WellFounded.html#3911" class="Bound">x</a><a id="3912" class="Symbol">}</a> <a id="3914" class="Symbol">{</a><a id="3915" href="Induction.WellFounded.html#3915" class="Bound">y</a><a id="3916" class="Symbol">}</a> <a id="3918" href="Induction.WellFounded.html#3918" class="Bound">y<x</a> <a id="3922" class="Keyword">with</a> <a id="3927" href="Induction.WellFounded.html#3265" class="Bound">wf</a> <a id="3930" href="Induction.WellFounded.html#3911" class="Bound">x</a>
|
|||
|
<a id="3934" class="Symbol">...</a> <a id="3938" class="Symbol">|</a> <a id="3940" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="3944" href="Induction.WellFounded.html#3944" class="Bound">rs</a> <a id="3947" class="Symbol">=</a> <a id="3949" href="Induction.WellFounded.html#3439" class="Function">some-wfRec-irrelevant</a> <a id="3971" class="Bound">y</a> <a id="3973" class="Symbol">(</a><a id="3974" href="Induction.WellFounded.html#3944" class="Bound">rs</a> <a id="3977" class="Bound">y</a> <a id="3979" class="Bound">y<x</a><a id="3982" class="Symbol">)</a> <a id="3984" class="Symbol">(</a><a id="3985" href="Induction.WellFounded.html#3265" class="Bound">wf</a> <a id="3988" class="Bound">y</a><a id="3989" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="FixPoint.unfold-wfRec"></a><a id="3994" href="Induction.WellFounded.html#3994" class="Function">unfold-wfRec</a> <a id="4007" class="Symbol">:</a> <a id="4009" class="Symbol">∀</a> <a id="4011" class="Symbol">{</a><a id="4012" href="Induction.WellFounded.html#4012" class="Bound">x</a><a id="4013" class="Symbol">}</a> <a id="4015" class="Symbol">→</a> <a id="4017" href="Induction.WellFounded.html#3008" class="Function">wfRec</a> <a id="4023" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="4025" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="4027" href="Induction.WellFounded.html#4012" class="Bound">x</a> <a id="4029" href="Agda.Builtin.Equality.html#133" class="Datatype Operator">≡</a> <a id="4031" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="4033" href="Induction.WellFounded.html#4012" class="Bound">x</a> <a id="4035" class="Symbol">(λ</a> <a id="4038" href="Induction.WellFounded.html#4038" class="Bound">y</a> <a id="4040" href="Induction.WellFounded.html#4040" class="Symbol">_</a> <a id="4042" class="Symbol">→</a> <a id="4044" href="Induction.WellFounded.html#3008" class="Function">wfRec</a> <a id="4050" href="Induction.WellFounded.html#3290" class="Bound">P</a> <a id="4052" href="Induction.WellFounded.html#3305" class="Bound">f</a> <a id="4054" href="Induction.WellFounded.html#4038" class="Bound">y</a><a id="4055" class="Symbol">)</a>
|
|||
|
<a id="4059" href="Induction.WellFounded.html#3994" class="Function">unfold-wfRec</a> <a id="4072" class="Symbol">{</a><a id="4073" href="Induction.WellFounded.html#4073" class="Bound">x</a><a id="4074" class="Symbol">}</a> <a id="4076" class="Symbol">=</a> <a id="4078" href="Induction.WellFounded.html#3330" class="Bound">f-ext</a> <a id="4084" href="Induction.WellFounded.html#4073" class="Bound">x</a> <a id="4086" href="Induction.WellFounded.html#3815" class="Function">wfRecBuilder-wfRec</a>
|
|||
|
|
|||
|
|
|||
|
<a id="4107" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="4180" class="Comment">-- It might be useful to establish proofs of Acc or Well-founded using</a>
|
|||
|
<a id="4251" class="Comment">-- combinators such as the ones below (see, for instance,</a>
|
|||
|
<a id="4309" class="Comment">-- "Constructing Recursion Operators in Intuitionistic Type Theory" by</a>
|
|||
|
<a id="4380" class="Comment">-- Lawrence C Paulson).</a>
|
|||
|
|
|||
|
<a id="4405" class="Keyword">module</a> <a id="Subrelation"></a><a id="4412" href="Induction.WellFounded.html#4412" class="Module">Subrelation</a> <a id="4424" class="Symbol">{</a><a id="4425" href="Induction.WellFounded.html#4425" class="Bound Operator">_<₁_</a> <a id="4430" class="Symbol">:</a> <a id="4432" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="4436" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="4438" href="Induction.WellFounded.html#524" class="Generalizable">ℓ₁</a><a id="4440" class="Symbol">}</a> <a id="4442" class="Symbol">{</a><a id="4443" href="Induction.WellFounded.html#4443" class="Bound Operator">_<₂_</a> <a id="4448" class="Symbol">:</a> <a id="4450" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="4454" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="4456" href="Induction.WellFounded.html#527" class="Generalizable">ℓ₂</a><a id="4458" class="Symbol">}</a>
|
|||
|
<a id="4479" class="Symbol">(</a><a id="4480" href="Induction.WellFounded.html#4480" class="Bound"><₁⇒<₂</a> <a id="4486" class="Symbol">:</a> <a id="4488" class="Symbol">∀</a> <a id="4490" class="Symbol">{</a><a id="4491" href="Induction.WellFounded.html#4491" class="Bound">x</a> <a id="4493" href="Induction.WellFounded.html#4493" class="Bound">y</a><a id="4494" class="Symbol">}</a> <a id="4496" class="Symbol">→</a> <a id="4498" href="Induction.WellFounded.html#4491" class="Bound">x</a> <a id="4500" href="Induction.WellFounded.html#4425" class="Bound Operator"><₁</a> <a id="4503" href="Induction.WellFounded.html#4493" class="Bound">y</a> <a id="4505" class="Symbol">→</a> <a id="4507" href="Induction.WellFounded.html#4491" class="Bound">x</a> <a id="4509" href="Induction.WellFounded.html#4443" class="Bound Operator"><₂</a> <a id="4512" href="Induction.WellFounded.html#4493" class="Bound">y</a><a id="4513" class="Symbol">)</a> <a id="4515" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="Subrelation.accessible"></a><a id="4524" href="Induction.WellFounded.html#4524" class="Function">accessible</a> <a id="4535" class="Symbol">:</a> <a id="4537" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="4541" href="Induction.WellFounded.html#4443" class="Bound Operator">_<₂_</a> <a id="4546" href="Relation.Unary.html#1751" class="Function Operator">⊆</a> <a id="4548" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="4552" href="Induction.WellFounded.html#4425" class="Bound Operator">_<₁_</a>
|
|||
|
<a id="4559" href="Induction.WellFounded.html#4524" class="Function">accessible</a> <a id="4570" class="Symbol">(</a><a id="4571" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="4575" href="Induction.WellFounded.html#4575" class="Bound">rs</a><a id="4577" class="Symbol">)</a> <a id="4579" class="Symbol">=</a> <a id="4581" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="4585" class="Symbol">(λ</a> <a id="4588" href="Induction.WellFounded.html#4588" class="Bound">y</a> <a id="4590" href="Induction.WellFounded.html#4590" class="Bound">y<x</a> <a id="4594" class="Symbol">→</a> <a id="4596" href="Induction.WellFounded.html#4524" class="Function">accessible</a> <a id="4607" class="Symbol">(</a><a id="4608" href="Induction.WellFounded.html#4575" class="Bound">rs</a> <a id="4611" href="Induction.WellFounded.html#4588" class="Bound">y</a> <a id="4613" class="Symbol">(</a><a id="4614" href="Induction.WellFounded.html#4480" class="Bound"><₁⇒<₂</a> <a id="4620" href="Induction.WellFounded.html#4590" class="Bound">y<x</a><a id="4623" class="Symbol">)))</a>
|
|||
|
|
|||
|
<a id="Subrelation.wellFounded"></a><a id="4630" href="Induction.WellFounded.html#4630" class="Function">wellFounded</a> <a id="4642" class="Symbol">:</a> <a id="4644" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="4656" href="Induction.WellFounded.html#4443" class="Bound Operator">_<₂_</a> <a id="4661" class="Symbol">→</a> <a id="4663" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="4675" href="Induction.WellFounded.html#4425" class="Bound Operator">_<₁_</a>
|
|||
|
<a id="4682" href="Induction.WellFounded.html#4630" class="Function">wellFounded</a> <a id="4694" href="Induction.WellFounded.html#4694" class="Bound">wf</a> <a id="4697" class="Symbol">=</a> <a id="4699" class="Symbol">λ</a> <a id="4701" href="Induction.WellFounded.html#4701" class="Bound">x</a> <a id="4703" class="Symbol">→</a> <a id="4705" href="Induction.WellFounded.html#4524" class="Function">accessible</a> <a id="4716" class="Symbol">(</a><a id="4717" href="Induction.WellFounded.html#4694" class="Bound">wf</a> <a id="4720" href="Induction.WellFounded.html#4701" class="Bound">x</a><a id="4721" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="Subrelation.well-founded"></a><a id="4726" href="Induction.WellFounded.html#4726" class="Function">well-founded</a> <a id="4739" class="Symbol">=</a> <a id="4741" href="Induction.WellFounded.html#4630" class="Function">wellFounded</a>
|
|||
|
<a id="4755" class="Symbol">{-#</a> <a id="4759" class="Keyword">WARNING_ON_USAGE</a> <a id="4776" class="Pragma">well-founded</a>
|
|||
|
<a id="4791" class="String">"Warning: well-founded was deprecated in v0.15.
|
|||
|
\ \Please use wellFounded instead."</a>
|
|||
|
<a id="4877" class="Symbol">#-}</a>
|
|||
|
|
|||
|
|
|||
|
<a id="4883" class="Comment">-- DEPRECATED in v1.4.</a>
|
|||
|
<a id="4906" class="Comment">-- Please use proofs in `Relation.Binary.Construct.On` instead.</a>
|
|||
|
<a id="4970" class="Keyword">module</a> <a id="InverseImage"></a><a id="4977" href="Induction.WellFounded.html#4977" class="Module">InverseImage</a> <a id="4990" class="Symbol">{</a><a id="4991" href="Induction.WellFounded.html#4991" class="Bound Operator">_<_</a> <a id="4995" class="Symbol">:</a> <a id="4997" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="5001" href="Induction.WellFounded.html#558" class="Generalizable">B</a> <a id="5003" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a><a id="5004" class="Symbol">}</a> <a id="5006" class="Symbol">(</a><a id="5007" href="Induction.WellFounded.html#5007" class="Bound">f</a> <a id="5009" class="Symbol">:</a> <a id="5011" href="Induction.WellFounded.html#544" class="Generalizable">A</a> <a id="5013" class="Symbol">→</a> <a id="5015" href="Induction.WellFounded.html#558" class="Generalizable">B</a><a id="5016" class="Symbol">)</a> <a id="5018" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="InverseImage.accessible"></a><a id="5027" href="Induction.WellFounded.html#5027" class="Function">accessible</a> <a id="5038" class="Symbol">:</a> <a id="5040" class="Symbol">∀</a> <a id="5042" class="Symbol">{</a><a id="5043" href="Induction.WellFounded.html#5043" class="Bound">x</a><a id="5044" class="Symbol">}</a> <a id="5046" class="Symbol">→</a> <a id="5048" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="5052" href="Induction.WellFounded.html#4991" class="Bound Operator">_<_</a> <a id="5056" class="Symbol">(</a><a id="5057" href="Induction.WellFounded.html#5007" class="Bound">f</a> <a id="5059" href="Induction.WellFounded.html#5043" class="Bound">x</a><a id="5060" class="Symbol">)</a> <a id="5062" class="Symbol">→</a> <a id="5064" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="5068" class="Symbol">(</a><a id="5069" href="Induction.WellFounded.html#4991" class="Bound Operator">_<_</a> <a id="5073" href="Function.Base.html#6294" class="Function Operator">on</a> <a id="5076" href="Induction.WellFounded.html#5007" class="Bound">f</a><a id="5077" class="Symbol">)</a> <a id="5079" href="Induction.WellFounded.html#5043" class="Bound">x</a>
|
|||
|
<a id="5083" href="Induction.WellFounded.html#5027" class="Function">accessible</a> <a id="5094" class="Symbol">(</a><a id="5095" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="5099" href="Induction.WellFounded.html#5099" class="Bound">rs</a><a id="5101" class="Symbol">)</a> <a id="5103" class="Symbol">=</a> <a id="5105" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="5109" class="Symbol">(λ</a> <a id="5112" href="Induction.WellFounded.html#5112" class="Bound">y</a> <a id="5114" href="Induction.WellFounded.html#5114" class="Bound">fy<fx</a> <a id="5120" class="Symbol">→</a> <a id="5122" href="Induction.WellFounded.html#5027" class="Function">accessible</a> <a id="5133" class="Symbol">(</a><a id="5134" href="Induction.WellFounded.html#5099" class="Bound">rs</a> <a id="5137" class="Symbol">(</a><a id="5138" href="Induction.WellFounded.html#5007" class="Bound">f</a> <a id="5140" href="Induction.WellFounded.html#5112" class="Bound">y</a><a id="5141" class="Symbol">)</a> <a id="5143" href="Induction.WellFounded.html#5114" class="Bound">fy<fx</a><a id="5148" class="Symbol">))</a>
|
|||
|
|
|||
|
<a id="InverseImage.wellFounded"></a><a id="5154" href="Induction.WellFounded.html#5154" class="Function">wellFounded</a> <a id="5166" class="Symbol">:</a> <a id="5168" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="5180" href="Induction.WellFounded.html#4991" class="Bound Operator">_<_</a> <a id="5184" class="Symbol">→</a> <a id="5186" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="5198" class="Symbol">(</a><a id="5199" href="Induction.WellFounded.html#4991" class="Bound Operator">_<_</a> <a id="5203" href="Function.Base.html#6294" class="Function Operator">on</a> <a id="5206" href="Induction.WellFounded.html#5007" class="Bound">f</a><a id="5207" class="Symbol">)</a>
|
|||
|
<a id="5211" href="Induction.WellFounded.html#5154" class="Function">wellFounded</a> <a id="5223" href="Induction.WellFounded.html#5223" class="Bound">wf</a> <a id="5226" class="Symbol">=</a> <a id="5228" class="Symbol">λ</a> <a id="5230" href="Induction.WellFounded.html#5230" class="Bound">x</a> <a id="5232" class="Symbol">→</a> <a id="5234" href="Induction.WellFounded.html#5027" class="Function">accessible</a> <a id="5245" class="Symbol">(</a><a id="5246" href="Induction.WellFounded.html#5223" class="Bound">wf</a> <a id="5249" class="Symbol">(</a><a id="5250" href="Induction.WellFounded.html#5007" class="Bound">f</a> <a id="5252" href="Induction.WellFounded.html#5230" class="Bound">x</a><a id="5253" class="Symbol">))</a>
|
|||
|
|
|||
|
<a id="InverseImage.well-founded"></a><a id="5259" href="Induction.WellFounded.html#5259" class="Function">well-founded</a> <a id="5272" class="Symbol">=</a> <a id="5274" href="Induction.WellFounded.html#5154" class="Function">wellFounded</a>
|
|||
|
<a id="5288" class="Symbol">{-#</a> <a id="5292" class="Keyword">WARNING_ON_USAGE</a> <a id="5309" class="Pragma">accessible</a>
|
|||
|
<a id="5322" class="String">"Warning: accessible was deprecated in v1.4.
|
|||
|
\ \Please use accessible from `Relation.Binary.Construct.On` instead."</a>
|
|||
|
<a id="5440" class="Symbol">#-}</a>
|
|||
|
<a id="5446" class="Symbol">{-#</a> <a id="5450" class="Keyword">WARNING_ON_USAGE</a> <a id="5467" class="Pragma">wellFounded</a>
|
|||
|
<a id="5481" class="String">"Warning: wellFounded was deprecated in v1.4.
|
|||
|
\ \Please use wellFounded from `Relation.Binary.Construct.On` instead."</a>
|
|||
|
<a id="5601" class="Symbol">#-}</a>
|
|||
|
<a id="5607" class="Symbol">{-#</a> <a id="5611" class="Keyword">WARNING_ON_USAGE</a> <a id="5628" class="Pragma">well-founded</a>
|
|||
|
<a id="5643" class="String">"Warning: well-founded was deprecated in v0.15.
|
|||
|
\ \Please use wellFounded from `Relation.Binary.Construct.On` instead."</a>
|
|||
|
<a id="5765" class="Symbol">#-}</a>
|
|||
|
|
|||
|
|
|||
|
<a id="5771" class="Comment">-- DEPRECATED in v1.5.</a>
|
|||
|
<a id="5794" class="Comment">-- Please use `TransClosure` from `Relation.Binary.Construct.Closure.Transitive` instead.</a>
|
|||
|
<a id="5884" class="Keyword">module</a> <a id="TransitiveClosure"></a><a id="5891" href="Induction.WellFounded.html#5891" class="Module">TransitiveClosure</a> <a id="5909" class="Symbol">{</a><a id="5910" href="Induction.WellFounded.html#5910" class="Bound">A</a> <a id="5912" class="Symbol">:</a> <a id="5914" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="5918" href="Induction.WellFounded.html#518" class="Generalizable">a</a><a id="5919" class="Symbol">}</a> <a id="5921" class="Symbol">(</a><a id="5922" href="Induction.WellFounded.html#5922" class="Bound Operator">_<_</a> <a id="5926" class="Symbol">:</a> <a id="5928" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="5932" href="Induction.WellFounded.html#5910" class="Bound">A</a> <a id="5934" href="Induction.WellFounded.html#522" class="Generalizable">ℓ</a><a id="5935" class="Symbol">)</a> <a id="5937" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="5946" class="Keyword">infix</a> <a id="5952" class="Number">4</a> <a id="5954" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a>
|
|||
|
|
|||
|
<a id="5962" class="Keyword">data</a> <a id="TransitiveClosure._<⁺_"></a><a id="5967" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a> <a id="5972" class="Symbol">:</a> <a id="5974" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="5978" href="Induction.WellFounded.html#5910" class="Bound">A</a> <a id="5980" class="Symbol">(</a><a id="5981" href="Induction.WellFounded.html#5918" class="Bound">a</a> <a id="5983" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="5985" href="Induction.WellFounded.html#5934" class="Bound">ℓ</a><a id="5986" class="Symbol">)</a> <a id="5988" class="Keyword">where</a>
|
|||
|
<a id="TransitiveClosure._<⁺_.[_]"></a><a id="5998" href="Induction.WellFounded.html#5998" class="InductiveConstructor Operator">[_]</a> <a id="6004" class="Symbol">:</a> <a id="6006" class="Symbol">∀</a> <a id="6008" class="Symbol">{</a><a id="6009" href="Induction.WellFounded.html#6009" class="Bound">x</a> <a id="6011" href="Induction.WellFounded.html#6011" class="Bound">y</a><a id="6012" class="Symbol">}</a> <a id="6014" class="Symbol">(</a><a id="6015" href="Induction.WellFounded.html#6015" class="Bound">x<y</a> <a id="6019" class="Symbol">:</a> <a id="6021" href="Induction.WellFounded.html#6009" class="Bound">x</a> <a id="6023" href="Induction.WellFounded.html#5922" class="Bound Operator"><</a> <a id="6025" href="Induction.WellFounded.html#6011" class="Bound">y</a><a id="6026" class="Symbol">)</a> <a id="6028" class="Symbol">→</a> <a id="6030" href="Induction.WellFounded.html#6009" class="Bound">x</a> <a id="6032" href="Induction.WellFounded.html#5967" class="Datatype Operator"><⁺</a> <a id="6035" href="Induction.WellFounded.html#6011" class="Bound">y</a>
|
|||
|
<a id="TransitiveClosure._<⁺_.trans"></a><a id="6041" href="Induction.WellFounded.html#6041" class="InductiveConstructor">trans</a> <a id="6047" class="Symbol">:</a> <a id="6049" class="Symbol">∀</a> <a id="6051" class="Symbol">{</a><a id="6052" href="Induction.WellFounded.html#6052" class="Bound">x</a> <a id="6054" href="Induction.WellFounded.html#6054" class="Bound">y</a> <a id="6056" href="Induction.WellFounded.html#6056" class="Bound">z</a><a id="6057" class="Symbol">}</a> <a id="6059" class="Symbol">(</a><a id="6060" href="Induction.WellFounded.html#6060" class="Bound">x<y</a> <a id="6064" class="Symbol">:</a> <a id="6066" href="Induction.WellFounded.html#6052" class="Bound">x</a> <a id="6068" href="Induction.WellFounded.html#5967" class="Datatype Operator"><⁺</a> <a id="6071" href="Induction.WellFounded.html#6054" class="Bound">y</a><a id="6072" class="Symbol">)</a> <a id="6074" class="Symbol">(</a><a id="6075" href="Induction.WellFounded.html#6075" class="Bound">y<z</a> <a id="6079" class="Symbol">:</a> <a id="6081" href="Induction.WellFounded.html#6054" class="Bound">y</a> <a id="6083" href="Induction.WellFounded.html#5967" class="Datatype Operator"><⁺</a> <a id="6086" href="Induction.WellFounded.html#6056" class="Bound">z</a><a id="6087" class="Symbol">)</a> <a id="6089" class="Symbol">→</a> <a id="6091" href="Induction.WellFounded.html#6052" class="Bound">x</a> <a id="6093" href="Induction.WellFounded.html#5967" class="Datatype Operator"><⁺</a> <a id="6096" href="Induction.WellFounded.html#6056" class="Bound">z</a>
|
|||
|
|
|||
|
<a id="TransitiveClosure.downwardsClosed"></a><a id="6101" href="Induction.WellFounded.html#6101" class="Function">downwardsClosed</a> <a id="6117" class="Symbol">:</a> <a id="6119" class="Symbol">∀</a> <a id="6121" class="Symbol">{</a><a id="6122" href="Induction.WellFounded.html#6122" class="Bound">x</a> <a id="6124" href="Induction.WellFounded.html#6124" class="Bound">y</a><a id="6125" class="Symbol">}</a> <a id="6127" class="Symbol">→</a> <a id="6129" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="6133" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a> <a id="6138" href="Induction.WellFounded.html#6124" class="Bound">y</a> <a id="6140" class="Symbol">→</a> <a id="6142" href="Induction.WellFounded.html#6122" class="Bound">x</a> <a id="6144" href="Induction.WellFounded.html#5967" class="Datatype Operator"><⁺</a> <a id="6147" href="Induction.WellFounded.html#6124" class="Bound">y</a> <a id="6149" class="Symbol">→</a> <a id="6151" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="6155" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a> <a id="6160" href="Induction.WellFounded.html#6122" class="Bound">x</a>
|
|||
|
<a id="6164" href="Induction.WellFounded.html#6101" class="Function">downwardsClosed</a> <a id="6180" class="Symbol">(</a><a id="6181" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="6185" href="Induction.WellFounded.html#6185" class="Bound">rs</a><a id="6187" class="Symbol">)</a> <a id="6189" href="Induction.WellFounded.html#6189" class="Bound">x<y</a> <a id="6193" class="Symbol">=</a> <a id="6195" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="6199" class="Symbol">(λ</a> <a id="6202" href="Induction.WellFounded.html#6202" class="Bound">z</a> <a id="6204" href="Induction.WellFounded.html#6204" class="Bound">z<x</a> <a id="6208" class="Symbol">→</a> <a id="6210" href="Induction.WellFounded.html#6185" class="Bound">rs</a> <a id="6213" href="Induction.WellFounded.html#6202" class="Bound">z</a> <a id="6215" class="Symbol">(</a><a id="6216" href="Induction.WellFounded.html#6041" class="InductiveConstructor">trans</a> <a id="6222" href="Induction.WellFounded.html#6204" class="Bound">z<x</a> <a id="6226" href="Induction.WellFounded.html#6189" class="Bound">x<y</a><a id="6229" class="Symbol">))</a>
|
|||
|
|
|||
|
<a id="6235" class="Keyword">mutual</a>
|
|||
|
|
|||
|
<a id="TransitiveClosure.accessible"></a><a id="6247" href="Induction.WellFounded.html#6247" class="Function">accessible</a> <a id="6258" class="Symbol">:</a> <a id="6260" class="Symbol">∀</a> <a id="6262" class="Symbol">{</a><a id="6263" href="Induction.WellFounded.html#6263" class="Bound">x</a><a id="6264" class="Symbol">}</a> <a id="6266" class="Symbol">→</a> <a id="6268" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="6272" href="Induction.WellFounded.html#5922" class="Bound Operator">_<_</a> <a id="6276" href="Induction.WellFounded.html#6263" class="Bound">x</a> <a id="6278" class="Symbol">→</a> <a id="6280" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="6284" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a> <a id="6289" href="Induction.WellFounded.html#6263" class="Bound">x</a>
|
|||
|
<a id="6295" href="Induction.WellFounded.html#6247" class="Function">accessible</a> <a id="6306" href="Induction.WellFounded.html#6306" class="Bound">acc-x</a> <a id="6312" class="Symbol">=</a> <a id="6314" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="6318" class="Symbol">(</a><a id="6319" href="Induction.WellFounded.html#6343" class="Function">accessible′</a> <a id="6331" href="Induction.WellFounded.html#6306" class="Bound">acc-x</a><a id="6336" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="TransitiveClosure.accessible′"></a><a id="6343" href="Induction.WellFounded.html#6343" class="Function">accessible′</a> <a id="6355" class="Symbol">:</a> <a id="6357" class="Symbol">∀</a> <a id="6359" class="Symbol">{</a><a id="6360" href="Induction.WellFounded.html#6360" class="Bound">x</a><a id="6361" class="Symbol">}</a> <a id="6363" class="Symbol">→</a> <a id="6365" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="6369" href="Induction.WellFounded.html#5922" class="Bound Operator">_<_</a> <a id="6373" href="Induction.WellFounded.html#6360" class="Bound">x</a> <a id="6375" class="Symbol">→</a> <a id="6377" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="6383" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a> <a id="6388" class="Symbol">(</a><a id="6389" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="6393" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a><a id="6397" class="Symbol">)</a> <a id="6399" href="Induction.WellFounded.html#6360" class="Bound">x</a>
|
|||
|
<a id="6405" href="Induction.WellFounded.html#6343" class="Function">accessible′</a> <a id="6417" class="Symbol">(</a><a id="6418" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="6422" href="Induction.WellFounded.html#6422" class="Bound">rs</a><a id="6424" class="Symbol">)</a> <a id="6426" href="Induction.WellFounded.html#6426" class="Bound">y</a> <a id="6428" href="Induction.WellFounded.html#5998" class="InductiveConstructor Operator">[</a> <a id="6430" href="Induction.WellFounded.html#6430" class="Bound">y<x</a> <a id="6434" href="Induction.WellFounded.html#5998" class="InductiveConstructor Operator">]</a> <a id="6444" class="Symbol">=</a> <a id="6446" href="Induction.WellFounded.html#6247" class="Function">accessible</a> <a id="6457" class="Symbol">(</a><a id="6458" href="Induction.WellFounded.html#6422" class="Bound">rs</a> <a id="6461" href="Induction.WellFounded.html#6426" class="Bound">y</a> <a id="6463" href="Induction.WellFounded.html#6430" class="Bound">y<x</a><a id="6466" class="Symbol">)</a>
|
|||
|
<a id="6472" href="Induction.WellFounded.html#6343" class="CatchallClause Function">accessible′</a><a id="6483" class="CatchallClause"> </a><a id="6484" href="Induction.WellFounded.html#6484" class="CatchallClause Bound">acc-x</a><a id="6489" class="CatchallClause"> </a><a id="6493" href="Induction.WellFounded.html#6493" class="CatchallClause Bound">y</a><a id="6494" class="CatchallClause"> </a><a id="6495" class="CatchallClause Symbol">(</a><a id="6496" href="Induction.WellFounded.html#6041" class="CatchallClause InductiveConstructor">trans</a><a id="6501" class="CatchallClause"> </a><a id="6502" href="Induction.WellFounded.html#6502" class="CatchallClause Bound">y<z</a><a id="6505" class="CatchallClause"> </a><a id="6506" href="Induction.WellFounded.html#6506" class="CatchallClause Bound">z<x</a><a id="6509" class="CatchallClause Symbol">)</a> <a id="6511" class="Symbol">=</a>
|
|||
|
<a id="6519" href="Induction.WellFounded.html#6101" class="Function">downwardsClosed</a> <a id="6535" class="Symbol">(</a><a id="6536" href="Induction.WellFounded.html#6343" class="Function">accessible′</a> <a id="6548" href="Induction.WellFounded.html#6484" class="Bound">acc-x</a> <a id="6554" class="Symbol">_</a> <a id="6556" href="Induction.WellFounded.html#6506" class="Bound">z<x</a><a id="6559" class="Symbol">)</a> <a id="6561" href="Induction.WellFounded.html#6502" class="Bound">y<z</a>
|
|||
|
|
|||
|
<a id="TransitiveClosure.wellFounded"></a><a id="6568" href="Induction.WellFounded.html#6568" class="Function">wellFounded</a> <a id="6580" class="Symbol">:</a> <a id="6582" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="6594" href="Induction.WellFounded.html#5922" class="Bound Operator">_<_</a> <a id="6598" class="Symbol">→</a> <a id="6600" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="6612" href="Induction.WellFounded.html#5967" class="Datatype Operator">_<⁺_</a>
|
|||
|
<a id="6619" href="Induction.WellFounded.html#6568" class="Function">wellFounded</a> <a id="6631" href="Induction.WellFounded.html#6631" class="Bound">wf</a> <a id="6634" class="Symbol">=</a> <a id="6636" class="Symbol">λ</a> <a id="6638" href="Induction.WellFounded.html#6638" class="Bound">x</a> <a id="6640" class="Symbol">→</a> <a id="6642" href="Induction.WellFounded.html#6247" class="Function">accessible</a> <a id="6653" class="Symbol">(</a><a id="6654" href="Induction.WellFounded.html#6631" class="Bound">wf</a> <a id="6657" href="Induction.WellFounded.html#6638" class="Bound">x</a><a id="6658" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="6663" class="Symbol">{-#</a> <a id="6667" class="Keyword">WARNING_ON_USAGE</a> <a id="6684" class="Pragma">_<⁺_</a>
|
|||
|
<a id="6691" class="String">"Warning: _<⁺_ was deprecated in v1.5.
|
|||
|
\ \Please use TransClosure from Relation.Binary.Construct.Closure.Transitive instead."</a>
|
|||
|
<a id="6819" class="Symbol">#-}</a>
|
|||
|
<a id="TransitiveClosure.downwards-closed"></a><a id="6825" href="Induction.WellFounded.html#6825" class="Function">downwards-closed</a> <a id="6842" class="Symbol">=</a> <a id="6844" href="Induction.WellFounded.html#6101" class="Function">downwardsClosed</a>
|
|||
|
<a id="6862" class="Symbol">{-#</a> <a id="6866" class="Keyword">WARNING_ON_USAGE</a> <a id="6883" class="Pragma">downwards-closed</a>
|
|||
|
<a id="6902" class="String">"Warning: downwards-closed was deprecated in v0.15."</a>
|
|||
|
<a id="6957" class="Symbol">#-}</a>
|
|||
|
<a id="TransitiveClosure.well-founded"></a><a id="6963" href="Induction.WellFounded.html#6963" class="Function">well-founded</a> <a id="6980" class="Symbol">=</a> <a id="6982" href="Induction.WellFounded.html#6568" class="Function">wellFounded</a>
|
|||
|
<a id="6996" class="Symbol">{-#</a> <a id="7000" class="Keyword">WARNING_ON_USAGE</a> <a id="7017" class="Pragma">well-founded</a>
|
|||
|
<a id="7032" class="String">"Warning: well-founded was deprecated in v0.15."</a>
|
|||
|
<a id="7083" class="Symbol">#-}</a>
|
|||
|
|
|||
|
|
|||
|
<a id="7089" class="Comment">-- DEPRECATED in v1.3.</a>
|
|||
|
<a id="7112" class="Comment">-- Please use `×-Lex` from `Data.Product.Relation.Binary.Lex.Strict` instead.</a>
|
|||
|
<a id="7190" class="Keyword">module</a> <a id="Lexicographic"></a><a id="7197" href="Induction.WellFounded.html#7197" class="Module">Lexicographic</a> <a id="7211" class="Symbol">{</a><a id="7212" href="Induction.WellFounded.html#7212" class="Bound">A</a> <a id="7214" class="Symbol">:</a> <a id="7216" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="7220" href="Induction.WellFounded.html#518" class="Generalizable">a</a><a id="7221" class="Symbol">}</a> <a id="7223" class="Symbol">{</a><a id="7224" href="Induction.WellFounded.html#7224" class="Bound">B</a> <a id="7226" class="Symbol">:</a> <a id="7228" href="Induction.WellFounded.html#7212" class="Bound">A</a> <a id="7230" class="Symbol">→</a> <a id="7232" href="Agda.Primitive.html#320" class="Primitive">Set</a> <a id="7236" href="Induction.WellFounded.html#520" class="Generalizable">b</a><a id="7237" class="Symbol">}</a>
|
|||
|
<a id="7260" class="Symbol">(</a><a id="7261" href="Induction.WellFounded.html#7261" class="Bound">RelA</a> <a id="7266" class="Symbol">:</a> <a id="7268" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="7272" href="Induction.WellFounded.html#7212" class="Bound">A</a> <a id="7274" href="Induction.WellFounded.html#524" class="Generalizable">ℓ₁</a><a id="7276" class="Symbol">)</a>
|
|||
|
<a id="7299" class="Symbol">(</a><a id="7300" href="Induction.WellFounded.html#7300" class="Bound">RelB</a> <a id="7305" class="Symbol">:</a> <a id="7307" class="Symbol">∀</a> <a id="7309" href="Induction.WellFounded.html#7309" class="Bound">x</a> <a id="7311" class="Symbol">→</a> <a id="7313" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="7317" class="Symbol">(</a><a id="7318" href="Induction.WellFounded.html#7224" class="Bound">B</a> <a id="7320" href="Induction.WellFounded.html#7309" class="Bound">x</a><a id="7321" class="Symbol">)</a> <a id="7323" href="Induction.WellFounded.html#527" class="Generalizable">ℓ₂</a><a id="7325" class="Symbol">)</a> <a id="7327" class="Keyword">where</a>
|
|||
|
|
|||
|
<a id="7336" class="Keyword">data</a> <a id="Lexicographic._<_"></a><a id="7341" href="Induction.WellFounded.html#7341" class="Datatype Operator">_<_</a> <a id="7345" class="Symbol">:</a> <a id="7347" href="Relation.Binary.Core.html#891" class="Function">Rel</a> <a id="7351" class="Symbol">(</a><a id="7352" href="Agda.Builtin.Sigma.html#148" class="Record">Σ</a> <a id="7354" href="Induction.WellFounded.html#7212" class="Bound">A</a> <a id="7356" href="Induction.WellFounded.html#7224" class="Bound">B</a><a id="7357" class="Symbol">)</a> <a id="7359" class="Symbol">(</a><a id="7360" href="Induction.WellFounded.html#7220" class="Bound">a</a> <a id="7362" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="7364" href="Induction.WellFounded.html#7236" class="Bound">b</a> <a id="7366" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="7368" href="Induction.WellFounded.html#7274" class="Bound">ℓ₁</a> <a id="7371" href="Agda.Primitive.html#804" class="Primitive Operator">⊔</a> <a id="7373" href="Induction.WellFounded.html#7323" class="Bound">ℓ₂</a><a id="7375" class="Symbol">)</a> <a id="7377" class="Keyword">where</a>
|
|||
|
<a id="Lexicographic._<_.left"></a><a id="7387" href="Induction.WellFounded.html#7387" class="InductiveConstructor">left</a> <a id="7393" class="Symbol">:</a> <a id="7395" class="Symbol">∀</a> <a id="7397" class="Symbol">{</a><a id="7398" href="Induction.WellFounded.html#7398" class="Bound">x₁</a> <a id="7401" href="Induction.WellFounded.html#7401" class="Bound">y₁</a> <a id="7404" href="Induction.WellFounded.html#7404" class="Bound">x₂</a> <a id="7407" href="Induction.WellFounded.html#7407" class="Bound">y₂</a><a id="7409" class="Symbol">}</a> <a id="7411" class="Symbol">(</a><a id="7412" href="Induction.WellFounded.html#7412" class="Bound">x₁<x₂</a> <a id="7418" class="Symbol">:</a> <a id="7420" href="Induction.WellFounded.html#7261" class="Bound">RelA</a> <a id="7427" href="Induction.WellFounded.html#7398" class="Bound">x₁</a> <a id="7430" href="Induction.WellFounded.html#7404" class="Bound">x₂</a><a id="7432" class="Symbol">)</a> <a id="7434" class="Symbol">→</a> <a id="7436" class="Symbol">(</a><a id="7437" href="Induction.WellFounded.html#7398" class="Bound">x₁</a> <a id="7440" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="7442" href="Induction.WellFounded.html#7401" class="Bound">y₁</a><a id="7444" class="Symbol">)</a> <a id="7446" href="Induction.WellFounded.html#7341" class="Datatype Operator"><</a> <a id="7448" class="Symbol">(</a><a id="7449" href="Induction.WellFounded.html#7404" class="Bound">x₂</a> <a id="7452" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="7454" href="Induction.WellFounded.html#7407" class="Bound">y₂</a><a id="7456" class="Symbol">)</a>
|
|||
|
<a id="Lexicographic._<_.right"></a><a id="7462" href="Induction.WellFounded.html#7462" class="InductiveConstructor">right</a> <a id="7468" class="Symbol">:</a> <a id="7470" class="Symbol">∀</a> <a id="7472" class="Symbol">{</a><a id="7473" href="Induction.WellFounded.html#7473" class="Bound">x</a> <a id="7475" href="Induction.WellFounded.html#7475" class="Bound">y₁</a> <a id="7478" href="Induction.WellFounded.html#7478" class="Bound">y₂</a><a id="7480" class="Symbol">}</a> <a id="7486" class="Symbol">(</a><a id="7487" href="Induction.WellFounded.html#7487" class="Bound">y₁<y₂</a> <a id="7493" class="Symbol">:</a> <a id="7495" href="Induction.WellFounded.html#7300" class="Bound">RelB</a> <a id="7500" href="Induction.WellFounded.html#7473" class="Bound">x</a> <a id="7502" href="Induction.WellFounded.html#7475" class="Bound">y₁</a> <a id="7505" href="Induction.WellFounded.html#7478" class="Bound">y₂</a><a id="7507" class="Symbol">)</a> <a id="7509" class="Symbol">→</a> <a id="7511" class="Symbol">(</a><a id="7512" href="Induction.WellFounded.html#7473" class="Bound">x</a> <a id="7515" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="7517" href="Induction.WellFounded.html#7475" class="Bound">y₁</a><a id="7519" class="Symbol">)</a> <a id="7521" href="Induction.WellFounded.html#7341" class="Datatype Operator"><</a> <a id="7523" class="Symbol">(</a><a id="7524" href="Induction.WellFounded.html#7473" class="Bound">x</a> <a id="7527" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="7529" href="Induction.WellFounded.html#7478" class="Bound">y₂</a><a id="7531" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="7536" class="Keyword">mutual</a>
|
|||
|
|
|||
|
<a id="Lexicographic.accessible"></a><a id="7548" href="Induction.WellFounded.html#7548" class="Function">accessible</a> <a id="7559" class="Symbol">:</a> <a id="7561" class="Symbol">∀</a> <a id="7563" class="Symbol">{</a><a id="7564" href="Induction.WellFounded.html#7564" class="Bound">x</a> <a id="7566" href="Induction.WellFounded.html#7566" class="Bound">y</a><a id="7567" class="Symbol">}</a> <a id="7569" class="Symbol">→</a>
|
|||
|
<a id="7588" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="7592" href="Induction.WellFounded.html#7261" class="Bound">RelA</a> <a id="7597" href="Induction.WellFounded.html#7564" class="Bound">x</a> <a id="7599" class="Symbol">→</a> <a id="7601" class="Symbol">(∀</a> <a id="7604" class="Symbol">{</a><a id="7605" href="Induction.WellFounded.html#7605" class="Bound">x</a><a id="7606" class="Symbol">}</a> <a id="7608" class="Symbol">→</a> <a id="7610" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="7622" class="Symbol">(</a><a id="7623" href="Induction.WellFounded.html#7300" class="Bound">RelB</a> <a id="7628" href="Induction.WellFounded.html#7605" class="Bound">x</a><a id="7629" class="Symbol">))</a> <a id="7632" class="Symbol">→</a>
|
|||
|
<a id="7651" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="7655" href="Induction.WellFounded.html#7341" class="Datatype Operator">_<_</a> <a id="7659" class="Symbol">(</a><a id="7660" href="Induction.WellFounded.html#7564" class="Bound">x</a> <a id="7662" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="7664" href="Induction.WellFounded.html#7566" class="Bound">y</a><a id="7665" class="Symbol">)</a>
|
|||
|
<a id="7671" href="Induction.WellFounded.html#7548" class="Function">accessible</a> <a id="7682" href="Induction.WellFounded.html#7682" class="Bound">accA</a> <a id="7687" href="Induction.WellFounded.html#7687" class="Bound">wfB</a> <a id="7691" class="Symbol">=</a> <a id="7693" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="7697" class="Symbol">(</a><a id="7698" href="Induction.WellFounded.html#7734" class="Function">accessible′</a> <a id="7710" href="Induction.WellFounded.html#7682" class="Bound">accA</a> <a id="7715" class="Symbol">(</a><a id="7716" href="Induction.WellFounded.html#7687" class="Bound">wfB</a> <a id="7720" class="Symbol">_)</a> <a id="7723" href="Induction.WellFounded.html#7687" class="Bound">wfB</a><a id="7726" class="Symbol">)</a>
|
|||
|
|
|||
|
|
|||
|
<a id="Lexicographic.accessible′"></a><a id="7734" href="Induction.WellFounded.html#7734" class="Function">accessible′</a> <a id="7746" class="Symbol">:</a>
|
|||
|
<a id="7754" class="Symbol">∀</a> <a id="7756" class="Symbol">{</a><a id="7757" href="Induction.WellFounded.html#7757" class="Bound">x</a> <a id="7759" href="Induction.WellFounded.html#7759" class="Bound">y</a><a id="7760" class="Symbol">}</a> <a id="7762" class="Symbol">→</a>
|
|||
|
<a id="7770" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="7774" href="Induction.WellFounded.html#7261" class="Bound">RelA</a> <a id="7779" href="Induction.WellFounded.html#7757" class="Bound">x</a> <a id="7781" class="Symbol">→</a> <a id="7783" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="7787" class="Symbol">(</a><a id="7788" href="Induction.WellFounded.html#7300" class="Bound">RelB</a> <a id="7793" href="Induction.WellFounded.html#7757" class="Bound">x</a><a id="7794" class="Symbol">)</a> <a id="7796" href="Induction.WellFounded.html#7759" class="Bound">y</a> <a id="7798" class="Symbol">→</a> <a id="7800" class="Symbol">(∀</a> <a id="7803" class="Symbol">{</a><a id="7804" href="Induction.WellFounded.html#7804" class="Bound">x</a><a id="7805" class="Symbol">}</a> <a id="7807" class="Symbol">→</a> <a id="7809" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="7821" class="Symbol">(</a><a id="7822" href="Induction.WellFounded.html#7300" class="Bound">RelB</a> <a id="7827" href="Induction.WellFounded.html#7804" class="Bound">x</a><a id="7828" class="Symbol">))</a> <a id="7831" class="Symbol">→</a>
|
|||
|
<a id="7839" href="Induction.WellFounded.html#803" class="Function">WfRec</a> <a id="7845" href="Induction.WellFounded.html#7341" class="Datatype Operator">_<_</a> <a id="7849" class="Symbol">(</a><a id="7850" href="Induction.WellFounded.html#1009" class="Datatype">Acc</a> <a id="7854" href="Induction.WellFounded.html#7341" class="Datatype Operator">_<_</a><a id="7857" class="Symbol">)</a> <a id="7859" class="Symbol">(</a><a id="7860" href="Induction.WellFounded.html#7757" class="Bound">x</a> <a id="7862" href="Agda.Builtin.Sigma.html#218" class="InductiveConstructor Operator">,</a> <a id="7864" href="Induction.WellFounded.html#7759" class="Bound">y</a><a id="7865" class="Symbol">)</a>
|
|||
|
<a id="7871" href="Induction.WellFounded.html#7734" class="Function">accessible′</a> <a id="7883" class="Symbol">(</a><a id="7884" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="7888" href="Induction.WellFounded.html#7888" class="Bound">rsA</a><a id="7891" class="Symbol">)</a> <a id="7893" class="Symbol">_</a> <a id="7898" href="Induction.WellFounded.html#7898" class="Bound">wfB</a> <a id="7902" class="DottedPattern Symbol">._</a> <a id="7905" class="Symbol">(</a><a id="7906" href="Induction.WellFounded.html#7387" class="InductiveConstructor">left</a> <a id="7912" href="Induction.WellFounded.html#7912" class="Bound">x′<x</a><a id="7916" class="Symbol">)</a> <a id="7918" class="Symbol">=</a> <a id="7920" href="Induction.WellFounded.html#7548" class="Function">accessible</a> <a id="7931" class="Symbol">(</a><a id="7932" href="Induction.WellFounded.html#7888" class="Bound">rsA</a> <a id="7936" class="Symbol">_</a> <a id="7938" href="Induction.WellFounded.html#7912" class="Bound">x′<x</a><a id="7942" class="Symbol">)</a> <a id="7944" href="Induction.WellFounded.html#7898" class="Bound">wfB</a>
|
|||
|
<a id="7952" href="Induction.WellFounded.html#7734" class="CatchallClause Function">accessible′</a><a id="7963" class="CatchallClause"> </a><a id="7964" href="Induction.WellFounded.html#7964" class="CatchallClause Bound">accA</a><a id="7968" class="CatchallClause"> </a><a id="7969" class="CatchallClause Symbol">(</a><a id="7970" href="Induction.WellFounded.html#1071" class="CatchallClause InductiveConstructor">acc</a><a id="7973" class="CatchallClause"> </a><a id="7974" href="Induction.WellFounded.html#7974" class="CatchallClause Bound">rsB</a><a id="7977" class="CatchallClause Symbol">)</a><a id="7978" class="CatchallClause"> </a><a id="7979" href="Induction.WellFounded.html#7979" class="CatchallClause Bound">wfB</a><a id="7982" class="CatchallClause"> </a><a id="7983" class="DottedPattern CatchallClause Symbol">._</a><a id="7985" class="CatchallClause"> </a><a id="7986" class="CatchallClause Symbol">(</a><a id="7987" href="Induction.WellFounded.html#7462" class="CatchallClause InductiveConstructor">right</a><a id="7992" class="CatchallClause"> </a><a id="7993" href="Induction.WellFounded.html#7993" class="CatchallClause Bound">y′<y</a><a id="7997" class="CatchallClause Symbol">)</a> <a id="7999" class="Symbol">=</a>
|
|||
|
<a id="8007" href="Induction.WellFounded.html#1071" class="InductiveConstructor">acc</a> <a id="8011" class="Symbol">(</a><a id="8012" href="Induction.WellFounded.html#7734" class="Function">accessible′</a> <a id="8024" href="Induction.WellFounded.html#7964" class="Bound">accA</a> <a id="8029" class="Symbol">(</a><a id="8030" href="Induction.WellFounded.html#7974" class="Bound">rsB</a> <a id="8034" class="Symbol">_</a> <a id="8036" href="Induction.WellFounded.html#7993" class="Bound">y′<y</a><a id="8040" class="Symbol">)</a> <a id="8042" href="Induction.WellFounded.html#7979" class="Bound">wfB</a><a id="8045" class="Symbol">)</a>
|
|||
|
|
|||
|
<a id="Lexicographic.wellFounded"></a><a id="8050" href="Induction.WellFounded.html#8050" class="Function">wellFounded</a> <a id="8062" class="Symbol">:</a> <a id="8064" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="8076" href="Induction.WellFounded.html#7261" class="Bound">RelA</a> <a id="8081" class="Symbol">→</a> <a id="8083" class="Symbol">(∀</a> <a id="8086" class="Symbol">{</a><a id="8087" href="Induction.WellFounded.html#8087" class="Bound">x</a><a id="8088" class="Symbol">}</a> <a id="8090" class="Symbol">→</a> <a id="8092" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="8104" class="Symbol">(</a><a id="8105" href="Induction.WellFounded.html#7300" class="Bound">RelB</a> <a id="8110" href="Induction.WellFounded.html#8087" class="Bound">x</a><a id="8111" class="Symbol">))</a> <a id="8114" class="Symbol">→</a>
|
|||
|
<a id="8132" href="Induction.WellFounded.html#1257" class="Function">WellFounded</a> <a id="8144" href="Induction.WellFounded.html#7341" class="Datatype Operator">_<_</a>
|
|||
|
<a id="8150" href="Induction.WellFounded.html#8050" class="Function">wellFounded</a> <a id="8162" href="Induction.WellFounded.html#8162" class="Bound">wfA</a> <a id="8166" href="Induction.WellFounded.html#8166" class="Bound">wfB</a> <a id="8170" href="Induction.WellFounded.html#8170" class="Bound">p</a> <a id="8172" class="Symbol">=</a> <a id="8174" href="Induction.WellFounded.html#7548" class="Function">accessible</a> <a id="8185" class="Symbol">(</a><a id="8186" href="Induction.WellFounded.html#8162" class="Bound">wfA</a> <a id="8190" class="Symbol">(</a><a id="8191" href="Agda.Builtin.Sigma.html#234" class="Field">proj₁</a> <a id="8197" href="Induction.WellFounded.html#8170" class="Bound">p</a><a id="8198" class="Symbol">))</a> <a id="8201" href="Induction.WellFounded.html#8166" class="Bound">wfB</a>
|
|||
|
|
|||
|
<a id="Lexicographic.well-founded"></a><a id="8208" href="Induction.WellFounded.html#8208" class="Function">well-founded</a> <a id="8221" class="Symbol">=</a> <a id="8223" href="Induction.WellFounded.html#8050" class="Function">wellFounded</a>
|
|||
|
|
|||
|
<a id="8238" class="Symbol">{-#</a> <a id="8242" class="Keyword">WARNING_ON_USAGE</a> <a id="8259" class="Pragma">_<_</a>
|
|||
|
<a id="8265" class="String">"Warning: _<_ was deprecated in v1.3.
|
|||
|
\ \Please use `×-Lex` from `Data.Product.Relation.Binary.Lex.Strict` instead."</a>
|
|||
|
<a id="8384" class="Symbol">#-}</a>
|
|||
|
<a id="8390" class="Symbol">{-#</a> <a id="8394" class="Keyword">WARNING_ON_USAGE</a> <a id="8411" class="Pragma">accessible</a>
|
|||
|
<a id="8424" class="String">"Warning: accessible was deprecated in v1.3."</a>
|
|||
|
<a id="8472" class="Symbol">#-}</a>
|
|||
|
<a id="8478" class="Symbol">{-#</a> <a id="8482" class="Keyword">WARNING_ON_USAGE</a> <a id="8499" class="Pragma">accessible′</a>
|
|||
|
<a id="8513" class="String">"Warning: accessible′ was deprecated in v1.3."</a>
|
|||
|
<a id="8562" class="Symbol">#-}</a>
|
|||
|
<a id="8568" class="Symbol">{-#</a> <a id="8572" class="Keyword">WARNING_ON_USAGE</a> <a id="8589" class="Pragma">wellFounded</a>
|
|||
|
<a id="8603" class="String">"Warning: wellFounded was deprecated in v1.3.
|
|||
|
\ \Please use `×-wellFounded` from `Data.Product.Relation.Binary.Lex.Strict` instead."</a>
|
|||
|
<a id="8738" class="Symbol">#-}</a>
|
|||
|
<a id="8744" class="Symbol">{-#</a> <a id="8748" class="Keyword">WARNING_ON_USAGE</a> <a id="8765" class="Pragma">well-founded</a>
|
|||
|
<a id="8780" class="String">"Warning: well-founded was deprecated in v0.15.
|
|||
|
\ \Please use wellFounded instead."</a>
|
|||
|
<a id="8866" class="Symbol">#-}</a>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<a id="8873" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="8946" class="Comment">-- DEPRECATED NAMES</a>
|
|||
|
<a id="8966" class="Comment">------------------------------------------------------------------------</a>
|
|||
|
<a id="9039" class="Comment">-- Please use the new names as continuing support for the old names is</a>
|
|||
|
<a id="9110" class="Comment">-- not guaranteed.</a>
|
|||
|
|
|||
|
<a id="9130" class="Comment">-- Version 1.0</a>
|
|||
|
|
|||
|
<a id="9146" class="Keyword">module</a> <a id="Inverse-image"></a><a id="9153" href="Induction.WellFounded.html#9153" class="Module">Inverse-image</a> <a id="9167" class="Symbol">=</a> <a id="9169" href="Induction.WellFounded.html#4977" class="Module">InverseImage</a>
|
|||
|
<a id="9182" class="Keyword">module</a> <a id="Transitive-closure"></a><a id="9189" href="Induction.WellFounded.html#9189" class="Module">Transitive-closure</a> <a id="9208" class="Symbol">=</a> <a id="9210" href="Induction.WellFounded.html#5891" class="Module">TransitiveClosure</a>
|
|||
|
</pre></body></html>
|