From 0d29fa32254b608058baf69720c49f328cce65b0 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 18 May 2025 19:52:51 +0200 Subject: [PATCH 01/42] rational neighborhood relations --- src/metric-spaces.lagda.md | 5 + .../monotonic-rational-neighborhoods.lagda.md | 62 ++++++++++++ .../rational-neighborhoods.lagda.md | 54 +++++++++++ .../reflexive-rational-neighborhoods.lagda.md | 49 ++++++++++ .../symmetric-rational-neighborhoods.lagda.md | 49 ++++++++++ ...triangular-rational-neighborhoods.lagda.md | 94 +++++++++++++++++++ 6 files changed, 313 insertions(+) create mode 100644 src/metric-spaces/monotonic-rational-neighborhoods.lagda.md create mode 100644 src/metric-spaces/rational-neighborhoods.lagda.md create mode 100644 src/metric-spaces/reflexive-rational-neighborhoods.lagda.md create mode 100644 src/metric-spaces/symmetric-rational-neighborhoods.lagda.md create mode 100644 src/metric-spaces/triangular-rational-neighborhoods.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 0bf9402bb1..7808cab300 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -86,6 +86,7 @@ open import metric-spaces.metric-space-of-short-functions-metric-spaces public open import metric-spaces.metric-spaces public open import metric-spaces.metric-structures public open import metric-spaces.monotonic-premetric-structures public +open import metric-spaces.monotonic-rational-neighborhoods public open import metric-spaces.ordering-premetric-structures public open import metric-spaces.precategory-of-metric-spaces-and-functions public open import metric-spaces.precategory-of-metric-spaces-and-isometries public @@ -94,7 +95,9 @@ open import metric-spaces.premetric-spaces public open import metric-spaces.premetric-structures public open import metric-spaces.pseudometric-spaces public open import metric-spaces.pseudometric-structures public +open import metric-spaces.rational-neighborhoods public open import metric-spaces.reflexive-premetric-structures public +open import metric-spaces.reflexive-rational-neighborhoods public open import metric-spaces.saturated-complete-metric-spaces public open import metric-spaces.saturated-metric-spaces public open import metric-spaces.sequences-metric-spaces public @@ -104,7 +107,9 @@ open import metric-spaces.short-functions-metric-spaces public open import metric-spaces.short-functions-premetric-spaces public open import metric-spaces.subspaces-metric-spaces public open import metric-spaces.symmetric-premetric-structures public +open import metric-spaces.symmetric-rational-neighborhoods public open import metric-spaces.triangular-premetric-structures public +open import metric-spaces.triangular-rational-neighborhoods public open import metric-spaces.uniformly-continuous-functions-metric-spaces public open import metric-spaces.uniformly-continuous-functions-premetric-spaces public ``` diff --git a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..e1f53e6439 --- /dev/null +++ b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md @@ -0,0 +1,62 @@ +# Monotonic rational neighborhoods on types + +```agda +module metric-spaces.monotonic-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.propositions +open import foundation.universe-levels + +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is +{{#concept "monotonic" Disambiguation="premetric" Agda=is-monotonic-Rational-Neighborhood-Relation}} +if any `d₁`-neighborhoods are `d₂`-neighborhoods for `d₁ < d₂`. + +## Definitions + +### The property of being a monotonic premetric structure + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + where + + is-monotonic-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-monotonic-prop-Rational-Neighborhood-Relation = + Π-Prop + ( A) + ( λ x → + ( Π-Prop + ( A) + ( λ y → + ( Π-Prop + ( ℚ⁺) + ( λ d₁ → + ( Π-Prop + ( ℚ⁺) + ( λ d₂ → + ( Π-Prop + ( le-ℚ⁺ d₁ d₂) + ( λ H → + hom-Prop (B d₁ x y) (B d₂ x y)))))))))) + + is-monotonic-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-monotonic-Rational-Neighborhood-Relation = + type-Prop is-monotonic-prop-Rational-Neighborhood-Relation + + is-prop-is-monotonic-Rational-Neighborhood-Relation : + is-prop is-monotonic-Rational-Neighborhood-Relation + is-prop-is-monotonic-Rational-Neighborhood-Relation = + is-prop-type-Prop is-monotonic-prop-Rational-Neighborhood-Relation +``` diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..2d4116ff63 --- /dev/null +++ b/src/metric-spaces/rational-neighborhoods.lagda.md @@ -0,0 +1,54 @@ +# Rational neighborhood relations on types + +```agda +module metric-spaces.rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +A +{{#concept "rational neighborhood relation" Agda=Rational-Neighborhood-Relation}} +is a type family of +[proposition-valued binary relations](foundation.binary-relations.md) indexed by +the +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md). + +## Definitions + +### Premetric structures + +```agda +module _ + {l1 : Level} (l2 : Level) (A : UU l1) + where + + Rational-Neighborhood-Relation : UU (l1 ⊔ lsuc l2) + Rational-Neighborhood-Relation = ℚ⁺ → Relation-Prop l2 A + +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + where + + neighborhood-Rational-Neighborhood-Relation : + ℚ⁺ → Relation l2 A + neighborhood-Rational-Neighborhood-Relation d x y = + type-Prop (B d x y) + + is-prop-neighborhood-Rational-Neighborhood-Relation : + (d : ℚ⁺) (x y : A) → + is-prop (neighborhood-Rational-Neighborhood-Relation d x y) + is-prop-neighborhood-Rational-Neighborhood-Relation d x y = + is-prop-type-Prop (B d x y) +``` diff --git a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md b/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..a9858ba7aa --- /dev/null +++ b/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md @@ -0,0 +1,49 @@ +# Reflexive rational neighborhoods on types + +```agda +module metric-spaces.reflexive-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.function-types +open import foundation.propositions +open import foundation.universe-levels + +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +A [rational neighborhood](metric-spaces.rational-neighborhoods.md) is +{{#concept "reflexive" Disambiguation="premetric" Agda=is-reflexive-Rational-Neighborhood-Relation}} +if any element is in all neighborhoods of itself. + +## Definitions + +### The property of being a reflexive rational neighborhood relation + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + where + + is-reflexive-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-reflexive-prop-Rational-Neighborhood-Relation = + Π-Prop ℚ⁺ (is-reflexive-prop-Relation-Prop ∘ B) + + is-reflexive-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-reflexive-Rational-Neighborhood-Relation = + type-Prop is-reflexive-prop-Rational-Neighborhood-Relation + + is-prop-is-reflexive-Rational-Neighborhood-Relation : + is-prop is-reflexive-Rational-Neighborhood-Relation + is-prop-is-reflexive-Rational-Neighborhood-Relation = + is-prop-type-Prop is-reflexive-prop-Rational-Neighborhood-Relation +``` diff --git a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md b/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..3ba14632e6 --- /dev/null +++ b/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md @@ -0,0 +1,49 @@ +# Symmetric rational neighborhoods on types + +```agda +module metric-spaces.symmetric-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.function-types +open import foundation.propositions +open import foundation.universe-levels + +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +A [rational neighborhood](metric-spaces.rational-neighborhoods.md) is +{{#concept "symmetric" Disambiguation="premetric" Agda=is-symmetric-Rational-Neighborhood-Relation}} +if all neighborhoods are symmetric. + +## Definitions + +### The property of being a symmetric rational neighborhood relation + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + where + + is-symmetric-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-symmetric-prop-Rational-Neighborhood-Relation = + Π-Prop ℚ⁺ (is-symmetric-prop-Relation-Prop ∘ B) + + is-symmetric-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-symmetric-Rational-Neighborhood-Relation = + type-Prop is-symmetric-prop-Rational-Neighborhood-Relation + + is-prop-is-symmetric-Rational-Neighborhood-Relation : + is-prop is-symmetric-Rational-Neighborhood-Relation + is-prop-is-symmetric-Rational-Neighborhood-Relation = + is-prop-type-Prop is-symmetric-prop-Rational-Neighborhood-Relation +``` diff --git a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..5d50a78c2a --- /dev/null +++ b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md @@ -0,0 +1,94 @@ +# Triangular rational neighborhood relations on types + +```agda +module metric-spaces.triangular-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.function-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +``` + +
+ +## Idea + +A [rational neighborhood relation](metric-spaces.premetric-structures.md) is +{{#concept "triangular" Disambiguation="rational neighborhood relation" agda=is-triangular-Rational-Neighborhood-Relation}} +if it is additively transitive, i.e., if any `d₂`-neighbor of a `d₁`-neighbor of +an element is its `d₁ + d₂`-neighbor. + +## Definitions + +### The property of being a triangular premetric structure + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + where + + is-triangular-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-triangular-prop-Rational-Neighborhood-Relation = + Π-Prop + ( A) + ( λ x → + ( Π-Prop + ( A) + ( λ y → + ( Π-Prop + ( A) + ( λ z → + Π-Prop + ( ℚ⁺) + ( λ d₁ → + ( Π-Prop + ( ℚ⁺) + ( λ d₂ → + hom-Prop + ( B d₂ y z) + ( hom-Prop + ( B d₁ x y) + ( B (d₁ +ℚ⁺ d₂) x z)))))))))) + + is-triangular-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-triangular-Rational-Neighborhood-Relation = + type-Prop is-triangular-prop-Rational-Neighborhood-Relation + + is-prop-is-triangular-Rational-Neighborhood-Relation : + is-prop is-triangular-Rational-Neighborhood-Relation + is-prop-is-triangular-Rational-Neighborhood-Relation = + is-prop-type-Prop is-triangular-prop-Rational-Neighborhood-Relation +``` + +## Properties + +### Any triangular reflexive premetric is monotonic + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + (R : is-reflexive-Rational-Neighborhood-Relation B) + (T : is-triangular-Rational-Neighborhood-Relation B) + where + + is-monotonic-is-reflexive-triangular-Rational-Neighborhood-Relation : + is-monotonic-Rational-Neighborhood-Relation B + is-monotonic-is-reflexive-triangular-Rational-Neighborhood-Relation + x y d₁ d₂ I H₁ = + tr + ( λ d → neighborhood-Rational-Neighborhood-Relation B d x y) + ( right-diff-law-add-ℚ⁺ d₁ d₂ I) + ( T x y y d₁ (le-diff-ℚ⁺ d₁ d₂ I) (R (le-diff-ℚ⁺ d₁ d₂ I) y) H₁) +``` From 7f3d0198e048e60eb15ae219a10ab06d3ee3cc63 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 18 May 2025 19:56:42 +0200 Subject: [PATCH 02/42] typos --- src/metric-spaces/rational-neighborhoods.lagda.md | 2 +- src/metric-spaces/triangular-rational-neighborhoods.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhoods.lagda.md index 2d4116ff63..f3f7c1dff9 100644 --- a/src/metric-spaces/rational-neighborhoods.lagda.md +++ b/src/metric-spaces/rational-neighborhoods.lagda.md @@ -27,7 +27,7 @@ the ## Definitions -### Premetric structures +### Rational neighborhood relation on a type ```agda module _ diff --git a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md index 5d50a78c2a..b9c04c4d0e 100644 --- a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md @@ -32,7 +32,7 @@ an element is its `d₁ + d₂`-neighbor. ## Definitions -### The property of being a triangular premetric structure +### The property of being a triangular rational neighborhood relation ```agda module _ From a4dffeb32ccc02f03575f1f8d5faf71b9764291a Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 19 May 2025 03:14:10 +0200 Subject: [PATCH 03/42] Premetric-Space-WIP --- src/metric-spaces.lagda.md | 1 + .../premetric-spaces-WIP.lagda.md | 184 ++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 src/metric-spaces/premetric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 7808cab300..24926d1f92 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -92,6 +92,7 @@ open import metric-spaces.precategory-of-metric-spaces-and-functions public open import metric-spaces.precategory-of-metric-spaces-and-isometries public open import metric-spaces.precategory-of-metric-spaces-and-short-functions public open import metric-spaces.premetric-spaces public +open import metric-spaces.premetric-spaces-WIP public open import metric-spaces.premetric-structures public open import metric-spaces.pseudometric-spaces public open import metric-spaces.pseudometric-structures public diff --git a/src/metric-spaces/premetric-spaces-WIP.lagda.md b/src/metric-spaces/premetric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..c13c35f20b --- /dev/null +++ b/src/metric-spaces/premetric-spaces-WIP.lagda.md @@ -0,0 +1,184 @@ +# Premetric spaces (WIP) + +```agda +module metric-spaces.premetric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.cartesian-product-types +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.negation +open import foundation.propositional-extensionality +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.univalence +open import foundation.universe-levels + +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +A {{#concept "premetric space" Agda=Premetric-Space-WIP}} is a type equipped +with [reflexive](metric-spaces.reflexive-rational-neighborhoods.md), +[symmetric](metric-spaces.symmetric-rational-neighborhoods.md) and +[triangular](metric-spaces.triangular-rational-neighborhoods.md) +[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) + +Given a premetric `B` on `A` and some positive rational number `d : ℚ⁺` such +that `B d x y` holds for some pair of points `x y : A`, we interpret `d` as an +{{#concept "upper bound" Disambiguation="on distance with respect to a premetric structure"}} +on the distance between `x` and `y` with respect to the premetric. + +## Definitions + +### The property of being a premetric structure + +```agda +module _ + {l1 : Level} (A : UU l1) {l2 : Level} + (B : Rational-Neighborhood-Relation l2 A) + where + + is-premetric-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-premetric-prop-Rational-Neighborhood-Relation = + product-Prop + ( is-reflexive-prop-Rational-Neighborhood-Relation B) + ( product-Prop + ( is-symmetric-prop-Rational-Neighborhood-Relation B) + ( is-triangular-prop-Rational-Neighborhood-Relation B)) + + is-premetric-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-premetric-Rational-Neighborhood-Relation = + type-Prop is-premetric-prop-Rational-Neighborhood-Relation + + is-prop-is-premetric-Rational-Neighborhood-Relation : + is-prop is-premetric-Rational-Neighborhood-Relation + is-prop-is-premetric-Rational-Neighborhood-Relation = + is-prop-type-Prop (is-premetric-prop-Rational-Neighborhood-Relation) + +Premetric-Structure : + {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) +Premetric-Structure l2 A = + type-subtype (is-premetric-prop-Rational-Neighborhood-Relation A {l2}) +``` + +### Premetric spaces + +```agda +Premetric-Space-WIP : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +Premetric-Space-WIP l1 l2 = Σ (UU l1) (Premetric-Structure l2) + +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + type-Premetric-Space-WIP : UU l1 + type-Premetric-Space-WIP = pr1 A + + structure-Premetric-Space-WIP : + Premetric-Structure l2 type-Premetric-Space-WIP + structure-Premetric-Space-WIP = pr2 A + + neighborhood-prop-Premetric-Space-WIP : + Rational-Neighborhood-Relation l2 type-Premetric-Space-WIP + neighborhood-prop-Premetric-Space-WIP = + pr1 structure-Premetric-Space-WIP + + neighborhood-Premetric-Space-WIP : + ℚ⁺ → Relation l2 type-Premetric-Space-WIP + neighborhood-Premetric-Space-WIP = + neighborhood-Rational-Neighborhood-Relation + neighborhood-prop-Premetric-Space-WIP + + is-prop-neighborhood-Premetric-Space-WIP : + (d : ℚ⁺) (x y : type-Premetric-Space-WIP) → + is-prop (neighborhood-Premetric-Space-WIP d x y) + is-prop-neighborhood-Premetric-Space-WIP = + is-prop-neighborhood-Rational-Neighborhood-Relation + neighborhood-prop-Premetric-Space-WIP + + is-upper-bound-dist-prop-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP) → ℚ⁺ → Prop l2 + is-upper-bound-dist-prop-Premetric-Space-WIP x y d = + neighborhood-prop-Premetric-Space-WIP d x y + + is-upper-bound-dist-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP) → ℚ⁺ → UU l2 + is-upper-bound-dist-Premetric-Space-WIP x y d = + neighborhood-Premetric-Space-WIP d x y + + is-prop-is-upper-bound-dist-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP) (d : ℚ⁺) → + is-prop (is-upper-bound-dist-Premetric-Space-WIP x y d) + is-prop-is-upper-bound-dist-Premetric-Space-WIP x y d = + is-prop-neighborhood-Premetric-Space-WIP d x y + + is-premetric-neighborhood-Premetric-Space-WIP : + is-premetric-Rational-Neighborhood-Relation + type-Premetric-Space-WIP + neighborhood-prop-Premetric-Space-WIP + is-premetric-neighborhood-Premetric-Space-WIP = + pr2 structure-Premetric-Space-WIP + + refl-neighborhood-Premetric-Space-WIP : + (d : ℚ⁺) (x : type-Premetric-Space-WIP) → + neighborhood-Premetric-Space-WIP d x x + refl-neighborhood-Premetric-Space-WIP = + pr1 is-premetric-neighborhood-Premetric-Space-WIP + + symmetric-neighborhood-Premetric-Space-WIP : + (d : ℚ⁺) (x y : type-Premetric-Space-WIP) → + neighborhood-Premetric-Space-WIP d x y → + neighborhood-Premetric-Space-WIP d y x + symmetric-neighborhood-Premetric-Space-WIP = + pr1 (pr2 is-premetric-neighborhood-Premetric-Space-WIP) + + inv-neighborhood-Premetric-Space-WIP : + {d : ℚ⁺} {x y : type-Premetric-Space-WIP} → + neighborhood-Premetric-Space-WIP d x y → + neighborhood-Premetric-Space-WIP d y x + inv-neighborhood-Premetric-Space-WIP {d} {x} {y} = + symmetric-neighborhood-Premetric-Space-WIP d x y + + triangular-neighborhood-Premetric-Space-WIP : + (x y z : type-Premetric-Space-WIP) (d₁ d₂ : ℚ⁺) → + neighborhood-Premetric-Space-WIP d₂ y z → + neighborhood-Premetric-Space-WIP d₁ x y → + neighborhood-Premetric-Space-WIP (d₁ +ℚ⁺ d₂) x z + triangular-neighborhood-Premetric-Space-WIP = + pr2 (pr2 is-premetric-neighborhood-Premetric-Space-WIP) + + monotonic-neighborhood-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP) (d₁ d₂ : ℚ⁺) → + le-ℚ⁺ d₁ d₂ → + neighborhood-Premetric-Space-WIP d₁ x y → + neighborhood-Premetric-Space-WIP d₂ x y + monotonic-neighborhood-Premetric-Space-WIP = + is-monotonic-is-reflexive-triangular-Rational-Neighborhood-Relation + neighborhood-prop-Premetric-Space-WIP + refl-neighborhood-Premetric-Space-WIP + triangular-neighborhood-Premetric-Space-WIP +``` From 14c53ee5e45e79cd78397f30a103d216ba165645 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 19 May 2025 04:09:12 +0200 Subject: [PATCH 04/42] similarity premetric spaces --- src/metric-spaces.lagda.md | 1 + ...rity-of-elements-premetric-spaces.lagda.md | 136 ++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 24926d1f92..f46d7d8dea 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -106,6 +106,7 @@ open import metric-spaces.sequences-premetric-spaces public open import metric-spaces.sequences-pseudometric-spaces public open import metric-spaces.short-functions-metric-spaces public open import metric-spaces.short-functions-premetric-spaces public +open import metric-spaces.similarity-of-elements-premetric-spaces public open import metric-spaces.subspaces-metric-spaces public open import metric-spaces.symmetric-premetric-structures public open import metric-spaces.symmetric-rational-neighborhoods public diff --git a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md new file mode 100644 index 0000000000..a65ce14c61 --- /dev/null +++ b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md @@ -0,0 +1,136 @@ +# Similarity of elements in premetric spaces + +```agda +module metric-spaces.similarity-of-elements-premetric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.equivalence-relations +open import foundation.identity-types +open import foundation.propositions +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.premetric-spaces-WIP +``` + +
+ +## Idea + +Two elements `x y` of a [premetric space](metric-spaces.premetric-spaces-WIP.md) +are +{{#concept "similar" Disambiguation="elements of a premetric space" Agda=sim-Premetric-Space}} +if they share all neighborhoods. Similarity in premetric spaces is an +[equivalence relation](foundation.equivalence-relations.md). + +## Definitions + +### Neighborhood similarity relation in premetric spaces + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + sim-prop-Premetric-Space-WIP : + Relation-Prop l2 (type-Premetric-Space-WIP A) + sim-prop-Premetric-Space-WIP x y = + Π-Prop ℚ⁺ (is-upper-bound-dist-prop-Premetric-Space-WIP A x y) + + sim-Premetric-Space-WIP : + Relation l2 (type-Premetric-Space-WIP A) + sim-Premetric-Space-WIP = + type-Relation-Prop sim-prop-Premetric-Space-WIP + + is-prop-sim-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP A) → + is-prop (sim-Premetric-Space-WIP x y) + is-prop-sim-Premetric-Space-WIP = + is-prop-type-Relation-Prop sim-prop-Premetric-Space-WIP +``` + +## Properties + +### Similarity in premetric spaces is reflexive + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + refl-sim-Premetric-Space-WIP : + (x : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP A x x + refl-sim-Premetric-Space-WIP x d = + refl-neighborhood-Premetric-Space-WIP A d x +``` + +### Similarity in premetric spaces is symmetric + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + symmetric-sim-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP A x y → + sim-Premetric-Space-WIP A y x + symmetric-sim-Premetric-Space-WIP x y Nxy d = + symmetric-neighborhood-Premetric-Space-WIP A d x y (Nxy d) +``` + +### Similarity in premetric spaces is transitive + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + transitive-sim-Premetric-Space-WIP : + (x y z : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP A y z → + sim-Premetric-Space-WIP A x y → + sim-Premetric-Space-WIP A x z + transitive-sim-Premetric-Space-WIP x y z Nyz Nxy d = + tr + ( is-upper-bound-dist-Premetric-Space-WIP A x z) + ( eq-add-split-ℚ⁺ d) + ( triangular-neighborhood-Premetric-Space-WIP + ( A) + ( x) + ( y) + ( z) + ( left-summand-split-ℚ⁺ d) + ( right-summand-split-ℚ⁺ d) + ( Nyz (right-summand-split-ℚ⁺ d)) + ( Nxy (left-summand-split-ℚ⁺ d))) +``` + +### Similarity in premetric spaces is an equivalence relation + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + is-equivalence-relation-sim-Premetric-Space : + is-equivalence-relation (sim-prop-Premetric-Space-WIP A) + is-equivalence-relation-sim-Premetric-Space = + ( refl-sim-Premetric-Space-WIP A) , + ( symmetric-sim-Premetric-Space-WIP A) , + ( transitive-sim-Premetric-Space-WIP A) + + equivalence-sim-Premetric-Space : + equivalence-relation l2 (type-Premetric-Space-WIP A) + equivalence-sim-Premetric-Space = + ( sim-prop-Premetric-Space-WIP A) , + ( is-equivalence-relation-sim-Premetric-Space) +``` From 4b2273323e3161a11723ea4c7656696fd9d4b7d9 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 19 May 2025 19:12:24 +0200 Subject: [PATCH 05/42] expand definition --- src/metric-spaces/premetric-spaces-WIP.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/premetric-spaces-WIP.lagda.md b/src/metric-spaces/premetric-spaces-WIP.lagda.md index c13c35f20b..eb5b6f63ce 100644 --- a/src/metric-spaces/premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/premetric-spaces-WIP.lagda.md @@ -103,7 +103,7 @@ module _ structure-Premetric-Space-WIP = pr2 A neighborhood-prop-Premetric-Space-WIP : - Rational-Neighborhood-Relation l2 type-Premetric-Space-WIP + ℚ⁺ → Relation-Prop l2 type-Premetric-Space-WIP neighborhood-prop-Premetric-Space-WIP = pr1 structure-Premetric-Space-WIP From 8fcaa6385748f73e06d782b3ac2f2567a2e3761b Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 27 May 2025 20:27:41 +0200 Subject: [PATCH 06/42] fix link --- .../similarity-of-elements-premetric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md index a65ce14c61..cac78470b0 100644 --- a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md @@ -26,7 +26,7 @@ open import metric-spaces.premetric-spaces-WIP Two elements `x y` of a [premetric space](metric-spaces.premetric-spaces-WIP.md) are -{{#concept "similar" Disambiguation="elements of a premetric space" Agda=sim-Premetric-Space}} +{{#concept "similar" Disambiguation="elements of a premetric space" Agda=sim-Premetric-Space-WIP}} if they share all neighborhoods. Similarity in premetric spaces is an [equivalence relation](foundation.equivalence-relations.md). From 49fbebb0eede965a394e87518d074ab6e36da015 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 27 May 2025 20:28:00 +0200 Subject: [PATCH 07/42] fix import order --- src/metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index d044540fc0..f5a8051892 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -99,9 +99,9 @@ open import metric-spaces.premetric-spaces-WIP public open import metric-spaces.premetric-structures public open import metric-spaces.pseudometric-spaces public open import metric-spaces.pseudometric-structures public -open import metric-spaces.rational-neighborhoods public open import metric-spaces.rational-approximations-of-zero public open import metric-spaces.rational-cauchy-approximations public +open import metric-spaces.rational-neighborhoods public open import metric-spaces.rational-sequences-approximating-zero public open import metric-spaces.reflexive-premetric-structures public open import metric-spaces.reflexive-rational-neighborhoods public From 0b2214a6651cfd913c3946b2374387d76804baa9 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 28 May 2025 20:38:37 +0200 Subject: [PATCH 08/42] refactor metric spaces (WIP) --- src/metric-spaces.lagda.md | 2 + .../extensional-premetric-spaces-WIP.lagda.md | 190 ++++++++++++ src/metric-spaces/metric-spaces-WIP.lagda.md | 288 ++++++++++++++++++ ...rity-of-elements-premetric-spaces.lagda.md | 24 +- 4 files changed, 499 insertions(+), 5 deletions(-) create mode 100644 src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index f5a8051892..7d74ecab97 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -62,6 +62,7 @@ open import metric-spaces.discrete-premetric-structures public open import metric-spaces.elements-at-bounded-distance-metric-spaces public open import metric-spaces.equality-of-metric-spaces public open import metric-spaces.equality-of-premetric-spaces public +open import metric-spaces.extensional-premetric-spaces-WIP public open import metric-spaces.extensional-premetric-structures public open import metric-spaces.functions-metric-spaces public open import metric-spaces.functor-category-set-functions-isometry-metric-spaces public @@ -87,6 +88,7 @@ open import metric-spaces.metric-space-of-rational-numbers public open import metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods public open import metric-spaces.metric-space-of-short-functions-metric-spaces public open import metric-spaces.metric-spaces public +open import metric-spaces.metric-spaces-WIP public open import metric-spaces.metric-structures public open import metric-spaces.monotonic-premetric-structures public open import metric-spaces.monotonic-rational-neighborhoods public diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..1a8647dd83 --- /dev/null +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -0,0 +1,190 @@ +# Extensional premetric spaces (WIP) + +```agda +module metric-spaces.extensional-premetric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.premetric-spaces-WIP +open import metric-spaces.similarity-of-elements-premetric-spaces +``` + +
+ +## Idea + +A [premetric space](metric-spaces.premetric-spaces-WIP.md) is called +{{#concept "extensional" Disambiguation="premetric space" Agda=is-extensional-Premetric-Space-WIP}} +if any of the following equivalent condition holds: + +- any [similar](metric-spaces.similarity-of-elements-premetric-spaces.md) + elements are [identical](foundation-core.identity-types.md); +- the similarity relation has [propositional](foundation.propositions.md) + fibers; +- the similarity relations is + [torsorial](foundation.torsorial-type-families.md). + +The carrier type of an extensional premetric space is a +[set](foundation.sets.md) and the +[discrete premetric structure](metric-spaces.discrete-premetric-structures.md) +over a set is extensional. + +## Definitions + +### The property of being an extenstional premetric space + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + is-extensional-prop-Premetric-Space-WIP : Prop (l1 ⊔ l2) + is-extensional-prop-Premetric-Space-WIP = + Π-Prop + ( type-Premetric-Space-WIP A) + ( is-prop-Prop ∘ + Σ (type-Premetric-Space-WIP A) ∘ + sim-Premetric-Space-WIP A) + + is-extensional-Premetric-Space-WIP : UU (l1 ⊔ l2) + is-extensional-Premetric-Space-WIP = + type-Prop is-extensional-prop-Premetric-Space-WIP + + is-prop-is-extensional-Premetric-Space-WIP : + is-prop is-extensional-Premetric-Space-WIP + is-prop-is-extensional-Premetric-Space-WIP = + is-prop-type-Prop is-extensional-prop-Premetric-Space-WIP +``` + +### Tightness of a premetric space + +A premetric space is +{{#concept "tight" Disambiguation="premetric" Agda=is-tight-Premetric-Space-WIP}} +if any two [similar](metric-spaces.similarity-of-elements-premetric-spaces.md) +elements are [equal](foundation-core.identity-types.md). + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + is-tight-Premetric-Space-WIP : UU (l1 ⊔ l2) + is-tight-Premetric-Space-WIP = + (x y : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP A x y → + x = y +``` + +## Properties + +### Any tight premetric space is extensional + +```agda +module _ + {l1 l2 : Level} ( A : Premetric-Space-WIP l1 l2) + (T : is-tight-Premetric-Space-WIP A) + where + + is-extensional-is-tight-Premetric-Space : + is-extensional-Premetric-Space-WIP A + is-extensional-is-tight-Premetric-Space x = + is-prop-all-elements-equal + ( λ (u , I) (v , J) → + eq-type-subtype + ( sim-prop-Premetric-Space-WIP A x) + ( inv (T x u I) ∙ T x v J)) +``` + +### Characterization of equality in an extensional premetric space + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + (E : is-extensional-Premetric-Space-WIP A) + where + + is-torsorial-sim-is-extensional-Premetric-Space-WIP : + (x : type-Premetric-Space-WIP A) → + is-torsorial (sim-Premetric-Space-WIP A x) + is-torsorial-sim-is-extensional-Premetric-Space-WIP x = + is-proof-irrelevant-is-prop + ( E x) + ( x , refl-sim-Premetric-Space-WIP A x) + + is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP A) → + is-equiv (sim-eq-Premetric-Space-WIP A x y) + is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x = + fundamental-theorem-id + ( is-torsorial-sim-is-extensional-Premetric-Space-WIP x) + ( sim-eq-Premetric-Space-WIP A x) + + equiv-eq-sim-is-extensional-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP A) → + (x = y) ≃ (sim-Premetric-Space-WIP A x y) + equiv-eq-sim-is-extensional-Premetric-Space-WIP x y = + ( sim-eq-Premetric-Space-WIP A x y) , + ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) + + eq-sim-is-extensional-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP A x y → + x = y + eq-sim-is-extensional-Premetric-Space-WIP x y = + map-inv-equiv (equiv-eq-sim-is-extensional-Premetric-Space-WIP x y) +``` + +### Any extensional premetric is tight + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + (E : is-extensional-Premetric-Space-WIP A) + where + + is-tight-is-extensional-Premetric-Space-WIP : + is-tight-Premetric-Space-WIP A + is-tight-is-extensional-Premetric-Space-WIP = + eq-sim-is-extensional-Premetric-Space-WIP A E +``` + +### The carrier type of an extensional premetric space is a set + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + (E : is-extensional-Premetric-Space-WIP A) + where + + is-set-type-is-extensional-Premetric-Space-WIP : + is-set (type-Premetric-Space-WIP A) + is-set-type-is-extensional-Premetric-Space-WIP x y = + is-prop-is-equiv + ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP + ( A) + ( E) + ( x) + ( y)) + ( is-prop-sim-Premetric-Space-WIP A x y) +``` + +## See also + +- [metric spaces](metric-spaces.metric-spaces-WIP.md): the type of extensional + premetric spaces. diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..37ef1df5d8 --- /dev/null +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -0,0 +1,288 @@ +# Metric spaces (WIP) + +```agda +module metric-spaces.metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.equivalence-relations +open import foundation.equivalences +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.type-arithmetic-dependent-pair-types +open import foundation.universe-levels + +open import metric-spaces.extensional-premetric-spaces-WIP +open import metric-spaces.premetric-spaces-WIP +open import metric-spaces.similarity-of-elements-premetric-spaces +``` + +
+ +## Idea + +A {{#concept "metric space" Agda=Metric-Space WD="metric space" WDID=Q180953}} +is a type [structured](foundation.structure.md) with a concept of distance on +its elements. + +Since we operate in a constructive setting, the concept of distance is captured +by considering upper bounds on the distance between points, rather than by a +distance function as in the classical approach. Thus, a metric space `A` is +defined by a family of _neighborhood_ +[relations](foundation.binary-relations.md) on it indexed by the +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +`ℚ⁺`, a +[rational neighborhood relation](metric-spaces.rational-neighborhoods.md): + +```text + N : ℚ⁺ → A → A → Prop l +``` + +that satisfies certain axioms. Constructing a proof of `N d x y` amounts to +saying that _`d` is an upper bound on the distance from `x` to `y`_. + +The neighborhood relation on a metric space must satisfy the following axioms: + +- [**Reflexivity.**](metric-spaces.reflexive-rational-neighborhoods.md) Every + positive rational `d` is an upper bound on the distance from `x` to itself. +- [**Symmetry.**](metric-spaces.symmetric-rational-neighborhoods.md) Any upper + bound on the distance from `x` to `y` is an upper bound on the distance from + `y` to `x`. +- [**Triangularity.**](metric-spaces.triangular-rational-neighborhoods.md) If + `d` is an upper bound on the distance from `x` to `y`, and `d'` is an upper + bound on the distance from `y` to `z`, then `d + d'` is an upper bound on the + distance from `x` to `z`. + +This gives `A` the structure of a +[**premetric space**](metric-spaces.premetric-spaces-WIP.md); finally, we ask +that our metric spaces are +[**extensional**](metric-spaces.extensional-premetric-spaces-WIP.md): +[similar](metric-spaces.similarity-of-elements-premetric-spaces.md) elements are +[equal](foundation-core.identity-types.md): + +- If every positive rational `d` is an upper bound on the distance from `x` to + `y`, then `x = y`. + +Similarity of elements in a metric space characterizes their equality so any +metric space is a [set](foundation.sets.md). + +## Definitions + +### The type of metric spaces + +```agda +Metric-Space-WIP : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +Metric-Space-WIP l1 l2 = + type-subtype (is-extensional-prop-Premetric-Space-WIP {l1} {l2}) + +module _ + {l1 l2 : Level} (M : Metric-Space-WIP l1 l2) + where + + premetric-Metric-Space-WIP : Premetric-Space-WIP l1 l2 + premetric-Metric-Space-WIP = pr1 M + + is-extensional-premetric-Metric-Space-WIP : + is-extensional-Premetric-Space-WIP premetric-Metric-Space-WIP + is-extensional-premetric-Metric-Space-WIP = pr2 M + + type-Metric-Space-WIP : UU l1 + type-Metric-Space-WIP = + type-Premetric-Space-WIP premetric-Metric-Space-WIP + + structure-Metric-Space-WIP : Premetric-Structure l2 type-Metric-Space-WIP + structure-Metric-Space-WIP = + structure-Premetric-Space-WIP premetric-Metric-Space-WIP + + neighborhood-prop-Metric-Space-WIP : + ℚ⁺ → Relation-Prop l2 type-Metric-Space-WIP + neighborhood-prop-Metric-Space-WIP = + neighborhood-prop-Premetric-Space-WIP premetric-Metric-Space-WIP + + neighborhood-Metric-Space-WIP : ℚ⁺ → Relation l2 type-Metric-Space-WIP + neighborhood-Metric-Space-WIP = + neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + + is-prop-neighborhood-Metric-Space-WIP : + (d : ℚ⁺) (x y : type-Metric-Space-WIP) → + is-prop (neighborhood-Metric-Space-WIP d x y) + is-prop-neighborhood-Metric-Space-WIP = + is-prop-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + + is-upper-bound-dist-Metric-Space-WIP : + (x y : type-Metric-Space-WIP) → ℚ⁺ → UU l2 + is-upper-bound-dist-Metric-Space-WIP x y d = + neighborhood-Metric-Space-WIP d x y + + is-prop-is-upper-bound-dist-Metric-Space-WIP : + (x y : type-Metric-Space-WIP) (d : ℚ⁺) → + is-prop (is-upper-bound-dist-Metric-Space-WIP x y d) + is-prop-is-upper-bound-dist-Metric-Space-WIP x y d = + is-prop-neighborhood-Metric-Space-WIP d x y + + is-premetric-neighborhood-Metric-Space-WIP : + is-premetric-Rational-Neighborhood-Relation + type-Metric-Space-WIP + neighborhood-prop-Metric-Space-WIP + is-premetric-neighborhood-Metric-Space-WIP = + is-premetric-neighborhood-Premetric-Space-WIP + premetric-Metric-Space-WIP + + refl-neighborhood-Metric-Space-WIP : + (d : ℚ⁺) (x : type-Metric-Space-WIP) → + neighborhood-Metric-Space-WIP d x x + refl-neighborhood-Metric-Space-WIP = + refl-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + + symmetric-neighborhood-Metric-Space-WIP : + (d : ℚ⁺) (x y : type-Metric-Space-WIP) → + neighborhood-Metric-Space-WIP d x y → + neighborhood-Metric-Space-WIP d y x + symmetric-neighborhood-Metric-Space-WIP = + symmetric-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + + inv-neighborhood-Metric-Space-WIP : + {d : ℚ⁺} {x y : type-Metric-Space-WIP} → + neighborhood-Metric-Space-WIP d x y → + neighborhood-Metric-Space-WIP d y x + inv-neighborhood-Metric-Space-WIP = + inv-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + + triangular-neighborhood-Metric-Space-WIP : + (x y z : type-Metric-Space-WIP) (d₁ d₂ : ℚ⁺) → + neighborhood-Metric-Space-WIP d₂ y z → + neighborhood-Metric-Space-WIP d₁ x y → + neighborhood-Metric-Space-WIP (d₁ +ℚ⁺ d₂) x z + triangular-neighborhood-Metric-Space-WIP = + triangular-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + + monotonic-neighborhood-Metric-Space-WIP : + (x y : type-Metric-Space-WIP) (d₁ d₂ : ℚ⁺) → + le-ℚ⁺ d₁ d₂ → + neighborhood-Metric-Space-WIP d₁ x y → + neighborhood-Metric-Space-WIP d₂ x y + monotonic-neighborhood-Metric-Space-WIP = + monotonic-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP +``` + +### Similarity of elements in a metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + sim-prop-Metric-Space-WIP : Relation-Prop l2 (type-Metric-Space-WIP A) + sim-prop-Metric-Space-WIP = + sim-prop-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + sim-Metric-Space-WIP : Relation l2 (type-Metric-Space-WIP A) + sim-Metric-Space-WIP = + sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + is-prop-sim-Metric-Space-WIP : + (x y : type-Metric-Space-WIP A) → + is-prop (sim-Metric-Space-WIP x y) + is-prop-sim-Metric-Space-WIP = + is-prop-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + refl-sim-Metric-Space-WIP : + (x : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP x x + refl-sim-Metric-Space-WIP = + refl-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + sim-eq-Metric-Space-WIP : + (x y : type-Metric-Space-WIP A) → + x = y → + sim-Metric-Space-WIP x y + sim-eq-Metric-Space-WIP = + sim-eq-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + symmetric-sim-Metric-Space-WIP : + (x y : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP x y → + sim-Metric-Space-WIP y x + symmetric-sim-Metric-Space-WIP = + symmetric-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + inv-sim-Metric-Space-WIP : + {x y : type-Metric-Space-WIP A} → + sim-Metric-Space-WIP x y → + sim-Metric-Space-WIP y x + inv-sim-Metric-Space-WIP {x} {y} = + inv-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + transitive-sim-Metric-Space-WIP : + (x y z : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP y z → + sim-Metric-Space-WIP x y → + sim-Metric-Space-WIP x z + transitive-sim-Metric-Space-WIP = + transitive-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + + equivalence-sim-Metric-Space-WIP : + equivalence-relation l2 (type-Metric-Space-WIP A) + equivalence-sim-Metric-Space-WIP = + equivalence-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) +``` + +## Properties + +### The carrier type of a metric space is a set + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + is-set-type-Metric-Space-WIP : is-set (type-Metric-Space-WIP A) + is-set-type-Metric-Space-WIP = + is-set-type-is-extensional-Premetric-Space-WIP + ( premetric-Metric-Space-WIP A) + ( is-extensional-premetric-Metric-Space-WIP A) + + set-Metric-Space-WIP : Set l1 + set-Metric-Space-WIP = + (type-Metric-Space-WIP A , is-set-type-Metric-Space-WIP) +``` + +### Similarity of elements in a metric space is equivalent to equality + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + equiv-eq-sim-Metric-Space-WIP : + (x y : type-Metric-Space-WIP A) → + (x = y) ≃ sim-Metric-Space-WIP A x y + equiv-eq-sim-Metric-Space-WIP = + equiv-eq-sim-is-extensional-Premetric-Space-WIP + ( premetric-Metric-Space-WIP A) + ( is-extensional-premetric-Metric-Space-WIP A) + + eq-sim-Metric-Space-WIP : + (x y : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP A x y → + x = y + eq-sim-Metric-Space-WIP x y = + map-inv-equiv (equiv-eq-sim-Metric-Space-WIP x y) +``` + +## External links + +- [`MetricSpaces.Type`](https://www.cs.bham.ac.uk/~mhe/TypeTopology/MetricSpaces.Type.html) + at TypeTopology +- [metric space](https://ncatlab.org/nlab/show/metric+space) at $n$Lab +- [Metric spaces](https://en.wikipedia.org/wiki/Metric_space) at Wikipedia diff --git a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md index cac78470b0..3b6cef558a 100644 --- a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md @@ -70,6 +70,13 @@ module _ sim-Premetric-Space-WIP A x x refl-sim-Premetric-Space-WIP x d = refl-neighborhood-Premetric-Space-WIP A d x + + sim-eq-Premetric-Space-WIP : + (x y : type-Premetric-Space-WIP A) → + x = y → + sim-Premetric-Space-WIP A x y + sim-eq-Premetric-Space-WIP x .x refl = + refl-sim-Premetric-Space-WIP x ``` ### Similarity in premetric spaces is symmetric @@ -85,6 +92,13 @@ module _ sim-Premetric-Space-WIP A y x symmetric-sim-Premetric-Space-WIP x y Nxy d = symmetric-neighborhood-Premetric-Space-WIP A d x y (Nxy d) + + inv-sim-Premetric-Space-WIP : + {x y : type-Premetric-Space-WIP A} → + sim-Premetric-Space-WIP A x y → + sim-Premetric-Space-WIP A y x + inv-sim-Premetric-Space-WIP {x} {y} = + symmetric-sim-Premetric-Space-WIP x y ``` ### Similarity in premetric spaces is transitive @@ -121,16 +135,16 @@ module _ {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) where - is-equivalence-relation-sim-Premetric-Space : + is-equivalence-relation-sim-Premetric-Space-WIP : is-equivalence-relation (sim-prop-Premetric-Space-WIP A) - is-equivalence-relation-sim-Premetric-Space = + is-equivalence-relation-sim-Premetric-Space-WIP = ( refl-sim-Premetric-Space-WIP A) , ( symmetric-sim-Premetric-Space-WIP A) , ( transitive-sim-Premetric-Space-WIP A) - equivalence-sim-Premetric-Space : + equivalence-sim-Premetric-Space-WIP : equivalence-relation l2 (type-Premetric-Space-WIP A) - equivalence-sim-Premetric-Space = + equivalence-sim-Premetric-Space-WIP = ( sim-prop-Premetric-Space-WIP A) , - ( is-equivalence-relation-sim-Premetric-Space) + ( is-equivalence-relation-sim-Premetric-Space-WIP) ``` From 5354a1fc8a9dce8cfbb9112efe22712173561916 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 28 May 2025 20:45:12 +0200 Subject: [PATCH 09/42] fix WIP link --- src/metric-spaces/metric-spaces-WIP.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 37ef1df5d8..bb52c70871 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -31,7 +31,7 @@ open import metric-spaces.similarity-of-elements-premetric-spaces ## Idea -A {{#concept "metric space" Agda=Metric-Space WD="metric space" WDID=Q180953}} +A {{#concept "metric space" Agda=Metric-Space-WIP WD="metric space" WDID=Q180953}} is a type [structured](foundation.structure.md) with a concept of distance on its elements. From 98fcead92ff706a2f4321a75b189829927d6fbe8 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 28 May 2025 20:56:50 +0200 Subject: [PATCH 10/42] fix name and pre-commit --- .../extensional-premetric-spaces-WIP.lagda.md | 6 +++--- src/metric-spaces/metric-spaces-WIP.lagda.md | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md index 1a8647dd83..a067363c49 100644 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -135,10 +135,10 @@ module _ ( is-torsorial-sim-is-extensional-Premetric-Space-WIP x) ( sim-eq-Premetric-Space-WIP A x) - equiv-eq-sim-is-extensional-Premetric-Space-WIP : + equiv-sim-eq-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → (x = y) ≃ (sim-Premetric-Space-WIP A x y) - equiv-eq-sim-is-extensional-Premetric-Space-WIP x y = + equiv-sim-eq-is-extensional-Premetric-Space-WIP x y = ( sim-eq-Premetric-Space-WIP A x y) , ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) @@ -147,7 +147,7 @@ module _ sim-Premetric-Space-WIP A x y → x = y eq-sim-is-extensional-Premetric-Space-WIP x y = - map-inv-equiv (equiv-eq-sim-is-extensional-Premetric-Space-WIP x y) + map-inv-equiv (equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) ``` ### Any extensional premetric is tight diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index bb52c70871..70e21d98cc 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -31,7 +31,8 @@ open import metric-spaces.similarity-of-elements-premetric-spaces ## Idea -A {{#concept "metric space" Agda=Metric-Space-WIP WD="metric space" WDID=Q180953}} +A +{{#concept "metric space" Agda=Metric-Space-WIP WD="metric space" WDID=Q180953}} is a type [structured](foundation.structure.md) with a concept of distance on its elements. @@ -264,11 +265,11 @@ module _ {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) where - equiv-eq-sim-Metric-Space-WIP : + equiv-sim-eq-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → (x = y) ≃ sim-Metric-Space-WIP A x y - equiv-eq-sim-Metric-Space-WIP = - equiv-eq-sim-is-extensional-Premetric-Space-WIP + equiv-sim-eq-Metric-Space-WIP = + equiv-sim-eq-is-extensional-Premetric-Space-WIP ( premetric-Metric-Space-WIP A) ( is-extensional-premetric-Metric-Space-WIP A) @@ -277,7 +278,7 @@ module _ sim-Metric-Space-WIP A x y → x = y eq-sim-Metric-Space-WIP x y = - map-inv-equiv (equiv-eq-sim-Metric-Space-WIP x y) + map-inv-equiv (equiv-sim-eq-Metric-Space-WIP x y) ``` ## External links From f355e5ecd91608fee1c141cb74db973bbb8c7097 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 28 May 2025 21:19:27 +0200 Subject: [PATCH 11/42] fix typos/headers --- .../extensional-premetric-spaces-WIP.lagda.md | 2 +- src/metric-spaces/premetric-spaces-WIP.lagda.md | 12 +++++++----- .../triangular-rational-neighborhoods.lagda.md | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md index a067363c49..a723b4dda5 100644 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -97,7 +97,7 @@ module _ ```agda module _ - {l1 l2 : Level} ( A : Premetric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) (T : is-tight-Premetric-Space-WIP A) where diff --git a/src/metric-spaces/premetric-spaces-WIP.lagda.md b/src/metric-spaces/premetric-spaces-WIP.lagda.md index eb5b6f63ce..4993947e06 100644 --- a/src/metric-spaces/premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/premetric-spaces-WIP.lagda.md @@ -42,15 +42,17 @@ open import metric-spaces.triangular-rational-neighborhoods ## Idea A {{#concept "premetric space" Agda=Premetric-Space-WIP}} is a type equipped -with [reflexive](metric-spaces.reflexive-rational-neighborhoods.md), +with a {{concept "premetric structure" Agda=Premetric-Structure}}: a +[reflexive](metric-spaces.reflexive-rational-neighborhoods.md), [symmetric](metric-spaces.symmetric-rational-neighborhoods.md) and [triangular](metric-spaces.triangular-rational-neighborhoods.md) [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) -Given a premetric `B` on `A` and some positive rational number `d : ℚ⁺` such -that `B d x y` holds for some pair of points `x y : A`, we interpret `d` as an -{{#concept "upper bound" Disambiguation="on distance with respect to a premetric structure"}} -on the distance between `x` and `y` with respect to the premetric. +Given a premetric structure `B` on `A` and some positive rational number +`d : ℚ⁺` such that `B d x y` holds for some pair of points `x y : A`, we +interpret `d` as an +{{#concept "upper bound" Disambiguation="on distance in a premetric space" Agda=is-upper-bound-dist-Premetric-Space-WIP}} +on the distance between `x` and `y` in the premetric space. ## Definitions diff --git a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md index b9c04c4d0e..df7ce99b3c 100644 --- a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md @@ -74,7 +74,7 @@ module _ ## Properties -### Any triangular reflexive premetric is monotonic +### Any triangular reflexive rational neighborhood relation is monotonic ```agda module _ From 229c422a49f984b1bb0e984485c4218fed77d93d Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 14 Jun 2025 17:33:43 +0200 Subject: [PATCH 12/42] elements of premetric spaces with the same neighbors --- src/metric-spaces.lagda.md | 1 + ...ighbors-elements-premetric-spaces.lagda.md | 147 ++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 7d74ecab97..427a4f371a 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -107,6 +107,7 @@ open import metric-spaces.rational-neighborhoods public open import metric-spaces.rational-sequences-approximating-zero public open import metric-spaces.reflexive-premetric-structures public open import metric-spaces.reflexive-rational-neighborhoods public +open import metric-spaces.same-neighbors-elements-premetric-spaces public open import metric-spaces.saturated-complete-metric-spaces public open import metric-spaces.saturated-metric-spaces public open import metric-spaces.sequences-metric-spaces public diff --git a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md new file mode 100644 index 0000000000..adead491eb --- /dev/null +++ b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md @@ -0,0 +1,147 @@ +# Elements of premetric spaces with same neighbors + +```agda +module metric-spaces.same-neighbors-elements-premetric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.equivalence-relations +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.premetric-spaces-WIP +``` + +
+ +## Idea + +Two elements of a [premetric space](metric-spaces.premetric-Metric-Space-WIP.md) +have the {{#concept "same neighbors" Agda=sim-Premetric-Space-WIP'}} if their +neighborhoods are [equivalent](foundation.logical-equivalences.md). Having the +same neighbors is an [equivalence relation](foundation.equivalence-relations.md) +on the carrier type of the premetric space. + +## Definitions + +### Neighborhood similarity relation in premetric spaces + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + sim-prop-Premetric-Space-WIP' : + Relation-Prop (l1 ⊔ l2) (type-Premetric-Space-WIP A) + sim-prop-Premetric-Space-WIP' x y = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( type-Premetric-Space-WIP A) + ( λ z → + neighborhood-prop-Premetric-Space-WIP A ε x z ⇔ + neighborhood-prop-Premetric-Space-WIP A ε y z)) + + sim-Premetric-Space-WIP' : + Relation (l1 ⊔ l2) (type-Premetric-Space-WIP A) + sim-Premetric-Space-WIP' = + type-Relation-Prop sim-prop-Premetric-Space-WIP' + + is-prop-sim-Premetric-Space-WIP' : + (x y : type-Premetric-Space-WIP A) → + is-prop (sim-Premetric-Space-WIP' x y) + is-prop-sim-Premetric-Space-WIP' = + is-prop-type-Relation-Prop sim-prop-Premetric-Space-WIP' +``` + +## Properties + +### Similarity in premetric spaces is reflexive + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + refl-sim-Premetric-Space-WIP' : + (x : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP' A x x + refl-sim-Premetric-Space-WIP' x d z = + id-iff + + sim-eq-Premetric-Space-WIP' : + (x y : type-Premetric-Space-WIP A) → + x = y → + sim-Premetric-Space-WIP' A x y + sim-eq-Premetric-Space-WIP' x .x refl = + refl-sim-Premetric-Space-WIP' x +``` + +### Similarity in premetric spaces is symmetric + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + symmetric-sim-Premetric-Space-WIP' : + (x y : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP' A x y → + sim-Premetric-Space-WIP' A y x + symmetric-sim-Premetric-Space-WIP' x y Nxy d z = + inv-iff (Nxy d z) + + inv-sim-Premetric-Space-WIP' : + {x y : type-Premetric-Space-WIP A} → + sim-Premetric-Space-WIP' A x y → + sim-Premetric-Space-WIP' A y x + inv-sim-Premetric-Space-WIP' {x} {y} = + symmetric-sim-Premetric-Space-WIP' x y +``` + +### Similarity in premetric spaces is transitive + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + transitive-sim-Premetric-Space-WIP' : + (x y z : type-Premetric-Space-WIP A) → + sim-Premetric-Space-WIP' A y z → + sim-Premetric-Space-WIP' A x y → + sim-Premetric-Space-WIP' A x z + transitive-sim-Premetric-Space-WIP' x y z Nyz Nxy d w = + ( Nyz d w) ∘iff (Nxy d w) +``` + +### Similarity in premetric spaces is an equivalence relation + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + is-equivalence-relation-sim-Premetric-Space-WIP' : + is-equivalence-relation (sim-prop-Premetric-Space-WIP' A) + is-equivalence-relation-sim-Premetric-Space-WIP' = + ( refl-sim-Premetric-Space-WIP' A) , + ( symmetric-sim-Premetric-Space-WIP' A) , + ( transitive-sim-Premetric-Space-WIP' A) + + equivalence-sim-Premetric-Space-WIP' : + equivalence-relation (l1 ⊔ l2) (type-Premetric-Space-WIP A) + equivalence-sim-Premetric-Space-WIP' = + ( sim-prop-Premetric-Space-WIP' A) , + ( is-equivalence-relation-sim-Premetric-Space-WIP') +``` From fc21d4ce87c64a8be0a4c161506dce6e393da8a1 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 14 Jun 2025 17:44:15 +0200 Subject: [PATCH 13/42] refactor metric spaces using same-neighbors similarity relation --- .../extensional-premetric-spaces-WIP.lagda.md | 23 +++---- src/metric-spaces/metric-spaces-WIP.lagda.md | 65 ++++++++++++++++++- 2 files changed, 75 insertions(+), 13 deletions(-) diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md index a723b4dda5..2c958b1cc7 100644 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -22,6 +22,7 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.premetric-spaces-WIP +open import metric-spaces.same-neighbors-elements-premetric-spaces open import metric-spaces.similarity-of-elements-premetric-spaces ``` @@ -60,7 +61,7 @@ module _ ( type-Premetric-Space-WIP A) ( is-prop-Prop ∘ Σ (type-Premetric-Space-WIP A) ∘ - sim-Premetric-Space-WIP A) + sim-Premetric-Space-WIP' A) is-extensional-Premetric-Space-WIP : UU (l1 ⊔ l2) is-extensional-Premetric-Space-WIP = @@ -87,7 +88,7 @@ module _ is-tight-Premetric-Space-WIP : UU (l1 ⊔ l2) is-tight-Premetric-Space-WIP = (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A x y → + sim-Premetric-Space-WIP' A x y → x = y ``` @@ -107,7 +108,7 @@ module _ is-prop-all-elements-equal ( λ (u , I) (v , J) → eq-type-subtype - ( sim-prop-Premetric-Space-WIP A x) + ( sim-prop-Premetric-Space-WIP' A x) ( inv (T x u I) ∙ T x v J)) ``` @@ -121,30 +122,30 @@ module _ is-torsorial-sim-is-extensional-Premetric-Space-WIP : (x : type-Premetric-Space-WIP A) → - is-torsorial (sim-Premetric-Space-WIP A x) + is-torsorial (sim-Premetric-Space-WIP' A x) is-torsorial-sim-is-extensional-Premetric-Space-WIP x = is-proof-irrelevant-is-prop ( E x) - ( x , refl-sim-Premetric-Space-WIP A x) + ( x , refl-sim-Premetric-Space-WIP' A x) is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → - is-equiv (sim-eq-Premetric-Space-WIP A x y) + is-equiv (sim-eq-Premetric-Space-WIP' A x y) is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x = fundamental-theorem-id ( is-torsorial-sim-is-extensional-Premetric-Space-WIP x) - ( sim-eq-Premetric-Space-WIP A x) + ( sim-eq-Premetric-Space-WIP' A x) equiv-sim-eq-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → - (x = y) ≃ (sim-Premetric-Space-WIP A x y) + (x = y) ≃ (sim-Premetric-Space-WIP' A x y) equiv-sim-eq-is-extensional-Premetric-Space-WIP x y = - ( sim-eq-Premetric-Space-WIP A x y) , + ( sim-eq-Premetric-Space-WIP' A x y) , ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) eq-sim-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A x y → + sim-Premetric-Space-WIP' A x y → x = y eq-sim-is-extensional-Premetric-Space-WIP x y = map-inv-equiv (equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) @@ -181,7 +182,7 @@ module _ ( E) ( x) ( y)) - ( is-prop-sim-Premetric-Space-WIP A x y) + ( is-prop-sim-Premetric-Space-WIP' A x y) ``` ## See also diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 70e21d98cc..eb3282b92d 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -24,6 +24,7 @@ open import foundation.universe-levels open import metric-spaces.extensional-premetric-spaces-WIP open import metric-spaces.premetric-spaces-WIP +open import metric-spaces.same-neighbors-elements-premetric-spaces open import metric-spaces.similarity-of-elements-premetric-spaces ``` @@ -238,6 +239,66 @@ module _ equivalence-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) ``` +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + sim-prop-Metric-Space-WIP' : Relation-Prop (l1 ⊔ l2) (type-Metric-Space-WIP A) + sim-prop-Metric-Space-WIP' = + sim-prop-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + sim-Metric-Space-WIP' : Relation (l1 ⊔ l2) (type-Metric-Space-WIP A) + sim-Metric-Space-WIP' = + sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + is-prop-sim-Metric-Space-WIP' : + (x y : type-Metric-Space-WIP A) → + is-prop (sim-Metric-Space-WIP' x y) + is-prop-sim-Metric-Space-WIP' = + is-prop-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + refl-sim-Metric-Space-WIP' : + (x : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP' x x + refl-sim-Metric-Space-WIP' = + refl-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + sim-eq-Metric-Space-WIP' : + (x y : type-Metric-Space-WIP A) → + x = y → + sim-Metric-Space-WIP' x y + sim-eq-Metric-Space-WIP' = + sim-eq-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + symmetric-sim-Metric-Space-WIP' : + (x y : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP' x y → + sim-Metric-Space-WIP' y x + symmetric-sim-Metric-Space-WIP' = + symmetric-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + inv-sim-Metric-Space-WIP' : + {x y : type-Metric-Space-WIP A} → + sim-Metric-Space-WIP' x y → + sim-Metric-Space-WIP' y x + inv-sim-Metric-Space-WIP' {x} {y} = + inv-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + transitive-sim-Metric-Space-WIP' : + (x y z : type-Metric-Space-WIP A) → + sim-Metric-Space-WIP' y z → + sim-Metric-Space-WIP' x y → + sim-Metric-Space-WIP' x z + transitive-sim-Metric-Space-WIP' = + transitive-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) + + equivalence-sim-Metric-Space-Wip' : + equivalence-relation (l1 ⊔ l2) (type-Metric-Space-WIP A) + equivalence-sim-Metric-Space-Wip' = + equivalence-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) +``` + ## Properties ### The carrier type of a metric space is a set @@ -267,7 +328,7 @@ module _ equiv-sim-eq-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → - (x = y) ≃ sim-Metric-Space-WIP A x y + (x = y) ≃ sim-Metric-Space-WIP' A x y equiv-sim-eq-Metric-Space-WIP = equiv-sim-eq-is-extensional-Premetric-Space-WIP ( premetric-Metric-Space-WIP A) @@ -275,7 +336,7 @@ module _ eq-sim-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → - sim-Metric-Space-WIP A x y → + sim-Metric-Space-WIP' A x y → x = y eq-sim-Metric-Space-WIP x y = map-inv-equiv (equiv-sim-eq-Metric-Space-WIP x y) From 033e3e3ee089464cc237366584a60a384abf14c7 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 14 Jun 2025 18:46:20 +0200 Subject: [PATCH 14/42] typo --- src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md index 2c958b1cc7..161f297552 100644 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -38,8 +38,7 @@ if any of the following equivalent condition holds: elements are [identical](foundation-core.identity-types.md); - the similarity relation has [propositional](foundation.propositions.md) fibers; -- the similarity relations is - [torsorial](foundation.torsorial-type-families.md). +- the similarity relation is [torsorial](foundation.torsorial-type-families.md). The carrier type of an extensional premetric space is a [set](foundation.sets.md) and the From 2fcb409d3fe4b0ec1cd1ce90f0a49813de6ea4e2 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 14 Jun 2025 18:46:58 +0200 Subject: [PATCH 15/42] header upper bound dist rational neighborhood relation --- src/metric-spaces/rational-neighborhoods.lagda.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhoods.lagda.md index f3f7c1dff9..3ef9a8fef7 100644 --- a/src/metric-spaces/rational-neighborhoods.lagda.md +++ b/src/metric-spaces/rational-neighborhoods.lagda.md @@ -25,6 +25,13 @@ is a type family of the [positive rational numbers](elementary-number-theory.positive-rational-numbers.md). +Given a rational neighborhood relation `N` on `A` and some positive rational +number `d : ℚ⁺` such that `N d x y` holds for some pair of points `x y : A`, we +interpret `d` as an +{{#concept "upper bound" Disambiguation="on the distance with respect to a rational neighborhood relation"}} +on the distance between `x` and `y` with respect to the rational neighborhood +relation. + ## Definitions ### Rational neighborhood relation on a type From be3f1d62ef97a7fbe46423ca526dcda2eb23e5be Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 14 Jun 2025 19:28:49 +0200 Subject: [PATCH 16/42] Identity principle for rational neighborhood relations --- .../rational-neighborhoods.lagda.md | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhoods.lagda.md index 3ef9a8fef7..9aeb9c5162 100644 --- a/src/metric-spaces/rational-neighborhoods.lagda.md +++ b/src/metric-spaces/rational-neighborhoods.lagda.md @@ -10,7 +10,23 @@ module metric-spaces.rational-neighborhoods where open import elementary-number-theory.positive-rational-numbers open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.negation +open import foundation.propositional-extensionality open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.univalence open import foundation.universe-levels ``` @@ -59,3 +75,139 @@ module _ is-prop-neighborhood-Rational-Neighborhood-Relation d x y = is-prop-type-Prop (B d x y) ``` + +## Properties + +### Equality of rational neighborhood relations + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + {l2' : Level} (N' : Rational-Neighborhood-Relation l2' A) + where + + Eq-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2 ⊔ l2') + Eq-prop-Rational-Neighborhood-Relation = + Π-Prop + ( ℚ⁺) + ( λ d → + Π-Prop + ( A) + ( λ x → + Π-Prop + ( A) + ( λ y → N d x y ⇔ N' d x y))) + + Eq-Rational-Neighborhood-Relation : UU (l1 ⊔ l2 ⊔ l2') + Eq-Rational-Neighborhood-Relation = + type-Prop Eq-prop-Rational-Neighborhood-Relation + + is-prop-Eq-Rational-Neighborhood-Relation : + is-prop Eq-Rational-Neighborhood-Relation + is-prop-Eq-Rational-Neighborhood-Relation = + is-prop-type-Prop Eq-prop-Rational-Neighborhood-Relation +``` + +### Identity principle for rational neighborhood relations + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + where + + refl-Eq-Rational-Neighborhood-Relation : Eq-Rational-Neighborhood-Relation N N + refl-Eq-Rational-Neighborhood-Relation d x y = id-iff + + Eq-eq-Rational-Neighborhood-Relation : + (N' : Rational-Neighborhood-Relation l2 A) → + N = N' → + Eq-Rational-Neighborhood-Relation N N' + Eq-eq-Rational-Neighborhood-Relation .N refl = + refl-Eq-Rational-Neighborhood-Relation + + eq-Eq-Rational-Neighborhood-Relation : + (N' : Rational-Neighborhood-Relation l2 A) → + Eq-Rational-Neighborhood-Relation N N' → + N = N' + eq-Eq-Rational-Neighborhood-Relation N' H = + eq-htpy + ( λ d → + eq-htpy + ( λ x → + eq-htpy + ( λ y → + eq-iff' (N d x y) (N' d x y) (H d x y)))) + + is-torsorial-Eq-Rational-Neighborhood-Relation : + is-torsorial (Eq-Rational-Neighborhood-Relation N) + is-torsorial-Eq-Rational-Neighborhood-Relation = + ( N , refl-Eq-Rational-Neighborhood-Relation) , + ( λ (N' , e) → + eq-type-subtype + ( Eq-prop-Rational-Neighborhood-Relation N) + ( eq-Eq-Rational-Neighborhood-Relation N' e)) + + is-fiberwise-equiv-Eq-eq-Rational-Neighborhood-Relation : + (N' : Rational-Neighborhood-Relation l2 A) → + is-equiv (Eq-eq-Rational-Neighborhood-Relation N') + is-fiberwise-equiv-Eq-eq-Rational-Neighborhood-Relation = + fundamental-theorem-id + is-torsorial-Eq-Rational-Neighborhood-Relation + Eq-eq-Rational-Neighborhood-Relation + + equiv-Eq-eq-Rational-Neighborhood-Relation : + (N' : Rational-Neighborhood-Relation l2 A) → + (N = N') ≃ (Eq-Rational-Neighborhood-Relation N N') + equiv-Eq-eq-Rational-Neighborhood-Relation N' = + Eq-eq-Rational-Neighborhood-Relation N' , + is-fiberwise-equiv-Eq-eq-Rational-Neighborhood-Relation N' +``` + +### Characterization of the transport of rational neighborhood relations along equality of types + +```agda +module _ + {l1 l2 : Level} (A : UU l1) + where + + Eq-map-eq-tr-Rational-Neighborhood-Relation : + (B : UU l1) (e : A = B) (S : Rational-Neighborhood-Relation l2 A) → + Eq-Rational-Neighborhood-Relation + ( S) + ( λ d x y → + tr (Rational-Neighborhood-Relation l2) e S d (map-eq e x) (map-eq e y)) + Eq-map-eq-tr-Rational-Neighborhood-Relation .A refl S = + refl-Eq-Rational-Neighborhood-Relation S + + eq-map-eq-tr-Rational-Neighborhood-Relation : + (B : UU l1) (e : A = B) (S : Rational-Neighborhood-Relation l2 A) → + Id + ( S) + ( λ d x y → + tr (Rational-Neighborhood-Relation l2) e S d (map-eq e x) (map-eq e y)) + eq-map-eq-tr-Rational-Neighborhood-Relation B e S = + eq-Eq-Rational-Neighborhood-Relation + ( S) + ( λ d x y → + tr (Rational-Neighborhood-Relation l2) e S d (map-eq e x) (map-eq e y)) + ( Eq-map-eq-tr-Rational-Neighborhood-Relation B e S) + + Eq-map-inv-eq-tr-Rational-Neighborhood-Relation : + (B : UU l1) (e : A = B) (S : Rational-Neighborhood-Relation l2 A) → + Eq-Rational-Neighborhood-Relation + ( tr (Rational-Neighborhood-Relation l2) e S) + ( λ d x y → S d (map-inv-eq e x) (map-inv-eq e y)) + Eq-map-inv-eq-tr-Rational-Neighborhood-Relation .A refl S = + refl-Eq-Rational-Neighborhood-Relation S + + eq-map-inv-eq-tr-Rational-Neighborhood-Relation : + (B : UU l1) (e : A = B) (S : Rational-Neighborhood-Relation l2 A) → + Id + ( tr (Rational-Neighborhood-Relation l2) e S) + ( λ d x y → S d (map-inv-eq e x) (map-inv-eq e y)) + eq-map-inv-eq-tr-Rational-Neighborhood-Relation B e S = + eq-Eq-Rational-Neighborhood-Relation + ( tr (Rational-Neighborhood-Relation l2) e S) + ( λ d x y → S d (map-inv-eq e x) (map-inv-eq e y)) + ( Eq-map-inv-eq-tr-Rational-Neighborhood-Relation B e S) +``` From 855b5a5e57e16f2c893589c2dd9c14872d251add Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 15 Jun 2025 01:56:33 +0200 Subject: [PATCH 17/42] fix link --- .../same-neighbors-elements-premetric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md index adead491eb..ebcd8c88e8 100644 --- a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md +++ b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md @@ -25,7 +25,7 @@ open import metric-spaces.premetric-spaces-WIP ## Idea -Two elements of a [premetric space](metric-spaces.premetric-Metric-Space-WIP.md) +Two elements of a [premetric space](metric-spaces.premetric-spaces-WIP.md) have the {{#concept "same neighbors" Agda=sim-Premetric-Space-WIP'}} if their neighborhoods are [equivalent](foundation.logical-equivalences.md). Having the same neighbors is an [equivalence relation](foundation.equivalence-relations.md) From 576fa9d577667a8ac936567decd6ced9433a501f Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 15 Jun 2025 02:17:26 +0200 Subject: [PATCH 18/42] format header --- .../same-neighbors-elements-premetric-spaces.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md index ebcd8c88e8..d0e545502c 100644 --- a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md +++ b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md @@ -25,8 +25,8 @@ open import metric-spaces.premetric-spaces-WIP ## Idea -Two elements of a [premetric space](metric-spaces.premetric-spaces-WIP.md) -have the {{#concept "same neighbors" Agda=sim-Premetric-Space-WIP'}} if their +Two elements of a [premetric space](metric-spaces.premetric-spaces-WIP.md) have +the {{#concept "same neighbors" Agda=sim-Premetric-Space-WIP'}} if their neighborhoods are [equivalent](foundation.logical-equivalences.md). Having the same neighbors is an [equivalence relation](foundation.equivalence-relations.md) on the carrier type of the premetric space. From 536daaac748d60df0ea377dc90dd8c1bf1c7cb4e Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 16 Jun 2025 23:37:49 +0200 Subject: [PATCH 19/42] refactor definitions --- src/metric-spaces.lagda.md | 2 +- .../extensional-premetric-spaces-WIP.lagda.md | 23 ++- src/metric-spaces/metric-spaces-WIP.lagda.md | 65 +------- .../premetric-spaces-WIP.lagda.md | 29 +++- .../rational-neighborhoods.lagda.md | 129 ++++++++++++++- ...ighbors-elements-premetric-spaces.lagda.md | 147 ------------------ .../saturated-rational-neighborhoods.lagda.md | 145 +++++++++++++++++ ...rity-of-elements-premetric-spaces.lagda.md | 109 ++++++++++++- 8 files changed, 420 insertions(+), 229 deletions(-) delete mode 100644 src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md create mode 100644 src/metric-spaces/saturated-rational-neighborhoods.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 427a4f371a..43fb3dee52 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -107,9 +107,9 @@ open import metric-spaces.rational-neighborhoods public open import metric-spaces.rational-sequences-approximating-zero public open import metric-spaces.reflexive-premetric-structures public open import metric-spaces.reflexive-rational-neighborhoods public -open import metric-spaces.same-neighbors-elements-premetric-spaces public open import metric-spaces.saturated-complete-metric-spaces public open import metric-spaces.saturated-metric-spaces public +open import metric-spaces.saturated-rational-neighborhoods public open import metric-spaces.sequences-metric-spaces public open import metric-spaces.sequences-premetric-spaces public open import metric-spaces.sequences-pseudometric-spaces public diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md index 161f297552..559a4e7042 100644 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -22,7 +22,6 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.premetric-spaces-WIP -open import metric-spaces.same-neighbors-elements-premetric-spaces open import metric-spaces.similarity-of-elements-premetric-spaces ``` @@ -60,7 +59,7 @@ module _ ( type-Premetric-Space-WIP A) ( is-prop-Prop ∘ Σ (type-Premetric-Space-WIP A) ∘ - sim-Premetric-Space-WIP' A) + sim-Premetric-Space-WIP A) is-extensional-Premetric-Space-WIP : UU (l1 ⊔ l2) is-extensional-Premetric-Space-WIP = @@ -87,7 +86,7 @@ module _ is-tight-Premetric-Space-WIP : UU (l1 ⊔ l2) is-tight-Premetric-Space-WIP = (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP' A x y → + sim-Premetric-Space-WIP A x y → x = y ``` @@ -107,7 +106,7 @@ module _ is-prop-all-elements-equal ( λ (u , I) (v , J) → eq-type-subtype - ( sim-prop-Premetric-Space-WIP' A x) + ( sim-prop-Premetric-Space-WIP A x) ( inv (T x u I) ∙ T x v J)) ``` @@ -121,30 +120,30 @@ module _ is-torsorial-sim-is-extensional-Premetric-Space-WIP : (x : type-Premetric-Space-WIP A) → - is-torsorial (sim-Premetric-Space-WIP' A x) + is-torsorial (sim-Premetric-Space-WIP A x) is-torsorial-sim-is-extensional-Premetric-Space-WIP x = is-proof-irrelevant-is-prop ( E x) - ( x , refl-sim-Premetric-Space-WIP' A x) + ( x , refl-sim-Premetric-Space-WIP A x) is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → - is-equiv (sim-eq-Premetric-Space-WIP' A x y) + is-equiv (sim-eq-Premetric-Space-WIP A x y) is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x = fundamental-theorem-id ( is-torsorial-sim-is-extensional-Premetric-Space-WIP x) - ( sim-eq-Premetric-Space-WIP' A x) + ( sim-eq-Premetric-Space-WIP A x) equiv-sim-eq-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → - (x = y) ≃ (sim-Premetric-Space-WIP' A x y) + (x = y) ≃ (sim-Premetric-Space-WIP A x y) equiv-sim-eq-is-extensional-Premetric-Space-WIP x y = - ( sim-eq-Premetric-Space-WIP' A x y) , + ( sim-eq-Premetric-Space-WIP A x y) , ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) eq-sim-is-extensional-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP' A x y → + sim-Premetric-Space-WIP A x y → x = y eq-sim-is-extensional-Premetric-Space-WIP x y = map-inv-equiv (equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) @@ -181,7 +180,7 @@ module _ ( E) ( x) ( y)) - ( is-prop-sim-Premetric-Space-WIP' A x y) + ( is-prop-sim-Premetric-Space-WIP A x y) ``` ## See also diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index eb3282b92d..70e21d98cc 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -24,7 +24,6 @@ open import foundation.universe-levels open import metric-spaces.extensional-premetric-spaces-WIP open import metric-spaces.premetric-spaces-WIP -open import metric-spaces.same-neighbors-elements-premetric-spaces open import metric-spaces.similarity-of-elements-premetric-spaces ``` @@ -239,66 +238,6 @@ module _ equivalence-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) ``` -```agda -module _ - {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) - where - - sim-prop-Metric-Space-WIP' : Relation-Prop (l1 ⊔ l2) (type-Metric-Space-WIP A) - sim-prop-Metric-Space-WIP' = - sim-prop-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - sim-Metric-Space-WIP' : Relation (l1 ⊔ l2) (type-Metric-Space-WIP A) - sim-Metric-Space-WIP' = - sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - is-prop-sim-Metric-Space-WIP' : - (x y : type-Metric-Space-WIP A) → - is-prop (sim-Metric-Space-WIP' x y) - is-prop-sim-Metric-Space-WIP' = - is-prop-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - refl-sim-Metric-Space-WIP' : - (x : type-Metric-Space-WIP A) → - sim-Metric-Space-WIP' x x - refl-sim-Metric-Space-WIP' = - refl-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - sim-eq-Metric-Space-WIP' : - (x y : type-Metric-Space-WIP A) → - x = y → - sim-Metric-Space-WIP' x y - sim-eq-Metric-Space-WIP' = - sim-eq-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - symmetric-sim-Metric-Space-WIP' : - (x y : type-Metric-Space-WIP A) → - sim-Metric-Space-WIP' x y → - sim-Metric-Space-WIP' y x - symmetric-sim-Metric-Space-WIP' = - symmetric-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - inv-sim-Metric-Space-WIP' : - {x y : type-Metric-Space-WIP A} → - sim-Metric-Space-WIP' x y → - sim-Metric-Space-WIP' y x - inv-sim-Metric-Space-WIP' {x} {y} = - inv-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - transitive-sim-Metric-Space-WIP' : - (x y z : type-Metric-Space-WIP A) → - sim-Metric-Space-WIP' y z → - sim-Metric-Space-WIP' x y → - sim-Metric-Space-WIP' x z - transitive-sim-Metric-Space-WIP' = - transitive-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) - - equivalence-sim-Metric-Space-Wip' : - equivalence-relation (l1 ⊔ l2) (type-Metric-Space-WIP A) - equivalence-sim-Metric-Space-Wip' = - equivalence-sim-Premetric-Space-WIP' (premetric-Metric-Space-WIP A) -``` - ## Properties ### The carrier type of a metric space is a set @@ -328,7 +267,7 @@ module _ equiv-sim-eq-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → - (x = y) ≃ sim-Metric-Space-WIP' A x y + (x = y) ≃ sim-Metric-Space-WIP A x y equiv-sim-eq-Metric-Space-WIP = equiv-sim-eq-is-extensional-Premetric-Space-WIP ( premetric-Metric-Space-WIP A) @@ -336,7 +275,7 @@ module _ eq-sim-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → - sim-Metric-Space-WIP' A x y → + sim-Metric-Space-WIP A x y → x = y eq-sim-Metric-Space-WIP x y = map-inv-equiv (equiv-sim-eq-Metric-Space-WIP x y) diff --git a/src/metric-spaces/premetric-spaces-WIP.lagda.md b/src/metric-spaces/premetric-spaces-WIP.lagda.md index 4993947e06..e47aa413ad 100644 --- a/src/metric-spaces/premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/premetric-spaces-WIP.lagda.md @@ -33,6 +33,7 @@ open import foundation.universe-levels open import metric-spaces.monotonic-rational-neighborhoods open import metric-spaces.rational-neighborhoods open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.saturated-rational-neighborhoods open import metric-spaces.symmetric-rational-neighborhoods open import metric-spaces.triangular-rational-neighborhoods ``` @@ -44,8 +45,9 @@ open import metric-spaces.triangular-rational-neighborhoods A {{#concept "premetric space" Agda=Premetric-Space-WIP}} is a type equipped with a {{concept "premetric structure" Agda=Premetric-Structure}}: a [reflexive](metric-spaces.reflexive-rational-neighborhoods.md), -[symmetric](metric-spaces.symmetric-rational-neighborhoods.md) and -[triangular](metric-spaces.triangular-rational-neighborhoods.md) +[symmetric](metric-spaces.symmetric-rational-neighborhoods.md), +[triangular](metric-spaces.triangular-rational-neighborhoods.md) and +[saturated](metric-spaces.saturated-rational-neighborhoods.md) [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) Given a premetric structure `B` on `A` and some positive rational number @@ -70,7 +72,9 @@ module _ ( is-reflexive-prop-Rational-Neighborhood-Relation B) ( product-Prop ( is-symmetric-prop-Rational-Neighborhood-Relation B) - ( is-triangular-prop-Rational-Neighborhood-Relation B)) + ( product-Prop + ( is-triangular-prop-Rational-Neighborhood-Relation B) + ( is-saturated-prop-Rational-Neighborhood-Relation B))) is-premetric-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) is-premetric-Rational-Neighborhood-Relation = @@ -171,7 +175,14 @@ module _ neighborhood-Premetric-Space-WIP d₁ x y → neighborhood-Premetric-Space-WIP (d₁ +ℚ⁺ d₂) x z triangular-neighborhood-Premetric-Space-WIP = - pr2 (pr2 is-premetric-neighborhood-Premetric-Space-WIP) + pr1 (pr2 (pr2 is-premetric-neighborhood-Premetric-Space-WIP)) + + saturated-neighborhood-Premetric-Space-WIP : + (ε : ℚ⁺) (x y : type-Premetric-Space-WIP) → + ((δ : ℚ⁺) → neighborhood-Premetric-Space-WIP (ε +ℚ⁺ δ) x y) → + neighborhood-Premetric-Space-WIP ε x y + saturated-neighborhood-Premetric-Space-WIP = + pr2 (pr2 (pr2 is-premetric-neighborhood-Premetric-Space-WIP)) monotonic-neighborhood-Premetric-Space-WIP : (x y : type-Premetric-Space-WIP) (d₁ d₂ : ℚ⁺) → @@ -183,4 +194,14 @@ module _ neighborhood-prop-Premetric-Space-WIP refl-neighborhood-Premetric-Space-WIP triangular-neighborhood-Premetric-Space-WIP + + iff-le-neighborhood-Premetric-Space-WIP : + ( ε : ℚ⁺) (x y : type-Premetric-Space-WIP) → + ( neighborhood-Premetric-Space-WIP ε x y) ↔ + ( (δ : ℚ⁺) → le-ℚ⁺ ε δ → neighborhood-Premetric-Space-WIP δ x y) + iff-le-neighborhood-Premetric-Space-WIP = + iff-le-neighborhood-saturated-monotonic-Rational-Neighborhood-Relation + neighborhood-prop-Premetric-Space-WIP + monotonic-neighborhood-Premetric-Space-WIP + saturated-neighborhood-Premetric-Space-WIP ``` diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhoods.lagda.md index 9aeb9c5162..070ea3a62e 100644 --- a/src/metric-spaces/rational-neighborhoods.lagda.md +++ b/src/metric-spaces/rational-neighborhoods.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.binary-relations open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.equivalence-relations open import foundation.equivalences open import foundation.existential-quantification open import foundation.function-extensionality @@ -44,7 +45,7 @@ the Given a rational neighborhood relation `N` on `A` and some positive rational number `d : ℚ⁺` such that `N d x y` holds for some pair of points `x y : A`, we interpret `d` as an -{{#concept "upper bound" Disambiguation="on the distance with respect to a rational neighborhood relation"}} +{{#concept "upper bound" Disambiguation="on the distance with respect to a rational neighborhood relation" Agda=is-upper-bound-dist-Rational-Neighborhood-Relation}} on the distance between `x` and `y` with respect to the rational neighborhood relation. @@ -74,6 +75,21 @@ module _ is-prop (neighborhood-Rational-Neighborhood-Relation d x y) is-prop-neighborhood-Rational-Neighborhood-Relation d x y = is-prop-type-Prop (B d x y) + + is-upper-bound-dist-prop-Rational-Neighborhood-Relation : + A → A → ℚ⁺ → Prop l2 + is-upper-bound-dist-prop-Rational-Neighborhood-Relation x y d = B d x y + + is-upper-bound-dist-Rational-Neighborhood-Relation : + A → A → ℚ⁺ → UU l2 + is-upper-bound-dist-Rational-Neighborhood-Relation x y d = + neighborhood-Rational-Neighborhood-Relation d x y + + is-prop-is-upper-bound-dist-Rational-Neighborhood-Relation : + (x y : A) (d : ℚ⁺) → + is-prop (is-upper-bound-dist-Rational-Neighborhood-Relation x y d) + is-prop-is-upper-bound-dist-Rational-Neighborhood-Relation x y d = + is-prop-neighborhood-Rational-Neighborhood-Relation d x y ``` ## Properties @@ -211,3 +227,114 @@ module _ ( λ d x y → S d (map-inv-eq e x) (map-inv-eq e y)) ( Eq-map-inv-eq-tr-Rational-Neighborhood-Relation B e S) ``` + +### The similarity relation induced by a rational neighborhood relation + +```agda +module _ {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + where + + sim-prop-Rational-Neighborhood-Relation : Relation-Prop (l1 ⊔ l2) A + sim-prop-Rational-Neighborhood-Relation x y = + Π-Prop + ( ℚ⁺) + ( λ d → + Π-Prop + ( A) + ( λ z → + product-Prop + ( N d x z ⇔ N d y z) + ( N d z x ⇔ N d z y))) + + sim-Rational-Neighborhood-Relation : Relation (l1 ⊔ l2) A + sim-Rational-Neighborhood-Relation x y = + type-Prop (sim-prop-Rational-Neighborhood-Relation x y) + + is-prop-sim-Rational-Neighborhood-Relatiion : + (x y : A) → is-prop (sim-Rational-Neighborhood-Relation x y) + is-prop-sim-Rational-Neighborhood-Relatiion x y = + is-prop-type-Prop (sim-prop-Rational-Neighborhood-Relation x y) + + iff-left-neighbor-sim-Rational-Neighborhood-Relation : + {x y : A} → + sim-Rational-Neighborhood-Relation x y → + (d : ℚ⁺) (z : A) → + neighborhood-Rational-Neighborhood-Relation N d x z ↔ + neighborhood-Rational-Neighborhood-Relation N d y z + iff-left-neighbor-sim-Rational-Neighborhood-Relation x≍y d z = + pr1 (x≍y d z) + + iff-right-neighbor-sim-Rational-Neighborhood-Relation : + {x y : A} → + sim-Rational-Neighborhood-Relation x y → + (d : ℚ⁺) (z : A) → + neighborhood-Rational-Neighborhood-Relation N d z x ↔ + neighborhood-Rational-Neighborhood-Relation N d z y + iff-right-neighbor-sim-Rational-Neighborhood-Relation x≍y d z = + pr2 (x≍y d z) + + refl-sim-Rational-Neighborhood-Relation : + (x : A) → sim-Rational-Neighborhood-Relation x x + refl-sim-Rational-Neighborhood-Relation x d z = id-iff , id-iff + + sim-eq-Rational-Neighborhood-Relation : + (x y : A) → x = y → sim-Rational-Neighborhood-Relation x y + sim-eq-Rational-Neighborhood-Relation x .x refl = + refl-sim-Rational-Neighborhood-Relation x + + symmetric-sim-Rational-Neighborhood-Relation : + (x y : A) → + sim-Rational-Neighborhood-Relation x y → + sim-Rational-Neighborhood-Relation y x + symmetric-sim-Rational-Neighborhood-Relation x y x≍y d z = + ( inv-iff (iff-left-neighbor-sim-Rational-Neighborhood-Relation x≍y d z)) , + ( inv-iff (iff-right-neighbor-sim-Rational-Neighborhood-Relation x≍y d z)) + + inv-sim-Rational-Neighborhood-Relation : + {x y : A} → + sim-Rational-Neighborhood-Relation x y → + sim-Rational-Neighborhood-Relation y x + inv-sim-Rational-Neighborhood-Relation {x} {y} = + symmetric-sim-Rational-Neighborhood-Relation x y + + transitive-sim-Rational-Neighborhood-Relation : + (x y z : A) → + sim-Rational-Neighborhood-Relation y z → + sim-Rational-Neighborhood-Relation x y → + sim-Rational-Neighborhood-Relation x z + transitive-sim-Rational-Neighborhood-Relation x y z y≍z x≍y d w = + ( ( iff-left-neighbor-sim-Rational-Neighborhood-Relation y≍z d w) ∘iff + ( iff-left-neighbor-sim-Rational-Neighborhood-Relation x≍y d w)) , + ( ( iff-right-neighbor-sim-Rational-Neighborhood-Relation y≍z d w) ∘iff + ( iff-right-neighbor-sim-Rational-Neighborhood-Relation x≍y d w)) + + is-equivalence-relation-sim-Rational-Neighborhood-Relation : + is-equivalence-relation (sim-prop-Rational-Neighborhood-Relation) + is-equivalence-relation-sim-Rational-Neighborhood-Relation = + refl-sim-Rational-Neighborhood-Relation , + symmetric-sim-Rational-Neighborhood-Relation , + transitive-sim-Rational-Neighborhood-Relation + + equivalence-sim-Rational-Neighborhood-Relation : + equivalence-relation (l1 ⊔ l2) A + equivalence-sim-Rational-Neighborhood-Relation = + sim-prop-Rational-Neighborhood-Relation , + is-equivalence-relation-sim-Rational-Neighborhood-Relation +``` + +### Similar elements have equivalent self-neighborhoods + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + where + + iff-self-neighborhood-sim-Rational-Neighborhood-Relation : + (d : ℚ⁺) (x y : A) → + sim-Rational-Neighborhood-Relation N x y → + neighborhood-Rational-Neighborhood-Relation N d x x ↔ + neighborhood-Rational-Neighborhood-Relation N d y y + iff-self-neighborhood-sim-Rational-Neighborhood-Relation d x y x≍y = + ( iff-right-neighbor-sim-Rational-Neighborhood-Relation N x≍y d y) ∘iff + ( iff-left-neighbor-sim-Rational-Neighborhood-Relation N x≍y d x) +``` diff --git a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md b/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md deleted file mode 100644 index d0e545502c..0000000000 --- a/src/metric-spaces/same-neighbors-elements-premetric-spaces.lagda.md +++ /dev/null @@ -1,147 +0,0 @@ -# Elements of premetric spaces with same neighbors - -```agda -module metric-spaces.same-neighbors-elements-premetric-spaces where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.binary-relations -open import foundation.dependent-pair-types -open import foundation.equivalence-relations -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.propositions -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import metric-spaces.premetric-spaces-WIP -``` - -
- -## Idea - -Two elements of a [premetric space](metric-spaces.premetric-spaces-WIP.md) have -the {{#concept "same neighbors" Agda=sim-Premetric-Space-WIP'}} if their -neighborhoods are [equivalent](foundation.logical-equivalences.md). Having the -same neighbors is an [equivalence relation](foundation.equivalence-relations.md) -on the carrier type of the premetric space. - -## Definitions - -### Neighborhood similarity relation in premetric spaces - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - sim-prop-Premetric-Space-WIP' : - Relation-Prop (l1 ⊔ l2) (type-Premetric-Space-WIP A) - sim-prop-Premetric-Space-WIP' x y = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( type-Premetric-Space-WIP A) - ( λ z → - neighborhood-prop-Premetric-Space-WIP A ε x z ⇔ - neighborhood-prop-Premetric-Space-WIP A ε y z)) - - sim-Premetric-Space-WIP' : - Relation (l1 ⊔ l2) (type-Premetric-Space-WIP A) - sim-Premetric-Space-WIP' = - type-Relation-Prop sim-prop-Premetric-Space-WIP' - - is-prop-sim-Premetric-Space-WIP' : - (x y : type-Premetric-Space-WIP A) → - is-prop (sim-Premetric-Space-WIP' x y) - is-prop-sim-Premetric-Space-WIP' = - is-prop-type-Relation-Prop sim-prop-Premetric-Space-WIP' -``` - -## Properties - -### Similarity in premetric spaces is reflexive - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - refl-sim-Premetric-Space-WIP' : - (x : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP' A x x - refl-sim-Premetric-Space-WIP' x d z = - id-iff - - sim-eq-Premetric-Space-WIP' : - (x y : type-Premetric-Space-WIP A) → - x = y → - sim-Premetric-Space-WIP' A x y - sim-eq-Premetric-Space-WIP' x .x refl = - refl-sim-Premetric-Space-WIP' x -``` - -### Similarity in premetric spaces is symmetric - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - symmetric-sim-Premetric-Space-WIP' : - (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP' A x y → - sim-Premetric-Space-WIP' A y x - symmetric-sim-Premetric-Space-WIP' x y Nxy d z = - inv-iff (Nxy d z) - - inv-sim-Premetric-Space-WIP' : - {x y : type-Premetric-Space-WIP A} → - sim-Premetric-Space-WIP' A x y → - sim-Premetric-Space-WIP' A y x - inv-sim-Premetric-Space-WIP' {x} {y} = - symmetric-sim-Premetric-Space-WIP' x y -``` - -### Similarity in premetric spaces is transitive - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - transitive-sim-Premetric-Space-WIP' : - (x y z : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP' A y z → - sim-Premetric-Space-WIP' A x y → - sim-Premetric-Space-WIP' A x z - transitive-sim-Premetric-Space-WIP' x y z Nyz Nxy d w = - ( Nyz d w) ∘iff (Nxy d w) -``` - -### Similarity in premetric spaces is an equivalence relation - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - is-equivalence-relation-sim-Premetric-Space-WIP' : - is-equivalence-relation (sim-prop-Premetric-Space-WIP' A) - is-equivalence-relation-sim-Premetric-Space-WIP' = - ( refl-sim-Premetric-Space-WIP' A) , - ( symmetric-sim-Premetric-Space-WIP' A) , - ( transitive-sim-Premetric-Space-WIP' A) - - equivalence-sim-Premetric-Space-WIP' : - equivalence-relation (l1 ⊔ l2) (type-Premetric-Space-WIP A) - equivalence-sim-Premetric-Space-WIP' = - ( sim-prop-Premetric-Space-WIP' A) , - ( is-equivalence-relation-sim-Premetric-Space-WIP') -``` diff --git a/src/metric-spaces/saturated-rational-neighborhoods.lagda.md b/src/metric-spaces/saturated-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..b3875fbe99 --- /dev/null +++ b/src/metric-spaces/saturated-rational-neighborhoods.lagda.md @@ -0,0 +1,145 @@ +# Saturated rational neighborhood relations + +```agda +module metric-spaces.saturated-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-extensionality +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.univalence +open import foundation.universe-levels + +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) on a +type `A` is +{{#concept "saturated" Disambiguation="rational neighborhood relation" Agda=is-saturated-Rational-Neighborhood-Relation}} +if `ε`-neighborhoods satisfy the following condition: + +- For any `x y : A`, if `x` and `y` are in a `(ε + δ)`-neighborhood for all + [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) + `δ`, then they are in a `ε`-neighborhood. + +Or, equivalently if for any `(x y : A)`, the subset of +[upper bounds](metric-spaces.rational-neighborhoods.md) on the distance between +`x` and `y` is closed on the left: + +- For any `ε : ℚ⁺`, if `ε + δ` is an upper bound of the distance between `x` and + `y` for all `(δ : ℚ⁺)`, then so is `ε`. + +## Definitions + +### The property of being a saturated rational neighborhood relation + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + where + + is-saturated-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-saturated-prop-Rational-Neighborhood-Relation = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( A) + ( λ x → + Π-Prop + ( A) + ( λ y → + hom-Prop + ( Π-Prop + ( ℚ⁺) + ( λ δ → N (ε +ℚ⁺ δ) x y)) + ( N ε x y)))) + + is-saturated-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-saturated-Rational-Neighborhood-Relation = + type-Prop is-saturated-prop-Rational-Neighborhood-Relation + + is-prop-is-saturated-Rational-Neighborhood-Relation : + is-prop is-saturated-Rational-Neighborhood-Relation + is-prop-is-saturated-Rational-Neighborhood-Relation = + is-prop-type-Prop is-saturated-prop-Rational-Neighborhood-Relation +``` + +### The saturation of a rational neighborhood relation + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + where + + saturate-Rational-Neighborhood-Relation : Rational-Neighborhood-Relation l2 A + saturate-Rational-Neighborhood-Relation ε x y = + Π-Prop ℚ⁺ (λ δ → N (ε +ℚ⁺ δ) x y) +``` + +## Properties + +### The saturation of a rational neighborhood relation is saturated + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + where + + is-saturated-saturate-Rational-Neighborhood-Relation : + is-saturated-Rational-Neighborhood-Relation + ( saturate-Rational-Neighborhood-Relation N) + is-saturated-saturate-Rational-Neighborhood-Relation ε x y H δ = + tr + ( is-upper-bound-dist-Rational-Neighborhood-Relation N x y) + ( ( associative-add-ℚ⁺ + ( ε) + ( left-summand-split-ℚ⁺ δ) + ( right-summand-split-ℚ⁺ δ)) ∙ + ( ap (add-ℚ⁺ ε) (eq-add-split-ℚ⁺ δ))) + ( H (left-summand-split-ℚ⁺ δ) (right-summand-split-ℚ⁺ δ)) +``` + +### In a monotonic saturated rational neighborhood relation, `N ε x y ⇔ (∀ δ → ε < δ → N δ x y)` + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + (monotonic-N : is-monotonic-Rational-Neighborhood-Relation N) + (saturated-N : is-saturated-Rational-Neighborhood-Relation N) + where + + iff-le-neighborhood-saturated-monotonic-Rational-Neighborhood-Relation : + ( ε : ℚ⁺) (x y : A) → + ( neighborhood-Rational-Neighborhood-Relation N ε x y) ↔ + ( (δ : ℚ⁺) → + le-ℚ⁺ ε δ → + neighborhood-Rational-Neighborhood-Relation N δ x y) + iff-le-neighborhood-saturated-monotonic-Rational-Neighborhood-Relation ε x y = + ( λ Nxy δ ε<δ → monotonic-N x y ε δ ε<δ Nxy) , + ( λ H → saturated-N ε x y λ δ → H (ε +ℚ⁺ δ) (le-left-add-ℚ⁺ ε δ)) +``` diff --git a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md index 3b6cef558a..73587810c6 100644 --- a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md @@ -12,12 +12,15 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.binary-relations open import foundation.dependent-pair-types open import foundation.equivalence-relations +open import foundation.function-types open import foundation.identity-types +open import foundation.logical-equivalences open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.premetric-spaces-WIP +open import metric-spaces.rational-neighborhoods ``` @@ -27,7 +30,14 @@ open import metric-spaces.premetric-spaces-WIP Two elements `x y` of a [premetric space](metric-spaces.premetric-spaces-WIP.md) are {{#concept "similar" Disambiguation="elements of a premetric space" Agda=sim-Premetric-Space-WIP}} -if they share all neighborhoods. Similarity in premetric spaces is an +if any of the following equivalent propositions holds: + +- they are similar w.r.t the underlying + [rational neighborhood relation](metric-spaces.rational-neighborhoods.md); +- they have the same neighbors: `∀ δ z → N δ x z ↔ N δ y z`; +- they share all neighborhoods: `∀ δ → N δ x y`. + +Similarity in a premetric space is an [equivalence relation](foundation.equivalence-relations.md). ## Definitions @@ -148,3 +158,100 @@ module _ ( sim-prop-Premetric-Space-WIP A) , ( is-equivalence-relation-sim-Premetric-Space-WIP) ``` + +### Similar elements are elements with the same neighbors + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + preserves-neighborhood-sim-Premetric-Space : + { x y : type-Premetric-Space-WIP A} → + ( sim-Premetric-Space-WIP A x y) → + ( d : ℚ⁺) (z : type-Premetric-Space-WIP A) → + neighborhood-Premetric-Space-WIP A d x z → + neighborhood-Premetric-Space-WIP A d y z + preserves-neighborhood-sim-Premetric-Space {x} {y} x≍y d z Nxz = + saturated-neighborhood-Premetric-Space-WIP + ( A) + ( d) + ( y) + ( z) + ( λ δ → + tr + ( is-upper-bound-dist-Premetric-Space-WIP A y z) + ( commutative-add-ℚ⁺ δ d) + ( triangular-neighborhood-Premetric-Space-WIP + ( A) + ( y) + ( x) + ( z) + ( δ) + ( d) + ( Nxz) + ( symmetric-neighborhood-Premetric-Space-WIP + ( A) + ( δ) + ( x) + ( y) + ( x≍y δ)))) + + iff-same-neighbors-sim-Premetric-Space : + { x y : type-Premetric-Space-WIP A} → + ( sim-Premetric-Space-WIP A x y) ↔ + ( (d : ℚ⁺) (z : type-Premetric-Space-WIP A) → + neighborhood-Premetric-Space-WIP A d x z ↔ + neighborhood-Premetric-Space-WIP A d y z) + iff-same-neighbors-sim-Premetric-Space = + ( λ x≍y d z → + ( preserves-neighborhood-sim-Premetric-Space x≍y d z) , + ( preserves-neighborhood-sim-Premetric-Space + ( inv-sim-Premetric-Space-WIP A x≍y) + ( d) + ( z))) , + ( λ same-neighbors d → + backward-implication + ( same-neighbors d _) + ( refl-sim-Premetric-Space-WIP A _ d)) +``` + +### Similar elements are elements similar w.r.t the underlying rational neighborhood relation + +```agda +module _ + {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) + where + + iff-same-neighbors-same-neighborhood-Premetric-Space : + {x y : type-Premetric-Space-WIP A} → + ( (d : ℚ⁺) (z : type-Premetric-Space-WIP A) → + neighborhood-Premetric-Space-WIP A d x z ↔ + neighborhood-Premetric-Space-WIP A d y z) ↔ + ( sim-Rational-Neighborhood-Relation + ( neighborhood-prop-Premetric-Space-WIP A) + ( x) + ( y)) + iff-same-neighbors-same-neighborhood-Premetric-Space = + ( λ H d z → + ( H d z) , + ( inv-neighborhood-Premetric-Space-WIP A ∘ + pr1 (H d z) ∘ + inv-neighborhood-Premetric-Space-WIP A) , + ( inv-neighborhood-Premetric-Space-WIP A ∘ + pr2 (H d z) ∘ + inv-neighborhood-Premetric-Space-WIP A)) , + ( iff-left-neighbor-sim-Rational-Neighborhood-Relation + ( neighborhood-prop-Premetric-Space-WIP A)) + + iff-same-neighborhood-sim-Premetric-Space : + { x y : type-Premetric-Space-WIP A} → + ( sim-Premetric-Space-WIP A x y) ↔ + ( sim-Rational-Neighborhood-Relation + ( neighborhood-prop-Premetric-Space-WIP A) + ( x) + ( y)) + iff-same-neighborhood-sim-Premetric-Space = + ( iff-same-neighbors-same-neighborhood-Premetric-Space) ∘iff + ( iff-same-neighbors-sim-Premetric-Space A) +``` From dda0228a5921838d7175db85c9d82f7216c2a840 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 17 Jun 2025 17:45:13 +0200 Subject: [PATCH 20/42] typo --- src/metric-spaces/short-functions-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/short-functions-metric-spaces.lagda.md b/src/metric-spaces/short-functions-metric-spaces.lagda.md index 566e76808f..ed1f20ba8c 100644 --- a/src/metric-spaces/short-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces.lagda.md @@ -228,7 +228,7 @@ module _ ( λ x → refl) ``` -### Associatity of composition of short maps between metric spaces +### Associativity of composition of short maps between metric spaces ```agda module _ From 83c2ad867a5f828db8bc3c707dc63f72a9cd7403 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 18 Jun 2025 02:43:34 +0200 Subject: [PATCH 21/42] typo --- src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md index 559a4e7042..db963f307a 100644 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md @@ -46,7 +46,7 @@ over a set is extensional. ## Definitions -### The property of being an extenstional premetric space +### The property of being an extensional premetric space ```agda module _ From b12efcd77353ac93781a7ffee03af8892dc571cc Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 18 Jun 2025 02:48:06 +0200 Subject: [PATCH 22/42] fix headers --- src/metric-spaces/monotonic-rational-neighborhoods.lagda.md | 4 ++-- src/metric-spaces/reflexive-rational-neighborhoods.lagda.md | 2 +- src/metric-spaces/symmetric-rational-neighborhoods.lagda.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md index e1f53e6439..ab7117e855 100644 --- a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md @@ -20,12 +20,12 @@ open import metric-spaces.rational-neighborhoods ## Idea A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is -{{#concept "monotonic" Disambiguation="premetric" Agda=is-monotonic-Rational-Neighborhood-Relation}} +{{#concept "monotonic" Disambiguation="rational neighborhood relation" Agda=is-monotonic-Rational-Neighborhood-Relation}} if any `d₁`-neighborhoods are `d₂`-neighborhoods for `d₁ < d₂`. ## Definitions -### The property of being a monotonic premetric structure +### The property of being a monotonic rational neighborhood relation ```agda module _ diff --git a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md b/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md index a9858ba7aa..1fc82e1c0b 100644 --- a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md @@ -22,7 +22,7 @@ open import metric-spaces.rational-neighborhoods ## Idea A [rational neighborhood](metric-spaces.rational-neighborhoods.md) is -{{#concept "reflexive" Disambiguation="premetric" Agda=is-reflexive-Rational-Neighborhood-Relation}} +{{#concept "reflexive" Disambiguation="rational neighborhood relation" Agda=is-reflexive-Rational-Neighborhood-Relation}} if any element is in all neighborhoods of itself. ## Definitions diff --git a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md b/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md index 3ba14632e6..c23e85b6b4 100644 --- a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md @@ -22,7 +22,7 @@ open import metric-spaces.rational-neighborhoods ## Idea A [rational neighborhood](metric-spaces.rational-neighborhoods.md) is -{{#concept "symmetric" Disambiguation="premetric" Agda=is-symmetric-Rational-Neighborhood-Relation}} +{{#concept "symmetric" Disambiguation="rational neighborhood relation" Agda=is-symmetric-Rational-Neighborhood-Relation}} if all neighborhoods are symmetric. ## Definitions From 446e4e8da61b62d9d8351f95292646fb2a3be625 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 18 Jun 2025 04:18:32 +0200 Subject: [PATCH 23/42] missing definition --- src/metric-spaces/metric-spaces-WIP.lagda.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 70e21d98cc..88319cf0ba 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -120,6 +120,11 @@ module _ is-prop-neighborhood-Metric-Space-WIP = is-prop-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + is-upper-bound-dist-prop-Metric-Space-WIP : + (x y : type-Metric-Space-WIP) → ℚ⁺ → Prop l2 + is-upper-bound-dist-prop-Metric-Space-WIP x y d = + neighborhood-prop-Metric-Space-WIP d x y + is-upper-bound-dist-Metric-Space-WIP : (x y : type-Metric-Space-WIP) → ℚ⁺ → UU l2 is-upper-bound-dist-Metric-Space-WIP x y d = From ababea644d49e0c76152858c00b89e75915549d6 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 21 Jun 2025 17:03:47 +0200 Subject: [PATCH 24/42] rename premetric spaces -> pseudometric spaces --- src/metric-spaces.lagda.md | 6 +- .../extensional-premetric-spaces-WIP.lagda.md | 189 ------------- ...tensional-pseudometric-spaces-WIP.lagda.md | 190 +++++++++++++ src/metric-spaces/metric-spaces-WIP.lagda.md | 90 +++--- .../premetric-spaces-WIP.lagda.md | 207 -------------- .../pseudometric-spaces-WIP.lagda.md | 213 +++++++++++++++ ...rity-of-elements-premetric-spaces.lagda.md | 257 ------------------ ...y-of-elements-pseudometric-spaces.lagda.md | 257 ++++++++++++++++++ 8 files changed, 708 insertions(+), 701 deletions(-) delete mode 100644 src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/premetric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/pseudometric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md create mode 100644 src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 43fb3dee52..ef4629588a 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -62,8 +62,8 @@ open import metric-spaces.discrete-premetric-structures public open import metric-spaces.elements-at-bounded-distance-metric-spaces public open import metric-spaces.equality-of-metric-spaces public open import metric-spaces.equality-of-premetric-spaces public -open import metric-spaces.extensional-premetric-spaces-WIP public open import metric-spaces.extensional-premetric-structures public +open import metric-spaces.extensional-pseudometric-spaces-WIP public open import metric-spaces.functions-metric-spaces public open import metric-spaces.functor-category-set-functions-isometry-metric-spaces public open import metric-spaces.functor-category-short-isometry-metric-spaces public @@ -97,9 +97,9 @@ open import metric-spaces.precategory-of-metric-spaces-and-functions public open import metric-spaces.precategory-of-metric-spaces-and-isometries public open import metric-spaces.precategory-of-metric-spaces-and-short-functions public open import metric-spaces.premetric-spaces public -open import metric-spaces.premetric-spaces-WIP public open import metric-spaces.premetric-structures public open import metric-spaces.pseudometric-spaces public +open import metric-spaces.pseudometric-spaces-WIP public open import metric-spaces.pseudometric-structures public open import metric-spaces.rational-approximations-of-zero public open import metric-spaces.rational-cauchy-approximations public @@ -115,7 +115,7 @@ open import metric-spaces.sequences-premetric-spaces public open import metric-spaces.sequences-pseudometric-spaces public open import metric-spaces.short-functions-metric-spaces public open import metric-spaces.short-functions-premetric-spaces public -open import metric-spaces.similarity-of-elements-premetric-spaces public +open import metric-spaces.similarity-of-elements-pseudometric-spaces public open import metric-spaces.subspaces-metric-spaces public open import metric-spaces.symmetric-premetric-structures public open import metric-spaces.symmetric-rational-neighborhoods public diff --git a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md deleted file mode 100644 index db963f307a..0000000000 --- a/src/metric-spaces/extensional-premetric-spaces-WIP.lagda.md +++ /dev/null @@ -1,189 +0,0 @@ -# Extensional premetric spaces (WIP) - -```agda -module metric-spaces.extensional-premetric-spaces-WIP where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.dependent-pair-types -open import foundation.equivalences -open import foundation.function-types -open import foundation.fundamental-theorem-of-identity-types -open import foundation.identity-types -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.torsorial-type-families -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import metric-spaces.premetric-spaces-WIP -open import metric-spaces.similarity-of-elements-premetric-spaces -``` - -
- -## Idea - -A [premetric space](metric-spaces.premetric-spaces-WIP.md) is called -{{#concept "extensional" Disambiguation="premetric space" Agda=is-extensional-Premetric-Space-WIP}} -if any of the following equivalent condition holds: - -- any [similar](metric-spaces.similarity-of-elements-premetric-spaces.md) - elements are [identical](foundation-core.identity-types.md); -- the similarity relation has [propositional](foundation.propositions.md) - fibers; -- the similarity relation is [torsorial](foundation.torsorial-type-families.md). - -The carrier type of an extensional premetric space is a -[set](foundation.sets.md) and the -[discrete premetric structure](metric-spaces.discrete-premetric-structures.md) -over a set is extensional. - -## Definitions - -### The property of being an extensional premetric space - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - is-extensional-prop-Premetric-Space-WIP : Prop (l1 ⊔ l2) - is-extensional-prop-Premetric-Space-WIP = - Π-Prop - ( type-Premetric-Space-WIP A) - ( is-prop-Prop ∘ - Σ (type-Premetric-Space-WIP A) ∘ - sim-Premetric-Space-WIP A) - - is-extensional-Premetric-Space-WIP : UU (l1 ⊔ l2) - is-extensional-Premetric-Space-WIP = - type-Prop is-extensional-prop-Premetric-Space-WIP - - is-prop-is-extensional-Premetric-Space-WIP : - is-prop is-extensional-Premetric-Space-WIP - is-prop-is-extensional-Premetric-Space-WIP = - is-prop-type-Prop is-extensional-prop-Premetric-Space-WIP -``` - -### Tightness of a premetric space - -A premetric space is -{{#concept "tight" Disambiguation="premetric" Agda=is-tight-Premetric-Space-WIP}} -if any two [similar](metric-spaces.similarity-of-elements-premetric-spaces.md) -elements are [equal](foundation-core.identity-types.md). - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - is-tight-Premetric-Space-WIP : UU (l1 ⊔ l2) - is-tight-Premetric-Space-WIP = - (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A x y → - x = y -``` - -## Properties - -### Any tight premetric space is extensional - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - (T : is-tight-Premetric-Space-WIP A) - where - - is-extensional-is-tight-Premetric-Space : - is-extensional-Premetric-Space-WIP A - is-extensional-is-tight-Premetric-Space x = - is-prop-all-elements-equal - ( λ (u , I) (v , J) → - eq-type-subtype - ( sim-prop-Premetric-Space-WIP A x) - ( inv (T x u I) ∙ T x v J)) -``` - -### Characterization of equality in an extensional premetric space - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - (E : is-extensional-Premetric-Space-WIP A) - where - - is-torsorial-sim-is-extensional-Premetric-Space-WIP : - (x : type-Premetric-Space-WIP A) → - is-torsorial (sim-Premetric-Space-WIP A x) - is-torsorial-sim-is-extensional-Premetric-Space-WIP x = - is-proof-irrelevant-is-prop - ( E x) - ( x , refl-sim-Premetric-Space-WIP A x) - - is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP A) → - is-equiv (sim-eq-Premetric-Space-WIP A x y) - is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x = - fundamental-theorem-id - ( is-torsorial-sim-is-extensional-Premetric-Space-WIP x) - ( sim-eq-Premetric-Space-WIP A x) - - equiv-sim-eq-is-extensional-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP A) → - (x = y) ≃ (sim-Premetric-Space-WIP A x y) - equiv-sim-eq-is-extensional-Premetric-Space-WIP x y = - ( sim-eq-Premetric-Space-WIP A x y) , - ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) - - eq-sim-is-extensional-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A x y → - x = y - eq-sim-is-extensional-Premetric-Space-WIP x y = - map-inv-equiv (equiv-sim-eq-is-extensional-Premetric-Space-WIP x y) -``` - -### Any extensional premetric is tight - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - (E : is-extensional-Premetric-Space-WIP A) - where - - is-tight-is-extensional-Premetric-Space-WIP : - is-tight-Premetric-Space-WIP A - is-tight-is-extensional-Premetric-Space-WIP = - eq-sim-is-extensional-Premetric-Space-WIP A E -``` - -### The carrier type of an extensional premetric space is a set - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - (E : is-extensional-Premetric-Space-WIP A) - where - - is-set-type-is-extensional-Premetric-Space-WIP : - is-set (type-Premetric-Space-WIP A) - is-set-type-is-extensional-Premetric-Space-WIP x y = - is-prop-is-equiv - ( is-fiberwise-equiv-sim-eq-is-extensional-Premetric-Space-WIP - ( A) - ( E) - ( x) - ( y)) - ( is-prop-sim-Premetric-Space-WIP A x y) -``` - -## See also - -- [metric spaces](metric-spaces.metric-spaces-WIP.md): the type of extensional - premetric spaces. diff --git a/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..31285bf915 --- /dev/null +++ b/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md @@ -0,0 +1,190 @@ +# Extensional pseudometric spaces (WIP) + +```agda +module metric-spaces.extensional-pseudometric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.similarity-of-elements-pseudometric-spaces +``` + +
+ +## Idea + +A [pseudometric space](metric-spaces.pseudometric-spaces-WIP.md) is called +{{#concept "extensional" Disambiguation="pseudometric space" Agda=is-extensional-Pseudometric-Space-WIP}} +if any of the following equivalent condition holds: + +- any [similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) + elements are [identical](foundation-core.identity-types.md); +- the similarity relation has [propositional](foundation.propositions.md) + fibers; +- the similarity relation is [torsorial](foundation.torsorial-type-families.md). + +The carrier type of an extensional pseudometric space is a +[set](foundation.sets.md) and the +[discrete pseudometric structure](metric-spaces.discrete-pseudometric-structures.md) +over a set is extensional. + +## Definitions + +### The property of being an extensional pseudometric space + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + is-extensional-prop-Pseudometric-Space-WIP : Prop (l1 ⊔ l2) + is-extensional-prop-Pseudometric-Space-WIP = + Π-Prop + ( type-Pseudometric-Space-WIP A) + ( is-prop-Prop ∘ + Σ (type-Pseudometric-Space-WIP A) ∘ + sim-Pseudometric-Space-WIP A) + + is-extensional-Pseudometric-Space-WIP : UU (l1 ⊔ l2) + is-extensional-Pseudometric-Space-WIP = + type-Prop is-extensional-prop-Pseudometric-Space-WIP + + is-prop-is-extensional-Pseudometric-Space-WIP : + is-prop is-extensional-Pseudometric-Space-WIP + is-prop-is-extensional-Pseudometric-Space-WIP = + is-prop-type-Prop is-extensional-prop-Pseudometric-Space-WIP +``` + +### Tightness of a pseudometric space + +A pseudometric space is +{{#concept "tight" Disambiguation="pseudometric" Agda=is-tight-Pseudometric-Space-WIP}} +if any two +[similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) elements +are [equal](foundation-core.identity-types.md). + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + is-tight-Pseudometric-Space-WIP : UU (l1 ⊔ l2) + is-tight-Pseudometric-Space-WIP = + (x y : type-Pseudometric-Space-WIP A) → + sim-Pseudometric-Space-WIP A x y → + x = y +``` + +## Properties + +### Any tight pseudometric space is extensional + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + (T : is-tight-Pseudometric-Space-WIP A) + where + + is-extensional-is-tight-Pseudometric-Space : + is-extensional-Pseudometric-Space-WIP A + is-extensional-is-tight-Pseudometric-Space x = + is-prop-all-elements-equal + ( λ (u , I) (v , J) → + eq-type-subtype + ( sim-prop-Pseudometric-Space-WIP A x) + ( inv (T x u I) ∙ T x v J)) +``` + +### Characterization of equality in an extensional pseudometric space + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + (E : is-extensional-Pseudometric-Space-WIP A) + where + + is-torsorial-sim-is-extensional-Pseudometric-Space-WIP : + (x : type-Pseudometric-Space-WIP A) → + is-torsorial (sim-Pseudometric-Space-WIP A x) + is-torsorial-sim-is-extensional-Pseudometric-Space-WIP x = + is-proof-irrelevant-is-prop + ( E x) + ( x , refl-sim-Pseudometric-Space-WIP A x) + + is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP A) → + is-equiv (sim-eq-Pseudometric-Space-WIP A x y) + is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space-WIP x = + fundamental-theorem-id + ( is-torsorial-sim-is-extensional-Pseudometric-Space-WIP x) + ( sim-eq-Pseudometric-Space-WIP A x) + + equiv-sim-eq-is-extensional-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP A) → + (x = y) ≃ (sim-Pseudometric-Space-WIP A x y) + equiv-sim-eq-is-extensional-Pseudometric-Space-WIP x y = + ( sim-eq-Pseudometric-Space-WIP A x y) , + ( is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space-WIP x y) + + eq-sim-is-extensional-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP A) → + sim-Pseudometric-Space-WIP A x y → + x = y + eq-sim-is-extensional-Pseudometric-Space-WIP x y = + map-inv-equiv (equiv-sim-eq-is-extensional-Pseudometric-Space-WIP x y) +``` + +### Any extensional pseudometric is tight + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + (E : is-extensional-Pseudometric-Space-WIP A) + where + + is-tight-is-extensional-Pseudometric-Space-WIP : + is-tight-Pseudometric-Space-WIP A + is-tight-is-extensional-Pseudometric-Space-WIP = + eq-sim-is-extensional-Pseudometric-Space-WIP A E +``` + +### The carrier type of an extensional pseudometric space is a set + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + (E : is-extensional-Pseudometric-Space-WIP A) + where + + is-set-type-is-extensional-Pseudometric-Space-WIP : + is-set (type-Pseudometric-Space-WIP A) + is-set-type-is-extensional-Pseudometric-Space-WIP x y = + is-prop-is-equiv + ( is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space-WIP + ( A) + ( E) + ( x) + ( y)) + ( is-prop-sim-Pseudometric-Space-WIP A x y) +``` + +## See also + +- [metric spaces](metric-spaces.metric-spaces-WIP.md): the type of extensional + pseudometric spaces. diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 88319cf0ba..291b97fc22 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -22,9 +22,9 @@ open import foundation.subtypes open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels -open import metric-spaces.extensional-premetric-spaces-WIP -open import metric-spaces.premetric-spaces-WIP -open import metric-spaces.similarity-of-elements-premetric-spaces +open import metric-spaces.extensional-pseudometric-spaces-WIP +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.similarity-of-elements-pseudometric-spaces ``` @@ -65,11 +65,11 @@ The neighborhood relation on a metric space must satisfy the following axioms: distance from `x` to `z`. This gives `A` the structure of a -[**premetric space**](metric-spaces.premetric-spaces-WIP.md); finally, we ask -that our metric spaces are -[**extensional**](metric-spaces.extensional-premetric-spaces-WIP.md): -[similar](metric-spaces.similarity-of-elements-premetric-spaces.md) elements are -[equal](foundation-core.identity-types.md): +[**pseudometric space**](metric-spaces.pseudometric-spaces-WIP.md); finally, we +ask that our metric spaces are +[**extensional**](metric-spaces.extensional-pseudometric-spaces-WIP.md): +[similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) elements +are [equal](foundation-core.identity-types.md): - If every positive rational `d` is an upper bound on the distance from `x` to `y`, then `x = y`. @@ -84,41 +84,41 @@ metric space is a [set](foundation.sets.md). ```agda Metric-Space-WIP : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) Metric-Space-WIP l1 l2 = - type-subtype (is-extensional-prop-Premetric-Space-WIP {l1} {l2}) + type-subtype (is-extensional-prop-Pseudometric-Space-WIP {l1} {l2}) module _ {l1 l2 : Level} (M : Metric-Space-WIP l1 l2) where - premetric-Metric-Space-WIP : Premetric-Space-WIP l1 l2 - premetric-Metric-Space-WIP = pr1 M + pseudometric-Metric-Space-WIP : Pseudometric-Space-WIP l1 l2 + pseudometric-Metric-Space-WIP = pr1 M - is-extensional-premetric-Metric-Space-WIP : - is-extensional-Premetric-Space-WIP premetric-Metric-Space-WIP - is-extensional-premetric-Metric-Space-WIP = pr2 M + is-extensional-pseudometric-Metric-Space-WIP : + is-extensional-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP + is-extensional-pseudometric-Metric-Space-WIP = pr2 M type-Metric-Space-WIP : UU l1 type-Metric-Space-WIP = - type-Premetric-Space-WIP premetric-Metric-Space-WIP + type-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP - structure-Metric-Space-WIP : Premetric-Structure l2 type-Metric-Space-WIP + structure-Metric-Space-WIP : Pseudometric-Structure l2 type-Metric-Space-WIP structure-Metric-Space-WIP = - structure-Premetric-Space-WIP premetric-Metric-Space-WIP + structure-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP neighborhood-prop-Metric-Space-WIP : ℚ⁺ → Relation-Prop l2 type-Metric-Space-WIP neighborhood-prop-Metric-Space-WIP = - neighborhood-prop-Premetric-Space-WIP premetric-Metric-Space-WIP + neighborhood-prop-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP neighborhood-Metric-Space-WIP : ℚ⁺ → Relation l2 type-Metric-Space-WIP neighborhood-Metric-Space-WIP = - neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP is-prop-neighborhood-Metric-Space-WIP : (d : ℚ⁺) (x y : type-Metric-Space-WIP) → is-prop (neighborhood-Metric-Space-WIP d x y) is-prop-neighborhood-Metric-Space-WIP = - is-prop-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + is-prop-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP is-upper-bound-dist-prop-Metric-Space-WIP : (x y : type-Metric-Space-WIP) → ℚ⁺ → Prop l2 @@ -136,33 +136,33 @@ module _ is-prop-is-upper-bound-dist-Metric-Space-WIP x y d = is-prop-neighborhood-Metric-Space-WIP d x y - is-premetric-neighborhood-Metric-Space-WIP : - is-premetric-Rational-Neighborhood-Relation + is-pseudometric-neighborhood-Metric-Space-WIP : + is-pseudometric-Rational-Neighborhood-Relation type-Metric-Space-WIP neighborhood-prop-Metric-Space-WIP - is-premetric-neighborhood-Metric-Space-WIP = - is-premetric-neighborhood-Premetric-Space-WIP - premetric-Metric-Space-WIP + is-pseudometric-neighborhood-Metric-Space-WIP = + is-pseudometric-neighborhood-Pseudometric-Space-WIP + pseudometric-Metric-Space-WIP refl-neighborhood-Metric-Space-WIP : (d : ℚ⁺) (x : type-Metric-Space-WIP) → neighborhood-Metric-Space-WIP d x x refl-neighborhood-Metric-Space-WIP = - refl-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + refl-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP symmetric-neighborhood-Metric-Space-WIP : (d : ℚ⁺) (x y : type-Metric-Space-WIP) → neighborhood-Metric-Space-WIP d x y → neighborhood-Metric-Space-WIP d y x symmetric-neighborhood-Metric-Space-WIP = - symmetric-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + symmetric-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP inv-neighborhood-Metric-Space-WIP : {d : ℚ⁺} {x y : type-Metric-Space-WIP} → neighborhood-Metric-Space-WIP d x y → neighborhood-Metric-Space-WIP d y x inv-neighborhood-Metric-Space-WIP = - inv-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + inv-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP triangular-neighborhood-Metric-Space-WIP : (x y z : type-Metric-Space-WIP) (d₁ d₂ : ℚ⁺) → @@ -170,7 +170,7 @@ module _ neighborhood-Metric-Space-WIP d₁ x y → neighborhood-Metric-Space-WIP (d₁ +ℚ⁺ d₂) x z triangular-neighborhood-Metric-Space-WIP = - triangular-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + triangular-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP monotonic-neighborhood-Metric-Space-WIP : (x y : type-Metric-Space-WIP) (d₁ d₂ : ℚ⁺) → @@ -178,7 +178,7 @@ module _ neighborhood-Metric-Space-WIP d₁ x y → neighborhood-Metric-Space-WIP d₂ x y monotonic-neighborhood-Metric-Space-WIP = - monotonic-neighborhood-Premetric-Space-WIP premetric-Metric-Space-WIP + monotonic-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP ``` ### Similarity of elements in a metric space @@ -190,44 +190,44 @@ module _ sim-prop-Metric-Space-WIP : Relation-Prop l2 (type-Metric-Space-WIP A) sim-prop-Metric-Space-WIP = - sim-prop-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + sim-prop-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) sim-Metric-Space-WIP : Relation l2 (type-Metric-Space-WIP A) sim-Metric-Space-WIP = - sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) is-prop-sim-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → is-prop (sim-Metric-Space-WIP x y) is-prop-sim-Metric-Space-WIP = - is-prop-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + is-prop-sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) refl-sim-Metric-Space-WIP : (x : type-Metric-Space-WIP A) → sim-Metric-Space-WIP x x refl-sim-Metric-Space-WIP = - refl-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + refl-sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) sim-eq-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → x = y → sim-Metric-Space-WIP x y sim-eq-Metric-Space-WIP = - sim-eq-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + sim-eq-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) symmetric-sim-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → sim-Metric-Space-WIP x y → sim-Metric-Space-WIP y x symmetric-sim-Metric-Space-WIP = - symmetric-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + symmetric-sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) inv-sim-Metric-Space-WIP : {x y : type-Metric-Space-WIP A} → sim-Metric-Space-WIP x y → sim-Metric-Space-WIP y x inv-sim-Metric-Space-WIP {x} {y} = - inv-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + inv-sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) transitive-sim-Metric-Space-WIP : (x y z : type-Metric-Space-WIP A) → @@ -235,12 +235,12 @@ module _ sim-Metric-Space-WIP x y → sim-Metric-Space-WIP x z transitive-sim-Metric-Space-WIP = - transitive-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + transitive-sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) equivalence-sim-Metric-Space-WIP : equivalence-relation l2 (type-Metric-Space-WIP A) equivalence-sim-Metric-Space-WIP = - equivalence-sim-Premetric-Space-WIP (premetric-Metric-Space-WIP A) + equivalence-sim-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) ``` ## Properties @@ -254,9 +254,9 @@ module _ is-set-type-Metric-Space-WIP : is-set (type-Metric-Space-WIP A) is-set-type-Metric-Space-WIP = - is-set-type-is-extensional-Premetric-Space-WIP - ( premetric-Metric-Space-WIP A) - ( is-extensional-premetric-Metric-Space-WIP A) + is-set-type-is-extensional-Pseudometric-Space-WIP + ( pseudometric-Metric-Space-WIP A) + ( is-extensional-pseudometric-Metric-Space-WIP A) set-Metric-Space-WIP : Set l1 set-Metric-Space-WIP = @@ -274,9 +274,9 @@ module _ (x y : type-Metric-Space-WIP A) → (x = y) ≃ sim-Metric-Space-WIP A x y equiv-sim-eq-Metric-Space-WIP = - equiv-sim-eq-is-extensional-Premetric-Space-WIP - ( premetric-Metric-Space-WIP A) - ( is-extensional-premetric-Metric-Space-WIP A) + equiv-sim-eq-is-extensional-Pseudometric-Space-WIP + ( pseudometric-Metric-Space-WIP A) + ( is-extensional-pseudometric-Metric-Space-WIP A) eq-sim-Metric-Space-WIP : (x y : type-Metric-Space-WIP A) → diff --git a/src/metric-spaces/premetric-spaces-WIP.lagda.md b/src/metric-spaces/premetric-spaces-WIP.lagda.md deleted file mode 100644 index e47aa413ad..0000000000 --- a/src/metric-spaces/premetric-spaces-WIP.lagda.md +++ /dev/null @@ -1,207 +0,0 @@ -# Premetric spaces (WIP) - -```agda -module metric-spaces.premetric-spaces-WIP where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.binary-relations -open import foundation.cartesian-product-types -open import foundation.dependent-pair-types -open import foundation.empty-types -open import foundation.equivalences -open import foundation.existential-quantification -open import foundation.function-extensionality -open import foundation.function-types -open import foundation.fundamental-theorem-of-identity-types -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.negation -open import foundation.propositional-extensionality -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.torsorial-type-families -open import foundation.transport-along-identifications -open import foundation.univalence -open import foundation.universe-levels - -open import metric-spaces.monotonic-rational-neighborhoods -open import metric-spaces.rational-neighborhoods -open import metric-spaces.reflexive-rational-neighborhoods -open import metric-spaces.saturated-rational-neighborhoods -open import metric-spaces.symmetric-rational-neighborhoods -open import metric-spaces.triangular-rational-neighborhoods -``` - -
- -## Idea - -A {{#concept "premetric space" Agda=Premetric-Space-WIP}} is a type equipped -with a {{concept "premetric structure" Agda=Premetric-Structure}}: a -[reflexive](metric-spaces.reflexive-rational-neighborhoods.md), -[symmetric](metric-spaces.symmetric-rational-neighborhoods.md), -[triangular](metric-spaces.triangular-rational-neighborhoods.md) and -[saturated](metric-spaces.saturated-rational-neighborhoods.md) -[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) - -Given a premetric structure `B` on `A` and some positive rational number -`d : ℚ⁺` such that `B d x y` holds for some pair of points `x y : A`, we -interpret `d` as an -{{#concept "upper bound" Disambiguation="on distance in a premetric space" Agda=is-upper-bound-dist-Premetric-Space-WIP}} -on the distance between `x` and `y` in the premetric space. - -## Definitions - -### The property of being a premetric structure - -```agda -module _ - {l1 : Level} (A : UU l1) {l2 : Level} - (B : Rational-Neighborhood-Relation l2 A) - where - - is-premetric-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) - is-premetric-prop-Rational-Neighborhood-Relation = - product-Prop - ( is-reflexive-prop-Rational-Neighborhood-Relation B) - ( product-Prop - ( is-symmetric-prop-Rational-Neighborhood-Relation B) - ( product-Prop - ( is-triangular-prop-Rational-Neighborhood-Relation B) - ( is-saturated-prop-Rational-Neighborhood-Relation B))) - - is-premetric-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) - is-premetric-Rational-Neighborhood-Relation = - type-Prop is-premetric-prop-Rational-Neighborhood-Relation - - is-prop-is-premetric-Rational-Neighborhood-Relation : - is-prop is-premetric-Rational-Neighborhood-Relation - is-prop-is-premetric-Rational-Neighborhood-Relation = - is-prop-type-Prop (is-premetric-prop-Rational-Neighborhood-Relation) - -Premetric-Structure : - {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) -Premetric-Structure l2 A = - type-subtype (is-premetric-prop-Rational-Neighborhood-Relation A {l2}) -``` - -### Premetric spaces - -```agda -Premetric-Space-WIP : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) -Premetric-Space-WIP l1 l2 = Σ (UU l1) (Premetric-Structure l2) - -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - type-Premetric-Space-WIP : UU l1 - type-Premetric-Space-WIP = pr1 A - - structure-Premetric-Space-WIP : - Premetric-Structure l2 type-Premetric-Space-WIP - structure-Premetric-Space-WIP = pr2 A - - neighborhood-prop-Premetric-Space-WIP : - ℚ⁺ → Relation-Prop l2 type-Premetric-Space-WIP - neighborhood-prop-Premetric-Space-WIP = - pr1 structure-Premetric-Space-WIP - - neighborhood-Premetric-Space-WIP : - ℚ⁺ → Relation l2 type-Premetric-Space-WIP - neighborhood-Premetric-Space-WIP = - neighborhood-Rational-Neighborhood-Relation - neighborhood-prop-Premetric-Space-WIP - - is-prop-neighborhood-Premetric-Space-WIP : - (d : ℚ⁺) (x y : type-Premetric-Space-WIP) → - is-prop (neighborhood-Premetric-Space-WIP d x y) - is-prop-neighborhood-Premetric-Space-WIP = - is-prop-neighborhood-Rational-Neighborhood-Relation - neighborhood-prop-Premetric-Space-WIP - - is-upper-bound-dist-prop-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP) → ℚ⁺ → Prop l2 - is-upper-bound-dist-prop-Premetric-Space-WIP x y d = - neighborhood-prop-Premetric-Space-WIP d x y - - is-upper-bound-dist-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP) → ℚ⁺ → UU l2 - is-upper-bound-dist-Premetric-Space-WIP x y d = - neighborhood-Premetric-Space-WIP d x y - - is-prop-is-upper-bound-dist-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP) (d : ℚ⁺) → - is-prop (is-upper-bound-dist-Premetric-Space-WIP x y d) - is-prop-is-upper-bound-dist-Premetric-Space-WIP x y d = - is-prop-neighborhood-Premetric-Space-WIP d x y - - is-premetric-neighborhood-Premetric-Space-WIP : - is-premetric-Rational-Neighborhood-Relation - type-Premetric-Space-WIP - neighborhood-prop-Premetric-Space-WIP - is-premetric-neighborhood-Premetric-Space-WIP = - pr2 structure-Premetric-Space-WIP - - refl-neighborhood-Premetric-Space-WIP : - (d : ℚ⁺) (x : type-Premetric-Space-WIP) → - neighborhood-Premetric-Space-WIP d x x - refl-neighborhood-Premetric-Space-WIP = - pr1 is-premetric-neighborhood-Premetric-Space-WIP - - symmetric-neighborhood-Premetric-Space-WIP : - (d : ℚ⁺) (x y : type-Premetric-Space-WIP) → - neighborhood-Premetric-Space-WIP d x y → - neighborhood-Premetric-Space-WIP d y x - symmetric-neighborhood-Premetric-Space-WIP = - pr1 (pr2 is-premetric-neighborhood-Premetric-Space-WIP) - - inv-neighborhood-Premetric-Space-WIP : - {d : ℚ⁺} {x y : type-Premetric-Space-WIP} → - neighborhood-Premetric-Space-WIP d x y → - neighborhood-Premetric-Space-WIP d y x - inv-neighborhood-Premetric-Space-WIP {d} {x} {y} = - symmetric-neighborhood-Premetric-Space-WIP d x y - - triangular-neighborhood-Premetric-Space-WIP : - (x y z : type-Premetric-Space-WIP) (d₁ d₂ : ℚ⁺) → - neighborhood-Premetric-Space-WIP d₂ y z → - neighborhood-Premetric-Space-WIP d₁ x y → - neighborhood-Premetric-Space-WIP (d₁ +ℚ⁺ d₂) x z - triangular-neighborhood-Premetric-Space-WIP = - pr1 (pr2 (pr2 is-premetric-neighborhood-Premetric-Space-WIP)) - - saturated-neighborhood-Premetric-Space-WIP : - (ε : ℚ⁺) (x y : type-Premetric-Space-WIP) → - ((δ : ℚ⁺) → neighborhood-Premetric-Space-WIP (ε +ℚ⁺ δ) x y) → - neighborhood-Premetric-Space-WIP ε x y - saturated-neighborhood-Premetric-Space-WIP = - pr2 (pr2 (pr2 is-premetric-neighborhood-Premetric-Space-WIP)) - - monotonic-neighborhood-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP) (d₁ d₂ : ℚ⁺) → - le-ℚ⁺ d₁ d₂ → - neighborhood-Premetric-Space-WIP d₁ x y → - neighborhood-Premetric-Space-WIP d₂ x y - monotonic-neighborhood-Premetric-Space-WIP = - is-monotonic-is-reflexive-triangular-Rational-Neighborhood-Relation - neighborhood-prop-Premetric-Space-WIP - refl-neighborhood-Premetric-Space-WIP - triangular-neighborhood-Premetric-Space-WIP - - iff-le-neighborhood-Premetric-Space-WIP : - ( ε : ℚ⁺) (x y : type-Premetric-Space-WIP) → - ( neighborhood-Premetric-Space-WIP ε x y) ↔ - ( (δ : ℚ⁺) → le-ℚ⁺ ε δ → neighborhood-Premetric-Space-WIP δ x y) - iff-le-neighborhood-Premetric-Space-WIP = - iff-le-neighborhood-saturated-monotonic-Rational-Neighborhood-Relation - neighborhood-prop-Premetric-Space-WIP - monotonic-neighborhood-Premetric-Space-WIP - saturated-neighborhood-Premetric-Space-WIP -``` diff --git a/src/metric-spaces/pseudometric-spaces-WIP.lagda.md b/src/metric-spaces/pseudometric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..ee31c0264b --- /dev/null +++ b/src/metric-spaces/pseudometric-spaces-WIP.lagda.md @@ -0,0 +1,213 @@ +# Pseudometric spaces (WIP) + +```agda +module metric-spaces.pseudometric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.cartesian-product-types +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.negation +open import foundation.propositional-extensionality +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.univalence +open import foundation.universe-levels + +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +A {{#concept "pseudometric space" Agda=Pseudometric-Space-WIP}} is a type +equipped with a +{{concept "pseudometric structure" Agda=Pseudometric-Structure}}: a +[reflexive](metric-spaces.reflexive-rational-neighborhoods.md), +[symmetric](metric-spaces.symmetric-rational-neighborhoods.md), +[triangular](metric-spaces.triangular-rational-neighborhoods.md) and +[saturated](metric-spaces.saturated-rational-neighborhoods.md) +[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) + +Given a pseudometric structure `B` on `A` and some positive rational number +`d : ℚ⁺` such that `B d x y` holds for some pair of points `x y : A`, we +interpret `d` as an +{{#concept "upper bound" Disambiguation="on distance in a pseudometric space" Agda=is-upper-bound-dist-Pseudometric-Space-WIP}} +on the distance between `x` and `y` in the pseudometric space. + +## Definitions + +### The property of being a premetric structure + +```agda +module _ + {l1 : Level} (A : UU l1) {l2 : Level} + (B : Rational-Neighborhood-Relation l2 A) + where + + is-pseudometric-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-pseudometric-prop-Rational-Neighborhood-Relation = + product-Prop + ( is-reflexive-prop-Rational-Neighborhood-Relation B) + ( product-Prop + ( is-symmetric-prop-Rational-Neighborhood-Relation B) + ( product-Prop + ( is-triangular-prop-Rational-Neighborhood-Relation B) + ( is-saturated-prop-Rational-Neighborhood-Relation B))) + + is-pseudometric-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-pseudometric-Rational-Neighborhood-Relation = + type-Prop is-pseudometric-prop-Rational-Neighborhood-Relation + + is-prop-is-pseudometric-Rational-Neighborhood-Relation : + is-prop is-pseudometric-Rational-Neighborhood-Relation + is-prop-is-pseudometric-Rational-Neighborhood-Relation = + is-prop-type-Prop (is-pseudometric-prop-Rational-Neighborhood-Relation) + +Pseudometric-Structure : + {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) +Pseudometric-Structure l2 A = + type-subtype (is-pseudometric-prop-Rational-Neighborhood-Relation A {l2}) +``` + +### Pseudometric spaces + +```agda +Pseudometric-Space-WIP : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +Pseudometric-Space-WIP l1 l2 = Σ (UU l1) (Pseudometric-Structure l2) + +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + type-Pseudometric-Space-WIP : UU l1 + type-Pseudometric-Space-WIP = pr1 A + + structure-Pseudometric-Space-WIP : + Pseudometric-Structure l2 type-Pseudometric-Space-WIP + structure-Pseudometric-Space-WIP = pr2 A + + neighborhood-prop-Pseudometric-Space-WIP : + ℚ⁺ → Relation-Prop l2 type-Pseudometric-Space-WIP + neighborhood-prop-Pseudometric-Space-WIP = + pr1 structure-Pseudometric-Space-WIP + + neighborhood-Pseudometric-Space-WIP : + ℚ⁺ → Relation l2 type-Pseudometric-Space-WIP + neighborhood-Pseudometric-Space-WIP = + neighborhood-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space-WIP + + is-prop-neighborhood-Pseudometric-Space-WIP : + (d : ℚ⁺) (x y : type-Pseudometric-Space-WIP) → + is-prop (neighborhood-Pseudometric-Space-WIP d x y) + is-prop-neighborhood-Pseudometric-Space-WIP = + is-prop-neighborhood-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space-WIP + + is-upper-bound-dist-prop-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP) → ℚ⁺ → Prop l2 + is-upper-bound-dist-prop-Pseudometric-Space-WIP x y d = + neighborhood-prop-Pseudometric-Space-WIP d x y + + is-upper-bound-dist-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP) → ℚ⁺ → UU l2 + is-upper-bound-dist-Pseudometric-Space-WIP x y d = + neighborhood-Pseudometric-Space-WIP d x y + + is-prop-is-upper-bound-dist-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP) (d : ℚ⁺) → + is-prop (is-upper-bound-dist-Pseudometric-Space-WIP x y d) + is-prop-is-upper-bound-dist-Pseudometric-Space-WIP x y d = + is-prop-neighborhood-Pseudometric-Space-WIP d x y + + is-pseudometric-neighborhood-Pseudometric-Space-WIP : + is-pseudometric-Rational-Neighborhood-Relation + type-Pseudometric-Space-WIP + neighborhood-prop-Pseudometric-Space-WIP + is-pseudometric-neighborhood-Pseudometric-Space-WIP = + pr2 structure-Pseudometric-Space-WIP + + refl-neighborhood-Pseudometric-Space-WIP : + (d : ℚ⁺) (x : type-Pseudometric-Space-WIP) → + neighborhood-Pseudometric-Space-WIP d x x + refl-neighborhood-Pseudometric-Space-WIP = + pr1 is-pseudometric-neighborhood-Pseudometric-Space-WIP + + symmetric-neighborhood-Pseudometric-Space-WIP : + (d : ℚ⁺) (x y : type-Pseudometric-Space-WIP) → + neighborhood-Pseudometric-Space-WIP d x y → + neighborhood-Pseudometric-Space-WIP d y x + symmetric-neighborhood-Pseudometric-Space-WIP = + pr1 (pr2 is-pseudometric-neighborhood-Pseudometric-Space-WIP) + + inv-neighborhood-Pseudometric-Space-WIP : + {d : ℚ⁺} {x y : type-Pseudometric-Space-WIP} → + neighborhood-Pseudometric-Space-WIP d x y → + neighborhood-Pseudometric-Space-WIP d y x + inv-neighborhood-Pseudometric-Space-WIP {d} {x} {y} = + symmetric-neighborhood-Pseudometric-Space-WIP d x y + + triangular-neighborhood-Pseudometric-Space-WIP : + (x y z : type-Pseudometric-Space-WIP) (d₁ d₂ : ℚ⁺) → + neighborhood-Pseudometric-Space-WIP d₂ y z → + neighborhood-Pseudometric-Space-WIP d₁ x y → + neighborhood-Pseudometric-Space-WIP (d₁ +ℚ⁺ d₂) x z + triangular-neighborhood-Pseudometric-Space-WIP = + pr1 (pr2 (pr2 is-pseudometric-neighborhood-Pseudometric-Space-WIP)) + + saturated-neighborhood-Pseudometric-Space-WIP : + (ε : ℚ⁺) (x y : type-Pseudometric-Space-WIP) → + ((δ : ℚ⁺) → neighborhood-Pseudometric-Space-WIP (ε +ℚ⁺ δ) x y) → + neighborhood-Pseudometric-Space-WIP ε x y + saturated-neighborhood-Pseudometric-Space-WIP = + pr2 (pr2 (pr2 is-pseudometric-neighborhood-Pseudometric-Space-WIP)) + + monotonic-neighborhood-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP) (d₁ d₂ : ℚ⁺) → + le-ℚ⁺ d₁ d₂ → + neighborhood-Pseudometric-Space-WIP d₁ x y → + neighborhood-Pseudometric-Space-WIP d₂ x y + monotonic-neighborhood-Pseudometric-Space-WIP = + is-monotonic-is-reflexive-triangular-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space-WIP + refl-neighborhood-Pseudometric-Space-WIP + triangular-neighborhood-Pseudometric-Space-WIP + + iff-le-neighborhood-Pseudometric-Space-WIP : + ( ε : ℚ⁺) (x y : type-Pseudometric-Space-WIP) → + ( neighborhood-Pseudometric-Space-WIP ε x y) ↔ + ( (δ : ℚ⁺) → le-ℚ⁺ ε δ → neighborhood-Pseudometric-Space-WIP δ x y) + iff-le-neighborhood-Pseudometric-Space-WIP = + iff-le-neighborhood-saturated-monotonic-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space-WIP + monotonic-neighborhood-Pseudometric-Space-WIP + saturated-neighborhood-Pseudometric-Space-WIP +``` + +## External links + +- [Pseudometric spaces](https://en.wikipedia.org/wiki/Pseudometric_space) at + Wikipedia diff --git a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md deleted file mode 100644 index 73587810c6..0000000000 --- a/src/metric-spaces/similarity-of-elements-premetric-spaces.lagda.md +++ /dev/null @@ -1,257 +0,0 @@ -# Similarity of elements in premetric spaces - -```agda -module metric-spaces.similarity-of-elements-premetric-spaces where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.binary-relations -open import foundation.dependent-pair-types -open import foundation.equivalence-relations -open import foundation.function-types -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.propositions -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import metric-spaces.premetric-spaces-WIP -open import metric-spaces.rational-neighborhoods -``` - -
- -## Idea - -Two elements `x y` of a [premetric space](metric-spaces.premetric-spaces-WIP.md) -are -{{#concept "similar" Disambiguation="elements of a premetric space" Agda=sim-Premetric-Space-WIP}} -if any of the following equivalent propositions holds: - -- they are similar w.r.t the underlying - [rational neighborhood relation](metric-spaces.rational-neighborhoods.md); -- they have the same neighbors: `∀ δ z → N δ x z ↔ N δ y z`; -- they share all neighborhoods: `∀ δ → N δ x y`. - -Similarity in a premetric space is an -[equivalence relation](foundation.equivalence-relations.md). - -## Definitions - -### Neighborhood similarity relation in premetric spaces - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - sim-prop-Premetric-Space-WIP : - Relation-Prop l2 (type-Premetric-Space-WIP A) - sim-prop-Premetric-Space-WIP x y = - Π-Prop ℚ⁺ (is-upper-bound-dist-prop-Premetric-Space-WIP A x y) - - sim-Premetric-Space-WIP : - Relation l2 (type-Premetric-Space-WIP A) - sim-Premetric-Space-WIP = - type-Relation-Prop sim-prop-Premetric-Space-WIP - - is-prop-sim-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP A) → - is-prop (sim-Premetric-Space-WIP x y) - is-prop-sim-Premetric-Space-WIP = - is-prop-type-Relation-Prop sim-prop-Premetric-Space-WIP -``` - -## Properties - -### Similarity in premetric spaces is reflexive - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - refl-sim-Premetric-Space-WIP : - (x : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A x x - refl-sim-Premetric-Space-WIP x d = - refl-neighborhood-Premetric-Space-WIP A d x - - sim-eq-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP A) → - x = y → - sim-Premetric-Space-WIP A x y - sim-eq-Premetric-Space-WIP x .x refl = - refl-sim-Premetric-Space-WIP x -``` - -### Similarity in premetric spaces is symmetric - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - symmetric-sim-Premetric-Space-WIP : - (x y : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A x y → - sim-Premetric-Space-WIP A y x - symmetric-sim-Premetric-Space-WIP x y Nxy d = - symmetric-neighborhood-Premetric-Space-WIP A d x y (Nxy d) - - inv-sim-Premetric-Space-WIP : - {x y : type-Premetric-Space-WIP A} → - sim-Premetric-Space-WIP A x y → - sim-Premetric-Space-WIP A y x - inv-sim-Premetric-Space-WIP {x} {y} = - symmetric-sim-Premetric-Space-WIP x y -``` - -### Similarity in premetric spaces is transitive - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - transitive-sim-Premetric-Space-WIP : - (x y z : type-Premetric-Space-WIP A) → - sim-Premetric-Space-WIP A y z → - sim-Premetric-Space-WIP A x y → - sim-Premetric-Space-WIP A x z - transitive-sim-Premetric-Space-WIP x y z Nyz Nxy d = - tr - ( is-upper-bound-dist-Premetric-Space-WIP A x z) - ( eq-add-split-ℚ⁺ d) - ( triangular-neighborhood-Premetric-Space-WIP - ( A) - ( x) - ( y) - ( z) - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d) - ( Nyz (right-summand-split-ℚ⁺ d)) - ( Nxy (left-summand-split-ℚ⁺ d))) -``` - -### Similarity in premetric spaces is an equivalence relation - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - is-equivalence-relation-sim-Premetric-Space-WIP : - is-equivalence-relation (sim-prop-Premetric-Space-WIP A) - is-equivalence-relation-sim-Premetric-Space-WIP = - ( refl-sim-Premetric-Space-WIP A) , - ( symmetric-sim-Premetric-Space-WIP A) , - ( transitive-sim-Premetric-Space-WIP A) - - equivalence-sim-Premetric-Space-WIP : - equivalence-relation l2 (type-Premetric-Space-WIP A) - equivalence-sim-Premetric-Space-WIP = - ( sim-prop-Premetric-Space-WIP A) , - ( is-equivalence-relation-sim-Premetric-Space-WIP) -``` - -### Similar elements are elements with the same neighbors - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - preserves-neighborhood-sim-Premetric-Space : - { x y : type-Premetric-Space-WIP A} → - ( sim-Premetric-Space-WIP A x y) → - ( d : ℚ⁺) (z : type-Premetric-Space-WIP A) → - neighborhood-Premetric-Space-WIP A d x z → - neighborhood-Premetric-Space-WIP A d y z - preserves-neighborhood-sim-Premetric-Space {x} {y} x≍y d z Nxz = - saturated-neighborhood-Premetric-Space-WIP - ( A) - ( d) - ( y) - ( z) - ( λ δ → - tr - ( is-upper-bound-dist-Premetric-Space-WIP A y z) - ( commutative-add-ℚ⁺ δ d) - ( triangular-neighborhood-Premetric-Space-WIP - ( A) - ( y) - ( x) - ( z) - ( δ) - ( d) - ( Nxz) - ( symmetric-neighborhood-Premetric-Space-WIP - ( A) - ( δ) - ( x) - ( y) - ( x≍y δ)))) - - iff-same-neighbors-sim-Premetric-Space : - { x y : type-Premetric-Space-WIP A} → - ( sim-Premetric-Space-WIP A x y) ↔ - ( (d : ℚ⁺) (z : type-Premetric-Space-WIP A) → - neighborhood-Premetric-Space-WIP A d x z ↔ - neighborhood-Premetric-Space-WIP A d y z) - iff-same-neighbors-sim-Premetric-Space = - ( λ x≍y d z → - ( preserves-neighborhood-sim-Premetric-Space x≍y d z) , - ( preserves-neighborhood-sim-Premetric-Space - ( inv-sim-Premetric-Space-WIP A x≍y) - ( d) - ( z))) , - ( λ same-neighbors d → - backward-implication - ( same-neighbors d _) - ( refl-sim-Premetric-Space-WIP A _ d)) -``` - -### Similar elements are elements similar w.r.t the underlying rational neighborhood relation - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space-WIP l1 l2) - where - - iff-same-neighbors-same-neighborhood-Premetric-Space : - {x y : type-Premetric-Space-WIP A} → - ( (d : ℚ⁺) (z : type-Premetric-Space-WIP A) → - neighborhood-Premetric-Space-WIP A d x z ↔ - neighborhood-Premetric-Space-WIP A d y z) ↔ - ( sim-Rational-Neighborhood-Relation - ( neighborhood-prop-Premetric-Space-WIP A) - ( x) - ( y)) - iff-same-neighbors-same-neighborhood-Premetric-Space = - ( λ H d z → - ( H d z) , - ( inv-neighborhood-Premetric-Space-WIP A ∘ - pr1 (H d z) ∘ - inv-neighborhood-Premetric-Space-WIP A) , - ( inv-neighborhood-Premetric-Space-WIP A ∘ - pr2 (H d z) ∘ - inv-neighborhood-Premetric-Space-WIP A)) , - ( iff-left-neighbor-sim-Rational-Neighborhood-Relation - ( neighborhood-prop-Premetric-Space-WIP A)) - - iff-same-neighborhood-sim-Premetric-Space : - { x y : type-Premetric-Space-WIP A} → - ( sim-Premetric-Space-WIP A x y) ↔ - ( sim-Rational-Neighborhood-Relation - ( neighborhood-prop-Premetric-Space-WIP A) - ( x) - ( y)) - iff-same-neighborhood-sim-Premetric-Space = - ( iff-same-neighbors-same-neighborhood-Premetric-Space) ∘iff - ( iff-same-neighbors-sim-Premetric-Space A) -``` diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..976a9cbffe --- /dev/null +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -0,0 +1,257 @@ +# Similarity of elements in pseudometric spaces + +```agda +module metric-spaces.similarity-of-elements-pseudometric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.equivalence-relations +open import foundation.function-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +Two elements `x y` of a +[pseudometric space](metric-spaces.pseudometric-spaces-WIP.md) are +{{#concept "similar" Disambiguation="elements of a pseudometric space" Agda=sim-Pseudometric-Space-WIP}} +if any of the following equivalent propositions holds: + +- they are similar w.r.t the underlying + [rational neighborhood relation](metric-spaces.rational-neighborhoods.md); +- they have the same neighbors: `∀ δ z → N δ x z ↔ N δ y z`; +- they share all neighborhoods: `∀ δ → N δ x y`. + +Similarity in a pseudometric space is an +[equivalence relation](foundation.equivalence-relations.md). + +## Definitions + +### Neighborhood similarity relation in pseudometric spaces + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + sim-prop-Pseudometric-Space-WIP : + Relation-Prop l2 (type-Pseudometric-Space-WIP A) + sim-prop-Pseudometric-Space-WIP x y = + Π-Prop ℚ⁺ (is-upper-bound-dist-prop-Pseudometric-Space-WIP A x y) + + sim-Pseudometric-Space-WIP : + Relation l2 (type-Pseudometric-Space-WIP A) + sim-Pseudometric-Space-WIP = + type-Relation-Prop sim-prop-Pseudometric-Space-WIP + + is-prop-sim-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP A) → + is-prop (sim-Pseudometric-Space-WIP x y) + is-prop-sim-Pseudometric-Space-WIP = + is-prop-type-Relation-Prop sim-prop-Pseudometric-Space-WIP +``` + +## Properties + +### Similarity in pseudometric spaces is reflexive + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + refl-sim-Pseudometric-Space-WIP : + (x : type-Pseudometric-Space-WIP A) → + sim-Pseudometric-Space-WIP A x x + refl-sim-Pseudometric-Space-WIP x d = + refl-neighborhood-Pseudometric-Space-WIP A d x + + sim-eq-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP A) → + x = y → + sim-Pseudometric-Space-WIP A x y + sim-eq-Pseudometric-Space-WIP x .x refl = + refl-sim-Pseudometric-Space-WIP x +``` + +### Similarity in pseudometric spaces is symmetric + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + symmetric-sim-Pseudometric-Space-WIP : + (x y : type-Pseudometric-Space-WIP A) → + sim-Pseudometric-Space-WIP A x y → + sim-Pseudometric-Space-WIP A y x + symmetric-sim-Pseudometric-Space-WIP x y Nxy d = + symmetric-neighborhood-Pseudometric-Space-WIP A d x y (Nxy d) + + inv-sim-Pseudometric-Space-WIP : + {x y : type-Pseudometric-Space-WIP A} → + sim-Pseudometric-Space-WIP A x y → + sim-Pseudometric-Space-WIP A y x + inv-sim-Pseudometric-Space-WIP {x} {y} = + symmetric-sim-Pseudometric-Space-WIP x y +``` + +### Similarity in pseudometric spaces is transitive + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + transitive-sim-Pseudometric-Space-WIP : + (x y z : type-Pseudometric-Space-WIP A) → + sim-Pseudometric-Space-WIP A y z → + sim-Pseudometric-Space-WIP A x y → + sim-Pseudometric-Space-WIP A x z + transitive-sim-Pseudometric-Space-WIP x y z Nyz Nxy d = + tr + ( is-upper-bound-dist-Pseudometric-Space-WIP A x z) + ( eq-add-split-ℚ⁺ d) + ( triangular-neighborhood-Pseudometric-Space-WIP + ( A) + ( x) + ( y) + ( z) + ( left-summand-split-ℚ⁺ d) + ( right-summand-split-ℚ⁺ d) + ( Nyz (right-summand-split-ℚ⁺ d)) + ( Nxy (left-summand-split-ℚ⁺ d))) +``` + +### Similarity in pseudometric spaces is an equivalence relation + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + is-equivalence-relation-sim-Pseudometric-Space-WIP : + is-equivalence-relation (sim-prop-Pseudometric-Space-WIP A) + is-equivalence-relation-sim-Pseudometric-Space-WIP = + ( refl-sim-Pseudometric-Space-WIP A) , + ( symmetric-sim-Pseudometric-Space-WIP A) , + ( transitive-sim-Pseudometric-Space-WIP A) + + equivalence-sim-Pseudometric-Space-WIP : + equivalence-relation l2 (type-Pseudometric-Space-WIP A) + equivalence-sim-Pseudometric-Space-WIP = + ( sim-prop-Pseudometric-Space-WIP A) , + ( is-equivalence-relation-sim-Pseudometric-Space-WIP) +``` + +### Similar elements are elements with the same neighbors + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + preserves-neighborhood-sim-Pseudometric-Space : + { x y : type-Pseudometric-Space-WIP A} → + ( sim-Pseudometric-Space-WIP A x y) → + ( d : ℚ⁺) (z : type-Pseudometric-Space-WIP A) → + neighborhood-Pseudometric-Space-WIP A d x z → + neighborhood-Pseudometric-Space-WIP A d y z + preserves-neighborhood-sim-Pseudometric-Space {x} {y} x≍y d z Nxz = + saturated-neighborhood-Pseudometric-Space-WIP + ( A) + ( d) + ( y) + ( z) + ( λ δ → + tr + ( is-upper-bound-dist-Pseudometric-Space-WIP A y z) + ( commutative-add-ℚ⁺ δ d) + ( triangular-neighborhood-Pseudometric-Space-WIP + ( A) + ( y) + ( x) + ( z) + ( δ) + ( d) + ( Nxz) + ( symmetric-neighborhood-Pseudometric-Space-WIP + ( A) + ( δ) + ( x) + ( y) + ( x≍y δ)))) + + iff-same-neighbors-sim-Pseudometric-Space : + { x y : type-Pseudometric-Space-WIP A} → + ( sim-Pseudometric-Space-WIP A x y) ↔ + ( (d : ℚ⁺) (z : type-Pseudometric-Space-WIP A) → + neighborhood-Pseudometric-Space-WIP A d x z ↔ + neighborhood-Pseudometric-Space-WIP A d y z) + iff-same-neighbors-sim-Pseudometric-Space = + ( λ x≍y d z → + ( preserves-neighborhood-sim-Pseudometric-Space x≍y d z) , + ( preserves-neighborhood-sim-Pseudometric-Space + ( inv-sim-Pseudometric-Space-WIP A x≍y) + ( d) + ( z))) , + ( λ same-neighbors d → + backward-implication + ( same-neighbors d _) + ( refl-sim-Pseudometric-Space-WIP A _ d)) +``` + +### Similar elements are elements similar w.r.t the underlying rational neighborhood relation + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + where + + iff-same-neighbors-same-neighborhood-Pseudometric-Space : + {x y : type-Pseudometric-Space-WIP A} → + ( (d : ℚ⁺) (z : type-Pseudometric-Space-WIP A) → + neighborhood-Pseudometric-Space-WIP A d x z ↔ + neighborhood-Pseudometric-Space-WIP A d y z) ↔ + ( sim-Rational-Neighborhood-Relation + ( neighborhood-prop-Pseudometric-Space-WIP A) + ( x) + ( y)) + iff-same-neighbors-same-neighborhood-Pseudometric-Space = + ( λ H d z → + ( H d z) , + ( inv-neighborhood-Pseudometric-Space-WIP A ∘ + pr1 (H d z) ∘ + inv-neighborhood-Pseudometric-Space-WIP A) , + ( inv-neighborhood-Pseudometric-Space-WIP A ∘ + pr2 (H d z) ∘ + inv-neighborhood-Pseudometric-Space-WIP A)) , + ( iff-left-neighbor-sim-Rational-Neighborhood-Relation + ( neighborhood-prop-Pseudometric-Space-WIP A)) + + iff-same-neighborhood-sim-Pseudometric-Space : + { x y : type-Pseudometric-Space-WIP A} → + ( sim-Pseudometric-Space-WIP A x y) ↔ + ( sim-Rational-Neighborhood-Relation + ( neighborhood-prop-Pseudometric-Space-WIP A) + ( x) + ( y)) + iff-same-neighborhood-sim-Pseudometric-Space = + ( iff-same-neighbors-same-neighborhood-Pseudometric-Space) ∘iff + ( iff-same-neighbors-sim-Pseudometric-Space A) +``` From bd5508c333c38abb3aa97f355b7d8e98929131d2 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 21 Jun 2025 17:40:55 +0200 Subject: [PATCH 25/42] add NB saturation axiom metric spaces --- src/metric-spaces/metric-spaces-WIP.lagda.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 291b97fc22..cfd661ea00 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -63,6 +63,9 @@ The neighborhood relation on a metric space must satisfy the following axioms: `d` is an upper bound on the distance from `x` to `y`, and `d'` is an upper bound on the distance from `y` to `z`, then `d + d'` is an upper bound on the distance from `x` to `z`. +- [**Saturation.**](metric-spaces.saturated-rational-neighborhoods.md): any + neighborhood `N d x y` contains the intersection of all `N d' x y` for + `d < d'`. This gives `A` the structure of a [**pseudometric space**](metric-spaces.pseudometric-spaces-WIP.md); finally, we @@ -77,6 +80,11 @@ are [equal](foundation-core.identity-types.md): Similarity of elements in a metric space characterizes their equality so any metric space is a [set](foundation.sets.md). +NB: When working with actual distance functions, the _saturation_ condition +always holds, defining `N d x y` as `dist(x , y) ≤ d`. Since we're working with +_upper bounds on distances_, we add have to add this axiom to ensure that the +subsets of upper bounds on distances between elements is closed on the left. + ## Definitions ### The type of metric spaces From ba08195113734545ff17055cc853b0d92d04efc9 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 21 Jun 2025 17:55:13 +0200 Subject: [PATCH 26/42] fix link (WIP) --- src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md index 31285bf915..88e1883bee 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md +++ b/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md @@ -41,7 +41,7 @@ if any of the following equivalent condition holds: The carrier type of an extensional pseudometric space is a [set](foundation.sets.md) and the -[discrete pseudometric structure](metric-spaces.discrete-pseudometric-structures.md) +[discrete pseudometric structure](metric-spaces.discrete-premetric-structures.md) over a set is extensional. ## Definitions From bea79bc0f2270ed4268e90cc299f9049ebc11113 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 23 Jun 2025 20:49:29 +0200 Subject: [PATCH 27/42] typo --- src/metric-spaces/metric-spaces-WIP.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index cfd661ea00..7eab0ef083 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -82,8 +82,8 @@ metric space is a [set](foundation.sets.md). NB: When working with actual distance functions, the _saturation_ condition always holds, defining `N d x y` as `dist(x , y) ≤ d`. Since we're working with -_upper bounds on distances_, we add have to add this axiom to ensure that the -subsets of upper bounds on distances between elements is closed on the left. +_upper bounds on distances_, we add this axiom to ensure that the subsets of +upper bounds on distances between elements is closed on the left. ## Definitions From 916e78909cf462a98ebbf59f8455f8927832351f Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 23 Jun 2025 22:00:43 +0200 Subject: [PATCH 28/42] poset of rational neighborhood relations --- src/metric-spaces.lagda.md | 1 + .../ordering-rational-neighborhoods.lagda.md | 140 ++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 src/metric-spaces/ordering-rational-neighborhoods.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index ef4629588a..743239e552 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -93,6 +93,7 @@ open import metric-spaces.metric-structures public open import metric-spaces.monotonic-premetric-structures public open import metric-spaces.monotonic-rational-neighborhoods public open import metric-spaces.ordering-premetric-structures public +open import metric-spaces.ordering-rational-neighborhoods public open import metric-spaces.precategory-of-metric-spaces-and-functions public open import metric-spaces.precategory-of-metric-spaces-and-isometries public open import metric-spaces.precategory-of-metric-spaces-and-short-functions public diff --git a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..dde264e15d --- /dev/null +++ b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md @@ -0,0 +1,140 @@ +# The poset of rational neighborhood relations on a type + +```agda +module metric-spaces.ordering-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.universe-levels + +open import metric-spaces.rational-neighborhoods + +open import order-theory.posets +open import order-theory.preorders +``` + +
+ +## Idea + +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` +on a type `A` is +{{#concept "finer" Disambiguation="rational neighborhood relation on a type" Agda=leq-Rational-Neighborhood-Relation}} +than another rational neighborhood relation `V` if `(U d)`-neighborhoods are +`(V d)`-neighborhoods for any +[positive rational](elementary-number-theory.positive-rational-numbers.md) `d`, +i.e., if any upper bound on the distance between two points in `U` also bounds +their distance in `V`. This is a [partial order](order-theory.posets.md) on the +type of rational neighborhood relations on `A`. + +## Definitions + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (U V : Rational-Neighborhood-Relation l2 A) + where + + leq-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + leq-prop-Rational-Neighborhood-Relation = + Π-Prop + ( ℚ⁺) + ( λ d → + Π-Prop + ( A) + ( λ x → + Π-Prop + ( A) + ( λ y → hom-Prop (U d x y) (V d x y)))) + + leq-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + leq-Rational-Neighborhood-Relation = + type-Prop leq-prop-Rational-Neighborhood-Relation + + is-prop-leq-Rational-Neighborhood-Relation : + is-prop leq-Rational-Neighborhood-Relation + is-prop-leq-Rational-Neighborhood-Relation = + is-prop-type-Prop leq-prop-Rational-Neighborhood-Relation +``` + +## Properties + +### The ordering on rational neighborhood relations is reflexive + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (U : Rational-Neighborhood-Relation l2 A) + where + + refl-leq-Rational-Neighborhood-Relation : + leq-Rational-Neighborhood-Relation U U + refl-leq-Rational-Neighborhood-Relation d x y H = H + + leq-eq-Rational-Neighborhood-Relation : + (V : Rational-Neighborhood-Relation l2 A) → + (U = V) → + leq-Rational-Neighborhood-Relation U V + leq-eq-Rational-Neighborhood-Relation .U refl = + refl-leq-Rational-Neighborhood-Relation +``` + +### The ordering on rational neighborhood relations is transitive + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (U V W : Rational-Neighborhood-Relation l2 A) + where + + transitive-leq-Rational-Neighborhood-Relation : + leq-Rational-Neighborhood-Relation V W → + leq-Rational-Neighborhood-Relation U V → + leq-Rational-Neighborhood-Relation U W + transitive-leq-Rational-Neighborhood-Relation H K d x y = H d x y ∘ K d x y +``` + +### The ordering on rational neighborhood relations is antisymmetric + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (U V : Rational-Neighborhood-Relation l2 A) + where + + antisymmetric-leq-Rational-Neighborhood-Relation : + leq-Rational-Neighborhood-Relation U V → + leq-Rational-Neighborhood-Relation V U → + U = V + antisymmetric-leq-Rational-Neighborhood-Relation I J = + eq-Eq-Rational-Neighborhood-Relation + ( U) + ( V) + ( λ d x y → (I d x y , J d x y)) +``` + +### The poset of rational neighborhood relations on a type + +```agda +module _ + {l1 l2 : Level} (A : UU l1) + where + + preorder-Rational-Neighborhood-Relation : Preorder (l1 ⊔ lsuc l2) (l1 ⊔ l2) + pr1 preorder-Rational-Neighborhood-Relation = + Rational-Neighborhood-Relation l2 A + pr2 preorder-Rational-Neighborhood-Relation = + leq-prop-Rational-Neighborhood-Relation , + refl-leq-Rational-Neighborhood-Relation , + transitive-leq-Rational-Neighborhood-Relation + + poset-Rational-Neighborhood-Relation : Poset (l1 ⊔ lsuc l2) (l1 ⊔ l2) + poset-Rational-Neighborhood-Relation = + preorder-Rational-Neighborhood-Relation , + antisymmetric-leq-Rational-Neighborhood-Relation +``` From 5b5b41d54bb09963a2cf30e6c1a77d8864e601fa Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 23 Jun 2025 22:15:36 +0200 Subject: [PATCH 29/42] preimage rational neighborhoods --- src/metric-spaces.lagda.md | 1 + .../preimage-rational-neighborhoods.lagda.md | 139 ++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 src/metric-spaces/preimage-rational-neighborhoods.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 743239e552..98620e4633 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -97,6 +97,7 @@ open import metric-spaces.ordering-rational-neighborhoods public open import metric-spaces.precategory-of-metric-spaces-and-functions public open import metric-spaces.precategory-of-metric-spaces-and-isometries public open import metric-spaces.precategory-of-metric-spaces-and-short-functions public +open import metric-spaces.preimage-rational-neighborhoods public open import metric-spaces.premetric-spaces public open import metric-spaces.premetric-structures public open import metric-spaces.pseudometric-spaces public diff --git a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md new file mode 100644 index 0000000000..5958af3217 --- /dev/null +++ b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md @@ -0,0 +1,139 @@ +# Preimage of rational neighborhood relations along maps + +```agda +module metric-spaces.preimage-rational-neighborhoods where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.function-types +open import foundation.identity-types +open import foundation.injective-maps +open import foundation.universe-levels + +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +Any [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) +`U` on a type `B` and map `f : A → B` defines a rational neighborhood relation +on `A` where `x y : A` are `d`-neighbors if `f x` and `f y` are `d`-neighbors in +`U`. This is the +{{#concept "preimage" Disambiguation="rational neighborhood relation" Agda=preimage-Rational-Neighborhood-Relation}} +of `U` by `f`. + +## Definitions + +### The induced rational neighborhood relation on the preimage of a map + +```agda +module _ + {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) + (V : Rational-Neighborhood-Relation l2 B) + where + + preimage-Rational-Neighborhood-Relation : Rational-Neighborhood-Relation l2 A + preimage-Rational-Neighborhood-Relation d x y = V d (f x) (f y) +``` + +## Properties + +### The preimage of a reflexive rational neighborhood relation is reflexive + +```agda +module _ + {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) + (V : Rational-Neighborhood-Relation l2 B) + (R : is-reflexive-Rational-Neighborhood-Relation V) + where + + preserves-reflexive-preimage-Rational-Neighborhood-Relation : + is-reflexive-Rational-Neighborhood-Relation + (preimage-Rational-Neighborhood-Relation f V) + preserves-reflexive-preimage-Rational-Neighborhood-Relation d x = R d (f x) +``` + +### The preimage of a symmetric rational neighborhood relation is symmetric + +```agda +module _ + {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) + (V : Rational-Neighborhood-Relation l2 B) + (S : is-symmetric-Rational-Neighborhood-Relation V) + where + + preserves-symmetric-preimage-Rational-Neighborhood-Relation : + is-symmetric-Rational-Neighborhood-Relation + (preimage-Rational-Neighborhood-Relation f V) + preserves-symmetric-preimage-Rational-Neighborhood-Relation d x y = + S d (f x) (f y) +``` + +### The preimage of a monotonic rational neighborhood relation is monotonic + +```agda +module _ + {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) + (V : Rational-Neighborhood-Relation l2 B) + (I : is-monotonic-Rational-Neighborhood-Relation V) + where + + preserves-monotonic-preimage-Rational-Neighborhood-Relation : + is-monotonic-Rational-Neighborhood-Relation + (preimage-Rational-Neighborhood-Relation f V) + preserves-monotonic-preimage-Rational-Neighborhood-Relation x y = + I (f x) (f y) +``` + +### The preimage of a triangular rational neighborhood relation is triangular + +```agda +module _ + {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) + (V : Rational-Neighborhood-Relation l2 B) + (T : is-triangular-Rational-Neighborhood-Relation V) + where + + preserves-triangular-preimage-Rational-Neighborhood-Relation : + is-triangular-Rational-Neighborhood-Relation + (preimage-Rational-Neighborhood-Relation f V) + preserves-triangular-preimage-Rational-Neighborhood-Relation x y z = + T (f x) (f y) (f z) +``` + +### The preimage along the identity is the identity + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (U : Rational-Neighborhood-Relation l2 A) + where + + eq-preimage-id-Rational-Neighborhood-Relation : + preimage-Rational-Neighborhood-Relation id U = U + eq-preimage-id-Rational-Neighborhood-Relation = refl +``` + +### The preimage of rational neighborhood relations is contravariant + +```agda +module _ + {la lb lc l : Level} {A : UU la} {B : UU lb} {C : UU lc} + (g : B → C) (f : A → B) (W : Rational-Neighborhood-Relation l C) + where + + eq-preimage-comp-Rational-Neighborhood-Relation : + ( preimage-Rational-Neighborhood-Relation f + (preimage-Rational-Neighborhood-Relation g W)) = + ( preimage-Rational-Neighborhood-Relation (g ∘ f) W) + eq-preimage-comp-Rational-Neighborhood-Relation = refl +``` From 380662586ae1f24abeeb82daf842c6258c26e9ab Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 25 Jun 2025 20:50:08 +0200 Subject: [PATCH 30/42] WIP morphisms metric spaces --- src/metric-spaces.lagda.md | 2 + .../isometries-metric-spaces-WIP.lagda.md | 452 ++++++++++++++++++ src/metric-spaces/metric-spaces-WIP.lagda.md | 17 + .../ordering-rational-neighborhoods.lagda.md | 13 +- ...short-functions-metric-spaces-WIP.lagda.md | 361 ++++++++++++++ 5 files changed, 841 insertions(+), 4 deletions(-) create mode 100644 src/metric-spaces/isometries-metric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 98620e4633..0d03de7688 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -70,6 +70,7 @@ open import metric-spaces.functor-category-short-isometry-metric-spaces public open import metric-spaces.induced-premetric-structures-on-preimages public open import metric-spaces.isometric-equivalences-premetric-spaces public open import metric-spaces.isometries-metric-spaces public +open import metric-spaces.isometries-metric-spaces-WIP public open import metric-spaces.isometries-premetric-spaces public open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces public open import metric-spaces.limits-of-sequences-metric-spaces public @@ -116,6 +117,7 @@ open import metric-spaces.sequences-metric-spaces public open import metric-spaces.sequences-premetric-spaces public open import metric-spaces.sequences-pseudometric-spaces public open import metric-spaces.short-functions-metric-spaces public +open import metric-spaces.short-functions-metric-spaces-WIP public open import metric-spaces.short-functions-premetric-spaces public open import metric-spaces.similarity-of-elements-pseudometric-spaces public open import metric-spaces.subspaces-metric-spaces public diff --git a/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md b/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..85077c41c4 --- /dev/null +++ b/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md @@ -0,0 +1,452 @@ +# Isometries between metric spaces (WIP) + +```agda +module metric-spaces.isometries-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-transport +open import foundation.dependent-pair-types +open import foundation.embeddings +open import foundation.equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.injective-maps +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.sequences +open import foundation.sets +open import foundation.subtypes +open import foundation.univalence +open import foundation.universe-levels + +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +A [function](metric-spaces.functions-metric-spaces.md) between +[metric spaces](metric-spaces.metric-spaces.md) is an +{{#concept "isometry" Disambiguation="between metric spaces" Agda=is-isometry-Metric-Space-WIP}} +if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) +on `A` is equivalent to the +[preimage](metric-spaces.preimage-rational-neighborhoods.md) by `f` of the +rational neighborhood relation on `B`. I.e., upper bounds on the distance +between two points in `A` are exactly the upper bounds of the distance between +their images in `B`. + +## Definitions + +### The property of being a isometry between metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : type-function-Metric-Space-WIP A B) + where + + is-isometry-prop-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l2') + is-isometry-prop-Metric-Space-WIP = + Eq-prop-Rational-Neighborhood-Relation + ( neighborhood-prop-Metric-Space-WIP A) + ( preimage-Rational-Neighborhood-Relation + ( f) + ( neighborhood-prop-Metric-Space-WIP B)) + + is-isometry-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l2') + is-isometry-Metric-Space-WIP = + type-Prop is-isometry-prop-Metric-Space-WIP + + is-prop-is-isometry-Metric-Space-WIP : + is-prop is-isometry-Metric-Space-WIP + is-prop-is-isometry-Metric-Space-WIP = + is-prop-type-Prop is-isometry-prop-Metric-Space-WIP +``` + +### The set of isometries between metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + where + + set-isometry-Metric-Space-WIP : Set (l1 ⊔ l2 ⊔ l1' ⊔ l2') + set-isometry-Metric-Space-WIP = + set-subset + ( set-function-Metric-Space-WIP A B) + ( is-isometry-prop-Metric-Space-WIP A B) + + isometry-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + isometry-Metric-Space-WIP = type-Set set-isometry-Metric-Space-WIP + + is-set-isometry-Metric-Space-WIP : is-set isometry-Metric-Space-WIP + is-set-isometry-Metric-Space-WIP = + is-set-type-Set set-isometry-Metric-Space-WIP + +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : isometry-Metric-Space-WIP A B) + where + + map-isometry-Metric-Space-WIP : type-function-Metric-Space-WIP A B + map-isometry-Metric-Space-WIP = pr1 f + + is-isometry-map-isometry-Metric-Space-WIP : + is-isometry-Metric-Space-WIP A B map-isometry-Metric-Space-WIP + is-isometry-map-isometry-Metric-Space-WIP = pr2 f +``` + +## Properties + +### The identity function on a metric space is an isometry + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + is-isometry-id-Metric-Space-WIP : + is-isometry-Metric-Space-WIP A A (λ x → x) + is-isometry-id-Metric-Space-WIP d x y = id-iff + + isometry-id-Metric-Space-WIP : isometry-Metric-Space-WIP A A + isometry-id-Metric-Space-WIP = + (λ x → x) , is-isometry-id-Metric-Space-WIP +``` + +### Equality of isometries in metric spaces is equivalent to homotopies between their carrier maps + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f g : isometry-Metric-Space-WIP A B) + where + + equiv-eq-htpy-map-isometry-Metric-Space-WIP : + (f = g) ≃ + (map-isometry-Metric-Space-WIP A B f ~ map-isometry-Metric-Space-WIP A B g) + equiv-eq-htpy-map-isometry-Metric-Space-WIP = + equiv-funext ∘e + extensionality-type-subtype' + ( is-isometry-prop-Metric-Space-WIP A B) + ( f) + ( g) + + htpy-eq-map-isometry-Metric-Space-WIP : + (f = g) → + (map-isometry-Metric-Space-WIP A B f ~ map-isometry-Metric-Space-WIP A B g) + htpy-eq-map-isometry-Metric-Space-WIP = + map-equiv equiv-eq-htpy-map-isometry-Metric-Space-WIP + + eq-htpy-map-isometry-Metric-Space-WIP : + ( map-isometry-Metric-Space-WIP A B f ~ + map-isometry-Metric-Space-WIP A B g) → + (f = g) + eq-htpy-map-isometry-Metric-Space-WIP = + map-inv-equiv equiv-eq-htpy-map-isometry-Metric-Space-WIP +``` + +### An isometry preserves and reflects neighborhoods + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : isometry-Metric-Space-WIP A B) + where + + preserves-neighborhood-map-isometry-Metric-Space-WIP : + (d : ℚ⁺) (x y : type-Metric-Space-WIP A) → + neighborhood-Metric-Space-WIP A d x y → + neighborhood-Metric-Space-WIP + ( B) + ( d) + ( map-isometry-Metric-Space-WIP A B f x) + ( map-isometry-Metric-Space-WIP A B f y) + preserves-neighborhood-map-isometry-Metric-Space-WIP d x y = + forward-implication + ( is-isometry-map-isometry-Metric-Space-WIP A B f d x y) + + reflects-neighborhood-map-isometry-Metric-Space-WIP : + (d : ℚ⁺) (x y : type-Metric-Space-WIP A) → + neighborhood-Metric-Space-WIP + ( B) + ( d) + ( map-isometry-Metric-Space-WIP A B f x) + ( map-isometry-Metric-Space-WIP A B f y) → + neighborhood-Metric-Space-WIP A d x y + reflects-neighborhood-map-isometry-Metric-Space-WIP d x y = + backward-implication + ( is-isometry-map-isometry-Metric-Space-WIP A B f d x y) +``` + +### Composition of isometries + +```agda +module _ + {l1a l2a l1b l2b l1c l2c : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (C : Metric-Space-WIP l1c l2c) + where + + is-isometry-comp-is-isometry-Metric-Space-WIP : + (g : type-function-Metric-Space-WIP B C) → + (f : type-function-Metric-Space-WIP A B) → + is-isometry-Metric-Space-WIP B C g → + is-isometry-Metric-Space-WIP A B f → + is-isometry-Metric-Space-WIP A C (g ∘ f) + is-isometry-comp-is-isometry-Metric-Space-WIP g f H K d x y = + H d (f x) (f y) ∘iff K d x y + + comp-isometry-Metric-Space-WIP : + isometry-Metric-Space-WIP B C → + isometry-Metric-Space-WIP A B → + isometry-Metric-Space-WIP A C + comp-isometry-Metric-Space-WIP g f = + ( map-isometry-Metric-Space-WIP B C g ∘ + map-isometry-Metric-Space-WIP A B f) , + ( is-isometry-comp-is-isometry-Metric-Space-WIP + ( map-isometry-Metric-Space-WIP B C g) + ( map-isometry-Metric-Space-WIP A B f) + ( is-isometry-map-isometry-Metric-Space-WIP B C g) + ( is-isometry-map-isometry-Metric-Space-WIP A B f)) +``` + +### Unit laws for composition of isometries between metric spaces + +```agda +module _ + {l1a l2a l1b l2b : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (f : isometry-Metric-Space-WIP A B) + where + + left-unit-law-comp-isometry-Metric-Space-WIP : + ( comp-isometry-Metric-Space-WIP A B B + (isometry-id-Metric-Space-WIP B) + ( f)) = + ( f) + left-unit-law-comp-isometry-Metric-Space-WIP = + eq-htpy-map-isometry-Metric-Space-WIP + ( A) + ( B) + ( comp-isometry-Metric-Space-WIP + ( A) + ( B) + ( B) + (isometry-id-Metric-Space-WIP B) + ( f)) + ( f) + ( λ x → refl) + + right-unit-law-comp-isometry-Metric-Space-WIP : + ( comp-isometry-Metric-Space-WIP A A B + ( f) + ( isometry-id-Metric-Space-WIP A)) = + ( f) + right-unit-law-comp-isometry-Metric-Space-WIP = + eq-htpy-map-isometry-Metric-Space-WIP + ( A) + ( B) + ( f) + ( comp-isometry-Metric-Space-WIP + ( A) + ( A) + ( B) + ( f) + ( isometry-id-Metric-Space-WIP A)) + ( λ x → refl) +``` + +### Associativity of composition of isometries between metric spaces + +```agda +module _ + {l1a l2a l1b l2b l1c l2c l1d l2d : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (C : Metric-Space-WIP l1c l2c) + (D : Metric-Space-WIP l1d l2d) + (h : isometry-Metric-Space-WIP C D) + (g : isometry-Metric-Space-WIP B C) + (f : isometry-Metric-Space-WIP A B) + where + + associative-comp-isometry-Metric-Space-WIP : + ( comp-isometry-Metric-Space-WIP A B D + ( comp-isometry-Metric-Space-WIP B C D h g) + ( f)) = + ( comp-isometry-Metric-Space-WIP A C D + ( h) + ( comp-isometry-Metric-Space-WIP A B C g f)) + associative-comp-isometry-Metric-Space-WIP = + eq-htpy-map-isometry-Metric-Space-WIP + ( A) + ( D) + ( comp-isometry-Metric-Space-WIP A B D + ( comp-isometry-Metric-Space-WIP B C D h g) + ( f)) + ( comp-isometry-Metric-Space-WIP A C D + ( h) + ( comp-isometry-Metric-Space-WIP A B C g f)) + ( λ x → refl) +``` + +### The inverse of an isometric equivalence is an isometry + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + where + + is-isometry-map-inv-is-equiv-is-isometry-Metric-Space-WIP : + (f : type-function-Metric-Space-WIP A B) → + is-isometry-Metric-Space-WIP A B f → + (E : is-equiv f) → + is-isometry-Metric-Space-WIP B A (map-inv-is-equiv E) + is-isometry-map-inv-is-equiv-is-isometry-Metric-Space-WIP f I E d x y = + logical-equivalence-reasoning + ( neighborhood-Metric-Space-WIP B d x y) + ↔ ( neighborhood-Metric-Space-WIP B d + ( f (map-inv-is-equiv E x)) + ( f (map-inv-is-equiv E y))) + by + binary-tr + ( λ u v → + ( neighborhood-Metric-Space-WIP B d x y) ↔ + ( neighborhood-Metric-Space-WIP B d u v)) + ( inv (is-section-map-inv-is-equiv E x)) + ( inv (is-section-map-inv-is-equiv E y)) + ( id-iff) + ↔ ( neighborhood-Metric-Space-WIP A d + ( map-inv-is-equiv E x) + ( map-inv-is-equiv E y)) + by + inv-iff + ( I d (map-inv-is-equiv E x) (map-inv-is-equiv E y)) + +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : isometry-Metric-Space-WIP A B) + (E : is-equiv (map-isometry-Metric-Space-WIP A B f)) + where + + isometry-inv-is-equiv-isometry-Metric-Space-WIP : + isometry-Metric-Space-WIP B A + isometry-inv-is-equiv-isometry-Metric-Space-WIP = + ( map-inv-is-equiv E) , + ( is-isometry-map-inv-is-equiv-is-isometry-Metric-Space-WIP + ( A) + ( B) + ( map-isometry-Metric-Space-WIP A B f) + ( is-isometry-map-isometry-Metric-Space-WIP A B f) + ( E)) + + is-section-isometry-inv-is-equiv-isometry-Metric-Space-WIP : + ( comp-isometry-Metric-Space-WIP + B + A + B + f + isometry-inv-is-equiv-isometry-Metric-Space-WIP) = + ( isometry-id-Metric-Space-WIP B) + is-section-isometry-inv-is-equiv-isometry-Metric-Space-WIP = + eq-htpy-map-isometry-Metric-Space-WIP + ( B) + ( B) + ( comp-isometry-Metric-Space-WIP + B + A + B + f + isometry-inv-is-equiv-isometry-Metric-Space-WIP) + ( isometry-id-Metric-Space-WIP B) + ( is-section-map-inv-is-equiv E) + + is-retraction-isometry-inv-is-equiv-isometry-Metric-Space-WIP : + ( comp-isometry-Metric-Space-WIP + A + B + A + isometry-inv-is-equiv-isometry-Metric-Space-WIP + f) = + ( isometry-id-Metric-Space-WIP A) + is-retraction-isometry-inv-is-equiv-isometry-Metric-Space-WIP = + eq-htpy-map-isometry-Metric-Space-WIP + ( A) + ( A) + ( comp-isometry-Metric-Space-WIP + A + B + A + isometry-inv-is-equiv-isometry-Metric-Space-WIP + f) + ( isometry-id-Metric-Space-WIP A) + ( is-retraction-map-inv-is-equiv E) +``` + +### Any isometry between metric spaces is an embedding + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : isometry-Metric-Space-WIP A B) + where + + is-injective-map-isometry-Metric-Space-WIP : + is-injective (map-isometry-Metric-Space-WIP A B f) + is-injective-map-isometry-Metric-Space-WIP H = + eq-sim-Metric-Space-WIP + ( A) + ( _) + ( _) + ( λ d → + backward-implication + ( is-isometry-map-isometry-Metric-Space-WIP A B f d _ _) + ( sim-eq-Metric-Space-WIP B _ _ H d)) + + is-emb-map-isometry-Metric-Space-WIP : + is-emb (map-isometry-Metric-Space-WIP A B f) + is-emb-map-isometry-Metric-Space-WIP = + is-emb-is-injective + ( is-set-type-Metric-Space-WIP B) + ( is-injective-map-isometry-Metric-Space-WIP) +``` + +### Any isometry between metric spaces is uniformly continuous + +```agda +module _ + {l1 l2 l3 l4 : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l3 l4) + where + + -- is-uniformly-continuous-map-isometry-Metric-Space-WIP : + -- (f : isometry-Metric-Space-WIP A B) → + -- is-uniformly-continuous-map-Metric-Space-WIP A B + -- (map-isometry-Metric-Space-WIP A B f) + -- is-uniformly-continuous-map-isometry-Metric-Space-WIP = + -- is-uniformly-continuous-map-isometry-Premetric-Space + -- ( premetric-Metric-Space-WIP A) + -- ( premetric-Metric-Space-WIP B) +``` diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 7eab0ef083..ce8be79f3b 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -271,6 +271,23 @@ module _ (type-Metric-Space-WIP A , is-set-type-Metric-Space-WIP) ``` +### The set of functions between metric spaces + +```agda +module _ + {lx lx' ly ly' : Level} + (X : Metric-Space-WIP lx lx') (Y : Metric-Space-WIP ly ly') + where + + set-function-Metric-Space-WIP : Set (lx ⊔ ly) + set-function-Metric-Space-WIP = + hom-set-Set (set-Metric-Space-WIP X) (set-Metric-Space-WIP Y) + + type-function-Metric-Space-WIP : UU (lx ⊔ ly) + type-function-Metric-Space-WIP = + type-Metric-Space-WIP X → type-Metric-Space-WIP Y +``` + ### Similarity of elements in a metric space is equivalent to equality ```agda diff --git a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md index dde264e15d..77213c10b8 100644 --- a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md @@ -40,10 +40,12 @@ type of rational neighborhood relations on `A`. ```agda module _ - {l1 l2 : Level} {A : UU l1} (U V : Rational-Neighborhood-Relation l2 A) + {l1 l2 l2' : Level} {A : UU l1} + (U : Rational-Neighborhood-Relation l2 A) + (V : Rational-Neighborhood-Relation l2' A) where - leq-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + leq-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2 ⊔ l2') leq-prop-Rational-Neighborhood-Relation = Π-Prop ( ℚ⁺) @@ -55,7 +57,7 @@ module _ ( A) ( λ y → hom-Prop (U d x y) (V d x y)))) - leq-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + leq-Rational-Neighborhood-Relation : UU (l1 ⊔ l2 ⊔ l2') leq-Rational-Neighborhood-Relation = type-Prop leq-prop-Rational-Neighborhood-Relation @@ -90,7 +92,10 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (U V W : Rational-Neighborhood-Relation l2 A) + {l lu lv lw : Level} {A : UU l} + (U : Rational-Neighborhood-Relation lu A) + (V : Rational-Neighborhood-Relation lv A) + (W : Rational-Neighborhood-Relation lw A) where transitive-leq-Rational-Neighborhood-Relation : diff --git a/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..70b9c111e6 --- /dev/null +++ b/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md @@ -0,0 +1,361 @@ +# Short functions between metric spaces (WIP) + +```agda +module metric-spaces.short-functions-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.embeddings +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.sequences +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.isometries-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.ordering-rational-neighborhoods +open import metric-spaces.preimage-rational-neighborhoods +``` + +
+ +## Idea + +A [function](metric-spaces.functions-metric-spaces.md) `f` between two +[metric spaces](metric-spaces.metric-spaces.md) `A` and `B` is +{{#concept "short" Disambiguation="function between metric spaces" Agda=is-short-function-Metric-Space-WIP WD="metric map" WDID=Q2713824}} +if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) +on `A` is [finer](metric-spaces.ordering-rational-neighborhoods.md) than the +[preimage](metric-spaces.preimage-rational-neighborhoods.md) by `f` of the +rational neighborhood relation on `B`. I.e., upper bounds on the distance +between two points in `A` are upper bounds of the distance between their images +in `B`. + +## Definitions + +### The property of being a short function between metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : type-function-Metric-Space-WIP A B) + where + + is-short-function-prop-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l2') + is-short-function-prop-Metric-Space-WIP = + leq-prop-Rational-Neighborhood-Relation + ( neighborhood-prop-Metric-Space-WIP A) + ( preimage-Rational-Neighborhood-Relation + ( f) + ( neighborhood-prop-Metric-Space-WIP B)) + + is-short-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l2') + is-short-function-Metric-Space-WIP = + type-Prop is-short-function-prop-Metric-Space-WIP + + is-prop-is-short-function-Metric-Space-WIP : + is-prop is-short-function-Metric-Space-WIP + is-prop-is-short-function-Metric-Space-WIP = + is-prop-type-Prop is-short-function-prop-Metric-Space-WIP +``` + +### The set of short functions between metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + where + + set-short-function-Metric-Space-WIP : Set (l1 ⊔ l2 ⊔ l1' ⊔ l2') + set-short-function-Metric-Space-WIP = + set-subset + ( set-function-Metric-Space-WIP A B) + ( is-short-function-prop-Metric-Space-WIP A B) + + short-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + short-function-Metric-Space-WIP = type-Set set-short-function-Metric-Space-WIP + + is-set-short-function-Metric-Space-WIP : + is-set short-function-Metric-Space-WIP + is-set-short-function-Metric-Space-WIP = + is-set-type-Set set-short-function-Metric-Space-WIP + +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : short-function-Metric-Space-WIP A B) + where + + map-short-function-Metric-Space-WIP : type-function-Metric-Space-WIP A B + map-short-function-Metric-Space-WIP = pr1 f + + is-short-map-short-function-Metric-Space-WIP : + is-short-function-Metric-Space-WIP A B map-short-function-Metric-Space-WIP + is-short-map-short-function-Metric-Space-WIP = pr2 f +``` + +## Properties + +### The identity function on a metric space is short + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + is-short-id-Metric-Space-WIP : + is-short-function-Metric-Space-WIP A A (λ x → x) + is-short-id-Metric-Space-WIP d x y H = H + + short-id-Metric-Space-WIP : short-function-Metric-Space-WIP A A + short-id-Metric-Space-WIP = + (λ x → x) , is-short-id-Metric-Space-WIP +``` + +### Equality of short functions between metric spaces is characterized by homotopy of their carrier maps + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f g : short-function-Metric-Space-WIP A B) + where + + equiv-eq-htpy-map-short-function-Metric-Space-WIP : + ( f = g) ≃ + ( map-short-function-Metric-Space-WIP A B f ~ + map-short-function-Metric-Space-WIP A B g) + equiv-eq-htpy-map-short-function-Metric-Space-WIP = + equiv-funext ∘e + extensionality-type-subtype' + ( is-short-function-prop-Metric-Space-WIP A B) f g + + eq-htpy-map-short-function-Metric-Space-WIP : + ( map-short-function-Metric-Space-WIP A B f ~ + map-short-function-Metric-Space-WIP A B g) → + ( f = g) + eq-htpy-map-short-function-Metric-Space-WIP = + map-inv-equiv equiv-eq-htpy-map-short-function-Metric-Space-WIP +``` + +### Composition of short functions + +```agda +module _ + {l1a l2a l1b l2b l1c l2c : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (C : Metric-Space-WIP l1c l2c) + where + + is-short-comp-is-short-function-Metric-Space-WIP : + (g : type-function-Metric-Space-WIP B C) → + (f : type-function-Metric-Space-WIP A B) → + is-short-function-Metric-Space-WIP B C g → + is-short-function-Metric-Space-WIP A B f → + is-short-function-Metric-Space-WIP A C (g ∘ f) + is-short-comp-is-short-function-Metric-Space-WIP g f H K d x y = + H d (f x) (f y) ∘ K d x y + + comp-short-function-Metric-Space-WIP : + short-function-Metric-Space-WIP B C → + short-function-Metric-Space-WIP A B → + short-function-Metric-Space-WIP A C + comp-short-function-Metric-Space-WIP g f = + ( map-short-function-Metric-Space-WIP B C g ∘ + map-short-function-Metric-Space-WIP A B f) , + ( is-short-comp-is-short-function-Metric-Space-WIP + ( map-short-function-Metric-Space-WIP B C g) + ( map-short-function-Metric-Space-WIP A B f) + ( is-short-map-short-function-Metric-Space-WIP B C g) + ( is-short-map-short-function-Metric-Space-WIP A B f)) +``` + +### Unit laws for composition of short maps between metric spaces + +```agda +module _ + {l1a l2a l1b l2b : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (f : short-function-Metric-Space-WIP A B) + where + + left-unit-law-comp-short-function-Metric-Space-WIP : + ( comp-short-function-Metric-Space-WIP A B B + ( short-id-Metric-Space-WIP B) + ( f)) = + ( f) + left-unit-law-comp-short-function-Metric-Space-WIP = + eq-htpy-map-short-function-Metric-Space-WIP + ( A) + ( B) + ( comp-short-function-Metric-Space-WIP + ( A) + ( B) + ( B) + ( short-id-Metric-Space-WIP B) + ( f)) + ( f) + ( λ x → refl) + + right-unit-law-comp-short-function-Metric-Space-WIP : + ( comp-short-function-Metric-Space-WIP A A B + ( f) + ( short-id-Metric-Space-WIP A)) = + ( f) + right-unit-law-comp-short-function-Metric-Space-WIP = + eq-htpy-map-short-function-Metric-Space-WIP + ( A) + ( B) + ( f) + ( comp-short-function-Metric-Space-WIP + ( A) + ( A) + ( B) + ( f) + ( short-id-Metric-Space-WIP A)) + ( λ x → refl) +``` + +### Associativity of composition of short maps between metric spaces + +```agda +module _ + {l1a l2a l1b l2b l1c l2c l1d l2d : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (C : Metric-Space-WIP l1c l2c) + (D : Metric-Space-WIP l1d l2d) + (h : short-function-Metric-Space-WIP C D) + (g : short-function-Metric-Space-WIP B C) + (f : short-function-Metric-Space-WIP A B) + where + + associative-comp-short-function-Metric-Space-WIP : + ( comp-short-function-Metric-Space-WIP A B D + ( comp-short-function-Metric-Space-WIP B C D h g) + ( f)) = + ( comp-short-function-Metric-Space-WIP A C D + ( h) + ( comp-short-function-Metric-Space-WIP A B C g f)) + associative-comp-short-function-Metric-Space-WIP = + eq-htpy-map-short-function-Metric-Space-WIP + ( A) + ( D) + ( comp-short-function-Metric-Space-WIP A B D + ( comp-short-function-Metric-Space-WIP B C D h g) + ( f)) + ( comp-short-function-Metric-Space-WIP A C D + ( h) + ( comp-short-function-Metric-Space-WIP A B C g f)) + ( λ x → refl) +``` + +### Constant functions between metric spaces are short + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (b : type-Metric-Space-WIP B) + where + + is-short-constant-function-Metric-Space-WIP : + is-short-function-Metric-Space-WIP A B (λ _ → b) + is-short-constant-function-Metric-Space-WIP ε x y H = + refl-neighborhood-Metric-Space-WIP B ε b +``` + +### Any isometry between metric spaces is short + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : type-function-Metric-Space-WIP A B) + where + + is-short-is-isometry-Metric-Space-WIP : + is-isometry-Metric-Space-WIP A B f → + is-short-function-Metric-Space-WIP A B f + is-short-is-isometry-Metric-Space-WIP I = + preserves-neighborhood-map-isometry-Metric-Space-WIP A B (f , I) +``` + +### The embedding of isometries of metric spaces into short maps + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + where + + short-isometry-Metric-Space-WIP : + isometry-Metric-Space-WIP A B → short-function-Metric-Space-WIP A B + short-isometry-Metric-Space-WIP f = + map-isometry-Metric-Space-WIP A B f , + is-short-is-isometry-Metric-Space-WIP + ( A) + ( B) + ( map-isometry-Metric-Space-WIP A B f) + ( is-isometry-map-isometry-Metric-Space-WIP A B f) + + is-emb-short-isometry-Metric-Space-WIP : + is-emb short-isometry-Metric-Space-WIP + is-emb-short-isometry-Metric-Space-WIP = + is-emb-right-factor + ( map-short-function-Metric-Space-WIP A B) + ( short-isometry-Metric-Space-WIP) + ( is-emb-inclusion-subtype (is-short-function-prop-Metric-Space-WIP A B)) + ( is-emb-htpy + ( λ f → refl) + ( is-emb-inclusion-subtype (is-isometry-prop-Metric-Space-WIP A B))) + + emb-short-isometry-Metric-Space : + isometry-Metric-Space-WIP A B ↪ short-function-Metric-Space-WIP A B + emb-short-isometry-Metric-Space = + short-isometry-Metric-Space-WIP , + is-emb-short-isometry-Metric-Space-WIP +``` + +### Short maps are uniformly continuous + +```agda +-- module _ +-- {l1 l2 l3 l4 : Level} (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l3 l4) +-- where + +-- is-uniformly-continuous-is-short-function-Metric-Space-WIP : +-- (f : map-type-Metric-Space-WIP A B) → is-short-function-Metric-Space-WIP A B f → +-- is-uniformly-continuous-map-Metric-Space-WIP A B f +-- is-uniformly-continuous-is-short-function-Metric-Space-WIP = +-- is-uniformly-continuous-is-short-function-Premetric-Space +-- ( premetric-Metric-Space-WIP A) +-- ( premetric-Metric-Space-WIP B) +``` + +## See also + +- The + [category of short functions on metric spaces](metric-spaces.category-of-metric-spaces-and-short-functions.md) + +## External links + +- [Short maps](https://ncatlab.org/nlab/show/short+map) at $n$Lab +- [Metric maps](https://en.wikipedia.org/wiki/Metric_map) at Wikipedia From 9193c4e77139ec40322878a2b78dc4ef0d198d95 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 26 Jun 2025 18:10:20 +0200 Subject: [PATCH 31/42] WIP continuous functions metric spaces --- src/metric-spaces.lagda.md | 2 + ...nuous-functions-metric-spaces-WIP.lagda.md | 70 ++++++++++++++++++ ...limits-of-functions-metric-spaces.lagda.md | 71 +++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/limits-of-functions-metric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 0d03de7688..d2def257f0 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -54,6 +54,7 @@ open import metric-spaces.cauchy-sequences-metric-spaces public open import metric-spaces.closed-premetric-structures public open import metric-spaces.complete-metric-spaces public open import metric-spaces.continuous-functions-metric-spaces public +open import metric-spaces.continuous-functions-metric-spaces-WIP public open import metric-spaces.continuous-functions-premetric-spaces public open import metric-spaces.convergent-cauchy-approximations-metric-spaces public open import metric-spaces.convergent-sequences-metric-spaces public @@ -73,6 +74,7 @@ open import metric-spaces.isometries-metric-spaces public open import metric-spaces.isometries-metric-spaces-WIP public open import metric-spaces.isometries-premetric-spaces public open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces public +open import metric-spaces.limits-of-functions-metric-spaces public open import metric-spaces.limits-of-sequences-metric-spaces public open import metric-spaces.limits-of-sequences-premetric-spaces public open import metric-spaces.limits-of-sequences-pseudometric-spaces public diff --git a/src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..7fe2777b1c --- /dev/null +++ b/src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md @@ -0,0 +1,70 @@ +# Continuous functions between metric spaces (WIP) + +```agda +module metric-spaces.continuous-functions-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.inhabited-subtypes +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.limits-of-functions-metric-spaces +open import metric-spaces.metric-spaces-WIP +``` + +
+ +## Idea + +A [function](metric-spaces.functions-metric-spaces.md) `f` between +[metric spaces](metric-spaces.metric-spaces.md) `X` and `Y` is +{{#concept "continuous" Disambiguation="function between metric spaces at a point" WDID=Q170058 WD="continuous function" Agda=is-continuous-at-point-function-Metric-Space-WIP}} +at a point `x` if `f x` is the +[limit](metric-spaces.limits-of-functions-metric-spaces.md) of `f` at `x`. I.e., +there exists a function `m : ℚ⁺ → ℚ⁺` such that whenever `x'` is in an +`m ε`-neighborhood of `x`, `f x'` is in an `ε`-neighborhood of `f x`. `m` is +called a modulus of continuity of `f` at `x`. + +## Definitions + +```agda +module _ + {l1 l2 l3 l4 : Level} + (X : Metric-Space-WIP l1 l2) + (Y : Metric-Space-WIP l3 l4) + (f : type-function-Metric-Space-WIP X Y) + (x : type-Metric-Space-WIP X) + where + + is-continuous-at-point-prop-function-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l4) + is-continuous-at-point-prop-function-Metric-Space-WIP = + is-pt-limit-prop-function-Metric-Space-WIP X Y f x (f x) + + is-continuous-at-point-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) + is-continuous-at-point-function-Metric-Space-WIP = + is-pt-limit-function-Metric-Space-WIP X Y f x (f x) + + is-modulus-of-continuity-at-point-prop-function-Metric-Space-WIP : + (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) + is-modulus-of-continuity-at-point-prop-function-Metric-Space-WIP = + is-modulus-of-pt-limit-prop-function-Metric-Space-WIP X Y f x (f x) + + is-modulus-of-continuity-at-point-function-Metric-Space-WIP : + (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l2 ⊔ l4) + is-modulus-of-continuity-at-point-function-Metric-Space-WIP = + is-modulus-of-pt-limit-function-Metric-Space-WIP X Y f x (f x) + + modulus-of-continuity-at-point-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) + modulus-of-continuity-at-point-function-Metric-Space-WIP = + type-subtype + is-modulus-of-continuity-at-point-prop-function-Metric-Space-WIP +``` diff --git a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md new file mode 100644 index 0000000000..af4cc8d527 --- /dev/null +++ b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md @@ -0,0 +1,71 @@ +# Limits of functions between metric spaces + +```agda +module metric-spaces.limits-of-functions-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.inhabited-subtypes +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.metric-spaces-WIP +``` + +
+ +## Idea + +A [function](metric-spaces.functions-metric-spaces.md) `f` between +[metric spaces](metric-spaces.metric-spaces.md) `X` and `Y` has a +{{#concept "limit" Disambiguation="of function between metric spaces at a point" Agda=is-pt-limit-function-Metric-Space-WIP}} +`y : Y` at a point `x : X` if there exists a function `m : ℚ⁺ → ℚ⁺` such that +whenever `x'` is in an `m ε`-neighborhood of `x`, `f x'` is in an +`ε`-neighborhood of `y`. `m` is called a limit modulus of `f` at `x`. + +## Definitions + +```agda +module _ + {l1 l2 l3 l4 : Level} + (X : Metric-Space-WIP l1 l2) + (Y : Metric-Space-WIP l3 l4) + (f : type-function-Metric-Space-WIP X Y) + (x : type-Metric-Space-WIP X) + (y : type-Metric-Space-WIP Y) + where + + is-modulus-of-pt-limit-prop-function-Metric-Space-WIP : + (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) + is-modulus-of-pt-limit-prop-function-Metric-Space-WIP m = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( type-Metric-Space-WIP X) + ( λ x' → + neighborhood-prop-Metric-Space-WIP X (m ε) x x' ⇒ + neighborhood-prop-Metric-Space-WIP Y ε y (f x'))) + + is-modulus-of-pt-limit-function-Metric-Space-WIP : + (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l2 ⊔ l4) + is-modulus-of-pt-limit-function-Metric-Space-WIP m = + type-Prop (is-modulus-of-pt-limit-prop-function-Metric-Space-WIP m) + + is-pt-limit-prop-function-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l4) + is-pt-limit-prop-function-Metric-Space-WIP = + is-inhabited-subtype-Prop + is-modulus-of-pt-limit-prop-function-Metric-Space-WIP + + is-pt-limit-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) + is-pt-limit-function-Metric-Space-WIP = + type-Prop is-pt-limit-prop-function-Metric-Space-WIP +``` From 399b782cee44e5b0efacda13b32c806501865b95 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 26 Jun 2025 23:26:52 +0200 Subject: [PATCH 32/42] WIP uniformly continuous functions metric spaces --- src/metric-spaces.lagda.md | 1 + ...nuous-functions-metric-spaces-WIP.lagda.md | 189 ++++++++++++++++++ 2 files changed, 190 insertions(+) create mode 100644 src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index d2def257f0..86f0288e04 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -128,6 +128,7 @@ open import metric-spaces.symmetric-rational-neighborhoods public open import metric-spaces.triangular-premetric-structures public open import metric-spaces.triangular-rational-neighborhoods public open import metric-spaces.uniformly-continuous-functions-metric-spaces public +open import metric-spaces.uniformly-continuous-functions-metric-spaces-WIP public open import metric-spaces.uniformly-continuous-functions-premetric-spaces public ``` diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..46268de4f2 --- /dev/null +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md @@ -0,0 +1,189 @@ +# Uniformly continuous functions between metric spaces (WIP) + +```agda +module metric-spaces.uniformly-continuous-functions-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.function-types +open import foundation.inhabited-subtypes +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import logic.functoriality-existential-quantification + +open import metric-spaces.continuous-functions-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +``` + +
+ +## Idea + +A [function](metric-spaces.functions-metric-spaces.md) `f` between +[metric spaces](metric-spaces.metric-spaces.md) `X` and `Y` is +{{#concept "uniformly continuous" Disambiguation="function between metric spaces" WDID=Q741865 WD="uniform continuity" Agda=is-uniformly-continuous-map-Metric-Space-WIP}} +if there exists a function `m : ℚ⁺ → ℚ⁺` such that for any `x : X`, whenever +`x'` is in an `m ε`-neighborhood of `x`, `f x'` is in an `ε`-neighborhood of +`f x`. The function `m` is called a modulus of uniform continuity of `f`. + +## Definitions + +### The property of being a uniformly continuous function + +```agda +module _ + {l1 l2 l3 l4 : Level} + (X : Metric-Space-WIP l1 l2) + (Y : Metric-Space-WIP l3 l4) + (f : type-function-Metric-Space-WIP X Y) + where + + is-modulus-of-uniform-continuity-prop-function-Metric-Space-WIP : + (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) + is-modulus-of-uniform-continuity-prop-function-Metric-Space-WIP m = + Π-Prop + ( type-Metric-Space-WIP X) + ( λ x → + is-modulus-of-continuity-at-point-prop-function-Metric-Space-WIP + X + Y + f + x + m) + + modulus-of-uniform-continuity-map-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) + modulus-of-uniform-continuity-map-Metric-Space-WIP = + type-subtype is-modulus-of-uniform-continuity-prop-function-Metric-Space-WIP + + is-uniformly-continuous-prop-function-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l4) + is-uniformly-continuous-prop-function-Metric-Space-WIP = + is-inhabited-subtype-Prop + is-modulus-of-uniform-continuity-prop-function-Metric-Space-WIP + + is-uniformly-continuous-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) + is-uniformly-continuous-function-Metric-Space-WIP = + type-Prop is-uniformly-continuous-prop-function-Metric-Space-WIP +``` + +### The type of uniformly continuous functions between metric spaces + +```agda +module _ + {l1 l2 l3 l4 : Level} + (X : Metric-Space-WIP l1 l2) + (Y : Metric-Space-WIP l3 l4) + where + + uniformly-continuous-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + uniformly-continuous-function-Metric-Space-WIP = + type-subtype (is-uniformly-continuous-prop-function-Metric-Space-WIP X Y) + + map-uniformly-continuous-function-Metric-Space-WIP : + uniformly-continuous-function-Metric-Space-WIP → + type-function-Metric-Space-WIP X Y + map-uniformly-continuous-function-Metric-Space-WIP = pr1 + + is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space-WIP : + (f : uniformly-continuous-function-Metric-Space-WIP) → + is-uniformly-continuous-function-Metric-Space-WIP + ( X) + ( Y) + ( map-uniformly-continuous-function-Metric-Space-WIP f) + is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space-WIP = + pr2 +``` + +## Properties + +### Uniformly continuous functions are continuous at all points + +```agda +module _ + {l1 l2 l3 l4 : Level} + (X : Metric-Space-WIP l1 l2) + (Y : Metric-Space-WIP l3 l4) + (f : type-function-Metric-Space-WIP X Y) + where + + is-continuous-at-point-is-uniformly-continuous-function-Metric-Space-WIP : + is-uniformly-continuous-function-Metric-Space-WIP X Y f → + (x : type-Metric-Space-WIP X) → + is-continuous-at-point-function-Metric-Space-WIP X Y f x + is-continuous-at-point-is-uniformly-continuous-function-Metric-Space-WIP H x = + elim-exists + ( is-continuous-at-point-prop-function-Metric-Space-WIP X Y f x) + ( λ m K → intro-exists m (K x)) + ( H) +``` + +### The identity function is uniformly continuous + +```agda +module _ + {l1 l2 : Level} (X : Metric-Space-WIP l1 l2) + where + + is-uniformly-continuous-id-Metric-Space-WIP : + is-uniformly-continuous-function-Metric-Space-WIP X X id + is-uniformly-continuous-id-Metric-Space-WIP = + intro-exists id (λ _ _ _ → id) +``` + +### The composition of uniformly continuous functions is uniformly continuous + +```agda +module _ + {l1 l2 l3 l4 l5 l6 : Level} + (X : Metric-Space-WIP l1 l2) + (Y : Metric-Space-WIP l3 l4) + (Z : Metric-Space-WIP l5 l6) + where + + is-uniformly-continuous-comp-function-Metric-Space-WIP : + (g : type-function-Metric-Space-WIP Y Z) → + (f : type-function-Metric-Space-WIP X Y) → + is-uniformly-continuous-function-Metric-Space-WIP Y Z g → + is-uniformly-continuous-function-Metric-Space-WIP X Y f → + is-uniformly-continuous-function-Metric-Space-WIP X Z (g ∘ f) + is-uniformly-continuous-comp-function-Metric-Space-WIP g f H K = + do + mg , is-modulus-uniform-mg ← H + mf , is-modulus-uniform-mf ← K + intro-exists + ( mf ∘ mg) + ( λ x ε x' → + is-modulus-uniform-mg (f x) ε (f x') ∘ + is-modulus-uniform-mf x (mg ε) x') + where + open + do-syntax-trunc-Prop + ( is-uniformly-continuous-prop-function-Metric-Space-WIP X Z (g ∘ f)) + + comp-uniformly-continuous-function-Metric-Space-WIP : + uniformly-continuous-function-Metric-Space-WIP Y Z → + uniformly-continuous-function-Metric-Space-WIP X Y → + uniformly-continuous-function-Metric-Space-WIP X Z + comp-uniformly-continuous-function-Metric-Space-WIP g f = + ( map-uniformly-continuous-function-Metric-Space-WIP Y Z g ∘ + map-uniformly-continuous-function-Metric-Space-WIP X Y f) , + ( is-uniformly-continuous-comp-function-Metric-Space-WIP + ( map-uniformly-continuous-function-Metric-Space-WIP Y Z g) + ( map-uniformly-continuous-function-Metric-Space-WIP X Y f) + ( is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space-WIP + ( Y) + ( Z) + ( g)) + ( is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space-WIP + ( X) + ( Y) + ( f))) +``` From 252ef6564235f1faf514812c7bb3059d6d697cfc Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 26 Jun 2025 23:31:43 +0200 Subject: [PATCH 33/42] isometry => short => uniformnly continuous --- .../isometries-metric-spaces-WIP.lagda.md | 18 ------- ...short-functions-metric-spaces-WIP.lagda.md | 16 ------ ...nuous-functions-metric-spaces-WIP.lagda.md | 49 +++++++++++++++++++ 3 files changed, 49 insertions(+), 34 deletions(-) diff --git a/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md b/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md index 85077c41c4..f892cc239c 100644 --- a/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md @@ -432,21 +432,3 @@ module _ ( is-set-type-Metric-Space-WIP B) ( is-injective-map-isometry-Metric-Space-WIP) ``` - -### Any isometry between metric spaces is uniformly continuous - -```agda -module _ - {l1 l2 l3 l4 : Level} - (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l3 l4) - where - - -- is-uniformly-continuous-map-isometry-Metric-Space-WIP : - -- (f : isometry-Metric-Space-WIP A B) → - -- is-uniformly-continuous-map-Metric-Space-WIP A B - -- (map-isometry-Metric-Space-WIP A B f) - -- is-uniformly-continuous-map-isometry-Metric-Space-WIP = - -- is-uniformly-continuous-map-isometry-Premetric-Space - -- ( premetric-Metric-Space-WIP A) - -- ( premetric-Metric-Space-WIP B) -``` diff --git a/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md index 70b9c111e6..bedf0d9902 100644 --- a/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md @@ -334,22 +334,6 @@ module _ is-emb-short-isometry-Metric-Space-WIP ``` -### Short maps are uniformly continuous - -```agda --- module _ --- {l1 l2 l3 l4 : Level} (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l3 l4) --- where - --- is-uniformly-continuous-is-short-function-Metric-Space-WIP : --- (f : map-type-Metric-Space-WIP A B) → is-short-function-Metric-Space-WIP A B f → --- is-uniformly-continuous-map-Metric-Space-WIP A B f --- is-uniformly-continuous-is-short-function-Metric-Space-WIP = --- is-uniformly-continuous-is-short-function-Premetric-Space --- ( premetric-Metric-Space-WIP A) --- ( premetric-Metric-Space-WIP B) -``` - ## See also - The diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md index 46268de4f2..9ebb416fd2 100644 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.function-types +open import foundation.functoriality-dependent-pair-types open import foundation.inhabited-subtypes open import foundation.propositional-truncations open import foundation.propositions @@ -21,7 +22,9 @@ open import foundation.universe-levels open import logic.functoriality-existential-quantification open import metric-spaces.continuous-functions-metric-spaces-WIP +open import metric-spaces.isometries-metric-spaces-WIP open import metric-spaces.metric-spaces-WIP +open import metric-spaces.short-functions-metric-spaces-WIP ``` @@ -187,3 +190,49 @@ module _ ( Y) ( f))) ``` + +### Short maps are uniformly continuous + +```agda +module _ + {l1 l2 l3 l4 : Level} + (A : Metric-Space-WIP l1 l2) + (B : Metric-Space-WIP l3 l4) + where + + is-uniformly-continuous-is-short-function-Metric-Space-WIP : + (f : type-function-Metric-Space-WIP A B) → + is-short-function-Metric-Space-WIP A B f → + is-uniformly-continuous-function-Metric-Space-WIP A B f + is-uniformly-continuous-is-short-function-Metric-Space-WIP f H = + intro-exists id (λ x d → H d x) + + uniformly-continuous-short-function-Metric-Space : + short-function-Metric-Space-WIP A B → + uniformly-continuous-function-Metric-Space-WIP A B + uniformly-continuous-short-function-Metric-Space = + tot is-uniformly-continuous-is-short-function-Metric-Space-WIP +``` + +### Isometries are uniformly continuous + +```agda +module _ + {l1 l2 l3 l4 : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l3 l4) + where + + is-uniformly-continuous-is-isometry-Metric-Space-WIP : + (f : type-function-Metric-Space-WIP A B) → + is-isometry-Metric-Space-WIP A B f → + is-uniformly-continuous-function-Metric-Space-WIP A B f + is-uniformly-continuous-is-isometry-Metric-Space-WIP f = + is-uniformly-continuous-is-short-function-Metric-Space-WIP A B f ∘ + is-short-is-isometry-Metric-Space-WIP A B f + + uniformly-continuous-isometry-Metric-Space : + isometry-Metric-Space-WIP A B → + uniformly-continuous-function-Metric-Space-WIP A B + uniformly-continuous-isometry-Metric-Space = + tot is-uniformly-continuous-is-isometry-Metric-Space-WIP +``` From e626020e2303880c09d7d9c199b02ace90681eb2 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 27 Jun 2025 00:25:05 +0200 Subject: [PATCH 34/42] typo --- ...niformly-continuous-functions-metric-spaces-WIP.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md index 9ebb416fd2..cb443ea946 100644 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md @@ -33,7 +33,7 @@ open import metric-spaces.short-functions-metric-spaces-WIP A [function](metric-spaces.functions-metric-spaces.md) `f` between [metric spaces](metric-spaces.metric-spaces.md) `X` and `Y` is -{{#concept "uniformly continuous" Disambiguation="function between metric spaces" WDID=Q741865 WD="uniform continuity" Agda=is-uniformly-continuous-map-Metric-Space-WIP}} +{{#concept "uniformly continuous" Disambiguation="function between metric spaces" WDID=Q741865 WD="uniform continuity" Agda=is-uniformly-continuous-function-Metric-Space-WIP}} if there exists a function `m : ℚ⁺ → ℚ⁺` such that for any `x : X`, whenever `x'` is in an `m ε`-neighborhood of `x`, `f x'` is in an `ε`-neighborhood of `f x`. The function `m` is called a modulus of uniform continuity of `f`. @@ -63,8 +63,8 @@ module _ x m) - modulus-of-uniform-continuity-map-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) - modulus-of-uniform-continuity-map-Metric-Space-WIP = + modulus-of-uniform-continuity-function-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l4) + modulus-of-uniform-continuity-function-Metric-Space-WIP = type-subtype is-modulus-of-uniform-continuity-prop-function-Metric-Space-WIP is-uniformly-continuous-prop-function-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l4) From d44c3d24ef9f834ff9b3a680672c12b86fa14a31 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 27 Jun 2025 02:05:39 +0200 Subject: [PATCH 35/42] WIP Cauchy approximations --- src/metric-spaces.lagda.md | 1 + ...-approximations-metric-spaces-WIP.lagda.md | 161 ++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 86f0288e04..8b4a90be91 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -48,6 +48,7 @@ module metric-spaces where open import metric-spaces.category-of-metric-spaces-and-isometries public open import metric-spaces.category-of-metric-spaces-and-short-functions public open import metric-spaces.cauchy-approximations-metric-spaces public +open import metric-spaces.cauchy-approximations-metric-spaces-WIP public open import metric-spaces.cauchy-approximations-premetric-spaces public open import metric-spaces.cauchy-sequences-complete-metric-spaces public open import metric-spaces.cauchy-sequences-metric-spaces public diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..0b763c2aef --- /dev/null +++ b/src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md @@ -0,0 +1,161 @@ +# Cauchy approximations in metric spaces (WIP) + +```agda +module metric-spaces.cauchy-approximations-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.constant-maps +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.short-functions-metric-spaces-WIP +``` + +
+ +## Idea + +A +{{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space-WIP}} +in a [metric space](metric-spaces.metric-spaces.md) `A` is a map `f` from +[`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to its carrier +type such that for all `(ε δ : ℚ⁺)`, `f ε` and `f δ` are in a +(`ε + δ`)-[neighborhood](metric-spaces.premetric-structures.md), i.e. the +distance between `f ε` and `f δ` is bounded by `ε + δ`. + +## Definitions + +### Cauchy approximations in metric spaces + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + is-cauchy-approximation-prop-Metric-Space-WIP : + (ℚ⁺ → type-Metric-Space-WIP A) → Prop l2 + is-cauchy-approximation-prop-Metric-Space-WIP f = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( ℚ⁺) + ( λ δ → + neighborhood-prop-Metric-Space-WIP A (ε +ℚ⁺ δ) (f ε) (f δ))) + + is-cauchy-approximation-Metric-Space-WIP : + (ℚ⁺ → type-Metric-Space-WIP A) → UU l2 + is-cauchy-approximation-Metric-Space-WIP = + type-Prop ∘ is-cauchy-approximation-prop-Metric-Space-WIP + + cauchy-approximation-Metric-Space-WIP : UU (l1 ⊔ l2) + cauchy-approximation-Metric-Space-WIP = + type-subtype is-cauchy-approximation-prop-Metric-Space-WIP +``` + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + (f : cauchy-approximation-Metric-Space-WIP A) + where + + map-cauchy-approximation-Metric-Space-WIP : + ℚ⁺ → type-Metric-Space-WIP A + map-cauchy-approximation-Metric-Space-WIP = pr1 f + + is-cauchy-approximation-map-cauchy-approximation-Metric-Space-WIP : + (ε δ : ℚ⁺) → + neighborhood-Metric-Space-WIP + ( A) + ( ε +ℚ⁺ δ) + ( map-cauchy-approximation-Metric-Space-WIP ε) + ( map-cauchy-approximation-Metric-Space-WIP δ) + is-cauchy-approximation-map-cauchy-approximation-Metric-Space-WIP = pr2 f +``` + +## Properties + +### Constant maps in metric spaces are Cauchy approximations + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + (x : type-Metric-Space-WIP A) + where + + const-cauchy-approximation-Metric-Space-WIP : + cauchy-approximation-Metric-Space-WIP A + const-cauchy-approximation-Metric-Space-WIP = + (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Metric-Space-WIP A (ε +ℚ⁺ δ) x) +``` + +### Short maps between metric spaces are functorial on Cauchy approximations + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + (f : short-function-Metric-Space-WIP A B) + where + + map-short-function-cauchy-approximation-Metric-Space-WIP : + cauchy-approximation-Metric-Space-WIP A → + cauchy-approximation-Metric-Space-WIP B + map-short-function-cauchy-approximation-Metric-Space-WIP (u , H) = + ( map-short-function-Metric-Space-WIP A B f ∘ u) , + ( λ ε δ → + is-short-map-short-function-Metric-Space-WIP + ( A) + ( B) + ( f) + ( ε +ℚ⁺ δ) + ( u ε) + ( u δ) + ( H ε δ)) + +module _ + {l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + where + + eq-id-map-short-function-cauchy-approximation-Metric-Space-WIP : + map-short-function-cauchy-approximation-Metric-Space-WIP + ( A) + ( A) + ( short-id-Metric-Space-WIP A) = + id + eq-id-map-short-function-cauchy-approximation-Metric-Space-WIP = refl + +module _ + {l1a l2a l1b l2b l1c l2c : Level} + (A : Metric-Space-WIP l1a l2a) + (B : Metric-Space-WIP l1b l2b) + (C : Metric-Space-WIP l1c l2c) + (g : short-function-Metric-Space-WIP B C) + (f : short-function-Metric-Space-WIP A B) + where + + eq-comp-map-short-function-cauchy-approximation-Metric-Space-WIP : + ( map-short-function-cauchy-approximation-Metric-Space-WIP B C g ∘ + map-short-function-cauchy-approximation-Metric-Space-WIP A B f) = + ( map-short-function-cauchy-approximation-Metric-Space-WIP A C + (comp-short-function-Metric-Space-WIP A B C g f)) + eq-comp-map-short-function-cauchy-approximation-Metric-Space-WIP = refl +``` + +## References + +Our definition of Cauchy approximation follows Definition 4.5.5 of +{{#cite Booij20PhD}} and Definition 11.2.10 of {{#cite UF13}}. + +{{#bibliography}} From 043129d0c7f8933bd7d71ae49fa594540ffc0063 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 27 Jun 2025 17:46:28 +0200 Subject: [PATCH 36/42] refactor limits of Cauchy approximations --- src/metric-spaces.lagda.md | 2 + ...-approximations-metric-spaces-WIP.lagda.md | 142 +++++++++++++++++ ...-approximations-metric-spaces-WIP.lagda.md | 144 ++++++++++++++++++ 3 files changed, 288 insertions(+) create mode 100644 src/metric-spaces/convergent-cauchy-approximations-metric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 8b4a90be91..fbd08c9c22 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -58,6 +58,7 @@ open import metric-spaces.continuous-functions-metric-spaces public open import metric-spaces.continuous-functions-metric-spaces-WIP public open import metric-spaces.continuous-functions-premetric-spaces public open import metric-spaces.convergent-cauchy-approximations-metric-spaces public +open import metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP public open import metric-spaces.convergent-sequences-metric-spaces public open import metric-spaces.dependent-products-metric-spaces public open import metric-spaces.discrete-premetric-structures public @@ -74,6 +75,7 @@ open import metric-spaces.isometric-equivalences-premetric-spaces public open import metric-spaces.isometries-metric-spaces public open import metric-spaces.isometries-metric-spaces-WIP public open import metric-spaces.isometries-premetric-spaces public +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP public open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces public open import metric-spaces.limits-of-functions-metric-spaces public open import metric-spaces.limits-of-sequences-metric-spaces public diff --git a/src/metric-spaces/convergent-cauchy-approximations-metric-spaces-WIP.lagda.md b/src/metric-spaces/convergent-cauchy-approximations-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..a08f84aa68 --- /dev/null +++ b/src/metric-spaces/convergent-cauchy-approximations-metric-spaces-WIP.lagda.md @@ -0,0 +1,142 @@ +# Convergent Cauchy approximations in metric spaces (WIP) + +```agda +module metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces-WIP +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +``` + +
+ +## Idea + +A [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) +in a [metric space](metric-spaces.metric-spaces.md) is +{{#concept "convergent" Disambiguation="Cauchy approximation in a metric space" agda=is-convergent-cauchy-approximation-Metric-Space-WIP}} +if it has a +[limit](metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP.md). +Because limits of Cauchy approximations in metric spaces are unique, this is a +[subtype](foundation.subtypes.md) of the type of Cauchy approximations. + +## Definitions + +### The property of being a convergent Cauchy approximation in a metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + (f : cauchy-approximation-Metric-Space-WIP A) + where + + is-convergent-cauchy-approximation-Metric-Space-WIP : UU (l1 ⊔ l2) + is-convergent-cauchy-approximation-Metric-Space-WIP = + Σ ( type-Metric-Space-WIP A) + ( is-limit-cauchy-approximation-Metric-Space-WIP A f) + + limit-is-convergent-cauchy-approximation-Metric-Space-WIP : + is-convergent-cauchy-approximation-Metric-Space-WIP → + type-Metric-Space-WIP A + limit-is-convergent-cauchy-approximation-Metric-Space-WIP = pr1 + + is-limit-limit-is-convergent-cauchy-approximation-Metric-Space-WIP : + (x : is-convergent-cauchy-approximation-Metric-Space-WIP) → + is-limit-cauchy-approximation-Metric-Space-WIP + ( A) + ( f) + ( limit-is-convergent-cauchy-approximation-Metric-Space-WIP x) + is-limit-limit-is-convergent-cauchy-approximation-Metric-Space-WIP = pr2 + + abstract + is-prop-is-convergent-cauchy-approximation-Metric-Space-WIP : + is-prop is-convergent-cauchy-approximation-Metric-Space-WIP + is-prop-is-convergent-cauchy-approximation-Metric-Space-WIP = + is-prop-all-elements-equal + ( λ x y → + eq-type-subtype + ( is-limit-cauchy-approximation-prop-Metric-Space-WIP A f) + ( all-eq-is-limit-cauchy-approximation-Metric-Space-WIP + ( A) + ( f) + ( limit-is-convergent-cauchy-approximation-Metric-Space-WIP x) + ( limit-is-convergent-cauchy-approximation-Metric-Space-WIP y) + ( is-limit-limit-is-convergent-cauchy-approximation-Metric-Space-WIP + x) + ( is-limit-limit-is-convergent-cauchy-approximation-Metric-Space-WIP + y))) + + is-convergent-prop-cauchy-approximation-Metric-Space-WIP : Prop (l1 ⊔ l2) + is-convergent-prop-cauchy-approximation-Metric-Space-WIP = + is-convergent-cauchy-approximation-Metric-Space-WIP , + is-prop-is-convergent-cauchy-approximation-Metric-Space-WIP +``` + +### The type of convergent Cauchy approximations in a metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + convergent-cauchy-approximation-Metric-Space-WIP : UU (l1 ⊔ l2) + convergent-cauchy-approximation-Metric-Space-WIP = + type-subtype (is-convergent-prop-cauchy-approximation-Metric-Space-WIP A) +``` + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + (f : convergent-cauchy-approximation-Metric-Space-WIP A) + where + + approximation-convergent-cauchy-approximation-Metric-Space-WIP : + cauchy-approximation-Metric-Space-WIP A + approximation-convergent-cauchy-approximation-Metric-Space-WIP = pr1 f + + map-convergent-cauchy-approximation-Metric-Space-WIP : + ℚ⁺ → type-Metric-Space-WIP A + map-convergent-cauchy-approximation-Metric-Space-WIP = + map-cauchy-approximation-Metric-Space-WIP + A + approximation-convergent-cauchy-approximation-Metric-Space-WIP + + is-cauchy-approximation-map-convergent-cauchy-approximation-Metric-Space-WIP : + (ε δ : ℚ⁺) → + neighborhood-Metric-Space-WIP + ( A) + ( ε +ℚ⁺ δ) + ( map-convergent-cauchy-approximation-Metric-Space-WIP ε) + ( map-convergent-cauchy-approximation-Metric-Space-WIP δ) + is-cauchy-approximation-map-convergent-cauchy-approximation-Metric-Space-WIP = + is-cauchy-approximation-map-cauchy-approximation-Metric-Space-WIP + A + approximation-convergent-cauchy-approximation-Metric-Space-WIP + + limit-convergent-cauchy-approximation-Metric-Space-WIP : + type-Metric-Space-WIP A + limit-convergent-cauchy-approximation-Metric-Space-WIP = pr1 (pr2 f) + + is-limit-limit-convergent-cauchy-approximation-Metric-Space-WIP : + (ε δ : ℚ⁺) → + neighborhood-Metric-Space-WIP + ( A) + ( ε +ℚ⁺ δ) + ( map-convergent-cauchy-approximation-Metric-Space-WIP ε) + ( limit-convergent-cauchy-approximation-Metric-Space-WIP) + is-limit-limit-convergent-cauchy-approximation-Metric-Space-WIP = pr2 (pr2 f) +``` diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..d98457829f --- /dev/null +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md @@ -0,0 +1,144 @@ +# Limits of Cauchy approximations in metric spaces (WIP) + +```agda +module metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +``` + +
+ +## Idea + +A [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) +`f : ℚ⁺ → A` in a [metric space](metric-spaces.metric-spaces.md) `A` has a +{{#concept "limit" Disambiguation="of a Cauchy approximation in a metric space Agda=is-limit-cauchy-approximation-Metric-Space-WIP}} +`x : A` if `f ε` is near `x` for small `ε : ℚ⁺`; more precisely, if `f ε` is in +a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) of `x` for all +`ε δ : ℚ⁺`. + +## Definitions + +### The property of having a limit in a metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + (f : cauchy-approximation-Metric-Space-WIP A) + where + + is-limit-cauchy-approximation-prop-Metric-Space-WIP : + type-Metric-Space-WIP A → Prop l2 + is-limit-cauchy-approximation-prop-Metric-Space-WIP lim = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( ℚ⁺) + ( λ δ → + neighborhood-prop-Metric-Space-WIP + ( A) + ( ε +ℚ⁺ δ) + ( map-cauchy-approximation-Metric-Space-WIP A f ε) + ( lim))) + + is-limit-cauchy-approximation-Metric-Space-WIP : + type-Metric-Space-WIP A → UU l2 + is-limit-cauchy-approximation-Metric-Space-WIP = + type-Prop ∘ is-limit-cauchy-approximation-prop-Metric-Space-WIP +``` + +## Properties + +### Limits in a metric space are unique + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + (f : cauchy-approximation-Metric-Space-WIP A) + (x y : type-Metric-Space-WIP A) + where + + all-sim-is-limit-cauchy-approximation-Metric-Space-WIP : + is-limit-cauchy-approximation-Metric-Space-WIP A f x → + is-limit-cauchy-approximation-Metric-Space-WIP A f y → + sim-Metric-Space-WIP A x y + all-sim-is-limit-cauchy-approximation-Metric-Space-WIP lim-x lim-y d = + let + (ε , δ , ε+δ=d) = split-ℚ⁺ d + θ = mediant-zero-min-ℚ⁺ ε δ + θ<ε = le-left-mediant-zero-min-ℚ⁺ ε δ + θ<δ = le-right-mediant-zero-min-ℚ⁺ ε δ + ε' = le-diff-ℚ⁺ θ ε θ<ε + δ' = le-diff-ℚ⁺ θ δ θ<δ + fθ = map-cauchy-approximation-Metric-Space-WIP A f θ + + Nεx : neighborhood-Metric-Space-WIP A ε fθ x + Nεx = + tr + ( is-upper-bound-dist-Metric-Space-WIP A fθ x) + ( right-diff-law-add-ℚ⁺ θ ε θ<ε) + ( lim-x θ ε') + + Nδy : neighborhood-Metric-Space-WIP A δ fθ y + Nδy = + tr + ( is-upper-bound-dist-Metric-Space-WIP A fθ y) + ( right-diff-law-add-ℚ⁺ θ δ θ<δ) + ( lim-y θ δ') + + Nxy : neighborhood-Metric-Space-WIP A (ε +ℚ⁺ δ) x y + Nxy = + triangular-neighborhood-Metric-Space-WIP + ( A) + ( x) + ( fθ) + ( y) + ( ε) + ( δ) + ( Nδy) + ( symmetric-neighborhood-Metric-Space-WIP A ε fθ x Nεx) + in + tr + ( is-upper-bound-dist-Metric-Space-WIP A x y) + ( ε+δ=d) + ( Nxy) + + all-eq-is-limit-cauchy-approximation-Metric-Space-WIP : + is-limit-cauchy-approximation-Metric-Space-WIP A f x → + is-limit-cauchy-approximation-Metric-Space-WIP A f y → + x = y + all-eq-is-limit-cauchy-approximation-Metric-Space-WIP lim-x lim-y = + eq-sim-Metric-Space-WIP + ( A) + ( x) + ( y) + ( all-sim-is-limit-cauchy-approximation-Metric-Space-WIP lim-x lim-y) +``` + +## See also + +- [convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP.md): + the type of Cauchy approximations with a limit. + +## References + +Our definition of limit of Cauchy approximation follows Definition 11.2.10 of +{{#cite UF13}}. + +{{#bibliography}} From 7709ca254d53a88e2586983c535d2a4c33cabcf4 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 27 Jun 2025 17:52:15 +0200 Subject: [PATCH 37/42] WIP complete metric spaces --- src/metric-spaces.lagda.md | 1 + .../complete-metric-spaces-WIP.lagda.md | 172 ++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 src/metric-spaces/complete-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index fbd08c9c22..59b12c4224 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -54,6 +54,7 @@ open import metric-spaces.cauchy-sequences-complete-metric-spaces public open import metric-spaces.cauchy-sequences-metric-spaces public open import metric-spaces.closed-premetric-structures public open import metric-spaces.complete-metric-spaces public +open import metric-spaces.complete-metric-spaces-WIP public open import metric-spaces.continuous-functions-metric-spaces public open import metric-spaces.continuous-functions-metric-spaces-WIP public open import metric-spaces.continuous-functions-premetric-spaces public diff --git a/src/metric-spaces/complete-metric-spaces-WIP.lagda.md b/src/metric-spaces/complete-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..8084e84bc6 --- /dev/null +++ b/src/metric-spaces/complete-metric-spaces-WIP.lagda.md @@ -0,0 +1,172 @@ +# Complete metric spaces (WIP) + +```agda +module metric-spaces.complete-metric-spaces-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.identity-types +open import foundation.propositions +open import foundation.retractions +open import foundation.sections +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces-WIP +open import metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +``` + +
+ +## Idea + +A [metric space](metric-spaces.metric-spaces-WIP.md) is +{{#concept "complete" Disambiguation="metric space" Agda=is-complete-Metric-Space-WIP WD="complete metric space" WDID=Q848569}} +if all its +[Cauchy approximations](metric-spaces.cauchy-approximations-metric-spaces-WIP.md) +are +[convergent](metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP.md). + +## Definitions + +### The property of being a complete metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + is-complete-prop-Metric-Space-WIP : Prop (l1 ⊔ l2) + is-complete-prop-Metric-Space-WIP = + Π-Prop + ( cauchy-approximation-Metric-Space-WIP A) + ( is-convergent-prop-cauchy-approximation-Metric-Space-WIP A) + + is-complete-Metric-Space-WIP : UU (l1 ⊔ l2) + is-complete-Metric-Space-WIP = type-Prop is-complete-prop-Metric-Space-WIP + + is-prop-is-complete-Metric-Space-WIP : is-prop is-complete-Metric-Space-WIP + is-prop-is-complete-Metric-Space-WIP = + is-prop-type-Prop is-complete-prop-Metric-Space-WIP +``` + +### The type of complete metric spaces + +```agda +module _ + (l1 l2 : Level) + where + + Complete-Metric-Space-WIP : UU (lsuc l1 ⊔ lsuc l2) + Complete-Metric-Space-WIP = + type-subtype (is-complete-prop-Metric-Space-WIP {l1} {l2}) +``` + +```agda +module _ + {l1 l2 : Level} + (A : Complete-Metric-Space-WIP l1 l2) + where + + metric-space-Complete-Metric-Space-WIP : Metric-Space-WIP l1 l2 + metric-space-Complete-Metric-Space-WIP = pr1 A + + type-Complete-Metric-Space-WIP : UU l1 + type-Complete-Metric-Space-WIP = + type-Metric-Space-WIP metric-space-Complete-Metric-Space-WIP + + is-complete-metric-space-Complete-Metric-Space-WIP : + is-complete-Metric-Space-WIP metric-space-Complete-Metric-Space-WIP + is-complete-metric-space-Complete-Metric-Space-WIP = pr2 A +``` + +### The equivalence between Cauchy approximations and convergent Cauchy approximations in a complete metric space + +```agda +module _ + {l1 l2 : Level} + (A : Complete-Metric-Space-WIP l1 l2) + where + + convergent-cauchy-approximation-Complete-Metric-Space-WIP : + cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A) → + convergent-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A) + convergent-cauchy-approximation-Complete-Metric-Space-WIP u = + ( u , is-complete-metric-space-Complete-Metric-Space-WIP A u) + + is-section-convergent-cauchy-approximation-Complete-Metric-Space-WIP : + is-section + ( convergent-cauchy-approximation-Complete-Metric-Space-WIP) + ( inclusion-subtype + ( is-convergent-prop-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A))) + is-section-convergent-cauchy-approximation-Complete-Metric-Space-WIP u = + eq-type-subtype + ( is-convergent-prop-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A)) + ( refl) + + is-retraction-convergent-cauchy-approximation-Metric-Space-WIP : + is-retraction + ( convergent-cauchy-approximation-Complete-Metric-Space-WIP) + ( inclusion-subtype + ( is-convergent-prop-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A))) + is-retraction-convergent-cauchy-approximation-Metric-Space-WIP u = refl + + is-equiv-convergent-cauchy-approximation-Complete-Metric-Space-WIP : + is-equiv convergent-cauchy-approximation-Complete-Metric-Space-WIP + pr1 is-equiv-convergent-cauchy-approximation-Complete-Metric-Space-WIP = + ( inclusion-subtype + ( is-convergent-prop-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A))) , + ( is-section-convergent-cauchy-approximation-Complete-Metric-Space-WIP) + pr2 is-equiv-convergent-cauchy-approximation-Complete-Metric-Space-WIP = + ( inclusion-subtype + ( is-convergent-prop-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A))) , + ( is-retraction-convergent-cauchy-approximation-Metric-Space-WIP) +``` + +### The limit of a Cauchy approximation in a complete metric space + +```agda +module _ + { l1 l2 : Level} + ( A : Complete-Metric-Space-WIP l1 l2) + ( u : cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A)) + where + + limit-cauchy-approximation-Complete-Metric-Space-WIP : + type-Complete-Metric-Space-WIP A + limit-cauchy-approximation-Complete-Metric-Space-WIP = + limit-convergent-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A) + ( convergent-cauchy-approximation-Complete-Metric-Space-WIP A u) + + is-limit-limit-cauchy-approximation-Complete-Metric-Space-WIP : + is-limit-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A) + ( u) + ( limit-cauchy-approximation-Complete-Metric-Space-WIP) + is-limit-limit-cauchy-approximation-Complete-Metric-Space-WIP = + is-limit-limit-convergent-cauchy-approximation-Metric-Space-WIP + ( metric-space-Complete-Metric-Space-WIP A) + ( convergent-cauchy-approximation-Complete-Metric-Space-WIP A u) +``` + +## External links + +- [Complete metric space](https://en.wikipedia.org/wiki/Complete_metric_space) + at Wikipedia From a2f81ad41abdf32f54ea2f763b8a3845cc437ccb Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 27 Jun 2025 18:34:57 +0200 Subject: [PATCH 38/42] WIP dependent products of metric spaces --- src/metric-spaces.lagda.md | 1 + ...endent-products-metric-spaces-WIP.lagda.md | 262 ++++++++++++++++++ src/metric-spaces/metric-spaces-WIP.lagda.md | 7 + 3 files changed, 270 insertions(+) create mode 100644 src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 59b12c4224..425fb8bc56 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -62,6 +62,7 @@ open import metric-spaces.convergent-cauchy-approximations-metric-spaces public open import metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP public open import metric-spaces.convergent-sequences-metric-spaces public open import metric-spaces.dependent-products-metric-spaces public +open import metric-spaces.dependent-products-metric-spaces-WIP public open import metric-spaces.discrete-premetric-structures public open import metric-spaces.elements-at-bounded-distance-metric-spaces public open import metric-spaces.equality-of-metric-spaces public diff --git a/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md b/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..a8ec42aa8c --- /dev/null +++ b/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md @@ -0,0 +1,262 @@ +# Dependent products of metric spaces (WIP) + +```agda +module metric-spaces.dependent-products-metric-spaces-WIP where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.evaluation-functions +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.propositions +open import foundation.sets +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces-WIP +open import metric-spaces.complete-metric-spaces-WIP +open import metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.extensional-pseudometric-spaces-WIP +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.short-functions-metric-spaces-WIP +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +A family of [metric spaces](metric-spaces.metric-spaces.md) over a type produces +a {{#concept "product metric space" Agda=Π-Metric-Space-WIP}} on the type of +dependent functions into the carrier types of the family. Two functions `f` and +`g` are in a [`d`-neighborhood](metric-spaces.premetric-structures.md) in the +product structure if this holds for all the evaluations `f x` and `g x`. I.e +this is the premetric such that +[upper bounds](metric-spaces.premetric-structures.md) on the distance between +`f` and `g` are bounded below by the supremum of the distances between each +`f x` and `g x`. The evaluation functions from the product metric space to each +projected metric space are +[short maps](metric-spaces.short-functions-metric-spaces.md). + +## Definitions + +### Product of metric spaces + +```agda +module _ + {l l1 l2 : Level} (A : UU l) (P : A → Metric-Space-WIP l1 l2) + where + + type-Π-Metric-Space-WIP : UU (l ⊔ l1) + type-Π-Metric-Space-WIP = (x : A) → type-Metric-Space-WIP (P x) + + neighborhood-prop-Π-Metric-Space-WIP : + Rational-Neighborhood-Relation (l ⊔ l2) type-Π-Metric-Space-WIP + neighborhood-prop-Π-Metric-Space-WIP d f g = + Π-Prop A (λ x → neighborhood-prop-Metric-Space-WIP (P x) d (f x) (g x)) + + is-reflexive-neighborhood-Π-Metric-Space-WIP : + is-reflexive-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space-WIP + is-reflexive-neighborhood-Π-Metric-Space-WIP d f a = + refl-neighborhood-Metric-Space-WIP (P a) d (f a) + + is-symmetric-neighborhood-Π-Metric-Space-WIP : + is-symmetric-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space-WIP + is-symmetric-neighborhood-Π-Metric-Space-WIP d f g H a = + symmetric-neighborhood-Metric-Space-WIP (P a) d (f a) (g a) (H a) + + is-triangular-neighborhood-Π-Metric-Space-WIP : + is-triangular-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space-WIP + is-triangular-neighborhood-Π-Metric-Space-WIP f g h d₁ d₂ H K a = + triangular-neighborhood-Metric-Space-WIP + ( P a) + ( f a) + ( g a) + ( h a) + ( d₁) + ( d₂) + ( H a) + ( K a) + + is-saturated-neighborhood-Π-Metric-Space-WIP : + is-saturated-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space-WIP + is-saturated-neighborhood-Π-Metric-Space-WIP ε x y H a = + saturated-neighborhood-Metric-Space-WIP + ( P a) + ( ε) + ( x a) + ( y a) + ( λ d → H d a) + + pseudometric-space-Π-Metric-Space : Pseudometric-Space-WIP (l ⊔ l1) (l ⊔ l2) + pseudometric-space-Π-Metric-Space = + ( type-Π-Metric-Space-WIP) , + ( neighborhood-prop-Π-Metric-Space-WIP , + is-reflexive-neighborhood-Π-Metric-Space-WIP , + is-symmetric-neighborhood-Π-Metric-Space-WIP , + is-triangular-neighborhood-Π-Metric-Space-WIP , + is-saturated-neighborhood-Π-Metric-Space-WIP) + + is-extensional-pseudometric-space-Π-Metric-Space : + is-extensional-Pseudometric-Space-WIP + pseudometric-space-Π-Metric-Space + is-extensional-pseudometric-space-Π-Metric-Space = + is-extensional-is-tight-Pseudometric-Space + ( pseudometric-space-Π-Metric-Space) + ( λ f g H → + eq-htpy + ( λ a → + eq-sim-Metric-Space-WIP + ( P a) + ( f a) + ( g a) + ( λ d → H d a))) + + Π-Metric-Space-WIP : Metric-Space-WIP (l ⊔ l1) (l ⊔ l2) + Π-Metric-Space-WIP = + pseudometric-space-Π-Metric-Space , + is-extensional-pseudometric-space-Π-Metric-Space +``` + +## Properties + +### The evaluation maps on a product metric space are short + +```agda +module _ + {l l1 l2 : Level} (A : UU l) (P : A → Metric-Space-WIP l1 l2) (a : A) + where + + is-short-ev-Π-Metric-Space-WIP : + is-short-function-Metric-Space-WIP + ( Π-Metric-Space-WIP A P) + ( P a) + ( ev a) + is-short-ev-Π-Metric-Space-WIP ε x y H = H a + + short-ev-Π-Metric-Space-WIP : + short-function-Metric-Space-WIP + ( Π-Metric-Space-WIP A P) + ( P a) + short-ev-Π-Metric-Space-WIP = (ev a) , (is-short-ev-Π-Metric-Space-WIP) +``` + +### The partial applications of a Cauchy approximation in a dependent product metric space are Cauchy approximations + +```agda +module _ + {l l1 l2 : Level} (A : UU l) (P : A → Metric-Space-WIP l1 l2) + (f : cauchy-approximation-Metric-Space-WIP (Π-Metric-Space-WIP A P)) + where + + ev-cauchy-approximation-Π-Metric-Space-WIP : + (x : A) → cauchy-approximation-Metric-Space-WIP (P x) + ev-cauchy-approximation-Π-Metric-Space-WIP x = + map-short-function-cauchy-approximation-Metric-Space-WIP + ( Π-Metric-Space-WIP A P) + ( P x) + ( short-ev-Π-Metric-Space-WIP A P x) + ( f) +``` + +### A dependent map is the limit of a Cauchy approximation in a dependent product of metric spaces if and only if it is the pointwise limit of its partial applications + +```agda +module _ + {l l1 l2 : Level} (A : UU l) (P : A → Metric-Space-WIP l1 l2) + (f : cauchy-approximation-Metric-Space-WIP (Π-Metric-Space-WIP A P)) + (g : type-Π-Metric-Space-WIP A P) + where + + is-pointwise-limit-is-limit-cauchy-approximation-Π-Metric-Space-WIP : + is-limit-cauchy-approximation-Metric-Space-WIP + ( Π-Metric-Space-WIP A P) + ( f) + ( g) → + (x : A) → + is-limit-cauchy-approximation-Metric-Space-WIP + ( P x) + ( ev-cauchy-approximation-Π-Metric-Space-WIP A P f x) + ( g x) + is-pointwise-limit-is-limit-cauchy-approximation-Π-Metric-Space-WIP L x ε δ = + L ε δ x + + is-limit-is-pointwise-limit-cauchy-approximation-Π-Metric-Space-WIP : + ( (x : A) → + is-limit-cauchy-approximation-Metric-Space-WIP + ( P x) + ( ev-cauchy-approximation-Π-Metric-Space-WIP A P f x) + ( g x)) → + is-limit-cauchy-approximation-Metric-Space-WIP + ( Π-Metric-Space-WIP A P) + ( f) + ( g) + is-limit-is-pointwise-limit-cauchy-approximation-Π-Metric-Space-WIP L ε δ x = + L x ε δ +``` + +### A product of complete metric spaces is complete + +```agda +module _ + {l l1 l2 : Level} (A : UU l) (P : A → Metric-Space-WIP l1 l2) + (Π-complete : (x : A) → is-complete-Metric-Space-WIP (P x)) + where + + limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP : + cauchy-approximation-Metric-Space-WIP (Π-Metric-Space-WIP A P) → + type-Π-Metric-Space-WIP A P + limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP u x = + limit-cauchy-approximation-Complete-Metric-Space-WIP + ( P x , Π-complete x) + ( ev-cauchy-approximation-Π-Metric-Space-WIP A P u x) + + is-limit-limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP : + (u : cauchy-approximation-Metric-Space-WIP (Π-Metric-Space-WIP A P)) → + is-limit-cauchy-approximation-Metric-Space-WIP + ( Π-Metric-Space-WIP A P) + ( u) + ( limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP u) + is-limit-limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP u ε δ x = + is-limit-limit-cauchy-approximation-Complete-Metric-Space-WIP + ( P x , Π-complete x) + ( ev-cauchy-approximation-Π-Metric-Space-WIP A P u x) + ( ε) + ( δ) + + is-complete-Π-Metric-Space-WIP : + is-complete-Metric-Space-WIP (Π-Metric-Space-WIP A P) + is-complete-Π-Metric-Space-WIP u = + limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP u , + is-limit-limit-cauchy-approximation-Π-is-complete-Metric-Space-WIP u +``` + +### The complete product of complete metric spaces + +```agda +module _ + {l l1 l2 : Level} (A : UU l) (C : A → Complete-Metric-Space-WIP l1 l2) + where + + Π-Complete-Metric-Space-WIP : Complete-Metric-Space-WIP (l ⊔ l1) (l ⊔ l2) + pr1 Π-Complete-Metric-Space-WIP = + Π-Metric-Space-WIP A (metric-space-Complete-Metric-Space-WIP ∘ C) + pr2 Π-Complete-Metric-Space-WIP = + is-complete-Π-Metric-Space-WIP + ( A) + ( metric-space-Complete-Metric-Space-WIP ∘ C) + ( is-complete-metric-space-Complete-Metric-Space-WIP ∘ C) +``` diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index ce8be79f3b..9ccaaed99a 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -187,6 +187,13 @@ module _ neighborhood-Metric-Space-WIP d₂ x y monotonic-neighborhood-Metric-Space-WIP = monotonic-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP + + saturated-neighborhood-Metric-Space-WIP : + (ε : ℚ⁺) (x y : type-Metric-Space-WIP) → + ((δ : ℚ⁺) → neighborhood-Metric-Space-WIP (ε +ℚ⁺ δ) x y) → + neighborhood-Metric-Space-WIP ε x y + saturated-neighborhood-Metric-Space-WIP = + saturated-neighborhood-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP ``` ### Similarity of elements in a metric space From 69621ff2687d957d760b6a6c4aa26c85373568d8 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 28 Jun 2025 02:53:50 +0200 Subject: [PATCH 39/42] WIP metric space of rational numbers --- src/metric-spaces.lagda.md | 1 + ...ric-space-of-rational-numbers-WIP.lagda.md | 453 ++++++++++++++++++ 2 files changed, 454 insertions(+) create mode 100644 src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 425fb8bc56..ca660eb4a5 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -93,6 +93,7 @@ open import metric-spaces.metric-space-of-functions-metric-spaces public open import metric-spaces.metric-space-of-isometries-metric-spaces public open import metric-spaces.metric-space-of-lipschitz-functions-metric-spaces public open import metric-spaces.metric-space-of-rational-numbers public +open import metric-spaces.metric-space-of-rational-numbers-WIP public open import metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods public open import metric-spaces.metric-space-of-short-functions-metric-spaces public open import metric-spaces.metric-spaces public diff --git a/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md new file mode 100644 index 0000000000..7a60f1a0d8 --- /dev/null +++ b/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md @@ -0,0 +1,453 @@ +# The standard metric space of the rational numbers (WIP) + +```agda +{-# OPTIONS --lossy-unification #-} + +module metric-spaces.metric-space-of-rational-numbers-WIP where +``` + +
Imports + +```agda +open import elementary-number-theory.absolute-value-rational-numbers +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.distance-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.cartesian-product-types +open import foundation.dependent-pair-types +open import foundation.diagonal-maps-cartesian-products-of-types +open import foundation.empty-types +open import foundation.equivalences +open import foundation.function-types +open import foundation.functoriality-cartesian-product-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces-WIP +open import metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.extensional-pseudometric-spaces-WIP +open import metric-spaces.isometries-metric-spaces-WIP +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.short-functions-metric-spaces-WIP +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +[Inequality](elementary-number-theory.inequality-rational-numbers.md) on the +[rational numbers](elementary-number-theory.rational-numbers.md) induces a +[premetric](metric-spaces.premetric-structures.md) on `ℚ` where `x y : ℚ` are in +a `d`-neighborhood when `y ≤ x + d` and `x ≤ y + d`, i.e. upper bounds on the +distance between `x` and `y` are upper bounds of both `y - x` and `x - y`. This +is a [metric structure](metric-spaces.metric-structures.md) on `ℚ` that defines +the +{{#concept "standard metric space of rational numbers" Agda=metric-space-ℚ}}. + +## Definitions + +### The standard saturated saturated neighborhood relation on the rational numbers + +```agda +lower-neighborhood-prop-ℚ : (d : ℚ⁺) (x y : ℚ) → Prop lzero +lower-neighborhood-prop-ℚ d x y = + leq-ℚ-Prop y (x +ℚ (rational-ℚ⁺ d)) + +lower-neighborhood-ℚ : (d : ℚ⁺) (x y : ℚ) → UU lzero +lower-neighborhood-ℚ d x y = type-Prop (lower-neighborhood-prop-ℚ d x y) + +is-prop-lower-neighborhood-ℚ : + (d : ℚ⁺) (x y : ℚ) → is-prop (lower-neighborhood-ℚ d x y) +is-prop-lower-neighborhood-ℚ d x y = + is-prop-type-Prop (lower-neighborhood-prop-ℚ d x y) + +neighborhood-prop-ℚ : Rational-Neighborhood-Relation lzero ℚ +neighborhood-prop-ℚ d x y = + product-Prop + ( lower-neighborhood-prop-ℚ d x y) + ( lower-neighborhood-prop-ℚ d y x) + +neighborhood-ℚ : (d : ℚ⁺) (x y : ℚ) → UU lzero +neighborhood-ℚ d x y = type-Prop (neighborhood-prop-ℚ d x y) +``` + +## Properties + +### The standard premetric on the rational numbers is a metric + +```agda +is-reflexive-neighborhood-ℚ : + is-reflexive-Rational-Neighborhood-Relation neighborhood-prop-ℚ +is-reflexive-neighborhood-ℚ d x = + diagonal-product + ( leq-ℚ x (x +ℚ (rational-ℚ⁺ d))) + ( leq-le-ℚ {x} {x +ℚ (rational-ℚ⁺ d)} (le-right-add-rational-ℚ⁺ x d)) + +is-symmetric-neighborhood-ℚ : + is-symmetric-Rational-Neighborhood-Relation neighborhood-prop-ℚ +is-symmetric-neighborhood-ℚ d x y (H , K) = (K , H) + +is-triangular-neighborhood-ℚ : + is-triangular-Rational-Neighborhood-Relation neighborhood-prop-ℚ +pr1 (is-triangular-neighborhood-ℚ x y z d₁ d₂ Hyz Hxy) = + tr + ( leq-ℚ z) + ( associative-add-ℚ x (rational-ℚ⁺ d₁) (rational-ℚ⁺ d₂)) + ( transitive-leq-ℚ + ( z) + ( y +ℚ ( rational-ℚ⁺ d₂)) + ( x +ℚ (rational-ℚ⁺ d₁) +ℚ (rational-ℚ⁺ d₂)) + ( preserves-leq-left-add-ℚ + ( rational-ℚ⁺ d₂) + ( y) + ( x +ℚ (rational-ℚ⁺ d₁)) + ( pr1 Hxy)) + ( pr1 Hyz)) +pr2 (is-triangular-neighborhood-ℚ x y z d₁ d₂ Hyz Hxy) = + tr + ( leq-ℚ x) + ( ap (z +ℚ_) (commutative-add-ℚ (rational-ℚ⁺ d₂) (rational-ℚ⁺ d₁))) + ( tr + ( leq-ℚ x) + ( associative-add-ℚ z (rational-ℚ⁺ d₂) (rational-ℚ⁺ d₁)) + ( transitive-leq-ℚ + ( x) + ( y +ℚ (rational-ℚ⁺ d₁)) + ( z +ℚ (rational-ℚ⁺ d₂) +ℚ (rational-ℚ⁺ d₁)) + ( ( preserves-leq-left-add-ℚ + ( rational-ℚ⁺ d₁) + ( y) + ( z +ℚ (rational-ℚ⁺ d₂)) + ( pr2 Hyz))) + ( pr2 Hxy))) + +is-saturated-neighborhood-ℚ : + is-saturated-Rational-Neighborhood-Relation neighborhood-prop-ℚ +is-saturated-neighborhood-ℚ ε x y H = + map-inv-equiv + ( equiv-leq-leq-add-positive-ℚ y (x +ℚ rational-ℚ⁺ ε)) + ( λ δ → + inv-tr + ( leq-ℚ y) + ( associative-add-ℚ x (rational-ℚ⁺ ε) (rational-ℚ⁺ δ)) + ( pr1 (H δ))) , + map-inv-equiv + ( equiv-leq-leq-add-positive-ℚ x (y +ℚ rational-ℚ⁺ ε)) + ( λ δ → + inv-tr + ( leq-ℚ x) + ( associative-add-ℚ y (rational-ℚ⁺ ε) (rational-ℚ⁺ δ)) + ( pr2 (H δ))) + +pseudometric-space-ℚ : Pseudometric-Space-WIP lzero lzero +pr1 pseudometric-space-ℚ = ℚ +pr2 pseudometric-space-ℚ = + neighborhood-prop-ℚ , + is-reflexive-neighborhood-ℚ , + is-symmetric-neighborhood-ℚ , + is-triangular-neighborhood-ℚ , + is-saturated-neighborhood-ℚ + +is-tight-pseudometric-space-ℚ : + is-tight-Pseudometric-Space-WIP pseudometric-space-ℚ +is-tight-pseudometric-space-ℚ x y H = + antisymmetric-leq-ℚ + ( x) + ( y) + ( map-inv-equiv (equiv-leq-leq-add-positive-ℚ x y) (pr2 ∘ H)) + ( map-inv-equiv (equiv-leq-leq-add-positive-ℚ y x) (pr1 ∘ H)) + +is-extensional-pseudometric-space-ℚ : + is-extensional-Pseudometric-Space-WIP pseudometric-space-ℚ +is-extensional-pseudometric-space-ℚ = + is-extensional-is-tight-Pseudometric-Space + pseudometric-space-ℚ + is-tight-pseudometric-space-ℚ +``` + +### The standard metric space of rational numbers + +```agda +metric-space-ℚ : Metric-Space-WIP lzero lzero +metric-space-ℚ = + pseudometric-space-ℚ , + is-extensional-pseudometric-space-ℚ +``` + +## Properties + +### Relationship to the distance on rational numbers + +```agda +abstract + leq-dist-neighborhood-ℚ : + (ε : ℚ⁺) (p q : ℚ) → + neighborhood-ℚ ε p q → + leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) + leq-dist-neighborhood-ℚ ε⁺@(ε , _) p q (H , K) = + leq-dist-leq-diff-ℚ + ( p) + ( q) + ( ε) + ( swap-right-diff-leq-ℚ p ε q (leq-transpose-right-add-ℚ p q ε K)) + ( swap-right-diff-leq-ℚ q ε p (leq-transpose-right-add-ℚ q p ε H)) + + neighborhood-leq-dist-ℚ : + (ε : ℚ⁺) (p q : ℚ) → + leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) → + neighborhood-ℚ ε p q + neighborhood-leq-dist-ℚ ε⁺@(ε , _) p q |p-q|≤ε = + ( leq-transpose-left-diff-ℚ + ( q) + ( ε) + ( p) + ( swap-right-diff-leq-ℚ + ( q) + ( p) + ( ε) + ( transitive-leq-ℚ + ( q -ℚ p) + ( rational-dist-ℚ p q) + ( ε) + ( |p-q|≤ε) + ( leq-reversed-diff-dist-ℚ p q)))) , + ( leq-transpose-left-diff-ℚ + ( p) + ( ε) + ( q) + ( swap-right-diff-leq-ℚ + ( p) + ( q) + ( ε) + ( transitive-leq-ℚ + ( p -ℚ q) + ( rational-dist-ℚ p q) + ( ε) + ( |p-q|≤ε) + ( leq-diff-dist-ℚ p q)))) + +leq-dist-iff-neighborhood-ℚ : + (ε : ℚ⁺) (p q : ℚ) → + leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) ↔ + neighborhood-ℚ ε p q +pr1 (leq-dist-iff-neighborhood-ℚ ε p q) = neighborhood-leq-dist-ℚ ε p q +pr2 (leq-dist-iff-neighborhood-ℚ ε p q) = leq-dist-neighborhood-ℚ ε p q +``` + +### Addition of rational numbers is an isometry + +```agda +module _ + (x u v : ℚ) (d : ℚ⁺) + where + + -- preserves-lower-neighborhood-add-ℚ : + -- lower-neighborhood-ℚ d u v → + -- lower-neighborhood-ℚ d (x +ℚ u) (x +ℚ v) + -- preserves-lower-neighborhood-add-ℚ H = + -- inv-tr + -- ( leq-ℚ (x +ℚ v)) + -- ( associative-add-ℚ x u (rational-ℚ⁺ d)) + -- ( preserves-leq-right-add-ℚ + -- ( x) + -- ( v) + -- ( u +ℚ rational-ℚ⁺ d) + -- ( H)) + + -- reflects-lower-neighborhood-add-ℚ : + -- lower-neighborhood-ℚ d (x +ℚ u) (x +ℚ v) → + -- lower-neighborhood-ℚ d u v + -- reflects-lower-neighborhood-add-ℚ = + -- ( reflects-leq-right-add-ℚ x v (u +ℚ rational-ℚ⁺ d)) ∘ + -- ( tr (leq-ℚ (x +ℚ v)) (associative-add-ℚ x u (rational-ℚ⁺ d))) +``` + +```agda +module _ + (x : ℚ) + where + + -- is-isometry-add-ℚ : + -- is-isometry-Metric-Space-WIP + -- ( metric-space-ℚ) + -- ( metric-space-ℚ) + -- ( add-ℚ x) + -- is-isometry-add-ℚ d y z = + -- pair + -- ( map-product + -- ( preserves-lower-neighborhood-add-ℚ x y z d) + -- ( preserves-lower-neighborhood-add-ℚ x z y d)) + -- ( map-product + -- ( reflects-lower-neighborhood-add-ℚ x y z d) + -- ( reflects-lower-neighborhood-add-ℚ x z y d)) + + -- is-isometry-add-ℚ' : + -- is-isometry-Metric-Space-WIP + -- ( metric-space-ℚ) + -- ( metric-space-ℚ) + -- ( add-ℚ' x) + -- is-isometry-add-ℚ' d y z = + -- binary-tr + -- ( λ u v → neighborhood-ℚ d y z ↔ neighborhood-ℚ d u v) + -- ( commutative-add-ℚ x y) + -- ( commutative-add-ℚ x z) + -- ( is-isometry-add-ℚ d y z) +``` + +### Multiplication of rational numbers is Lipschitz + +```agda +module _ + (x : ℚ) + where + + -- abstract + -- is-lipschitz-constant-succ-abs-mul-ℚ : + -- is-lipschitz-constant-function-Metric-Space + -- ( metric-space-leq-ℚ) + -- ( metric-space-leq-ℚ) + -- ( mul-ℚ x) + -- ( positive-succ-ℚ⁰⁺ (abs-ℚ x)) + -- is-lipschitz-constant-succ-abs-mul-ℚ d y z H = + -- neighborhood-leq-leq-dist-ℚ + -- ( positive-succ-ℚ⁰⁺ (abs-ℚ x) *ℚ⁺ d) + -- ( x *ℚ y) + -- ( x *ℚ z) + -- ( tr + -- ( λ q → + -- leq-ℚ + -- ( rational-ℚ⁰⁺ q) + -- ( rational-ℚ⁺ (positive-succ-ℚ⁰⁺ (abs-ℚ x) *ℚ⁺ d))) + -- ( left-distributive-abs-mul-dist-ℚ x y z) + -- ( transitive-leq-ℚ + -- ( rational-ℚ⁰⁺ (abs-ℚ x *ℚ⁰⁺ dist-ℚ y z)) + -- ( (succ-ℚ (rational-abs-ℚ x)) *ℚ (rational-dist-ℚ y z)) + -- ( rational-ℚ⁺ (positive-succ-ℚ⁰⁺ (abs-ℚ x) *ℚ⁺ d)) + -- ( preserves-leq-left-mul-ℚ⁺ + -- ( positive-succ-ℚ⁰⁺ (abs-ℚ x)) + -- ( rational-dist-ℚ y z) + -- ( rational-ℚ⁺ d) + -- ( leq-dist-neighborhood-leq-ℚ d y z H)) + -- ( preserves-leq-right-mul-ℚ⁰⁺ + -- ( dist-ℚ y z) + -- ( rational-abs-ℚ x) + -- ( succ-ℚ (rational-abs-ℚ x)) + -- ( succ-leq-ℚ (rational-abs-ℚ x))))) + + -- lipschitz-constant-succ-abs-mul-ℚ : + -- lipschitz-constant-function-Metric-Space + -- ( metric-space-leq-ℚ) + -- ( metric-space-leq-ℚ) + -- ( mul-ℚ x) + -- lipschitz-constant-succ-abs-mul-ℚ = + -- ( positive-succ-ℚ⁰⁺ (abs-ℚ x)) , + -- ( is-lipschitz-constant-succ-abs-mul-ℚ) + + -- is-lipschitz-left-mul-ℚ : + -- ( is-lipschitz-function-Metric-Space + -- ( metric-space-leq-ℚ) + -- ( metric-space-leq-ℚ) + -- ( mul-ℚ x)) + -- is-lipschitz-left-mul-ℚ = + -- unit-trunc-Prop lipschitz-constant-succ-abs-mul-ℚ + + -- is-lipschitz-right-mul-ℚ : + -- ( is-lipschitz-function-Metric-Space + -- ( metric-space-leq-ℚ) + -- ( metric-space-leq-ℚ) + -- ( mul-ℚ' x)) + -- is-lipschitz-right-mul-ℚ = + -- is-lipschitz-htpy-function-Metric-Space + -- ( metric-space-leq-ℚ) + -- ( metric-space-leq-ℚ) + -- ( mul-ℚ x) + -- ( mul-ℚ' x) + -- ( commutative-mul-ℚ x) + -- ( is-lipschitz-left-mul-ℚ) +``` + +### The convergent Cauchy approximation of the canonical inclusion of positive rational numbers into the rational numbers + +```agda +-- is-cauchy-approximation-rational-ℚ⁺ : +-- is-cauchy-approximation-Metric-Space-WIP +-- metric-space-ℚ +-- rational-ℚ⁺ +-- is-cauchy-approximation-rational-ℚ⁺ ε δ = +-- ( leq-le-ℚ +-- { rational-ℚ⁺ δ} +-- { rational-ℚ⁺ ε +ℚ (rational-ℚ⁺ (ε +ℚ⁺ δ))} +-- ( transitive-le-ℚ +-- ( rational-ℚ⁺ δ) +-- ( rational-ℚ⁺ (ε +ℚ⁺ δ)) +-- ( rational-ℚ⁺ ε +ℚ (rational-ℚ⁺ (ε +ℚ⁺ δ))) +-- ( le-right-add-ℚ⁺ +-- ( ε) +-- ( ε +ℚ⁺ δ)) +-- ( le-right-add-ℚ⁺ ε δ))) , +-- ( leq-le-ℚ +-- { rational-ℚ⁺ ε} +-- { rational-ℚ⁺ δ +ℚ (rational-ℚ⁺ (ε +ℚ⁺ δ))} +-- ( transitive-le-ℚ +-- ( rational-ℚ⁺ ε) +-- ( rational-ℚ⁺ (ε +ℚ⁺ δ)) +-- ( rational-ℚ⁺ δ +ℚ (rational-ℚ⁺ (ε +ℚ⁺ δ))) +-- ( le-right-add-ℚ⁺ +-- ( δ) +-- ( ε +ℚ⁺ δ)) +-- ( le-left-add-ℚ⁺ ε δ))) + +-- cauchy-approximation-rational-ℚ⁺ : +-- cauchy-approximation-Metric-Space-WIP metric-space-ℚ +-- cauchy-approximation-rational-ℚ⁺ = +-- rational-ℚ⁺ , is-cauchy-approximation-rational-ℚ⁺ + +-- is-zero-limit-rational-ℚ⁺ : +-- is-limit-cauchy-approximation-Metric-Space-WIP +-- ( metric-space-ℚ) +-- ( cauchy-approximation-rational-ℚ⁺) +-- ( zero-ℚ) +-- is-zero-limit-rational-ℚ⁺ ε δ = +-- ( leq-le-ℚ +-- { zero-ℚ} +-- { rational-ℚ⁺ (ε +ℚ⁺ (ε +ℚ⁺ δ))} +-- ( le-zero-is-positive-ℚ +-- ( rational-ℚ⁺ (ε +ℚ⁺ (ε +ℚ⁺ δ))) +-- ( is-positive-rational-ℚ⁺ +-- (ε +ℚ⁺ (ε +ℚ⁺ δ))))) , +-- ( leq-le-ℚ +-- { rational-ℚ⁺ ε} +-- { zero-ℚ +ℚ rational-ℚ⁺ (ε +ℚ⁺ δ)} +-- ( inv-tr +-- ( le-ℚ (rational-ℚ⁺ ε)) +-- ( left-unit-law-add-ℚ (rational-ℚ⁺ (ε +ℚ⁺ δ))) +-- ( le-left-add-ℚ⁺ ε δ))) + +-- convergent-rational-ℚ⁺ : +-- convergent-cauchy-approximation-Metric-Space-WIP metric-space-ℚ +-- convergent-rational-ℚ⁺ = +-- cauchy-approximation-rational-ℚ⁺ , +-- zero-ℚ , +-- is-zero-limit-rational-ℚ⁺ +``` From 3000f7e172c9d7714cee984070eb4df14c995367 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 28 Jun 2025 05:23:25 +0200 Subject: [PATCH 40/42] WIP subspaces metric spaces --- src/metric-spaces.lagda.md | 1 + .../subspaces-metric-spaces-WIP.lagda.md | 159 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index ca660eb4a5..2fc2034772 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -129,6 +129,7 @@ open import metric-spaces.short-functions-metric-spaces-WIP public open import metric-spaces.short-functions-premetric-spaces public open import metric-spaces.similarity-of-elements-pseudometric-spaces public open import metric-spaces.subspaces-metric-spaces public +open import metric-spaces.subspaces-metric-spaces-WIP public open import metric-spaces.symmetric-premetric-structures public open import metric-spaces.symmetric-rational-neighborhoods public open import metric-spaces.triangular-premetric-structures public diff --git a/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md b/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..861ca8d29f --- /dev/null +++ b/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md @@ -0,0 +1,159 @@ +# Subspaces of metric spaces (WIP) + +```agda +module metric-spaces.subspaces-metric-spaces-WIP where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.logical-equivalences +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.extensional-pseudometric-spaces-WIP +open import metric-spaces.isometries-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +[Subsets](foundation.subtypes.md) of +[metric spaces](metric-spaces.metric-spaces.md) inherit the metric structure of +their ambient space; these are +{{#concept "metric subspaces" Agda=subspace-Metric-Space-WIP}} of metric spaces. + +The natural inclusion of subspace into its ambient space is an +[isometry](metric-spaces.isometries-metric-spaces.md). + +## Definitions + +### Subsets of metric spaces + +```agda +module _ + (l : Level) {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) + where + + subset-Metric-Space-WIP : UU (lsuc l ⊔ l1) + subset-Metric-Space-WIP = subtype l (type-Metric-Space-WIP A) +``` + +### Metric subspace of a metric space + +```agda +module _ + {l l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + (S : subset-Metric-Space-WIP l A) + where + + neighborhood-prop-subset-Metric-Space-WIP : + Rational-Neighborhood-Relation l2 (type-subtype S) + neighborhood-prop-subset-Metric-Space-WIP d x y = + neighborhood-prop-Metric-Space-WIP A d (pr1 x) (pr1 y) + + is-reflexive-neighborhood-subset-Metric-Space-WIP : + is-reflexive-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space-WIP + is-reflexive-neighborhood-subset-Metric-Space-WIP d x = + refl-neighborhood-Metric-Space-WIP A d (pr1 x) + + is-symmetric-neighborhood-subset-Metric-Space-WIP : + is-symmetric-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space-WIP + is-symmetric-neighborhood-subset-Metric-Space-WIP d x y = + symmetric-neighborhood-Metric-Space-WIP A d (pr1 x) (pr1 y) + + is-triangular-neighborhood-subset-Metric-Space-WIP : + is-triangular-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space-WIP + is-triangular-neighborhood-subset-Metric-Space-WIP x y z = + triangular-neighborhood-Metric-Space-WIP A (pr1 x) (pr1 y) (pr1 z) + + is-saturated-neighborhood-subset-Metric-Space-WIP : + is-saturated-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space-WIP + is-saturated-neighborhood-subset-Metric-Space-WIP ε x y = + saturated-neighborhood-Metric-Space-WIP + ( A) + ( ε) + ( pr1 x) + ( pr1 y) + + pseudometric-subspace-Metric-Space-WIP : + Pseudometric-Space-WIP (l ⊔ l1) l2 + pseudometric-subspace-Metric-Space-WIP = + ( type-subtype S) , + ( neighborhood-prop-subset-Metric-Space-WIP , + is-reflexive-neighborhood-subset-Metric-Space-WIP , + is-symmetric-neighborhood-subset-Metric-Space-WIP , + is-triangular-neighborhood-subset-Metric-Space-WIP , + is-saturated-neighborhood-subset-Metric-Space-WIP) + + is-extensional-pseudometric-subspace-Metric-Space-WIP : + is-extensional-Pseudometric-Space-WIP + pseudometric-subspace-Metric-Space-WIP + is-extensional-pseudometric-subspace-Metric-Space-WIP = + is-extensional-is-tight-Pseudometric-Space + ( pseudometric-subspace-Metric-Space-WIP) + ( λ x y → + eq-type-subtype S ∘ + eq-sim-Metric-Space-WIP A (pr1 x) (pr1 y)) + + subspace-Metric-Space-WIP : Metric-Space-WIP (l ⊔ l1) l2 + subspace-Metric-Space-WIP = + pseudometric-subspace-Metric-Space-WIP , + is-extensional-pseudometric-subspace-Metric-Space-WIP +``` + +### Inclusion of a metric subspace into its ambient space + +```agda +module _ + {l l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + (S : subset-Metric-Space-WIP l A) + where + + inclusion-subspace-Metric-Space-WIP : + type-function-Metric-Space-WIP + ( subspace-Metric-Space-WIP A S) + ( A) + inclusion-subspace-Metric-Space-WIP = inclusion-subtype S +``` + +## Properties + +### The inclusion of a subspace into its ambient space is an isometry + +```agda +module _ + {l l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + (S : subset-Metric-Space-WIP l A) + where + + is-isometry-inclusion-subspace-Metric-Space-WIP : + is-isometry-Metric-Space-WIP + (subspace-Metric-Space-WIP A S) + (A) + (inclusion-subspace-Metric-Space-WIP A S) + is-isometry-inclusion-subspace-Metric-Space-WIP d x y = id-iff + + isometry-inclusion-subspace-Metric-Space-WIP : + isometry-Metric-Space-WIP (subspace-Metric-Space-WIP A S) A + isometry-inclusion-subspace-Metric-Space-WIP = + inclusion-subspace-Metric-Space-WIP A S , + is-isometry-inclusion-subspace-Metric-Space-WIP +``` From c7b7bfab4228193ba3b0a46ee7be2cc8e9d8dcb9 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 8 Jul 2025 20:00:09 +0200 Subject: [PATCH 41/42] re-order arguments Metric-Space --- ...endent-products-metric-spaces-WIP.lagda.md | 10 +- ...ric-space-of-rational-numbers-WIP.lagda.md | 10 +- src/metric-spaces/metric-spaces-WIP.lagda.md | 103 ++++++++++++++++-- .../subspaces-metric-spaces-WIP.lagda.md | 10 +- 4 files changed, 118 insertions(+), 15 deletions(-) diff --git a/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md b/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md index a8ec42aa8c..a4496a0e54 100644 --- a/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md @@ -127,8 +127,14 @@ module _ Π-Metric-Space-WIP : Metric-Space-WIP (l ⊔ l1) (l ⊔ l2) Π-Metric-Space-WIP = - pseudometric-space-Π-Metric-Space , - is-extensional-pseudometric-space-Π-Metric-Space + make-Metric-Space-WIP + type-Π-Metric-Space-WIP + neighborhood-prop-Π-Metric-Space-WIP + is-reflexive-neighborhood-Π-Metric-Space-WIP + is-symmetric-neighborhood-Π-Metric-Space-WIP + is-triangular-neighborhood-Π-Metric-Space-WIP + is-saturated-neighborhood-Π-Metric-Space-WIP + is-extensional-pseudometric-space-Π-Metric-Space ``` ## Properties diff --git a/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md index 7a60f1a0d8..506eecbe30 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md @@ -191,8 +191,14 @@ is-extensional-pseudometric-space-ℚ = ```agda metric-space-ℚ : Metric-Space-WIP lzero lzero metric-space-ℚ = - pseudometric-space-ℚ , - is-extensional-pseudometric-space-ℚ + make-Metric-Space-WIP + ℚ + neighborhood-prop-ℚ + is-reflexive-neighborhood-ℚ + is-symmetric-neighborhood-ℚ + is-triangular-neighborhood-ℚ + is-saturated-neighborhood-ℚ + is-extensional-pseudometric-space-ℚ ``` ## Properties diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md index 9ccaaed99a..e56db06a47 100644 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/metric-spaces-WIP.lagda.md @@ -19,12 +19,20 @@ open import foundation.identity-types open import foundation.propositions open import foundation.sets open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.type-arithmetic-dependent-pair-types +open import foundation.univalence open import foundation.universe-levels open import metric-spaces.extensional-pseudometric-spaces-WIP +open import metric-spaces.preimage-rational-neighborhoods open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.rational-neighborhoods +open import metric-spaces.reflexive-rational-neighborhoods +open import metric-spaces.saturated-rational-neighborhoods open import metric-spaces.similarity-of-elements-pseudometric-spaces +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods ``` @@ -87,30 +95,87 @@ upper bounds on distances between elements is closed on the left. ## Definitions +### Metric Structures on a type + +```agda +module _ + {l1 : Level} (A : UU l1) {l2 : Level} + (B : Rational-Neighborhood-Relation l2 A) + where + + is-metric-prop-Rational-Neighborhood-Relation : Prop (l1 ⊔ l2) + is-metric-prop-Rational-Neighborhood-Relation = + Σ-Prop + ( is-pseudometric-prop-Rational-Neighborhood-Relation A B) + ( λ H → + is-extensional-prop-Pseudometric-Space-WIP (A , B , H)) + + is-metric-Rational-Neighborhood-Relation : UU (l1 ⊔ l2) + is-metric-Rational-Neighborhood-Relation = + type-Prop is-metric-prop-Rational-Neighborhood-Relation + + is-prop-is-metric-Rational-Neighborhood-Relation : + is-prop is-metric-Rational-Neighborhood-Relation + is-prop-is-metric-Rational-Neighborhood-Relation = + is-prop-type-Prop (is-metric-prop-Rational-Neighborhood-Relation) + +Metric-Structure-WIP : + {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) +Metric-Structure-WIP l2 A = + type-subtype (is-metric-prop-Rational-Neighborhood-Relation A {l2}) +``` + ### The type of metric spaces ```agda Metric-Space-WIP : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) Metric-Space-WIP l1 l2 = - type-subtype (is-extensional-prop-Pseudometric-Space-WIP {l1} {l2}) + Σ (UU l1) (Metric-Structure-WIP l2) + +make-Metric-Space-WIP : + { l1 l2 : Level} → + ( A : UU l1) → + ( B : Rational-Neighborhood-Relation l2 A) → + ( refl-B : is-reflexive-Rational-Neighborhood-Relation B) → + ( symmetric-B : is-symmetric-Rational-Neighborhood-Relation B) → + ( triangular-B : is-triangular-Rational-Neighborhood-Relation B) → + ( saturated-B : is-saturated-Rational-Neighborhood-Relation B) → + ( extensional-B : + is-extensional-Pseudometric-Space-WIP + (A , B , refl-B , symmetric-B , triangular-B , saturated-B)) → + Metric-Space-WIP l1 l2 +make-Metric-Space-WIP + A B refl-B symmetric-B triangular-B saturated-B extensional-B = + ( A) , + ( ( B) , + ( refl-B , symmetric-B , triangular-B , saturated-B) , + ( extensional-B)) module _ {l1 l2 : Level} (M : Metric-Space-WIP l1 l2) where + type-Metric-Space-WIP : UU l1 + type-Metric-Space-WIP = + pr1 M + + structure-Metric-Space-WIP : Metric-Structure-WIP l2 type-Metric-Space-WIP + structure-Metric-Space-WIP = pr2 M + pseudometric-Metric-Space-WIP : Pseudometric-Space-WIP l1 l2 - pseudometric-Metric-Space-WIP = pr1 M + pseudometric-Metric-Space-WIP = + ( type-Metric-Space-WIP) , + ( pr1 structure-Metric-Space-WIP) , + ( pr1 (pr2 structure-Metric-Space-WIP)) is-extensional-pseudometric-Metric-Space-WIP : is-extensional-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP - is-extensional-pseudometric-Metric-Space-WIP = pr2 M - - type-Metric-Space-WIP : UU l1 - type-Metric-Space-WIP = - type-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP + is-extensional-pseudometric-Metric-Space-WIP = + pr2 (pr2 structure-Metric-Space-WIP) - structure-Metric-Space-WIP : Pseudometric-Structure l2 type-Metric-Space-WIP - structure-Metric-Space-WIP = + pseudometric-structure-Metric-Space-WIP : + Pseudometric-Structure l2 type-Metric-Space-WIP + pseudometric-structure-Metric-Space-WIP = structure-Pseudometric-Space-WIP pseudometric-Metric-Space-WIP neighborhood-prop-Metric-Space-WIP : @@ -318,6 +383,26 @@ module _ map-inv-equiv (equiv-sim-eq-Metric-Space-WIP x y) ``` +### Characterization of the transport of metric structures along equalities + +```agda +equiv-Eq-tr-Metric-Structure : + {l1 l2 : Level} (A B : UU l1) → + (P : Metric-Structure-WIP l2 A) → + (Q : Metric-Structure-WIP l2 B) → + (e : A = B) → + (tr (Metric-Structure-WIP l2) e P = Q) ≃ + (Eq-Rational-Neighborhood-Relation + ( pr1 P) + ( preimage-Rational-Neighborhood-Relation (map-eq e) (pr1 Q))) +equiv-Eq-tr-Metric-Structure A .A P Q refl = + ( equiv-Eq-eq-Rational-Neighborhood-Relation (pr1 P) (pr1 Q)) ∘e + ( extensionality-type-subtype' + ( is-metric-prop-Rational-Neighborhood-Relation A) + ( P) + ( Q)) +``` + ## External links - [`MetricSpaces.Type`](https://www.cs.bham.ac.uk/~mhe/TypeTopology/MetricSpaces.Type.html) diff --git a/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md b/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md index 861ca8d29f..268c6de0b9 100644 --- a/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md @@ -113,8 +113,14 @@ module _ subspace-Metric-Space-WIP : Metric-Space-WIP (l ⊔ l1) l2 subspace-Metric-Space-WIP = - pseudometric-subspace-Metric-Space-WIP , - is-extensional-pseudometric-subspace-Metric-Space-WIP + make-Metric-Space-WIP + ( type-subtype S) + ( neighborhood-prop-subset-Metric-Space-WIP) + ( is-reflexive-neighborhood-subset-Metric-Space-WIP) + ( is-symmetric-neighborhood-subset-Metric-Space-WIP) + ( is-triangular-neighborhood-subset-Metric-Space-WIP) + ( is-saturated-neighborhood-subset-Metric-Space-WIP) + ( is-extensional-pseudometric-subspace-Metric-Space-WIP) ``` ### Inclusion of a metric subspace into its ambient space From ffe633d313183366c85afbc24c4aebd682fce95f Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 8 Jul 2025 20:15:46 +0200 Subject: [PATCH 42/42] equality metric spaces (WIP) --- src/metric-spaces.lagda.md | 1 + .../equality-of-metric-spaces-WIP.lagda.md | 241 ++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 2fc2034772..f7778db529 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -66,6 +66,7 @@ open import metric-spaces.dependent-products-metric-spaces-WIP public open import metric-spaces.discrete-premetric-structures public open import metric-spaces.elements-at-bounded-distance-metric-spaces public open import metric-spaces.equality-of-metric-spaces public +open import metric-spaces.equality-of-metric-spaces-WIP public open import metric-spaces.equality-of-premetric-spaces public open import metric-spaces.extensional-premetric-structures public open import metric-spaces.extensional-pseudometric-spaces-WIP public diff --git a/src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md b/src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md new file mode 100644 index 0000000000..454284610d --- /dev/null +++ b/src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md @@ -0,0 +1,241 @@ +# Equality of metric spaces (WIP) + +```agda +module metric-spaces.equality-of-metric-spaces-WIP where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equality-dependent-pair-types +open import foundation.equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.subtypes +open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.type-arithmetic-dependent-pair-types +open import foundation.univalence +open import foundation.universe-levels + +open import metric-spaces.extensional-pseudometric-spaces-WIP +open import metric-spaces.isometries-metric-spaces-WIP +open import metric-spaces.metric-spaces-WIP +open import metric-spaces.pseudometric-spaces-WIP +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +[Equality](foundation-core.identity-types.md) of +[metric spaces](metric-spaces.metric-spaces-WIP.md) is characterized by the +following equivalent concepts: + +- an [equality](foundation-core.identity-types.md) between their carrier types + such that the induced map under [`map-eq`](foundation-core.univalence.md) is + an [isometry](metric-spaces.isometries-metric-spaces-WIP.md); + +- an [equivalence](foundation-core.equivalences.md) between their carrier types + such that the induced map under [`map-equiv`](foundation-core.equivalences.md) + is an [isometry](metric-spaces.isometries-metric-spaces-WIP.md); + +- a function between their carrier types that is both an + [equivalence](foundation-core.equivalences.md) and an + [isometry](metric-spaces.isometries-metric-spaces-WIP.md). + +## Definitions + +### Isometric equality between metric spaces + +```agda +module _ + {l1 l2 l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1 l2') + where + + isometric-eq-Metric-Space-WIP : UU (lsuc l1 ⊔ l2 ⊔ l2') + isometric-eq-Metric-Space-WIP = + Σ (type-Metric-Space-WIP A = type-Metric-Space-WIP B) + (λ e → is-isometry-Metric-Space-WIP A B (map-eq e)) +``` + +### Isometric equivalence of metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + where + + isometric-equiv-Metric-Space-WIP : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + isometric-equiv-Metric-Space-WIP = + Σ (type-Metric-Space-WIP A ≃ type-Metric-Space-WIP B) + (λ e → is-isometry-Metric-Space-WIP A B (map-equiv e)) +``` + +### Isometric equivalences between metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space-WIP l1 l2) (B : Metric-Space-WIP l1' l2') + where + + isometric-equiv-Metric-Space-WIP' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + isometric-equiv-Metric-Space-WIP' = + Σ ( type-function-Metric-Space-WIP A B) + ( λ f → (is-equiv f) × (is-isometry-Metric-Space-WIP A B f)) +``` + +## Properties + +### Equality of metric spaces is equivalent to the existence of an isometric equality between their carrier types + +```agda +module _ + {l1 l2 : Level} + (A B : Metric-Space-WIP l1 l2) + where + + equiv-eq-isometric-eq-Metric-Space-WIP : + (A = B) ≃ isometric-eq-Metric-Space-WIP A B + equiv-eq-isometric-eq-Metric-Space-WIP = + ( equiv-tot + ( equiv-Eq-tr-Metric-Structure + ( type-Metric-Space-WIP A) + ( type-Metric-Space-WIP B) + ( structure-Metric-Space-WIP A) + ( structure-Metric-Space-WIP B))) ∘e + ( equiv-pair-eq-Σ A B) +``` + +### Isometric equality is torsorial + +```agda +module _ + {l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + where + + is-torsorial-isometric-eq-Metric-Space-WIP : + is-torsorial (isometric-eq-Metric-Space-WIP A) + is-torsorial-isometric-eq-Metric-Space-WIP = + is-contr-equiv' + ( Σ (Metric-Space-WIP l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-eq-Metric-Space-WIP A)) + ( is-torsorial-Id A) +``` + +### Isometric equality between the carrier types of metric spaces is equivalent to the existence of an isometric equivalence between them + +```agda +module _ + {l1 l2 : Level} + (A B : Metric-Space-WIP l1 l2) + where + + equiv-isometric-eq-equiv-Metric-Space-WIP : + isometric-eq-Metric-Space-WIP A B ≃ isometric-equiv-Metric-Space-WIP A B + equiv-isometric-eq-equiv-Metric-Space-WIP = + equiv-Σ + ( λ e → is-isometry-Metric-Space-WIP A B (map-equiv e)) + ( equiv-univalence) + ( λ (e : type-Metric-Space-WIP A = type-Metric-Space-WIP B) → + equiv-eq + (ap (is-isometry-Metric-Space-WIP A B) (eq-htpy (λ x → refl)))) +``` + +### Isometric equivalence of metric spaces characterize their equalities + +```agda +module _ + {l1 l2 : Level} + (A B : Metric-Space-WIP l1 l2) + where + + equiv-eq-isometric-equiv-Metric-Space-WIP : + (A = B) ≃ isometric-equiv-Metric-Space-WIP A B + equiv-eq-isometric-equiv-Metric-Space-WIP = + ( equiv-isometric-eq-equiv-Metric-Space-WIP A B) ∘e + ( equiv-eq-isometric-eq-Metric-Space-WIP A B) +``` + +### Isometric equivalence is torsorial + +```agda +module _ + {l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + where + + is-torsorial-isometric-equiv-Metric-Space-WIP : + is-torsorial (isometric-equiv-Metric-Space-WIP A) + is-torsorial-isometric-equiv-Metric-Space-WIP = + is-contr-equiv' + ( Σ (Metric-Space-WIP l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space-WIP A)) + ( is-torsorial-Id A) +``` + +### Two metric spaces are isometrically equivalent if and only if there is an isometric equivalence between them + +```agda +module _ + {l1 l2 : Level} + (A B : Metric-Space-WIP l1 l2) + where + + equiv-isometric-equiv-isometric-equiv-Metric-Space-WIP' : + isometric-equiv-Metric-Space-WIP A B ≃ isometric-equiv-Metric-Space-WIP' A B + equiv-isometric-equiv-isometric-equiv-Metric-Space-WIP' = + equiv-tot + ( λ f → + equiv-tot + ( λ e → + equiv-eq (ap (is-isometry-Metric-Space-WIP A B) refl))) ∘e + associative-Σ + ( type-function-Metric-Space-WIP A B) + ( is-equiv) + ( is-isometry-Metric-Space-WIP A B ∘ map-equiv) +``` + +### Isometric equivalences between metric spaces characterize their equality + +```agda +module _ + {l1 l2 : Level} + (A B : Metric-Space-WIP l1 l2) + where + + equiv-eq-isometric-equiv-Metric-Space-WIP' : + (A = B) ≃ isometric-equiv-Metric-Space-WIP' A B + equiv-eq-isometric-equiv-Metric-Space-WIP' = + ( equiv-isometric-equiv-isometric-equiv-Metric-Space-WIP' A B) ∘e + ( equiv-eq-isometric-equiv-Metric-Space-WIP A B) +``` + +### The existence of invertibe isometries between metric spaces is torsorial + +```agda +module _ + {l1 l2 : Level} + (A : Metric-Space-WIP l1 l2) + where + + is-torsorial-isometric-equiv-Metric-Space-WIP' : + is-torsorial (isometric-equiv-Metric-Space-WIP' A) + is-torsorial-isometric-equiv-Metric-Space-WIP' = + is-contr-equiv' + ( Σ (Metric-Space-WIP l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space-WIP' A)) + ( is-torsorial-Id A) +```