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

99 lines
22 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.Structures</title><link rel="stylesheet" href="Agda.css"></head><body><pre class="Agda"><a id="1" class="Comment">------------------------------------------------------------------------</a>
<a id="74" class="Comment">-- The Agda standard library</a>
<a id="103" class="Comment">--</a>
<a id="106" class="Comment">-- Some metric structures (not packed up with sets, operations, etc.)</a>
<a id="176" class="Comment">------------------------------------------------------------------------</a>
<a id="250" class="Comment">-- The contents of this module should usually be accessed via</a>
<a id="312" class="Comment">-- `Function.Metric`.</a>
<a id="335" class="Symbol">{-#</a> <a id="339" class="Keyword">OPTIONS</a> <a id="347" class="Pragma">--cubical-compatible</a> <a id="368" class="Pragma">--safe</a> <a id="375" class="Symbol">#-}</a>
<a id="380" class="Keyword">open</a> <a id="385" class="Keyword">import</a> <a id="392" href="Relation.Binary.Core.html" class="Module">Relation.Binary.Core</a> <a id="413" class="Keyword">using</a> <a id="419" class="Symbol">(</a><a id="420" href="Relation.Binary.Core.html#896" class="Function">Rel</a><a id="423" class="Symbol">)</a>
<a id="425" class="Keyword">open</a> <a id="430" class="Keyword">import</a> <a id="437" href="Relation.Binary.Structures.html" class="Module">Relation.Binary.Structures</a> <a id="464" class="Keyword">using</a> <a id="470" class="Symbol">(</a><a id="471" href="Relation.Binary.Structures.html#3522" class="Record">IsPartialOrder</a><a id="485" class="Symbol">;</a> <a id="487" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a><a id="500" class="Symbol">)</a>
<a id="503" class="Keyword">module</a> <a id="510" href="Function.Metric.Structures.html" class="Module">Function.Metric.Structures</a>
<a id="539" class="Symbol">{</a><a id="540" href="Function.Metric.Structures.html#540" class="Bound">a</a> <a id="542" href="Function.Metric.Structures.html#542" class="Bound">i</a> <a id="544" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a> <a id="547" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a> <a id="550" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="552" class="Symbol">}</a> <a id="554" class="Symbol">{</a><a id="555" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="557" class="Symbol">:</a> <a id="559" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="563" href="Function.Metric.Structures.html#540" class="Bound">a</a><a id="564" class="Symbol">}</a> <a id="566" class="Symbol">{</a><a id="567" href="Function.Metric.Structures.html#567" class="Bound">I</a> <a id="569" class="Symbol">:</a> <a id="571" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="575" href="Function.Metric.Structures.html#542" class="Bound">i</a><a id="576" class="Symbol">}</a>
<a id="580" class="Symbol">(</a><a id="581" href="Function.Metric.Structures.html#581" class="Bound Operator">_≈ₐ_</a> <a id="586" class="Symbol">:</a> <a id="588" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="592" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="594" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a><a id="596" class="Symbol">)</a> <a id="598" class="Symbol">(</a><a id="599" href="Function.Metric.Structures.html#599" class="Bound Operator">_≈ᵢ_</a> <a id="604" class="Symbol">:</a> <a id="606" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="610" href="Function.Metric.Structures.html#567" class="Bound">I</a> <a id="612" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a><a id="614" class="Symbol">)</a> <a id="616" class="Symbol">(</a><a id="617" href="Function.Metric.Structures.html#617" class="Bound Operator">_≤_</a> <a id="621" class="Symbol">:</a> <a id="623" href="Relation.Binary.Core.html#896" class="Function">Rel</a> <a id="627" href="Function.Metric.Structures.html#567" class="Bound">I</a> <a id="629" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="631" class="Symbol">)</a> <a id="633" class="Symbol">(</a><a id="634" href="Function.Metric.Structures.html#634" class="Bound">0#</a> <a id="637" class="Symbol">:</a> <a id="639" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="640" class="Symbol">)</a> <a id="642" class="Keyword">where</a>
<a id="649" class="Keyword">open</a> <a id="654" class="Keyword">import</a> <a id="661" href="Algebra.Core.html" class="Module">Algebra.Core</a> <a id="674" class="Keyword">using</a> <a id="680" class="Symbol">(</a><a id="681" href="Algebra.Core.html#527" class="Function">Op₂</a><a id="684" class="Symbol">)</a>
<a id="686" class="Keyword">open</a> <a id="691" class="Keyword">import</a> <a id="698" href="Function.Metric.Core.html" class="Module">Function.Metric.Core</a>
<a id="719" class="Keyword">open</a> <a id="724" class="Keyword">import</a> <a id="731" href="Function.Metric.Definitions.html" class="Module">Function.Metric.Definitions</a>
<a id="759" class="Keyword">open</a> <a id="764" class="Keyword">import</a> <a id="771" href="Level.html" class="Module">Level</a> <a id="777" class="Keyword">using</a> <a id="783" class="Symbol">(</a><a id="784" href="Agda.Primitive.html#961" class="Primitive Operator">_⊔_</a><a id="787" class="Symbol">)</a>
<a id="790" class="Comment">------------------------------------------------------------------------</a>
<a id="863" class="Comment">-- Proto-metrics</a>
<a id="881" class="Comment">-- We do not insist that the ordering relation is total as otherwise</a>
<a id="950" class="Comment">-- we would exclude the real numbers.</a>
<a id="989" class="Keyword">record</a> <a id="IsProtoMetric"></a><a id="996" href="Function.Metric.Structures.html#996" class="Record">IsProtoMetric</a> <a id="1010" class="Symbol">(</a><a id="1011" href="Function.Metric.Structures.html#1011" class="Bound">d</a> <a id="1013" class="Symbol">:</a> <a id="1015" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="1032" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="1034" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="1035" class="Symbol">)</a>
<a id="1056" class="Symbol">:</a> <a id="1058" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1062" class="Symbol">(</a><a id="1063" href="Function.Metric.Structures.html#540" class="Bound">a</a> <a id="1065" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1067" href="Function.Metric.Structures.html#542" class="Bound">i</a> <a id="1069" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1071" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a> <a id="1074" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1076" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a> <a id="1079" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1081" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="1083" class="Symbol">)</a> <a id="1085" class="Keyword">where</a>
<a id="1093" class="Keyword">field</a>
<a id="IsProtoMetric.isPartialOrder"></a><a id="1103" href="Function.Metric.Structures.html#1103" class="Field">isPartialOrder</a> <a id="1120" class="Symbol">:</a> <a id="1122" href="Relation.Binary.Structures.html#3522" class="Record">IsPartialOrder</a> <a id="1137" href="Function.Metric.Structures.html#599" class="Bound Operator">_≈ᵢ_</a> <a id="1142" href="Function.Metric.Structures.html#617" class="Bound Operator">_≤_</a>
<a id="IsProtoMetric.≈-isEquivalence"></a><a id="1150" href="Function.Metric.Structures.html#1150" class="Field">≈-isEquivalence</a> <a id="1167" class="Symbol">:</a> <a id="1169" href="Relation.Binary.Structures.html#1550" class="Record">IsEquivalence</a> <a id="1183" href="Function.Metric.Structures.html#581" class="Bound Operator">_≈ₐ_</a>
<a id="IsProtoMetric.cong"></a><a id="1192" href="Function.Metric.Structures.html#1192" class="Field">cong</a> <a id="1209" class="Symbol">:</a> <a id="1211" href="Function.Metric.Definitions.html#834" class="Function">Congruent</a> <a id="1221" href="Function.Metric.Structures.html#581" class="Bound Operator">_≈ₐ_</a> <a id="1226" href="Function.Metric.Structures.html#599" class="Bound Operator">_≈ᵢ_</a> <a id="1231" href="Function.Metric.Structures.html#1011" class="Bound">d</a>
<a id="IsProtoMetric.nonNegative"></a><a id="1237" href="Function.Metric.Structures.html#1237" class="Field">nonNegative</a> <a id="1254" class="Symbol">:</a> <a id="1256" href="Function.Metric.Definitions.html#1212" class="Function">NonNegative</a> <a id="1268" href="Function.Metric.Structures.html#617" class="Bound Operator">_≤_</a> <a id="1272" href="Function.Metric.Structures.html#1011" class="Bound">d</a> <a id="1274" href="Function.Metric.Structures.html#634" class="Bound">0#</a>
<a id="1280" class="Keyword">open</a> <a id="1285" href="Relation.Binary.Structures.html#3522" class="Module">IsPartialOrder</a> <a id="1300" href="Function.Metric.Structures.html#1103" class="Field">isPartialOrder</a> <a id="1315" class="Keyword">public</a>
<a id="1326" class="Keyword">renaming</a> <a id="1335" class="Symbol">(</a><a id="1336" class="Keyword">module</a> <a id="1343" href="Relation.Binary.Structures.html#2430" class="Module">Eq</a> <a id="1346" class="Symbol">to</a> <a id="1349" class="Module">EqI</a><a id="1352" class="Symbol">)</a>
<a id="1357" class="Keyword">module</a> <a id="IsProtoMetric.EqC"></a><a id="1364" href="Function.Metric.Structures.html#1364" class="Module">EqC</a> <a id="1368" class="Symbol">=</a> <a id="1370" href="Relation.Binary.Structures.html#1550" class="Module">IsEquivalence</a> <a id="1384" href="Function.Metric.Structures.html#1150" class="Field">≈-isEquivalence</a>
<a id="1401" class="Comment">------------------------------------------------------------------------</a>
<a id="1474" class="Comment">-- Pre-metrics</a>
<a id="1490" class="Keyword">record</a> <a id="IsPreMetric"></a><a id="1497" href="Function.Metric.Structures.html#1497" class="Record">IsPreMetric</a> <a id="1509" class="Symbol">(</a><a id="1510" href="Function.Metric.Structures.html#1510" class="Bound">d</a> <a id="1512" class="Symbol">:</a> <a id="1514" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="1531" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="1533" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="1534" class="Symbol">)</a>
<a id="1553" class="Symbol">:</a> <a id="1555" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1559" class="Symbol">(</a><a id="1560" href="Function.Metric.Structures.html#540" class="Bound">a</a> <a id="1562" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1564" href="Function.Metric.Structures.html#542" class="Bound">i</a> <a id="1566" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1568" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a> <a id="1571" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1573" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a> <a id="1576" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1578" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="1580" class="Symbol">)</a> <a id="1582" class="Keyword">where</a>
<a id="1590" class="Keyword">field</a>
<a id="IsPreMetric.isProtoMetric"></a><a id="1600" href="Function.Metric.Structures.html#1600" class="Field">isProtoMetric</a> <a id="1614" class="Symbol">:</a> <a id="1616" href="Function.Metric.Structures.html#996" class="Record">IsProtoMetric</a> <a id="1630" href="Function.Metric.Structures.html#1510" class="Bound">d</a>
<a id="IsPreMetric.≈⇒0"></a><a id="1636" href="Function.Metric.Structures.html#1636" class="Field">≈⇒0</a> <a id="1650" class="Symbol">:</a> <a id="1652" href="Function.Metric.Definitions.html#1088" class="Function">Definite</a> <a id="1661" href="Function.Metric.Structures.html#581" class="Bound Operator">_≈ₐ_</a> <a id="1666" href="Function.Metric.Structures.html#599" class="Bound Operator">_≈ᵢ_</a> <a id="1671" href="Function.Metric.Structures.html#1510" class="Bound">d</a> <a id="1673" href="Function.Metric.Structures.html#634" class="Bound">0#</a>
<a id="1679" class="Keyword">open</a> <a id="1684" href="Function.Metric.Structures.html#996" class="Module">IsProtoMetric</a> <a id="1698" href="Function.Metric.Structures.html#1600" class="Field">isProtoMetric</a> <a id="1712" class="Keyword">public</a>
<a id="1720" class="Comment">------------------------------------------------------------------------</a>
<a id="1793" class="Comment">-- Quasi-semi-metrics</a>
<a id="1816" class="Keyword">record</a> <a id="IsQuasiSemiMetric"></a><a id="1823" href="Function.Metric.Structures.html#1823" class="Record">IsQuasiSemiMetric</a> <a id="1841" class="Symbol">(</a><a id="1842" href="Function.Metric.Structures.html#1842" class="Bound">d</a> <a id="1844" class="Symbol">:</a> <a id="1846" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="1863" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="1865" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="1866" class="Symbol">)</a>
<a id="1891" class="Symbol">:</a> <a id="1893" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="1897" class="Symbol">(</a><a id="1898" href="Function.Metric.Structures.html#540" class="Bound">a</a> <a id="1900" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1902" href="Function.Metric.Structures.html#542" class="Bound">i</a> <a id="1904" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1906" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a> <a id="1909" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1911" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a> <a id="1914" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="1916" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="1918" class="Symbol">)</a> <a id="1920" class="Keyword">where</a>
<a id="1928" class="Keyword">field</a>
<a id="IsQuasiSemiMetric.isPreMetric"></a><a id="1938" href="Function.Metric.Structures.html#1938" class="Field">isPreMetric</a> <a id="1950" class="Symbol">:</a> <a id="1952" href="Function.Metric.Structures.html#1497" class="Record">IsPreMetric</a> <a id="1964" href="Function.Metric.Structures.html#1842" class="Bound">d</a>
<a id="IsQuasiSemiMetric.0⇒≈"></a><a id="1970" href="Function.Metric.Structures.html#1970" class="Field">0⇒≈</a> <a id="1982" class="Symbol">:</a> <a id="1984" href="Function.Metric.Definitions.html#954" class="Function">Indiscernable</a> <a id="1998" href="Function.Metric.Structures.html#581" class="Bound Operator">_≈ₐ_</a> <a id="2003" href="Function.Metric.Structures.html#599" class="Bound Operator">_≈ᵢ_</a> <a id="2008" href="Function.Metric.Structures.html#1842" class="Bound">d</a> <a id="2010" href="Function.Metric.Structures.html#634" class="Bound">0#</a>
<a id="2016" class="Keyword">open</a> <a id="2021" href="Function.Metric.Structures.html#1497" class="Module">IsPreMetric</a> <a id="2033" href="Function.Metric.Structures.html#1938" class="Field">isPreMetric</a> <a id="2045" class="Keyword">public</a>
<a id="2053" class="Comment">------------------------------------------------------------------------</a>
<a id="2126" class="Comment">-- Semi-metrics</a>
<a id="2143" class="Keyword">record</a> <a id="IsSemiMetric"></a><a id="2150" href="Function.Metric.Structures.html#2150" class="Record">IsSemiMetric</a> <a id="2163" class="Symbol">(</a><a id="2164" href="Function.Metric.Structures.html#2164" class="Bound">d</a> <a id="2166" class="Symbol">:</a> <a id="2168" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="2185" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="2187" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="2188" class="Symbol">)</a>
<a id="2208" class="Symbol">:</a> <a id="2210" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="2214" class="Symbol">(</a><a id="2215" href="Function.Metric.Structures.html#540" class="Bound">a</a> <a id="2217" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2219" href="Function.Metric.Structures.html#542" class="Bound">i</a> <a id="2221" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2223" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a> <a id="2226" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2228" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a> <a id="2231" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="2233" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="2235" class="Symbol">)</a> <a id="2237" class="Keyword">where</a>
<a id="2245" class="Keyword">field</a>
<a id="IsSemiMetric.isQuasiSemiMetric"></a><a id="2255" href="Function.Metric.Structures.html#2255" class="Field">isQuasiSemiMetric</a> <a id="2273" class="Symbol">:</a> <a id="2275" href="Function.Metric.Structures.html#1823" class="Record">IsQuasiSemiMetric</a> <a id="2293" href="Function.Metric.Structures.html#2164" class="Bound">d</a>
<a id="IsSemiMetric.sym"></a><a id="2299" href="Function.Metric.Structures.html#2299" class="Field">sym</a> <a id="2317" class="Symbol">:</a> <a id="2319" href="Function.Metric.Definitions.html#1315" class="Function">Symmetric</a> <a id="2329" href="Function.Metric.Structures.html#599" class="Bound Operator">_≈ᵢ_</a> <a id="2334" href="Function.Metric.Structures.html#2164" class="Bound">d</a>
<a id="2339" class="Keyword">open</a> <a id="2344" href="Function.Metric.Structures.html#1823" class="Module">IsQuasiSemiMetric</a> <a id="2362" href="Function.Metric.Structures.html#2255" class="Field">isQuasiSemiMetric</a> <a id="2380" class="Keyword">public</a>
<a id="2388" class="Comment">------------------------------------------------------------------------</a>
<a id="2461" class="Comment">-- General metrics</a>
<a id="2481" class="Comment">-- A general metric obeys a generalised form of the triangle inequality.</a>
<a id="2554" class="Comment">-- It can be specialised to a standard metric/ultrametric/inframetric</a>
<a id="2624" class="Comment">-- etc. by providing the correct operator.</a>
<a id="2667" class="Comment">--</a>
<a id="2670" class="Comment">-- Furthermore we do not assume that _∙_ &amp; 0# form a monoid as</a>
<a id="2733" class="Comment">-- associativity does not hold for p-relaxed metrics/p-inframetrics and</a>
<a id="2805" class="Comment">-- the identity laws do not hold for ultrametrics over negative</a>
<a id="2869" class="Comment">-- codomains.</a>
<a id="2883" class="Comment">--</a>
<a id="2886" class="Comment">-- See &quot;Properties of distance spaces with power triangle inequalities&quot;</a>
<a id="2958" class="Comment">-- by Daniel J. Greenhoe, 2016 (arXiv)</a>
<a id="2998" class="Keyword">record</a> <a id="IsGeneralMetric"></a><a id="3005" href="Function.Metric.Structures.html#3005" class="Record">IsGeneralMetric</a> <a id="3021" class="Symbol">(</a><a id="3022" href="Function.Metric.Structures.html#3022" class="Bound Operator">_∙_</a> <a id="3026" class="Symbol">:</a> <a id="3028" href="Algebra.Core.html#527" class="Function">Op₂</a> <a id="3032" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="3033" class="Symbol">)</a> <a id="3035" class="Symbol">(</a><a id="3036" href="Function.Metric.Structures.html#3036" class="Bound">d</a> <a id="3038" class="Symbol">:</a> <a id="3040" href="Function.Metric.Core.html#451" class="Function">DistanceFunction</a> <a id="3057" href="Function.Metric.Structures.html#555" class="Bound">A</a> <a id="3059" href="Function.Metric.Structures.html#567" class="Bound">I</a><a id="3060" class="Symbol">)</a>
<a id="3083" class="Symbol">:</a> <a id="3085" href="Agda.Primitive.html#388" class="Primitive">Set</a> <a id="3089" class="Symbol">(</a><a id="3090" href="Function.Metric.Structures.html#540" class="Bound">a</a> <a id="3092" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3094" href="Function.Metric.Structures.html#542" class="Bound">i</a> <a id="3096" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3098" href="Function.Metric.Structures.html#544" class="Bound">ℓ₁</a> <a id="3101" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3103" href="Function.Metric.Structures.html#547" class="Bound">ℓ₂</a> <a id="3106" href="Agda.Primitive.html#961" class="Primitive Operator"></a> <a id="3108" href="Function.Metric.Structures.html#550" class="Bound">ℓ₃</a><a id="3110" class="Symbol">)</a> <a id="3112" class="Keyword">where</a>
<a id="3120" class="Keyword">field</a>
<a id="IsGeneralMetric.isSemiMetric"></a><a id="3130" href="Function.Metric.Structures.html#3130" class="Field">isSemiMetric</a> <a id="3143" class="Symbol">:</a> <a id="3145" href="Function.Metric.Structures.html#2150" class="Record">IsSemiMetric</a> <a id="3158" href="Function.Metric.Structures.html#3036" class="Bound">d</a>
<a id="IsGeneralMetric.triangle"></a><a id="3164" href="Function.Metric.Structures.html#3164" class="Field">triangle</a> <a id="3177" class="Symbol">:</a> <a id="3179" href="Function.Metric.Definitions.html#1407" class="Function">TriangleInequality</a> <a id="3198" href="Function.Metric.Structures.html#617" class="Bound Operator">_≤_</a> <a id="3202" href="Function.Metric.Structures.html#3022" class="Bound Operator">_∙_</a> <a id="3206" href="Function.Metric.Structures.html#3036" class="Bound">d</a>
<a id="3211" class="Keyword">open</a> <a id="3216" href="Function.Metric.Structures.html#2150" class="Module">IsSemiMetric</a> <a id="3229" href="Function.Metric.Structures.html#3130" class="Field">isSemiMetric</a> <a id="3242" class="Keyword">public</a>
</pre></body></html>