bsc-leon-vatthauer/agda/bsc-thesis/Function.Metric.Bundles.html

151 lines
37 KiB
HTML
Raw Normal View History

2024-02-09 17:53:52 +01:00
<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>Function.Metric.Bundles</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">-- Bundles for metrics</a>
<a id="129" class="Comment">------------------------------------------------------------------------</a>
<a id="203" class="Comment">-- The contents of this module should be accessed via `Function.Metric`.</a>
<a id="277" class="Symbol">{-#</a> <a id="281" class="Keyword">OPTIONS</a> <a id="289" class="Pragma">--cubical-compatible</a> <a id="310" class="Pragma">--safe</a> <a id="317" class="Symbol">#-}</a>
<a id="322" class="Keyword">module</a> <a id="329" href="Function.Metric.Bundles.html" class="Module">Function.Metric.Bundles</a> <a id="354" class="Keyword">where</a>
<a id="361" class="Keyword">open</a> <a id="366" class="Keyword">import</a> <a id="373" href="Algebra.Core.html" class="Module">Algebra.Core</a> <a id="386" class="Keyword">using</a> <a id="392" class="Symbol">(</a><a id="393" href="Algebra.Core.html#527" class="Function">Op₂</a><a id="396" class="Symbol">)</a>
<a id="398" class="Keyword">open</a> <a id="403" class="Keyword">import</a> <a id="410" href="Level.html" class="Module">Level</a> <a id="416" class="Keyword">using</a> <a id="422" class="Symbol">(</a><a id="423" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="428" class="Symbol">;</a> <a id="430" href="Agda.Primitive.html#931" class="Primitive">suc</a><a id="433" class="Symbol">;</a> <a id="435" href="Agda.Primitive.html#961" class="Primitive Operator">_⊔_</a><a id="438" class="Symbol">)</a>
<a id="440" class="Keyword">open</a> <a id="445" class="Keyword">import</a> <a id="452" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a> <a id="473" class="Keyword">using</a> <a id="479" class="Symbol">(</a><a id="480" href="Relation.Binary.Core.html#896" class="Function">Rel</a><a id="483" class="Symbol">)</a>
<a id="486" class="Keyword">open</a> <a id="491" class="Keyword">import</a> <a id="498" href="Function.Metric.Structures.html" class="Module">Function.Metric.Structures</a>
<a id="525" class="Keyword">open</a> <a id="530" class="Keyword">import</a> <a id="537" href="Function.Metric.Core.html" class="Module">Function.Metric.Core</a>
<a id="559" class="Comment">------------------------------------------------------------------------</a>
<a id="632" class="Comment">-- ProtoMetric</a>
<a id="648" class="Keyword">record</a> <a id="ProtoMetric"></a><a id="655" href="Function.Metric.Bundles.html#655" class="Record">ProtoMetric</a> <a id="667" class="Symbol">(</a><a id="668" href="Function.Metric.Bundles.html#668" class="Bound">a</a> <a id="670" href="Function.Metric.Bundles.html#670" class="Bound">i</a> <a id="672" href="Function.Metric.Bundles.html#672" class="Bound">ℓ₁</a> <a id="675" href="Function.Metric.Bundles.html#675" class="Bound">ℓ₂</a> <a id="678" href="Function.Metric.Bundles.html#678" class="Bound">ℓ₃</a> <a id="681" class="Symbol">:</a> <a id="683" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="688" class="Symbol">)</a>
<a id="707" class="Symbol">:</a> <a id="709" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="713" class="Symbol">(</a><a id="714" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="718" class="Symbol">(</a><a id="719" href="Function.Metric.Bundles.html#668" class="Bound">a</a> <a id="721" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="723" href="Function.Metric.Bundles.html#670" class="Bound">i</a> <a id="725" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="727" href="Function.Metric.Bundles.html#672" class="Bound">ℓ₁</a> <a id="730" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="732" href="Function.Metric.Bundles.html#675" class="Bound">ℓ₂</a> <a id="735" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="737" href="Function.Metric.Bundles.html#678" class="Bound">ℓ₃</a><a id="739" class="Symbol">))</a> <a id="742" class="Keyword">where</a>
<a id="750" class="Keyword">infix</a> <a id="756" class="Number">4</a> <a id="758" href="Function.Metric.Bundles.html#835" class="Field Operator">_≈_</a> <a id="762" href="Function.Metric.Bundles.html#870" class="Field Operator">_≈ᵢ_</a> <a id="767" href="Function.Metric.Bundles.html#903" class="Field Operator">_≤_</a>
<a id="773" class="Keyword">field</a>
<a id="ProtoMetric.Carrier"></a><a id="783" href="Function.Metric.Bundles.html#783" class="Field">Carrier</a> <a id="797" class="Symbol">:</a> <a id="799" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="803" href="Function.Metric.Bundles.html#668" class="Bound">a</a>
<a id="ProtoMetric.Image"></a><a id="809" href="Function.Metric.Bundles.html#809" class="Field">Image</a> <a id="823" class="Symbol">:</a> <a id="825" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="829" href="Function.Metric.Bundles.html#670" class="Bound">i</a>
<a id="ProtoMetric._≈_"></a><a id="835" href="Function.Metric.Bundles.html#835" class="Field Operator">_≈_</a> <a id="849" class="Symbol">:</a> <a id="851" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="855" href="Function.Metric.Bundles.html#783" class="Field">Carrier</a> <a id="863" href="Function.Metric.Bundles.html#672" class="Bound">ℓ₁</a>
<a id="ProtoMetric._≈ᵢ_"></a><a id="870" href="Function.Metric.Bundles.html#870" class="Field Operator">_≈ᵢ_</a> <a id="884" class="Symbol">:</a> <a id="886" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="890" href="Function.Metric.Bundles.html#809" class="Field">Image</a> <a id="896" href="Function.Metric.Bundles.html#675" class="Bound">ℓ₂</a>
<a id="ProtoMetric._≤_"></a><a id="903" href="Function.Metric.Bundles.html#903" class="Field Operator">_≤_</a> <a id="917" class="Symbol">:</a> <a id="919" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="923" href="Function.Metric.Bundles.html#809" class="Field">Image</a> <a id="929" href="Function.Metric.Bundles.html#678" class="Bound">ℓ₃</a>
<a id="ProtoMetric.0#"></a><a id="936" href="Function.Metric.Bundles.html#936" class="Field">0#</a> <a id="950" class="Symbol">:</a> <a id="952" href="Function.Metric.Bundles.html#809" class="Field">Image</a>
<a id="ProtoMetric.d"></a><a id="962" href="Function.Metric.Bundles.html#962" class="Field">d</a> <a id="976" class="Symbol">:</a> <a id="978" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="995" href="Function.Metric.Bundles.html#783" class="Field">Carrier</a> <a id="1003" href="Function.Metric.Bundles.html#809" class="Field">Image</a>
<a id="ProtoMetric.isProtoMetric"></a><a id="1013" href="Function.Metric.Bundles.html#1013" class="Field">isProtoMetric</a> <a id="1027" class="Symbol">:</a> <a id="1029" href="Function.Metric.Structures.html#996" class="Record">IsProtoMetric</a> <a id="1043" href="Function.Metric.Bundles.html#835" class="Field Operator">_≈_</a> <a id="1047" href="Function.Metric.Bundles.html#870" class="Field Operator">_≈ᵢ_</a> <a id="1052" href="Function.Metric.Bundles.html#903" class="Field Operator">_≤_</a> <a id="1056" href="Function.Metric.Bundles.html#936" class="Field">0#</a> <a id="1059" href="Function.Metric.Bundles.html#962" class="Field">d</a>
<a id="1064" class="Keyword">open</a> <a id="1069" href="Function.Metric.Structures.html#996" class="Module">IsProtoMetric</a> <a id="1083" href="Function.Metric.Bundles.html#1013" class="Field">isProtoMetric</a> <a id="1097" class="Keyword">public</a>
<a id="1105" class="Comment">------------------------------------------------------------------------</a>
<a id="1178" class="Comment">-- PreMetric</a>
<a id="1192" class="Keyword">record</a> <a id="PreMetric"></a><a id="1199" href="Function.Metric.Bundles.html#1199" class="Record">PreMetric</a> <a id="1209" class="Symbol">(</a><a id="1210" href="Function.Metric.Bundles.html#1210" class="Bound">a</a> <a id="1212" href="Function.Metric.Bundles.html#1212" class="Bound">i</a> <a id="1214" href="Function.Metric.Bundles.html#1214" class="Bound">ℓ₁</a> <a id="1217" href="Function.Metric.Bundles.html#1217" class="Bound">ℓ₂</a> <a id="1220" href="Function.Metric.Bundles.html#1220" class="Bound">ℓ₃</a> <a id="1223" class="Symbol">:</a> <a id="1225" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="1230" class="Symbol">)</a>
<a id="1247" class="Symbol">:</a> <a id="1249" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1253" class="Symbol">(</a><a id="1254" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="1258" class="Symbol">(</a><a id="1259" href="Function.Metric.Bundles.html#1210" class="Bound">a</a> <a id="1261" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1263" href="Function.Metric.Bundles.html#1212" class="Bound">i</a> <a id="1265" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1267" href="Function.Metric.Bundles.html#1214" class="Bound">ℓ₁</a> <a id="1270" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1272" href="Function.Metric.Bundles.html#1217" class="Bound">ℓ₂</a> <a id="1275" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1277" href="Function.Metric.Bundles.html#1220" class="Bound">ℓ₃</a><a id="1279" class="Symbol">))</a> <a id="1282" class="Keyword">where</a>
<a id="1290" class="Keyword">infix</a> <a id="1296" class="Number">4</a> <a id="1298" href="Function.Metric.Bundles.html#1371" class="Field Operator">_≈_</a> <a id="1302" href="Function.Metric.Bundles.html#1404" class="Field Operator">_≈ᵢ_</a> <a id="1307" href="Function.Metric.Bundles.html#1435" class="Field Operator">_≤_</a>
<a id="1313" class="Keyword">field</a>
<a id="PreMetric.Carrier"></a><a id="1323" href="Function.Metric.Bundles.html#1323" class="Field">Carrier</a> <a id="1335" class="Symbol">:</a> <a id="1337" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1341" href="Function.Metric.Bundles.html#1210" class="Bound">a</a>
<a id="PreMetric.Image"></a><a id="1347" href="Function.Metric.Bundles.html#1347" class="Field">Image</a> <a id="1359" class="Symbol">:</a> <a id="1361" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1365" href="Function.Metric.Bundles.html#1212" class="Bound">i</a>
<a id="PreMetric._≈_"></a><a id="1371" href="Function.Metric.Bundles.html#1371" class="Field Operator">_≈_</a> <a id="1383" class="Symbol">:</a> <a id="1385" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="1389" href="Function.Metric.Bundles.html#1323" class="Field">Carrier</a> <a id="1397" href="Function.Metric.Bundles.html#1214" class="Bound">ℓ₁</a>
<a id="PreMetric._≈ᵢ_"></a><a id="1404" href="Function.Metric.Bundles.html#1404" class="Field Operator">_≈ᵢ_</a> <a id="1416" class="Symbol">:</a> <a id="1418" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="1422" href="Function.Metric.Bundles.html#1347" class="Field">Image</a> <a id="1428" href="Function.Metric.Bundles.html#1217" class="Bound">ℓ₂</a>
<a id="PreMetric._≤_"></a><a id="1435" href="Function.Metric.Bundles.html#1435" class="Field Operator">_≤_</a> <a id="1447" class="Symbol">:</a> <a id="1449" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="1453" href="Function.Metric.Bundles.html#1347" class="Field">Image</a> <a id="1459" href="Function.Metric.Bundles.html#1220" class="Bound">ℓ₃</a>
<a id="PreMetric.0#"></a><a id="1466" href="Function.Metric.Bundles.html#1466" class="Field">0#</a> <a id="1478" class="Symbol">:</a> <a id="1480" href="Function.Metric.Bundles.html#1347" class="Field">Image</a>
<a id="PreMetric.d"></a><a id="1490" href="Function.Metric.Bundles.html#1490" class="Field">d</a> <a id="1502" class="Symbol">:</a> <a id="1504" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="1521" href="Function.Metric.Bundles.html#1323" class="Field">Carrier</a> <a id="1529" href="Function.Metric.Bundles.html#1347" class="Field">Image</a>
<a id="PreMetric.isPreMetric"></a><a id="1539" href="Function.Metric.Bundles.html#1539" class="Field">isPreMetric</a> <a id="1551" class="Symbol">:</a> <a id="1553" href="Function.Metric.Structures.html#1497" class="Record">IsPreMetric</a> <a id="1565" href="Function.Metric.Bundles.html#1371" class="Field Operator">_≈_</a> <a id="1569" href="Function.Metric.Bundles.html#1404" class="Field Operator">_≈ᵢ_</a> <a id="1574" href="Function.Metric.Bundles.html#1435" class="Field Operator">_≤_</a> <a id="1578" href="Function.Metric.Bundles.html#1466" class="Field">0#</a> <a id="1581" href="Function.Metric.Bundles.html#1490" class="Field">d</a>
<a id="1586" class="Keyword">open</a> <a id="1591" href="Function.Metric.Structures.html#1497" class="Module">IsPreMetric</a> <a id="1603" href="Function.Metric.Bundles.html#1539" class="Field">isPreMetric</a> <a id="1615" class="Keyword">public</a>
<a id="PreMetric.protoMetric"></a><a id="1625" href="Function.Metric.Bundles.html#1625" class="Function">protoMetric</a> <a id="1637" class="Symbol">:</a> <a id="1639" href="Function.Metric.Bundles.html#655" class="Record">ProtoMetric</a> <a id="1651" href="Function.Metric.Bundles.html#1210" class="Bound">a</a> <a id="1653" href="Function.Metric.Bundles.html#1212" class="Bound">i</a> <a id="1655" href="Function.Metric.Bundles.html#1214" class="Bound">ℓ₁</a> <a id="1658" href="Function.Metric.Bundles.html#1217" class="Bound">ℓ₂</a> <a id="1661" href="Function.Metric.Bundles.html#1220" class="Bound">ℓ₃</a>
<a id="1666" href="Function.Metric.Bundles.html#1625" class="Function">protoMetric</a> <a id="1678" class="Symbol">=</a> <a id="1680" class="Keyword">record</a>
<a id="1691" class="Symbol">{</a> <a id="1693" href="Function.Metric.Bundles.html#1013" class="Field">isProtoMetric</a> <a id="1707" class="Symbol">=</a> <a id="1709" href="Function.Metric.Structures.html#1600" class="Function">isProtoMetric</a>
<a id="1727" class="Symbol">}</a>
<a id="1730" class="Comment">------------------------------------------------------------------------</a>
<a id="1803" class="Comment">-- QuasiSemiMetric</a>
<a id="1823" class="Keyword">record</a> <a id="QuasiSemiMetric"></a><a id="1830" href="Function.Metric.Bundles.html#1830" class="Record">QuasiSemiMetric</a> <a id="1846" class="Symbol">(</a><a id="1847" href="Function.Metric.Bundles.html#1847" class="Bound">a</a> <a id="1849" href="Function.Metric.Bundles.html#1849" class="Bound">i</a> <a id="1851" href="Function.Metric.Bundles.html#1851" class="Bound">ℓ₁</a> <a id="1854" href="Function.Metric.Bundles.html#1854" class="Bound">ℓ₂</a> <a id="1857" href="Function.Metric.Bundles.html#1857" class="Bound">ℓ₃</a> <a id="1860" class="Symbol">:</a> <a id="1862" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="1867" class="Symbol">)</a>
<a id="1890" class="Symbol">:</a> <a id="1892" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1896" class="Symbol">(</a><a id="1897" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="1901" class="Symbol">(</a><a id="1902" href="Function.Metric.Bundles.html#1847" class="Bound">a</a> <a id="1904" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1906" href="Function.Metric.Bundles.html#1849" class="Bound">i</a> <a id="1908" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1910" href="Function.Metric.Bundles.html#1851" class="Bound">ℓ₁</a> <a id="1913" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1915" href="Function.Metric.Bundles.html#1854" class="Bound">ℓ₂</a> <a id="1918" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1920" href="Function.Metric.Bundles.html#1857" class="Bound">ℓ₃</a><a id="1922" class="Symbol">))</a> <a id="1925" class="Keyword">where</a>
<a id="1934" class="Keyword">infix</a> <a id="1940" class="Number">4</a> <a id="1942" href="Function.Metric.Bundles.html#2027" class="Field Operator">_≈_</a> <a id="1946" href="Function.Metric.Bundles.html#2066" class="Field Operator">_≈ᵢ_</a> <a id="1951" href="Function.Metric.Bundles.html#2103" class="Field Operator">_≤_</a>
<a id="1957" class="Keyword">field</a>
<a id="QuasiSemiMetric.Carrier"></a><a id="1967" href="Function.Metric.Bundles.html#1967" class="Field">Carrier</a> <a id="1985" class="Symbol">:</a> <a id="1987" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1991" href="Function.Metric.Bundles.html#1847" class="Bound">a</a>
<a id="QuasiSemiMetric.Image"></a><a id="1997" href="Function.Metric.Bundles.html#1997" class="Field">Image</a> <a id="2015" class="Symbol">:</a> <a id="2017" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2021" href="Function.Metric.Bundles.html#1849" class="Bound">i</a>
<a id="QuasiSemiMetric._≈_"></a><a id="2027" href="Function.Metric.Bundles.html#2027" class="Field Operator">_≈_</a> <a id="2045" class="Symbol">:</a> <a id="2047" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2051" href="Function.Metric.Bundles.html#1967" class="Field">Carrier</a> <a id="2059" href="Function.Metric.Bundles.html#1851" class="Bound">ℓ₁</a>
<a id="QuasiSemiMetric._≈ᵢ_"></a><a id="2066" href="Function.Metric.Bundles.html#2066" class="Field Operator">_≈ᵢ_</a> <a id="2084" class="Symbol">:</a> <a id="2086" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2090" href="Function.Metric.Bundles.html#1997" class="Field">Image</a> <a id="2096" href="Function.Metric.Bundles.html#1854" class="Bound">ℓ₂</a>
<a id="QuasiSemiMetric._≤_"></a><a id="2103" href="Function.Metric.Bundles.html#2103" class="Field Operator">_≤_</a> <a id="2121" class="Symbol">:</a> <a id="2123" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2127" href="Function.Metric.Bundles.html#1997" class="Field">Image</a> <a id="2133" href="Function.Metric.Bundles.html#1857" class="Bound">ℓ₃</a>
<a id="QuasiSemiMetric.0#"></a><a id="2140" href="Function.Metric.Bundles.html#2140" class="Field">0#</a> <a id="2158" class="Symbol">:</a> <a id="2160" href="Function.Metric.Bundles.html#1997" class="Field">Image</a>
<a id="QuasiSemiMetric.d"></a><a id="2170" href="Function.Metric.Bundles.html#2170" class="Field">d</a> <a id="2188" class="Symbol">:</a> <a id="2190" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="2207" href="Function.Metric.Bundles.html#1967" class="Field">Carrier</a> <a id="2215" href="Function.Metric.Bundles.html#1997" class="Field">Image</a>
<a id="QuasiSemiMetric.isQuasiSemiMetric"></a><a id="2225" href="Function.Metric.Bundles.html#2225" class="Field">isQuasiSemiMetric</a> <a id="2243" class="Symbol">:</a> <a id="2245" href="Function.Metric.Structures.html#1823" class="Record">IsQuasiSemiMetric</a> <a id="2263" href="Function.Metric.Bundles.html#2027" class="Field Operator">_≈_</a> <a id="2267" href="Function.Metric.Bundles.html#2066" class="Field Operator">_≈ᵢ_</a> <a id="2272" href="Function.Metric.Bundles.html#2103" class="Field Operator">_≤_</a> <a id="2276" href="Function.Metric.Bundles.html#2140" class="Field">0#</a> <a id="2279" href="Function.Metric.Bundles.html#2170" class="Field">d</a>
<a id="2284" class="Keyword">open</a> <a id="2289" href="Function.Metric.Structures.html#1823" class="Module">IsQuasiSemiMetric</a> <a id="2307" href="Function.Metric.Bundles.html#2225" class="Field">isQuasiSemiMetric</a> <a id="2325" class="Keyword">public</a>
<a id="QuasiSemiMetric.preMetric"></a><a id="2335" href="Function.Metric.Bundles.html#2335" class="Function">preMetric</a> <a id="2345" class="Symbol">:</a> <a id="2347" href="Function.Metric.Bundles.html#1199" class="Record">PreMetric</a> <a id="2357" href="Function.Metric.Bundles.html#1847" class="Bound">a</a> <a id="2359" href="Function.Metric.Bundles.html#1849" class="Bound">i</a> <a id="2361" href="Function.Metric.Bundles.html#1851" class="Bound">ℓ₁</a> <a id="2364" href="Function.Metric.Bundles.html#1854" class="Bound">ℓ₂</a> <a id="2367" href="Function.Metric.Bundles.html#1857" class="Bound">ℓ₃</a>
<a id="2372" href="Function.Metric.Bundles.html#2335" class="Function">preMetric</a> <a id="2382" class="Symbol">=</a> <a id="2384" class="Keyword">record</a>
<a id="2395" class="Symbol">{</a> <a id="2397" href="Function.Metric.Bundles.html#1539" class="Field">isPreMetric</a> <a id="2409" class="Symbol">=</a> <a id="2411" href="Function.Metric.Structures.html#1938" class="Function">isPreMetric</a>
<a id="2427" class="Symbol">}</a>
<a id="2432" class="Keyword">open</a> <a id="2437" href="Function.Metric.Bundles.html#1199" class="Module">PreMetric</a> <a id="2447" href="Function.Metric.Bundles.html#2335" class="Function">preMetric</a> <a id="2457" class="Keyword">public</a>
<a id="2468" class="Keyword">using</a> <a id="2474" class="Symbol">(</a><a id="2475" href="Function.Metric.Bundles.html#1625" class="Function">protoMetric</a><a id="2486" class="Symbol">)</a>
<a id="2489" class="Comment">------------------------------------------------------------------------</a>
<a id="2562" class="Comment">-- SemiMetric</a>
<a id="2577" class="Keyword">record</a> <a id="SemiMetric"></a><a id="2584" href="Function.Metric.Bundles.html#2584" class="Record">SemiMetric</a> <a id="2595" class="Symbol">(</a><a id="2596" href="Function.Metric.Bundles.html#2596" class="Bound">a</a> <a id="2598" href="Function.Metric.Bundles.html#2598" class="Bound">i</a> <a id="2600" href="Function.Metric.Bundles.html#2600" class="Bound">ℓ₁</a> <a id="2603" href="Function.Metric.Bundles.html#2603" class="Bound">ℓ₂</a> <a id="2606" href="Function.Metric.Bundles.html#2606" class="Bound">ℓ₃</a> <a id="2609" class="Symbol">:</a> <a id="2611" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="2616" class="Symbol">)</a>
<a id="2634" class="Symbol">:</a> <a id="2636" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2640" class="Symbol">(</a><a id="2641" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="2645" class="Symbol">(</a><a id="2646" href="Function.Metric.Bundles.html#2596" class="Bound">a</a> <a id="2648" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2650" href="Function.Metric.Bundles.html#2598" class="Bound">i</a> <a id="2652" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2654" href="Function.Metric.Bundles.html#2600" class="Bound">ℓ₁</a> <a id="2657" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2659" href="Function.Metric.Bundles.html#2603" class="Bound">ℓ₂</a> <a id="2662" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2664" href="Function.Metric.Bundles.html#2606" class="Bound">ℓ₃</a><a id="2666" class="Symbol">))</a> <a id="2669" class="Keyword">where</a>
<a id="2677" class="Keyword">infix</a> <a id="2683" class="Number">4</a> <a id="2685" href="Function.Metric.Bundles.html#2760" class="Field Operator">_≈_</a> <a id="2689" href="Function.Metric.Bundles.html#2794" class="Field Operator">_≈ᵢ_</a> <a id="2694" href="Function.Metric.Bundles.html#2826" class="Field Operator">_≤_</a>
<a id="2700" class="Keyword">field</a>
<a id="SemiMetric.Carrier"></a><a id="2710" href="Function.Metric.Bundles.html#2710" class="Field">Carrier</a> <a id="2723" class="Symbol">:</a> <a id="2725" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2729" href="Function.Metric.Bundles.html#2596" class="Bound">a</a>
<a id="SemiMetric.Image"></a><a id="2735" href="Function.Metric.Bundles.html#2735" class="Field">Image</a> <a id="2748" class="Symbol">:</a> <a id="2750" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2754" href="Function.Metric.Bundles.html#2598" class="Bound">i</a>
<a id="SemiMetric._≈_"></a><a id="2760" href="Function.Metric.Bundles.html#2760" class="Field Operator">_≈_</a> <a id="2773" class="Symbol">:</a> <a id="2775" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2779" href="Function.Metric.Bundles.html#2710" class="Field">Carrier</a> <a id="2787" href="Function.Metric.Bundles.html#2600" class="Bound">ℓ₁</a>
<a id="SemiMetric._≈ᵢ_"></a><a id="2794" href="Function.Metric.Bundles.html#2794" class="Field Operator">_≈ᵢ_</a> <a id="2807" class="Symbol">:</a> <a id="2809" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2813" href="Function.Metric.Bundles.html#2735" class="Field">Image</a> <a id="2819" href="Function.Metric.Bundles.html#2603" class="Bound">ℓ₂</a>
<a id="SemiMetric._≤_"></a><a id="2826" href="Function.Metric.Bundles.html#2826" class="Field Operator">_≤_</a> <a id="2839" class="Symbol">:</a> <a id="2841" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="2845" href="Function.Metric.Bundles.html#2735" class="Field">Image</a> <a id="2851" href="Function.Metric.Bundles.html#2606" class="Bound">ℓ₃</a>
<a id="SemiMetric.0#"></a><a id="2858" href="Function.Metric.Bundles.html#2858" class="Field">0#</a> <a id="2871" class="Symbol">:</a> <a id="2873" href="Function.Metric.Bundles.html#2735" class="Field">Image</a>
<a id="SemiMetric.d"></a><a id="2883" href="Function.Metric.Bundles.html#2883" class="Field">d</a> <a id="2896" class="Symbol">:</a> <a id="2898" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="2915" href="Function.Metric.Bundles.html#2710" class="Field">Carrier</a> <a id="2923" href="Function.Metric.Bundles.html#2735" class="Field">Image</a>
<a id="SemiMetric.isSemiMetric"></a><a id="2933" href="Function.Metric.Bundles.html#2933" class="Field">isSemiMetric</a> <a id="2946" class="Symbol">:</a> <a id="2948" href="Function.Metric.Structures.html#2150" class="Record">IsSemiMetric</a> <a id="2961" href="Function.Metric.Bundles.html#2760" class="Field Operator">_≈_</a> <a id="2965" href="Function.Metric.Bundles.html#2794" class="Field Operator">_≈ᵢ_</a> <a id="2970" href="Function.Metric.Bundles.html#2826" class="Field Operator">_≤_</a> <a id="2974" href="Function.Metric.Bundles.html#2858" class="Field">0#</a> <a id="2977" href="Function.Metric.Bundles.html#2883" class="Field">d</a>
<a id="2982" class="Keyword">open</a> <a id="2987" href="Function.Metric.Structures.html#2150" class="Module">IsSemiMetric</a> <a id="3000" href="Function.Metric.Bundles.html#2933" class="Field">isSemiMetric</a> <a id="3013" class="Keyword">public</a>
<a id="SemiMetric.quasiSemiMetric"></a><a id="3023" href="Function.Metric.Bundles.html#3023" class="Function">quasiSemiMetric</a> <a id="3039" class="Symbol">:</a> <a id="3041" href="Function.Metric.Bundles.html#1830" class="Record">QuasiSemiMetric</a> <a id="3057" href="Function.Metric.Bundles.html#2596" class="Bound">a</a> <a id="3059" href="Function.Metric.Bundles.html#2598" class="Bound">i</a> <a id="3061" href="Function.Metric.Bundles.html#2600" class="Bound">ℓ₁</a> <a id="3064" href="Function.Metric.Bundles.html#2603" class="Bound">ℓ₂</a> <a id="3067" href="Function.Metric.Bundles.html#2606" class="Bound">ℓ₃</a>
<a id="3072" href="Function.Metric.Bundles.html#3023" class="Function">quasiSemiMetric</a> <a id="3088" class="Symbol">=</a> <a id="3090" class="Keyword">record</a>
<a id="3101" class="Symbol">{</a> <a id="3103" href="Function.Metric.Bundles.html#2225" class="Field">isQuasiSemiMetric</a> <a id="3121" class="Symbol">=</a> <a id="3123" href="Function.Metric.Structures.html#2255" class="Function">isQuasiSemiMetric</a>
<a id="3145" class="Symbol">}</a>
<a id="3150" class="Keyword">open</a> <a id="3155" href="Function.Metric.Bundles.html#1830" class="Module">QuasiSemiMetric</a> <a id="3171" href="Function.Metric.Bundles.html#3023" class="Function">quasiSemiMetric</a> <a id="3187" class="Keyword">public</a>
<a id="3198" class="Keyword">using</a> <a id="3204" class="Symbol">(</a><a id="3205" href="Function.Metric.Bundles.html#1625" class="Function">protoMetric</a><a id="3216" class="Symbol">;</a> <a id="3218" href="Function.Metric.Bundles.html#2335" class="Function">preMetric</a><a id="3227" class="Symbol">)</a>
<a id="3230" class="Comment">------------------------------------------------------------------------</a>
<a id="3303" class="Comment">-- GeneralMetric</a>
<a id="3321" class="Comment">-- Note that this package is not necessarily a metric in the classical</a>
<a id="3392" class="Comment">-- sense as there is no way to ensure that the _∙_ operator really</a>
<a id="3459" class="Comment">-- represents addition. See `Function.Metric.Nat` and</a>
<a id="3513" class="Comment">-- `Function.Metric.Rational` for more specialised `Metric` and</a>
<a id="3577" class="Comment">-- `UltraMetric` packages.</a>
<a id="3605" class="Comment">-- See the discussion accompanying the `IsGeneralMetric` structure for</a>
<a id="3676" class="Comment">-- more details.</a>
<a id="3694" class="Keyword">record</a> <a id="GeneralMetric"></a><a id="3701" href="Function.Metric.Bundles.html#3701" class="Record">GeneralMetric</a> <a id="3715" class="Symbol">(</a><a id="3716" href="Function.Metric.Bundles.html#3716" class="Bound">a</a> <a id="3718" href="Function.Metric.Bundles.html#3718" class="Bound">i</a> <a id="3720" href="Function.Metric.Bundles.html#3720" class="Bound">ℓ₁</a> <a id="3723" href="Function.Metric.Bundles.html#3723" class="Bound">ℓ₂</a> <a id="3726" href="Function.Metric.Bundles.html#3726" class="Bound">ℓ₃</a> <a id="3729" class="Symbol">:</a> <a id="3731" href="Agda.Primitive.html#742" class="Postulate">Level</a><a id="3736" class="Symbol">)</a>
<a id="3757" class="Symbol">:</a> <a id="3759" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3763" class="Symbol">(</a><a id="3764" href="Agda.Primitive.html#931" class="Primitive">suc</a> <a id="3768" class="Symbol">(</a><a id="3769" href="Function.Metric.Bundles.html#3716" class="Bound">a</a> <a id="3771" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3773" href="Function.Metric.Bundles.html#3718" class="Bound">i</a> <a id="3775" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3777" href="Function.Metric.Bundles.html#3720" class="Bound">ℓ₁</a> <a id="3780" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3782" href="Function.Metric.Bundles.html#3723" class="Bound">ℓ₂</a> <a id="3785" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3787" href="Function.Metric.Bundles.html#3726" class="Bound">ℓ₃</a><a id="3789" class="Symbol">))</a> <a id="3792" class="Keyword">where</a>
<a id="3800" class="Keyword">infix</a> <a id="3806" class="Number">4</a> <a id="3808" href="Function.Metric.Bundles.html#3904" class="Field Operator">_≈_</a> <a id="3812" href="Function.Metric.Bundles.html#3941" class="Field Operator">_≈ᵢ_</a> <a id="3817" href="Function.Metric.Bundles.html#3976" class="Field Operator">_≤_</a>
<a id="3823" class="Keyword">infixl</a> <a id="3830" class="Number">6</a> <a id="3832" href="Function.Metric.Bundles.html#4039" class="Field Operator">_∙_</a>
<a id="3838" class="Keyword">field</a>
<a id="GeneralMetric.Carrier"></a><a id="3848" href="Function.Metric.Bundles.html#3848" class="Field">Carrier</a> <a id="3864" class="Symbol">:</a> <a id="3866" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3870" href="Function.Metric.Bundles.html#3716" class="Bound">a</a>
<a id="GeneralMetric.Image"></a><a id="3876" href="Function.Metric.Bundles.html#3876" class="Field">Image</a> <a id="3892" class="Symbol">:</a> <a id="3894" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3898" href="Function.Metric.Bundles.html#3718" class="Bound">i</a>
<a id="GeneralMetric._≈_"></a><a id="3904" href="Function.Metric.Bundles.html#3904" class="Field Operator">_≈_</a> <a id="3920" class="Symbol">:</a> <a id="3922" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="3926" href="Function.Metric.Bundles.html#3848" class="Field">Carrier</a> <a id="3934" href="Function.Metric.Bundles.html#3720" class="Bound">ℓ₁</a>
<a id="GeneralMetric._≈ᵢ_"></a><a id="3941" href="Function.Metric.Bundles.html#3941" class="Field Operator">_≈ᵢ_</a> <a id="3957" class="Symbol">:</a> <a id="3959" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="3963" href="Function.Metric.Bundles.html#3876" class="Field">Image</a> <a id="3969" href="Function.Metric.Bundles.html#3723" class="Bound">ℓ₂</a>
<a id="GeneralMetric._≤_"></a><a id="3976" href="Function.Metric.Bundles.html#3976" class="Field Operator">_≤_</a> <a id="3992" class="Symbol">:</a> <a id="3994" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="3998" href="Function.Metric.Bundles.html#3876" class="Field">Image</a> <a id="4004" href="Function.Metric.Bundles.html#3726" class="Bound">ℓ₃</a>
<a id="GeneralMetric.0#"></a><a id="4011" href="Function.Metric.Bundles.html#4011" class="Field">0#</a> <a id="4027" class="Symbol">:</a> <a id="4029" href="Function.Metric.Bundles.html#3876" class="Field">Image</a>
<a id="GeneralMetric._∙_"></a><a id="4039" href="Function.Metric.Bundles.html#4039" class="Field Operator">_∙_</a> <a id="4055" class="Symbol">:</a> <a id="4057" href="Algebra.Core.html#527" class="Function">Op₂</a> <a id="4061" href="Function.Metric.Bundles.html#3876" class="Field">Image</a>
<a id="GeneralMetric.d"></a><a id="4071" href="Function.Metric.Bundles.html#4071" class="Field">d</a> <a id="4087" class="Symbol">:</a> <a id="4089" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="4106" href="Function.Metric.Bundles.html#3848" class="Field">Carrier</a> <a id="4114" href="Function.Metric.Bundles.html#3876" class="Field">Image</a>
<a id="GeneralMetric.isGeneralMetric"></a><a id="4124" href="Function.Metric.Bundles.html#4124" class="Field">isGeneralMetric</a> <a id="4140" class="Symbol">:</a> <a id="4142" href="Function.Metric.Structures.html#3005" class="Record">IsGeneralMetric</a> <a id="4158" href="Function.Metric.Bundles.html#3904" class="Field Operator">_≈_</a> <a id="4162" href="Function.Metric.Bundles.html#3941" class="Field Operator">_≈ᵢ_</a> <a id="4167" href="Function.Metric.Bundles.html#3976" class="Field Operator">_≤_</a> <a id="4171" href="Function.Metric.Bundles.html#4011" class="Field">0#</a> <a id="4174" href="Function.Metric.Bundles.html#4039" class="Field Operator">_∙_</a> <a id="4178" href="Function.Metric.Bundles.html#4071" class="Field">d</a>
<a id="4183" class="Keyword">open</a> <a id="4188" href="Function.Metric.Structures.html#3005" class="Module">IsGeneralMetric</a> <a id="4204" href="Function.Metric.Bundles.html#4124" class="Field">isGeneralMetric</a> <a id="4220" class="Keyword">public</a>
<a id="GeneralMetric.semiMetric"></a><a id="4230" href="Function.Metric.Bundles.html#4230" class="Function">semiMetric</a> <a id="4241" class="Symbol">:</a> <a id="4243" href="Function.Metric.Bundles.html#2584" class="Record">SemiMetric</a> <a id="4254" href="Function.Metric.Bundles.html#3716" class="Bound">a</a> <a id="4256" href="Function.Metric.Bundles.html#3718" class="Bound">i</a> <a id="4258" href="Function.Metric.Bundles.html#3720" class="Bound">ℓ₁</a> <a id="4261" href="Function.Metric.Bundles.html#3723" class="Bound">ℓ₂</a> <a id="4264" href="Function.Metric.Bundles.html#3726" class="Bound">ℓ₃</a>
<a id="4269" href="Function.Metric.Bundles.html#4230" class="Function">semiMetric</a> <a id="4280" class="Symbol">=</a> <a id="4282" class="Keyword">record</a>
<a id="4293" class="Symbol">{</a> <a id="4295" href="Function.Metric.Bundles.html#2933" class="Field">isSemiMetric</a> <a id="4308" class="Symbol">=</a> <a id="4310" href="Function.Metric.Structures.html#3130" class="Function">isSemiMetric</a>
<a id="4327" class="Symbol">}</a>
<a id="4332" class="Keyword">open</a> <a id="4337" href="Function.Metric.Bundles.html#2584" class="Module">SemiMetric</a> <a id="4348" href="Function.Metric.Bundles.html#4230" class="Function">semiMetric</a> <a id="4359" class="Keyword">public</a>
<a id="4370" class="Keyword">using</a> <a id="4376" class="Symbol">(</a><a id="4377" href="Function.Metric.Bundles.html#1625" class="Function">protoMetric</a><a id="4388" class="Symbol">;</a> <a id="4390" href="Function.Metric.Bundles.html#2335" class="Function">preMetric</a><a id="4399" class="Symbol">;</a> <a id="4401" href="Function.Metric.Bundles.html#3023" class="Function">quasiSemiMetric</a><a id="4416" class="Symbol">)</a>
</pre></body></html>