From 0d29fa32254b608058baf69720c49f328cce65b0 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 18 May 2025 19:52:51 +0200 Subject: [PATCH 001/151] 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 002/151] 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 003/151] 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 004/151] 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 005/151] 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 006/151] 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 007/151] 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 008/151] 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 009/151] 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 010/151] 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 011/151] 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 012/151] 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 013/151] 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 014/151] 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 015/151] 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 016/151] 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 017/151] 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 018/151] 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 019/151] 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 020/151] 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 021/151] 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 022/151] 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 023/151] 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 024/151] 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 025/151] 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 026/151] 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 027/151] 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 028/151] 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 029/151] 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 030/151] 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 031/151] 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 032/151] 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 033/151] 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 034/151] 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 035/151] 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 036/151] 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 037/151] 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 038/151] 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 039/151] 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 040/151] 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 041/151] 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 042/151] 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) +``` From bfbe4491abe1b711732b13568ec54bd0ccb38708 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 9 Jul 2025 02:23:34 +0200 Subject: [PATCH 043/151] refactor-ageddon --- src/metric-spaces.lagda.md | 45 +- ...-approximations-metric-spaces-WIP.lagda.md | 161 ------ ...uchy-approximations-metric-spaces.lagda.md | 77 ++- ...y-approximations-premetric-spaces.lagda.md | 178 ------- .../cauchy-sequences-metric-spaces.lagda.md | 27 +- .../closed-premetric-structures.lagda.md | 381 --------------- .../complete-metric-spaces-WIP.lagda.md | 172 ------- .../complete-metric-spaces.lagda.md | 1 + ...nuous-functions-metric-spaces-WIP.lagda.md | 70 --- ...ontinuous-functions-metric-spaces.lagda.md | 66 ++- ...inuous-functions-premetric-spaces.lagda.md | 69 --- ...-approximations-metric-spaces-WIP.lagda.md | 142 ------ ...uchy-approximations-metric-spaces.lagda.md | 63 +-- ...onvergent-sequences-metric-spaces.lagda.md | 8 +- ...endent-products-metric-spaces-WIP.lagda.md | 268 ---------- .../dependent-products-metric-spaces.lagda.md | 137 +++--- .../discrete-premetric-structures.lagda.md | 369 +++++++------- ...at-bounded-distance-metric-spaces.lagda.md | 8 +- .../equality-of-metric-spaces-WIP.lagda.md | 241 --------- .../equality-of-metric-spaces.lagda.md | 184 ++++--- .../equality-of-premetric-spaces.lagda.md | 215 -------- .../extensional-premetric-structures.lagda.md | 188 ------- ...tensional-pseudometric-spaces-WIP.lagda.md | 190 ------- .../extensional-pseudometric-spaces.lagda.md | 190 +++++++ .../functions-metric-spaces.lagda.md | 44 +- ...premetric-structures-on-preimages.lagda.md | 143 ------ ...ric-equivalences-premetric-spaces.lagda.md | 181 ------- .../isometries-metric-spaces-WIP.lagda.md | 434 ---------------- .../isometries-metric-spaces.lagda.md | 189 ++++--- .../isometries-premetric-spaces.lagda.md | 280 ----------- ...chy-approximations-metric-spaces.lagda.md} | 80 +-- ...y-approximations-premetric-spaces.lagda.md | 250 ---------- ...limits-of-functions-metric-spaces.lagda.md | 43 +- ...limits-of-sequences-metric-spaces.lagda.md | 164 ++++++- ...its-of-sequences-premetric-spaces.lagda.md | 154 ------ ...-of-sequences-pseudometric-spaces.lagda.md | 237 --------- ...lipschitz-functions-metric-spaces.lagda.md | 40 +- ...oximations-complete-metric-spaces.lagda.md | 146 ++++++ ...uchy-approximations-metric-spaces.lagda.md | 18 - ...-saturated-complete-metric-spaces.lagda.md | 239 --------- ...uchy-approximations-metric-spaces.lagda.md | 58 +-- ...-space-of-functions-metric-spaces.lagda.md | 3 +- ...ric-space-of-rational-numbers-WIP.lagda.md | 459 ----------------- ...l-numbers-with-open-neighborhoods.lagda.md | 215 -------- .../metric-space-of-rational-numbers.lagda.md | 279 ++++++----- src/metric-spaces/metric-spaces-WIP.lagda.md | 411 ---------------- src/metric-spaces/metric-spaces.lagda.md | 462 +++++++++++------- src/metric-spaces/metric-structures.lagda.md | 145 ------ .../monotonic-premetric-structures.lagda.md | 60 --- .../ordering-premetric-structures.lagda.md | 122 ----- ...ry-of-metric-spaces-and-functions.lagda.md | 2 +- ...y-of-metric-spaces-and-isometries.lagda.md | 2 +- ...metric-spaces-and-short-functions.lagda.md | 26 +- src/metric-spaces/premetric-spaces.lagda.md | 120 ----- .../premetric-structures.lagda.md | 259 ---------- .../pseudometric-spaces-WIP.lagda.md | 213 -------- .../pseudometric-spaces.lagda.md | 325 ++++++------ .../pseudometric-structures.lagda.md | 120 ----- .../rational-approximations-of-zero.lagda.md | 28 +- .../rational-cauchy-approximations.lagda.md | 38 +- ...onal-sequences-approximating-zero.lagda.md | 16 +- .../reflexive-premetric-structures.lagda.md | 101 ---- .../saturated-complete-metric-spaces.lagda.md | 130 ----- .../saturated-metric-spaces.lagda.md | 206 -------- .../sequences-premetric-spaces.lagda.md | 36 -- .../sequences-pseudometric-spaces.lagda.md | 37 -- ...short-functions-metric-spaces-WIP.lagda.md | 345 ------------- .../short-functions-metric-spaces.lagda.md | 106 ++-- .../short-functions-premetric-spaces.lagda.md | 233 --------- ...y-of-elements-pseudometric-spaces.lagda.md | 194 ++++---- .../subspaces-metric-spaces-WIP.lagda.md | 165 ------- .../subspaces-metric-spaces.lagda.md | 166 ++++--- .../symmetric-premetric-structures.lagda.md | 84 ---- .../triangular-premetric-structures.lagda.md | 115 ----- ...triangular-rational-neighborhoods.lagda.md | 2 +- ...nuous-functions-metric-spaces-WIP.lagda.md | 238 --------- ...ontinuous-functions-metric-spaces.lagda.md | 229 ++++++--- ...inuous-functions-premetric-spaces.lagda.md | 116 ----- 78 files changed, 2271 insertions(+), 9687 deletions(-) delete mode 100644 src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/cauchy-approximations-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/closed-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/complete-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/continuous-functions-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/convergent-cauchy-approximations-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/equality-of-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/extensional-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md create mode 100644 src/metric-spaces/extensional-pseudometric-spaces.lagda.md delete mode 100644 src/metric-spaces/induced-premetric-structures-on-preimages.lagda.md delete mode 100644 src/metric-spaces/isometric-equivalences-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/isometries-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/isometries-premetric-spaces.lagda.md rename src/metric-spaces/{limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md => limits-of-cauchy-approximations-metric-spaces.lagda.md} (52%) delete mode 100644 src/metric-spaces/limits-of-cauchy-approximations-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/limits-of-sequences-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/limits-of-sequences-pseudometric-spaces.lagda.md delete mode 100644 src/metric-spaces/metric-space-of-cauchy-approximations-saturated-complete-metric-spaces.lagda.md delete mode 100644 src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md delete mode 100644 src/metric-spaces/metric-space-of-rational-numbers-with-open-neighborhoods.lagda.md delete mode 100644 src/metric-spaces/metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/metric-structures.lagda.md delete mode 100644 src/metric-spaces/monotonic-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/ordering-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/premetric-structures.lagda.md delete mode 100644 src/metric-spaces/pseudometric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/pseudometric-structures.lagda.md delete mode 100644 src/metric-spaces/reflexive-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/saturated-complete-metric-spaces.lagda.md delete mode 100644 src/metric-spaces/saturated-metric-spaces.lagda.md delete mode 100644 src/metric-spaces/sequences-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/sequences-pseudometric-spaces.lagda.md delete mode 100644 src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/short-functions-premetric-spaces.lagda.md delete mode 100644 src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/symmetric-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/triangular-premetric-structures.lagda.md delete mode 100644 src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md delete mode 100644 src/metric-spaces/uniformly-continuous-functions-premetric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index f7778db529..39fa2e6c53 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -48,96 +48,55 @@ 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 -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 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 -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 +open import metric-spaces.extensional-pseudometric-spaces 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 -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-metric-spaces-WIP public -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces public +open import metric-spaces.limits-of-cauchy-approximations-metric-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 open import metric-spaces.lipschitz-functions-metric-spaces public open import metric-spaces.metric-space-of-cauchy-approximations-complete-metric-spaces public open import metric-spaces.metric-space-of-cauchy-approximations-metric-spaces public -open import metric-spaces.metric-space-of-cauchy-approximations-saturated-complete-metric-spaces public open import metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces public open import metric-spaces.metric-space-of-convergent-sequences-metric-spaces public 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 -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 -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 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 -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 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.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 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 -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 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 ``` ## References diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md deleted file mode 100644 index 0b763c2aef..0000000000 --- a/src/metric-spaces/cauchy-approximations-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,161 +0,0 @@ -# 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}} diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 3f6828b470..9d75e7190b 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -9,18 +9,14 @@ module metric-spaces.cauchy-approximations-metric-spaces where ```agda open import elementary-number-theory.positive-rational-numbers -open import foundation.binary-relations 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.transport-along-identifications open import foundation.universe-levels -open import metric-spaces.cauchy-approximations-premetric-spaces -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces open import metric-spaces.metric-spaces open import metric-spaces.short-functions-metric-spaces ``` @@ -31,9 +27,11 @@ open import metric-spaces.short-functions-metric-spaces A {{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space}} -in a [metric space](metric-spaces.metric-spaces.md) is a -[Cauchy approximation](metric-spaces.cauchy-approximations-premetric-spaces.md) -in the carrier [premetric space](metric-spaces.premetric-spaces.md). +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.rational-neighborhoods.md), i.e. the +distance between `f ε` and `f δ` is bounded by `ε + δ`. ## Definitions @@ -46,9 +44,14 @@ module _ is-cauchy-approximation-prop-Metric-Space : (ℚ⁺ → type-Metric-Space A) → Prop l2 - is-cauchy-approximation-prop-Metric-Space = - is-cauchy-approximation-prop-Premetric-Space - ( premetric-Metric-Space A) + is-cauchy-approximation-prop-Metric-Space f = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( ℚ⁺) + ( λ δ → + neighborhood-prop-Metric-Space A (ε +ℚ⁺ δ) (f ε) (f δ))) is-cauchy-approximation-Metric-Space : (ℚ⁺ → type-Metric-Space A) → UU l2 @@ -93,10 +96,10 @@ module _ const-cauchy-approximation-Metric-Space : cauchy-approximation-Metric-Space A const-cauchy-approximation-Metric-Space = - (const ℚ⁺ x) , (λ ε δ → is-reflexive-structure-Metric-Space A (ε +ℚ⁺ δ) x) + (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Metric-Space A (ε +ℚ⁺ δ) x) ``` -### Short maps between metric spaces preserve Cauchy approximations +### Short maps between metric spaces are functorial on Cauchy approximations ```agda module _ @@ -108,9 +111,51 @@ module _ map-short-function-cauchy-approximation-Metric-Space : cauchy-approximation-Metric-Space A → cauchy-approximation-Metric-Space B - map-short-function-cauchy-approximation-Metric-Space = - map-short-function-cauchy-approximation-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + map-short-function-cauchy-approximation-Metric-Space (u , H) = + ( map-short-function-Metric-Space A B f ∘ u) , + ( λ ε δ → + is-short-map-short-function-Metric-Space + ( A) + ( B) ( f) + ( ε +ℚ⁺ δ) + ( u ε) + ( u δ) + ( H ε δ)) + +module _ + {l1 l2 : Level} + (A : Metric-Space l1 l2) + where + + eq-id-map-short-function-cauchy-approximation-Metric-Space : + map-short-function-cauchy-approximation-Metric-Space + ( A) + ( A) + ( short-id-Metric-Space A) = + id + eq-id-map-short-function-cauchy-approximation-Metric-Space = refl + +module _ + {l1a l2a l1b l2b l1c l2c : Level} + (A : Metric-Space l1a l2a) + (B : Metric-Space l1b l2b) + (C : Metric-Space l1c l2c) + (g : short-function-Metric-Space B C) + (f : short-function-Metric-Space A B) + where + + eq-comp-map-short-function-cauchy-approximation-Metric-Space : + ( map-short-function-cauchy-approximation-Metric-Space B C g ∘ + map-short-function-cauchy-approximation-Metric-Space A B f) = + ( map-short-function-cauchy-approximation-Metric-Space A C + (comp-short-function-Metric-Space A B C g f)) + eq-comp-map-short-function-cauchy-approximation-Metric-Space = refl ``` + +## References + +Our definition of Cauchy approximation follows Definition 4.5.5 of +{{#cite Booij20PhD}} and Definition 11.2.10 of {{#cite UF13}}. + +{{#bibliography}} diff --git a/src/metric-spaces/cauchy-approximations-premetric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-premetric-spaces.lagda.md deleted file mode 100644 index 11bfbb01fa..0000000000 --- a/src/metric-spaces/cauchy-approximations-premetric-spaces.lagda.md +++ /dev/null @@ -1,178 +0,0 @@ -# Cauchy approximations in premetric spaces - -```agda -module metric-spaces.cauchy-approximations-premetric-spaces 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-extensionality -open import foundation.function-types -open import foundation.homotopies -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.propositions -open import foundation.subtypes -open import foundation.universe-levels - -open import metric-spaces.premetric-spaces -open import metric-spaces.short-functions-premetric-spaces -``` - -
- -## Idea - -A -{{#concept "Cauchy approximation" Disambiguation="in a premetric space" Agda=cauchy-approximation-Premetric-Space}} -in a [premetric space](metric-spaces.premetric-spaces.md) 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 - -### The property of being a Cauchy approximation in a premetric space - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - (f : ℚ⁺ → type-Premetric-Space A) - where - - is-cauchy-approximation-prop-Premetric-Space : Prop l2 - is-cauchy-approximation-prop-Premetric-Space = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( ℚ⁺) - ( λ δ → - structure-Premetric-Space A (ε +ℚ⁺ δ) (f ε) (f δ))) - - is-cauchy-approximation-Premetric-Space : UU l2 - is-cauchy-approximation-Premetric-Space = - type-Prop is-cauchy-approximation-prop-Premetric-Space - - is-prop-is-cauchy-approximation-Premetric-Space : - is-prop is-cauchy-approximation-Premetric-Space - is-prop-is-cauchy-approximation-Premetric-Space = - is-prop-type-Prop is-cauchy-approximation-prop-Premetric-Space -``` - -### The type of Cauchy approximations in a premetric space - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - where - - cauchy-approximation-Premetric-Space : UU (l1 ⊔ l2) - cauchy-approximation-Premetric-Space = - type-subtype (is-cauchy-approximation-prop-Premetric-Space A) - -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - (f : cauchy-approximation-Premetric-Space A) - where - - map-cauchy-approximation-Premetric-Space : - ℚ⁺ → type-Premetric-Space A - map-cauchy-approximation-Premetric-Space = pr1 f - - is-cauchy-map-cauchy-approximation-Premetric-Space : - (ε δ : ℚ⁺) → - neighborhood-Premetric-Space - ( A) - ( ε +ℚ⁺ δ) - ( map-cauchy-approximation-Premetric-Space ε) - ( map-cauchy-approximation-Premetric-Space δ) - is-cauchy-map-cauchy-approximation-Premetric-Space = pr2 f -``` - -## Properties - -### Short maps between premetric spaces preserve Cauchy approximations - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) - (B : Premetric-Space l1' l2') - (f : map-type-Premetric-Space A B) - (is-short-f : is-short-function-Premetric-Space A B f) - (u : ℚ⁺ → type-Premetric-Space A) - where - - preserves-is-cauchy-approximation-is-short-function-Premetric-Space : - is-cauchy-approximation-Premetric-Space A u → - is-cauchy-approximation-Premetric-Space B (f ∘ u) - preserves-is-cauchy-approximation-is-short-function-Premetric-Space H ε δ = - is-short-f (ε +ℚ⁺ δ) (u ε) (u δ) (H ε δ) -``` - -### Short maps between premetric spaces are functorial on Cauchy approximations - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) - (B : Premetric-Space l1' l2') - (f : short-function-Premetric-Space A B) - where - - map-short-function-cauchy-approximation-Premetric-Space : - cauchy-approximation-Premetric-Space A → - cauchy-approximation-Premetric-Space B - map-short-function-cauchy-approximation-Premetric-Space (u , H) = - map-short-function-Premetric-Space A B f ∘ u , - preserves-is-cauchy-approximation-is-short-function-Premetric-Space - ( A) - ( B) - ( map-short-function-Premetric-Space A B f) - ( is-short-map-short-function-Premetric-Space A B f) - ( u) - ( H) - -module _ - {l1 l2 : Level} - (A : Premetric-Space l1 l2) - where - - eq-id-map-short-function-cauchy-approximation-Premetric-Space : - map-short-function-cauchy-approximation-Premetric-Space - ( A) - ( A) - ( short-id-Premetric-Space A) = - id - eq-id-map-short-function-cauchy-approximation-Premetric-Space = refl - -module _ - {l1a l2a l1b l2b l1c l2c : Level} - (A : Premetric-Space l1a l2a) - (B : Premetric-Space l1b l2b) - (C : Premetric-Space l1c l2c) - (g : short-function-Premetric-Space B C) - (f : short-function-Premetric-Space A B) - where - - eq-comp-map-short-function-cauchy-approximation-Premetric-Space : - ( map-short-function-cauchy-approximation-Premetric-Space B C g ∘ - map-short-function-cauchy-approximation-Premetric-Space A B f) = - ( map-short-function-cauchy-approximation-Premetric-Space A C - (comp-short-function-Premetric-Space A B C g f)) - eq-comp-map-short-function-cauchy-approximation-Premetric-Space = refl -``` - -## References - -Our definition of Cauchy approximation follows Definition 4.5.5 of -{{#cite Booij20PhD}} and Definition 11.2.10 of {{#cite UF13}}. - -{{#bibliography}} diff --git a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md index 3fc5809d43..2d487414d8 100644 --- a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md @@ -36,6 +36,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.convergent-sequences-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.limits-of-sequences-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.sequences-metric-spaces @@ -189,21 +190,21 @@ module _ in modulus-limit-modulus-sequence-Metric-Space M x lim H ε'⁺ , λ m k n≤m n≤k → - is-monotonic-structure-Metric-Space + monotonic-neighborhood-Metric-Space ( M) ( x m) ( x k) ( ε'⁺ +ℚ⁺ ε'⁺) ( ε⁺) ( 2ε'<ε) - ( is-triangular-structure-Metric-Space + ( triangular-neighborhood-Metric-Space ( M) ( x m) ( lim) ( x k) ( ε'⁺) ( ε'⁺) - ( is-symmetric-structure-Metric-Space + ( symmetric-neighborhood-Metric-Space ( M) ( ε'⁺) ( x k) @@ -253,7 +254,7 @@ module _ in rec-coproduct ( λ mε≤mδ → - is-monotonic-structure-Metric-Space + monotonic-neighborhood-Metric-Space ( M) ( xmε) ( xmδ) @@ -267,14 +268,14 @@ module _ ( mδ) ( mε≤mδ))) ( λ mδ≤mε → - is-monotonic-structure-Metric-Space + monotonic-neighborhood-Metric-Space ( M) ( xmε) ( xmδ) ( δ⁺) ( ε⁺ +ℚ⁺ δ⁺) ( le-left-add-rational-ℚ⁺ δ ε⁺) - ( is-symmetric-structure-Metric-Space + ( symmetric-neighborhood-Metric-Space ( M) ( δ⁺) ( xmδ) @@ -335,7 +336,7 @@ module _ xn = map-cauchy-sequence-Metric-Space M x n xm = map-cauchy-sequence-Metric-Space M x m in - is-monotonic-structure-Metric-Space + monotonic-neighborhood-Metric-Space ( M) ( xm) ( lim) @@ -347,7 +348,7 @@ module _ ( ε) ( 2ε'<ε) ( preserves-le-left-add-ℚ ε' ε'' ε' (le-mediant-zero-ℚ⁺ ε'⁺))) - ( is-triangular-structure-Metric-Space + ( triangular-neighborhood-Metric-Space ( M) ( xm) ( xn) @@ -358,7 +359,7 @@ module _ ( λ d → neighborhood-Metric-Space M d xn lim) ( eq-add-split-ℚ⁺ ε'⁺) ( H ε''⁺ (right-summand-split-ℚ⁺ ε'⁺))) - ( is-symmetric-structure-Metric-Space + ( symmetric-neighborhood-Metric-Space ( M) ( ε''⁺) ( xn) @@ -424,7 +425,7 @@ module _ 1/m' = positive-reciprocal-rational-ℕ⁺ m' 1/k' = positive-reciprocal-rational-ℕ⁺ k' in - is-monotonic-structure-Metric-Space + monotonic-neighborhood-Metric-Space ( M) ( xm) ( xk) @@ -532,7 +533,7 @@ module _ ( n) ( right-leq-max-ℕ n₁ n₂) in - is-monotonic-structure-Metric-Space + monotonic-neighborhood-Metric-Space ( M) ( xε) ( lim) @@ -542,7 +543,7 @@ module _ ( λ y → le-ℚ⁺ y (ε⁺ +ℚ⁺ δ⁺)) ( associative-add-ℚ⁺ ε⁺ δ'⁺ δ'⁺) ( preserves-le-right-add-ℚ ε (δ' +ℚ δ') δ 2δ'<δ)) - ( is-triangular-structure-Metric-Space + ( triangular-neighborhood-Metric-Space ( M) ( xε) ( x1/n') @@ -550,7 +551,7 @@ module _ ( ε⁺ +ℚ⁺ δ'⁺) ( δ'⁺) ( x1/n'-l-neighborhood) - ( is-monotonic-structure-Metric-Space + ( monotonic-neighborhood-Metric-Space ( M) ( xε) ( x1/n') diff --git a/src/metric-spaces/closed-premetric-structures.lagda.md b/src/metric-spaces/closed-premetric-structures.lagda.md deleted file mode 100644 index a43dbe95ae..0000000000 --- a/src/metric-spaces/closed-premetric-structures.lagda.md +++ /dev/null @@ -1,381 +0,0 @@ -# Closed premetric structures - -```agda -module metric-spaces.closed-premetric-structures 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.extensional-premetric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.ordering-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -A [premetric](metric-spaces.premetric-structures.md) on a type `A` is -{{#concept "closed" Disambiguation="premetric" Agda=is-closed-Premetric}} 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.premetric-structures.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 closed premetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-closed-prop-Premetric : Prop (l1 ⊔ l2) - is-closed-prop-Premetric = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( A) - ( λ x → - Π-Prop - ( A) - ( λ y → - hom-Prop - ( Π-Prop - ( ℚ⁺) - ( λ δ → B (ε +ℚ⁺ δ) x y)) - ( B ε x y)))) - - is-closed-Premetric : UU (l1 ⊔ l2) - is-closed-Premetric = type-Prop is-closed-prop-Premetric - - is-prop-is-closed-Premetric : is-prop is-closed-Premetric - is-prop-is-closed-Premetric = - is-prop-type-Prop is-closed-prop-Premetric -``` - -### The closure of a premetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - closure-Premetric : Premetric l2 A - closure-Premetric ε x y = Π-Prop ℚ⁺ (λ δ → B (ε +ℚ⁺ δ) x y) -``` - -## Properties - -### The closure of a premetric is closed - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-closed-closure-Premetric : - is-closed-Premetric (closure-Premetric B) - is-closed-closure-Premetric ε x y H δ = - tr - ( λ d → neighborhood-Premetric B d x y) - ( ( associative-add-ℚ⁺ - ( ε) - ( left-summand-split-ℚ⁺ δ) - ( right-summand-split-ℚ⁺ δ)) ∙ - ( ap (add-ℚ⁺ ε) (eq-add-split-ℚ⁺ δ))) - ( H (left-summand-split-ℚ⁺ δ) (right-summand-split-ℚ⁺ δ)) -``` - -### The closure of a monotonic closed premetric is itself - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-monotonic-Premetric B) - (C : is-closed-Premetric B) - where - - eq-closure-closed-monotonic-Premetric : closure-Premetric B = B - eq-closure-closed-monotonic-Premetric = - eq-Eq-Premetric - ( closure-Premetric B) - ( B) - ( λ ε x y → - ( C ε x y) , - ( λ H δ → M x y ε (ε +ℚ⁺ δ) (le-left-add-ℚ⁺ ε δ) H)) -``` - -### Taking the closure of a premetric is idempotent - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-idempotent-closure-Premetric : - closure-Premetric (closure-Premetric B) = closure-Premetric B - is-idempotent-closure-Premetric = - antisymmetric-leq-Premetric - ( closure-Premetric (closure-Premetric B)) - ( closure-Premetric B) - ( λ d x y H δ → - tr - ( λ s → neighborhood-Premetric B s x y) - ( ( associative-add-ℚ⁺ - ( d) - ( left-summand-split-ℚ⁺ δ) - ( right-summand-split-ℚ⁺ δ)) ∙ - ( ap (add-ℚ⁺ d) (eq-add-split-ℚ⁺ δ))) - ( H (left-summand-split-ℚ⁺ δ) (right-summand-split-ℚ⁺ δ))) - ( λ d x y H δ₁ δ₂ → - inv-tr - ( λ s → neighborhood-Premetric B s x y) - ( associative-add-ℚ⁺ d δ₁ δ₂) - ( H (δ₁ +ℚ⁺ δ₂))) -``` - -### Indistinguishable elements in the closure of a premetric are indistinguishable - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (x y : A) - where - - is-indistinguishable-is-indistinguishable-closure-Premetric : - is-indistinguishable-Premetric (closure-Premetric B) x y → - is-indistinguishable-Premetric B x y - is-indistinguishable-is-indistinguishable-closure-Premetric H ε = - tr - ( λ d → neighborhood-Premetric B d x y) - ( eq-add-split-ℚ⁺ ε) - ( H (left-summand-split-ℚ⁺ ε) (right-summand-split-ℚ⁺ ε)) -``` - -### Indistinguishable elements in a premetric are indistinguishable in its closure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (x y : A) - where - - is-indistinguishable-closure-is-indistinguishable-Premetric : - is-indistinguishable-Premetric B x y → - is-indistinguishable-Premetric (closure-Premetric B) x y - is-indistinguishable-closure-is-indistinguishable-Premetric H ε δ = - H (ε +ℚ⁺ δ) -``` - -### Indistiguishability in a premetric or its closure are equal - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (x y : A) - where - - eq-indistinguishable-prop-closure-Premetric : - is-indistinguishable-prop-Premetric B x y = - is-indistinguishable-prop-Premetric (closure-Premetric B) x y - eq-indistinguishable-prop-closure-Premetric = - eq-iff - ( is-indistinguishable-closure-is-indistinguishable-Premetric B x y) - ( is-indistinguishable-is-indistinguishable-closure-Premetric B x y) - - eq-indistinguishable-closure-Premetric : - is-indistinguishable-Premetric B x y = - is-indistinguishable-Premetric (closure-Premetric B) x y - eq-indistinguishable-closure-Premetric = - ap type-Prop eq-indistinguishable-prop-closure-Premetric -``` - -### The closure of a reflexive premetric is reflexive - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (R : is-reflexive-Premetric B) - where - - is-reflexive-closure-Premetric : - is-reflexive-Premetric (closure-Premetric B) - is-reflexive-closure-Premetric ε x δ = R (ε +ℚ⁺ δ) x -``` - -### The closure of a symmetric premetric is symmetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (S : is-symmetric-Premetric B) - where - - is-symmetric-closure-Premetric : - is-symmetric-Premetric (closure-Premetric B) - is-symmetric-closure-Premetric ε x y H δ = - S (ε +ℚ⁺ δ) x y (H δ) -``` - -### The closure of a local premetric is local - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (L : is-local-Premetric B) - where - - is-local-closure-Premetric : is-local-Premetric (closure-Premetric B) - is-local-closure-Premetric x = - tr - ( λ S → is-prop (Σ A S)) - ( eq-htpy (eq-indistinguishable-closure-Premetric B x)) - ( L x) -``` - -### The closure of a monotonic premetric is monotonic - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-monotonic-Premetric B) - where - - is-monotonic-closure-Premetric : - is-monotonic-Premetric (closure-Premetric B) - is-monotonic-closure-Premetric x y d₁ d₂ I H δ = - M ( x) - ( y) - ( d₁ +ℚ⁺ δ) - ( d₂ +ℚ⁺ δ) - ( preserves-le-left-add-ℚ - ( rational-ℚ⁺ δ) - ( rational-ℚ⁺ d₁) - ( rational-ℚ⁺ d₂) - ( I)) - ( H δ) -``` - -### The closure of a triangular premetric is triangular - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (T : is-triangular-Premetric B) - where - - is-triangular-closure-Premetric : - is-triangular-Premetric (closure-Premetric B) - is-triangular-closure-Premetric x y z d₁ d₂ H K δ = - tr - ( λ s → neighborhood-Premetric B s x z) - ( ( interchange-law-add-add-ℚ⁺ - ( d₁) - ( left-summand-split-ℚ⁺ δ) - ( d₂) - ( right-summand-split-ℚ⁺ δ)) ∙ - ( ap (add-ℚ⁺ (d₁ +ℚ⁺ d₂)) (eq-add-split-ℚ⁺ δ))) - ( T - ( x) - ( y) - ( z) - ( d₁ +ℚ⁺ left-summand-split-ℚ⁺ δ) - ( d₂ +ℚ⁺ right-summand-split-ℚ⁺ δ) - ( H (right-summand-split-ℚ⁺ δ)) - ( K (left-summand-split-ℚ⁺ δ))) -``` - -### The closure of a tight premetric is tight - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (T : is-tight-Premetric B) - where - - is-tight-closure-Premetric : is-tight-Premetric (closure-Premetric B) - is-tight-closure-Premetric x y = - T x y ∘ is-indistinguishable-is-indistinguishable-closure-Premetric B x y -``` - -### The closure operation preserves the ordering on premetric structures - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B B' : Premetric l2 A) - where - - preserves-leq-closure-Premetric : - leq-Premetric B B' → - leq-Premetric (closure-Premetric B) (closure-Premetric B') - preserves-leq-closure-Premetric H ε x y I δ = H (ε +ℚ⁺ δ) x y (I δ) -``` - -### The closure of a monotonic premetric is coarser than it - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-monotonic-Premetric B) - where - - leq-closure-monotonic-Premetric : leq-Premetric B (closure-Premetric B) - leq-closure-monotonic-Premetric ε x y H δ = - M x y ε (ε +ℚ⁺ δ) (le-left-add-ℚ⁺ ε δ) H -``` - -### The closure of a premetric is finer that all monotonic closed premetrics coarser than it - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B B' : Premetric l2 A) - (M : is-monotonic-Premetric B') (C : is-closed-Premetric B') - (I : leq-Premetric B B') - where - - leq-closure-leq-closed-monotonic-Premetric : - leq-Premetric (closure-Premetric B) B' - leq-closure-leq-closed-monotonic-Premetric = - tr - ( leq-Premetric (closure-Premetric B)) - ( eq-closure-closed-monotonic-Premetric B' M C) - ( preserves-leq-closure-Premetric B B' I) -``` diff --git a/src/metric-spaces/complete-metric-spaces-WIP.lagda.md b/src/metric-spaces/complete-metric-spaces-WIP.lagda.md deleted file mode 100644 index 8084e84bc6..0000000000 --- a/src/metric-spaces/complete-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,172 +0,0 @@ -# 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 diff --git a/src/metric-spaces/complete-metric-spaces.lagda.md b/src/metric-spaces/complete-metric-spaces.lagda.md index 6a311ad7be..6914e67ad3 100644 --- a/src/metric-spaces/complete-metric-spaces.lagda.md +++ b/src/metric-spaces/complete-metric-spaces.lagda.md @@ -20,6 +20,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces ``` diff --git a/src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md deleted file mode 100644 index 7fe2777b1c..0000000000 --- a/src/metric-spaces/continuous-functions-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,70 +0,0 @@ -# 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/continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md index bb8d96b5d3..239e8cfec0 100644 --- a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md @@ -17,8 +17,8 @@ open import foundation.propositions open import foundation.subtypes open import foundation.universe-levels -open import metric-spaces.continuous-functions-premetric-spaces open import metric-spaces.functions-metric-spaces +open import metric-spaces.limits-of-functions-metric-spaces open import metric-spaces.metric-spaces ``` @@ -28,48 +28,44 @@ open import metric-spaces.metric-spaces 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-Metric-Space}} -at a point `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 `f x`. -`m` is called a modulus of continuity of `f` at `x`. +{{#concept "continuous" Disambiguation="function between metric spaces at a point" WDID=Q170058 WD="continuous function" Agda=is-continuous-at-point-function-Metric-Space}} +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 l1 l2) (Y : Metric-Space l3 l4) - (f : map-type-Metric-Space X Y) + {l1 l2 l3 l4 : Level} + (X : Metric-Space l1 l2) + (Y : Metric-Space l3 l4) + (f : type-function-Metric-Space X Y) + (x : type-Metric-Space X) where - is-modulus-of-continuity-at-point-prop-Metric-Space : - (x : type-Metric-Space X) → (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) - is-modulus-of-continuity-at-point-prop-Metric-Space = - is-modulus-of-continuity-at-point-prop-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) + is-continuous-at-point-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) + is-continuous-at-point-prop-function-Metric-Space = + is-pt-limit-prop-function-Metric-Space X Y f x (f x) - is-modulus-of-continuity-at-point-Metric-Space : - (x : type-Metric-Space X) → UU (l1 ⊔ l2 ⊔ l4) - is-modulus-of-continuity-at-point-Metric-Space = - is-modulus-of-continuity-at-point-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) + is-continuous-at-point-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) + is-continuous-at-point-function-Metric-Space = + is-pt-limit-function-Metric-Space X Y f x (f x) - is-continuous-at-point-prop-Metric-Space : - (x : type-Metric-Space X) → Prop (l1 ⊔ l2 ⊔ l4) - is-continuous-at-point-prop-Metric-Space = - is-continuous-at-point-prop-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) + is-modulus-of-continuity-at-point-prop-function-Metric-Space : + (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) + is-modulus-of-continuity-at-point-prop-function-Metric-Space = + is-modulus-of-pt-limit-prop-function-Metric-Space X Y f x (f x) - is-continuous-at-point-Metric-Space : - (x : type-Metric-Space X) → UU (l1 ⊔ l2 ⊔ l4) - is-continuous-at-point-Metric-Space = - is-continuous-at-point-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) + is-modulus-of-continuity-at-point-function-Metric-Space : + (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l2 ⊔ l4) + is-modulus-of-continuity-at-point-function-Metric-Space = + is-modulus-of-pt-limit-function-Metric-Space X Y f x (f x) + + modulus-of-continuity-at-point-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) + modulus-of-continuity-at-point-function-Metric-Space = + type-subtype + is-modulus-of-continuity-at-point-prop-function-Metric-Space ``` diff --git a/src/metric-spaces/continuous-functions-premetric-spaces.lagda.md b/src/metric-spaces/continuous-functions-premetric-spaces.lagda.md deleted file mode 100644 index 178bd2bced..0000000000 --- a/src/metric-spaces/continuous-functions-premetric-spaces.lagda.md +++ /dev/null @@ -1,69 +0,0 @@ -# Continuous functions between premetric spaces - -```agda -module metric-spaces.continuous-functions-premetric-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.premetric-spaces -``` - -
- -## Idea - -A function `f` between [premetric spaces](metric-spaces.premetric-spaces.md) `X` -and `Y` is -{{#concept "continuous" Disambiguation="function between premetric spaces at a point" WDID=Q170058 WD="continuous function" Agda=is-continuous-at-point-Premetric-Space}} -at a point `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 `f x`. -`m` is called a modulus of continuity of `f` at `x`. - -## Definitions - -```agda -module _ - {l1 l2 l3 l4 : Level} (X : Premetric-Space l1 l2) (Y : Premetric-Space l3 l4) - (f : map-type-Premetric-Space X Y) - where - - is-modulus-of-continuity-at-point-prop-Premetric-Space : - (x : type-Premetric-Space X) → (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) - is-modulus-of-continuity-at-point-prop-Premetric-Space x m = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( type-Premetric-Space X) - ( λ x' → - structure-Premetric-Space X (m ε) x x' ⇒ - structure-Premetric-Space Y ε (f x) (f x'))) - - is-modulus-of-continuity-at-point-Premetric-Space : - (x : type-Premetric-Space X) → UU (l1 ⊔ l2 ⊔ l4) - is-modulus-of-continuity-at-point-Premetric-Space x = - type-subtype (is-modulus-of-continuity-at-point-prop-Premetric-Space x) - - is-continuous-at-point-prop-Premetric-Space : - (x : type-Premetric-Space X) → Prop (l1 ⊔ l2 ⊔ l4) - is-continuous-at-point-prop-Premetric-Space x = - is-inhabited-subtype-Prop - (is-modulus-of-continuity-at-point-prop-Premetric-Space x) - - is-continuous-at-point-Premetric-Space : - (x : type-Premetric-Space X) → UU (l1 ⊔ l2 ⊔ l4) - is-continuous-at-point-Premetric-Space x = - type-Prop (is-continuous-at-point-prop-Premetric-Space x) -``` 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 deleted file mode 100644 index a08f84aa68..0000000000 --- a/src/metric-spaces/convergent-cauchy-approximations-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,142 +0,0 @@ -# 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/convergent-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md index 21b291a7ff..4f90c77140 100644 --- a/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md @@ -10,12 +10,15 @@ module metric-spaces.convergent-cauchy-approximations-metric-spaces where 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 -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces ``` @@ -27,8 +30,8 @@ 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}} if it has a -[limit](metric-spaces.limits-of-cauchy-approximations-premetric-spaces.md). -Because limits of Cauchy approximations in metric spaces are unique, this is a +[limit](metric-spaces.limits-of-cauchy-approximations-metric-spaces.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 @@ -41,24 +44,23 @@ module _ (f : cauchy-approximation-Metric-Space A) where - is-limit-cauchy-approximation-prop-Metric-Space : - type-Metric-Space A → Prop l2 - is-limit-cauchy-approximation-prop-Metric-Space = - is-limit-cauchy-approximation-prop-Premetric-Space - ( premetric-Metric-Space A) - ( f) - - is-limit-cauchy-approximation-Metric-Space : - type-Metric-Space A → UU l2 - is-limit-cauchy-approximation-Metric-Space = - is-limit-cauchy-approximation-Premetric-Space - ( premetric-Metric-Space A) - ( f) - is-convergent-cauchy-approximation-Metric-Space : UU (l1 ⊔ l2) is-convergent-cauchy-approximation-Metric-Space = Σ ( type-Metric-Space A) - ( is-limit-cauchy-approximation-Metric-Space) + ( is-limit-cauchy-approximation-Metric-Space A f) + + limit-is-convergent-cauchy-approximation-Metric-Space : + is-convergent-cauchy-approximation-Metric-Space → + type-Metric-Space A + limit-is-convergent-cauchy-approximation-Metric-Space = pr1 + + is-limit-limit-is-convergent-cauchy-approximation-Metric-Space : + (x : is-convergent-cauchy-approximation-Metric-Space) → + is-limit-cauchy-approximation-Metric-Space + ( A) + ( f) + ( limit-is-convergent-cauchy-approximation-Metric-Space x) + is-limit-limit-is-convergent-cauchy-approximation-Metric-Space = pr2 abstract is-prop-is-convergent-cauchy-approximation-Metric-Space : @@ -67,17 +69,16 @@ module _ is-prop-all-elements-equal ( λ x y → eq-type-subtype - ( is-limit-cauchy-approximation-prop-Premetric-Space - ( premetric-Metric-Space A) - ( f)) - ( all-elements-equal-is-limit-cauchy-approximation-triangular-symmetric-extensional-Premetric-Space - ( premetric-Metric-Space A) - ( is-symmetric-structure-Metric-Space A) - ( is-triangular-structure-Metric-Space A) - ( is-extensional-structure-Metric-Space A) + ( is-limit-cauchy-approximation-prop-Metric-Space A f) + ( all-eq-is-limit-cauchy-approximation-Metric-Space + ( A) ( f) - ( pr2 x) - ( pr2 y))) + ( limit-is-convergent-cauchy-approximation-Metric-Space x) + ( limit-is-convergent-cauchy-approximation-Metric-Space y) + ( is-limit-limit-is-convergent-cauchy-approximation-Metric-Space + x) + ( is-limit-limit-is-convergent-cauchy-approximation-Metric-Space + y))) is-convergent-prop-cauchy-approximation-Metric-Space : Prop (l1 ⊔ l2) is-convergent-prop-cauchy-approximation-Metric-Space = @@ -107,7 +108,8 @@ module _ cauchy-approximation-Metric-Space A approximation-convergent-cauchy-approximation-Metric-Space = pr1 f - map-convergent-cauchy-approximation-Metric-Space : ℚ⁺ → type-Metric-Space A + map-convergent-cauchy-approximation-Metric-Space : + ℚ⁺ → type-Metric-Space A map-convergent-cauchy-approximation-Metric-Space = map-cauchy-approximation-Metric-Space A @@ -125,7 +127,8 @@ module _ A approximation-convergent-cauchy-approximation-Metric-Space - limit-convergent-cauchy-approximation-Metric-Space : type-Metric-Space A + limit-convergent-cauchy-approximation-Metric-Space : + type-Metric-Space A limit-convergent-cauchy-approximation-Metric-Space = pr1 (pr2 f) is-limit-limit-convergent-cauchy-approximation-Metric-Space : diff --git a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md index 6785e6aaf0..7ee9da772c 100644 --- a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md @@ -14,8 +14,6 @@ open import foundation.subtypes open import foundation.universe-levels open import metric-spaces.limits-of-sequences-metric-spaces -open import metric-spaces.limits-of-sequences-premetric-spaces -open import metric-spaces.limits-of-sequences-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.sequences-metric-spaces open import metric-spaces.short-functions-metric-spaces @@ -102,9 +100,9 @@ module _ has-limit-seq-short-map-convergent-sequence-Metric-Space = ( map-short-function-Metric-Space A B f ( limit-convergent-sequence-Metric-Space A u)) , - ( short-map-limit-sequence-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + ( short-map-limit-sequence-Metric-Space + ( A) + ( B) ( f) ( seq-convergent-sequence-Metric-Space A u) ( limit-convergent-sequence-Metric-Space A u) diff --git a/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md b/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md deleted file mode 100644 index a4496a0e54..0000000000 --- a/src/metric-spaces/dependent-products-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,268 +0,0 @@ -# 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 = - 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 - -### 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/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index 8b5a6fddbd..40fd59815c 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -18,18 +18,17 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.extensional-premetric-structures -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces +open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.metric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.saturated-metric-spaces +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.pseudometric-spaces +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 -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods ``` @@ -39,10 +38,9 @@ open import metric-spaces.triangular-premetric-structures A family of [metric spaces](metric-spaces.metric-spaces.md) over a type produces a {{#concept "product metric space" Agda=Π-Metric-Space}} 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 +`g` are in a [`d`-neighborhood](metric-spaces.rational-neighborhoods.md) in the +product structure if this holds for all the evaluations `f x` and `g x`. I.e, +[upper bounds](metric-spaces.rational-neighborhoods.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 @@ -60,24 +58,28 @@ module _ type-Π-Metric-Space : UU (l ⊔ l1) type-Π-Metric-Space = (x : A) → type-Metric-Space (P x) - structure-Π-Metric-Space : Premetric (l ⊔ l2) type-Π-Metric-Space - structure-Π-Metric-Space d f g = - Π-Prop A (λ x → structure-Metric-Space (P x) d (f x) (g x)) - - is-reflexive-structure-Π-Metric-Space : - is-reflexive-Premetric structure-Π-Metric-Space - is-reflexive-structure-Π-Metric-Space d f a = - is-reflexive-structure-Metric-Space (P a) d (f a) - - is-symmetric-structure-Π-Metric-Space : - is-symmetric-Premetric structure-Π-Metric-Space - is-symmetric-structure-Π-Metric-Space d f g H a = - is-symmetric-structure-Metric-Space (P a) d (f a) (g a) (H a) - - is-triangular-structure-Π-Metric-Space : - is-triangular-Premetric structure-Π-Metric-Space - is-triangular-structure-Π-Metric-Space f g h d₁ d₂ H K a = - is-triangular-structure-Metric-Space + neighborhood-prop-Π-Metric-Space : + Rational-Neighborhood-Relation (l ⊔ l2) type-Π-Metric-Space + neighborhood-prop-Π-Metric-Space d f g = + Π-Prop A (λ x → neighborhood-prop-Metric-Space (P x) d (f x) (g x)) + + is-reflexive-neighborhood-Π-Metric-Space : + is-reflexive-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space + is-reflexive-neighborhood-Π-Metric-Space d f a = + refl-neighborhood-Metric-Space (P a) d (f a) + + is-symmetric-neighborhood-Π-Metric-Space : + is-symmetric-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space + is-symmetric-neighborhood-Π-Metric-Space d f g H a = + symmetric-neighborhood-Metric-Space (P a) d (f a) (g a) (H a) + + is-triangular-neighborhood-Π-Metric-Space : + is-triangular-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space + is-triangular-neighborhood-Π-Metric-Space f g h d₁ d₂ H K a = + triangular-neighborhood-Metric-Space ( P a) ( f a) ( g a) @@ -87,36 +89,51 @@ module _ ( H a) ( K a) - is-local-structure-Π-Metric-Space : - is-local-Premetric structure-Π-Metric-Space - is-local-structure-Π-Metric-Space = - is-local-is-tight-Premetric - ( structure-Π-Metric-Space) + is-saturated-neighborhood-Π-Metric-Space : + is-saturated-Rational-Neighborhood-Relation + neighborhood-prop-Π-Metric-Space + is-saturated-neighborhood-Π-Metric-Space ε x y H a = + saturated-neighborhood-Metric-Space + ( P a) + ( ε) + ( x a) + ( y a) + ( λ d → H d a) + + pseudometric-space-Π-Metric-Space : Pseudometric-Space (l ⊔ l1) (l ⊔ l2) + pseudometric-space-Π-Metric-Space = + ( type-Π-Metric-Space) , + ( neighborhood-prop-Π-Metric-Space , + is-reflexive-neighborhood-Π-Metric-Space , + is-symmetric-neighborhood-Π-Metric-Space , + is-triangular-neighborhood-Π-Metric-Space , + is-saturated-neighborhood-Π-Metric-Space) + + is-extensional-pseudometric-space-Π-Metric-Space : + is-extensional-Pseudometric-Space + 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 → - is-tight-structure-Metric-Space + eq-sim-Metric-Space ( P a) ( f a) ( g a) ( λ d → H d a))) - is-pseudometric-structure-Π-Metric-Space : - is-pseudometric-Premetric structure-Π-Metric-Space - is-pseudometric-structure-Π-Metric-Space = - is-reflexive-structure-Π-Metric-Space , - is-symmetric-structure-Π-Metric-Space , - is-triangular-structure-Π-Metric-Space - - is-metric-structure-Π-Metric-Space : - is-metric-Premetric structure-Π-Metric-Space - is-metric-structure-Π-Metric-Space = - is-pseudometric-structure-Π-Metric-Space , - is-local-structure-Π-Metric-Space - Π-Metric-Space : Metric-Space (l ⊔ l1) (l ⊔ l2) - pr1 Π-Metric-Space = type-Π-Metric-Space , structure-Π-Metric-Space - pr2 Π-Metric-Space = is-metric-structure-Π-Metric-Space + Π-Metric-Space = + make-Metric-Space + type-Π-Metric-Space + neighborhood-prop-Π-Metric-Space + is-reflexive-neighborhood-Π-Metric-Space + is-symmetric-neighborhood-Π-Metric-Space + is-triangular-neighborhood-Π-Metric-Space + is-saturated-neighborhood-Π-Metric-Space + is-extensional-pseudometric-space-Π-Metric-Space ``` ## Properties @@ -142,20 +159,6 @@ module _ short-ev-Π-Metric-Space = (ev a) , (is-short-ev-Π-Metric-Space) ``` -### Dependent products of saturated metric spaces are saturated - -```agda -module _ - {l l1 l2 : Level} (A : UU l) (P : A → Metric-Space l1 l2) - (Π-saturated : (a : A) → is-saturated-Metric-Space (P a)) - where - - is-saturated-Π-is-saturated-Metric-Space : - is-saturated-Metric-Space (Π-Metric-Space A P) - is-saturated-Π-is-saturated-Metric-Space ε x y H a = - Π-saturated a ε (x a) (y a) (λ d → H d a) -``` - ### The partial applications of a Cauchy approximation in a dependent product metric space are Cauchy approximations ```agda diff --git a/src/metric-spaces/discrete-premetric-structures.lagda.md b/src/metric-spaces/discrete-premetric-structures.lagda.md index e7611f1876..28e61e912c 100644 --- a/src/metric-spaces/discrete-premetric-structures.lagda.md +++ b/src/metric-spaces/discrete-premetric-structures.lagda.md @@ -28,13 +28,6 @@ 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.extensional-premetric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures ``` @@ -53,108 +46,108 @@ they are merely equal, in which case they are indistinguishable. ### The property of being a semidiscrete premetric ```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-semidiscrete-prop-Premetric : Prop (l1 ⊔ l2) - is-semidiscrete-prop-Premetric = - Π-Prop - ( ℚ⁺) - ( λ d → - Π-Prop - ( A) - ( λ x → - Π-Prop - ( A) - ( λ y → - hom-Prop - ( B d x y) - ( trunc-Prop (x = y))))) - - is-semidiscrete-Premetric : UU (l1 ⊔ l2) - is-semidiscrete-Premetric = type-Prop is-semidiscrete-prop-Premetric - - is-prop-is-semidiscrete-Premetric : is-prop is-semidiscrete-Premetric - is-prop-is-semidiscrete-Premetric = - is-prop-type-Prop is-semidiscrete-prop-Premetric +-- module _ +-- {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) +-- where + +-- is-semidiscrete-prop-Premetric : Prop (l1 ⊔ l2) +-- is-semidiscrete-prop-Premetric = +-- Π-Prop +-- ( ℚ⁺) +-- ( λ d → +-- Π-Prop +-- ( A) +-- ( λ x → +-- Π-Prop +-- ( A) +-- ( λ y → +-- hom-Prop +-- ( B d x y) +-- ( trunc-Prop (x = y))))) + +-- is-semidiscrete-Premetric : UU (l1 ⊔ l2) +-- is-semidiscrete-Premetric = type-Prop is-semidiscrete-prop-Premetric + +-- is-prop-is-semidiscrete-Premetric : is-prop is-semidiscrete-Premetric +-- is-prop-is-semidiscrete-Premetric = +-- is-prop-type-Prop is-semidiscrete-prop-Premetric ``` ### The property of being a discrete premetric ```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-discrete-prop-Premetric : Prop (l1 ⊔ l2) - is-discrete-prop-Premetric = - product-Prop - ( is-reflexive-prop-Premetric B) - ( is-semidiscrete-prop-Premetric B) - - is-discrete-Premetric : UU (l1 ⊔ l2) - is-discrete-Premetric = type-Prop is-discrete-prop-Premetric - - is-prop-is-discrete-Premetric : is-prop is-discrete-Premetric - is-prop-is-discrete-Premetric = - is-prop-type-Prop is-discrete-prop-Premetric +-- module _ +-- {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) +-- where + +-- is-discrete-prop-Premetric : Prop (l1 ⊔ l2) +-- is-discrete-prop-Premetric = +-- product-Prop +-- ( is-reflexive-prop-Premetric B) +-- ( is-semidiscrete-prop-Premetric B) + +-- is-discrete-Premetric : UU (l1 ⊔ l2) +-- is-discrete-Premetric = type-Prop is-discrete-prop-Premetric + +-- is-prop-is-discrete-Premetric : is-prop is-discrete-Premetric +-- is-prop-is-discrete-Premetric = +-- is-prop-type-Prop is-discrete-prop-Premetric ``` ### The type of discrete premetrics on a type ```agda -module _ - {l1 : Level} (l2 : Level) (A : UU l1) - where +-- module _ +-- {l1 : Level} (l2 : Level) (A : UU l1) +-- where - Discrete-Premetric : UU (l1 ⊔ lsuc l2) - Discrete-Premetric = Σ (Premetric l2 A) is-discrete-Premetric +-- Discrete-Premetric : UU (l1 ⊔ lsuc l2) +-- Discrete-Premetric = Σ (Premetric l2 A) is-discrete-Premetric ``` ```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Discrete-Premetric l2 A) - where - - premetric-Discrete-Premetric : Premetric l2 A - premetric-Discrete-Premetric = pr1 B - - is-discrete-premetric-Discrete-Premetric : - is-discrete-Premetric premetric-Discrete-Premetric - is-discrete-premetric-Discrete-Premetric = pr2 B - - is-reflexive-premetric-Discrete-Premetric : - is-reflexive-Premetric premetric-Discrete-Premetric - is-reflexive-premetric-Discrete-Premetric = - pr1 is-discrete-premetric-Discrete-Premetric - - is-semidiscrete-premetric-Discrete-Premetric : - is-semidiscrete-Premetric premetric-Discrete-Premetric - is-semidiscrete-premetric-Discrete-Premetric = - pr2 is-discrete-premetric-Discrete-Premetric +-- module _ +-- {l1 l2 : Level} {A : UU l1} (B : Discrete-Premetric l2 A) +-- where + +-- premetric-Discrete-Premetric : Premetric l2 A +-- premetric-Discrete-Premetric = pr1 B + +-- is-discrete-premetric-Discrete-Premetric : +-- is-discrete-Premetric premetric-Discrete-Premetric +-- is-discrete-premetric-Discrete-Premetric = pr2 B + +-- is-reflexive-premetric-Discrete-Premetric : +-- is-reflexive-Premetric premetric-Discrete-Premetric +-- is-reflexive-premetric-Discrete-Premetric = +-- pr1 is-discrete-premetric-Discrete-Premetric + +-- is-semidiscrete-premetric-Discrete-Premetric : +-- is-semidiscrete-Premetric premetric-Discrete-Premetric +-- is-semidiscrete-premetric-Discrete-Premetric = +-- pr2 is-discrete-premetric-Discrete-Premetric ``` ### The canonical discrete premetric on a type ```agda -module _ - {l1 : Level} (A : UU l1) - where - - premetric-discrete-Premetric : Premetric l1 A - premetric-discrete-Premetric d x y = trunc-Prop (x = y) - - is-discrete-premetric-discrete-Premetric : - is-discrete-Premetric premetric-discrete-Premetric - is-discrete-premetric-discrete-Premetric = - (λ x d → unit-trunc-Prop refl) , - (λ d x y → id) - - discrete-Premetric : Discrete-Premetric l1 A - discrete-Premetric = - premetric-discrete-Premetric , - is-discrete-premetric-discrete-Premetric +-- module _ +-- {l1 : Level} (A : UU l1) +-- where + +-- premetric-discrete-Premetric : Premetric l1 A +-- premetric-discrete-Premetric d x y = trunc-Prop (x = y) + +-- is-discrete-premetric-discrete-Premetric : +-- is-discrete-Premetric premetric-discrete-Premetric +-- is-discrete-premetric-discrete-Premetric = +-- (λ x d → unit-trunc-Prop refl) , +-- (λ d x y → id) + +-- discrete-Premetric : Discrete-Premetric l1 A +-- discrete-Premetric = +-- premetric-discrete-Premetric , +-- is-discrete-premetric-discrete-Premetric ``` ## Properties @@ -164,72 +157,72 @@ module _ #### Any discrete premetric on a type is equivalent to the canonical discrete premetric ```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Discrete-Premetric l2 A) - (d : ℚ⁺) (x y : A) - where - - iff-premetric-discrete-Discrete-Premetric : - type-iff-Prop - ( premetric-Discrete-Premetric B d x y) - ( premetric-discrete-Premetric A d x y) - iff-premetric-discrete-Discrete-Premetric = - ( is-semidiscrete-premetric-Discrete-Premetric B d x y) , - ( rec-trunc-Prop - ( premetric-Discrete-Premetric B d x y) - ( λ e → - indistinguishable-eq-reflexive-Premetric - ( premetric-Discrete-Premetric B) - ( is-reflexive-premetric-Discrete-Premetric B) - ( e) - ( d))) +-- module _ +-- {l1 l2 : Level} {A : UU l1} (B : Discrete-Premetric l2 A) +-- (d : ℚ⁺) (x y : A) +-- where + +-- iff-premetric-discrete-Discrete-Premetric : +-- type-iff-Prop +-- ( premetric-Discrete-Premetric B d x y) +-- ( premetric-discrete-Premetric A d x y) +-- iff-premetric-discrete-Discrete-Premetric = +-- ( is-semidiscrete-premetric-Discrete-Premetric B d x y) , +-- ( rec-trunc-Prop +-- ( premetric-Discrete-Premetric B d x y) +-- ( λ e → +-- indistinguishable-eq-reflexive-Premetric +-- ( premetric-Discrete-Premetric B) +-- ( is-reflexive-premetric-Discrete-Premetric B) +-- ( e) +-- ( d))) ``` #### Any two discrete premetrics on a type are equivalent ```agda -module _ - {la lb lc : Level} {A : UU la} - (B : Discrete-Premetric lb A) (C : Discrete-Premetric lc A) - (d : ℚ⁺) (x y : A) - where - - iff-premetric-Discrete-Premetric : - type-iff-Prop - ( premetric-Discrete-Premetric B d x y) - ( premetric-Discrete-Premetric C d x y) - iff-premetric-Discrete-Premetric = - ( inv-iff (iff-premetric-discrete-Discrete-Premetric C d x y)) ∘iff - ( iff-premetric-discrete-Discrete-Premetric B d x y) +-- module _ +-- {la lb lc : Level} {A : UU la} +-- (B : Discrete-Premetric lb A) (C : Discrete-Premetric lc A) +-- (d : ℚ⁺) (x y : A) +-- where + +-- iff-premetric-Discrete-Premetric : +-- type-iff-Prop +-- ( premetric-Discrete-Premetric B d x y) +-- ( premetric-Discrete-Premetric C d x y) +-- iff-premetric-Discrete-Premetric = +-- ( inv-iff (iff-premetric-discrete-Discrete-Premetric C d x y)) ∘iff +-- ( iff-premetric-discrete-Discrete-Premetric B d x y) ``` #### Any two discrete premetrics on a type are equal ```agda -module _ - {l1 l2 : Level} {A : UU l1} (B B' : Discrete-Premetric l2 A) - where - - all-elements-equal-Discrete-Premetric : B = B' - all-elements-equal-Discrete-Premetric = - eq-type-subtype - ( is-discrete-prop-Premetric) - ( eq-Eq-Premetric - ( premetric-Discrete-Premetric B) - ( premetric-Discrete-Premetric B') - ( iff-premetric-Discrete-Premetric B B')) +-- module _ +-- {l1 l2 : Level} {A : UU l1} (B B' : Discrete-Premetric l2 A) +-- where + +-- all-elements-equal-Discrete-Premetric : B = B' +-- all-elements-equal-Discrete-Premetric = +-- eq-type-subtype +-- ( is-discrete-prop-Premetric) +-- ( eq-Eq-Premetric +-- ( premetric-Discrete-Premetric B) +-- ( premetric-Discrete-Premetric B') +-- ( iff-premetric-Discrete-Premetric B B')) ``` #### The type of discrete premetric structures on a type is a proposition ```agda -module _ - {l1 : Level} (l2 : Level) (A : UU l1) - where +-- module _ +-- {l1 : Level} (l2 : Level) (A : UU l1) +-- where - is-prop-Discrete-Premetric : is-prop (Discrete-Premetric l2 A) - is-prop-Discrete-Premetric = - is-prop-all-elements-equal all-elements-equal-Discrete-Premetric +-- is-prop-Discrete-Premetric : is-prop (Discrete-Premetric l2 A) +-- is-prop-Discrete-Premetric = +-- is-prop-all-elements-equal all-elements-equal-Discrete-Premetric ``` ### Properties of the canonical discrete premetric @@ -237,67 +230,67 @@ module _ #### The canonical discrete premetric on a type is symmetric ```agda -module _ - {l : Level} (A : UU l) - where - - is-symmetric-discrete-Premetric : - is-symmetric-Premetric (premetric-discrete-Premetric A) - is-symmetric-discrete-Premetric d x y = - rec-trunc-Prop - ( trunc-Prop (y = x)) - ( unit-trunc-Prop ∘ inv) +-- module _ +-- {l : Level} (A : UU l) +-- where + +-- is-symmetric-discrete-Premetric : +-- is-symmetric-Premetric (premetric-discrete-Premetric A) +-- is-symmetric-discrete-Premetric d x y = +-- rec-trunc-Prop +-- ( trunc-Prop (y = x)) +-- ( unit-trunc-Prop ∘ inv) ``` #### The canonical discrete premetric on a type is triangular ```agda -module _ - {l : Level} (A : UU l) - where - - is-triangular-discrete-Premetric : - is-triangular-Premetric (premetric-discrete-Premetric A) - is-triangular-discrete-Premetric x y z d₁ d₂ H = - rec-trunc-Prop - ( trunc-Prop (x = z)) - ( λ (i : x = y) → - rec-trunc-Prop - ( trunc-Prop (x = z)) - ( λ (j : y = z) → unit-trunc-Prop (i ∙ j)) - ( H)) +-- module _ +-- {l : Level} (A : UU l) +-- where + +-- is-triangular-discrete-Premetric : +-- is-triangular-Premetric (premetric-discrete-Premetric A) +-- is-triangular-discrete-Premetric x y z d₁ d₂ H = +-- rec-trunc-Prop +-- ( trunc-Prop (x = z)) +-- ( λ (i : x = y) → +-- rec-trunc-Prop +-- ( trunc-Prop (x = z)) +-- ( λ (j : y = z) → unit-trunc-Prop (i ∙ j)) +-- ( H)) ``` #### Neighbors in the canonical discrete premetric are indistinguishable ```agda -module _ - {l : Level} (A : UU l) (d : ℚ⁺) (x y : A) - where - - is-indistinguishable-is-in-neighborhood-discrete-Premetric : - neighborhood-Premetric (premetric-discrete-Premetric A) d x y → - is-indistinguishable-Premetric (premetric-discrete-Premetric A) x y - is-indistinguishable-is-in-neighborhood-discrete-Premetric H d = H +-- module _ +-- {l : Level} (A : UU l) (d : ℚ⁺) (x y : A) +-- where + +-- is-indistinguishable-is-in-neighborhood-discrete-Premetric : +-- neighborhood-Premetric (premetric-discrete-Premetric A) d x y → +-- is-indistinguishable-Premetric (premetric-discrete-Premetric A) x y +-- is-indistinguishable-is-in-neighborhood-discrete-Premetric H d = H ``` #### The canonical discrete premetric on a type is local if and only if this type is a set ```agda -module _ - {l : Level} {A : UU l} - where - - is-set-is-local-discrete-Premetric : - is-local-Premetric (premetric-discrete-Premetric A) → is-set A - is-set-is-local-discrete-Premetric = - ( is-set-has-extensional-Premetric (premetric-discrete-Premetric A)) ∘ - ( pair (is-reflexive-premetric-Discrete-Premetric (discrete-Premetric A))) - - is-local-is-set-discrete-Premetric : - is-set A → is-local-Premetric (premetric-discrete-Premetric A) - is-local-is-set-discrete-Premetric H = - is-local-is-tight-Premetric - ( premetric-discrete-Premetric A) - ( λ x y I → rec-trunc-Prop (Id-Prop (A , H) x y) id (I one-ℚ⁺)) +-- module _ +-- {l : Level} {A : UU l} +-- where + +-- is-set-is-local-discrete-Premetric : +-- is-local-Premetric (premetric-discrete-Premetric A) → is-set A +-- is-set-is-local-discrete-Premetric = +-- ( is-set-has-extensional-Premetric (premetric-discrete-Premetric A)) ∘ +-- ( pair (is-reflexive-premetric-Discrete-Premetric (discrete-Premetric A))) + +-- is-local-is-set-discrete-Premetric : +-- is-set A → is-local-Premetric (premetric-discrete-Premetric A) +-- is-local-is-set-discrete-Premetric H = +-- is-local-is-tight-Premetric +-- ( premetric-discrete-Premetric A) +-- ( λ x y I → rec-trunc-Prop (Id-Prop (A , H) x y) id (I one-ℚ⁺)) ``` diff --git a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md index d404b3bb1b..b566ef434d 100644 --- a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md +++ b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md @@ -50,7 +50,7 @@ module _ bounded-dist-prop-Metric-Space : Prop l2 bounded-dist-prop-Metric-Space = - ∃ ℚ⁺ (λ d → structure-Metric-Space A d x y) + ∃ ℚ⁺ (λ d → neighborhood-prop-Metric-Space A d x y) bounded-dist-Metric-Space : UU l2 bounded-dist-Metric-Space = @@ -100,7 +100,7 @@ module _ (x : type-Metric-Space A) → bounded-dist-Metric-Space A x x refl-bounded-dist-Metric-Space x = map-trunc-Prop - ( λ d → d , refl-structure-Metric-Space A d x) + ( λ d → d , refl-neighborhood-Metric-Space A d x) ( is-inhabited-ℚ⁺) ``` @@ -117,7 +117,7 @@ module _ bounded-dist-Metric-Space A y x symmetric-bounded-dist-Metric-Space x y = map-tot-exists - ( λ d → is-symmetric-structure-Metric-Space A d x y) + ( λ d → symmetric-neighborhood-Metric-Space A d x y) ``` ### Being at bounded distance in a metric space is transitive @@ -136,7 +136,7 @@ module _ map-binary-exists ( is-upper-bound-dist-Metric-Space A x z) ( λ dyz dxy → dxy +ℚ⁺ dyz) - ( λ dyz dxy → is-triangular-structure-Metric-Space A x y z dxy dyz) + ( λ dyz dxy → triangular-neighborhood-Metric-Space A x y z dxy dyz) ``` ### The preorder of elements at bounded distance in a metric space diff --git a/src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md b/src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md deleted file mode 100644 index 454284610d..0000000000 --- a/src/metric-spaces/equality-of-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,241 +0,0 @@ -# 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) -``` diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 9e6b49a73c..2c4976674b 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -7,53 +7,55 @@ module metric-spaces.equality-of-metric-spaces 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.equality-of-premetric-spaces -open import metric-spaces.isometric-equivalences-premetric-spaces +open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.functions-metric-spaces +open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.premetric-spaces +open import metric-spaces.pseudometric-spaces +open import metric-spaces.rational-neighborhoods ```
## Idea -Equality of [metric spaces](metric-spaces.metric-spaces.md) is equivalent to -[equality](metric-spaces.equality-of-premetric-spaces.md) of their carrier -[premetric spaces](metric-spaces.premetric-spaces.md); therefore, -{{#concept "isometric equality" Disambiguation="between metric spaces", Agda=isometric-eq-Metric-Space}} -between metric spaces characterizes their equality, which in turn means that -equality is characterized by -[isometric equivalence](metric-spaces.isometric-equivalences-premetric-spaces.md) -between their carrier premetric spaces. +[Equality](foundation-core.identity-types.md) of +[metric spaces](metric-spaces.metric-spaces.md) is characterized by the +following equivalent concepts: -## Definitions +- 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.md); -### Equality of metric spaces is equivalent to equality of their carrier premetric spaces +- 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.md); -```agda -module _ - {l1 l2 : Level} - (A B : Metric-Space l1 l2) - where +- a function between their carrier types that is both an + [equivalence](foundation-core.equivalences.md) and an + [isometry](metric-spaces.isometries-metric-spaces.md). - equiv-eq-premetric-Metric-Space : - (A = B) ≃ (premetric-Metric-Space A = premetric-Metric-Space B) - equiv-eq-premetric-Metric-Space = - extensionality-type-subtype' is-metric-prop-Premetric-Space A B -``` +## Definitions -### Isometric equality of metric spaces +### Isometric equality between metric spaces ```agda module _ @@ -63,9 +65,8 @@ module _ isometric-eq-Metric-Space : UU (lsuc l1 ⊔ l2 ⊔ l2') isometric-eq-Metric-Space = - isometric-eq-Premetric-Space - (premetric-Metric-Space A) - (premetric-Metric-Space B) + Σ (type-Metric-Space A = type-Metric-Space B) + (λ e → is-isometry-Metric-Space A B (map-eq e)) ``` ### Isometric equivalence of metric spaces @@ -78,9 +79,8 @@ module _ isometric-equiv-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space = - isometric-equiv-Premetric-Space - (premetric-Metric-Space A) - (premetric-Metric-Space B) + Σ (type-Metric-Space A ≃ type-Metric-Space B) + (λ e → is-isometry-Metric-Space A B (map-equiv e)) ``` ### Isometric equivalences between metric spaces @@ -93,37 +93,38 @@ module _ isometric-equiv-Metric-Space' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space' = - isometric-equiv-Premetric-Space' - (premetric-Metric-Space A) - (premetric-Metric-Space B) + Σ ( type-function-Metric-Space A B) + ( λ f → (is-equiv f) × (is-isometry-Metric-Space A B f)) ``` ## Properties -### Equality of metric spaces is equivalent to isometric equality of their carrier types +### 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 l1 l2) + {l1 l2 : Level} + (A B : Metric-Space l1 l2) where - equiv-isometric-eq-eq-Metric-Space : (A = B) ≃ isometric-eq-Metric-Space A B - equiv-isometric-eq-eq-Metric-Space = - ( equiv-isometric-eq-eq-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B)) ∘e - ( equiv-eq-premetric-Metric-Space A B) - - eq-isometric-eq-Metric-Space : isometric-eq-Metric-Space A B → A = B - eq-isometric-eq-Metric-Space = - map-inv-equiv equiv-isometric-eq-eq-Metric-Space + equiv-eq-isometric-eq-Metric-Space : + (A = B) ≃ isometric-eq-Metric-Space A B + equiv-eq-isometric-eq-Metric-Space = + ( equiv-tot + ( equiv-Eq-tr-Metric-Structure + ( type-Metric-Space A) + ( type-Metric-Space B) + ( structure-Metric-Space A) + ( structure-Metric-Space B))) ∘e + ( equiv-pair-eq-Σ A B) ``` ### Isometric equality is torsorial ```agda module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) + {l1 l2 : Level} + (A : Metric-Space l1 l2) where is-torsorial-isometric-eq-Metric-Space : @@ -131,35 +132,50 @@ module _ is-torsorial-isometric-eq-Metric-Space = is-contr-equiv' ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-isometric-eq-eq-Metric-Space A)) + ( equiv-tot (equiv-eq-isometric-eq-Metric-Space A)) ( is-torsorial-Id A) ``` -### Equality of metric spaces is equivalent to isometric equivalence of their carrier types +### 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 l1 l2) + where + + equiv-isometric-eq-equiv-Metric-Space : + isometric-eq-Metric-Space A B ≃ isometric-equiv-Metric-Space A B + equiv-isometric-eq-equiv-Metric-Space = + equiv-Σ + ( λ e → is-isometry-Metric-Space A B (map-equiv e)) + ( equiv-univalence) + ( λ (e : type-Metric-Space A = type-Metric-Space B) → + equiv-eq + (ap (is-isometry-Metric-Space A B) (eq-htpy (λ x → refl)))) +``` + +### Isometric equivalence of metric spaces characterize their equalities ```agda module _ - {l1 l2 : Level} (A B : Metric-Space l1 l2) + {l1 l2 : Level} + (A B : Metric-Space l1 l2) where - equiv-isometric-equiv-eq-Metric-Space : + equiv-eq-isometric-equiv-Metric-Space : (A = B) ≃ isometric-equiv-Metric-Space A B - equiv-isometric-equiv-eq-Metric-Space = - ( equiv-isometric-equiv-eq-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B)) ∘e - ( equiv-eq-premetric-Metric-Space A B) - - eq-isometric-equiv-Metric-Space : isometric-equiv-Metric-Space A B → A = B - eq-isometric-equiv-Metric-Space = - map-inv-equiv equiv-isometric-equiv-eq-Metric-Space + equiv-eq-isometric-equiv-Metric-Space = + ( equiv-isometric-eq-equiv-Metric-Space A B) ∘e + ( equiv-eq-isometric-eq-Metric-Space A B) ``` -### Isometric equivalence between metric spaces is torsorial +### Isometric equivalence is torsorial ```agda module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) + {l1 l2 : Level} + (A : Metric-Space l1 l2) where is-torsorial-isometric-equiv-Metric-Space : @@ -167,36 +183,58 @@ module _ is-torsorial-isometric-equiv-Metric-Space = is-contr-equiv' ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-isometric-equiv-eq-Metric-Space A)) + ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space A)) ( is-torsorial-Id A) ``` -### Equality of metric spaces is equivalent to the existence of isometric equivalence between their carrier types +### 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 l1 l2) + where + + equiv-isometric-equiv-isometric-equiv-Metric-Space' : + isometric-equiv-Metric-Space A B ≃ isometric-equiv-Metric-Space' A B + equiv-isometric-equiv-isometric-equiv-Metric-Space' = + equiv-tot + ( λ f → + equiv-tot + ( λ e → + equiv-eq (ap (is-isometry-Metric-Space A B) refl))) ∘e + associative-Σ + ( type-function-Metric-Space A B) + ( is-equiv) + ( is-isometry-Metric-Space A B ∘ map-equiv) +``` + +### Isometric equivalences between metric spaces characterize their equality ```agda module _ - {l1 l2 : Level} (A B : Metric-Space l1 l2) + {l1 l2 : Level} + (A B : Metric-Space l1 l2) where - equiv-isometric-equiv-eq-Metric-Space' : + equiv-eq-isometric-equiv-Metric-Space' : (A = B) ≃ isometric-equiv-Metric-Space' A B - equiv-isometric-equiv-eq-Metric-Space' = - ( equiv-isometric-equiv-eq-Premetric-Space' - ( premetric-Metric-Space A) - ( premetric-Metric-Space B)) ∘e - ( equiv-eq-premetric-Metric-Space A B) + equiv-eq-isometric-equiv-Metric-Space' = + ( equiv-isometric-equiv-isometric-equiv-Metric-Space' A B) ∘e + ( equiv-eq-isometric-equiv-Metric-Space A B) eq-isometric-equiv-Metric-Space' : isometric-equiv-Metric-Space' A B → A = B eq-isometric-equiv-Metric-Space' = - map-inv-equiv equiv-isometric-equiv-eq-Metric-Space' + map-inv-equiv equiv-eq-isometric-equiv-Metric-Space' ``` ### The existence of invertibe isometries between metric spaces is torsorial ```agda module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) + {l1 l2 : Level} + (A : Metric-Space l1 l2) where is-torsorial-isometric-equiv-Metric-Space' : @@ -204,6 +242,6 @@ module _ is-torsorial-isometric-equiv-Metric-Space' = is-contr-equiv' ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-isometric-equiv-eq-Metric-Space' A)) + ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space' A)) ( is-torsorial-Id A) ``` diff --git a/src/metric-spaces/equality-of-premetric-spaces.lagda.md b/src/metric-spaces/equality-of-premetric-spaces.lagda.md deleted file mode 100644 index bf75c6dad0..0000000000 --- a/src/metric-spaces/equality-of-premetric-spaces.lagda.md +++ /dev/null @@ -1,215 +0,0 @@ -# Equality of premetric spaces - -```agda -module metric-spaces.equality-of-premetric-spaces where -``` - -
Imports - -```agda -open import foundation.action-on-identifications-functions -open import foundation.binary-transport -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.functoriality-dependent-pair-types -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.propositions -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.isometries-premetric-spaces -open import metric-spaces.premetric-spaces -open import metric-spaces.premetric-structures -``` - -
- -## Idea - -By the -[identity principle of depedendent pair types](foundation.equality-dependent-pair-types.md), -equality of two [premetric spaces](metric-spaces.premetric-spaces.md) is -equivalent to equality of their carrier type with a proof that this equality -transports the [premetric structures](metric-spaces.premetric-structures.md). -This last condition holds if and only if the -[natural map induced by the equality](foundation.univalence.md) of their carrier -types is an [isometry](metric-spaces.isometries-premetric-spaces.md). It follows -that -{{#concept "isometric equality" Disambiguation="of premetric spaces" Agda=isometric-eq-Premetric-Space}} -characterizes equality of premetric spaces. - -## Definitions - -### Two premetric spaces are equal if their carrier types are equal and their premetric structures transported - -```agda -module _ - {l1 l2 : Level} (A B : Premetric-Space l1 l2) - where - - equiv-eq-tr-Premetric-Space : - (A = B) ≃ - Σ ( type-Premetric-Space A = type-Premetric-Space B) - ( λ e → - tr (Premetric l2) e (structure-Premetric-Space A) = - structure-Premetric-Space B) - equiv-eq-tr-Premetric-Space = equiv-pair-eq-Σ A B -``` - -### The property of being an isometric equality between carrier types of premetric spaces - -```agda -module _ - {l1 l2 l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1 l2') - where - - is-isometry-prop-eq-Premetric-Space : - (type-Premetric-Space A = type-Premetric-Space B) → Prop (l1 ⊔ l2 ⊔ l2') - is-isometry-prop-eq-Premetric-Space e = - is-isometry-prop-Premetric-Space A B (map-eq e) - - is-isometry-eq-Premetric-Space : - (type-Premetric-Space A = type-Premetric-Space B) → UU (l1 ⊔ l2 ⊔ l2') - is-isometry-eq-Premetric-Space e = - type-Prop (is-isometry-prop-eq-Premetric-Space e) - - is-prop-is-isometry-eq-Premetric-Space : - (e : type-Premetric-Space A = type-Premetric-Space B) → - is-prop (is-isometry-eq-Premetric-Space e) - is-prop-is-isometry-eq-Premetric-Space e = - is-prop-type-Prop (is-isometry-prop-eq-Premetric-Space e) - - isometric-eq-Premetric-Space : UU (lsuc l1 ⊔ l2 ⊔ l2') - isometric-eq-Premetric-Space = - type-subtype is-isometry-prop-eq-Premetric-Space -``` - -## Properties - -### An equality between carrier types of premetric spaces transport the metric structures if and only if it is an isometry - -```agda -module _ - {l1 l2 : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1 l2) - (e : type-Premetric-Space A = type-Premetric-Space B) - where - - is-isometry-eq-tr-structure-Premetric-Space : - Eq-Premetric - ( tr (Premetric l2) e (structure-Premetric-Space A)) - ( structure-Premetric-Space B) → - is-isometry-Premetric-Space A B (map-eq e) - is-isometry-eq-tr-structure-Premetric-Space H d x y = - ( H d (map-eq e x) (map-eq e y)) ∘iff - ( eq-map-eq-tr-Premetric - ( type-Premetric-Space A) - ( type-Premetric-Space B) - ( e) - ( structure-Premetric-Space A) - ( d) - ( x) - ( y)) - - eq-tr-structure-is-isometry-Premetric-Space : - is-isometry-Premetric-Space A B (map-eq e) → - Eq-Premetric - ( tr (Premetric l2) e (structure-Premetric-Space A)) - ( structure-Premetric-Space B) - eq-tr-structure-is-isometry-Premetric-Space I d x y = - logical-equivalence-reasoning - ( neighborhood-Premetric - ( tr (Premetric l2) e (structure-Premetric-Space A)) - ( d) - ( x) - ( y)) - ↔ ( neighborhood-Premetric - ( structure-Premetric-Space A) - ( d) - ( map-inv-eq e x) - ( map-inv-eq e y)) - by - eq-map-inv-eq-tr-Premetric - ( type-Premetric-Space A) - ( type-Premetric-Space B) - ( e) - ( structure-Premetric-Space A) - ( d) - ( x) - ( y) - ↔ ( neighborhood-Premetric-Space - ( B) - ( d) - ( map-eq e (map-inv-eq e x)) - ( map-eq e (map-inv-eq e y))) - by - I d (map-inv-eq e x) (map-inv-eq e y) - ↔ ( neighborhood-Premetric-Space B d x y) - by - binary-tr - ( λ u v → - neighborhood-Premetric-Space B d u v ↔ - neighborhood-Premetric-Space B d x y) - ( inv (is-section-map-inv-equiv (equiv-eq e) x)) - ( inv (is-section-map-inv-equiv (equiv-eq e) y)) - ( id-iff) - - equiv-is-isometry-map-eq-tr-Premetric-Space : - Id - ( tr (Premetric l2) e (structure-Premetric-Space A)) - ( structure-Premetric-Space B) ≃ - is-isometry-Premetric-Space A B (map-eq e) - equiv-is-isometry-map-eq-tr-Premetric-Space = - ( equiv-iff - ( Eq-prop-Premetric - ( tr (Premetric l2) e (structure-Premetric-Space A)) - ( structure-Premetric-Space B)) - ( is-isometry-prop-Premetric-Space A B (map-eq e)) - ( is-isometry-eq-tr-structure-Premetric-Space) - ( eq-tr-structure-is-isometry-Premetric-Space)) ∘e - ( equiv-Eq-eq-Premetric - ( tr (Premetric l2) e (structure-Premetric-Space A)) - ( structure-Premetric-Space B)) -``` - -### Equality of premetric spaces is equivalent to isometric equality of their carrier types - -```agda -module _ - {l1 l2 : Level} (A B : Premetric-Space l1 l2) - where - - equiv-isometric-eq-eq-Premetric-Space : - (A = B) ≃ isometric-eq-Premetric-Space A B - equiv-isometric-eq-eq-Premetric-Space = - ( equiv-tot (equiv-is-isometry-map-eq-tr-Premetric-Space A B)) ∘e - ( equiv-eq-tr-Premetric-Space A B) - - eq-isometric-eq-Premetric-Space : - isometric-eq-Premetric-Space A B → A = B - eq-isometric-eq-Premetric-Space = - map-inv-equiv equiv-isometric-eq-eq-Premetric-Space -``` - -### Isometric equality of premetric spaces is torsorial - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - where - - is-torsorial-isometric-eq-Premetric-Space : - is-torsorial (isometric-eq-Premetric-Space A) - is-torsorial-isometric-eq-Premetric-Space = - is-contr-equiv' - ( Σ (Premetric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-isometric-eq-eq-Premetric-Space A)) - ( is-torsorial-Id A) -``` diff --git a/src/metric-spaces/extensional-premetric-structures.lagda.md b/src/metric-spaces/extensional-premetric-structures.lagda.md deleted file mode 100644 index 0e614ca440..0000000000 --- a/src/metric-spaces/extensional-premetric-structures.lagda.md +++ /dev/null @@ -1,188 +0,0 @@ -# Extensional premetric structures on types - -```agda -module metric-spaces.extensional-premetric-structures 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-structures -open import metric-spaces.reflexive-premetric-structures -``` - -
- -## Idea - -A [premetric](metric-spaces.premetric-structures.md) structure on a type is -called -{{#concept "extensional" Disambiguation="premetric on a type" Agda=is-extensional-Premetric}} -if indistinguishability characterizes equality in the carrier type. These are -the [reflexive](metric-spaces.reflexive-premetric-structures.md) and -{{#concept "local" Disambiguation="premetric on a type" agda=is-local-Premetric}} -premetric structures: reflexive premetrics whose indistinguishability have -propositional fibers. - -Any type equipped with an extensional premetric is a [set](foundation.sets.md) -and any set can be equipped with an extensional premetric (the -[discrete premetric](metric-spaces.discrete-premetric-structures.md)). - -## Definitions - -### The property of being a local premetric structure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-local-prop-Premetric : Prop (l1 ⊔ l2) - is-local-prop-Premetric = - Π-Prop A (is-prop-Prop ∘ Σ A ∘ is-indistinguishable-Premetric B) - - is-local-Premetric : UU (l1 ⊔ l2) - is-local-Premetric = type-Prop is-local-prop-Premetric - - is-prop-is-local-Premetric : is-prop is-local-Premetric - is-prop-is-local-Premetric = is-prop-type-Prop is-local-prop-Premetric -``` - -### Tightness of a premetric structure - -A premetric is -{{#concept "tight" Disambiguation="premetric" Agda=is-tight-Premetric}} if any -two indistinguishable elements are [equal](foundation-core.identity-types.md). - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-tight-Premetric : UU (l1 ⊔ l2) - is-tight-Premetric = - (x y : A) → is-indistinguishable-Premetric B x y → x = y -``` - -### The property of being an extensional premetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-extensional-prop-Premetric : Prop (l1 ⊔ l2) - is-extensional-prop-Premetric = - product-Prop - ( is-reflexive-prop-Premetric B) - ( is-local-prop-Premetric B) - - is-extensional-Premetric : UU (l1 ⊔ l2) - is-extensional-Premetric = type-Prop is-extensional-prop-Premetric - - is-prop-is-extensional-Premetric : is-prop is-extensional-Premetric - is-prop-is-extensional-Premetric = - is-prop-type-Prop is-extensional-prop-Premetric -``` - -## Properties - -### Any tight premetric is local - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (T : is-tight-Premetric B) - where - - is-local-is-tight-Premetric : is-local-Premetric B - is-local-is-tight-Premetric x = - is-prop-all-elements-equal - ( λ (u , I) (v , J) → - eq-type-subtype - ( is-indistinguishable-prop-Premetric B x) - ( inv (T x u I) ∙ T x v J)) -``` - -### Characterization of equality in an extensional premetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (E : is-extensional-Premetric B) - where - - is-torsorial-indistinguishable-is-extensional-Premetric : - (x : A) → is-torsorial (is-indistinguishable-Premetric B x) - is-torsorial-indistinguishable-is-extensional-Premetric x = - is-proof-irrelevant-is-prop (pr2 E x) (x , λ d → pr1 E d x) - - indistinguishable-eq-is-extensional-Premetric : - {x y : A} → (x = y) → is-indistinguishable-Premetric B x y - indistinguishable-eq-is-extensional-Premetric = - indistinguishable-eq-reflexive-Premetric B (pr1 E) - - is-fiberwise-equiv-indistinguishable-is-extensional-Premetric : - (x y : A) → is-equiv (indistinguishable-eq-is-extensional-Premetric {x} {y}) - is-fiberwise-equiv-indistinguishable-is-extensional-Premetric x = - fundamental-theorem-id - ( is-torsorial-indistinguishable-is-extensional-Premetric x) - ( λ y → indistinguishable-eq-reflexive-Premetric B (pr1 E)) - - equiv-eq-is-indistinguishable-is-extensional-Premetric : - {x y : A} → (x = y) ≃ (is-indistinguishable-Premetric B x y) - equiv-eq-is-indistinguishable-is-extensional-Premetric {x} {y} = - ( indistinguishable-eq-reflexive-Premetric B (pr1 E)) , - ( is-fiberwise-equiv-indistinguishable-is-extensional-Premetric x y) - - eq-indistinguishable-is-extensional-Premetric : - {x y : A} → (is-indistinguishable-Premetric B x y) → (x = y) - eq-indistinguishable-is-extensional-Premetric = - map-inv-equiv equiv-eq-is-indistinguishable-is-extensional-Premetric -``` - -### Any extensional premetric is tight - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (E : is-extensional-Premetric B) - where - - is-tight-is-extensional-Premetric : is-tight-Premetric B - is-tight-is-extensional-Premetric x y = - eq-indistinguishable-is-extensional-Premetric B E -``` - -### Any type equipped with an extensional premetric is a set - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (E : is-extensional-Premetric B) - where - - is-set-has-extensional-Premetric : is-set A - is-set-has-extensional-Premetric x y = - is-prop-is-equiv - ( is-fiberwise-equiv-indistinguishable-is-extensional-Premetric - ( B) - ( E) - ( x) - ( y)) - ( is-prop-is-indistinguishable-Premetric B x y) -``` diff --git a/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md deleted file mode 100644 index 88e1883bee..0000000000 --- a/src/metric-spaces/extensional-pseudometric-spaces-WIP.lagda.md +++ /dev/null @@ -1,190 +0,0 @@ -# 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-premetric-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/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..3e2f93fe26 --- /dev/null +++ b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md @@ -0,0 +1,190 @@ +# Extensional pseudometric spaces + +```agda +module metric-spaces.extensional-pseudometric-spaces 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 +open import metric-spaces.similarity-of-elements-pseudometric-spaces +``` + +
+ +## Idea + +A [pseudometric space](metric-spaces.pseudometric-spaces.md) is called +{{#concept "extensional" Disambiguation="pseudometric space" Agda=is-extensional-Pseudometric-Space}} +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-premetric-structures.md) +over a set is extensional. + +## Definitions + +### The property of being an extensional pseudometric space + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + where + + is-extensional-prop-Pseudometric-Space : Prop (l1 ⊔ l2) + is-extensional-prop-Pseudometric-Space = + Π-Prop + ( type-Pseudometric-Space A) + ( is-prop-Prop ∘ + Σ (type-Pseudometric-Space A) ∘ + sim-Pseudometric-Space A) + + is-extensional-Pseudometric-Space : UU (l1 ⊔ l2) + is-extensional-Pseudometric-Space = + type-Prop is-extensional-prop-Pseudometric-Space + + is-prop-is-extensional-Pseudometric-Space : + is-prop is-extensional-Pseudometric-Space + is-prop-is-extensional-Pseudometric-Space = + is-prop-type-Prop is-extensional-prop-Pseudometric-Space +``` + +### Tightness of a pseudometric space + +A pseudometric space is +{{#concept "tight" Disambiguation="pseudometric" Agda=is-tight-Pseudometric-Space}} +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 l1 l2) + where + + is-tight-Pseudometric-Space : UU (l1 ⊔ l2) + is-tight-Pseudometric-Space = + (x y : type-Pseudometric-Space A) → + sim-Pseudometric-Space A x y → + x = y +``` + +## Properties + +### Any tight pseudometric space is extensional + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (T : is-tight-Pseudometric-Space A) + where + + is-extensional-is-tight-Pseudometric-Space : + is-extensional-Pseudometric-Space A + is-extensional-is-tight-Pseudometric-Space x = + is-prop-all-elements-equal + ( λ (u , I) (v , J) → + eq-type-subtype + ( sim-prop-Pseudometric-Space 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 l1 l2) + (E : is-extensional-Pseudometric-Space A) + where + + is-torsorial-sim-is-extensional-Pseudometric-Space : + (x : type-Pseudometric-Space A) → + is-torsorial (sim-Pseudometric-Space A x) + is-torsorial-sim-is-extensional-Pseudometric-Space x = + is-proof-irrelevant-is-prop + ( E x) + ( x , refl-sim-Pseudometric-Space A x) + + is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space : + (x y : type-Pseudometric-Space A) → + is-equiv (sim-eq-Pseudometric-Space A x y) + is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space x = + fundamental-theorem-id + ( is-torsorial-sim-is-extensional-Pseudometric-Space x) + ( sim-eq-Pseudometric-Space A x) + + equiv-sim-eq-is-extensional-Pseudometric-Space : + (x y : type-Pseudometric-Space A) → + (x = y) ≃ (sim-Pseudometric-Space A x y) + equiv-sim-eq-is-extensional-Pseudometric-Space x y = + ( sim-eq-Pseudometric-Space A x y) , + ( is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space x y) + + eq-sim-is-extensional-Pseudometric-Space : + (x y : type-Pseudometric-Space A) → + sim-Pseudometric-Space A x y → + x = y + eq-sim-is-extensional-Pseudometric-Space x y = + map-inv-equiv (equiv-sim-eq-is-extensional-Pseudometric-Space x y) +``` + +### Any extensional pseudometric is tight + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (E : is-extensional-Pseudometric-Space A) + where + + is-tight-is-extensional-Pseudometric-Space : + is-tight-Pseudometric-Space A + is-tight-is-extensional-Pseudometric-Space = + eq-sim-is-extensional-Pseudometric-Space A E +``` + +### The carrier type of an extensional pseudometric space is a set + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (E : is-extensional-Pseudometric-Space A) + where + + is-set-type-is-extensional-Pseudometric-Space : + is-set (type-Pseudometric-Space A) + is-set-type-is-extensional-Pseudometric-Space x y = + is-prop-is-equiv + ( is-fiberwise-equiv-sim-eq-is-extensional-Pseudometric-Space + ( A) + ( E) + ( x) + ( y)) + ( is-prop-sim-Pseudometric-Space A x y) +``` + +## See also + +- [metric spaces](metric-spaces.metric-spaces.md): the type of extensional + pseudometric spaces. diff --git a/src/metric-spaces/functions-metric-spaces.lagda.md b/src/metric-spaces/functions-metric-spaces.lagda.md index 2c95ab35af..a1fa795b36 100644 --- a/src/metric-spaces/functions-metric-spaces.lagda.md +++ b/src/metric-spaces/functions-metric-spaces.lagda.md @@ -13,32 +13,33 @@ open import foundation.sets open import foundation.universe-levels open import metric-spaces.metric-spaces -open import metric-spaces.premetric-spaces ``` ## Idea -{{#concept "Functions" Disambiguation="between metric spaces" Agda=map-type-Metric-Space}} +{{#concept "Functions" Disambiguation="between metric spaces" Agda=type-function-Metric-Space}} between [metric spaces](metric-spaces.metric-spaces.md) are functions between their carrier types. ## Definitions -### Functions between metric spaces +### The set of functions between metric spaces ```agda module _ - {l1 l2 l1' l2' : Level} - (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + {lx lx' ly ly' : Level} + (X : Metric-Space lx lx') (Y : Metric-Space ly ly') where - map-type-Metric-Space : UU (l1 ⊔ l1') - map-type-Metric-Space = - map-type-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + set-function-Metric-Space : Set (lx ⊔ ly) + set-function-Metric-Space = + hom-set-Set (set-Metric-Space X) (set-Metric-Space Y) + + type-function-Metric-Space : UU (lx ⊔ ly) + type-function-Metric-Space = + type-Metric-Space X → type-Metric-Space Y ``` ### The identity function on a metric space @@ -48,27 +49,6 @@ module _ {l1 l2 : Level} (M : Metric-Space l1 l2) where - id-Metric-Space : map-type-Metric-Space M M + id-Metric-Space : type-function-Metric-Space M M id-Metric-Space = id ``` - -## Properties - -### The type of functions between metric spaces is a set - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - where - - is-set-map-type-Metric-Space : - is-set (map-type-Metric-Space A B) - is-set-map-type-Metric-Space = - is-set-Π (λ x → is-set-type-Metric-Space B) - - set-map-type-Metric-Space : Set (l1 ⊔ l1') - set-map-type-Metric-Space = - map-type-Metric-Space A B , - is-set-map-type-Metric-Space -``` diff --git a/src/metric-spaces/induced-premetric-structures-on-preimages.lagda.md b/src/metric-spaces/induced-premetric-structures-on-preimages.lagda.md deleted file mode 100644 index 880bd2efd8..0000000000 --- a/src/metric-spaces/induced-premetric-structures-on-preimages.lagda.md +++ /dev/null @@ -1,143 +0,0 @@ -# Induced premetric structures on preimages - -```agda -module metric-spaces.induced-premetric-structures-on-preimages 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.extensional-premetric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -Any [premetric structure](metric-spaces.premetric-structures.md) `U` on a type -`B` and map `f : A → B` defines a premetric 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="of a premetric structure" Agda=preimage-Premetric}} -of `U` by `f`. In this premetric, upper bounds of the distance between -`(x y : A)` are upper bounds of the distance between `f x` and `f y` in `U`. - -## Definitions - -### The induced premetric on the preimage of a map - -```agda -module _ - {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) - (V : Premetric l2 B) - where - - preimage-Premetric : Premetric l2 A - preimage-Premetric d x y = V d (f x) (f y) -``` - -## Properties - -### The preimage of a reflexive premetric is reflexive - -```agda -module _ - {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) - (V : Premetric l2 B) (R : is-reflexive-Premetric V) - where - - preserves-reflexive-preimage-Premetric : - is-reflexive-Premetric (preimage-Premetric f V) - preserves-reflexive-preimage-Premetric d x = R d (f x) -``` - -### The preimage of a symmetric premetric is symmetric - -```agda -module _ - {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) - (V : Premetric l2 B) (S : is-symmetric-Premetric V) - where - - preserves-symmetric-preimage-Premetric : - is-symmetric-Premetric (preimage-Premetric f V) - preserves-symmetric-preimage-Premetric d x y = S d (f x) (f y) -``` - -### The preimage of a monotonic premetric is monotonic - -```agda -module _ - {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) - (V : Premetric l2 B) (I : is-monotonic-Premetric V) - where - - preserves-monotonic-preimage-Premetric : - is-monotonic-Premetric (preimage-Premetric f V) - preserves-monotonic-preimage-Premetric x y = I (f x) (f y) -``` - -### The preimage of a triangular premetric is triangular - -```agda -module _ - {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} (f : A → B) - (V : Premetric l2 B) (T : is-triangular-Premetric V) - where - - preserves-triangular-preimage-Premetric : - is-triangular-Premetric (preimage-Premetric f V) - preserves-triangular-preimage-Premetric x y z = T (f x) (f y) (f z) -``` - -### The preimage of a tight metric along an injective map is tight - -```agda -module _ - {l1 l1' l2 : Level} {A : UU l1} {B : UU l1'} - (f : A → B) (V : Premetric l2 B) - (I : is-injective f) - (T : is-tight-Premetric V) - where - - preserves-tight-injective-preimage-Premetric : - is-tight-Premetric (preimage-Premetric f V) - preserves-tight-injective-preimage-Premetric x y = - I ∘ (T (f x) (f y)) -``` - -### The preimage along the identity is the identity - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (U : Premetric l2 A) - where - - eq-preimage-id-Premetric : preimage-Premetric id U = U - eq-preimage-id-Premetric = refl -``` - -### The preimage of premetrics 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 : Premetric l C) - where - - eq-preimage-comp-Premetric : - preimage-Premetric f (preimage-Premetric g W) = - preimage-Premetric (g ∘ f) W - eq-preimage-comp-Premetric = refl -``` diff --git a/src/metric-spaces/isometric-equivalences-premetric-spaces.lagda.md b/src/metric-spaces/isometric-equivalences-premetric-spaces.lagda.md deleted file mode 100644 index 34c143ce20..0000000000 --- a/src/metric-spaces/isometric-equivalences-premetric-spaces.lagda.md +++ /dev/null @@ -1,181 +0,0 @@ -# Isometric equivalences between premetric spaces - -```agda -module metric-spaces.isometric-equivalences-premetric-spaces where -``` - -
Imports - -```agda -open import foundation.action-on-identifications-functions -open import foundation.contractible-types -open import foundation.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.equality-of-premetric-spaces -open import metric-spaces.isometries-premetric-spaces -open import metric-spaces.premetric-spaces -``` - -
- -## Idea - -An [equivalence](foundation.equivalences.md) between the carrier types of two -[premetric spaces](metric-spaces.premetric-spaces.md) is -{{#concept "isometric" Disambiguation="equivalence between premetric spaces" Agda=is-isometry-equiv-Premetric-Space}} -if its carrier map is an -[isometry](metric-spaces.isometries-premetric-spaces.md). Isometric equivalences -between premetric spaces characterize their equality. - -## Definitions - -### Isometrically equivalent premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - where - - is-isometry-equiv-prop-Premetric-Space : - (e : type-Premetric-Space A ≃ type-Premetric-Space B) → Prop (l1 ⊔ l2 ⊔ l2') - is-isometry-equiv-prop-Premetric-Space e = - is-isometry-prop-Premetric-Space A B (map-equiv e) - - is-isometry-equiv-Premetric-Space : - (e : type-Premetric-Space A ≃ type-Premetric-Space B) → UU (l1 ⊔ l2 ⊔ l2') - is-isometry-equiv-Premetric-Space e = - type-Prop (is-isometry-equiv-prop-Premetric-Space e) - - is-prop-is-isometry-equiv-Premetric-Space : - (e : type-Premetric-Space A ≃ type-Premetric-Space B) → - is-prop (is-isometry-equiv-Premetric-Space e) - is-prop-is-isometry-equiv-Premetric-Space e = - is-prop-type-Prop (is-isometry-equiv-prop-Premetric-Space e) - - isometric-equiv-Premetric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') - isometric-equiv-Premetric-Space = - type-subtype is-isometry-equiv-prop-Premetric-Space -``` - -### The type of isometric equivalences between premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - where - - is-isometric-equiv-prop-Premetric-Space : - (f : map-type-Premetric-Space A B) → Prop (l1 ⊔ l2 ⊔ l1' ⊔ l2') - is-isometric-equiv-prop-Premetric-Space f = - product-Prop - ( is-equiv-Prop f) - ( is-isometry-prop-Premetric-Space A B f) - - is-isometric-equiv-Premetric-Space : - (f : map-type-Premetric-Space A B) → UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') - is-isometric-equiv-Premetric-Space f = - type-Prop (is-isometric-equiv-prop-Premetric-Space f) - - is-prop-is-isometric-equiv-Premetric-Space : - (f : map-type-Premetric-Space A B) → - is-prop (is-isometric-equiv-Premetric-Space f) - is-prop-is-isometric-equiv-Premetric-Space f = - is-prop-type-Prop (is-isometric-equiv-prop-Premetric-Space f) - - isometric-equiv-Premetric-Space' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') - isometric-equiv-Premetric-Space' = - type-subtype is-isometric-equiv-prop-Premetric-Space -``` - -## Properties - -### Two premetric spaces are isometrically equivalent if and only if there is an isometric equivalence between them - -```agda -module _ - {l1 l2 : Level} - (A B : Premetric-Space l1 l2) - where - - equiv-isometric-equiv-isometric-equiv-Premetric-Space' : - isometric-equiv-Premetric-Space A B ≃ isometric-equiv-Premetric-Space' A B - equiv-isometric-equiv-isometric-equiv-Premetric-Space' = - equiv-tot - ( λ f → - equiv-tot - ( λ e → - equiv-eq (ap (is-isometry-Premetric-Space A B) refl))) ∘e - associative-Σ - ( map-type-Premetric-Space A B) - ( is-equiv) - ( is-isometry-equiv-Premetric-Space A B) -``` - -### Equality of premetric types is equivalent to the existence of an isometric equivalence between them - -```agda -module _ - {l1 l2 : Level} - (A B : Premetric-Space l1 l2) - where - - equiv-isometric-eq-equiv-Premetric-Space : - isometric-eq-Premetric-Space A B ≃ isometric-equiv-Premetric-Space A B - equiv-isometric-eq-equiv-Premetric-Space = - equiv-Σ - ( λ e → is-isometry-Premetric-Space A B (map-equiv e)) - ( equiv-univalence) - ( λ (e : type-Premetric-Space A = type-Premetric-Space B) → - equiv-eq - (ap (is-isometry-Premetric-Space A B) (eq-htpy (λ x → refl)))) - - equiv-isometric-equiv-eq-Premetric-Space : - (A = B) ≃ isometric-equiv-Premetric-Space A B - equiv-isometric-equiv-eq-Premetric-Space = - equiv-isometric-eq-equiv-Premetric-Space ∘e - equiv-isometric-eq-eq-Premetric-Space A B - - equiv-isometric-equiv-eq-Premetric-Space' : - (A = B) ≃ isometric-equiv-Premetric-Space' A B - equiv-isometric-equiv-eq-Premetric-Space' = - equiv-isometric-equiv-isometric-equiv-Premetric-Space' A B ∘e - equiv-isometric-equiv-eq-Premetric-Space -``` - -### Isometric equivalence of premetric spaces is torsorial - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - where - - is-torsorial-isometric-equiv-Premetric-Space : - is-torsorial (isometric-equiv-Premetric-Space A) - is-torsorial-isometric-equiv-Premetric-Space = - is-contr-equiv' - ( Σ (Premetric-Space l1 l2) (isometric-eq-Premetric-Space A)) - ( equiv-tot (equiv-isometric-eq-equiv-Premetric-Space A)) - ( is-torsorial-isometric-eq-Premetric-Space A) - - is-torsorial-isometric-equiv-Premetric-Space' : - is-torsorial (isometric-equiv-Premetric-Space' A) - is-torsorial-isometric-equiv-Premetric-Space' = - is-contr-equiv' - ( Σ (Premetric-Space l1 l2) (isometric-equiv-Premetric-Space A)) - ( equiv-tot (equiv-isometric-equiv-isometric-equiv-Premetric-Space' A)) - ( is-torsorial-isometric-equiv-Premetric-Space) -``` diff --git a/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md b/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md deleted file mode 100644 index f892cc239c..0000000000 --- a/src/metric-spaces/isometries-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,434 +0,0 @@ -# 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) -``` diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index 432bc8852e..e976a783d9 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -17,6 +17,7 @@ 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 @@ -27,9 +28,9 @@ open import foundation.univalence open import foundation.universe-levels open import metric-spaces.functions-metric-spaces -open import metric-spaces.isometries-premetric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.uniformly-continuous-functions-metric-spaces +open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.rational-neighborhoods ``` @@ -39,8 +40,12 @@ open import metric-spaces.uniformly-continuous-functions-metric-spaces 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}} -if it is an [isometry](metric-spaces.isometries-premetric-spaces.md) between -their carrier [premetric spaces](metric-spaces.premetric-spaces.md). +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 @@ -50,15 +55,16 @@ their carrier [premetric spaces](metric-spaces.premetric-spaces.md). module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where is-isometry-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ l2') is-isometry-prop-Metric-Space = - is-isometry-prop-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + Eq-prop-Rational-Neighborhood-Relation + ( neighborhood-prop-Metric-Space A) + ( preimage-Rational-Neighborhood-Relation + ( f) + ( neighborhood-prop-Metric-Space B)) is-isometry-Metric-Space : UU (l1 ⊔ l2 ⊔ l2') is-isometry-Metric-Space = @@ -81,7 +87,7 @@ module _ set-isometry-Metric-Space : Set (l1 ⊔ l2 ⊔ l1' ⊔ l2') set-isometry-Metric-Space = set-subset - ( set-map-type-Metric-Space A B) + ( set-function-Metric-Space A B) ( is-isometry-prop-Metric-Space A B) isometry-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') @@ -97,20 +103,12 @@ module _ (f : isometry-Metric-Space A B) where - map-isometry-Metric-Space : map-type-Metric-Space A B - map-isometry-Metric-Space = - map-isometry-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + map-isometry-Metric-Space : type-function-Metric-Space A B + map-isometry-Metric-Space = pr1 f is-isometry-map-isometry-Metric-Space : is-isometry-Metric-Space A B map-isometry-Metric-Space - is-isometry-map-isometry-Metric-Space = - is-isometry-map-isometry-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + is-isometry-map-isometry-Metric-Space = pr2 f ``` ## Properties @@ -123,12 +121,12 @@ module _ where is-isometry-id-Metric-Space : - is-isometry-Metric-Space A A (id-Metric-Space A) + is-isometry-Metric-Space A A (λ x → x) is-isometry-id-Metric-Space d x y = id-iff isometry-id-Metric-Space : isometry-Metric-Space A A isometry-id-Metric-Space = - id-Metric-Space A , is-isometry-id-Metric-Space + (λ x → x) , is-isometry-id-Metric-Space ``` ### Equality of isometries in metric spaces is equivalent to homotopies between their carrier maps @@ -144,9 +142,9 @@ module _ (f = g) ≃ (map-isometry-Metric-Space A B f ~ map-isometry-Metric-Space A B g) equiv-eq-htpy-map-isometry-Metric-Space = - equiv-eq-htpy-map-isometry-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + equiv-funext ∘e + extensionality-type-subtype' + ( is-isometry-prop-Metric-Space A B) ( f) ( g) @@ -157,12 +155,47 @@ module _ map-equiv equiv-eq-htpy-map-isometry-Metric-Space eq-htpy-map-isometry-Metric-Space : - (map-isometry-Metric-Space A B f ~ map-isometry-Metric-Space A B g) → + ( map-isometry-Metric-Space A B f ~ + map-isometry-Metric-Space A B g) → (f = g) eq-htpy-map-isometry-Metric-Space = map-inv-equiv equiv-eq-htpy-map-isometry-Metric-Space ``` +### An isometry preserves and reflects neighborhoods + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : isometry-Metric-Space A B) + where + + preserves-neighborhood-map-isometry-Metric-Space : + (d : ℚ⁺) (x y : type-Metric-Space A) → + neighborhood-Metric-Space A d x y → + neighborhood-Metric-Space + ( B) + ( d) + ( map-isometry-Metric-Space A B f x) + ( map-isometry-Metric-Space A B f y) + preserves-neighborhood-map-isometry-Metric-Space d x y = + forward-implication + ( is-isometry-map-isometry-Metric-Space A B f d x y) + + reflects-neighborhood-map-isometry-Metric-Space : + (d : ℚ⁺) (x y : type-Metric-Space A) → + neighborhood-Metric-Space + ( B) + ( d) + ( map-isometry-Metric-Space A B f x) + ( map-isometry-Metric-Space A B f y) → + neighborhood-Metric-Space A d x y + reflects-neighborhood-map-isometry-Metric-Space d x y = + backward-implication + ( is-isometry-map-isometry-Metric-Space A B f d x y) +``` + ### Composition of isometries ```agda @@ -171,19 +204,25 @@ module _ (A : Metric-Space l1a l2a) (B : Metric-Space l1b l2b) (C : Metric-Space l1c l2c) - (g : isometry-Metric-Space B C) - (f : isometry-Metric-Space A B) where + is-isometry-comp-is-isometry-Metric-Space : + (g : type-function-Metric-Space B C) → + (f : type-function-Metric-Space A B) → + is-isometry-Metric-Space B C g → + is-isometry-Metric-Space A B f → + is-isometry-Metric-Space A C (g ∘ f) + is-isometry-comp-is-isometry-Metric-Space g f H K d x y = + H d (f x) (f y) ∘iff K d x y + comp-isometry-Metric-Space : + isometry-Metric-Space B C → + isometry-Metric-Space A B → isometry-Metric-Space A C - comp-isometry-Metric-Space = + comp-isometry-Metric-Space g f = ( map-isometry-Metric-Space B C g ∘ map-isometry-Metric-Space A B f) , - ( preserves-isometry-comp-function-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( premetric-Metric-Space C) + ( is-isometry-comp-is-isometry-Metric-Space ( map-isometry-Metric-Space B C g) ( map-isometry-Metric-Space A B f) ( is-isometry-map-isometry-Metric-Space B C g) @@ -274,6 +313,37 @@ module _ ### The inverse of an isometric equivalence is an isometry ```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + where + + is-isometry-map-inv-is-equiv-is-isometry-Metric-Space : + (f : type-function-Metric-Space A B) → + is-isometry-Metric-Space A B f → + (E : is-equiv f) → + is-isometry-Metric-Space B A (map-inv-is-equiv E) + is-isometry-map-inv-is-equiv-is-isometry-Metric-Space f I E d x y = + logical-equivalence-reasoning + ( neighborhood-Metric-Space B d x y) + ↔ ( neighborhood-Metric-Space B d + ( f (map-inv-is-equiv E x)) + ( f (map-inv-is-equiv E y))) + by + binary-tr + ( λ u v → + ( neighborhood-Metric-Space B d x y) ↔ + ( neighborhood-Metric-Space 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 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 l1 l2) (B : Metric-Space l1' l2') @@ -285,12 +355,12 @@ module _ isometry-Metric-Space B A isometry-inv-is-equiv-isometry-Metric-Space = ( map-inv-is-equiv E) , - ( is-isometry-map-inv-is-equiv-is-isometry-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + ( is-isometry-map-inv-is-equiv-is-isometry-Metric-Space + ( A) + ( B) ( map-isometry-Metric-Space A B f) - ( E) - ( is-isometry-map-isometry-Metric-Space A B f)) + ( is-isometry-map-isometry-Metric-Space A B f) + ( E)) is-section-isometry-inv-is-equiv-isometry-Metric-Space : ( comp-isometry-Metric-Space @@ -341,32 +411,25 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : isometry-Metric-Space A B) where + is-injective-map-isometry-Metric-Space : + is-injective (map-isometry-Metric-Space A B f) + is-injective-map-isometry-Metric-Space H = + eq-sim-Metric-Space + ( A) + ( _) + ( _) + ( λ d → + backward-implication + ( is-isometry-map-isometry-Metric-Space A B f d _ _) + ( sim-eq-Metric-Space B _ _ H d)) + is-emb-map-isometry-Metric-Space : - (f : isometry-Metric-Space A B) → is-emb (map-isometry-Metric-Space A B f) + is-emb (map-isometry-Metric-Space A B f) is-emb-map-isometry-Metric-Space = - is-emb-map-isometry-is-extensional-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( is-extensional-structure-Metric-Space A) - ( is-extensional-structure-Metric-Space B) -``` - -### Any isometry between metric spaces is uniformly continuous - -```agda -module _ - {l1 l2 l3 l4 : Level} - (A : Metric-Space l1 l2) (B : Metric-Space l3 l4) - where - - is-uniformly-continuous-map-isometry-Metric-Space : - (f : isometry-Metric-Space A B) → - is-uniformly-continuous-map-Metric-Space A B - (map-isometry-Metric-Space A B f) - is-uniformly-continuous-map-isometry-Metric-Space = - is-uniformly-continuous-map-isometry-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + is-emb-is-injective + ( is-set-type-Metric-Space B) + ( is-injective-map-isometry-Metric-Space) ``` diff --git a/src/metric-spaces/isometries-premetric-spaces.lagda.md b/src/metric-spaces/isometries-premetric-spaces.lagda.md deleted file mode 100644 index 502d62707b..0000000000 --- a/src/metric-spaces/isometries-premetric-spaces.lagda.md +++ /dev/null @@ -1,280 +0,0 @@ -# Isometries between premetric spaces - -```agda -module metric-spaces.isometries-premetric-spaces 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.existential-quantification -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.propositions -open import foundation.subtypes -open import foundation.universe-levels - -open import metric-spaces.extensional-premetric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.uniformly-continuous-functions-premetric-spaces -``` - -
- -## Idea - -A function `f` between [premetric spaces](metric-spaces.premetric-spaces.md) is -an -{{#concept "isometry" Disambiguation="between premetric spaces" Agda=is-isometry-Premetric-Space}} -if any of the following equal conditions holds: - -- it preserves and reflects - [`d`-neighborhoods](metric-spaces.premetric-structures.md); -- the upper bounds on the distance between any two points and their image by `f` - are the same; -- the premetric on the domain of `f` is the - [preimage](metric-spaces.induced-premetric-structures-on-preimages.md) by `f` - of the premetric on its codomain. - -## Definitions - -### The property of being a isometry between premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : map-type-Premetric-Space A B) - where - - is-isometry-prop-Premetric-Space : Prop (l1 ⊔ l2 ⊔ l2') - is-isometry-prop-Premetric-Space = - Π-Prop - ( ℚ⁺) - ( λ d → - Π-Prop - ( type-Premetric-Space A) - ( λ x → - Π-Prop - ( type-Premetric-Space A) - ( λ y → - iff-Prop - ( structure-Premetric-Space A d x y) - ( structure-Premetric-Space B d (f x) (f y))))) - - is-isometry-Premetric-Space : UU (l1 ⊔ l2 ⊔ l2') - is-isometry-Premetric-Space = - type-Prop is-isometry-prop-Premetric-Space - - is-prop-is-isometry-Premetric-Space : is-prop is-isometry-Premetric-Space - is-prop-is-isometry-Premetric-Space = - is-prop-type-Prop is-isometry-prop-Premetric-Space -``` - -### The type of isometries between premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - where - - isometry-Premetric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') - isometry-Premetric-Space = type-subtype (is-isometry-prop-Premetric-Space A B) -``` - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : isometry-Premetric-Space A B) - where - - map-isometry-Premetric-Space : map-type-Premetric-Space A B - map-isometry-Premetric-Space = pr1 f - - is-isometry-map-isometry-Premetric-Space : - is-isometry-Premetric-Space A B map-isometry-Premetric-Space - is-isometry-map-isometry-Premetric-Space = pr2 f -``` - -## Properties - -### Equality of isometries in premetric spaces is characterized by homotopies between their carrier maps - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f g : isometry-Premetric-Space A B) - where - - equiv-eq-htpy-map-isometry-Premetric-Space : - ( f = g) ≃ - ( map-isometry-Premetric-Space A B f ~ - map-isometry-Premetric-Space A B g) - equiv-eq-htpy-map-isometry-Premetric-Space = - equiv-funext ∘e - extensionality-type-subtype' - ( is-isometry-prop-Premetric-Space A B) - ( f) - ( g) - - eq-htpy-map-isometry-Premetric-Space : - ( map-isometry-Premetric-Space A B f ~ - map-isometry-Premetric-Space A B g) → - ( f = g) - eq-htpy-map-isometry-Premetric-Space = - map-inv-equiv equiv-eq-htpy-map-isometry-Premetric-Space -``` - -### Composition of isometries between premetric spaces - -```agda -module _ - {l1a l2a l1b l2b l1c l2c : Level} - (A : Premetric-Space l1a l2a) - (B : Premetric-Space l1b l2b) - (C : Premetric-Space l1c l2c) - (g : map-type-Premetric-Space B C) - (f : map-type-Premetric-Space A B) - where - - preserves-isometry-comp-function-Premetric-Space : - is-isometry-Premetric-Space B C g → - is-isometry-Premetric-Space A B f → - is-isometry-Premetric-Space A C (g ∘ f) - preserves-isometry-comp-function-Premetric-Space H K d x y = - (H d (f x) (f y)) ∘iff (K d x y) -``` - -### The inverse of an isometric equivalence between premetric spaces is an isometry - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : map-type-Premetric-Space A B) - (E : is-equiv f) - (I : is-isometry-Premetric-Space A B f) - where - - is-isometry-map-inv-is-equiv-is-isometry-Premetric-Space : - is-isometry-Premetric-Space B A (map-inv-is-equiv E) - is-isometry-map-inv-is-equiv-is-isometry-Premetric-Space d x y = - logical-equivalence-reasoning - ( neighborhood-Premetric-Space B d x y) - ↔ ( neighborhood-Premetric-Space B d - ( f (map-inv-is-equiv E x)) - ( f (map-inv-is-equiv E y))) - by - binary-tr - ( λ u v → - ( neighborhood-Premetric-Space B d x y) ↔ - ( neighborhood-Premetric-Space 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-Premetric-Space 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)) -``` - -### Isometries preserve and reflect indistinguishability - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : isometry-Premetric-Space A B) - {x y : type-Premetric-Space A} - where - - preserves-is-indistinguishable-map-isometry-Premetric-Space : - ( is-indistinguishable-Premetric-Space A x y) → - ( is-indistinguishable-Premetric-Space - ( B) - ( map-isometry-Premetric-Space A B f x) - ( map-isometry-Premetric-Space A B f y)) - preserves-is-indistinguishable-map-isometry-Premetric-Space H d = - forward-implication - ( is-isometry-map-isometry-Premetric-Space A B f d x y) - ( H d) - - reflects-is-indistinguishable-map-isometry-Premetric-Space : - ( is-indistinguishable-Premetric-Space - ( B) - ( map-isometry-Premetric-Space A B f x) - ( map-isometry-Premetric-Space A B f y)) → - ( is-indistinguishable-Premetric-Space A x y) - reflects-is-indistinguishable-map-isometry-Premetric-Space H d = - backward-implication - ( is-isometry-map-isometry-Premetric-Space A B f d x y) - ( H d) -``` - -### Any isometry between extensional premetric spaces is an embedding - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (I : is-extensional-Premetric (structure-Premetric-Space A)) - (J : is-extensional-Premetric (structure-Premetric-Space B)) - (f : isometry-Premetric-Space A B) - where - - is-injective-map-isometry-is-extensional-Premetric-Space : - is-injective (map-isometry-Premetric-Space A B f) - is-injective-map-isometry-is-extensional-Premetric-Space {x} {y} = - ( eq-indistinguishable-is-extensional-Premetric - ( structure-Premetric-Space A) - ( I)) ∘ - ( reflects-is-indistinguishable-map-isometry-Premetric-Space - ( A) - ( B) - ( f)) ∘ - ( indistinguishable-eq-is-extensional-Premetric - ( structure-Premetric-Space B) - ( J)) - - is-emb-map-isometry-is-extensional-Premetric-Space : - is-emb (map-isometry-Premetric-Space A B f) - is-emb-map-isometry-is-extensional-Premetric-Space = - is-emb-is-injective - ( is-set-has-extensional-Premetric (structure-Premetric-Space B) J) - ( is-injective-map-isometry-is-extensional-Premetric-Space) -``` - -### Any isometry between premetric spaces is uniformly continuous - -```agda -module _ - {l1 l2 l3 l4 : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l3 l4) - where - - is-uniformly-continuous-map-isometry-Premetric-Space : - (f : isometry-Premetric-Space A B) → - is-uniformly-continuous-map-Premetric-Space A B - (map-isometry-Premetric-Space A B f) - is-uniformly-continuous-map-isometry-Premetric-Space f = - intro-exists - ( id) - ( λ x ε x' → - forward-implication - ( is-isometry-map-isometry-Premetric-Space A B f ε x x')) -``` 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.lagda.md similarity index 52% rename from src/metric-spaces/limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md rename to src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index d98457829f..71e4f7b0db 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces-WIP.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -1,7 +1,7 @@ -# Limits of Cauchy approximations in metric spaces (WIP) +# Limits of Cauchy approximations in metric spaces ```agda -module metric-spaces.limits-of-cauchy-approximations-metric-spaces-WIP where +module metric-spaces.limits-of-cauchy-approximations-metric-spaces where ```
Imports @@ -17,8 +17,8 @@ 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 +open import metric-spaces.cauchy-approximations-metric-spaces +open import metric-spaces.metric-spaces ```
@@ -27,7 +27,7 @@ open import metric-spaces.metric-spaces-WIP 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}} +{{#concept "limit" Disambiguation="of a Cauchy approximation in a metric space Agda=is-limit-cauchy-approximation-Metric-Space}} `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 `ε δ : ℚ⁺`. @@ -38,29 +38,29 @@ a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) of `x` for a ```agda module _ - {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) - (f : cauchy-approximation-Metric-Space-WIP A) + {l1 l2 : Level} (A : Metric-Space l1 l2) + (f : cauchy-approximation-Metric-Space 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 = + is-limit-cauchy-approximation-prop-Metric-Space : + type-Metric-Space A → Prop l2 + is-limit-cauchy-approximation-prop-Metric-Space lim = Π-Prop ( ℚ⁺) ( λ ε → Π-Prop ( ℚ⁺) ( λ δ → - neighborhood-prop-Metric-Space-WIP + neighborhood-prop-Metric-Space ( A) ( ε +ℚ⁺ δ) - ( map-cauchy-approximation-Metric-Space-WIP A f ε) + ( map-cauchy-approximation-Metric-Space 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 + is-limit-cauchy-approximation-Metric-Space : + type-Metric-Space A → UU l2 + is-limit-cauchy-approximation-Metric-Space = + type-Prop ∘ is-limit-cauchy-approximation-prop-Metric-Space ``` ## Properties @@ -69,16 +69,16 @@ module _ ```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) + {l1 l2 : Level} (A : Metric-Space l1 l2) + (f : cauchy-approximation-Metric-Space A) + (x y : type-Metric-Space 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 = + all-sim-is-limit-cauchy-approximation-Metric-Space : + is-limit-cauchy-approximation-Metric-Space A f x → + is-limit-cauchy-approximation-Metric-Space A f y → + sim-Metric-Space A x y + all-sim-is-limit-cauchy-approximation-Metric-Space lim-x lim-y d = let (ε , δ , ε+δ=d) = split-ℚ⁺ d θ = mediant-zero-min-ℚ⁺ ε δ @@ -86,25 +86,25 @@ module _ θ<δ = le-right-mediant-zero-min-ℚ⁺ ε δ ε' = le-diff-ℚ⁺ θ ε θ<ε δ' = le-diff-ℚ⁺ θ δ θ<δ - fθ = map-cauchy-approximation-Metric-Space-WIP A f θ + fθ = map-cauchy-approximation-Metric-Space A f θ - Nεx : neighborhood-Metric-Space-WIP A ε fθ x + Nεx : neighborhood-Metric-Space A ε fθ x Nεx = tr - ( is-upper-bound-dist-Metric-Space-WIP A fθ x) + ( is-upper-bound-dist-Metric-Space A fθ x) ( right-diff-law-add-ℚ⁺ θ ε θ<ε) ( lim-x θ ε') - Nδy : neighborhood-Metric-Space-WIP A δ fθ y + Nδy : neighborhood-Metric-Space A δ fθ y Nδy = tr - ( is-upper-bound-dist-Metric-Space-WIP A fθ y) + ( is-upper-bound-dist-Metric-Space A fθ y) ( right-diff-law-add-ℚ⁺ θ δ θ<δ) ( lim-y θ δ') - Nxy : neighborhood-Metric-Space-WIP A (ε +ℚ⁺ δ) x y + Nxy : neighborhood-Metric-Space A (ε +ℚ⁺ δ) x y Nxy = - triangular-neighborhood-Metric-Space-WIP + triangular-neighborhood-Metric-Space ( A) ( x) ( fθ) @@ -112,28 +112,28 @@ module _ ( ε) ( δ) ( Nδy) - ( symmetric-neighborhood-Metric-Space-WIP A ε fθ x Nεx) + ( symmetric-neighborhood-Metric-Space A ε fθ x Nεx) in tr - ( is-upper-bound-dist-Metric-Space-WIP A x y) + ( is-upper-bound-dist-Metric-Space 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 → + all-eq-is-limit-cauchy-approximation-Metric-Space : + is-limit-cauchy-approximation-Metric-Space A f x → + is-limit-cauchy-approximation-Metric-Space A f y → x = y - all-eq-is-limit-cauchy-approximation-Metric-Space-WIP lim-x lim-y = - eq-sim-Metric-Space-WIP + all-eq-is-limit-cauchy-approximation-Metric-Space lim-x lim-y = + eq-sim-Metric-Space ( A) ( x) ( y) - ( all-sim-is-limit-cauchy-approximation-Metric-Space-WIP lim-x lim-y) + ( all-sim-is-limit-cauchy-approximation-Metric-Space lim-x lim-y) ``` ## See also -- [convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces-WIP.md): +- [convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md): the type of Cauchy approximations with a limit. ## References diff --git a/src/metric-spaces/limits-of-cauchy-approximations-premetric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-premetric-spaces.lagda.md deleted file mode 100644 index fb8141fea4..0000000000 --- a/src/metric-spaces/limits-of-cauchy-approximations-premetric-spaces.lagda.md +++ /dev/null @@ -1,250 +0,0 @@ -# Limits of Cauchy approximations in premetric spaces - -```agda -module metric-spaces.limits-of-cauchy-approximations-premetric-spaces 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-extensionality -open import foundation.function-types -open import foundation.homotopies -open import foundation.identity-types -open import foundation.logical-equivalences -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-premetric-spaces -open import metric-spaces.extensional-premetric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.short-functions-premetric-spaces -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -In a [premetric space](metric-spaces.premetric-spaces.md) `A`, an element `l` of -the carrier type of `A` is a -{{#concept "limit" Disambiguation="of a Cauchy approximation in a premetric space" Agda=is-limit-cauchy-approximation-Premetric-Space}} -of a -[Cauchy approximation](metric-spaces.cauchy-approximations-premetric-spaces.md) -`f` in `A` if `f ε` is an -`(ε + δ)`-[neighbor](metric-spaces.premetric-structures.md) of `l` for all -[positive rationals](elementary-number-theory.positive-rational-numbers.md) -`(ε δ : ℚ⁺)`. This holds if and only if any `ε : ℚ⁺` is an upper bound on the -distance between `f δ` and `l` for all positive rational numbers `δ < ε`. - -## Definitions - -### Limits of a Cauchy approximation in a premetric space - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - (f : cauchy-approximation-Premetric-Space A) - (l : type-Premetric-Space A) - where - - is-limit-cauchy-approximation-prop-Premetric-Space : Prop l2 - is-limit-cauchy-approximation-prop-Premetric-Space = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( ℚ⁺) - ( λ δ → - structure-Premetric-Space - ( A) - ( ε +ℚ⁺ δ) - ( map-cauchy-approximation-Premetric-Space A f ε) - ( l))) - - is-limit-cauchy-approximation-Premetric-Space : UU l2 - is-limit-cauchy-approximation-Premetric-Space = - type-Prop is-limit-cauchy-approximation-prop-Premetric-Space - - is-prop-is-limit-cauchy-approximation-Premetric-Space : - is-prop is-limit-cauchy-approximation-Premetric-Space - is-prop-is-limit-cauchy-approximation-Premetric-Space = - is-prop-type-Prop is-limit-cauchy-approximation-prop-Premetric-Space - - is-limit-prop-cauchy-approximation-Premetric-Space' : Prop l2 - is-limit-prop-cauchy-approximation-Premetric-Space' = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( ℚ⁺) - ( λ δ → - hom-Prop - ( le-prop-ℚ⁺ δ ε) - ( structure-Premetric-Space - ( A) - ( ε) - ( map-cauchy-approximation-Premetric-Space A f δ) - ( l)))) - - is-limit-cauchy-approximation-Premetric-Space' : UU l2 - is-limit-cauchy-approximation-Premetric-Space' = - type-Prop is-limit-prop-cauchy-approximation-Premetric-Space' - - is-prop-is-limit-cauchy-approximation-Premetric-Space' : - is-prop is-limit-cauchy-approximation-Premetric-Space' - is-prop-is-limit-cauchy-approximation-Premetric-Space' = - is-prop-type-Prop is-limit-prop-cauchy-approximation-Premetric-Space' -``` - -## Properties - -### The two definitions of limits are equivalent - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - (f : cauchy-approximation-Premetric-Space A) - (l : type-Premetric-Space A) - where - - is-limit'-is-limit-cauchy-approximation-Premetric-Space : - is-limit-cauchy-approximation-Premetric-Space A f l → - is-limit-cauchy-approximation-Premetric-Space' A f l - is-limit'-is-limit-cauchy-approximation-Premetric-Space H ε δ I = - tr - ( is-upper-bound-dist-Premetric-Space - ( A) - ( map-cauchy-approximation-Premetric-Space A f δ) - ( l)) - ( right-diff-law-add-ℚ⁺ δ ε I) - ( H δ (le-diff-ℚ⁺ δ ε I)) - - is-limit-is-limit'-cauchy-approximation-Premetric-Space : - is-limit-cauchy-approximation-Premetric-Space' A f l → - is-limit-cauchy-approximation-Premetric-Space A f l - is-limit-is-limit'-cauchy-approximation-Premetric-Space H ε δ = - H (ε +ℚ⁺ δ) ε (le-left-add-ℚ⁺ ε δ) -``` - -### Limits of Cauchy approximations in symmetric triangular premetric spaces are indistinguishable - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - (is-symmetric-A : is-symmetric-Premetric (structure-Premetric-Space A)) - (is-triangular-A : is-triangular-Premetric (structure-Premetric-Space A)) - (f : cauchy-approximation-Premetric-Space A) - {x y : type-Premetric-Space A} - where - - is-indistinguishable-is-limit-cauchy-approximation-triangular-symmetric-Premetric-Space' : - is-limit-cauchy-approximation-Premetric-Space' A f x → - is-limit-cauchy-approximation-Premetric-Space' A f y → - is-indistinguishable-Premetric-Space A x y - is-indistinguishable-is-limit-cauchy-approximation-triangular-symmetric-Premetric-Space' - lim-x lim-y d = - tr - ( is-upper-bound-dist-Premetric-Space A x y) - ( eq-add-split-ℚ⁺ d) - ( is-triangular-A - ( x) - ( map-cauchy-approximation-Premetric-Space - ( A) - ( f) - ( mediant-zero-min-ℚ⁺ - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d))) - ( y) - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d) - ( lim-y - ( right-summand-split-ℚ⁺ d) - ( mediant-zero-min-ℚ⁺ - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d)) - ( le-right-mediant-zero-min-ℚ⁺ - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d))) - ( is-symmetric-A - ( left-summand-split-ℚ⁺ d) - ( map-cauchy-approximation-Premetric-Space - ( A) - ( f) - ( mediant-zero-min-ℚ⁺ - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d))) - ( x) - ( lim-x - ( left-summand-split-ℚ⁺ d) - ( mediant-zero-min-ℚ⁺ - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d)) - ( le-left-mediant-zero-min-ℚ⁺ - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d))))) - - is-indistinguishable-is-limit-cauchy-approximation-triangular-symmetric-Premetric-Space : - is-limit-cauchy-approximation-Premetric-Space A f x → - is-limit-cauchy-approximation-Premetric-Space A f y → - is-indistinguishable-Premetric-Space A x y - is-indistinguishable-is-limit-cauchy-approximation-triangular-symmetric-Premetric-Space - lim-x lim-y = - is-indistinguishable-is-limit-cauchy-approximation-triangular-symmetric-Premetric-Space' - ( is-limit'-is-limit-cauchy-approximation-Premetric-Space A f x lim-x) - ( is-limit'-is-limit-cauchy-approximation-Premetric-Space A f y lim-y) -``` - -### Limits of Cauchy approximations in a symmetric triangular extensional premetric space are equal - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - (S : is-symmetric-Premetric (structure-Premetric-Space A)) - (T : is-triangular-Premetric (structure-Premetric-Space A)) - (E : is-extensional-Premetric (structure-Premetric-Space A)) - (f : cauchy-approximation-Premetric-Space A) - {x y : type-Premetric-Space A} - where - - all-elements-equal-is-limit-cauchy-approximation-triangular-symmetric-extensional-Premetric-Space' : - (is-limit-cauchy-approximation-Premetric-Space' A f x) → - (is-limit-cauchy-approximation-Premetric-Space' A f y) → - (x = y) - all-elements-equal-is-limit-cauchy-approximation-triangular-symmetric-extensional-Premetric-Space' - I J = - eq-indistinguishable-is-extensional-Premetric - ( structure-Premetric-Space A) - ( E) - ( is-indistinguishable-is-limit-cauchy-approximation-triangular-symmetric-Premetric-Space' - ( A) - ( S) - ( T) - ( f) - ( I) - ( J)) - - all-elements-equal-is-limit-cauchy-approximation-triangular-symmetric-extensional-Premetric-Space : - (is-limit-cauchy-approximation-Premetric-Space A f x) → - (is-limit-cauchy-approximation-Premetric-Space A f y) → - (x = y) - all-elements-equal-is-limit-cauchy-approximation-triangular-symmetric-extensional-Premetric-Space - I J = - all-elements-equal-is-limit-cauchy-approximation-triangular-symmetric-extensional-Premetric-Space' - ( is-limit'-is-limit-cauchy-approximation-Premetric-Space A f x I) - ( is-limit'-is-limit-cauchy-approximation-Premetric-Space A f y J) -``` - -## References - -Our definition of limit of Cauchy approximation follows Definition 11.2.10 from -{{#cite UF13}}. - -{{#bibliography}} diff --git a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md index af4cc8d527..b99c93919b 100644 --- a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md @@ -17,7 +17,8 @@ open import foundation.propositions open import foundation.subtypes open import foundation.universe-levels -open import metric-spaces.metric-spaces-WIP +open import metric-spaces.functions-metric-spaces +open import metric-spaces.metric-spaces ``` @@ -26,7 +27,7 @@ open import metric-spaces.metric-spaces-WIP 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}} +{{#concept "limit" Disambiguation="of function between metric spaces at a point" Agda=is-pt-limit-function-Metric-Space}} `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`. @@ -36,36 +37,36 @@ whenever `x'` is in an `m ε`-neighborhood of `x`, `f x'` is in an ```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) + (X : Metric-Space l1 l2) + (Y : Metric-Space l3 l4) + (f : type-function-Metric-Space X Y) + (x : type-Metric-Space X) + (y : type-Metric-Space Y) where - is-modulus-of-pt-limit-prop-function-Metric-Space-WIP : + is-modulus-of-pt-limit-prop-function-Metric-Space : (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) - is-modulus-of-pt-limit-prop-function-Metric-Space-WIP m = + is-modulus-of-pt-limit-prop-function-Metric-Space m = Π-Prop ( ℚ⁺) ( λ ε → Π-Prop - ( type-Metric-Space-WIP X) + ( type-Metric-Space X) ( λ x' → - neighborhood-prop-Metric-Space-WIP X (m ε) x x' ⇒ - neighborhood-prop-Metric-Space-WIP Y ε y (f x'))) + neighborhood-prop-Metric-Space X (m ε) x x' ⇒ + neighborhood-prop-Metric-Space Y ε y (f x'))) - is-modulus-of-pt-limit-function-Metric-Space-WIP : + is-modulus-of-pt-limit-function-Metric-Space : (ℚ⁺ → ℚ⁺) → 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-modulus-of-pt-limit-function-Metric-Space m = + type-Prop (is-modulus-of-pt-limit-prop-function-Metric-Space m) - is-pt-limit-prop-function-Metric-Space-WIP : Prop (l1 ⊔ l2 ⊔ l4) - is-pt-limit-prop-function-Metric-Space-WIP = + is-pt-limit-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) + is-pt-limit-prop-function-Metric-Space = is-inhabited-subtype-Prop - is-modulus-of-pt-limit-prop-function-Metric-Space-WIP + is-modulus-of-pt-limit-prop-function-Metric-Space - 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 + is-pt-limit-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) + is-pt-limit-function-Metric-Space = + type-Prop is-pt-limit-prop-function-Metric-Space ``` diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index e3bcbd5936..b5f69b7d9c 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -8,34 +8,37 @@ module metric-spaces.limits-of-sequences-metric-spaces where ```agda open import elementary-number-theory.inequality-natural-numbers +open import elementary-number-theory.maximum-natural-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.positive-rational-numbers open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types open import foundation.identity-types open import foundation.inhabited-subtypes open import foundation.inhabited-types +open import foundation.propositional-truncations open import foundation.propositions +open import foundation.sequences open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.universe-levels -open import metric-spaces.limits-of-sequences-premetric-spaces -open import metric-spaces.limits-of-sequences-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.sequences-metric-spaces +open import metric-spaces.short-functions-metric-spaces ``` ## Ideas -{{#concept "Limits" Disambiguation="of sequences in metric spaces" WD="limit of a sequence" WDID=Q847204 Agda=is-limit-sequence-Metric-Space}} -of [sequences in metric spaces](metric-spaces.sequences-metric-spaces.md) are -[limits](metric-spaces.limits-of-sequences-premetric-spaces.md) in the -underlying [premetric space](metric-spaces.premetric-spaces.md): there exists a -function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, `u n` is in an -[`ε`-neighborhood](metric-spaces.premetric-structures.md) of `l`. In a metric -space, all limits of a sequence are [equal](foundation.identity-types.md). +An element `l` of a [metric space](metric-spaces.metric-spaces.md) is the +{{#concept "limit" Disambiguation="of a sequence in a metric spaces" WD="limit of a sequence" WDID=Q847204 Agda=is-limit-sequence-Metric-Space}} +of a [sequence in metric spaces](metric-spaces.sequences-metric-spaces.md) if +there exists a function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, `u n` +is in an [`ε`-neighborhood](metric-spaces.rational-neighborhoods.md) of `l`. ## Definition @@ -45,15 +48,20 @@ space, all limits of a sequence are [equal](foundation.identity-types.md). module _ {l1 l2 : Level} (M : Metric-Space l1 l2) (u : sequence-type-Metric-Space M) - (l : type-Metric-Space M) + (lim : type-Metric-Space M) where is-limit-modulus-prop-sequence-Metric-Space : (ℚ⁺ → ℕ) → Prop l2 - is-limit-modulus-prop-sequence-Metric-Space = - is-limit-modulus-prop-sequence-Premetric-Space - ( premetric-Metric-Space M) - ( u) - ( l) + is-limit-modulus-prop-sequence-Metric-Space m = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( ℕ) + ( λ ( n : ℕ) → + hom-Prop + ( leq-ℕ-Prop (m ε) n) + ( neighborhood-prop-Metric-Space M ε (u n) lim))) is-limit-modulus-sequence-Metric-Space : (ℚ⁺ → ℕ) → UU l2 is-limit-modulus-sequence-Metric-Space m = @@ -95,16 +103,88 @@ module _ (Ly : is-limit-sequence-Metric-Space M u y) where - eq-limit-sequence-Metric-Space : x = y - eq-limit-sequence-Metric-Space = - is-tight-structure-Metric-Space M x y - ( indistinguishable-limit-sequence-Pseudometric-Space - ( pseudometric-Metric-Space M) - ( u) + sim-limit-sequence-Metric-Space : sim-Metric-Space M x y + sim-limit-sequence-Metric-Space = + rec-trunc-Prop + ( sim-prop-Metric-Space M x y) + ( λ My → + rec-trunc-Prop + ( Π-Prop ℚ⁺ (λ d → neighborhood-prop-Metric-Space M d x y)) + ( λ Mx → + lemma-sim-limit-modulus-sequence-Metric-Space Mx My) + ( Lx)) + ( Ly) + where + + lemma-add-limit-modulus-sequence-Metric-Space : + (d₁ d₂ : ℚ⁺) → + Σ ( ℕ) + ( λ N → + (n : ℕ) → + leq-ℕ N n → + neighborhood-Metric-Space M d₁ (u n) x) → + Σ ( ℕ) + ( λ N → + (n : ℕ) → + leq-ℕ N n → + neighborhood-Metric-Space M d₂ (u n) y) → + neighborhood-Metric-Space M (d₁ +ℚ⁺ d₂) x y + lemma-add-limit-modulus-sequence-Metric-Space d₁ d₂ (Nx , Mx) (Ny , My) = + triangular-neighborhood-Metric-Space M ( x) + ( u (max-ℕ Nx Ny)) ( y) - ( Lx) - ( Ly)) + ( d₁) + ( d₂) + ( My (max-ℕ Nx Ny) (right-leq-max-ℕ Nx Ny)) + ( symmetric-neighborhood-Metric-Space M d₁ + ( u (max-ℕ Nx Ny)) + ( x) + ( Mx (max-ℕ Nx Ny) (left-leq-max-ℕ Nx Ny))) + + lemma-sim-limit-modulus-sequence-Metric-Space : + limit-modulus-sequence-Metric-Space M u x → + limit-modulus-sequence-Metric-Space M u y → + sim-Metric-Space M x y + lemma-sim-limit-modulus-sequence-Metric-Space mx my ε = + let + (δ , η , δ+η=ε) = split-ℚ⁺ ε + Nδ = modulus-limit-modulus-sequence-Metric-Space M u x mx δ + Nη = modulus-limit-modulus-sequence-Metric-Space M u y my η + Nε = max-ℕ Nδ Nη + Nδ≤Nε = left-leq-max-ℕ Nδ Nη + Nη≤Nε = right-leq-max-ℕ Nδ Nη + + δ-neighborhood : neighborhood-Metric-Space M δ (u Nε) x + δ-neighborhood = + is-modulus-limit-modulus-sequence-Metric-Space M u x mx δ Nε Nδ≤Nε + + η-neighborhood : neighborhood-Metric-Space M η (u Nε) y + η-neighborhood = + is-modulus-limit-modulus-sequence-Metric-Space M u y my η Nε Nη≤Nε + + in + tr + ( is-upper-bound-dist-Metric-Space M x y) + ( δ+η=ε) + ( triangular-neighborhood-Metric-Space + ( M) + ( x) + ( u Nε) + ( y) + ( δ) + ( η) + ( η-neighborhood) + ( symmetric-neighborhood-Metric-Space + ( M) + ( δ) + ( u Nε) + ( x) + ( δ-neighborhood))) + + eq-limit-sequence-Metric-Space : x = y + eq-limit-sequence-Metric-Space = + eq-sim-Metric-Space M x y sim-limit-sequence-Metric-Space ``` ### Having a limit in a metric space is a proposition @@ -148,6 +228,44 @@ module _ is-prop-has-limit-sequence-Metric-Space ``` +### Short maps between metric spaces preserve limits + +```agda +module _ + {la la' lb lb' : Level} + (A : Metric-Space la la') + (B : Metric-Space lb lb') + (f : short-function-Metric-Space A B) + (u : sequence-type-Metric-Space A) + (lim : type-Metric-Space A) + where + + short-map-limit-modulus-sequence-Metric-Space : + limit-modulus-sequence-Metric-Space A u lim → + limit-modulus-sequence-Metric-Space + ( B) + ( map-sequence + ( map-short-function-Metric-Space A B f) + ( u)) + ( map-short-function-Metric-Space A B f lim) + short-map-limit-modulus-sequence-Metric-Space = + tot + ( λ m H ε n → + is-short-map-short-function-Metric-Space A B f ε (u n) lim ∘ + H ε n) + + short-map-limit-sequence-Metric-Space : + is-limit-sequence-Metric-Space A u lim → + is-limit-sequence-Metric-Space + ( B) + ( map-sequence + ( map-short-function-Metric-Space A B f) + ( u)) + ( map-short-function-Metric-Space A B f lim) + short-map-limit-sequence-Metric-Space = + map-is-inhabited short-map-limit-modulus-sequence-Metric-Space +``` + ## See also - [Convergent sequences](metric-spaces.convergent-sequences-metric-spaces.md): diff --git a/src/metric-spaces/limits-of-sequences-premetric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-premetric-spaces.lagda.md deleted file mode 100644 index 7c422c8689..0000000000 --- a/src/metric-spaces/limits-of-sequences-premetric-spaces.lagda.md +++ /dev/null @@ -1,154 +0,0 @@ -# Limits of sequences in premetric spaces - -```agda -module metric-spaces.limits-of-sequences-premetric-spaces where -``` - -
Imports - -```agda -open import elementary-number-theory.inequality-natural-numbers -open import elementary-number-theory.maximum-natural-numbers -open import elementary-number-theory.natural-numbers -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.functoriality-dependent-pair-types -open import foundation.identity-types -open import foundation.inhabited-subtypes -open import foundation.inhabited-types -open import foundation.propositions -open import foundation.sequences -open import foundation.subsequences -open import foundation.subtypes -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import metric-spaces.premetric-spaces -open import metric-spaces.sequences-premetric-spaces -open import metric-spaces.short-functions-premetric-spaces -``` - -
- -## Ideas - -An element `v` of a [premetric space](metric-spaces.premetric-spaces.md) `M` is -the -{{#concept "limit" Disambiguation="of a sequence in a premetric space" Agda=is-limit-sequence-Premetric-Space}} -of a [sequence](metric-spaces.sequences-premetric-spaces.md) `u` in a -[premetric space](metric-spaces.premetric-spaces.md) `M` if there exists a -function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, `u n` is in an -[`ε`-neighborhood](metric-spaces.premetric-structures.md) of `l`. The function -`m` is called a -{{#concept "limit modulus" Disambiguation="of a sequence in a premetric space" Agda=limit-modulus-sequence-Premetric-Space}} -of the sequence `u` at `l`. -[Short maps](metric-spaces.short-functions-premetric-spaces.md) between -premetric spaces preserves limits. - -## Definition - -### Limits of sequences in a premetric space - -```agda -module _ - {l1 l2 : Level} (M : Premetric-Space l1 l2) - (u : sequence-type-Premetric-Space M) - (lim : type-Premetric-Space M) - where - - is-limit-modulus-prop-sequence-Premetric-Space : (ℚ⁺ → ℕ) → Prop l2 - is-limit-modulus-prop-sequence-Premetric-Space m = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( ℕ) - ( λ (n : ℕ) → - hom-Prop - ( leq-ℕ-Prop (m ε) n) - ( structure-Premetric-Space M ε (u n) lim))) - - is-limit-modulus-sequence-Premetric-Space : (ℚ⁺ → ℕ) → UU l2 - is-limit-modulus-sequence-Premetric-Space m = - type-Prop (is-limit-modulus-prop-sequence-Premetric-Space m) - - limit-modulus-sequence-Premetric-Space : UU l2 - limit-modulus-sequence-Premetric-Space = - type-subtype is-limit-modulus-prop-sequence-Premetric-Space - - modulus-limit-modulus-sequence-Premetric-Space : - limit-modulus-sequence-Premetric-Space → ℚ⁺ → ℕ - modulus-limit-modulus-sequence-Premetric-Space m = pr1 m - - is-modulus-limit-modulus-sequence-Premetric-Space : - (m : limit-modulus-sequence-Premetric-Space) → - is-limit-modulus-sequence-Premetric-Space - (modulus-limit-modulus-sequence-Premetric-Space m) - is-modulus-limit-modulus-sequence-Premetric-Space m = pr2 m - - is-limit-prop-sequence-Premetric-Space : Prop l2 - is-limit-prop-sequence-Premetric-Space = - is-inhabited-subtype-Prop is-limit-modulus-prop-sequence-Premetric-Space - - is-limit-sequence-Premetric-Space : UU l2 - is-limit-sequence-Premetric-Space = - type-Prop is-limit-prop-sequence-Premetric-Space -``` - -## Properties - -### Short maps between premetric spaces preserve limits of sequences - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : short-function-Premetric-Space A B) - (u : sequence-type-Premetric-Space A) - (lim : type-Premetric-Space A) - where - - short-map-limit-modulus-sequence-Premetric-Space : - limit-modulus-sequence-Premetric-Space A u lim → - limit-modulus-sequence-Premetric-Space B - ( map-sequence - ( map-short-function-Premetric-Space A B f) - ( u)) - ( map-short-function-Premetric-Space A B f lim) - short-map-limit-modulus-sequence-Premetric-Space = - tot - ( λ m H ε n → - is-short-map-short-function-Premetric-Space A B f ε (u n) lim ∘ - H ε n) - - short-map-limit-sequence-Premetric-Space : - is-limit-sequence-Premetric-Space A u lim → - is-limit-sequence-Premetric-Space B - ( map-sequence - ( map-short-function-Premetric-Space A B f) - ( u)) - ( map-short-function-Premetric-Space A B f lim) - short-map-limit-sequence-Premetric-Space = - map-is-inhabited short-map-limit-modulus-sequence-Premetric-Space -``` - -### A sequence in a premetric space has a limit if all its subsequences have this limit - -```agda -module _ - {l1 l2 : Level} (M : Premetric-Space l1 l2) - (u : sequence-type-Premetric-Space M) - (lim : type-Premetric-Space M) - where - - reflects-limit-subsequence-Premetric-Space : - ( ( v : subsequence u) → - is-limit-sequence-Premetric-Space M - ( seq-subsequence u v) - ( lim)) → - is-limit-sequence-Premetric-Space M u lim - reflects-limit-subsequence-Premetric-Space H = H (refl-subsequence u) -``` diff --git a/src/metric-spaces/limits-of-sequences-pseudometric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-pseudometric-spaces.lagda.md deleted file mode 100644 index 1ce184d06c..0000000000 --- a/src/metric-spaces/limits-of-sequences-pseudometric-spaces.lagda.md +++ /dev/null @@ -1,237 +0,0 @@ -# Limits of sequences in pseudometric spaces - -```agda -module metric-spaces.limits-of-sequences-pseudometric-spaces where -``` - -
Imports - -```agda -open import elementary-number-theory.inequality-natural-numbers -open import elementary-number-theory.maximum-natural-numbers -open import elementary-number-theory.natural-numbers -open import elementary-number-theory.positive-rational-numbers - -open import foundation.constant-maps -open import foundation.dependent-pair-types -open import foundation.functoriality-dependent-pair-types -open import foundation.inhabited-subtypes -open import foundation.inhabited-types -open import foundation.propositional-truncations -open import foundation.propositions -open import foundation.sequences -open import foundation.subsequences -open import foundation.subtypes -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import metric-spaces.limits-of-sequences-premetric-spaces -open import metric-spaces.pseudometric-spaces -open import metric-spaces.sequences-pseudometric-spaces -``` - -
- -## Ideas - -{{#concept "Limits" Disambiguation="of sequences in pseudometric spaces" Agda=is-limit-sequence-Pseudometric-Space}} -of -[sequences in pseudometric spaces](metric-spaces.sequences-pseudometric-spaces.md) -are [limits](metric-spaces.limits-of-sequences-premetric-spaces.md) in the -underlying [premetric space](metric-spaces.premetric-spaces.md): there exists a -function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, `u n` is in an -[`ε`-neighborhood](metric-spaces.premetric-structures.md) of `l`. - -Limits of a sequence in a pseudometric space are indistinguishable. The value of -a constant sequence in a pseudometric space is its limit. - -## Definition - -### Limits of sequences in a pseudometric space - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - (u : sequence-type-Pseudometric-Space M) - (lim : type-Pseudometric-Space M) - where - - is-limit-modulus-prop-sequence-Pseudometric-Space : (ℚ⁺ → ℕ) → Prop l2 - is-limit-modulus-prop-sequence-Pseudometric-Space = - is-limit-modulus-prop-sequence-Premetric-Space - ( premetric-Pseudometric-Space M) - ( u) - ( lim) - - is-limit-modulus-sequence-Pseudometric-Space : (ℚ⁺ → ℕ) → UU l2 - is-limit-modulus-sequence-Pseudometric-Space m = - type-Prop (is-limit-modulus-prop-sequence-Pseudometric-Space m) - - limit-modulus-sequence-Pseudometric-Space : UU l2 - limit-modulus-sequence-Pseudometric-Space = - type-subtype is-limit-modulus-prop-sequence-Pseudometric-Space - - modulus-limit-modulus-sequence-Pseudometric-Space : - limit-modulus-sequence-Pseudometric-Space → ℚ⁺ → ℕ - modulus-limit-modulus-sequence-Pseudometric-Space m = pr1 m - - is-modulus-limit-modulus-sequence-Pseudometric-Space : - (m : limit-modulus-sequence-Pseudometric-Space) → - is-limit-modulus-sequence-Pseudometric-Space - (modulus-limit-modulus-sequence-Pseudometric-Space m) - is-modulus-limit-modulus-sequence-Pseudometric-Space m = pr2 m - - is-limit-prop-sequence-Pseudometric-Space : Prop l2 - is-limit-prop-sequence-Pseudometric-Space = - is-inhabited-subtype-Prop is-limit-modulus-prop-sequence-Pseudometric-Space - - is-limit-sequence-Pseudometric-Space : UU l2 - is-limit-sequence-Pseudometric-Space = - type-Prop is-limit-prop-sequence-Pseudometric-Space -``` - -## Properties - -### The value of a constant sequence in a pseudometric space is its limit - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) (x : type-Pseudometric-Space M) - where - - limit-modulus-constant-sequence-Pseudometric-Space : - limit-modulus-sequence-Pseudometric-Space M (const ℕ x) x - limit-modulus-constant-sequence-Pseudometric-Space = - ( λ _ → zero-ℕ) , - ( λ ε _ _ → is-reflexive-structure-Pseudometric-Space M ε x) - - limit-constant-sequence-Pseudometric-Space : - is-limit-sequence-Pseudometric-Space M (const ℕ x) x - limit-constant-sequence-Pseudometric-Space = - unit-trunc-Prop limit-modulus-constant-sequence-Pseudometric-Space -``` - -### Two limits of a sequence in a pseudometric space are indistinguishable - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - (u : sequence-type-Pseudometric-Space M) - (x y : type-Pseudometric-Space M) - where - - indistinguishable-limit-limit-modulus-sequence-Pseudometric-Space : - limit-modulus-sequence-Pseudometric-Space M u x → - limit-modulus-sequence-Pseudometric-Space M u y → - is-indistinguishable-Pseudometric-Space M x y - indistinguishable-limit-limit-modulus-sequence-Pseudometric-Space mx my ε = - tr - ( is-upper-bound-dist-Pseudometric-Space M x y) - ( eq-add-split-ℚ⁺ ε) - ( tr-modulus-indistinguishable - ( left-summand-split-ℚ⁺ ε) - ( right-summand-split-ℚ⁺ ε) - ( ( modulus-limit-modulus-sequence-Pseudometric-Space - ( M) - ( u) - ( x) - ( mx) - ( left-summand-split-ℚ⁺ ε)) , - ( is-modulus-limit-modulus-sequence-Pseudometric-Space - ( M) - ( u) - ( x) - ( mx) - ( left-summand-split-ℚ⁺ ε))) - ( ( modulus-limit-modulus-sequence-Pseudometric-Space - ( M) - ( u) - ( y) - ( my) - ( right-summand-split-ℚ⁺ ε)) , - ( is-modulus-limit-modulus-sequence-Pseudometric-Space - ( M) - ( u) - ( y) - ( my) - ( right-summand-split-ℚ⁺ ε)))) - where - tr-modulus-indistinguishable : - (d₁ d₂ : ℚ⁺) → - Σ ( ℕ) - ( λ N → - (n : ℕ) → - leq-ℕ N n → - neighborhood-Pseudometric-Space M d₁ (u n) x) → - Σ ( ℕ) - ( λ N → - (n : ℕ) → - leq-ℕ N n → - neighborhood-Pseudometric-Space M d₂ (u n) y) → - neighborhood-Pseudometric-Space M (d₁ +ℚ⁺ d₂) x y - tr-modulus-indistinguishable d₁ d₂ (Nx , Mx) (Ny , My) = - ( is-triangular-structure-Pseudometric-Space M - ( x) - ( u (max-ℕ Nx Ny)) - ( y) - ( d₁) - ( d₂) - ( My (max-ℕ Nx Ny) (right-leq-max-ℕ Nx Ny)) - ( is-symmetric-structure-Pseudometric-Space M d₁ - ( u (max-ℕ Nx Ny)) - ( x) - ( Mx (max-ℕ Nx Ny) (left-leq-max-ℕ Nx Ny)))) - - indistinguishable-limit-sequence-Pseudometric-Space : - is-limit-sequence-Pseudometric-Space M u x → - is-limit-sequence-Pseudometric-Space M u y → - is-indistinguishable-Pseudometric-Space M x y - indistinguishable-limit-sequence-Pseudometric-Space Lx Ly = - rec-trunc-Prop - ( is-indistinguishable-prop-Pseudometric-Space M x y) - ( λ My → - rec-trunc-Prop - ( Π-Prop ℚ⁺ (λ d → structure-Pseudometric-Space M d x y)) - ( λ Mx → - indistinguishable-limit-limit-modulus-sequence-Pseudometric-Space - Mx - My) - ( Lx)) - ( Ly) -``` - -### Taking subsequences preserves limits in pseudometric spaces - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - (u : sequence-type-Pseudometric-Space M) - (v : subsequence u) - (lim : type-Pseudometric-Space M) - where - - modulus-subsequence-limit-modulus-sequence-Premetric-Space : - limit-modulus-sequence-Pseudometric-Space M u lim → - limit-modulus-sequence-Pseudometric-Space - ( M) - ( seq-subsequence u v) - ( lim) - modulus-subsequence-limit-modulus-sequence-Premetric-Space = - tot - ( λ m is-modulus d n H → - is-modulus - ( d) - ( extract-subsequence u v n) - ( transitive-leq-ℕ - ( m d) - ( n) - ( extract-subsequence u v n) - ( is-superlinear-extract-subsequence u v n) - ( H))) - - preserves-limit-subsequence-Pseudometric-Space : - is-limit-sequence-Pseudometric-Space M u lim → - is-limit-sequence-Pseudometric-Space M (seq-subsequence u v) lim - preserves-limit-subsequence-Pseudometric-Space = - map-is-inhabited modulus-subsequence-limit-modulus-sequence-Premetric-Space -``` diff --git a/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md b/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md index 61aed1b211..bbf3ef92a2 100644 --- a/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md @@ -69,7 +69,7 @@ Lipschitz maps between metric spaces preserve module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where is-lipschitz-constant-prop-function-Metric-Space : @@ -85,8 +85,8 @@ module _ ( type-Metric-Space A) ( λ y → hom-Prop - ( structure-Metric-Space A d x y) - ( structure-Metric-Space B (α *ℚ⁺ d) (f x) (f y))))) + ( neighborhood-prop-Metric-Space A d x y) + ( neighborhood-prop-Metric-Space B (α *ℚ⁺ d) (f x) (f y))))) is-lipschitz-constant-function-Metric-Space : ℚ⁺ → UU (l1 ⊔ l2 ⊔ l2') is-lipschitz-constant-function-Metric-Space α = @@ -112,18 +112,18 @@ module _ where is-lipschitz-function-prop-Metric-Space : - map-type-Metric-Space A B → Prop (l1 ⊔ l2 ⊔ l2') + type-function-Metric-Space A B → Prop (l1 ⊔ l2 ⊔ l2') is-lipschitz-function-prop-Metric-Space f = is-inhabited-subtype-Prop (is-lipschitz-constant-prop-function-Metric-Space A B f) is-lipschitz-function-Metric-Space : - map-type-Metric-Space A B → UU (l1 ⊔ l2 ⊔ l2') + type-function-Metric-Space A B → UU (l1 ⊔ l2 ⊔ l2') is-lipschitz-function-Metric-Space f = type-Prop (is-lipschitz-function-prop-Metric-Space f) is-prop-is-lipschitz-function-Metric-Space : - (f : map-type-Metric-Space A B) → + (f : type-function-Metric-Space A B) → is-prop (is-lipschitz-function-Metric-Space f) is-prop-is-lipschitz-function-Metric-Space f = is-prop-type-Prop (is-lipschitz-function-prop-Metric-Space f) @@ -148,7 +148,7 @@ module _ where map-lipschitz-function-Metric-Space : - map-type-Metric-Space A B + type-function-Metric-Space A B map-lipschitz-function-Metric-Space = pr1 f is-lipschitz-map-lipschitz-function-Metric-Space : @@ -164,7 +164,7 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where all-lipschitz-constant-is-constant-function-Metric-Space : @@ -172,7 +172,7 @@ module _ ( α : ℚ⁺) → is-lipschitz-constant-function-Metric-Space A B f α all-lipschitz-constant-is-constant-function-Metric-Space H α d x y _ = - indistinguishable-eq-Metric-Space B (f x) (f y) (H x y) (α *ℚ⁺ d) + sim-eq-Metric-Space B (f x) (f y) (H x y) (α *ℚ⁺ d) ``` ### Short functions are Lipschitz functions with Lipschitz constant equal to 1 @@ -181,7 +181,7 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where is-one-lipschitz-constant-is-short-function-Metric-Space : @@ -209,12 +209,12 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where modulus-of-uniform-continuity-lipschitz-constant-function-Metric-Space : lipschitz-constant-function-Metric-Space A B f → - modulus-of-uniform-continuity-map-Metric-Space A B f + modulus-of-uniform-continuity-function-Metric-Space A B f modulus-of-uniform-continuity-lipschitz-constant-function-Metric-Space ( α , L) = ( mul-ℚ⁺ (inv-ℚ⁺ α)) , @@ -228,7 +228,7 @@ module _ is-uniformly-continuous-is-lipschitz-function-Metric-Space : is-lipschitz-function-Metric-Space A B f → - is-uniformly-continuous-map-Metric-Space A B f + is-uniformly-continuous-function-Metric-Space A B f is-uniformly-continuous-is-lipschitz-function-Metric-Space = map-is-inhabited modulus-of-uniform-continuity-lipschitz-constant-function-Metric-Space @@ -240,7 +240,7 @@ module _ uniformly-continuous-lipschitz-function-Metric-Space : lipschitz-function-Metric-Space A B → - uniformly-continuous-map-Metric-Space A B + uniformly-continuous-function-Metric-Space A B uniformly-continuous-lipschitz-function-Metric-Space f = ( map-lipschitz-function-Metric-Space A B f) , ( is-uniformly-continuous-is-lipschitz-function-Metric-Space @@ -258,8 +258,8 @@ module _ (A : Metric-Space la la') (B : Metric-Space lb lb') (C : Metric-Space lc lc') - (g : map-type-Metric-Space B C) - (f : map-type-Metric-Space A B) + (g : type-function-Metric-Space B C) + (f : type-function-Metric-Space A B) where mul-comp-lipschitz-constant-function-Metric-Space : @@ -285,8 +285,8 @@ module _ where comp-is-lipschitz-function-Metric-Space : - (g : map-type-Metric-Space B C) → - (f : map-type-Metric-Space A B) → + (g : type-function-Metric-Space B C) → + (f : type-function-Metric-Space A B) → is-lipschitz-function-Metric-Space B C g → is-lipschitz-function-Metric-Space A B f → is-lipschitz-function-Metric-Space A C (g ∘ f) @@ -346,7 +346,7 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f g : map-type-Metric-Space A B) + (f g : type-function-Metric-Space A B) (f~g : f ~ g) where @@ -375,7 +375,7 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) (Lf : is-lipschitz-function-Metric-Space A B f) where diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md index 5a630c5407..7a6ed6988e 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md @@ -19,6 +19,7 @@ open import metric-spaces.complete-metric-spaces open import metric-spaces.dependent-products-metric-spaces open import metric-spaces.equality-of-metric-spaces open import metric-spaces.isometries-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-space-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces @@ -141,3 +142,148 @@ module _ ( metric-space-Complete-Metric-Space A)) ( short-convergent-cauchy-approximation-Complete-Metric-Space) ``` + +### The map from a Cauchy approximation in a saturated complete metric space to its limit is short + +```agda +module _ + {l1 l2 : Level} (A : Complete-Metric-Space l1 l2) + where + + short-limit-cauchy-approximation-Complete-Metric-Space : + short-function-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) + ( metric-space-Complete-Metric-Space A) + short-limit-cauchy-approximation-Complete-Metric-Space = + comp-short-function-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) + ( metric-space-of-convergent-cauchy-approximations-Metric-Space + ( metric-space-Complete-Metric-Space A)) + ( metric-space-Complete-Metric-Space A) + ( short-limit-convergent-cauchy-approximation-Metric-Space + ( metric-space-Complete-Metric-Space A)) + ( short-convergent-cauchy-approximation-Complete-Metric-Space A) + + is-short-limit-cauchy-approximation-Complete-Metric-Space : + is-short-function-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) + ( metric-space-Complete-Metric-Space A) + ( limit-cauchy-approximation-Complete-Metric-Space A) + is-short-limit-cauchy-approximation-Complete-Metric-Space = + is-short-map-short-function-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) + ( metric-space-Complete-Metric-Space A) + ( short-limit-cauchy-approximation-Complete-Metric-Space) +``` + +### The metric space of Cauchy approximations in a complete metric space is complete + +Given a Cauchy approximation of Cauchy approximations `U : ℚ⁺ → ℚ⁺ → A` in a +saturated complete metric space `A`, we construct its limit as follows: + +1. for any `η : ℚ⁺`, the partial application `ε ↦ U ε η` is a Cauchy + approximation in `A`; +2. since `A` is complete, it converges to some `lim-η : A`; +3. the assignment `η ↦ lim-η` is a Cauchy approximation in `A`; +4. by construction it's a limit of `U` in the space of Cauchy approximations. + +```agda +module _ + {l1 l2 : Level} (A : Complete-Metric-Space l1 l2) + (U : cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A)) + where + + map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space : + ℚ⁺ → type-Complete-Metric-Space A + map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + η = + limit-cauchy-approximation-Complete-Metric-Space + ( A) + ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( metric-space-Complete-Metric-Space A) + ( U) + ( η)) + + is-cauchy-map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space : + is-cauchy-approximation-Metric-Space + ( metric-space-Complete-Metric-Space A) + ( map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space) + is-cauchy-map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + ε δ = + is-short-limit-cauchy-approximation-Complete-Metric-Space + ( A) + ( ε +ℚ⁺ δ) + ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( metric-space-Complete-Metric-Space A) + ( U) + ( ε)) + ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( metric-space-Complete-Metric-Space A) + ( U) + ( δ)) + ( λ η → + is-cauchy-approximation-map-cauchy-approximation-Metric-Space + ( metric-space-Complete-Metric-Space A) + ( map-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space + ( A)) + ( U) + ( η)) + ( ε) + ( δ)) + + lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space : + cauchy-approximation-Metric-Space + (metric-space-Complete-Metric-Space A) + lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + = + map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space , + is-cauchy-map-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + + is-limit-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space : + is-limit-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space + ( A)) + ( U) + ( lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space) + is-limit-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + ε δ η = + is-limit-limit-cauchy-approximation-Complete-Metric-Space + ( A) + ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( metric-space-Complete-Metric-Space A) + ( U) + ( η)) + ( ε) + ( δ) + +module _ + {l1 l2 : Level} (A : Complete-Metric-Space l1 l2) + where + + is-complete-metric-space-of-cauchy-approximations-Complete-Metric-Space : + is-complete-Metric-Space + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) + is-complete-metric-space-of-cauchy-approximations-Complete-Metric-Space U = + ( lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + ( A) + ( U)) , + ( is-limit-lim-cauchy-approximation-cauchy-approximations-Complete-Metric-Space + ( A) + ( U)) +``` + +### The complete metric space of Cauchy approximations in a complete metric space + +```agda +module _ + {l1 l2 : Level} (A : Complete-Metric-Space l1 l2) + where + + complete-metric-space-of-cauchy-approximations-Complete-Metric-Space : + Complete-Metric-Space (l1 ⊔ l2) l2 + complete-metric-space-of-cauchy-approximations-Complete-Metric-Space = + ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) , + ( is-complete-metric-space-of-cauchy-approximations-Complete-Metric-Space A) +``` diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md index e2615d8b0f..3027c94dcd 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md @@ -15,7 +15,6 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.dependent-products-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.saturated-metric-spaces open import metric-spaces.short-functions-metric-spaces open import metric-spaces.subspaces-metric-spaces ``` @@ -52,23 +51,6 @@ module _ ## Properties -### The metric space of Cauchy approximations in a saturated metric space is saturated - -```agda -module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) (H : is-saturated-Metric-Space A) - where - - is-saturated-metric-space-of-cauchy-approximations-is-saturated-Metric-Space : - is-saturated-Metric-Space - (metric-space-of-cauchy-approximations-Metric-Space A) - is-saturated-metric-space-of-cauchy-approximations-is-saturated-Metric-Space = - is-saturated-subspace-is-saturated-Metric-Space - ( Π-Metric-Space ℚ⁺ (λ _ → A)) - ( is-saturated-Π-is-saturated-Metric-Space ℚ⁺ (λ _ → A) (λ _ → H)) - ( is-cauchy-approximation-prop-Metric-Space A) -``` - ### The action of short maps on Cauchy approximations is short ```agda diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-saturated-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-saturated-complete-metric-spaces.lagda.md deleted file mode 100644 index cf47e22b5a..0000000000 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-saturated-complete-metric-spaces.lagda.md +++ /dev/null @@ -1,239 +0,0 @@ -# The metric space of Cauchy approximations in a saturated complete metric space - -```agda -module metric-spaces.metric-space-of-cauchy-approximations-saturated-complete-metric-spaces 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.universe-levels - -open import metric-spaces.cauchy-approximations-metric-spaces -open import metric-spaces.complete-metric-spaces -open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.dependent-products-metric-spaces -open import metric-spaces.metric-space-of-cauchy-approximations-complete-metric-spaces -open import metric-spaces.metric-space-of-cauchy-approximations-metric-spaces -open import metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces -open import metric-spaces.metric-spaces -open import metric-spaces.saturated-complete-metric-spaces -open import metric-spaces.saturated-metric-spaces -open import metric-spaces.short-functions-metric-spaces -open import metric-spaces.subspaces-metric-spaces -``` - -
- -## Idea - -The type of -[Cauchy approximations](metric-spaces.cauchy-approximations-metric-spaces.md) in -a -[saturated complete metric space](metric-spaces.saturated-complete-metric-spaces.md) -`A` inherits the -[metric structure](metric-spaces.metric-space-of-cauchy-approximations-metric-spaces.md) -of the Cauchy approximations in the underlying metric space; this is the -{{#concept "saturated complete metric space of Cauchy approximations" Disambiguation="in a saturated complete metric space" Agda=saturated-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space}} -in a saturated complete metric space. - -All Cauchy approximations in a saturated complete metric space are -[convergent](metric-spaces.convergent-cauchy-approximations-metric-spaces.md) -and the map from a Cauchy approximation to its limit is -[short](metric-spaces.short-functions-metric-spaces.md). - -## Definitions - -### The metric space of Cauchy approximations in a saturated complete metric space - -```agda -module _ - {l1 l2 : Level} (A : Saturated-Complete-Metric-Space l1 l2) - where - - metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space : - Metric-Space (l1 ⊔ l2) l2 - metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space = - metric-space-of-cauchy-approximations-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) -``` - -## Properties - -### The metric space of Cauchy approximations in a saturated complete metric space is saturated - -```agda -module _ - {l1 l2 : Level} (A : Saturated-Complete-Metric-Space l1 l2) - where - - is-saturated-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space : - is-saturated-Metric-Space - (metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A) - is-saturated-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space = - is-saturated-metric-space-of-cauchy-approximations-is-saturated-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( is-saturated-metric-space-Saturated-Complete-Metric-Space A) -``` - -### The map from a Cauchy approximation in a saturated complete metric space to its limit is short - -```agda -module _ - {l1 l2 : Level} (A : Saturated-Complete-Metric-Space l1 l2) - where - - short-limit-cauchy-approximation-Saturated-Complete-Metric-Space : - short-function-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A) - ( metric-space-Saturated-Complete-Metric-Space A) - short-limit-cauchy-approximation-Saturated-Complete-Metric-Space = - comp-short-function-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A) - ( metric-space-of-convergent-cauchy-approximations-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A)) - ( metric-space-Saturated-Complete-Metric-Space A) - ( short-limit-convergent-cauchy-approximation-is-saturated-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( is-saturated-metric-space-Saturated-Complete-Metric-Space A)) - ( short-convergent-cauchy-approximation-Complete-Metric-Space - ( complete-metric-space-Saturated-Complete-Metric-Space A)) - - is-short-limit-cauchy-approximation-Saturated-Complete-Metric-Space : - is-short-function-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A) - ( metric-space-Saturated-Complete-Metric-Space A) - ( limit-cauchy-approximation-Saturated-Complete-Metric-Space A) - is-short-limit-cauchy-approximation-Saturated-Complete-Metric-Space = - is-short-map-short-function-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A) - ( metric-space-Saturated-Complete-Metric-Space A) - ( short-limit-cauchy-approximation-Saturated-Complete-Metric-Space) -``` - -### The metric space of Cauchy approximations in a saturated complete metric space is complete - -Given a Cauchy approximation of Cauchy approximations `U : ℚ⁺ → ℚ⁺ → A` in a -saturated complete metric space `A`, we construct its limit as follows: - -1. for any `η : ℚ⁺`, the partial application `ε ↦ U ε η` is a Cauchy - approximation in `A`; -2. since `A` is complete, it converges to some `lim-η : A`; -3. since `A` is saturated, the assignment `η ↦ lim-η` is a Cauchy approximation - in `A`; -4. by construction it's a limit of `U` in the space of Cauchy approximations. - -```agda -module _ - {l1 l2 : Level} (A : Saturated-Complete-Metric-Space l1 l2) - (U : cauchy-approximation-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A)) - where - - map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space : - ℚ⁺ → type-Saturated-Complete-Metric-Space A - map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - η = - limit-cauchy-approximation-Complete-Metric-Space - ( complete-metric-space-Saturated-Complete-Metric-Space A) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( U) - ( η)) - - is-cauchy-map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space : - is-cauchy-approximation-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space) - is-cauchy-map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - ε δ = - is-short-limit-cauchy-approximation-Saturated-Complete-Metric-Space - ( A) - ( ε +ℚ⁺ δ) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( U) - ( ε)) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( U) - ( δ)) - ( λ η → - is-cauchy-approximation-map-cauchy-approximation-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( map-cauchy-approximation-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - ( A)) - ( U) - ( η)) - ( ε) - ( δ)) - - lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space : - cauchy-approximation-Metric-Space - (metric-space-Saturated-Complete-Metric-Space A) - lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - = - map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space , - is-cauchy-map-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - - is-limit-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space : - is-limit-cauchy-approximation-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - ( A)) - ( U) - ( lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space) - is-limit-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - ε δ η = - is-limit-limit-cauchy-approximation-Complete-Metric-Space - ( complete-metric-space-Saturated-Complete-Metric-Space A) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( U) - ( η)) - ( ε) - ( δ) -``` - -```agda -module _ - {l1 l2 : Level} (A : Saturated-Complete-Metric-Space l1 l2) - where - - is-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space : - is-complete-Metric-Space - ( metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A) - is-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - U = - ( lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - ( A) - ( U)) , - ( is-limit-lim-cauchy-approximation-cauchy-approximations-Saturated-Complete-Metric-Space - ( A) - ( U)) -``` - -### The saturated complete metric space of Cauchy approximations in a saturated complete metric space - -```agda -module _ - {l1 l2 : Level} (A : Saturated-Complete-Metric-Space l1 l2) - where - - saturated-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space : - Saturated-Complete-Metric-Space (l1 ⊔ l2) l2 - pr1 - saturated-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - = metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space A - pr2 - saturated-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - = - ( is-complete-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - A) , - ( is-saturated-metric-space-of-cauchy-approximations-Saturated-Complete-Metric-Space - A) -``` diff --git a/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md index fa5cb3aa99..cbc9fe4804 100644 --- a/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md @@ -23,7 +23,6 @@ open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.metric-space-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.saturated-metric-spaces open import metric-spaces.short-functions-metric-spaces open import metric-spaces.subspaces-metric-spaces ``` @@ -60,20 +59,27 @@ module _ ## Properties -### The map from a convergent Cauchy approximation in `M` to its limit is a short map into the saturated metric space of `M` +### The map from a convergent Cauchy approximation to its limit is short ```agda module _ {l1 l2 : Level} (A : Metric-Space l1 l2) where - is-short-saturated-limit-convergent-cauchy-approximation-Metric-Space : - is-short-function-Metric-Space + lemma-short-lim-convergent-cauchy-approximation-Metric-Space : + (ε : ℚ⁺) (x y : convergent-cauchy-approximation-Metric-Space A) → + neighborhood-Metric-Space ( metric-space-of-convergent-cauchy-approximations-Metric-Space A) - ( saturate-Metric-Space A) - ( limit-convergent-cauchy-approximation-Metric-Space A) - is-short-saturated-limit-convergent-cauchy-approximation-Metric-Space - ε x y Nxy δ = + ( ε) + ( x) + ( y) → + (δ : ℚ⁺) → + neighborhood-Metric-Space + ( A) + ( ε +ℚ⁺ δ) + ( limit-convergent-cauchy-approximation-Metric-Space A x) + ( limit-convergent-cauchy-approximation-Metric-Space A y) + lemma-short-lim-convergent-cauchy-approximation-Metric-Space ε x y Nxy δ = tr ( λ d → neighborhood-Metric-Space A d @@ -91,7 +97,7 @@ module _ ( limit-convergent-cauchy-approximation-Metric-Space A x) ( limit-convergent-cauchy-approximation-Metric-Space A y) lemma-neighborhood-limit θ η η' = - is-triangular-structure-Metric-Space + triangular-neighborhood-Metric-Space ( A) ( limit-convergent-cauchy-approximation-Metric-Space A x) ( map-convergent-cauchy-approximation-Metric-Space A y θ) @@ -99,7 +105,7 @@ module _ ( θ +ℚ⁺ η +ℚ⁺ ε) ( θ +ℚ⁺ η') ( is-limit-limit-convergent-cauchy-approximation-Metric-Space A y θ η') - ( is-triangular-structure-Metric-Space + ( triangular-neighborhood-Metric-Space ( A) ( limit-convergent-cauchy-approximation-Metric-Space A x) ( map-convergent-cauchy-approximation-Metric-Space A x θ) @@ -107,7 +113,7 @@ module _ ( θ +ℚ⁺ η) ( ε) ( Nxy θ) - ( is-symmetric-structure-Metric-Space + ( symmetric-neighborhood-Metric-Space ( A) ( θ +ℚ⁺ η) ( map-convergent-cauchy-approximation-Metric-Space A x θ) @@ -158,39 +164,25 @@ module _ ( ap (add-ℚ⁺' δ₂) (commutative-add-ℚ⁺ δ₁ ε)) ∙ ( associative-add-ℚ⁺ ε δ₁ δ₂) ∙ ( ap (add-ℚ⁺ ε) (eq-add-split-ℚ⁺ δ)) -``` - -### The map from a convergent Cauchy approximation in a saturated metric to its limit is short -```agda -module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) - (is-saturated : is-saturated-Metric-Space A) - where - - is-short-limit-convergent-cauchy-approximation-is-saturated-Metric-Space : + is-short-limit-convergent-cauchy-approximation-Metric-Space : is-short-function-Metric-Space ( metric-space-of-convergent-cauchy-approximations-Metric-Space A) ( A) ( limit-convergent-cauchy-approximation-Metric-Space A) - is-short-limit-convergent-cauchy-approximation-is-saturated-Metric-Space - ε x y Nxy = - is-saturated + is-short-limit-convergent-cauchy-approximation-Metric-Space ε x y Nxy = + saturated-neighborhood-Metric-Space + ( A) ( ε) ( limit-convergent-cauchy-approximation-Metric-Space A x) ( limit-convergent-cauchy-approximation-Metric-Space A y) - ( is-short-saturated-limit-convergent-cauchy-approximation-Metric-Space - ( A) - ( ε) - ( x) - ( y) - ( Nxy)) + ( lemma-short-lim-convergent-cauchy-approximation-Metric-Space ε x y Nxy) - short-limit-convergent-cauchy-approximation-is-saturated-Metric-Space : + short-limit-convergent-cauchy-approximation-Metric-Space : short-function-Metric-Space ( metric-space-of-convergent-cauchy-approximations-Metric-Space A) ( A) - short-limit-convergent-cauchy-approximation-is-saturated-Metric-Space = + short-limit-convergent-cauchy-approximation-Metric-Space = limit-convergent-cauchy-approximation-Metric-Space A , - is-short-limit-convergent-cauchy-approximation-is-saturated-Metric-Space + is-short-limit-convergent-cauchy-approximation-Metric-Space ``` diff --git a/src/metric-spaces/metric-space-of-functions-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-functions-metric-spaces.lagda.md index 30986a3d9a..96e6de8afb 100644 --- a/src/metric-spaces/metric-space-of-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-functions-metric-spaces.lagda.md @@ -17,6 +17,7 @@ open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.dependent-products-metric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces ``` @@ -78,7 +79,7 @@ module _ ( f : cauchy-approximation-Metric-Space ( metric-space-of-functions-Metric-Space A B)) - ( g : map-type-Metric-Space A B) + ( g : type-function-Metric-Space A B) where is-pointwise-limit-is-limit-cauchy-approximation-function-Metric-Space : 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 deleted file mode 100644 index 506eecbe30..0000000000 --- a/src/metric-spaces/metric-space-of-rational-numbers-WIP.lagda.md +++ /dev/null @@ -1,459 +0,0 @@ -# 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-ℚ = - make-Metric-Space-WIP - ℚ - neighborhood-prop-ℚ - is-reflexive-neighborhood-ℚ - is-symmetric-neighborhood-ℚ - is-triangular-neighborhood-ℚ - is-saturated-neighborhood-ℚ - 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-ℚ⁺ -``` diff --git a/src/metric-spaces/metric-space-of-rational-numbers-with-open-neighborhoods.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers-with-open-neighborhoods.lagda.md deleted file mode 100644 index 83a5a59bfe..0000000000 --- a/src/metric-spaces/metric-space-of-rational-numbers-with-open-neighborhoods.lagda.md +++ /dev/null @@ -1,215 +0,0 @@ -# The metric structure on the rational numbers with open neighborhoods - -```agda -{-# OPTIONS --lossy-unification #-} - -module metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods where -``` - -
Imports - -```agda -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.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.cartesian-product-types -open import foundation.dependent-pair-types -open import foundation.empty-types -open import foundation.equivalences -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.extensional-premetric-structures -open import metric-spaces.metric-spaces -open import metric-spaces.metric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.premetric-structures -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -[Srict inequality](elementary-number-theory.strict-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 strict 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 with open neighborhoods" Agda=metric-space-le-ℚ}}. - -## Definitions - -### The standard premetric on the rational numbers with open neighborhoods - -```agda -premetric-le-ℚ : Premetric lzero ℚ -premetric-le-ℚ d x y = - product-Prop - ( le-ℚ-Prop y (x +ℚ (rational-ℚ⁺ d))) - ( le-ℚ-Prop x (y +ℚ (rational-ℚ⁺ d))) - -neighborhood-le-ℚ : ℚ⁺ → ℚ → ℚ → UU lzero -neighborhood-le-ℚ d x y = type-Prop (premetric-le-ℚ d x y) -``` - -## Properties - -### The standard premetric on the rational numbers is a metric - -```agda -is-reflexive-premetric-le-ℚ : is-reflexive-Premetric premetric-le-ℚ -is-reflexive-premetric-le-ℚ d x = - (le-right-add-rational-ℚ⁺ x d , le-right-add-rational-ℚ⁺ x d) - -is-symmetric-premetric-le-ℚ : is-symmetric-Premetric premetric-le-ℚ -is-symmetric-premetric-le-ℚ d x y (H , K) = (K , H) - -is-tight-premetric-le-ℚ : is-tight-Premetric premetric-le-ℚ -is-tight-premetric-le-ℚ x y H = - antisymmetric-leq-ℚ - ( x) - ( y) - ( map-inv-equiv (equiv-leq-le-add-positive-ℚ x y) (pr2 ∘ H)) - ( map-inv-equiv (equiv-leq-le-add-positive-ℚ y x) (pr1 ∘ H)) - -is-local-premetric-le-ℚ : is-local-Premetric premetric-le-ℚ -is-local-premetric-le-ℚ = - is-local-is-tight-Premetric - premetric-le-ℚ - is-tight-premetric-le-ℚ - -is-triangular-premetric-le-ℚ : - is-triangular-Premetric premetric-le-ℚ -pr1 (is-triangular-premetric-le-ℚ x y z d₁ d₂ Hyz Hxy) = - tr - ( le-ℚ z) - ( associative-add-ℚ x (rational-ℚ⁺ d₁) (rational-ℚ⁺ d₂)) - ( transitive-le-ℚ - ( z) - ( y +ℚ ( rational-ℚ⁺ d₂)) - ( x +ℚ (rational-ℚ⁺ d₁) +ℚ (rational-ℚ⁺ d₂)) - ( preserves-le-left-add-ℚ - ( rational-ℚ⁺ d₂) - ( y) - ( x +ℚ (rational-ℚ⁺ d₁)) - ( pr1 Hxy)) - ( pr1 Hyz)) -pr2 (is-triangular-premetric-le-ℚ x y z d₁ d₂ Hyz Hxy) = - tr - ( le-ℚ x) - ( ap (z +ℚ_) (commutative-add-ℚ (rational-ℚ⁺ d₂) (rational-ℚ⁺ d₁))) - ( tr - ( le-ℚ x) - ( associative-add-ℚ z (rational-ℚ⁺ d₂) (rational-ℚ⁺ d₁)) - ( transitive-le-ℚ - ( x) - ( y +ℚ (rational-ℚ⁺ d₁)) - ( z +ℚ (rational-ℚ⁺ d₂) +ℚ (rational-ℚ⁺ d₁)) - ( ( preserves-le-left-add-ℚ - ( rational-ℚ⁺ d₁) - ( y) - ( z +ℚ (rational-ℚ⁺ d₂)) - ( pr2 Hyz))) - ( pr2 Hxy))) - -is-pseudometric-premetric-le-ℚ : is-pseudometric-Premetric premetric-le-ℚ -is-pseudometric-premetric-le-ℚ = - is-reflexive-premetric-le-ℚ , - is-symmetric-premetric-le-ℚ , - is-triangular-premetric-le-ℚ - -is-metric-premetric-le-ℚ : is-metric-Premetric premetric-le-ℚ -pr1 is-metric-premetric-le-ℚ = is-pseudometric-premetric-le-ℚ -pr2 is-metric-premetric-le-ℚ = is-local-premetric-le-ℚ -``` - -### The standard metric space of rational numbers with open neighborhoods - -```agda -premetric-space-le-ℚ : Premetric-Space lzero lzero -premetric-space-le-ℚ = ℚ , premetric-le-ℚ - -metric-space-le-ℚ : Metric-Space lzero lzero -pr1 metric-space-le-ℚ = premetric-space-le-ℚ -pr2 metric-space-le-ℚ = is-metric-premetric-le-ℚ -``` - -### Relationship to the distance on rational numbers - -```agda -abstract - le-dist-neighborhood-le-ℚ : - (ε : ℚ⁺) (p q : ℚ) → - neighborhood-le-ℚ ε p q → - le-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) - le-dist-neighborhood-le-ℚ ε⁺@(ε , _) p q (H , K) = - le-dist-le-diff-ℚ - ( p) - ( q) - ( ε) - ( swap-right-diff-le-ℚ p ε q (le-transpose-right-add-ℚ p q ε K)) - ( swap-right-diff-le-ℚ q ε p (le-transpose-right-add-ℚ q p ε H)) - - neighborhood-le-le-dist-ℚ : - (ε : ℚ⁺) (p q : ℚ) → - le-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) → - neighborhood-le-ℚ ε p q - neighborhood-le-le-dist-ℚ ε⁺@(ε , _) p q |p-q|<ε = - ( le-transpose-left-diff-ℚ - ( q) - ( ε) - ( p) - ( swap-right-diff-le-ℚ - ( q) - ( p) - ( ε) - ( concatenate-leq-le-ℚ - ( q -ℚ p) - ( rational-dist-ℚ p q) - ( ε) - ( leq-reversed-diff-dist-ℚ p q) - ( |p-q|<ε)))) , - ( le-transpose-left-diff-ℚ - ( p) - ( ε) - ( q) - ( swap-right-diff-le-ℚ - ( p) - ( q) - ( ε) - ( concatenate-leq-le-ℚ - ( p -ℚ q) - ( rational-dist-ℚ p q) - ( ε) - ( leq-diff-dist-ℚ p q) - ( |p-q|<ε)))) - -le-dist-iff-neighborhood-le-ℚ : - (ε : ℚ⁺) (p q : ℚ) → - le-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) ↔ - neighborhood-le-ℚ ε p q -pr1 (le-dist-iff-neighborhood-le-ℚ ε p q) = neighborhood-le-le-dist-ℚ ε p q -pr2 (le-dist-iff-neighborhood-le-ℚ ε p q) = le-dist-neighborhood-le-ℚ ε p q -``` - -## See also - -- The standard - [metric space of rational numbers](metric-spaces.metric-space-of-rational-numbers.md) diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index 90caeaf96a..470b0390ad 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# The standard metric structure on the rational numbers +# The standard metric space of the rational numbers ```agda {-# OPTIONS --lossy-unification #-} @@ -38,20 +38,19 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.extensional-premetric-structures +open import metric-spaces.extensional-pseudometric-spaces open import metric-spaces.isometries-metric-spaces -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.lipschitz-functions-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.metric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.premetric-structures -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.saturated-metric-spaces -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures +open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.pseudometric-spaces +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 +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods ``` @@ -60,71 +59,59 @@ open import metric-spaces.triangular-premetric-structures [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-leq-ℚ}}. +[rational neighborhood relation](metric-spaces.rational-neighborhoods.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-spaces.md) on `ℚ` that defines the +{{#concept "standard metric space of rational numbers" Agda=metric-space-ℚ}}. ## Definitions -### The standard saturated premetric on the rational numbers +### The standard neighborhood relation on the rational numbers ```agda -lower-neighborhood-leq-prop-ℚ : (d : ℚ⁺) (x y : ℚ) → Prop lzero -lower-neighborhood-leq-prop-ℚ d x y = +lower-neighborhood-prop-ℚ : (d : ℚ⁺) (x y : ℚ) → Prop lzero +lower-neighborhood-prop-ℚ d x y = leq-ℚ-Prop y (x +ℚ (rational-ℚ⁺ d)) -lower-neighborhood-leq-ℚ : (d : ℚ⁺) (x y : ℚ) → UU lzero -lower-neighborhood-leq-ℚ d x y = type-Prop (lower-neighborhood-leq-prop-ℚ d x y) +lower-neighborhood-ℚ : (d : ℚ⁺) (x y : ℚ) → UU lzero +lower-neighborhood-ℚ d x y = type-Prop (lower-neighborhood-prop-ℚ d x y) -is-prop-lower-neighborhood-leq-ℚ : - (d : ℚ⁺) (x y : ℚ) → is-prop (lower-neighborhood-leq-ℚ d x y) -is-prop-lower-neighborhood-leq-ℚ d x y = - is-prop-type-Prop (lower-neighborhood-leq-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) -premetric-leq-ℚ : Premetric lzero ℚ -premetric-leq-ℚ d x y = +neighborhood-prop-ℚ : Rational-Neighborhood-Relation lzero ℚ +neighborhood-prop-ℚ d x y = product-Prop - ( lower-neighborhood-leq-prop-ℚ d x y) - ( lower-neighborhood-leq-prop-ℚ d y x) + ( lower-neighborhood-prop-ℚ d x y) + ( lower-neighborhood-prop-ℚ d y x) -neighborhood-leq-ℚ : (d : ℚ⁺) (x y : ℚ) → UU lzero -neighborhood-leq-ℚ d x y = type-Prop (premetric-leq-ℚ d x y) +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 +### The standard neighborhood relation on the rational numbers is a metric ```agda -is-reflexive-premetric-leq-ℚ : is-reflexive-Premetric premetric-leq-ℚ -is-reflexive-premetric-leq-ℚ d x = +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-premetric-leq-ℚ : is-symmetric-Premetric premetric-leq-ℚ -is-symmetric-premetric-leq-ℚ d x y (H , K) = (K , H) +is-symmetric-neighborhood-ℚ : + is-symmetric-Rational-Neighborhood-Relation neighborhood-prop-ℚ +is-symmetric-neighborhood-ℚ d x y (H , K) = (K , H) -is-tight-premetric-leq-ℚ : is-tight-Premetric premetric-leq-ℚ -is-tight-premetric-leq-ℚ 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-local-premetric-leq-ℚ : is-local-Premetric premetric-leq-ℚ -is-local-premetric-leq-ℚ = - is-local-is-tight-Premetric - premetric-leq-ℚ - is-tight-premetric-leq-ℚ - -is-triangular-premetric-leq-ℚ : - is-triangular-Premetric premetric-leq-ℚ -pr1 (is-triangular-premetric-leq-ℚ x y z d₁ d₂ Hyz Hxy) = +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₂)) @@ -138,7 +125,7 @@ pr1 (is-triangular-premetric-leq-ℚ x y z d₁ d₂ Hyz Hxy) = ( x +ℚ (rational-ℚ⁺ d₁)) ( pr1 Hxy)) ( pr1 Hyz)) -pr2 (is-triangular-premetric-leq-ℚ x y z d₁ d₂ Hyz Hxy) = +pr2 (is-triangular-neighborhood-ℚ x y z d₁ d₂ Hyz Hxy) = tr ( leq-ℚ x) ( ap (z +ℚ_) (commutative-add-ℚ (rational-ℚ⁺ d₂) (rational-ℚ⁺ d₁))) @@ -156,26 +143,63 @@ pr2 (is-triangular-premetric-leq-ℚ x y z d₁ d₂ Hyz Hxy) = ( pr2 Hyz))) ( pr2 Hxy))) -is-pseudometric-premetric-leq-ℚ : is-pseudometric-Premetric premetric-leq-ℚ -is-pseudometric-premetric-leq-ℚ = - is-reflexive-premetric-leq-ℚ , - is-symmetric-premetric-leq-ℚ , - is-triangular-premetric-leq-ℚ +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 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 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-metric-premetric-leq-ℚ : is-metric-Premetric premetric-leq-ℚ -pr1 is-metric-premetric-leq-ℚ = is-pseudometric-premetric-leq-ℚ -pr2 is-metric-premetric-leq-ℚ = is-local-premetric-leq-ℚ +is-extensional-pseudometric-space-ℚ : + is-extensional-Pseudometric-Space 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 -premetric-space-leq-ℚ : Premetric-Space lzero lzero -premetric-space-leq-ℚ = ℚ , premetric-leq-ℚ - -metric-space-leq-ℚ : Metric-Space lzero lzero -pr1 metric-space-leq-ℚ = premetric-space-leq-ℚ -pr2 metric-space-leq-ℚ = is-metric-premetric-leq-ℚ +metric-space-ℚ : Metric-Space lzero lzero +metric-space-ℚ = + make-Metric-Space + ℚ + neighborhood-prop-ℚ + is-reflexive-neighborhood-ℚ + is-symmetric-neighborhood-ℚ + is-triangular-neighborhood-ℚ + is-saturated-neighborhood-ℚ + is-extensional-pseudometric-space-ℚ ``` ## Properties @@ -184,11 +208,11 @@ pr2 metric-space-leq-ℚ = is-metric-premetric-leq-ℚ ```agda abstract - leq-dist-neighborhood-leq-ℚ : + leq-dist-neighborhood-ℚ : (ε : ℚ⁺) (p q : ℚ) → - neighborhood-leq-ℚ ε p q → + neighborhood-ℚ ε p q → leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) - leq-dist-neighborhood-leq-ℚ ε⁺@(ε , _) p q (H , K) = + leq-dist-neighborhood-ℚ ε⁺@(ε , _) p q (H , K) = leq-dist-leq-diff-ℚ ( p) ( q) @@ -196,11 +220,11 @@ abstract ( 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-leq-dist-ℚ : + neighborhood-leq-dist-ℚ : (ε : ℚ⁺) (p q : ℚ) → leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) → - neighborhood-leq-ℚ ε p q - neighborhood-leq-leq-dist-ℚ ε⁺@(ε , _) p q |p-q|≤ε = + neighborhood-ℚ ε p q + neighborhood-leq-dist-ℚ ε⁺@(ε , _) p q |p-q|≤ε = ( leq-transpose-left-diff-ℚ ( q) ( ε) @@ -230,34 +254,12 @@ abstract ( |p-q|≤ε) ( leq-diff-dist-ℚ p q)))) -leq-dist-iff-neighborhood-leq-ℚ : +leq-dist-iff-neighborhood-ℚ : (ε : ℚ⁺) (p q : ℚ) → leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) ↔ - neighborhood-leq-ℚ ε p q -pr1 (leq-dist-iff-neighborhood-leq-ℚ ε p q) = neighborhood-leq-leq-dist-ℚ ε p q -pr2 (leq-dist-iff-neighborhood-leq-ℚ ε p q) = leq-dist-neighborhood-leq-ℚ ε p q -``` - -### The standard saturated metric space of rational numbers is saturated - -```agda -is-saturated-metric-space-leq-ℚ : - is-saturated-Metric-Space metric-space-leq-ℚ -is-saturated-metric-space-leq-ℚ ε 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 δ))) + 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 @@ -267,10 +269,10 @@ module _ (x u v : ℚ) (d : ℚ⁺) where - preserves-lower-neighborhood-leq-add-ℚ : - lower-neighborhood-leq-ℚ d u v → - lower-neighborhood-leq-ℚ d (x +ℚ u) (x +ℚ v) - preserves-lower-neighborhood-leq-add-ℚ H = + 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)) @@ -280,10 +282,10 @@ module _ ( u +ℚ rational-ℚ⁺ d) ( H)) - reflects-lower-neighborhood-leq-add-ℚ : - lower-neighborhood-leq-ℚ d (x +ℚ u) (x +ℚ v) → - lower-neighborhood-leq-ℚ d u v - reflects-lower-neighborhood-leq-add-ℚ = + 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))) ``` @@ -295,26 +297,26 @@ module _ is-isometry-add-ℚ : is-isometry-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( add-ℚ x) is-isometry-add-ℚ d y z = pair ( map-product - ( preserves-lower-neighborhood-leq-add-ℚ x y z d) - ( preserves-lower-neighborhood-leq-add-ℚ x z y d)) + ( preserves-lower-neighborhood-add-ℚ x y z d) + ( preserves-lower-neighborhood-add-ℚ x z y d)) ( map-product - ( reflects-lower-neighborhood-leq-add-ℚ x y z d) - ( reflects-lower-neighborhood-leq-add-ℚ x z y d)) + ( reflects-lower-neighborhood-add-ℚ x y z d) + ( reflects-lower-neighborhood-add-ℚ x z y d)) is-isometry-add-ℚ' : is-isometry-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( add-ℚ' x) is-isometry-add-ℚ' d y z = binary-tr - ( λ u v → type-iff-Prop (premetric-leq-ℚ d y z) (premetric-leq-ℚ d u v)) + ( λ u v → neighborhood-ℚ d y z ↔ neighborhood-ℚ d u v) ( commutative-add-ℚ x y) ( commutative-add-ℚ x z) ( is-isometry-add-ℚ d y z) @@ -330,12 +332,12 @@ module _ abstract is-lipschitz-constant-succ-abs-mul-ℚ : is-lipschitz-constant-function-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( mul-ℚ x) ( positive-succ-ℚ⁰⁺ (abs-ℚ x)) is-lipschitz-constant-succ-abs-mul-ℚ d y z H = - neighborhood-leq-leq-dist-ℚ + neighborhood-leq-dist-ℚ ( positive-succ-ℚ⁰⁺ (abs-ℚ x) *ℚ⁺ d) ( x *ℚ y) ( x *ℚ z) @@ -353,7 +355,7 @@ module _ ( positive-succ-ℚ⁰⁺ (abs-ℚ x)) ( rational-dist-ℚ y z) ( rational-ℚ⁺ d) - ( leq-dist-neighborhood-leq-ℚ d y z H)) + ( leq-dist-neighborhood-ℚ d y z H)) ( preserves-leq-right-mul-ℚ⁰⁺ ( dist-ℚ y z) ( rational-abs-ℚ x) @@ -362,8 +364,8 @@ module _ lipschitz-constant-succ-abs-mul-ℚ : lipschitz-constant-function-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( mul-ℚ x) lipschitz-constant-succ-abs-mul-ℚ = ( positive-succ-ℚ⁰⁺ (abs-ℚ x)) , @@ -371,21 +373,21 @@ module _ is-lipschitz-left-mul-ℚ : ( is-lipschitz-function-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( 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-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( mul-ℚ' x)) is-lipschitz-right-mul-ℚ = is-lipschitz-htpy-function-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) ( mul-ℚ x) ( mul-ℚ' x) ( commutative-mul-ℚ x) @@ -397,7 +399,7 @@ module _ ```agda is-cauchy-approximation-rational-ℚ⁺ : is-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ rational-ℚ⁺ is-cauchy-approximation-rational-ℚ⁺ ε δ = ( leq-le-ℚ @@ -424,13 +426,13 @@ is-cauchy-approximation-rational-ℚ⁺ ε δ = ( le-left-add-ℚ⁺ ε δ))) cauchy-approximation-rational-ℚ⁺ : - cauchy-approximation-Metric-Space metric-space-leq-ℚ + cauchy-approximation-Metric-Space metric-space-ℚ cauchy-approximation-rational-ℚ⁺ = rational-ℚ⁺ , is-cauchy-approximation-rational-ℚ⁺ is-zero-limit-rational-ℚ⁺ : - is-limit-cauchy-approximation-Premetric-Space - ( premetric-Metric-Space metric-space-leq-ℚ) + is-limit-cauchy-approximation-Metric-Space + ( metric-space-ℚ) ( cauchy-approximation-rational-ℚ⁺) ( zero-ℚ) is-zero-limit-rational-ℚ⁺ ε δ = @@ -450,14 +452,9 @@ is-zero-limit-rational-ℚ⁺ ε δ = ( le-left-add-ℚ⁺ ε δ))) convergent-rational-ℚ⁺ : - convergent-cauchy-approximation-Metric-Space metric-space-leq-ℚ + convergent-cauchy-approximation-Metric-Space metric-space-ℚ convergent-rational-ℚ⁺ = cauchy-approximation-rational-ℚ⁺ , zero-ℚ , is-zero-limit-rational-ℚ⁺ ``` - -## See also - -- The - [metric space of rational numbers with open neighborhoods](metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods.md) diff --git a/src/metric-spaces/metric-spaces-WIP.lagda.md b/src/metric-spaces/metric-spaces-WIP.lagda.md deleted file mode 100644 index e56db06a47..0000000000 --- a/src/metric-spaces/metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,411 +0,0 @@ -# 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.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 -``` - -
- -## Idea - -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. - -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`. -- [**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 -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`. - -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 this axiom to ensure that the subsets of -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 = - Σ (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 = - ( 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 (pr2 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 : - ℚ⁺ → Relation-Prop l2 type-Metric-Space-WIP - neighborhood-prop-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-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-Pseudometric-Space-WIP pseudometric-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 = - 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-pseudometric-neighborhood-Metric-Space-WIP : - is-pseudometric-Rational-Neighborhood-Relation - type-Metric-Space-WIP - neighborhood-prop-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-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-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-Pseudometric-Space-WIP pseudometric-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-Pseudometric-Space-WIP pseudometric-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-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 - -```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-Pseudometric-Space-WIP (pseudometric-Metric-Space-WIP A) - - sim-Metric-Space-WIP : Relation l2 (type-Metric-Space-WIP A) - sim-Metric-Space-WIP = - 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-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-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-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-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-Pseudometric-Space-WIP (pseudometric-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-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-Pseudometric-Space-WIP (pseudometric-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-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 = - (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 -module _ - {l1 l2 : Level} (A : Metric-Space-WIP l1 l2) - where - - equiv-sim-eq-Metric-Space-WIP : - (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-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) → - 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) -``` - -### 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) - 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/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index e2eb2067b0..d687ff45b0 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -11,6 +11,7 @@ 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 @@ -18,19 +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-premetric-structures -open import metric-spaces.metric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.premetric-structures +open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.preimage-rational-neighborhoods open import metric-spaces.pseudometric-spaces -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures +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 ``` @@ -47,7 +49,8 @@ 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 @@ -58,52 +61,67 @@ 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.** Every positive rational `d` is an upper bound on the distance - from `x` to itself. -- **Symmetry.** If `d` is an upper bound on the distance from `x` to `y`, then - `d` is an upper bound on the distance from `y` to `x`. -- **Triangularity.** 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`. - -Finally, we ask that our metric spaces are **extensional**, which amounts to the -property of **indistinguishability of identicals** +- [**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`. +- [**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.md); finally, we ask +that our metric spaces are +[**extensional**](metric-spaces.extensional-pseudometric-spaces.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` and `y` are [equal](foundation-core.identity-types.md). - -Put concisely, a metric space is a -[premetric space](metric-spaces.premetric-spaces.md) whose -[premetric](metric-spaces.premetric-structures.md) is -[reflexive](metric-spaces.reflexive-premetric-structures.md), -[symmetric](metric-spaces.symmetric-premetric-structures.md), -[triangular](metric-spaces.triangular-premetric-structures.md), and -[extensional](metric-spaces.extensional-premetric-structures.md): a -[metric structure](metric-spaces.metric-structures.md). Equivalently, it is a -[pseudometric space](metric-spaces.pseudometric-spaces.md) whose premetric is -extensional. + `y`, then `x = y`. + +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 this axiom to ensure that the subsets of +upper bounds on distances between elements is closed on the left. ## Definitions -### The property of being a metric premetric space +### Metric Structures on a type ```agda module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) + {l1 : Level} (A : UU l1) {l2 : Level} + (B : Rational-Neighborhood-Relation l2 A) where - is-metric-prop-Premetric-Space : Prop (l1 ⊔ l2) - is-metric-prop-Premetric-Space = - is-metric-prop-Premetric (structure-Premetric-Space A) - - is-metric-Premetric-Space : UU (l1 ⊔ l2) - is-metric-Premetric-Space = - type-Prop is-metric-prop-Premetric-Space - - is-prop-is-metric-Premetric-Space : - is-prop is-metric-Premetric-Space - is-prop-is-metric-Premetric-Space = - is-prop-type-Prop is-metric-prop-Premetric-Space + 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 (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 : + {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) +Metric-Structure l2 A = + type-subtype (is-metric-prop-Rational-Neighborhood-Relation A {l2}) ``` ### The type of metric spaces @@ -111,184 +129,260 @@ module _ ```agda Metric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) Metric-Space l1 l2 = - type-subtype (is-metric-prop-Premetric-Space {l1} {l2}) + Σ (UU l1) (Metric-Structure l2) + +make-Metric-Space : + { 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 + (A , B , refl-B , symmetric-B , triangular-B , saturated-B)) → + Metric-Space l1 l2 +make-Metric-Space + 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 l1 l2) where - premetric-Metric-Space : Premetric-Space l1 l2 - premetric-Metric-Space = pr1 M - type-Metric-Space : UU l1 type-Metric-Space = - type-Premetric-Space premetric-Metric-Space - - structure-Metric-Space : Premetric l2 type-Metric-Space - structure-Metric-Space = - structure-Premetric-Space premetric-Metric-Space + pr1 M - is-metric-structure-Metric-Space : - is-metric-Premetric structure-Metric-Space - is-metric-structure-Metric-Space = pr2 M - - is-pseudometric-structure-Metric-Space : - is-pseudometric-Premetric structure-Metric-Space - is-pseudometric-structure-Metric-Space = - is-pseudometric-is-metric-Premetric - structure-Metric-Space - is-metric-structure-Metric-Space + structure-Metric-Space : Metric-Structure l2 type-Metric-Space + structure-Metric-Space = pr2 M pseudometric-Metric-Space : Pseudometric-Space l1 l2 pseudometric-Metric-Space = - premetric-Metric-Space , is-pseudometric-structure-Metric-Space + ( type-Metric-Space) , + ( pr1 structure-Metric-Space) , + ( pr1 (pr2 structure-Metric-Space)) + + is-extensional-pseudometric-Metric-Space : + is-extensional-Pseudometric-Space pseudometric-Metric-Space + is-extensional-pseudometric-Metric-Space = + pr2 (pr2 structure-Metric-Space) + + pseudometric-structure-Metric-Space : + Pseudometric-Structure l2 type-Metric-Space + pseudometric-structure-Metric-Space = + structure-Pseudometric-Space pseudometric-Metric-Space + + neighborhood-prop-Metric-Space : + ℚ⁺ → Relation-Prop l2 type-Metric-Space + neighborhood-prop-Metric-Space = + neighborhood-prop-Pseudometric-Space pseudometric-Metric-Space neighborhood-Metric-Space : ℚ⁺ → Relation l2 type-Metric-Space neighborhood-Metric-Space = - neighborhood-Premetric-Space premetric-Metric-Space + neighborhood-Pseudometric-Space pseudometric-Metric-Space + + is-prop-neighborhood-Metric-Space : + (d : ℚ⁺) (x y : type-Metric-Space) → + is-prop (neighborhood-Metric-Space d x y) + is-prop-neighborhood-Metric-Space = + is-prop-neighborhood-Pseudometric-Space pseudometric-Metric-Space is-upper-bound-dist-prop-Metric-Space : (x y : type-Metric-Space) → ℚ⁺ → Prop l2 is-upper-bound-dist-prop-Metric-Space x y d = - structure-Metric-Space d x y + neighborhood-prop-Metric-Space d x y is-upper-bound-dist-Metric-Space : (x y : type-Metric-Space) → ℚ⁺ → UU l2 - is-upper-bound-dist-Metric-Space = - is-upper-bound-dist-Premetric-Space premetric-Metric-Space - - is-reflexive-structure-Metric-Space : - is-reflexive-Premetric structure-Metric-Space - is-reflexive-structure-Metric-Space = - is-reflexive-is-metric-Premetric - structure-Metric-Space - is-metric-structure-Metric-Space - - refl-structure-Metric-Space : - is-reflexive-Premetric structure-Metric-Space - refl-structure-Metric-Space = - is-reflexive-is-metric-Premetric - structure-Metric-Space - is-metric-structure-Metric-Space - - is-symmetric-structure-Metric-Space : - is-symmetric-Premetric structure-Metric-Space - is-symmetric-structure-Metric-Space = - is-symmetric-is-metric-Premetric - structure-Metric-Space - is-metric-structure-Metric-Space - - is-local-structure-Metric-Space : - is-local-Premetric structure-Metric-Space - is-local-structure-Metric-Space = - is-local-is-metric-Premetric - structure-Metric-Space - is-metric-structure-Metric-Space - - is-triangular-structure-Metric-Space : - is-triangular-Premetric structure-Metric-Space - is-triangular-structure-Metric-Space = - is-triangular-is-metric-Premetric - structure-Metric-Space - is-metric-structure-Metric-Space - - is-extensional-structure-Metric-Space : - is-extensional-Premetric structure-Metric-Space - is-extensional-structure-Metric-Space = - is-reflexive-structure-Metric-Space , - is-local-structure-Metric-Space - - is-tight-structure-Metric-Space : - is-tight-Premetric structure-Metric-Space - is-tight-structure-Metric-Space = - is-tight-is-extensional-Premetric - structure-Metric-Space - is-extensional-structure-Metric-Space - - is-monotonic-structure-Metric-Space : - is-monotonic-Premetric structure-Metric-Space - is-monotonic-structure-Metric-Space = - is-monotonic-is-reflexive-triangular-Premetric - structure-Metric-Space - is-reflexive-structure-Metric-Space - is-triangular-structure-Metric-Space - - is-set-type-Metric-Space : is-set type-Metric-Space - is-set-type-Metric-Space = - is-set-has-extensional-Premetric - structure-Metric-Space - is-extensional-structure-Metric-Space - - set-Metric-Space : Set l1 - set-Metric-Space = (type-Metric-Space , is-set-type-Metric-Space) + is-upper-bound-dist-Metric-Space x y d = + neighborhood-Metric-Space d x y + + is-prop-is-upper-bound-dist-Metric-Space : + (x y : type-Metric-Space) (d : ℚ⁺) → + is-prop (is-upper-bound-dist-Metric-Space x y d) + is-prop-is-upper-bound-dist-Metric-Space x y d = + is-prop-neighborhood-Metric-Space d x y + + is-pseudometric-neighborhood-Metric-Space : + is-pseudometric-Rational-Neighborhood-Relation + type-Metric-Space + neighborhood-prop-Metric-Space + is-pseudometric-neighborhood-Metric-Space = + is-pseudometric-neighborhood-Pseudometric-Space + pseudometric-Metric-Space + + refl-neighborhood-Metric-Space : + (d : ℚ⁺) (x : type-Metric-Space) → + neighborhood-Metric-Space d x x + refl-neighborhood-Metric-Space = + refl-neighborhood-Pseudometric-Space pseudometric-Metric-Space + + symmetric-neighborhood-Metric-Space : + (d : ℚ⁺) (x y : type-Metric-Space) → + neighborhood-Metric-Space d x y → + neighborhood-Metric-Space d y x + symmetric-neighborhood-Metric-Space = + symmetric-neighborhood-Pseudometric-Space pseudometric-Metric-Space + + inv-neighborhood-Metric-Space : + {d : ℚ⁺} {x y : type-Metric-Space} → + neighborhood-Metric-Space d x y → + neighborhood-Metric-Space d y x + inv-neighborhood-Metric-Space = + inv-neighborhood-Pseudometric-Space pseudometric-Metric-Space + + triangular-neighborhood-Metric-Space : + (x y z : type-Metric-Space) (d₁ d₂ : ℚ⁺) → + neighborhood-Metric-Space d₂ y z → + neighborhood-Metric-Space d₁ x y → + neighborhood-Metric-Space (d₁ +ℚ⁺ d₂) x z + triangular-neighborhood-Metric-Space = + triangular-neighborhood-Pseudometric-Space pseudometric-Metric-Space + + monotonic-neighborhood-Metric-Space : + (x y : type-Metric-Space) (d₁ d₂ : ℚ⁺) → + le-ℚ⁺ d₁ d₂ → + neighborhood-Metric-Space d₁ x y → + neighborhood-Metric-Space d₂ x y + monotonic-neighborhood-Metric-Space = + monotonic-neighborhood-Pseudometric-Space pseudometric-Metric-Space + + saturated-neighborhood-Metric-Space : + (ε : ℚ⁺) (x y : type-Metric-Space) → + ((δ : ℚ⁺) → neighborhood-Metric-Space (ε +ℚ⁺ δ) x y) → + neighborhood-Metric-Space ε x y + saturated-neighborhood-Metric-Space = + saturated-neighborhood-Pseudometric-Space pseudometric-Metric-Space +``` - is-indistinguishable-prop-Metric-Space : Relation-Prop l2 type-Metric-Space - is-indistinguishable-prop-Metric-Space = - is-indistinguishable-prop-Premetric-Space premetric-Metric-Space +### Similarity of elements in a metric space - is-indistinguishable-Metric-Space : Relation l2 type-Metric-Space - is-indistinguishable-Metric-Space = - is-indistinguishable-Premetric-Space premetric-Metric-Space +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where - is-prop-is-indistinguishable-Metric-Space : - (x y : type-Metric-Space) → - is-prop (is-indistinguishable-Metric-Space x y) - is-prop-is-indistinguishable-Metric-Space = - is-prop-is-indistinguishable-Premetric-Space premetric-Metric-Space + sim-prop-Metric-Space : Relation-Prop l2 (type-Metric-Space A) + sim-prop-Metric-Space = + sim-prop-Pseudometric-Space (pseudometric-Metric-Space A) + + sim-Metric-Space : Relation l2 (type-Metric-Space A) + sim-Metric-Space = + sim-Pseudometric-Space (pseudometric-Metric-Space A) + + is-prop-sim-Metric-Space : + (x y : type-Metric-Space A) → + is-prop (sim-Metric-Space x y) + is-prop-sim-Metric-Space = + is-prop-sim-Pseudometric-Space (pseudometric-Metric-Space A) + + refl-sim-Metric-Space : + (x : type-Metric-Space A) → + sim-Metric-Space x x + refl-sim-Metric-Space = + refl-sim-Pseudometric-Space (pseudometric-Metric-Space A) + + sim-eq-Metric-Space : + (x y : type-Metric-Space A) → + x = y → + sim-Metric-Space x y + sim-eq-Metric-Space = + sim-eq-Pseudometric-Space (pseudometric-Metric-Space A) + + symmetric-sim-Metric-Space : + (x y : type-Metric-Space A) → + sim-Metric-Space x y → + sim-Metric-Space y x + symmetric-sim-Metric-Space = + symmetric-sim-Pseudometric-Space (pseudometric-Metric-Space A) + + inv-sim-Metric-Space : + {x y : type-Metric-Space A} → + sim-Metric-Space x y → + sim-Metric-Space y x + inv-sim-Metric-Space {x} {y} = + inv-sim-Pseudometric-Space (pseudometric-Metric-Space A) + + transitive-sim-Metric-Space : + (x y z : type-Metric-Space A) → + sim-Metric-Space y z → + sim-Metric-Space x y → + sim-Metric-Space x z + transitive-sim-Metric-Space = + transitive-sim-Pseudometric-Space (pseudometric-Metric-Space A) + + equivalence-sim-Metric-Space : + equivalence-relation l2 (type-Metric-Space A) + equivalence-sim-Metric-Space = + equivalence-sim-Pseudometric-Space (pseudometric-Metric-Space A) ``` ## Properties -### Indistiguishability in a metric space is equivalent to equality +### The carrier type of a metric space is a set ```agda module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - (x y : type-Metric-Space M) + {l1 l2 : Level} (A : Metric-Space l1 l2) where - equiv-indistinguishable-eq-Metric-Space : - (x = y) ≃ is-indistinguishable-Metric-Space M x y - equiv-indistinguishable-eq-Metric-Space = - equiv-eq-is-indistinguishable-is-extensional-Premetric - ( structure-Metric-Space M) - ( is-extensional-structure-Metric-Space M) - - indistinguishable-eq-Metric-Space : - x = y → is-indistinguishable-Metric-Space M x y - indistinguishable-eq-Metric-Space = - map-equiv equiv-indistinguishable-eq-Metric-Space - - eq-indistinguishable-Metric-Space : - is-indistinguishable-Metric-Space M x y → x = y - eq-indistinguishable-Metric-Space = - map-inv-equiv equiv-indistinguishable-eq-Metric-Space -``` + is-set-type-Metric-Space : is-set (type-Metric-Space A) + is-set-type-Metric-Space = + is-set-type-is-extensional-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( is-extensional-pseudometric-Metric-Space A) -### The type of metric spaces is equivalent to the type of extensional pseudometric spaces + set-Metric-Space : Set l1 + set-Metric-Space = + (type-Metric-Space A , is-set-type-Metric-Space) +``` -#### The subtype of extensional pseudometric spaces +### Similarity of elements in a metric space is equivalent to equality ```agda module _ - (l1 l2 : Level) + {l1 l2 : Level} (A : Metric-Space l1 l2) where - is-extensional-prop-Pseudometric-Space : - subtype (l1 ⊔ l2) (Pseudometric-Space l1 l2) - is-extensional-prop-Pseudometric-Space = - is-local-prop-Premetric ∘ structure-Pseudometric-Space - - is-extensional-Pseudometric-Space : - Pseudometric-Space l1 l2 → UU (l1 ⊔ l2) - is-extensional-Pseudometric-Space = - type-Prop ∘ is-extensional-prop-Pseudometric-Space - - is-prop-is-extensional-Pseudometric-Space : - (M : Pseudometric-Space l1 l2) → - is-prop (is-extensional-Pseudometric-Space M) - is-prop-is-extensional-Pseudometric-Space = - is-prop-type-Prop ∘ is-extensional-prop-Pseudometric-Space + equiv-sim-eq-Metric-Space : + (x y : type-Metric-Space A) → + (x = y) ≃ sim-Metric-Space A x y + equiv-sim-eq-Metric-Space = + equiv-sim-eq-is-extensional-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( is-extensional-pseudometric-Metric-Space A) + + eq-sim-Metric-Space : + (x y : type-Metric-Space A) → + sim-Metric-Space A x y → + x = y + eq-sim-Metric-Space x y = + map-inv-equiv (equiv-sim-eq-Metric-Space 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 l2 A) → + (Q : Metric-Structure l2 B) → + (e : A = B) → + (tr (Metric-Structure 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 diff --git a/src/metric-spaces/metric-structures.lagda.md b/src/metric-spaces/metric-structures.lagda.md deleted file mode 100644 index 0839f2efae..0000000000 --- a/src/metric-spaces/metric-structures.lagda.md +++ /dev/null @@ -1,145 +0,0 @@ -# Metric structures - -```agda -module metric-spaces.metric-structures where -``` - -
Imports - -```agda -open import foundation.dependent-pair-types -open import foundation.function-types -open import foundation.logical-equivalences -open import foundation.propositions -open import foundation.universe-levels - -open import metric-spaces.closed-premetric-structures -open import metric-spaces.extensional-premetric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.ordering-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -A [premetric structure](metric-spaces.metric-structures.md) is a -{{#concept "metric" Disambiguation="structure on a type" Agda=is-metric-Premetric}} -if it is an [extensional](metric-spaces.extensional-premetric-structures.md) -[pseudometric](metric-spaces.pseudometric-spaces.md). I.e., if the neighborhood -relation is [reflexive](metric-spaces.reflexive-premetric-structures.md), -[symmetric](metric-spaces.symmetric-premetric-structures.md), -[triangular](metric-spaces.triangular-premetric-structures.md), and -[local](metric-spaces.extensional-premetric-structures.md). - -## Definitions - -### The property of being a metric premetric structure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-metric-prop-Premetric : Prop (l1 ⊔ l2) - is-metric-prop-Premetric = - product-Prop - ( is-pseudometric-prop-Premetric B) - ( is-local-prop-Premetric B) - - is-metric-Premetric : UU (l1 ⊔ l2) - is-metric-Premetric = type-Prop is-metric-prop-Premetric - - is-prop-is-metric-Premetric : is-prop is-metric-Premetric - is-prop-is-metric-Premetric = - is-prop-type-Prop is-metric-prop-Premetric -``` - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-metric-Premetric B) - where - - is-pseudometric-is-metric-Premetric : is-pseudometric-Premetric B - is-pseudometric-is-metric-Premetric = pr1 M - - is-reflexive-is-metric-Premetric : is-reflexive-Premetric B - is-reflexive-is-metric-Premetric = - is-reflexive-is-pseudometric-Premetric - B - is-pseudometric-is-metric-Premetric - - is-symmetric-is-metric-Premetric : is-symmetric-Premetric B - is-symmetric-is-metric-Premetric = - is-symmetric-is-pseudometric-Premetric - B - is-pseudometric-is-metric-Premetric - - is-triangular-is-metric-Premetric : is-triangular-Premetric B - is-triangular-is-metric-Premetric = - is-triangular-is-pseudometric-Premetric - B - is-pseudometric-is-metric-Premetric - - is-local-is-metric-Premetric : is-local-Premetric B - is-local-is-metric-Premetric = pr2 M - - is-monotonic-is-metric-Premetric : is-monotonic-Premetric B - is-monotonic-is-metric-Premetric = - is-monotonic-is-reflexive-triangular-Premetric - B - is-reflexive-is-metric-Premetric - is-triangular-is-metric-Premetric -``` - -## Properties - -### The closure of a metric structure is metric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-metric-Premetric B) - where - - preserves-is-metric-closure-Premetric : - is-metric-Premetric (closure-Premetric B) - preserves-is-metric-closure-Premetric = - ( preserves-is-pseudometric-closure-Premetric - ( B) - ( is-pseudometric-is-metric-Premetric B M)) , - ( is-local-closure-Premetric - ( B) - ( is-local-is-metric-Premetric B M)) -``` - -### The closure of a metric structure is the finest closed metric coarser than it - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-metric-Premetric B) - where - - leq-closure-is-metric-Premetric : leq-Premetric B (closure-Premetric B) - leq-closure-is-metric-Premetric = - leq-closure-monotonic-Premetric - ( B) - ( is-monotonic-is-metric-Premetric B M) - - leq-closure-closed-is-metric-Premetric : - (B' : Premetric l2 A) → - is-metric-Premetric B' → - is-closed-Premetric B' → - leq-Premetric B B' → - leq-Premetric (closure-Premetric B) B' - leq-closure-closed-is-metric-Premetric B' = - leq-closure-leq-closed-monotonic-Premetric B B' ∘ - is-monotonic-is-metric-Premetric B' -``` diff --git a/src/metric-spaces/monotonic-premetric-structures.lagda.md b/src/metric-spaces/monotonic-premetric-structures.lagda.md deleted file mode 100644 index d495f3087d..0000000000 --- a/src/metric-spaces/monotonic-premetric-structures.lagda.md +++ /dev/null @@ -1,60 +0,0 @@ -# Monotonic premetric structures on types - -```agda -module metric-spaces.monotonic-premetric-structures where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.propositions -open import foundation.universe-levels - -open import metric-spaces.premetric-structures -``` - -
- -## Idea - -A [premetric](metric-spaces.premetric-structures.md) is -{{#concept "monotonic" Disambiguation="premetric" Agda=is-monotonic-Premetric}} -if any `d₁`-neighborhoods are `d₂`-neighborhoods for `d₁ < d₂`, i.e., if the -subsets of upper bounds on the distance between any two points are upper stable. - -## Definitions - -### The property of being a monotonic premetric structure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-monotonic-prop-Premetric : Prop (l1 ⊔ l2) - is-monotonic-prop-Premetric = - Π-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-Premetric : UU (l1 ⊔ l2) - is-monotonic-Premetric = type-Prop is-monotonic-prop-Premetric - - is-prop-is-monotonic-Premetric : is-prop is-monotonic-Premetric - is-prop-is-monotonic-Premetric = is-prop-type-Prop is-monotonic-prop-Premetric -``` diff --git a/src/metric-spaces/ordering-premetric-structures.lagda.md b/src/metric-spaces/ordering-premetric-structures.lagda.md deleted file mode 100644 index 9d31996995..0000000000 --- a/src/metric-spaces/ordering-premetric-structures.lagda.md +++ /dev/null @@ -1,122 +0,0 @@ -# The poset of premetric structures on a type - -```agda -module metric-spaces.ordering-premetric-structures 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.premetric-structures - -open import order-theory.posets -open import order-theory.preorders -``` - -
- -## Idea - -A [premetric structure](metric-spaces.premetric-structures.md) `U` on a type `A` -is {{#concept "finer" Disambiguation="premetric on a type" Agda=leq-Premetric}} -than another premetric `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 premetric structures on `A`. - -## Definitions - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (U V : Premetric l2 A) - where - - leq-prop-Premetric : Prop (l1 ⊔ l2) - leq-prop-Premetric = - Π-Prop - ( ℚ⁺) - ( λ d → - Π-Prop - ( A) - ( λ x → - Π-Prop - ( A) - ( λ y → hom-Prop (U d x y) (V d x y)))) - - leq-Premetric : UU (l1 ⊔ l2) - leq-Premetric = type-Prop leq-prop-Premetric - - is-prop-leq-Premetric : is-prop leq-Premetric - is-prop-leq-Premetric = is-prop-type-Prop leq-prop-Premetric -``` - -## Properties - -### The ordering on premetric structures is reflexive - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (U : Premetric l2 A) - where - - refl-leq-Premetric : leq-Premetric U U - refl-leq-Premetric d x y H = H - - leq-eq-Premetric : (V : Premetric l2 A) → (U = V) → leq-Premetric U V - leq-eq-Premetric .U refl = refl-leq-Premetric -``` - -### The ordering on premetric structures is transitive - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (U V W : Premetric l2 A) - where - - transitive-leq-Premetric : - leq-Premetric V W → leq-Premetric U V → leq-Premetric U W - transitive-leq-Premetric H K d x y = H d x y ∘ K d x y -``` - -### The ordering on premetric structures is antisymmetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (U V : Premetric l2 A) - where - - antisymmetric-leq-Premetric : - leq-Premetric U V → leq-Premetric V U → U = V - antisymmetric-leq-Premetric I J = - eq-Eq-Premetric - ( U) - ( V) - ( λ d x y → (I d x y , J d x y)) -``` - -### The poset of premetric structures on a type - -```agda -module _ - {l1 l2 : Level} (A : UU l1) - where - - preorder-Premetric : Preorder (l1 ⊔ lsuc l2) (l1 ⊔ l2) - pr1 preorder-Premetric = Premetric l2 A - pr2 preorder-Premetric = - leq-prop-Premetric , refl-leq-Premetric , transitive-leq-Premetric - - poset-Premetric : Poset (l1 ⊔ lsuc l2) (l1 ⊔ l2) - poset-Premetric = preorder-Premetric , antisymmetric-leq-Premetric -``` diff --git a/src/metric-spaces/precategory-of-metric-spaces-and-functions.lagda.md b/src/metric-spaces/precategory-of-metric-spaces-and-functions.lagda.md index 0ad621c3a1..fa7fa94ed3 100644 --- a/src/metric-spaces/precategory-of-metric-spaces-and-functions.lagda.md +++ b/src/metric-spaces/precategory-of-metric-spaces-and-functions.lagda.md @@ -38,7 +38,7 @@ module _ precategory-function-Metric-Space = make-Precategory ( Metric-Space l1 l2) - ( set-map-type-Metric-Space) + ( set-function-Metric-Space) ( λ {A B C} g f → g ∘ f) ( λ A → id) ( λ {A B C D} h g f → refl) diff --git a/src/metric-spaces/precategory-of-metric-spaces-and-isometries.lagda.md b/src/metric-spaces/precategory-of-metric-spaces-and-isometries.lagda.md index 9f8d292f56..a57d55d1a2 100644 --- a/src/metric-spaces/precategory-of-metric-spaces-and-isometries.lagda.md +++ b/src/metric-spaces/precategory-of-metric-spaces-and-isometries.lagda.md @@ -112,7 +112,7 @@ module _ equiv-iso-isometric-equiv-Metric-Space' = equiv-tot (λ f → commutative-product) ∘e associative-Σ - ( map-type-Metric-Space A B) + ( type-function-Metric-Space A B) ( is-isometry-Metric-Space A B) ( is-equiv ∘ map-isometry-Metric-Space A B) ∘e equiv-tot diff --git a/src/metric-spaces/precategory-of-metric-spaces-and-short-functions.lagda.md b/src/metric-spaces/precategory-of-metric-spaces-and-short-functions.lagda.md index 1133d2e084..af0a7e0b14 100644 --- a/src/metric-spaces/precategory-of-metric-spaces-and-short-functions.lagda.md +++ b/src/metric-spaces/precategory-of-metric-spaces-and-short-functions.lagda.md @@ -12,6 +12,7 @@ open import category-theory.precategories open import foundation.action-on-identifications-functions open import foundation.binary-transport +open import foundation.cartesian-product-types open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equivalences @@ -27,7 +28,6 @@ open import foundation.universe-levels open import metric-spaces.equality-of-metric-spaces open import metric-spaces.functions-metric-spaces -open import metric-spaces.isometric-equivalences-premetric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.precategory-of-metric-spaces-and-isometries @@ -135,10 +135,8 @@ module _ where is-iso-is-isometric-equiv-short-function-Metric-Space : - is-isometric-equiv-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( map-short-function-Metric-Space A B f) → + ( is-equiv (map-short-function-Metric-Space A B f) × + is-isometry-Metric-Space A B (map-short-function-Metric-Space A B f)) → is-iso-Precategory precategory-short-function-Metric-Space {A} {B} f is-iso-is-isometric-equiv-short-function-Metric-Space (E , I) = ( short-inverse) , @@ -178,13 +176,13 @@ module _ ( E)) ``` -### A function between metric spaces is a short isomorphism if and only if it an isometric equivalence between their carrier premetric spaces +### A function between metric spaces is a short isomorphism if and only if it an isometric equivalence between them ```agda module _ {l1 l2 : Level} (A B : Metric-Space l1 l2) - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where equiv-is-isometric-equiv-is-iso-short-function-Metric-Space : @@ -194,10 +192,7 @@ module _ { A} { B} ( f , s)) ≃ - is-isometric-equiv-Premetric-Space - (premetric-Metric-Space A) - (premetric-Metric-Space B) - (f) + (is-equiv f) × (is-isometry-Metric-Space A B f) equiv-is-isometric-equiv-is-iso-short-function-Metric-Space = equiv-iff ( Σ-Prop @@ -207,10 +202,9 @@ module _ { A} { B} ( f , s))) - ( is-isometric-equiv-prop-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f)) + ( product-Prop + ( is-equiv-Prop f) + ( is-isometry-prop-Metric-Space A B f)) ( λ (is-short-f , is-iso-f) → is-equiv-is-iso-short-function-Metric-Space ( A) @@ -245,7 +239,7 @@ module _ equiv-tot ( equiv-is-isometric-equiv-is-iso-short-function-Metric-Space A B) ∘e associative-Σ - ( map-type-Metric-Space A B) + ( type-function-Metric-Space A B) ( is-short-function-Metric-Space A B) ( is-iso-Precategory precategory-short-function-Metric-Space {A} {B}) ``` diff --git a/src/metric-spaces/premetric-spaces.lagda.md b/src/metric-spaces/premetric-spaces.lagda.md deleted file mode 100644 index b812dedb54..0000000000 --- a/src/metric-spaces/premetric-spaces.lagda.md +++ /dev/null @@ -1,120 +0,0 @@ -# Premetric spaces - -```agda -module metric-spaces.premetric-spaces 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.propositions -open import foundation.universe-levels - -open import metric-spaces.discrete-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -A {{#concept "premetric space" Agda=Premetric-Space}} is a type -[equipped](foundation.structure.md) with a -[premetric](metric-spaces.premetric-structures.md). - -## Definitions - -### The type of premetric spaces - -```agda -Premetric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) -Premetric-Space l1 l2 = Σ (UU l1) (Premetric l2) - -module _ - {l1 l2 : Level} (M : Premetric-Space l1 l2) - where - - type-Premetric-Space : UU l1 - type-Premetric-Space = pr1 M - - structure-Premetric-Space : Premetric l2 type-Premetric-Space - structure-Premetric-Space = pr2 M - - neighborhood-Premetric-Space : - ℚ⁺ → type-Premetric-Space → type-Premetric-Space → UU l2 - neighborhood-Premetric-Space = - neighborhood-Premetric structure-Premetric-Space - - is-prop-neighborhood-Premetric-Space : - (d : ℚ⁺) (x y : type-Premetric-Space) → - is-prop (neighborhood-Premetric-Space d x y) - is-prop-neighborhood-Premetric-Space = - is-prop-neighborhood-Premetric structure-Premetric-Space - - is-upper-bound-dist-Premetric-Space : - (x y : type-Premetric-Space) (d : ℚ⁺) → UU l2 - is-upper-bound-dist-Premetric-Space = - is-upper-bound-dist-Premetric structure-Premetric-Space - - is-prop-is-upper-bound-dist-Premetric-Space : - (x y : type-Premetric-Space) (d : ℚ⁺) → - is-prop (is-upper-bound-dist-Premetric-Space x y d) - is-prop-is-upper-bound-dist-Premetric-Space = - is-prop-is-upper-bound-dist-Premetric structure-Premetric-Space - - is-indistinguishable-prop-Premetric-Space : - (x y : type-Premetric-Space) → Prop l2 - is-indistinguishable-prop-Premetric-Space = - is-indistinguishable-prop-Premetric structure-Premetric-Space - - is-indistinguishable-Premetric-Space : - (x y : type-Premetric-Space) → UU l2 - is-indistinguishable-Premetric-Space = - is-indistinguishable-Premetric structure-Premetric-Space - - is-prop-is-indistinguishable-Premetric-Space : - (x y : type-Premetric-Space) → - is-prop (is-indistinguishable-Premetric-Space x y) - is-prop-is-indistinguishable-Premetric-Space = - is-prop-is-indistinguishable-Premetric structure-Premetric-Space -``` - -### The type of functions between premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - where - - map-type-Premetric-Space : UU (l1 ⊔ l1') - map-type-Premetric-Space = - type-Premetric-Space A → type-Premetric-Space B -``` - -### The identity map on a premetric space - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - where - - id-Premetric-Space : map-type-Premetric-Space A A - id-Premetric-Space = id -``` - -### Any type is a discrete premetric space - -```agda -module _ - {l : Level} (A : UU l) - where - - discrete-Premetric-Space : Premetric-Space l l - discrete-Premetric-Space = A , premetric-discrete-Premetric A -``` diff --git a/src/metric-spaces/premetric-structures.lagda.md b/src/metric-spaces/premetric-structures.lagda.md deleted file mode 100644 index 1efac73fa8..0000000000 --- a/src/metric-spaces/premetric-structures.lagda.md +++ /dev/null @@ -1,259 +0,0 @@ -# Premetric structures on types - -```agda -module metric-spaces.premetric-structures 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.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 -``` - -
- -## Idea - -A {{#concept "premetric" Disambiguation="structure on a type" Agda=Premetric}} -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). - -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 in with respect to a premetric structure"}} -on the distance between `x` and `y` with respect to the premetric. - -## Definitions - -### Premetric structures - -```agda -module _ - {l1 : Level} (l2 : Level) (A : UU l1) - where - - Premetric : UU (l1 ⊔ lsuc l2) - Premetric = ℚ⁺ → Relation-Prop l2 A -``` - -### Neighborhood relation in a premetric - -Two points `x` and `y` in a type `A` are in a -{{#concept "`d`-neighborhood" Disambiguation="in a premetric" Agda=neighborhood-Premetric}} -in a premetric `B` for some positive rational number `d` if `B d x y` holds. - -In this case, `d` is called an -{{#concept "upper bound" Disambiguation="on the distance in a premetric" Agda=is-upper-bound-dist-Premetric}} -on the distance between `x` and `y` in the premetric `B`. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - neighborhood-Premetric : ℚ⁺ → A → A → UU l2 - neighborhood-Premetric d = type-Relation-Prop (B d) - - is-prop-neighborhood-Premetric : - (d : ℚ⁺) (x y : A) → is-prop (neighborhood-Premetric d x y) - is-prop-neighborhood-Premetric d = is-prop-type-Relation-Prop (B d) - - is-upper-bound-dist-Premetric : A → A → ℚ⁺ → UU l2 - is-upper-bound-dist-Premetric x y d = neighborhood-Premetric d x y - - is-prop-is-upper-bound-dist-Premetric : - (x y : A) (d : ℚ⁺) → is-prop (is-upper-bound-dist-Premetric x y d) - is-prop-is-upper-bound-dist-Premetric x y d = - is-prop-neighborhood-Premetric d x y -``` - -### Indistinguishable elements with respect to a premetric - -Two elements `x` and `y` are -{{#concept "indistinguishable" Disambiguation="with respect to a premetric" Agda=is-indistinguishable-Premetric}} -in a premetric if `x` and `y` are `d`-neighbors for any positive rational `d`, -i.e., if their distance is bounded by any positive rational. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (x y : A) - where - - is-indistinguishable-prop-Premetric : Prop l2 - is-indistinguishable-prop-Premetric = - Π-Prop ℚ⁺ (λ (d : ℚ⁺) → B d x y) - - is-indistinguishable-Premetric : UU l2 - is-indistinguishable-Premetric = - type-Prop is-indistinguishable-prop-Premetric - - is-prop-is-indistinguishable-Premetric : - is-prop is-indistinguishable-Premetric - is-prop-is-indistinguishable-Premetric = - is-prop-type-Prop is-indistinguishable-prop-Premetric -``` - -### Separation relation with respect to a premetric - -Two points `x` and `y` are -{{#concept "separated" Disambiguation="with respect to a premetric" Agda=is-separated-pt-Premetric}} -in a premetric if there exists some positive rational `d` such that `x` and `y` -are not `d`-neighbors. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (x y : A) - where - - is-separated-pt-prop-Premetric : Prop l2 - is-separated-pt-prop-Premetric = - ∃ ℚ⁺ (λ d → neg-Prop (B d x y)) - - is-separated-pt-Premetric : UU l2 - is-separated-pt-Premetric = - type-Prop is-separated-pt-prop-Premetric - - is-prop-is-separated-pt-Premetric : - is-prop is-separated-pt-Premetric - is-prop-is-separated-pt-Premetric = - is-prop-type-Prop is-separated-pt-prop-Premetric -``` - -## Properties - -### Points separated by a premetric structure are not indistinguishable - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (x y : A) - where - - is-not-indistinguishable-is-separated-pt-Premetric : - is-separated-pt-Premetric B x y → ¬ (is-indistinguishable-Premetric B x y) - is-not-indistinguishable-is-separated-pt-Premetric S I = - elim-exists - ( empty-Prop) - ( λ d H → H (I d)) - ( S) -``` - -### Equality of premetric structures - -Two premetric structures on a type are equal when they define logically -equivalent neighborhoods, or equivalently, when the distances between any two -points have the same upper bounds. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (N : Premetric l2 A) - where - - Eq-prop-Premetric : Premetric l2 A → Prop (l1 ⊔ l2) - Eq-prop-Premetric N' = - Π-Prop - ( ℚ⁺) - ( λ d → - Π-Prop - ( A) - ( λ x → - Π-Prop - ( A) - ( λ y → N d x y ⇔ N' d x y))) - - Eq-Premetric : Premetric l2 A → UU (l1 ⊔ l2) - Eq-Premetric N' = type-Prop (Eq-prop-Premetric N') - - is-prop-Eq-Premetric : (N' : Premetric l2 A) → is-prop (Eq-Premetric N') - is-prop-Eq-Premetric N' = is-prop-type-Prop (Eq-prop-Premetric N') - - refl-Eq-Premetric : Eq-Premetric N - refl-Eq-Premetric d x y = id-iff - - Eq-eq-Premetric : (N' : Premetric l2 A) → (N = N') → Eq-Premetric N' - Eq-eq-Premetric .N refl = refl-Eq-Premetric - - eq-Eq-Premetric : (N' : Premetric l2 A) → Eq-Premetric N' → N = N' - eq-Eq-Premetric 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-Premetric : is-torsorial Eq-Premetric - is-torsorial-Eq-Premetric = - ( N , refl-Eq-Premetric) , - ( λ (N' , e) → - eq-type-subtype - ( Eq-prop-Premetric) - ( eq-Eq-Premetric N' e)) - - is-fiberwise-equiv-Eq-eq-Premetric : - (N' : Premetric l2 A) → is-equiv (Eq-eq-Premetric N') - is-fiberwise-equiv-Eq-eq-Premetric = - fundamental-theorem-id is-torsorial-Eq-Premetric Eq-eq-Premetric - - equiv-Eq-eq-Premetric : - (N' : Premetric l2 A) → (N = N') ≃ (Eq-Premetric N') - equiv-Eq-eq-Premetric N' = - Eq-eq-Premetric N' , is-fiberwise-equiv-Eq-eq-Premetric N' -``` - -### Characterization of the transport of premetric structures along equality of types - -```agda -module _ - {l1 l2 : Level} (A : UU l1) - where - - eq-map-eq-tr-Premetric : - (B : UU l1) (e : A = B) (S : Premetric l2 A) → - Eq-Premetric S (λ d x y → tr (Premetric l2) e S d (map-eq e x) (map-eq e y)) - eq-map-eq-tr-Premetric .A refl S = refl-Eq-Premetric S - - eq-map-inv-eq-tr-Premetric : - (B : UU l1) (e : A = B) (S : Premetric l2 A) → - Eq-Premetric - (tr (Premetric l2) e S) - (λ d x y → S d (map-inv-eq e x) (map-inv-eq e y)) - eq-map-inv-eq-tr-Premetric .A refl S = refl-Eq-Premetric S -``` - -## References - -Our definition of a premetric follows Definition 4.5.2 from -{{#cite Booij20PhD}}. - -{{#bibliography}} - -## External links - -- [Booij premetric spaces](https://ncatlab.org/nlab/show/Booij+premetric+space) - at $n$Lab. diff --git a/src/metric-spaces/pseudometric-spaces-WIP.lagda.md b/src/metric-spaces/pseudometric-spaces-WIP.lagda.md deleted file mode 100644 index ee31c0264b..0000000000 --- a/src/metric-spaces/pseudometric-spaces-WIP.lagda.md +++ /dev/null @@ -1,213 +0,0 @@ -# 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/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index f409a84c59..c931d9f28d 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -10,222 +10,203 @@ module metric-spaces.pseudometric-spaces where 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.equivalence-relations +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.discrete-premetric-structures -open import metric-spaces.extensional-premetric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.premetric-structures -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures +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 WD="pseudometric space" WDID=Q1397059}} -is a [premetric space](metric-spaces.premetric-spaces.md) whose -[premetric](metric-spaces.premetric-structures.md) is a -[pseudometric](metric-spaces.pseudometric-structures.md): a -[reflexive](metric-spaces.reflexive-premetric-structures.md), -[symmetric](metric-spaces.symmetric-premetric-structures.md), and -[triangular](metric-spaces.triangular-premetric-structures.md) premetric. -Indistinguishability in a pseudometric space is an -[equivalence relation](foundation.equivalence-relations.md). +A {{#concept "pseudometric space" Agda=Pseudometric-Space}} 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}} +on the distance between `x` and `y` in the pseudometric space. ## Definitions -### The property of being a pseudometric premetric space +### The property of being a pseudometric structure ```agda module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) + {l1 : Level} (A : UU l1) {l2 : Level} + (B : Rational-Neighborhood-Relation l2 A) where - is-pseudometric-prop-Premetric-Space : Prop (l1 ⊔ l2) - is-pseudometric-prop-Premetric-Space = - is-pseudometric-prop-Premetric (structure-Premetric-Space A) - - is-pseudometric-Premetric-Space : UU (l1 ⊔ l2) - is-pseudometric-Premetric-Space = - type-Prop is-pseudometric-prop-Premetric-Space - - is-prop-is-pseudometric-Premetric-Space : - is-prop is-pseudometric-Premetric-Space - is-prop-is-pseudometric-Premetric-Space = - is-prop-type-Prop is-pseudometric-prop-Premetric-Space + 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}) ``` -### The type of pseudometric spaces +### Pseudometric spaces ```agda Pseudometric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) -Pseudometric-Space l1 l2 = - type-subtype (is-pseudometric-prop-Premetric-Space {l1} {l2}) +Pseudometric-Space l1 l2 = Σ (UU l1) (Pseudometric-Structure l2) module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) where - premetric-Pseudometric-Space : Premetric-Space l1 l2 - premetric-Pseudometric-Space = pr1 M - type-Pseudometric-Space : UU l1 - type-Pseudometric-Space = - type-Premetric-Space premetric-Pseudometric-Space + type-Pseudometric-Space = pr1 A + + structure-Pseudometric-Space : + Pseudometric-Structure l2 type-Pseudometric-Space + structure-Pseudometric-Space = pr2 A - structure-Pseudometric-Space : Premetric l2 type-Pseudometric-Space - structure-Pseudometric-Space = - structure-Premetric-Space premetric-Pseudometric-Space + neighborhood-prop-Pseudometric-Space : + ℚ⁺ → Relation-Prop l2 type-Pseudometric-Space + neighborhood-prop-Pseudometric-Space = + pr1 structure-Pseudometric-Space - neighborhood-Pseudometric-Space : ℚ⁺ → Relation l2 type-Pseudometric-Space + neighborhood-Pseudometric-Space : + ℚ⁺ → Relation l2 type-Pseudometric-Space neighborhood-Pseudometric-Space = - neighborhood-Premetric-Space premetric-Pseudometric-Space + neighborhood-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space is-prop-neighborhood-Pseudometric-Space : (d : ℚ⁺) (x y : type-Pseudometric-Space) → is-prop (neighborhood-Pseudometric-Space d x y) is-prop-neighborhood-Pseudometric-Space = - is-prop-neighborhood-Premetric-Space premetric-Pseudometric-Space - - is-upper-bound-dist-Pseudometric-Space : - (x y : type-Pseudometric-Space) (d : ℚ⁺) → UU l2 - is-upper-bound-dist-Pseudometric-Space = - is-upper-bound-dist-Premetric-Space premetric-Pseudometric-Space - - is-pseudometric-structure-Pseudometric-Space : - is-pseudometric-Premetric structure-Pseudometric-Space - is-pseudometric-structure-Pseudometric-Space = pr2 M - - is-reflexive-structure-Pseudometric-Space : - is-reflexive-Premetric structure-Pseudometric-Space - is-reflexive-structure-Pseudometric-Space = - is-reflexive-is-pseudometric-Premetric - ( structure-Pseudometric-Space) - ( is-pseudometric-structure-Pseudometric-Space) - - is-symmetric-structure-Pseudometric-Space : - is-symmetric-Premetric structure-Pseudometric-Space - is-symmetric-structure-Pseudometric-Space = - is-symmetric-is-pseudometric-Premetric - ( structure-Pseudometric-Space) - ( is-pseudometric-structure-Pseudometric-Space) - - is-triangular-structure-Pseudometric-Space : - is-triangular-Premetric structure-Pseudometric-Space - is-triangular-structure-Pseudometric-Space = - is-triangular-is-pseudometric-Premetric - ( structure-Pseudometric-Space) - ( is-pseudometric-structure-Pseudometric-Space) -``` - -### Indistinguishability in a pseudometric space - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - (x y : type-Pseudometric-Space M) - where - - is-indistinguishable-prop-Pseudometric-Space : Prop l2 - is-indistinguishable-prop-Pseudometric-Space = - is-indistinguishable-prop-Premetric (structure-Pseudometric-Space M) x y - - is-indistinguishable-Pseudometric-Space : UU l2 - is-indistinguishable-Pseudometric-Space = - type-Prop is-indistinguishable-prop-Pseudometric-Space - - is-prop-is-indistinguishable-Pseudometric-Space : - is-prop is-indistinguishable-Pseudometric-Space - is-prop-is-indistinguishable-Pseudometric-Space = - is-prop-type-Prop is-indistinguishable-prop-Pseudometric-Space -``` - -### The type of functions between pseudometric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') - where - - map-type-Pseudometric-Space : UU (l1 ⊔ l1') - map-type-Pseudometric-Space = - type-Pseudometric-Space A → type-Pseudometric-Space B -``` + is-prop-neighborhood-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space -## Properties + is-upper-bound-dist-prop-Pseudometric-Space : + (x y : type-Pseudometric-Space) → ℚ⁺ → Prop l2 + is-upper-bound-dist-prop-Pseudometric-Space x y d = + neighborhood-prop-Pseudometric-Space d x y -### Equal elements in a pseudometric space are indistinguishable - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - {x y : type-Pseudometric-Space M} (e : x = y) - where - - indistinguishable-eq-Pseudometric-Space : - is-indistinguishable-Pseudometric-Space M x y - indistinguishable-eq-Pseudometric-Space = - indistinguishable-eq-reflexive-Premetric - ( structure-Pseudometric-Space M) - ( is-reflexive-structure-Pseudometric-Space M) - ( e) -``` - -### Indistiguishability in a pseudometric space is an equivalence relation - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - where - - is-equivalence-relation-is-indistinguishable-Pseudometric-Space : - is-equivalence-relation - (is-indistinguishable-prop-Pseudometric-Space M) - is-equivalence-relation-is-indistinguishable-Pseudometric-Space = - ( is-reflexive-is-indistinguishable-reflexive-Premetric - ( structure-Pseudometric-Space M) - ( is-reflexive-structure-Pseudometric-Space M)) , - ( is-symmetric-is-indistinguishable-is-symmetric-Premetric - ( structure-Pseudometric-Space M) - ( is-symmetric-structure-Pseudometric-Space M)) , - ( is-transitive-is-indistinguishable-triangular-Premetric - ( structure-Pseudometric-Space M) - ( is-triangular-structure-Pseudometric-Space M)) -``` - -### Any type is a discrete pseudometric space - -```agda -module _ - {l : Level} (A : UU l) - where - - discrete-Pseudometric-Space : Pseudometric-Space l l - pr1 discrete-Pseudometric-Space = discrete-Premetric-Space A - pr2 discrete-Pseudometric-Space = is-pseudometric-discrete-Premetric + is-upper-bound-dist-Pseudometric-Space : + (x y : type-Pseudometric-Space) → ℚ⁺ → UU l2 + is-upper-bound-dist-Pseudometric-Space x y d = + neighborhood-Pseudometric-Space d x y + + is-prop-is-upper-bound-dist-Pseudometric-Space : + (x y : type-Pseudometric-Space) (d : ℚ⁺) → + is-prop (is-upper-bound-dist-Pseudometric-Space x y d) + is-prop-is-upper-bound-dist-Pseudometric-Space x y d = + is-prop-neighborhood-Pseudometric-Space d x y + + is-pseudometric-neighborhood-Pseudometric-Space : + is-pseudometric-Rational-Neighborhood-Relation + type-Pseudometric-Space + neighborhood-prop-Pseudometric-Space + is-pseudometric-neighborhood-Pseudometric-Space = + pr2 structure-Pseudometric-Space + + refl-neighborhood-Pseudometric-Space : + (d : ℚ⁺) (x : type-Pseudometric-Space) → + neighborhood-Pseudometric-Space d x x + refl-neighborhood-Pseudometric-Space = + pr1 is-pseudometric-neighborhood-Pseudometric-Space + + symmetric-neighborhood-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space) → + neighborhood-Pseudometric-Space d x y → + neighborhood-Pseudometric-Space d y x + symmetric-neighborhood-Pseudometric-Space = + pr1 (pr2 is-pseudometric-neighborhood-Pseudometric-Space) + + inv-neighborhood-Pseudometric-Space : + {d : ℚ⁺} {x y : type-Pseudometric-Space} → + neighborhood-Pseudometric-Space d x y → + neighborhood-Pseudometric-Space d y x + inv-neighborhood-Pseudometric-Space {d} {x} {y} = + symmetric-neighborhood-Pseudometric-Space d x y + + triangular-neighborhood-Pseudometric-Space : + (x y z : type-Pseudometric-Space) (d₁ d₂ : ℚ⁺) → + neighborhood-Pseudometric-Space d₂ y z → + neighborhood-Pseudometric-Space d₁ x y → + neighborhood-Pseudometric-Space (d₁ +ℚ⁺ d₂) x z + triangular-neighborhood-Pseudometric-Space = + pr1 (pr2 (pr2 is-pseudometric-neighborhood-Pseudometric-Space)) + + saturated-neighborhood-Pseudometric-Space : + (ε : ℚ⁺) (x y : type-Pseudometric-Space) → + ((δ : ℚ⁺) → neighborhood-Pseudometric-Space (ε +ℚ⁺ δ) x y) → + neighborhood-Pseudometric-Space ε x y + saturated-neighborhood-Pseudometric-Space = + pr2 (pr2 (pr2 is-pseudometric-neighborhood-Pseudometric-Space)) + + monotonic-neighborhood-Pseudometric-Space : + (x y : type-Pseudometric-Space) (d₁ d₂ : ℚ⁺) → + le-ℚ⁺ d₁ d₂ → + neighborhood-Pseudometric-Space d₁ x y → + neighborhood-Pseudometric-Space d₂ x y + monotonic-neighborhood-Pseudometric-Space = + is-monotonic-is-reflexive-triangular-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space + refl-neighborhood-Pseudometric-Space + triangular-neighborhood-Pseudometric-Space + + iff-le-neighborhood-Pseudometric-Space : + ( ε : ℚ⁺) (x y : type-Pseudometric-Space) → + ( neighborhood-Pseudometric-Space ε x y) ↔ + ( (δ : ℚ⁺) → le-ℚ⁺ ε δ → neighborhood-Pseudometric-Space δ x y) + iff-le-neighborhood-Pseudometric-Space = + iff-le-neighborhood-saturated-monotonic-Rational-Neighborhood-Relation + neighborhood-prop-Pseudometric-Space + monotonic-neighborhood-Pseudometric-Space + saturated-neighborhood-Pseudometric-Space ``` -## See also - -- Metric spaces are defined in - [`metric-spaces.metric-spaces`](metric-spaces.metric-spaces.md). - ## External links -- [metric space#variations](https://ncatlab.org/nlab/show/metric+space#variations) - at $n$Lab - [Pseudometric spaces](https://en.wikipedia.org/wiki/Pseudometric_space) at Wikipedia diff --git a/src/metric-spaces/pseudometric-structures.lagda.md b/src/metric-spaces/pseudometric-structures.lagda.md deleted file mode 100644 index fb0476457b..0000000000 --- a/src/metric-spaces/pseudometric-structures.lagda.md +++ /dev/null @@ -1,120 +0,0 @@ -# Pseudometric structures on a type - -```agda -module metric-spaces.pseudometric-structures where -``` - -
Imports - -```agda -open import foundation.dependent-pair-types -open import foundation.identity-types -open import foundation.propositions -open import foundation.universe-levels - -open import metric-spaces.closed-premetric-structures -open import metric-spaces.discrete-premetric-structures -open import metric-spaces.extensional-premetric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures -``` - -
- -## Idea - -A [premetric](metric-spaces.premetric-structures.md) is a -{{#concept "pseudometric" Disambiguation="structure on a type" Agda=is-pseudometric-Premetric}} -if it is [reflexive](metric-spaces.reflexive-premetric-structures.md), -[symmetric](metric-spaces.symmetric-premetric-structures.md), and -[triangular](metric-spaces.triangular-premetric-structures.md). - -## Definitions - -### The property of being a pseudometric premetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-pseudometric-prop-Premetric : Prop (l1 ⊔ l2) - is-pseudometric-prop-Premetric = - product-Prop - ( is-reflexive-prop-Premetric B) - ( product-Prop - ( is-symmetric-prop-Premetric B) - ( is-triangular-prop-Premetric B)) - - is-pseudometric-Premetric : UU (l1 ⊔ l2) - is-pseudometric-Premetric = - type-Prop is-pseudometric-prop-Premetric - - is-prop-is-pseudometric-Premetric : - is-prop is-pseudometric-Premetric - is-prop-is-pseudometric-Premetric = - is-prop-type-Prop is-pseudometric-prop-Premetric -``` - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (P : is-pseudometric-Premetric B) - where - - is-reflexive-is-pseudometric-Premetric : is-reflexive-Premetric B - is-reflexive-is-pseudometric-Premetric = pr1 P - - is-symmetric-is-pseudometric-Premetric : is-symmetric-Premetric B - is-symmetric-is-pseudometric-Premetric = pr1 (pr2 P) - - is-triangular-is-pseudometric-Premetric : is-triangular-Premetric B - is-triangular-is-pseudometric-Premetric = pr2 (pr2 P) -``` - -## Properties - -### The discrete premetric on a type is a pseudometric - -```agda -module _ - {l : Level} {A : UU l} - where - - is-pseudometric-discrete-Premetric : - is-pseudometric-Premetric (premetric-discrete-Premetric A) - is-pseudometric-discrete-Premetric = - is-reflexive-premetric-Discrete-Premetric (discrete-Premetric A) , - is-symmetric-discrete-Premetric A , - is-triangular-discrete-Premetric A -``` - -### The closure of a pseudometric structure is pseudometric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (M : is-pseudometric-Premetric B) - where - - preserves-is-pseudometric-closure-Premetric : - is-pseudometric-Premetric (closure-Premetric B) - preserves-is-pseudometric-closure-Premetric = - ( is-reflexive-closure-Premetric - ( B) - ( is-reflexive-is-pseudometric-Premetric B M)) , - ( is-symmetric-closure-Premetric - ( B) - ( is-symmetric-is-pseudometric-Premetric B M)) , - ( is-triangular-closure-Premetric - ( B) - ( is-triangular-is-pseudometric-Premetric B M)) -``` - -## See also - -- Metric structures are defined in - [`metric-spaces.metric-structures`](metric-spaces.metric-structures.md). diff --git a/src/metric-spaces/rational-approximations-of-zero.lagda.md b/src/metric-spaces/rational-approximations-of-zero.lagda.md index 2393532fe9..a8070d56e7 100644 --- a/src/metric-spaces/rational-approximations-of-zero.lagda.md +++ b/src/metric-spaces/rational-approximations-of-zero.lagda.md @@ -32,6 +32,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.metric-spaces open import metric-spaces.rational-cauchy-approximations @@ -93,7 +94,7 @@ zero-limit-cauchy-approximation-ℚ = type-subtype ( λ f → is-limit-cauchy-approximation-prop-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ f zero-ℚ) @@ -111,7 +112,7 @@ module _ is-cauchy-map-zero-limit-cauchy-approximation-ℚ : is-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ map-zero-limit-cauchy-approximation-ℚ is-cauchy-map-zero-limit-cauchy-approximation-ℚ = is-cauchy-map-cauchy-approximation-ℚ @@ -119,7 +120,7 @@ module _ is-zero-limit-approximation-zero-limit-cauchy-approximation-ℚ : is-limit-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ approximation-zero-limit-cauchy-approximation-ℚ zero-ℚ is-zero-limit-approximation-zero-limit-cauchy-approximation-ℚ = pr2 f @@ -138,10 +139,10 @@ module _ abstract is-cauchy-approximation-is-approximation-of-zero-ℚ : is-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ f is-cauchy-approximation-is-approximation-of-zero-ℚ ε δ = - neighborhood-leq-leq-dist-ℚ + neighborhood-leq-dist-ℚ ( ε +ℚ⁺ δ) ( f ε) ( f δ) @@ -166,11 +167,11 @@ module _ abstract is-zero-limit-is-approximation-of-zero-ℚ : is-limit-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ cauchy-approximation-is-approximation-of-zero-ℚ zero-ℚ is-zero-limit-is-approximation-of-zero-ℚ ε δ = - neighborhood-leq-leq-dist-ℚ + neighborhood-leq-dist-ℚ ( ε +ℚ⁺ δ) ( f ε) ( zero-ℚ) @@ -198,7 +199,7 @@ module _ is-zero-limit-cauchy-approximation-of-zero-ℚ : is-limit-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ cauchy-approximation-of-zero-ℚ zero-ℚ is-zero-limit-cauchy-approximation-of-zero-ℚ = @@ -215,7 +216,7 @@ module _ ( f : cauchy-approximation-ℚ) ( L : is-limit-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ f zero-ℚ) where @@ -229,11 +230,12 @@ module _ ( ap ( rational-ℚ⁰⁺) ( right-zero-law-dist-ℚ (map-cauchy-approximation-ℚ f ε))) - ( leq-dist-neighborhood-leq-ℚ + ( leq-dist-neighborhood-ℚ ( ε) ( map-cauchy-approximation-ℚ f ε) ( zero-ℚ) - ( is-saturated-metric-space-leq-ℚ + ( saturated-neighborhood-Metric-Space + ( metric-space-ℚ) ( ε) ( map-cauchy-approximation-ℚ f ε) ( zero-ℚ) @@ -258,11 +260,11 @@ section-zero-limit-cauchy-approximation-of-zero-ℚ = eq-type-subtype ( λ h → is-limit-cauchy-approximation-prop-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ h zero-ℚ) ( eq-type-subtype - ( is-cauchy-approximation-prop-Metric-Space metric-space-leq-ℚ) + ( is-cauchy-approximation-prop-Metric-Space metric-space-ℚ) ( refl))) retraction-zero-limit-cauchy-approximation-of-zero-ℚ : diff --git a/src/metric-spaces/rational-cauchy-approximations.lagda.md b/src/metric-spaces/rational-cauchy-approximations.lagda.md index 5e0ba31f01..f987fc3fa8 100644 --- a/src/metric-spaces/rational-cauchy-approximations.lagda.md +++ b/src/metric-spaces/rational-cauchy-approximations.lagda.md @@ -21,16 +21,16 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.metric-spaces open import metric-spaces.short-functions-metric-spaces +``` open import real-numbers.cauchy-completeness-dedekind-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.rational-real-numbers -``` @@ -48,21 +48,21 @@ the ```agda cauchy-approximation-ℚ : UU lzero cauchy-approximation-ℚ = - cauchy-approximation-Metric-Space metric-space-leq-ℚ + cauchy-approximation-Metric-Space metric-space-ℚ map-cauchy-approximation-ℚ : cauchy-approximation-ℚ → ℚ⁺ → ℚ map-cauchy-approximation-ℚ = map-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ is-cauchy-map-cauchy-approximation-ℚ : (f : cauchy-approximation-ℚ) → is-cauchy-approximation-Metric-Space - ( metric-space-leq-ℚ) + ( metric-space-ℚ) ( map-cauchy-approximation-ℚ f) is-cauchy-map-cauchy-approximation-ℚ = is-cauchy-approximation-map-cauchy-approximation-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ ``` ## Properties @@ -79,7 +79,7 @@ bound-dist-map-cauchy-approximation-ℚ : ( map-cauchy-approximation-ℚ f δ)) ( rational-ℚ⁺ (ε +ℚ⁺ δ)) bound-dist-map-cauchy-approximation-ℚ f ε δ = - leq-dist-neighborhood-leq-ℚ + leq-dist-neighborhood-ℚ ( ε +ℚ⁺ δ) ( map-cauchy-approximation-ℚ f ε) ( map-cauchy-approximation-ℚ f δ) @@ -89,16 +89,16 @@ bound-dist-map-cauchy-approximation-ℚ f ε δ = ### Any rational Cauchy approximation has a limit in the reals ```agda -real-limit-cauchy-approximation-ℚ : cauchy-approximation-ℚ → ℝ lzero -real-limit-cauchy-approximation-ℚ f = - limit-cauchy-approximation-Complete-Metric-Space - ( complete-metric-space-leq-ℝ lzero) - ( map-short-function-cauchy-approximation-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℝ lzero) - ( short-isometry-Metric-Space - ( metric-space-leq-ℚ) - ( metric-space-leq-ℝ lzero) - ( isometry-metric-space-leq-real-ℚ)) - ( f)) +-- real-limit-cauchy-approximation-ℚ : cauchy-approximation-ℚ → ℝ lzero +-- real-limit-cauchy-approximation-ℚ f = +-- limit-cauchy-approximation-Complete-Metric-Space +-- ( complete-metric-space-ℝ lzero) +-- ( map-short-function-cauchy-approximation-Metric-Space +-- ( metric-space-ℚ) +-- ( metric-space-ℝ lzero) +-- ( short-isometry-Metric-Space +-- ( metric-space-ℚ) +-- ( metric-space-ℝ lzero) +-- ( isometry-metric-space-real-ℚ)) +-- ( f)) ``` diff --git a/src/metric-spaces/rational-sequences-approximating-zero.lagda.md b/src/metric-spaces/rational-sequences-approximating-zero.lagda.md index 454576cbbc..b86311f7fc 100644 --- a/src/metric-spaces/rational-sequences-approximating-zero.lagda.md +++ b/src/metric-spaces/rational-sequences-approximating-zero.lagda.md @@ -39,7 +39,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.limits-of-sequences-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.metric-spaces @@ -65,7 +65,7 @@ the is-zero-limit-prop-sequence-ℚ : sequence ℚ → Prop lzero is-zero-limit-prop-sequence-ℚ u = is-limit-prop-sequence-Metric-Space - metric-space-leq-ℚ + metric-space-ℚ u zero-ℚ @@ -86,7 +86,7 @@ module _ is-zero-limit-seq-zero-limit-sequence-ℚ : is-limit-sequence-Metric-Space - ( metric-space-leq-ℚ) + ( metric-space-ℚ) ( seq-zero-limit-sequence-ℚ) ( zero-ℚ) is-zero-limit-seq-zero-limit-sequence-ℚ = pr2 u @@ -138,12 +138,12 @@ abstract is-zero-limit-modulus-reciprocal-rational-succ-ℕ : is-limit-modulus-sequence-Metric-Space - ( metric-space-leq-ℚ) + ( metric-space-ℚ) ( reciprocal-rational-succ-ℕ) ( zero-ℚ) ( modulus-reciprocal-rational-succ-ℕ) is-zero-limit-modulus-reciprocal-rational-succ-ℕ ε n H = - neighborhood-leq-leq-dist-ℚ + neighborhood-leq-dist-ℚ ( ε) ( reciprocal-rational-succ-ℕ n) ( zero-ℚ) @@ -180,17 +180,17 @@ module _ tr-is-modulus-leq-abs-zero-limit-sequence-ℚ : (m : ℚ⁺ → ℕ) → is-limit-modulus-sequence-Metric-Space - ( metric-space-leq-ℚ) + ( metric-space-ℚ) ( seq-zero-limit-sequence-ℚ v) ( zero-ℚ) ( m) → is-limit-modulus-sequence-Metric-Space - ( metric-space-leq-ℚ) + ( metric-space-ℚ) ( u) ( zero-ℚ) ( m) tr-is-modulus-leq-abs-zero-limit-sequence-ℚ m H ε n K = - neighborhood-leq-leq-dist-ℚ + neighborhood-leq-dist-ℚ ( ε) ( u n) ( zero-ℚ) diff --git a/src/metric-spaces/reflexive-premetric-structures.lagda.md b/src/metric-spaces/reflexive-premetric-structures.lagda.md deleted file mode 100644 index 5bb77664f7..0000000000 --- a/src/metric-spaces/reflexive-premetric-structures.lagda.md +++ /dev/null @@ -1,101 +0,0 @@ -# Reflexive premetric structures on types - -```agda -module metric-spaces.reflexive-premetric-structures 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.empty-types -open import foundation.equivalences -open import foundation.existential-quantification -open import foundation.function-types -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.negation -open import foundation.propositions -open import foundation.subtypes -open import foundation.universe-levels - -open import metric-spaces.premetric-structures -``` - -
- -## Idea - -A [premetric structure](metric-spaces.premetric-structures.md) is -{{#concept "reflexive" Disambiguation="premetric" Agda=is-reflexive-Premetric}} -if any element is indistinguishable from itself. I.e., a premetric structure is -reflexive if all positive rational numbers are upper bounds of the distance -between an element and itself. - -## Definitions - -### The property of being a reflexive premetric structure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-reflexive-prop-Premetric : Prop (l1 ⊔ l2) - is-reflexive-prop-Premetric = - Π-Prop ℚ⁺ (is-reflexive-prop-Relation-Prop ∘ B) - - is-reflexive-Premetric : UU (l1 ⊔ l2) - is-reflexive-Premetric = type-Prop is-reflexive-prop-Premetric - - is-prop-is-reflexive-Premetric : is-prop is-reflexive-Premetric - is-prop-is-reflexive-Premetric = - is-prop-type-Prop is-reflexive-prop-Premetric -``` - -## Properties - -### Indistinguishability in a reflexive premetric is reflexive - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (R : is-reflexive-Premetric B) - where - - is-reflexive-is-indistinguishable-reflexive-Premetric : - is-reflexive (is-indistinguishable-Premetric B) - is-reflexive-is-indistinguishable-reflexive-Premetric x d = R d x -``` - -### In a reflexive premetric, equal elements are indistinguishable - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (H : is-reflexive-Premetric B) - where - - indistinguishable-eq-reflexive-Premetric : - {x y : A} → x = y → is-indistinguishable-Premetric B x y - indistinguishable-eq-reflexive-Premetric {x} {.x} refl d = H d x -``` - -### Being separated in a reflexive premetric is irreflexive - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (R : is-reflexive-Premetric B) - where - - is-irreflexive-is-separated-pt-is-reflexive-Premetric : - (x : A) → ¬ (is-separated-pt-Premetric B x x) - is-irreflexive-is-separated-pt-is-reflexive-Premetric x = - elim-exists - ( empty-Prop) - ( λ d H → H (R d x)) -``` diff --git a/src/metric-spaces/saturated-complete-metric-spaces.lagda.md b/src/metric-spaces/saturated-complete-metric-spaces.lagda.md deleted file mode 100644 index d4bd450e90..0000000000 --- a/src/metric-spaces/saturated-complete-metric-spaces.lagda.md +++ /dev/null @@ -1,130 +0,0 @@ -# Saturated complete metric spaces - -```agda -module metric-spaces.saturated-complete-metric-spaces where -``` - -
Imports - -```agda -open import foundation.dependent-pair-types -open import foundation.propositions -open import foundation.subtypes -open import foundation.universe-levels - -open import metric-spaces.cauchy-approximations-metric-spaces -open import metric-spaces.complete-metric-spaces -open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.metric-spaces -open import metric-spaces.saturated-metric-spaces -``` - -
- -## Idea - -A [metric space](metric-spaces.metric-spaces.md) is -{{#concept "saturated and complete" Disambiguation="metric space" Agda=Saturated-Complete-Metric-Space}}, -or **saturated complete**, if it is -[complete](metric-spaces.complete-metric-spaces.md) and -[saturated](metric-spaces.saturated-metric-spaces.md). - -## Definitions - -### The property of being a saturated complete metric space - -```agda -module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) - where - - is-saturated-complete-prop-Metric-Space : Prop (l1 ⊔ l2) - is-saturated-complete-prop-Metric-Space = - product-Prop - ( is-complete-prop-Metric-Space A) - ( is-saturated-prop-Metric-Space A) - - is-saturated-complete-Metric-Space : UU (l1 ⊔ l2) - is-saturated-complete-Metric-Space = - type-Prop is-saturated-complete-prop-Metric-Space - - is-prop-is-saturated-complete-Metric-Space : is-prop - is-saturated-complete-Metric-Space - is-prop-is-saturated-complete-Metric-Space = - is-prop-type-Prop is-saturated-complete-prop-Metric-Space -``` - -### The type of saturated complete metric spaces - -```agda -module _ - (l1 l2 : Level) - where - - Saturated-Complete-Metric-Space : UU (lsuc l1 ⊔ lsuc l2) - Saturated-Complete-Metric-Space = - type-subtype (is-saturated-complete-prop-Metric-Space {l1} {l2}) -``` - -```agda -module _ - {l1 l2 : Level} - (A : Saturated-Complete-Metric-Space l1 l2) - where - - metric-space-Saturated-Complete-Metric-Space : Metric-Space l1 l2 - metric-space-Saturated-Complete-Metric-Space = pr1 A - - type-Saturated-Complete-Metric-Space : UU l1 - type-Saturated-Complete-Metric-Space = - type-Metric-Space metric-space-Saturated-Complete-Metric-Space - - is-complete-metric-space-Saturated-Complete-Metric-Space : - is-complete-Metric-Space metric-space-Saturated-Complete-Metric-Space - is-complete-metric-space-Saturated-Complete-Metric-Space = pr1 (pr2 A) - - complete-metric-space-Saturated-Complete-Metric-Space : - Complete-Metric-Space l1 l2 - complete-metric-space-Saturated-Complete-Metric-Space = - metric-space-Saturated-Complete-Metric-Space , - is-complete-metric-space-Saturated-Complete-Metric-Space - - is-saturated-metric-space-Saturated-Complete-Metric-Space : - is-saturated-Metric-Space metric-space-Saturated-Complete-Metric-Space - is-saturated-metric-space-Saturated-Complete-Metric-Space = pr2 (pr2 A) -``` - -### The map from Cauchy approximations in a saturated complete metric space to convergent Cauchy approximations - -```agda -module _ - {l1 l2 : Level} - (A : Saturated-Complete-Metric-Space l1 l2) - where - - convergent-cauchy-approximation-Saturated-Complete-Metric-Space : - cauchy-approximation-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) → - convergent-cauchy-approximation-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - convergent-cauchy-approximation-Saturated-Complete-Metric-Space u = - u , is-complete-metric-space-Saturated-Complete-Metric-Space A u -``` - -### The limit of a Cauchy approximation in a saturated complete metric space - -```agda -module _ - {l1 l2 : Level} - (A : Saturated-Complete-Metric-Space l1 l2) - where - - limit-cauchy-approximation-Saturated-Complete-Metric-Space : - cauchy-approximation-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) → - type-Saturated-Complete-Metric-Space A - limit-cauchy-approximation-Saturated-Complete-Metric-Space u = - limit-convergent-cauchy-approximation-Metric-Space - ( metric-space-Saturated-Complete-Metric-Space A) - ( convergent-cauchy-approximation-Saturated-Complete-Metric-Space A u) -``` diff --git a/src/metric-spaces/saturated-metric-spaces.lagda.md b/src/metric-spaces/saturated-metric-spaces.lagda.md deleted file mode 100644 index 6c3ad1bc9d..0000000000 --- a/src/metric-spaces/saturated-metric-spaces.lagda.md +++ /dev/null @@ -1,206 +0,0 @@ -# Saturated metric spaces - -```agda -module metric-spaces.saturated-metric-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.equality-dependent-pair-types -open import foundation.equivalences -open import foundation.function-types -open import foundation.functoriality-dependent-pair-types -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.universe-levels - -open import metric-spaces.closed-premetric-structures -open import metric-spaces.equality-of-metric-spaces -open import metric-spaces.functions-metric-spaces -open import metric-spaces.metric-spaces -open import metric-spaces.metric-structures -open import metric-spaces.premetric-spaces -open import metric-spaces.premetric-structures -open import metric-spaces.short-functions-metric-spaces -``` - -
- -## Idea - -A [metric space](metric-spaces.metric-spaces.md) is -{{#concept "saturated" Disambiguation="metric space" Agda=is-saturated-Metric-Space}} -if its [premetric](metric-spaces.premetric-structures.md) is -[closed](metric-spaces.closed-premetric-structures.md). - -## Definitions - -### The property of being a saturated metric space - -```agda -module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - where - - is-saturated-prop-Metric-Space : Prop (l1 ⊔ l2) - is-saturated-prop-Metric-Space = - is-closed-prop-Premetric (structure-Metric-Space M) - - is-saturated-Metric-Space : UU (l1 ⊔ l2) - is-saturated-Metric-Space = type-Prop is-saturated-prop-Metric-Space - - is-prop-is-saturated-Metric-Space : is-prop is-saturated-Metric-Space - is-prop-is-saturated-Metric-Space = - is-prop-type-Prop is-saturated-prop-Metric-Space -``` - -### Saturation of a metric space - -```agda -module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - where - - saturate-Metric-Space : Metric-Space l1 l2 - pr1 saturate-Metric-Space = - type-Metric-Space M , closure-Premetric (structure-Metric-Space M) - pr2 saturate-Metric-Space = - preserves-is-metric-closure-Premetric - ( structure-Metric-Space M) - ( is-metric-structure-Metric-Space M) -``` - -## Properties - -### The saturation of a metric space is saturated - -```agda -module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - where - - is-saturated-saturate-Metric-Space : - is-saturated-Metric-Space (saturate-Metric-Space M) - is-saturated-saturate-Metric-Space = - is-closed-closure-Premetric (structure-Metric-Space M) -``` - -### The saturation of a saturated metric space is itself - -```agda -module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - (H : is-saturated-Metric-Space M) - where - - eq-saturate-is-saturated-Metric-Space : - saturate-Metric-Space M = M - eq-saturate-is-saturated-Metric-Space = - eq-type-subtype - ( is-metric-prop-Premetric-Space) - ( eq-pair-eq-fiber - ( eq-closure-closed-monotonic-Premetric - ( structure-Metric-Space M) - ( is-monotonic-structure-Metric-Space M) - ( H))) -``` - -### Saturation of metric spaces is idempotent - -```agda -module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - where - - is-idempotent-saturate-Metric-Space : - saturate-Metric-Space (saturate-Metric-Space M) = - saturate-Metric-Space M - is-idempotent-saturate-Metric-Space = - eq-saturate-is-saturated-Metric-Space - ( saturate-Metric-Space M) - ( is-saturated-saturate-Metric-Space M) -``` - -### The identity map between a metric space and its saturation is short - -```agda -module _ - {l1 l2 : Level} (M : Metric-Space l1 l2) - where - - is-short-id-saturate-Metric-Space : - is-short-function-Metric-Space - ( M) - ( saturate-Metric-Space M) - ( id) - is-short-id-saturate-Metric-Space = - leq-closure-monotonic-Premetric - ( structure-Metric-Space M) - ( is-monotonic-structure-Metric-Space M) - - short-id-saturate-Metric-Space : - short-function-Metric-Space M (saturate-Metric-Space M) - short-id-saturate-Metric-Space = - id , is-short-id-saturate-Metric-Space -``` - -### Saturation of metric spaces preserves short maps into saturated metric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} (M : Metric-Space l1 l2) (M' : Metric-Space l1' l2') - (S' : is-saturated-Metric-Space M') - (f : map-type-Metric-Space M M') - where - - is-short-saturate-short-function-saturated-Metric-Space : - is-short-function-Metric-Space M M' f → - is-short-function-Metric-Space (saturate-Metric-Space M) M' f - is-short-saturate-short-function-saturated-Metric-Space H d x y I = - S' d (f x) (f y) (λ δ → H (d +ℚ⁺ δ) x y (I δ)) - - is-short-is-short-saturate-function-saturated-Metric-Space : - is-short-function-Metric-Space (saturate-Metric-Space M) M' f → - is-short-function-Metric-Space M M' f - is-short-is-short-saturate-function-saturated-Metric-Space H = - is-short-map-short-function-Metric-Space - ( M) - ( M') - ( comp-short-function-Metric-Space - ( M) - ( saturate-Metric-Space M) - ( M') - ( f , H) - ( short-id-saturate-Metric-Space M)) - - equiv-saturate-is-short-function-saturated-Metric-Space : - (is-short-function-Metric-Space M M' f) ≃ - (is-short-function-Metric-Space (saturate-Metric-Space M) M' f) - equiv-saturate-is-short-function-saturated-Metric-Space = - equiv-iff - ( is-short-function-prop-Metric-Space M M' f) - ( is-short-function-prop-Metric-Space (saturate-Metric-Space M) M' f) - ( is-short-saturate-short-function-saturated-Metric-Space) - ( is-short-is-short-saturate-function-saturated-Metric-Space) -``` - -```agda -module _ - {l1 l2 l1' l2' : Level} (M : Metric-Space l1 l2) (M' : Metric-Space l1' l2') - (S' : is-saturated-Metric-Space M') - where - - equiv-short-function-saturated-Metric-Space : - short-function-Metric-Space M M' ≃ - short-function-Metric-Space (saturate-Metric-Space M) M' - equiv-short-function-saturated-Metric-Space = - equiv-tot (equiv-saturate-is-short-function-saturated-Metric-Space M M' S') -``` diff --git a/src/metric-spaces/sequences-premetric-spaces.lagda.md b/src/metric-spaces/sequences-premetric-spaces.lagda.md deleted file mode 100644 index 433ca0fd18..0000000000 --- a/src/metric-spaces/sequences-premetric-spaces.lagda.md +++ /dev/null @@ -1,36 +0,0 @@ -# Sequences in premetric spaces - -```agda -module metric-spaces.sequences-premetric-spaces where -``` - -
Imports - -```agda -open import foundation.sequences -open import foundation.universe-levels - -open import metric-spaces.premetric-spaces -``` - -
- -## Ideas - -A -{{#concept "sequence" Disambiguation="in a premetric space" Agda=sequence-type-Premetric-Space}} -in a [premetric space](metric-spaces.premetric-spaces.md) is a -[sequence](foundation.sequences.md) in its underlying type. - -## Definitions - -### Sequences in premetric spaces - -```agda -module _ - {l1 l2 : Level} (M : Premetric-Space l1 l2) - where - - sequence-type-Premetric-Space : UU l1 - sequence-type-Premetric-Space = sequence (type-Premetric-Space M) -``` diff --git a/src/metric-spaces/sequences-pseudometric-spaces.lagda.md b/src/metric-spaces/sequences-pseudometric-spaces.lagda.md deleted file mode 100644 index ea8fcbdd47..0000000000 --- a/src/metric-spaces/sequences-pseudometric-spaces.lagda.md +++ /dev/null @@ -1,37 +0,0 @@ -# Sequences in pseudometric spaces - -```agda -module metric-spaces.sequences-pseudometric-spaces where -``` - -
Imports - -```agda -open import foundation.universe-levels - -open import metric-spaces.pseudometric-spaces -open import metric-spaces.sequences-premetric-spaces -``` - -
- -## Ideas - -A -{{#concept "sequence" Disambiguation="in a pseudometric space" Agda=sequence-type-Pseudometric-Space}} -in a [pseudometric space](metric-spaces.pseudometric-spaces.md) is a -[sequence](foundation.sequences.md) in its underlying type. - -## Definition - -### Sequences in pseudometric spaces - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - where - - sequence-type-Pseudometric-Space : UU l1 - sequence-type-Pseudometric-Space = - sequence-type-Premetric-Space (premetric-Pseudometric-Space M) -``` diff --git a/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md b/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md deleted file mode 100644 index bedf0d9902..0000000000 --- a/src/metric-spaces/short-functions-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,345 +0,0 @@ -# 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 -``` - -## 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 diff --git a/src/metric-spaces/short-functions-metric-spaces.lagda.md b/src/metric-spaces/short-functions-metric-spaces.lagda.md index ed1f20ba8c..0f40ee670d 100644 --- a/src/metric-spaces/short-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces.lagda.md @@ -27,8 +27,8 @@ open import foundation.universe-levels open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.short-functions-premetric-spaces -open import metric-spaces.uniformly-continuous-functions-metric-spaces +open import metric-spaces.ordering-rational-neighborhoods +open import metric-spaces.preimage-rational-neighborhoods ``` @@ -38,12 +38,12 @@ open import metric-spaces.uniformly-continuous-functions-metric-spaces 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 WD="metric map" WDID=Q2713824}} -if it is [short](metric-spaces.short-functions-premetric-spaces.md) on their -carrier [premetric spaces](metric-spaces.premetric-spaces.md): for any points -`x` and `y` that are `d`-[neighbors](metric-spaces.premetric-structures.md) in -`A`, `f x` and `f y` are `d`-neighbors in `B`. I.e., upper bounds of the -distance between two points in `A` are upper bounds of the distances of their -images. +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 @@ -53,15 +53,16 @@ images. module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where is-short-function-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ l2') is-short-function-prop-Metric-Space = - is-short-function-prop-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + leq-prop-Rational-Neighborhood-Relation + ( neighborhood-prop-Metric-Space A) + ( preimage-Rational-Neighborhood-Relation + ( f) + ( neighborhood-prop-Metric-Space B)) is-short-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l2') is-short-function-Metric-Space = @@ -84,13 +85,14 @@ module _ set-short-function-Metric-Space : Set (l1 ⊔ l2 ⊔ l1' ⊔ l2') set-short-function-Metric-Space = set-subset - ( set-map-type-Metric-Space A B) + ( set-function-Metric-Space A B) ( is-short-function-prop-Metric-Space A B) short-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') short-function-Metric-Space = type-Set set-short-function-Metric-Space - is-set-short-function-Metric-Space : is-set short-function-Metric-Space + is-set-short-function-Metric-Space : + is-set short-function-Metric-Space is-set-short-function-Metric-Space = is-set-type-Set set-short-function-Metric-Space @@ -100,20 +102,12 @@ module _ (f : short-function-Metric-Space A B) where - map-short-function-Metric-Space : map-type-Metric-Space A B - map-short-function-Metric-Space = - map-short-function-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + map-short-function-Metric-Space : type-function-Metric-Space A B + map-short-function-Metric-Space = pr1 f is-short-map-short-function-Metric-Space : is-short-function-Metric-Space A B map-short-function-Metric-Space - is-short-map-short-function-Metric-Space = - is-short-map-short-function-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + is-short-map-short-function-Metric-Space = pr2 f ``` ## Properties @@ -126,12 +120,12 @@ module _ where is-short-id-Metric-Space : - is-short-function-Metric-Space A A (id-Metric-Space A) + is-short-function-Metric-Space A A (λ x → x) is-short-id-Metric-Space d x y H = H short-id-Metric-Space : short-function-Metric-Space A A short-id-Metric-Space = - id-Metric-Space A , is-short-id-Metric-Space + (λ x → x) , is-short-id-Metric-Space ``` ### Equality of short functions between metric spaces is characterized by homotopy of their carrier maps @@ -170,15 +164,27 @@ module _ (C : Metric-Space l1c l2c) where + is-short-comp-is-short-function-Metric-Space : + (g : type-function-Metric-Space B C) → + (f : type-function-Metric-Space A B) → + is-short-function-Metric-Space B C g → + is-short-function-Metric-Space A B f → + is-short-function-Metric-Space A C (g ∘ f) + is-short-comp-is-short-function-Metric-Space g f H K d x y = + H d (f x) (f y) ∘ K d x y + comp-short-function-Metric-Space : short-function-Metric-Space B C → short-function-Metric-Space A B → short-function-Metric-Space A C - comp-short-function-Metric-Space = - comp-short-function-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( premetric-Metric-Space C) + comp-short-function-Metric-Space g f = + ( map-short-function-Metric-Space B C g ∘ + map-short-function-Metric-Space A B f) , + ( is-short-comp-is-short-function-Metric-Space + ( map-short-function-Metric-Space B C g) + ( map-short-function-Metric-Space A B f) + ( is-short-map-short-function-Metric-Space B C g) + ( is-short-map-short-function-Metric-Space A B f)) ``` ### Unit laws for composition of short maps between metric spaces @@ -274,7 +280,7 @@ module _ is-short-constant-function-Metric-Space : is-short-function-Metric-Space A B (λ _ → b) is-short-constant-function-Metric-Space ε x y H = - is-reflexive-structure-Metric-Space B ε b + refl-neighborhood-Metric-Space B ε b ``` ### Any isometry between metric spaces is short @@ -283,17 +289,14 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') - (f : map-type-Metric-Space A B) + (f : type-function-Metric-Space A B) where is-short-is-isometry-Metric-Space : is-isometry-Metric-Space A B f → is-short-function-Metric-Space A B f - is-short-is-isometry-Metric-Space = - is-short-is-isometry-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) - ( f) + is-short-is-isometry-Metric-Space I = + preserves-neighborhood-map-isometry-Metric-Space A B (f , I) ``` ### The embedding of isometries of metric spaces into short maps @@ -314,7 +317,8 @@ module _ ( map-isometry-Metric-Space A B f) ( is-isometry-map-isometry-Metric-Space A B f) - is-emb-short-isometry-Metric-Space : is-emb short-isometry-Metric-Space + is-emb-short-isometry-Metric-Space : + is-emb short-isometry-Metric-Space is-emb-short-isometry-Metric-Space = is-emb-right-factor ( map-short-function-Metric-Space A B) @@ -323,22 +327,12 @@ module _ ( is-emb-htpy ( λ f → refl) ( is-emb-inclusion-subtype (is-isometry-prop-Metric-Space A B))) -``` - -### Short maps are uniformly continuous - -```agda -module _ - {l1 l2 l3 l4 : Level} (A : Metric-Space l1 l2) (B : Metric-Space l3 l4) - where - is-uniformly-continuous-is-short-function-Metric-Space : - (f : map-type-Metric-Space A B) → is-short-function-Metric-Space A B f → - is-uniformly-continuous-map-Metric-Space A B f - is-uniformly-continuous-is-short-function-Metric-Space = - is-uniformly-continuous-is-short-function-Premetric-Space - ( premetric-Metric-Space A) - ( premetric-Metric-Space B) + emb-short-isometry-Metric-Space : + isometry-Metric-Space A B ↪ short-function-Metric-Space A B + emb-short-isometry-Metric-Space = + short-isometry-Metric-Space , + is-emb-short-isometry-Metric-Space ``` ## See also diff --git a/src/metric-spaces/short-functions-premetric-spaces.lagda.md b/src/metric-spaces/short-functions-premetric-spaces.lagda.md deleted file mode 100644 index 2d694f63a2..0000000000 --- a/src/metric-spaces/short-functions-premetric-spaces.lagda.md +++ /dev/null @@ -1,233 +0,0 @@ -# Short functions between premetric spaces - -```agda -module metric-spaces.short-functions-premetric-spaces where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.dependent-pair-types -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.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.universe-levels - -open import metric-spaces.isometries-premetric-spaces -open import metric-spaces.premetric-spaces -open import metric-spaces.uniformly-continuous-functions-premetric-spaces -``` - -
- -## Idea - -A function `f` between [premetric spaces](metric-spaces.premetric-spaces.md) is -{{#concept "short" Disambiguation="function between premetric spaces" Agda=is-short-function-Premetric-Space}} -if any of the following three [equivalent](foundation.logical-equivalences.md) -[propositions](foundation-core.propositions.md) holds: - -- it maps [`d`-neighborhoods](metric-spaces.premetric-structures.md) to - `d`-neighborhoods; -- any upper bound on the distance between two elements also bounds the distance - between their image; -- the premetric on the domain of `f` is - [finer](metric-spaces.ordering-premetric-structures.md) than the preimage of - the metric on its codomain by `f`. - -## Definitions - -### The property of being a short function between premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : map-type-Premetric-Space A B) - where - - is-short-function-prop-Premetric-Space : Prop (l1 ⊔ l2 ⊔ l2') - is-short-function-prop-Premetric-Space = - Π-Prop - ( ℚ⁺) - ( λ d → - Π-Prop - ( type-Premetric-Space A) - ( λ x → - Π-Prop - ( type-Premetric-Space A) - ( λ y → - hom-Prop - ( structure-Premetric-Space A d x y) - ( structure-Premetric-Space B d (f x) (f y))))) - - is-short-function-Premetric-Space : UU (l1 ⊔ l2 ⊔ l2') - is-short-function-Premetric-Space = - type-Prop is-short-function-prop-Premetric-Space - - is-prop-is-short-function-Premetric-Space : - is-prop is-short-function-Premetric-Space - is-prop-is-short-function-Premetric-Space = - is-prop-type-Prop is-short-function-prop-Premetric-Space -``` - -### The type of short functions between premetric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - where - - short-function-Premetric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') - short-function-Premetric-Space = - type-subtype (is-short-function-prop-Premetric-Space A B) - -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : short-function-Premetric-Space A B) - where - - map-short-function-Premetric-Space : - map-type-Premetric-Space A B - map-short-function-Premetric-Space = pr1 f - - is-short-map-short-function-Premetric-Space : - is-short-function-Premetric-Space A B map-short-function-Premetric-Space - is-short-map-short-function-Premetric-Space = pr2 f -``` - -## Properties - -### The identity function on a metric space is short - -```agda -module _ - {l1 l2 : Level} (A : Premetric-Space l1 l2) - where - - is-short-id-Premetric-Space : - is-short-function-Premetric-Space A A (id-Premetric-Space A) - is-short-id-Premetric-Space d x y = id - - short-id-Premetric-Space : short-function-Premetric-Space A A - short-id-Premetric-Space = - id-Premetric-Space A , is-short-id-Premetric-Space -``` - -### Equality of short functions between premetric spaces is characterized by homotopy between their carrier maps - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f g : short-function-Premetric-Space A B) - where - - equiv-eq-htpy-map-short-function-Premetric-Space : - ( f = g) ≃ - ( map-short-function-Premetric-Space A B f ~ - map-short-function-Premetric-Space A B g) - equiv-eq-htpy-map-short-function-Premetric-Space = - equiv-funext ∘e - extensionality-type-subtype' - ( is-short-function-prop-Premetric-Space A B) f g - - eq-htpy-map-short-function-Premetric-Space : - ( map-short-function-Premetric-Space A B f ~ - map-short-function-Premetric-Space A B g) → - ( f = g) - eq-htpy-map-short-function-Premetric-Space = - map-inv-equiv equiv-eq-htpy-map-short-function-Premetric-Space -``` - -### Composition of short maps between premetric spaces - -```agda -module _ - {l1a l2a l1b l2b l1c l2c : Level} - (A : Premetric-Space l1a l2a) - (B : Premetric-Space l1b l2b) - (C : Premetric-Space l1c l2c) - (g : map-type-Premetric-Space B C) - (f : map-type-Premetric-Space A B) - where - - is-short-comp-function-Premetric-Space : - is-short-function-Premetric-Space B C g → - is-short-function-Premetric-Space A B f → - is-short-function-Premetric-Space A C (g ∘ f) - is-short-comp-function-Premetric-Space H K d x y = - H d (f x) (f y) ∘ K d x y - -module _ - {l1a l2a l1b l2b l1c l2c : Level} - (A : Premetric-Space l1a l2a) - (B : Premetric-Space l1b l2b) - (C : Premetric-Space l1c l2c) - (g : short-function-Premetric-Space B C) - (f : short-function-Premetric-Space A B) - where - - comp-short-function-Premetric-Space : short-function-Premetric-Space A C - pr1 comp-short-function-Premetric-Space = - map-short-function-Premetric-Space B C g ∘ - map-short-function-Premetric-Space A B f - pr2 comp-short-function-Premetric-Space = - is-short-comp-function-Premetric-Space - ( A) - ( B) - ( C) - ( map-short-function-Premetric-Space B C g) - ( map-short-function-Premetric-Space A B f) - ( is-short-map-short-function-Premetric-Space B C g) - ( is-short-map-short-function-Premetric-Space A B f) -``` - -### Any isometry between premetric spaces is short - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Premetric-Space l1 l2) (B : Premetric-Space l1' l2') - (f : map-type-Premetric-Space A B) - where - - is-short-is-isometry-Premetric-Space : - is-isometry-Premetric-Space A B f → - is-short-function-Premetric-Space A B f - is-short-is-isometry-Premetric-Space H d x y = - forward-implication (H d x y) -``` - -### Short maps are uniformly continuous - -```agda -module _ - {l1 l2 l3 l4 : Level} (A : Premetric-Space l1 l2) (B : Premetric-Space l3 l4) - where - - is-uniformly-continuous-is-short-function-Premetric-Space : - (f : map-type-Premetric-Space A B) → - is-short-function-Premetric-Space A B f → - is-uniformly-continuous-map-Premetric-Space A B f - is-uniformly-continuous-is-short-function-Premetric-Space f H = - intro-exists id (λ x ε → H ε x) -``` - -## 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 diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index 976a9cbffe..dbdeeed6eb 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -19,7 +19,7 @@ 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.pseudometric-spaces open import metric-spaces.rational-neighborhoods ``` @@ -28,8 +28,8 @@ 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}} +[pseudometric space](metric-spaces.pseudometric-spaces.md) are +{{#concept "similar" Disambiguation="elements of a pseudometric space" Agda=sim-Pseudometric-Space}} if any of the following equivalent propositions holds: - they are similar w.r.t the underlying @@ -46,24 +46,24 @@ Similarity in a pseudometric space is an ```agda module _ - {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space 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 + sim-prop-Pseudometric-Space : + Relation-Prop l2 (type-Pseudometric-Space A) + sim-prop-Pseudometric-Space x y = + Π-Prop ℚ⁺ (is-upper-bound-dist-prop-Pseudometric-Space A x y) + + sim-Pseudometric-Space : + Relation l2 (type-Pseudometric-Space A) + sim-Pseudometric-Space = + type-Relation-Prop sim-prop-Pseudometric-Space + + is-prop-sim-Pseudometric-Space : + (x y : type-Pseudometric-Space A) → + is-prop (sim-Pseudometric-Space x y) + is-prop-sim-Pseudometric-Space = + is-prop-type-Relation-Prop sim-prop-Pseudometric-Space ``` ## Properties @@ -72,62 +72,62 @@ module _ ```agda module _ - {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space 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 + refl-sim-Pseudometric-Space : + (x : type-Pseudometric-Space A) → + sim-Pseudometric-Space A x x + refl-sim-Pseudometric-Space x d = + refl-neighborhood-Pseudometric-Space A d x - sim-eq-Pseudometric-Space-WIP : - (x y : type-Pseudometric-Space-WIP A) → + sim-eq-Pseudometric-Space : + (x y : type-Pseudometric-Space A) → x = y → - sim-Pseudometric-Space-WIP A x y - sim-eq-Pseudometric-Space-WIP x .x refl = - refl-sim-Pseudometric-Space-WIP x + sim-Pseudometric-Space A x y + sim-eq-Pseudometric-Space x .x refl = + refl-sim-Pseudometric-Space x ``` ### Similarity in pseudometric spaces is symmetric ```agda module _ - {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space 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 + symmetric-sim-Pseudometric-Space : + (x y : type-Pseudometric-Space A) → + sim-Pseudometric-Space A x y → + sim-Pseudometric-Space A y x + symmetric-sim-Pseudometric-Space x y Nxy d = + symmetric-neighborhood-Pseudometric-Space A d x y (Nxy d) + + inv-sim-Pseudometric-Space : + {x y : type-Pseudometric-Space A} → + sim-Pseudometric-Space A x y → + sim-Pseudometric-Space A y x + inv-sim-Pseudometric-Space {x} {y} = + symmetric-sim-Pseudometric-Space x y ``` ### Similarity in pseudometric spaces is transitive ```agda module _ - {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space 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 = + transitive-sim-Pseudometric-Space : + (x y z : type-Pseudometric-Space A) → + sim-Pseudometric-Space A y z → + sim-Pseudometric-Space A x y → + sim-Pseudometric-Space A x z + transitive-sim-Pseudometric-Space x y z Nyz Nxy d = tr - ( is-upper-bound-dist-Pseudometric-Space-WIP A x z) + ( is-upper-bound-dist-Pseudometric-Space A x z) ( eq-add-split-ℚ⁺ d) - ( triangular-neighborhood-Pseudometric-Space-WIP + ( triangular-neighborhood-Pseudometric-Space ( A) ( x) ( y) @@ -142,47 +142,47 @@ module _ ```agda module _ - {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space 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) + is-equivalence-relation-sim-Pseudometric-Space : + is-equivalence-relation (sim-prop-Pseudometric-Space A) + is-equivalence-relation-sim-Pseudometric-Space = + ( refl-sim-Pseudometric-Space A) , + ( symmetric-sim-Pseudometric-Space A) , + ( transitive-sim-Pseudometric-Space A) + + equivalence-sim-Pseudometric-Space : + equivalence-relation l2 (type-Pseudometric-Space A) + equivalence-sim-Pseudometric-Space = + ( sim-prop-Pseudometric-Space A) , + ( is-equivalence-relation-sim-Pseudometric-Space) ``` ### Similar elements are elements with the same neighbors ```agda module _ - {l1 l2 : Level} (A : Pseudometric-Space-WIP l1 l2) + {l1 l2 : Level} (A : Pseudometric-Space 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 + { x y : type-Pseudometric-Space A} → + ( sim-Pseudometric-Space A x y) → + ( d : ℚ⁺) (z : type-Pseudometric-Space A) → + neighborhood-Pseudometric-Space A d x z → + neighborhood-Pseudometric-Space A d y z preserves-neighborhood-sim-Pseudometric-Space {x} {y} x≍y d z Nxz = - saturated-neighborhood-Pseudometric-Space-WIP + saturated-neighborhood-Pseudometric-Space ( A) ( d) ( y) ( z) ( λ δ → tr - ( is-upper-bound-dist-Pseudometric-Space-WIP A y z) + ( is-upper-bound-dist-Pseudometric-Space A y z) ( commutative-add-ℚ⁺ δ d) - ( triangular-neighborhood-Pseudometric-Space-WIP + ( triangular-neighborhood-Pseudometric-Space ( A) ( y) ( x) @@ -190,7 +190,7 @@ module _ ( δ) ( d) ( Nxz) - ( symmetric-neighborhood-Pseudometric-Space-WIP + ( symmetric-neighborhood-Pseudometric-Space ( A) ( δ) ( x) @@ -198,57 +198,57 @@ module _ ( 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) + { x y : type-Pseudometric-Space A} → + ( sim-Pseudometric-Space A x y) ↔ + ( (d : ℚ⁺) (z : type-Pseudometric-Space A) → + neighborhood-Pseudometric-Space A d x z ↔ + neighborhood-Pseudometric-Space 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) + ( inv-sim-Pseudometric-Space A x≍y) ( d) ( z))) , ( λ same-neighbors d → backward-implication ( same-neighbors d _) - ( refl-sim-Pseudometric-Space-WIP A _ d)) + ( refl-sim-Pseudometric-Space 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) + {l1 l2 : Level} (A : Pseudometric-Space 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) ↔ + {x y : type-Pseudometric-Space A} → + ( (d : ℚ⁺) (z : type-Pseudometric-Space A) → + neighborhood-Pseudometric-Space A d x z ↔ + neighborhood-Pseudometric-Space A d y z) ↔ ( sim-Rational-Neighborhood-Relation - ( neighborhood-prop-Pseudometric-Space-WIP A) + ( neighborhood-prop-Pseudometric-Space A) ( x) ( y)) iff-same-neighbors-same-neighborhood-Pseudometric-Space = ( λ H d z → ( H d z) , - ( inv-neighborhood-Pseudometric-Space-WIP A ∘ + ( inv-neighborhood-Pseudometric-Space A ∘ pr1 (H d z) ∘ - inv-neighborhood-Pseudometric-Space-WIP A) , - ( inv-neighborhood-Pseudometric-Space-WIP A ∘ + inv-neighborhood-Pseudometric-Space A) , + ( inv-neighborhood-Pseudometric-Space A ∘ pr2 (H d z) ∘ - inv-neighborhood-Pseudometric-Space-WIP A)) , + inv-neighborhood-Pseudometric-Space A)) , ( iff-left-neighbor-sim-Rational-Neighborhood-Relation - ( neighborhood-prop-Pseudometric-Space-WIP A)) + ( neighborhood-prop-Pseudometric-Space A)) iff-same-neighborhood-sim-Pseudometric-Space : - { x y : type-Pseudometric-Space-WIP A} → - ( sim-Pseudometric-Space-WIP A x y) ↔ + { x y : type-Pseudometric-Space A} → + ( sim-Pseudometric-Space A x y) ↔ ( sim-Rational-Neighborhood-Relation - ( neighborhood-prop-Pseudometric-Space-WIP A) + ( neighborhood-prop-Pseudometric-Space A) ( x) ( y)) iff-same-neighborhood-sim-Pseudometric-Space = diff --git a/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md b/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md deleted file mode 100644 index 268c6de0b9..0000000000 --- a/src/metric-spaces/subspaces-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,165 +0,0 @@ -# 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 = - 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 - -```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 -``` diff --git a/src/metric-spaces/subspaces-metric-spaces.lagda.md b/src/metric-spaces/subspaces-metric-spaces.lagda.md index 53ab7cc333..035f57bd63 100644 --- a/src/metric-spaces/subspaces-metric-spaces.lagda.md +++ b/src/metric-spaces/subspaces-metric-spaces.lagda.md @@ -8,22 +8,21 @@ module metric-spaces.subspaces-metric-spaces where ```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-premetric-structures +open import metric-spaces.extensional-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.metric-structures -open import metric-spaces.monotonic-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.pseudometric-structures -open import metric-spaces.reflexive-premetric-structures -open import metric-spaces.saturated-metric-spaces -open import metric-spaces.symmetric-premetric-structures -open import metric-spaces.triangular-premetric-structures +open import metric-spaces.pseudometric-spaces +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 ``` @@ -32,7 +31,10 @@ open import metric-spaces.triangular-premetric-structures [Subsets](foundation.subtypes.md) of [metric spaces](metric-spaces.metric-spaces.md) inherit the metric structure of -their ambient space. Moreover, the natural inclusion is an +their ambient space; these are +{{#concept "metric subspaces" Agda=subspace-Metric-Space}} of metric spaces. + +The natural inclusion of subspace into its ambient space is an [isometry](metric-spaces.isometries-metric-spaces.md). ## Definitions @@ -48,69 +50,105 @@ module _ subset-Metric-Space = subtype l (type-Metric-Space A) ``` -## Properties - -### Subsets of metric spaces are metric spaces +### Metric subspace of a metric space ```agda module _ - {l l1 l2 : Level} (A : Metric-Space l1 l2) (S : subset-Metric-Space l A) + {l l1 l2 : Level} + (A : Metric-Space l1 l2) + (S : subset-Metric-Space l A) where - structure-subset-Metric-Space : Premetric l2 (type-subtype S) - structure-subset-Metric-Space d x y = - structure-Metric-Space A d (pr1 x) (pr1 y) - - is-reflexive-structure-subset-Metric-Space : - is-reflexive-Premetric structure-subset-Metric-Space - is-reflexive-structure-subset-Metric-Space d x = - is-reflexive-structure-Metric-Space A d (pr1 x) - - is-symmetric-structure-subset-Metric-Space : - is-symmetric-Premetric structure-subset-Metric-Space - is-symmetric-structure-subset-Metric-Space d x y = - is-symmetric-structure-Metric-Space A d (pr1 x) (pr1 y) - - is-triangular-structure-subset-Metric-Space : - is-triangular-Premetric structure-subset-Metric-Space - is-triangular-structure-subset-Metric-Space x y z = - is-triangular-structure-Metric-Space A (pr1 x) (pr1 y) (pr1 z) - - is-pseudometric-structure-subset-Metric-Space : - is-pseudometric-Premetric structure-subset-Metric-Space - is-pseudometric-structure-subset-Metric-Space = - is-reflexive-structure-subset-Metric-Space , - is-symmetric-structure-subset-Metric-Space , - is-triangular-structure-subset-Metric-Space - - is-metric-structure-subset-Metric-Space : - is-metric-Premetric structure-subset-Metric-Space - pr1 is-metric-structure-subset-Metric-Space = - is-pseudometric-structure-subset-Metric-Space - pr2 is-metric-structure-subset-Metric-Space = - ( is-local-is-tight-Premetric - ( structure-subset-Metric-Space) - ( λ x y H → - eq-type-subtype - ( S) - ( is-tight-structure-Metric-Space A (pr1 x) (pr1 y) H))) + neighborhood-prop-subset-Metric-Space : + Rational-Neighborhood-Relation l2 (type-subtype S) + neighborhood-prop-subset-Metric-Space d x y = + neighborhood-prop-Metric-Space A d (pr1 x) (pr1 y) + + is-reflexive-neighborhood-subset-Metric-Space : + is-reflexive-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space + is-reflexive-neighborhood-subset-Metric-Space d x = + refl-neighborhood-Metric-Space A d (pr1 x) + + is-symmetric-neighborhood-subset-Metric-Space : + is-symmetric-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space + is-symmetric-neighborhood-subset-Metric-Space d x y = + symmetric-neighborhood-Metric-Space A d (pr1 x) (pr1 y) + + is-triangular-neighborhood-subset-Metric-Space : + is-triangular-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space + is-triangular-neighborhood-subset-Metric-Space x y z = + triangular-neighborhood-Metric-Space A (pr1 x) (pr1 y) (pr1 z) + + is-saturated-neighborhood-subset-Metric-Space : + is-saturated-Rational-Neighborhood-Relation + neighborhood-prop-subset-Metric-Space + is-saturated-neighborhood-subset-Metric-Space ε x y = + saturated-neighborhood-Metric-Space + ( A) + ( ε) + ( pr1 x) + ( pr1 y) + + pseudometric-subspace-Metric-Space : + Pseudometric-Space (l ⊔ l1) l2 + pseudometric-subspace-Metric-Space = + ( type-subtype S) , + ( neighborhood-prop-subset-Metric-Space , + is-reflexive-neighborhood-subset-Metric-Space , + is-symmetric-neighborhood-subset-Metric-Space , + is-triangular-neighborhood-subset-Metric-Space , + is-saturated-neighborhood-subset-Metric-Space) + + is-extensional-pseudometric-subspace-Metric-Space : + is-extensional-Pseudometric-Space + pseudometric-subspace-Metric-Space + is-extensional-pseudometric-subspace-Metric-Space = + is-extensional-is-tight-Pseudometric-Space + ( pseudometric-subspace-Metric-Space) + ( λ x y → + eq-type-subtype S ∘ + eq-sim-Metric-Space A (pr1 x) (pr1 y)) subspace-Metric-Space : Metric-Space (l ⊔ l1) l2 - pr1 subspace-Metric-Space = - type-subtype S , structure-subset-Metric-Space - pr2 subspace-Metric-Space = - is-metric-structure-subset-Metric-Space + subspace-Metric-Space = + make-Metric-Space + ( type-subtype S) + ( neighborhood-prop-subset-Metric-Space) + ( is-reflexive-neighborhood-subset-Metric-Space) + ( is-symmetric-neighborhood-subset-Metric-Space) + ( is-triangular-neighborhood-subset-Metric-Space) + ( is-saturated-neighborhood-subset-Metric-Space) + ( is-extensional-pseudometric-subspace-Metric-Space) +``` + +### Inclusion of a metric subspace into its ambient space + +```agda +module _ + {l l1 l2 : Level} + (A : Metric-Space l1 l2) + (S : subset-Metric-Space l A) + where inclusion-subspace-Metric-Space : - map-type-Metric-Space subspace-Metric-Space A + type-function-Metric-Space + ( subspace-Metric-Space A S) + ( A) inclusion-subspace-Metric-Space = 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 l1 l2) (S : subset-Metric-Space l A) + {l l1 l2 : Level} + (A : Metric-Space l1 l2) + (S : subset-Metric-Space l A) where is-isometry-inclusion-subspace-Metric-Space : @@ -126,17 +164,3 @@ module _ inclusion-subspace-Metric-Space A S , is-isometry-inclusion-subspace-Metric-Space ``` - -### Subspaces of saturated metric spaces are saturated - -```agda -module _ - {l l1 l2 : Level} (A : Metric-Space l1 l2) (H : is-saturated-Metric-Space A) - (S : subset-Metric-Space l A) - where - - is-saturated-subspace-is-saturated-Metric-Space : - is-saturated-Metric-Space (subspace-Metric-Space A S) - is-saturated-subspace-is-saturated-Metric-Space ε x y = - H ε (inclusion-subtype S x) (inclusion-subtype S y) -``` diff --git a/src/metric-spaces/symmetric-premetric-structures.lagda.md b/src/metric-spaces/symmetric-premetric-structures.lagda.md deleted file mode 100644 index 86d360e6a2..0000000000 --- a/src/metric-spaces/symmetric-premetric-structures.lagda.md +++ /dev/null @@ -1,84 +0,0 @@ -# Symmetric premetric structures on types - -```agda -module metric-spaces.symmetric-premetric-structures where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.binary-relations -open import foundation.existential-quantification -open import foundation.function-types -open import foundation.identity-types -open import foundation.propositions -open import foundation.universe-levels - -open import metric-spaces.premetric-structures -``` - -
- -## Idea - -A [premetric](metric-spaces.premetric-structures.md) is -{{#concept "symmetric" Disambiguation="premetric" agda=is-symmetric-Premetric}} -if `d`-neighborhoods are symmetric for all -[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) -`d`. I.e., upper bounds on the distance between two elements `x` and `y` in a -symmetric premetric are also upper bounds on the distance between `y` and `x`. - -## Definitions - -### The property of being a symmetric premetric structure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-symmetric-prop-Premetric : Prop (l1 ⊔ l2) - is-symmetric-prop-Premetric = - Π-Prop ℚ⁺ (is-symmetric-prop-Relation-Prop ∘ B) - - is-symmetric-Premetric : UU (l1 ⊔ l2) - is-symmetric-Premetric = type-Prop is-symmetric-prop-Premetric - - is-prop-is-symmetric-Premetric : is-prop is-symmetric-Premetric - is-prop-is-symmetric-Premetric = - is-prop-type-Prop is-symmetric-prop-Premetric -``` - -## Properties - -### Indistiguishability in a symmetric premetric is symmetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (S : is-symmetric-Premetric B) - where - - is-symmetric-is-indistinguishable-is-symmetric-Premetric : - is-symmetric (is-indistinguishable-Premetric B) - is-symmetric-is-indistinguishable-is-symmetric-Premetric x y H d = - S d x y (H d) -``` - -### The separatedness relation in a symmetric premetric is symmetric - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (S : is-symmetric-Premetric B) - where - - is-symmetric-is-separated-pt-is-symmetric-Premetric : - is-symmetric (is-separated-pt-Premetric B) - is-symmetric-is-separated-pt-is-symmetric-Premetric x y = - elim-exists - ( is-separated-pt-prop-Premetric B y x) - ( λ d I → intro-exists d (I ∘ S d y x)) -``` diff --git a/src/metric-spaces/triangular-premetric-structures.lagda.md b/src/metric-spaces/triangular-premetric-structures.lagda.md deleted file mode 100644 index 98b2b7c42a..0000000000 --- a/src/metric-spaces/triangular-premetric-structures.lagda.md +++ /dev/null @@ -1,115 +0,0 @@ -# Triangular premetric structures on types - -```agda -module metric-spaces.triangular-premetric-structures 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-premetric-structures -open import metric-spaces.premetric-structures -open import metric-spaces.reflexive-premetric-structures -``` - -
- -## Idea - -A [premetric](metric-spaces.premetric-structures.md) is -{{#concept "triangular" Disambiguation="premetric" agda=is-triangular-Premetric}} -if it is additively transitive. I.e., if for any three elements `x`, `y`, and -`z`, the sum of an upper bound on the distance between `x` and `y` and an upper -bound on the distance between `y` and `z` bounds the distance between `x` and -`z`. - -## Definitions - -### The property of being a triangular premetric structure - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - where - - is-triangular-prop-Premetric : Prop (l1 ⊔ l2) - is-triangular-prop-Premetric = - Π-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-Premetric : UU (l1 ⊔ l2) - is-triangular-Premetric = type-Prop is-triangular-prop-Premetric - - is-prop-is-triangular-Premetric : is-prop is-triangular-Premetric - is-prop-is-triangular-Premetric = - is-prop-type-Prop is-triangular-prop-Premetric -``` - -## Properties - -### Indistiguishability in a triangular premetric is transitive - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (T : is-triangular-Premetric B) - where - - is-transitive-is-indistinguishable-triangular-Premetric : - is-transitive (is-indistinguishable-Premetric B) - is-transitive-is-indistinguishable-triangular-Premetric x y z H K d = - tr - ( λ h → neighborhood-Premetric B h x z) - ( eq-add-split-ℚ⁺ d) - ( T - ( x) - ( y) - ( z) - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d) - ( H (right-summand-split-ℚ⁺ d)) - ( K (left-summand-split-ℚ⁺ d))) -``` - -### Any triangular reflexive premetric is monotonic - -```agda -module _ - {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) - (R : is-reflexive-Premetric B) (T : is-triangular-Premetric B) - where - - is-monotonic-is-reflexive-triangular-Premetric : is-monotonic-Premetric B - is-monotonic-is-reflexive-triangular-Premetric x y d₁ d₂ I H₁ = - tr - ( λ d → neighborhood-Premetric 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₁) -``` diff --git a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md index df7ce99b3c..5bcb18f2c8 100644 --- a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/triangular-rational-neighborhoods.lagda.md @@ -25,7 +25,7 @@ open import metric-spaces.reflexive-rational-neighborhoods ## Idea -A [rational neighborhood relation](metric-spaces.premetric-structures.md) is +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.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. 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 deleted file mode 100644 index cb443ea946..0000000000 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces-WIP.lagda.md +++ /dev/null @@ -1,238 +0,0 @@ -# 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.functoriality-dependent-pair-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.isometries-metric-spaces-WIP -open import metric-spaces.metric-spaces-WIP -open import metric-spaces.short-functions-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-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`. - -## 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-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) - 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))) -``` - -### 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 -``` diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md index 2089657c54..6cc4a3239a 100644 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md @@ -9,15 +9,23 @@ module metric-spaces.uniformly-continuous-functions-metric-spaces where ```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.functoriality-dependent-pair-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 open import metric-spaces.functions-metric-spaces +open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.uniformly-continuous-functions-premetric-spaces +open import metric-spaces.short-functions-metric-spaces ``` @@ -26,7 +34,7 @@ open import metric-spaces.uniformly-continuous-functions-premetric-spaces 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}} +{{#concept "uniformly continuous" Disambiguation="function between metric spaces" WDID=Q741865 WD="uniform continuity" Agda=is-uniformly-continuous-function-Metric-Space}} 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`. @@ -37,60 +45,90 @@ if there exists a function `m : ℚ⁺ → ℚ⁺` such that for any `x : X`, wh ```agda module _ - {l1 l2 l3 l4 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4) - (f : map-type-Metric-Space X Y) + {l1 l2 l3 l4 : Level} + (X : Metric-Space l1 l2) + (Y : Metric-Space l3 l4) + (f : type-function-Metric-Space X Y) where - is-modulus-of-uniform-continuity-prop-Metric-Space : + is-modulus-of-uniform-continuity-prop-function-Metric-Space : (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) - is-modulus-of-uniform-continuity-prop-Metric-Space = - is-modulus-of-uniform-continuity-prop-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) - - modulus-of-uniform-continuity-map-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) - modulus-of-uniform-continuity-map-Metric-Space = - type-subtype is-modulus-of-uniform-continuity-prop-Metric-Space - - is-uniformly-continuous-map-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) - is-uniformly-continuous-map-prop-Metric-Space = - is-uniformly-continuous-map-prop-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) - - is-uniformly-continuous-map-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) - is-uniformly-continuous-map-Metric-Space = - is-uniformly-continuous-map-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) - - is-continuous-at-point-is-uniformly-continuous-map-Metric-Space : - is-uniformly-continuous-map-Metric-Space → (x : type-Metric-Space X) → - is-continuous-at-point-Metric-Space X Y f x - is-continuous-at-point-is-uniformly-continuous-map-Metric-Space = - is-continuous-at-point-is-uniformly-continuous-map-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( f) + is-modulus-of-uniform-continuity-prop-function-Metric-Space m = + Π-Prop + ( type-Metric-Space X) + ( λ x → + is-modulus-of-continuity-at-point-prop-function-Metric-Space + X + Y + f + x + m) + + modulus-of-uniform-continuity-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) + modulus-of-uniform-continuity-function-Metric-Space = + type-subtype is-modulus-of-uniform-continuity-prop-function-Metric-Space + + is-uniformly-continuous-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) + is-uniformly-continuous-prop-function-Metric-Space = + is-inhabited-subtype-Prop + is-modulus-of-uniform-continuity-prop-function-Metric-Space + + is-uniformly-continuous-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) + is-uniformly-continuous-function-Metric-Space = + type-Prop is-uniformly-continuous-prop-function-Metric-Space ``` ### The type of uniformly continuous functions between metric spaces ```agda module _ - {l1 l2 l3 l4 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4) + {l1 l2 l3 l4 : Level} + (X : Metric-Space l1 l2) + (Y : Metric-Space l3 l4) where - uniformly-continuous-map-Metric-Space : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - uniformly-continuous-map-Metric-Space = - type-subtype (is-uniformly-continuous-map-prop-Metric-Space X Y) + uniformly-continuous-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + uniformly-continuous-function-Metric-Space = + type-subtype (is-uniformly-continuous-prop-function-Metric-Space X Y) + + map-uniformly-continuous-function-Metric-Space : + uniformly-continuous-function-Metric-Space → + type-function-Metric-Space X Y + map-uniformly-continuous-function-Metric-Space = pr1 + + is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space : + (f : uniformly-continuous-function-Metric-Space) → + is-uniformly-continuous-function-Metric-Space + ( X) + ( Y) + ( map-uniformly-continuous-function-Metric-Space f) + is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space = + pr2 ``` ## Properties +### Uniformly continuous functions are continuous at all points + +```agda +module _ + {l1 l2 l3 l4 : Level} + (X : Metric-Space l1 l2) + (Y : Metric-Space l3 l4) + (f : type-function-Metric-Space X Y) + where + + is-continuous-at-point-is-uniformly-continuous-function-Metric-Space : + is-uniformly-continuous-function-Metric-Space X Y f → + (x : type-Metric-Space X) → + is-continuous-at-point-function-Metric-Space X Y f x + is-continuous-at-point-is-uniformly-continuous-function-Metric-Space H x = + elim-exists + ( is-continuous-at-point-prop-function-Metric-Space X Y f x) + ( λ m K → intro-exists m (K x)) + ( H) +``` + ### The identity function is uniformly continuous ```agda @@ -98,11 +136,10 @@ module _ {l1 l2 : Level} (X : Metric-Space l1 l2) where - is-uniformly-continuous-map-id-Metric-Space : - is-uniformly-continuous-map-Metric-Space X X id - is-uniformly-continuous-map-id-Metric-Space = - is-uniformly-continuous-map-id-Premetric-Space - ( premetric-Metric-Space X) + is-uniformly-continuous-id-Metric-Space : + is-uniformly-continuous-function-Metric-Space X X id + is-uniformly-continuous-id-Metric-Space = + intro-exists id (λ _ _ _ → id) ``` ### The composition of uniformly continuous functions is uniformly continuous @@ -110,19 +147,93 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4) (Z : Metric-Space l5 l6) - (f : map-type-Metric-Space Y Z) (g : map-type-Metric-Space X Y) + (X : Metric-Space l1 l2) + (Y : Metric-Space l3 l4) + (Z : Metric-Space l5 l6) + where + + is-uniformly-continuous-comp-function-Metric-Space : + (g : type-function-Metric-Space Y Z) → + (f : type-function-Metric-Space X Y) → + is-uniformly-continuous-function-Metric-Space Y Z g → + is-uniformly-continuous-function-Metric-Space X Y f → + is-uniformly-continuous-function-Metric-Space X Z (g ∘ f) + is-uniformly-continuous-comp-function-Metric-Space 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 X Z (g ∘ f)) + + comp-uniformly-continuous-function-Metric-Space : + uniformly-continuous-function-Metric-Space Y Z → + uniformly-continuous-function-Metric-Space X Y → + uniformly-continuous-function-Metric-Space X Z + comp-uniformly-continuous-function-Metric-Space g f = + ( map-uniformly-continuous-function-Metric-Space Y Z g ∘ + map-uniformly-continuous-function-Metric-Space X Y f) , + ( is-uniformly-continuous-comp-function-Metric-Space + ( map-uniformly-continuous-function-Metric-Space Y Z g) + ( map-uniformly-continuous-function-Metric-Space X Y f) + ( is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space + ( Y) + ( Z) + ( g)) + ( is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space + ( X) + ( Y) + ( f))) +``` + +### Short maps are uniformly continuous + +```agda +module _ + {l1 l2 l3 l4 : Level} + (A : Metric-Space l1 l2) + (B : Metric-Space l3 l4) + where + + is-uniformly-continuous-is-short-function-Metric-Space : + (f : type-function-Metric-Space A B) → + is-short-function-Metric-Space A B f → + is-uniformly-continuous-function-Metric-Space A B f + is-uniformly-continuous-is-short-function-Metric-Space f H = + intro-exists id (λ x d → H d x) + + uniformly-continuous-short-function-Metric-Space : + short-function-Metric-Space A B → + uniformly-continuous-function-Metric-Space A B + uniformly-continuous-short-function-Metric-Space = + tot is-uniformly-continuous-is-short-function-Metric-Space +``` + +### Isometries are uniformly continuous + +```agda +module _ + {l1 l2 l3 l4 : Level} + (A : Metric-Space l1 l2) (B : Metric-Space l3 l4) where - is-uniformly-continuous-map-comp-Metric-Space : - is-uniformly-continuous-map-Metric-Space Y Z f → - is-uniformly-continuous-map-Metric-Space X Y g → - is-uniformly-continuous-map-Metric-Space X Z (f ∘ g) - is-uniformly-continuous-map-comp-Metric-Space = - is-uniformly-continuous-map-comp-Premetric-Space - ( premetric-Metric-Space X) - ( premetric-Metric-Space Y) - ( premetric-Metric-Space Z) - ( f) - ( g) + is-uniformly-continuous-is-isometry-Metric-Space : + (f : type-function-Metric-Space A B) → + is-isometry-Metric-Space A B f → + is-uniformly-continuous-function-Metric-Space A B f + is-uniformly-continuous-is-isometry-Metric-Space f = + is-uniformly-continuous-is-short-function-Metric-Space A B f ∘ + is-short-is-isometry-Metric-Space A B f + + uniformly-continuous-isometry-Metric-Space : + isometry-Metric-Space A B → + uniformly-continuous-function-Metric-Space A B + uniformly-continuous-isometry-Metric-Space = + tot is-uniformly-continuous-is-isometry-Metric-Space ``` diff --git a/src/metric-spaces/uniformly-continuous-functions-premetric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-functions-premetric-spaces.lagda.md deleted file mode 100644 index 640e58528b..0000000000 --- a/src/metric-spaces/uniformly-continuous-functions-premetric-spaces.lagda.md +++ /dev/null @@ -1,116 +0,0 @@ -# Uniformly continuous functions between premetric spaces - -```agda -module metric-spaces.uniformly-continuous-functions-premetric-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.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 metric-spaces.continuous-functions-premetric-spaces -open import metric-spaces.premetric-spaces -``` - -
- -## Idea - -A function `f` between [premetric spaces](metric-spaces.premetric-spaces.md) `X` -and `Y` is -{{#concept "uniformly continuous" Disambiguation="function between metric spaces" WDID=Q741865 WD="uniform continuity" Agda=is-uniformly-continuous-map-Premetric-Space}} -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 - -```agda -module _ - {l1 l2 l3 l4 : Level} (X : Premetric-Space l1 l2) (Y : Premetric-Space l3 l4) - (f : map-type-Premetric-Space X Y) - where - - is-modulus-of-uniform-continuity-prop-Premetric-Space : - (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) - is-modulus-of-uniform-continuity-prop-Premetric-Space m = - Π-Prop - ( type-Premetric-Space X) - ( λ x → is-modulus-of-continuity-at-point-prop-Premetric-Space X Y f x m) - - is-uniformly-continuous-map-prop-Premetric-Space : Prop (l1 ⊔ l2 ⊔ l4) - is-uniformly-continuous-map-prop-Premetric-Space = - is-inhabited-subtype-Prop - ( is-modulus-of-uniform-continuity-prop-Premetric-Space) - - is-uniformly-continuous-map-Premetric-Space : UU (l1 ⊔ l2 ⊔ l4) - is-uniformly-continuous-map-Premetric-Space = - type-Prop is-uniformly-continuous-map-prop-Premetric-Space - - is-continuous-at-point-is-uniformly-continuous-map-Premetric-Space : - is-uniformly-continuous-map-Premetric-Space → (x : type-Premetric-Space X) → - is-continuous-at-point-Premetric-Space X Y f x - is-continuous-at-point-is-uniformly-continuous-map-Premetric-Space H x = - do - m , is-modulus-uniform-m ← H - intro-exists m (is-modulus-uniform-m x) - where - open - do-syntax-trunc-Prop - ( is-continuous-at-point-prop-Premetric-Space X Y f x) -``` - -## Properties - -### The identity function is uniformly continuous - -```agda -module _ - {l1 l2 : Level} (X : Premetric-Space l1 l2) - where - - is-uniformly-continuous-map-id-Premetric-Space : - is-uniformly-continuous-map-Premetric-Space X X id - is-uniformly-continuous-map-id-Premetric-Space = - intro-exists id (λ _ _ _ → id) -``` - -### The composition of uniformly continuous functions is uniformly continuous - -```agda -module _ - {l1 l2 l3 l4 l5 l6 : Level} - (X : Premetric-Space l1 l2) - (Y : Premetric-Space l3 l4) - (Z : Premetric-Space l5 l6) - (f : map-type-Premetric-Space Y Z) (g : map-type-Premetric-Space X Y) - where - - is-uniformly-continuous-map-comp-Premetric-Space : - is-uniformly-continuous-map-Premetric-Space Y Z f → - is-uniformly-continuous-map-Premetric-Space X Y g → - is-uniformly-continuous-map-Premetric-Space X Z (f ∘ g) - is-uniformly-continuous-map-comp-Premetric-Space H K = - do - mf , is-modulus-uniform-mf ← H - mg , is-modulus-uniform-mg ← K - intro-exists - ( mg ∘ mf) - ( λ x ε x' → - is-modulus-uniform-mf (g x) ε (g x') ∘ - is-modulus-uniform-mg x (mf ε) x') - where - open - do-syntax-trunc-Prop - ( is-uniformly-continuous-map-prop-Premetric-Space X Z (f ∘ g)) -``` From fdcbf68141db4083470155ed008b294f337b2506 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 9 Jul 2025 04:29:45 +0200 Subject: [PATCH 044/151] refactor real metric spaces --- src/literature/100-theorems.lagda.md | 2 +- .../rational-cauchy-approximations.lagda.md | 26 +- .../absolute-value-real-numbers.lagda.md | 18 +- ...ompleteness-dedekind-real-numbers.lagda.md | 252 +++++----- .../distance-real-numbers.lagda.md | 40 +- .../inequality-real-numbers.lagda.md | 4 +- .../isometry-addition-real-numbers.lagda.md | 36 +- .../isometry-negation-real-numbers.lagda.md | 30 +- .../maximum-real-numbers.lagda.md | 28 +- .../metric-space-of-real-numbers.lagda.md | 476 +++++++++--------- 10 files changed, 457 insertions(+), 455 deletions(-) diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md index 1e34d9c562..fa902d6f8d 100644 --- a/src/literature/100-theorems.lagda.md +++ b/src/literature/100-theorems.lagda.md @@ -140,7 +140,7 @@ open import elementary-number-theory.fundamental-theorem-of-arithmetic using ```agda open import real-numbers.metric-space-of-real-numbers using - ( is-triangular-premetric-leq-ℝ) + ( is-triangular-neighborhood-ℝ) open import real-numbers.distance-real-numbers using ( triangle-inequality-dist-ℝ) ``` diff --git a/src/metric-spaces/rational-cauchy-approximations.lagda.md b/src/metric-spaces/rational-cauchy-approximations.lagda.md index f987fc3fa8..327e2cbaac 100644 --- a/src/metric-spaces/rational-cauchy-approximations.lagda.md +++ b/src/metric-spaces/rational-cauchy-approximations.lagda.md @@ -25,12 +25,12 @@ open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.metric-spaces open import metric-spaces.short-functions-metric-spaces -``` open import real-numbers.cauchy-completeness-dedekind-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.rational-real-numbers +``` @@ -89,16 +89,16 @@ bound-dist-map-cauchy-approximation-ℚ f ε δ = ### Any rational Cauchy approximation has a limit in the reals ```agda --- real-limit-cauchy-approximation-ℚ : cauchy-approximation-ℚ → ℝ lzero --- real-limit-cauchy-approximation-ℚ f = --- limit-cauchy-approximation-Complete-Metric-Space --- ( complete-metric-space-ℝ lzero) --- ( map-short-function-cauchy-approximation-Metric-Space --- ( metric-space-ℚ) --- ( metric-space-ℝ lzero) --- ( short-isometry-Metric-Space --- ( metric-space-ℚ) --- ( metric-space-ℝ lzero) --- ( isometry-metric-space-real-ℚ)) --- ( f)) +real-limit-cauchy-approximation-ℚ : cauchy-approximation-ℚ → ℝ lzero +real-limit-cauchy-approximation-ℚ f = + limit-cauchy-approximation-Complete-Metric-Space + ( complete-metric-space-ℝ lzero) + ( map-short-function-cauchy-approximation-Metric-Space + ( metric-space-ℚ) + ( metric-space-ℝ lzero) + ( short-isometry-Metric-Space + ( metric-space-ℚ) + ( metric-space-ℝ lzero) + ( isometry-metric-space-real-ℚ)) + ( f)) ``` diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index 74c1bb51c2..01e1f409d6 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -177,8 +177,8 @@ module _ abstract is-short-abs-ℝ : is-short-function-Metric-Space - ( metric-space-leq-ℝ l) - ( metric-space-leq-ℝ l) + ( metric-space-ℝ l) + ( metric-space-ℝ l) ( abs-ℝ) is-short-abs-ℝ d x y I = neighborhood-real-bound-each-leq-ℝ @@ -197,7 +197,7 @@ module _ ( y) ( abs-ℝ y) ( leq-abs-ℝ y)) - ( left-real-bound-neighborhood-leq-ℝ d x y I)) + ( left-leq-real-bound-neighborhood-ℝ d x y I)) ( transitive-leq-ℝ ( neg-ℝ x) ( neg-ℝ y +ℝ real-ℚ (rational-ℚ⁺ d)) @@ -207,11 +207,11 @@ module _ ( neg-ℝ y) ( abs-ℝ y) ( neg-leq-abs-ℝ y)) - ( reverses-lower-neighborhood-leq-neg-ℝ + ( reverses-lower-neighborhood-neg-ℝ ( d) ( y) ( x) - ( right-real-bound-neighborhood-leq-ℝ d x y I)))) + ( right-leq-real-bound-neighborhood-ℝ d x y I)))) ( leq-abs-leq-leq-neg-ℝ ( y) ( abs-ℝ x +ℝ real-ℚ (rational-ℚ⁺ d)) @@ -224,7 +224,7 @@ module _ ( x) ( abs-ℝ x) ( leq-abs-ℝ x)) - ( right-real-bound-neighborhood-leq-ℝ d x y I)) + ( right-leq-real-bound-neighborhood-ℝ d x y I)) ( transitive-leq-ℝ ( neg-ℝ y) ( neg-ℝ x +ℝ real-ℚ (rational-ℚ⁺ d)) @@ -234,13 +234,13 @@ module _ ( neg-ℝ x) ( abs-ℝ x) ( neg-leq-abs-ℝ x)) - ( reverses-lower-neighborhood-leq-neg-ℝ + ( reverses-lower-neighborhood-neg-ℝ ( d) ( x) ( y) - ( left-real-bound-neighborhood-leq-ℝ d x y I)))) + ( left-leq-real-bound-neighborhood-ℝ d x y I)))) short-abs-ℝ : - short-function-Metric-Space (metric-space-leq-ℝ l) (metric-space-leq-ℝ l) + short-function-Metric-Space (metric-space-ℝ l) (metric-space-ℝ l) short-abs-ℝ = (abs-ℝ , is-short-abs-ℝ) ``` diff --git a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md index 63aac53595..848a033d5e 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -36,7 +36,7 @@ open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.cauchy-sequences-complete-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.limits-of-cauchy-approximations-premetric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces open import real-numbers.absolute-value-real-numbers @@ -68,61 +68,61 @@ is [complete](metric-spaces.complete-metric-spaces.md). ### Cauchy approximations in the real numbers ```agda -cauchy-approximation-leq-ℝ : (l : Level) → UU (lsuc l) -cauchy-approximation-leq-ℝ l = - cauchy-approximation-Metric-Space (metric-space-leq-ℝ l) +cauchy-approximation-ℝ : (l : Level) → UU (lsuc l) +cauchy-approximation-ℝ l = + cauchy-approximation-Metric-Space (metric-space-ℝ l) -map-cauchy-approximation-leq-ℝ : - {l : Level} → (x : cauchy-approximation-leq-ℝ l) → ℚ⁺ → ℝ l -map-cauchy-approximation-leq-ℝ {l} = - map-cauchy-approximation-Metric-Space (metric-space-leq-ℝ l) +map-cauchy-approximation-ℝ : + {l : Level} → (x : cauchy-approximation-ℝ l) → ℚ⁺ → ℝ l +map-cauchy-approximation-ℝ {l} = + map-cauchy-approximation-Metric-Space (metric-space-ℝ l) -is-cauchy-map-cauchy-approximation-leq-ℝ : - {l : Level} → (x : cauchy-approximation-leq-ℝ l) → +is-cauchy-map-cauchy-approximation-ℝ : + {l : Level} → (x : cauchy-approximation-ℝ l) → (ε δ : ℚ⁺) → neighborhood-Metric-Space - ( metric-space-leq-ℝ l) + ( metric-space-ℝ l) ( ε +ℚ⁺ δ) - ( map-cauchy-approximation-leq-ℝ x ε) - ( map-cauchy-approximation-leq-ℝ x δ) -is-cauchy-map-cauchy-approximation-leq-ℝ {l} x = + ( map-cauchy-approximation-ℝ x ε) + ( map-cauchy-approximation-ℝ x δ) +is-cauchy-map-cauchy-approximation-ℝ {l} x = is-cauchy-approximation-map-cauchy-approximation-Metric-Space - ( metric-space-leq-ℝ l) + ( metric-space-ℝ l) ( x) ``` ## Properties -### The limit of a Cauchy sequence +### The limit of a Cauchy approximation in `ℝ` ```agda module _ - {l : Level} (x : cauchy-approximation-leq-ℝ l) + {l : Level} (x : cauchy-approximation-ℝ l) where - lower-cut-lim-cauchy-approximation-leq-ℝ : subtype l ℚ - lower-cut-lim-cauchy-approximation-leq-ℝ q = + lower-cut-lim-cauchy-approximation-ℝ : subtype l ℚ + lower-cut-lim-cauchy-approximation-ℝ q = ∃ ( ℚ⁺ × ℚ⁺) ( λ (ε , θ) → lower-cut-ℝ - ( map-cauchy-approximation-leq-ℝ x ε) + ( map-cauchy-approximation-ℝ x ε) ( q +ℚ rational-ℚ⁺ (ε +ℚ⁺ θ))) - upper-cut-lim-cauchy-approximation-leq-ℝ : subtype l ℚ - upper-cut-lim-cauchy-approximation-leq-ℝ q = + upper-cut-lim-cauchy-approximation-ℝ : subtype l ℚ + upper-cut-lim-cauchy-approximation-ℝ q = ∃ ( ℚ⁺ × ℚ⁺) ( λ (ε , θ) → upper-cut-ℝ - ( map-cauchy-approximation-leq-ℝ x ε) + ( map-cauchy-approximation-ℝ x ε) ( q -ℚ (rational-ℚ⁺ (ε +ℚ⁺ θ)))) abstract - is-inhabited-lower-cut-lim-cauchy-approximation-leq-ℝ : - exists ℚ lower-cut-lim-cauchy-approximation-leq-ℝ - is-inhabited-lower-cut-lim-cauchy-approximation-leq-ℝ = + is-inhabited-lower-cut-lim-cauchy-approximation-ℝ : + exists ℚ lower-cut-lim-cauchy-approximation-ℝ + is-inhabited-lower-cut-lim-cauchy-approximation-ℝ = let - open do-syntax-trunc-Prop (∃ ℚ lower-cut-lim-cauchy-approximation-leq-ℝ) - x1 = map-cauchy-approximation-leq-ℝ x one-ℚ⁺ + open do-syntax-trunc-Prop (∃ ℚ lower-cut-lim-cauchy-approximation-ℝ) + x1 = map-cauchy-approximation-ℝ x one-ℚ⁺ two-ℚ = one-ℚ +ℚ one-ℚ in do p , p Date: Thu, 10 Jul 2025 17:52:53 +0200 Subject: [PATCH 045/151] locally constant maps and discrete metric spaces --- src/metric-spaces.lagda.md | 3 +- .../discrete-metric-spaces.lagda.md | 362 ++++++++++++++++++ .../discrete-premetric-structures.lagda.md | 296 -------------- .../equality-of-metric-spaces.lagda.md | 5 + ...-constant-functions-metric-spaces.lagda.md | 96 +++++ 5 files changed, 465 insertions(+), 297 deletions(-) create mode 100644 src/metric-spaces/discrete-metric-spaces.lagda.md delete mode 100644 src/metric-spaces/discrete-premetric-structures.lagda.md create mode 100644 src/metric-spaces/locally-constant-functions-metric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 39fa2e6c53..e2c77afac4 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -55,7 +55,7 @@ open import metric-spaces.continuous-functions-metric-spaces public open import metric-spaces.convergent-cauchy-approximations-metric-spaces 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 +open import metric-spaces.discrete-metric-spaces 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.extensional-pseudometric-spaces public @@ -67,6 +67,7 @@ open import metric-spaces.limits-of-cauchy-approximations-metric-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.lipschitz-functions-metric-spaces public +open import metric-spaces.locally-constant-functions-metric-spaces public open import metric-spaces.metric-space-of-cauchy-approximations-complete-metric-spaces public open import metric-spaces.metric-space-of-cauchy-approximations-metric-spaces public open import metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces public diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md new file mode 100644 index 0000000000..49f6f665c4 --- /dev/null +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -0,0 +1,362 @@ +# Discrete metric spaces + +```agda +module metric-spaces.discrete-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-relations +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-dependent-pair-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.propositional-truncations +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.cauchy-approximations-metric-spaces +open import metric-spaces.complete-metric-spaces +open import metric-spaces.equality-of-metric-spaces +open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.functions-metric-spaces +open import metric-spaces.locally-constant-functions-metric-spaces +open import metric-spaces.metric-spaces +open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.pseudometric-spaces +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 +open import metric-spaces.similarity-of-elements-pseudometric-spaces +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +A [metric space](metric-spaces.metric-spaces.md) is called +{{#concept "discrete" Disambiguation="metric space" Agda=is-discrete-Metric-Space}} +if all +[elements at bounded distance](metric-spaces.elements-at-bounded-distance-metric-spaces.md) +are [equal](foundation.identity-types.md). Discrete metric spaces are +[complete](metric-spaces.complete-metric-spaces.md) and any discrete metric +space is [isometrically equal](metric-spaces.equality-of-metric-spaces.md) to +the +{{#concept "standard discrete metric space" Disambiguation="on a set" Agda=discrete-metric-space-Set}} +on its underlying [set](foundation.sets.md). + +Any [map](metric-spaces.functions-metric-spaces.md) from a discrete metric space +is [short](metric-spaces.short-functions-metric-spaces.md); a map into a +discrete metric space is short if and only if it is +[locally constant](metric-spaces.locally-constant-functions-metric-spaces.md). + +## Definitions + +### The property of being a discrete metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + is-discrete-prop-Metric-Space : Prop (l1 ⊔ l2) + is-discrete-prop-Metric-Space = + Π-Prop + ( ℚ⁺) + ( λ d → + Π-Prop + ( type-Metric-Space A) + ( λ x → + Π-Prop + ( type-Metric-Space A) + ( λ y → + hom-Prop + ( neighborhood-prop-Metric-Space A d x y) + ( Id-Prop + ( set-Metric-Space A) + ( x) + ( y))))) + + is-discrete-Metric-Space : UU (l1 ⊔ l2) + is-discrete-Metric-Space = + type-Prop is-discrete-prop-Metric-Space + + is-prop-is-discrete-Metric-Space : + is-prop is-discrete-Metric-Space + is-prop-is-discrete-Metric-Space = + is-prop-type-Prop is-discrete-prop-Metric-Space +``` + +### The type of discrete metric spaces + +```agda +Discrete-Metric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +Discrete-Metric-Space l1 l2 = Σ (Metric-Space l1 l2) is-discrete-Metric-Space + +module _ + {l1 l2 : Level} (A : Discrete-Metric-Space l1 l2) + where + + metric-space-Discrete-Metric-Space : Metric-Space l1 l2 + metric-space-Discrete-Metric-Space = pr1 A + + is-discrete-metric-space-Discrete-Metric-Space : + is-discrete-Metric-Space metric-space-Discrete-Metric-Space + is-discrete-metric-space-Discrete-Metric-Space = pr2 A + + set-Discrete-Metric-Space : Set l1 + set-Discrete-Metric-Space = + set-Metric-Space metric-space-Discrete-Metric-Space + + type-Discrete-Metric-Space : UU l1 + type-Discrete-Metric-Space = + type-Metric-Space metric-space-Discrete-Metric-Space +``` + +### The canonical discrete metric structure on a set + +```agda +module _ + {l : Level} (A : Set l) + where + + discrete-neighborhood-prop-Set : + Rational-Neighborhood-Relation l (type-Set A) + discrete-neighborhood-prop-Set _ x y = Id-Prop A x y + + discrete-neighborhood-Set : ℚ⁺ → type-Set A → type-Set A → UU l + discrete-neighborhood-Set _ x y = x = y + + is-reflexive-discrete-neighborhood-Set : + is-reflexive-Rational-Neighborhood-Relation discrete-neighborhood-prop-Set + is-reflexive-discrete-neighborhood-Set _ x = refl + + is-symmetric-discrete-neighborhood-Set : + is-symmetric-Rational-Neighborhood-Relation discrete-neighborhood-prop-Set + is-symmetric-discrete-neighborhood-Set _ x y = inv + + is-triangluar-discrete-neighborhood-Set : + is-triangular-Rational-Neighborhood-Relation discrete-neighborhood-prop-Set + is-triangluar-discrete-neighborhood-Set x y z _ _ H K = K ∙ H + + is-saturated-discrete-neighborhood-Set : + is-saturated-Rational-Neighborhood-Relation discrete-neighborhood-prop-Set + is-saturated-discrete-neighborhood-Set _ x y H = H one-ℚ⁺ + + discrete-pseudometric-Set : Pseudometric-Space l l + discrete-pseudometric-Set = + ( type-Set A) , + ( discrete-neighborhood-prop-Set) , + ( is-reflexive-discrete-neighborhood-Set) , + ( is-symmetric-discrete-neighborhood-Set) , + ( is-triangluar-discrete-neighborhood-Set) , + ( is-saturated-discrete-neighborhood-Set) + + is-tight-discrete-pseudometric-space-Set : + is-tight-Pseudometric-Space discrete-pseudometric-Set + is-tight-discrete-pseudometric-space-Set x y H = H one-ℚ⁺ + + is-extensional-discrete-pseudometric-space-Set : + is-extensional-Pseudometric-Space discrete-pseudometric-Set + is-extensional-discrete-pseudometric-space-Set = + is-extensional-is-tight-Pseudometric-Space + discrete-pseudometric-Set + is-tight-discrete-pseudometric-space-Set + + metric-space-discrete-metric-space-Set : Metric-Space l l + metric-space-discrete-metric-space-Set = + make-Metric-Space + ( type-Set A) + ( discrete-neighborhood-prop-Set) + ( is-reflexive-discrete-neighborhood-Set) + ( is-symmetric-discrete-neighborhood-Set) + ( is-triangluar-discrete-neighborhood-Set) + ( is-saturated-discrete-neighborhood-Set) + ( is-extensional-discrete-pseudometric-space-Set) + + is-discrete-metric-space-discrete-metric-space-Set : + is-discrete-Metric-Space metric-space-discrete-metric-space-Set + is-discrete-metric-space-discrete-metric-space-Set _ _ _ = id + + discrete-metric-space-Set : Discrete-Metric-Space l l + discrete-metric-space-Set = + metric-space-discrete-metric-space-Set , + is-discrete-metric-space-discrete-metric-space-Set +``` + +## Properties + +### Any discrete metric space is isometrically equal to the standard discrete metric space on its underlying set + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + (H : is-discrete-Metric-Space A) + where + + isometric-eq-discrete-metric-space-is-discrete-Metric-Space : + isometric-eq-Metric-Space + ( metric-space-discrete-metric-space-Set (set-Metric-Space A)) + ( A) + isometric-eq-discrete-metric-space-is-discrete-Metric-Space = + ( refl) , + ( λ d x y → + ( λ N → sim-eq-Metric-Space A x y N d) , + ( H d x y)) +``` + +### Discrete metric spaces are equivalent to sets + +```agda +module _ + {l : Level} + where + + is-equiv-discrete-metric-space-Set : is-equiv (discrete-metric-space-Set {l}) + is-equiv-discrete-metric-space-Set = + is-equiv-is-invertible + ( set-Discrete-Metric-Space) + ( λ A → + eq-type-subtype + ( is-discrete-prop-Metric-Space) + ( eq-isometric-eq-Metric-Space + ( metric-space-discrete-metric-space-Set + ( set-Discrete-Metric-Space A)) + ( metric-space-Discrete-Metric-Space A) + ( isometric-eq-discrete-metric-space-is-discrete-Metric-Space + ( metric-space-Discrete-Metric-Space A) + ( is-discrete-metric-space-Discrete-Metric-Space A)))) + ( λ _ → eq-type-subtype is-set-Prop refl) + + equiv-Set-Discrete-Metric-Space : Set l ≃ Discrete-Metric-Space l l + equiv-Set-Discrete-Metric-Space = + discrete-metric-space-Set , is-equiv-discrete-metric-space-Set +``` + +### Cauchy approximations in a discrete metric space are weakly constant + +```agda +module _ + {l1 l2 : Level} (A : Discrete-Metric-Space l1 l2) + (f : cauchy-approximation-Metric-Space (metric-space-Discrete-Metric-Space A)) + where + + is-wconstant-cauchy-approximation-Disrcete-Metric-Space : + (ε δ : ℚ⁺) → + Id + ( map-cauchy-approximation-Metric-Space + ( metric-space-Discrete-Metric-Space A) + ( f) + ( ε)) + ( map-cauchy-approximation-Metric-Space + ( metric-space-Discrete-Metric-Space A) + ( f) + ( δ)) + is-wconstant-cauchy-approximation-Disrcete-Metric-Space ε δ = + is-discrete-metric-space-Discrete-Metric-Space + ( A) + ( ε +ℚ⁺ δ) + ( map-cauchy-approximation-Metric-Space + ( metric-space-Discrete-Metric-Space A) + ( f) + ( ε)) + ( map-cauchy-approximation-Metric-Space + ( metric-space-Discrete-Metric-Space A) + ( f) + ( δ)) + ( is-cauchy-approximation-map-cauchy-approximation-Metric-Space + ( metric-space-Discrete-Metric-Space A) + ( f) + ( ε) + ( δ)) +``` + +### Any discrete metric space is complete + +```agda +module _ + {l1 l2 : Level} + where + + is-complete-is-discrete-Metric-Space : + (A : Metric-Space l1 l2) → + is-discrete-Metric-Space A → + is-complete-Metric-Space A + is-complete-is-discrete-Metric-Space A H f = + ( map-cauchy-approximation-Metric-Space A f one-ℚ⁺) , + ( λ ε δ → + sim-eq-Metric-Space + ( A) + ( map-cauchy-approximation-Metric-Space A f ε) + ( map-cauchy-approximation-Metric-Space A f one-ℚ⁺) + ( is-wconstant-cauchy-approximation-Disrcete-Metric-Space + ( A , H) + ( f) + ( ε) + ( one-ℚ⁺)) + ( ε +ℚ⁺ δ)) + + complete-Discrete-Metric-Space : + Discrete-Metric-Space l1 l2 → Complete-Metric-Space l1 l2 + complete-Discrete-Metric-Space = + tot is-complete-is-discrete-Metric-Space +``` + +### Characterization of short maps from/to discrete metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : type-function-Metric-Space A B) + where + + is-short-is-discrete-domain-function-Metric-Space : + is-discrete-Metric-Space A → + is-short-function-Metric-Space A B f + is-short-is-discrete-domain-function-Metric-Space H d x y Nxy = + sim-eq-Metric-Space + ( B) + ( f x) + ( f y) + ( ap f (H d x y Nxy)) + ( d) + + is-locally-constant-is-short-is-discrete-codomain-function-Metric-Space : + is-discrete-Metric-Space B → + is-short-function-Metric-Space A B f → + is-locally-constant-function-Metric-Space A B f + is-locally-constant-is-short-is-discrete-codomain-function-Metric-Space + H K x y = + elim-exists + ( Id-Prop (set-Metric-Space B) (f x) (f y)) + ( λ d → H d (f x) (f y) ∘ (K d x y)) + + iff-is-locally-constant-is-short-is-discrete-codomain-function-Metric-Space : + is-discrete-Metric-Space B → + is-short-function-Metric-Space A B f ↔ + is-locally-constant-function-Metric-Space A B f + iff-is-locally-constant-is-short-is-discrete-codomain-function-Metric-Space + H = + ( is-locally-constant-is-short-is-discrete-codomain-function-Metric-Space + H) , + ( is-short-is-locally-constant-function-Metric-Space A B f) +``` diff --git a/src/metric-spaces/discrete-premetric-structures.lagda.md b/src/metric-spaces/discrete-premetric-structures.lagda.md deleted file mode 100644 index 28e61e912c..0000000000 --- a/src/metric-spaces/discrete-premetric-structures.lagda.md +++ /dev/null @@ -1,296 +0,0 @@ -# Discrete premetric structures - -```agda -module metric-spaces.discrete-premetric-structures where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.action-on-identifications-functions -open import foundation.binary-relations -open import foundation.contractible-types -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.propositional-truncations -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 -``` - -
- -## Idea - -Any type comes equipped with a canonical -{{#concept "discrete" Disambiguation="premetric structure" Agda=is-discrete-Premetric}} -[premetric](metric-spaces.premetric-structures.md) where `d`-neighbors are -[merely equal](foundation.mere-equality.md) elements. This is the unique -reflexive premetric such that two points are at bounded distance if and only if -they are merely equal, in which case they are indistinguishable. - -## Definitions - -### The property of being a semidiscrete premetric - -```agda --- module _ --- {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) --- where - --- is-semidiscrete-prop-Premetric : Prop (l1 ⊔ l2) --- is-semidiscrete-prop-Premetric = --- Π-Prop --- ( ℚ⁺) --- ( λ d → --- Π-Prop --- ( A) --- ( λ x → --- Π-Prop --- ( A) --- ( λ y → --- hom-Prop --- ( B d x y) --- ( trunc-Prop (x = y))))) - --- is-semidiscrete-Premetric : UU (l1 ⊔ l2) --- is-semidiscrete-Premetric = type-Prop is-semidiscrete-prop-Premetric - --- is-prop-is-semidiscrete-Premetric : is-prop is-semidiscrete-Premetric --- is-prop-is-semidiscrete-Premetric = --- is-prop-type-Prop is-semidiscrete-prop-Premetric -``` - -### The property of being a discrete premetric - -```agda --- module _ --- {l1 l2 : Level} {A : UU l1} (B : Premetric l2 A) --- where - --- is-discrete-prop-Premetric : Prop (l1 ⊔ l2) --- is-discrete-prop-Premetric = --- product-Prop --- ( is-reflexive-prop-Premetric B) --- ( is-semidiscrete-prop-Premetric B) - --- is-discrete-Premetric : UU (l1 ⊔ l2) --- is-discrete-Premetric = type-Prop is-discrete-prop-Premetric - --- is-prop-is-discrete-Premetric : is-prop is-discrete-Premetric --- is-prop-is-discrete-Premetric = --- is-prop-type-Prop is-discrete-prop-Premetric -``` - -### The type of discrete premetrics on a type - -```agda --- module _ --- {l1 : Level} (l2 : Level) (A : UU l1) --- where - --- Discrete-Premetric : UU (l1 ⊔ lsuc l2) --- Discrete-Premetric = Σ (Premetric l2 A) is-discrete-Premetric -``` - -```agda --- module _ --- {l1 l2 : Level} {A : UU l1} (B : Discrete-Premetric l2 A) --- where - --- premetric-Discrete-Premetric : Premetric l2 A --- premetric-Discrete-Premetric = pr1 B - --- is-discrete-premetric-Discrete-Premetric : --- is-discrete-Premetric premetric-Discrete-Premetric --- is-discrete-premetric-Discrete-Premetric = pr2 B - --- is-reflexive-premetric-Discrete-Premetric : --- is-reflexive-Premetric premetric-Discrete-Premetric --- is-reflexive-premetric-Discrete-Premetric = --- pr1 is-discrete-premetric-Discrete-Premetric - --- is-semidiscrete-premetric-Discrete-Premetric : --- is-semidiscrete-Premetric premetric-Discrete-Premetric --- is-semidiscrete-premetric-Discrete-Premetric = --- pr2 is-discrete-premetric-Discrete-Premetric -``` - -### The canonical discrete premetric on a type - -```agda --- module _ --- {l1 : Level} (A : UU l1) --- where - --- premetric-discrete-Premetric : Premetric l1 A --- premetric-discrete-Premetric d x y = trunc-Prop (x = y) - --- is-discrete-premetric-discrete-Premetric : --- is-discrete-Premetric premetric-discrete-Premetric --- is-discrete-premetric-discrete-Premetric = --- (λ x d → unit-trunc-Prop refl) , --- (λ d x y → id) - --- discrete-Premetric : Discrete-Premetric l1 A --- discrete-Premetric = --- premetric-discrete-Premetric , --- is-discrete-premetric-discrete-Premetric -``` - -## Properties - -### Unicity of discrete premetric structures - -#### Any discrete premetric on a type is equivalent to the canonical discrete premetric - -```agda --- module _ --- {l1 l2 : Level} {A : UU l1} (B : Discrete-Premetric l2 A) --- (d : ℚ⁺) (x y : A) --- where - --- iff-premetric-discrete-Discrete-Premetric : --- type-iff-Prop --- ( premetric-Discrete-Premetric B d x y) --- ( premetric-discrete-Premetric A d x y) --- iff-premetric-discrete-Discrete-Premetric = --- ( is-semidiscrete-premetric-Discrete-Premetric B d x y) , --- ( rec-trunc-Prop --- ( premetric-Discrete-Premetric B d x y) --- ( λ e → --- indistinguishable-eq-reflexive-Premetric --- ( premetric-Discrete-Premetric B) --- ( is-reflexive-premetric-Discrete-Premetric B) --- ( e) --- ( d))) -``` - -#### Any two discrete premetrics on a type are equivalent - -```agda --- module _ --- {la lb lc : Level} {A : UU la} --- (B : Discrete-Premetric lb A) (C : Discrete-Premetric lc A) --- (d : ℚ⁺) (x y : A) --- where - --- iff-premetric-Discrete-Premetric : --- type-iff-Prop --- ( premetric-Discrete-Premetric B d x y) --- ( premetric-Discrete-Premetric C d x y) --- iff-premetric-Discrete-Premetric = --- ( inv-iff (iff-premetric-discrete-Discrete-Premetric C d x y)) ∘iff --- ( iff-premetric-discrete-Discrete-Premetric B d x y) -``` - -#### Any two discrete premetrics on a type are equal - -```agda --- module _ --- {l1 l2 : Level} {A : UU l1} (B B' : Discrete-Premetric l2 A) --- where - --- all-elements-equal-Discrete-Premetric : B = B' --- all-elements-equal-Discrete-Premetric = --- eq-type-subtype --- ( is-discrete-prop-Premetric) --- ( eq-Eq-Premetric --- ( premetric-Discrete-Premetric B) --- ( premetric-Discrete-Premetric B') --- ( iff-premetric-Discrete-Premetric B B')) -``` - -#### The type of discrete premetric structures on a type is a proposition - -```agda --- module _ --- {l1 : Level} (l2 : Level) (A : UU l1) --- where - --- is-prop-Discrete-Premetric : is-prop (Discrete-Premetric l2 A) --- is-prop-Discrete-Premetric = --- is-prop-all-elements-equal all-elements-equal-Discrete-Premetric -``` - -### Properties of the canonical discrete premetric - -#### The canonical discrete premetric on a type is symmetric - -```agda --- module _ --- {l : Level} (A : UU l) --- where - --- is-symmetric-discrete-Premetric : --- is-symmetric-Premetric (premetric-discrete-Premetric A) --- is-symmetric-discrete-Premetric d x y = --- rec-trunc-Prop --- ( trunc-Prop (y = x)) --- ( unit-trunc-Prop ∘ inv) -``` - -#### The canonical discrete premetric on a type is triangular - -```agda --- module _ --- {l : Level} (A : UU l) --- where - --- is-triangular-discrete-Premetric : --- is-triangular-Premetric (premetric-discrete-Premetric A) --- is-triangular-discrete-Premetric x y z d₁ d₂ H = --- rec-trunc-Prop --- ( trunc-Prop (x = z)) --- ( λ (i : x = y) → --- rec-trunc-Prop --- ( trunc-Prop (x = z)) --- ( λ (j : y = z) → unit-trunc-Prop (i ∙ j)) --- ( H)) -``` - -#### Neighbors in the canonical discrete premetric are indistinguishable - -```agda --- module _ --- {l : Level} (A : UU l) (d : ℚ⁺) (x y : A) --- where - --- is-indistinguishable-is-in-neighborhood-discrete-Premetric : --- neighborhood-Premetric (premetric-discrete-Premetric A) d x y → --- is-indistinguishable-Premetric (premetric-discrete-Premetric A) x y --- is-indistinguishable-is-in-neighborhood-discrete-Premetric H d = H -``` - -#### The canonical discrete premetric on a type is local if and only if this type is a set - -```agda --- module _ --- {l : Level} {A : UU l} --- where - --- is-set-is-local-discrete-Premetric : --- is-local-Premetric (premetric-discrete-Premetric A) → is-set A --- is-set-is-local-discrete-Premetric = --- ( is-set-has-extensional-Premetric (premetric-discrete-Premetric A)) ∘ --- ( pair (is-reflexive-premetric-Discrete-Premetric (discrete-Premetric A))) - --- is-local-is-set-discrete-Premetric : --- is-set A → is-local-Premetric (premetric-discrete-Premetric A) --- is-local-is-set-discrete-Premetric H = --- is-local-is-tight-Premetric --- ( premetric-discrete-Premetric A) --- ( λ x y I → rec-trunc-Prop (Id-Prop (A , H) x y) id (I one-ℚ⁺)) -``` diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 2c4976674b..d208e19197 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -117,6 +117,11 @@ module _ ( structure-Metric-Space A) ( structure-Metric-Space B))) ∘e ( equiv-pair-eq-Σ A B) + + eq-isometric-eq-Metric-Space : + isometric-eq-Metric-Space A B → A = B + eq-isometric-eq-Metric-Space = + map-inv-equiv equiv-eq-isometric-eq-Metric-Space ``` ### Isometric equality is torsorial diff --git a/src/metric-spaces/locally-constant-functions-metric-spaces.lagda.md b/src/metric-spaces/locally-constant-functions-metric-spaces.lagda.md new file mode 100644 index 0000000000..c199e204ea --- /dev/null +++ b/src/metric-spaces/locally-constant-functions-metric-spaces.lagda.md @@ -0,0 +1,96 @@ +# Locally constant functions in metric spaces + +```agda +module metric-spaces.locally-constant-functions-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.equivalence-relations +open import foundation.existential-quantification +open import foundation.function-types +open import foundation.functoriality-propositional-truncation +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.elements-at-bounded-distance-metric-spaces +open import metric-spaces.functions-metric-spaces +open import metric-spaces.metric-spaces +open import metric-spaces.short-functions-metric-spaces +``` + +
+ +## Idea + +A [function](metric-spaces.functions-metric-spaces.md) between +[metric spaces](metric-spaces.metric-spaces.md) is +{{#concept "locally constant" Disambiguation="function between metric spaces" Agda=is-locally-constant-function-Metric-Space}} +if +[elements at bounded distance](metric-spaces.elements-at-bounded-distance-metric-spaces.md) +have [identical](foundation.identity-types.md) images. All locally constant +functions are [short](metric-spaces.short-functions-metric-spaces.md). + +## Definitions + +### The property of being a locally constant function + +```agda +module _ + {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : type-function-Metric-Space A B) + where + + is-locally-constant-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l1') + is-locally-constant-prop-function-Metric-Space = + Π-Prop + ( type-Metric-Space A) + ( λ x → + Π-Prop + ( type-Metric-Space A) + ( λ y → + bounded-dist-prop-Metric-Space A x y ⇒ + Id-Prop + ( set-Metric-Space B) + ( f x) + ( f y))) + + is-locally-constant-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l1') + is-locally-constant-function-Metric-Space = + type-Prop is-locally-constant-prop-function-Metric-Space + + is-prop-is-locally-constant-function-Metric-Space : + is-prop is-locally-constant-function-Metric-Space + is-prop-is-locally-constant-function-Metric-Space = + is-prop-type-Prop is-locally-constant-prop-function-Metric-Space +``` + +## Properties + +### Locally constant functions are short + +```agda +module _ + {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : type-function-Metric-Space A B) + where + + is-short-is-locally-constant-function-Metric-Space : + is-locally-constant-function-Metric-Space A B f → + is-short-function-Metric-Space A B f + is-short-is-locally-constant-function-Metric-Space H d x y Nxy = + sim-eq-Metric-Space + ( B) + ( f x) + ( f y) + ( H x y (intro-exists d Nxy)) + ( d) +``` From 2050c7b6d79306a652488bc408172ad4e733fb8d Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 10 Jul 2025 20:00:19 +0200 Subject: [PATCH 046/151] disjoint sums of metric spaces --- src/metric-spaces.lagda.md | 1 + .../disjoint-sums-metric-spaces.lagda.md | 333 ++++++++++++++++++ 2 files changed, 334 insertions(+) create mode 100644 src/metric-spaces/disjoint-sums-metric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index e2c77afac4..34471f26da 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -56,6 +56,7 @@ open import metric-spaces.convergent-cauchy-approximations-metric-spaces public open import metric-spaces.convergent-sequences-metric-spaces public open import metric-spaces.dependent-products-metric-spaces public open import metric-spaces.discrete-metric-spaces public +open import metric-spaces.disjoint-sums-metric-spaces 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.extensional-pseudometric-spaces public diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md new file mode 100644 index 0000000000..76c7549c28 --- /dev/null +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -0,0 +1,333 @@ +# Disjoint sums of metric spaces + +```agda +module metric-spaces.disjoint-sums-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.equality-dependent-pair-types +open import foundation.evaluation-functions +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.sets +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces +open import metric-spaces.complete-metric-spaces +open import metric-spaces.convergent-cauchy-approximations-metric-spaces +open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.functions-metric-spaces +open import metric-spaces.isometries-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces +open import metric-spaces.locally-constant-functions-metric-spaces +open import metric-spaces.metric-spaces +open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.pseudometric-spaces +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 +open import metric-spaces.similarity-of-elements-pseudometric-spaces +open import metric-spaces.symmetric-rational-neighborhoods +open import metric-spaces.triangular-rational-neighborhoods +``` + +
+ +## Idea + +The +{{#concept "disjoint sum" Disambiguation="of a type family of metric spaces" Agda=Σ-Metric-Space}} +of a type family `P` of [metric spaces](metric-spaces.metri-spaces.md) over a +metric space `A` is the metric space with underlying type `Σ A P` and the +[neighborhood relation](metric-spaces.rational-neighborhoods.md) defined as: + +`(x , Px)` is `d`-neighbor of `(y , Py)` if and only if `x` is +[equal](foundation.identity-types) to `y` and the +[transport](foundation.transport-along-identifications.md) of `Px` along this +identification is a `d`-neighbor of `y` in `P y`. + +The [projection](foundation.dependent-pair-types.md) on the first component is +[locally constant](metric-spaces.locally-constant-functions-metric-spaces.md); +for any `x : A` the embedding `P x → Σ A P` is an +[isometry](isometries-metric-spaces.md). + +## Definitions + +### Dependent sum of metric spaces + +```agda +module _ + {la la' lp lp' : Level} + (A : Metric-Space la la') + (P : type-Metric-Space A → Metric-Space lp lp') + where + + type-Σ-Metric-Space : UU (la ⊔ lp) + type-Σ-Metric-Space = + Σ (type-Metric-Space A) (type-Metric-Space ∘ P) + + neighborhood-prop-Σ-Metric-Space : + Rational-Neighborhood-Relation (la ⊔ lp') type-Σ-Metric-Space + neighborhood-prop-Σ-Metric-Space d (x , Px) (y , Py) = + Σ-Prop + ( Id-Prop + ( set-Metric-Space A) + ( x) + ( y)) + ( λ e → + neighborhood-prop-Metric-Space + ( P y) + ( d) + ( tr (type-Metric-Space ∘ P) e Px) + ( Py)) + + is-reflexive-neighborhood-Σ-Metric-Space : + is-reflexive-Rational-Neighborhood-Relation + neighborhood-prop-Σ-Metric-Space + is-reflexive-neighborhood-Σ-Metric-Space d (x , Px) = + (refl , refl-neighborhood-Metric-Space (P x) d Px) + + is-symmetric-neighborhood-Σ-Metric-Space : + is-symmetric-Rational-Neighborhood-Relation + neighborhood-prop-Σ-Metric-Space + is-symmetric-neighborhood-Σ-Metric-Space d (x , Px) (.x , Px') (refl , Nxx') = + (refl , symmetric-neighborhood-Metric-Space (P x) d Px Px' Nxx') + + is-triangular-neighborhood-Σ-Metric-Space : + is-triangular-Rational-Neighborhood-Relation + neighborhood-prop-Σ-Metric-Space + is-triangular-neighborhood-Σ-Metric-Space + (x , Px) (.x , Px') (.x , Px'') d₁ d₂ (refl , K) (refl , H) = + ( refl , + triangular-neighborhood-Metric-Space + ( P x) + ( Px) + ( Px') + ( Px'') + ( d₁) + ( d₂) + ( K) + ( H)) + + is-saturated-neighborhood-Σ-Metric-Space : + is-saturated-Rational-Neighborhood-Relation + neighborhood-prop-Σ-Metric-Space + is-saturated-neighborhood-Σ-Metric-Space d (x , Px) (y , Py) H = + x=y , lemma-neighborhood-Σ + where + + x=y : x = y + x=y = pr1 (H one-ℚ⁺) + + all-eq-x=y : + (δ : ℚ⁺) → pr1 (H δ) = x=y + all-eq-x=y δ = + is-set-has-uip + ( is-set-type-Set (set-Metric-Space A)) + ( x) + ( y) + ( pr1 (H δ)) + ( x=y) + + lemma-neighborhood-Σ : + neighborhood-Metric-Space + ( P y) + ( d) + ( tr (type-Metric-Space ∘ P) x=y Px) + ( Py) + lemma-neighborhood-Σ = + saturated-neighborhood-Metric-Space + ( P y) + ( d) + ( tr (type-Metric-Space ∘ P) x=y Px) + ( Py) + ( λ δ → + tr + ( λ e → + neighborhood-Metric-Space + (P y) + (d +ℚ⁺ δ) + ( tr (type-Metric-Space ∘ P) e Px) + ( Py)) + ( all-eq-x=y δ) + ( pr2 (H δ))) + + pseudometric-space-Σ-Metric-Space : + Pseudometric-Space (la ⊔ lp) (la ⊔ lp') + pseudometric-space-Σ-Metric-Space = + ( type-Σ-Metric-Space) , + ( neighborhood-prop-Σ-Metric-Space , + is-reflexive-neighborhood-Σ-Metric-Space , + is-symmetric-neighborhood-Σ-Metric-Space , + is-triangular-neighborhood-Σ-Metric-Space , + is-saturated-neighborhood-Σ-Metric-Space) + + is-tight-pseudometric-space-Σ-Metric-Space : + is-tight-Pseudometric-Space pseudometric-space-Σ-Metric-Space + is-tight-pseudometric-space-Σ-Metric-Space (x , Px) (y , Py) H = + eq-pair-Σ + ( x=y) + ( eq-sim-Metric-Space + ( P y) + ( tr (type-Metric-Space ∘ P) x=y Px) + ( Py) + ( λ δ → + tr + ( λ e → + neighborhood-Metric-Space + ( P y) + ( δ) + ( tr (type-Metric-Space ∘ P) e Px) + ( Py)) + ( all-eq-x=y δ) + ( pr2 (H δ)))) + where + + x=y : x = y + x=y = pr1 (H one-ℚ⁺) + + all-eq-x=y : + (δ : ℚ⁺) → pr1 (H δ) = x=y + all-eq-x=y δ = + is-set-has-uip + ( is-set-type-Set (set-Metric-Space A)) + ( x) + ( y) + ( pr1 (H δ)) + ( x=y) + + is-extensional-pseudometric-space-Σ-Metric-Space : + is-extensional-Pseudometric-Space pseudometric-space-Σ-Metric-Space + is-extensional-pseudometric-space-Σ-Metric-Space = + is-extensional-is-tight-Pseudometric-Space + pseudometric-space-Σ-Metric-Space + is-tight-pseudometric-space-Σ-Metric-Space + + Σ-Metric-Space : Metric-Space (la ⊔ lp) (la ⊔ lp') + Σ-Metric-Space = + make-Metric-Space + type-Σ-Metric-Space + neighborhood-prop-Σ-Metric-Space + is-reflexive-neighborhood-Σ-Metric-Space + is-symmetric-neighborhood-Σ-Metric-Space + is-triangular-neighborhood-Σ-Metric-Space + is-saturated-neighborhood-Σ-Metric-Space + is-extensional-pseudometric-space-Σ-Metric-Space + + base-point-Σ-Metric-Space : + type-function-Metric-Space Σ-Metric-Space A + base-point-Σ-Metric-Space = pr1 + + fiber-point-Σ-Metric-Space : + (x : type-Σ-Metric-Space) → + type-Metric-Space (P (base-point-Σ-Metric-Space x)) + fiber-point-Σ-Metric-Space = pr2 + + emb-fiber-Σ-Metric-Space : + (x : type-Metric-Space A) → + type-Metric-Space ( P x) → + type-Σ-Metric-Space + emb-fiber-Σ-Metric-Space x px = (x , px) +``` + +## Properties + +### The projection on the first component of a dependent sum of metric spaces is locally constant + +```agda +module _ + {la la' lp lp' : Level} + (A : Metric-Space la la') + (P : type-Metric-Space A → Metric-Space lp lp') + where + + is-locally-constant-base-point-Σ-Metric-Space : + is-locally-constant-function-Metric-Space + ( Σ-Metric-Space A P) + ( A) + ( base-point-Σ-Metric-Space A P) + is-locally-constant-base-point-Σ-Metric-Space x y = + elim-exists + ( Id-Prop + ( set-Metric-Space A) + ( base-point-Σ-Metric-Space A P x) + ( base-point-Σ-Metric-Space A P y)) + ( λ d Nxy → pr1 Nxy) +``` + +### For any `x : A` the emebedding `P x → Σ A P` is an isometry + +```agda +module _ + {la la' lp lp' : Level} + (A : Metric-Space la la') + (P : type-Metric-Space A → Metric-Space lp lp') + (x : type-Metric-Space A) + where + + is-short-emb-fiber-Σ-Metric-Space : + is-short-function-Metric-Space + ( P x) + ( Σ-Metric-Space A P) + ( emb-fiber-Σ-Metric-Space A P x) + is-short-emb-fiber-Σ-Metric-Space d px px' Nxx' = + ( refl , Nxx') + + short-emb-fiber-Σ-Metric-Space : + short-function-Metric-Space (P x) (Σ-Metric-Space A P) + short-emb-fiber-Σ-Metric-Space = + ( emb-fiber-Σ-Metric-Space A P x) , + ( is-short-emb-fiber-Σ-Metric-Space) + + reflects-neighborhood-emb-fiber-Σ-Metric-Space : + (d : ℚ⁺) (px px' : type-Metric-Space (P x)) → + neighborhood-Metric-Space + ( Σ-Metric-Space A P) + ( d) + ( emb-fiber-Σ-Metric-Space A P x px) + ( emb-fiber-Σ-Metric-Space A P x px') → + neighborhood-Metric-Space + ( P x) + ( d) + ( px) + ( px') + reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px' (e , Nxx') = + inv-tr + ( λ e' → + neighborhood-Metric-Space + ( P x) + ( d) + ( tr (type-Metric-Space ∘ P) e' px) + ( px')) + ( axiom-K-is-set + ( is-set-type-Set (set-Metric-Space A)) + ( x) + ( e)) + ( Nxx') + + is-isometry-emb-fiber-Σ-Metric-Space : + is-isometry-Metric-Space + ( P x) + ( Σ-Metric-Space A P) + ( emb-fiber-Σ-Metric-Space A P x) + is-isometry-emb-fiber-Σ-Metric-Space d px px' = + ( is-short-emb-fiber-Σ-Metric-Space d px px') , + ( reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px') + + isometry-emb-fiber-Σ-Metric-Space : + isometry-Metric-Space (P x) (Σ-Metric-Space A P) + isometry-emb-fiber-Σ-Metric-Space = + ( emb-fiber-Σ-Metric-Space A P x) , + ( is-isometry-emb-fiber-Σ-Metric-Space) +``` From d19e390f3b75b76a6ead68df7f25570a9ae78ee5 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 10 Jul 2025 20:08:49 +0200 Subject: [PATCH 047/151] fix links --- src/metric-spaces/disjoint-sums-metric-spaces.lagda.md | 6 +++--- src/metric-spaces/extensional-pseudometric-spaces.lagda.md | 4 +--- tables/metric-spaces.md | 1 - 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index 76c7549c28..75b30b4909 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -48,19 +48,19 @@ open import metric-spaces.triangular-rational-neighborhoods The {{#concept "disjoint sum" Disambiguation="of a type family of metric spaces" Agda=Σ-Metric-Space}} -of a type family `P` of [metric spaces](metric-spaces.metri-spaces.md) over a +of a type family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a metric space `A` is the metric space with underlying type `Σ A P` and the [neighborhood relation](metric-spaces.rational-neighborhoods.md) defined as: `(x , Px)` is `d`-neighbor of `(y , Py)` if and only if `x` is -[equal](foundation.identity-types) to `y` and the +[equal](foundation.identity-types.md) to `y` and the [transport](foundation.transport-along-identifications.md) of `Px` along this identification is a `d`-neighbor of `y` in `P y`. The [projection](foundation.dependent-pair-types.md) on the first component is [locally constant](metric-spaces.locally-constant-functions-metric-spaces.md); for any `x : A` the embedding `P x → Σ A P` is an -[isometry](isometries-metric-spaces.md). +[isometry](metric-spaces.isometries-metric-spaces.md). ## Definitions diff --git a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md index 3e2f93fe26..cc5bb10bd6 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md @@ -40,9 +40,7 @@ if any of the following equivalent condition holds: - 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-premetric-structures.md) -over a set is extensional. +[set](foundation.sets.md). ## Definitions diff --git a/tables/metric-spaces.md b/tables/metric-spaces.md index 3debd441df..e44729ea79 100644 --- a/tables/metric-spaces.md +++ b/tables/metric-spaces.md @@ -3,5 +3,4 @@ | Metric space of Cauchy approximations in a metric space | [`metric-spaces.metric-space-of-cauchy-approximations-metric-spaces`](metric-spaces.metric-space-of-cauchy-approximations-metric-spaces.md) | | Metric space of convergent Cauchy approximations in a metric space | [`metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces`](metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces.md) | | Metric space of rational numbers | [`metric-spaces.metric-space-of-rational-numbers`](metric-spaces.metric-space-of-rational-numbers.md) | -| Metric space of rational numbers with open neighborhoods | [`metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods`](metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods.md) | | Metric space of real numbers | [`real-numbers.metric-space-of-real-numbers`](real-numbers.metric-space-of-real-numbers.md) | From e5d8d068de739e4ee6dd9fb345191ffe8c4be0a5 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 16 Jul 2025 04:53:14 +0200 Subject: [PATCH 048/151] self-review metric-spaces --- .../equality-of-metric-spaces.lagda.md | 6 +++--- .../isometries-metric-spaces.lagda.md | 15 +++++++-------- .../limits-of-sequences-metric-spaces.lagda.md | 7 ++++--- ...approximations-complete-metric-spaces.lagda.md | 2 +- .../metric-space-of-rational-numbers.lagda.md | 2 +- .../preimage-rational-neighborhoods.lagda.md | 8 ++++---- src/metric-spaces/pseudometric-spaces.lagda.md | 2 +- .../short-functions-metric-spaces.lagda.md | 4 ++-- ...ly-continuous-functions-metric-spaces.lagda.md | 4 +--- 9 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index d208e19197..ea2dff4a67 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -93,8 +93,8 @@ module _ isometric-equiv-Metric-Space' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space' = - Σ ( type-function-Metric-Space A B) - ( λ f → (is-equiv f) × (is-isometry-Metric-Space A B f)) + Σ (type-function-Metric-Space A B) + (λ f → (is-equiv f) × (is-isometry-Metric-Space A B f)) ``` ## Properties @@ -160,7 +160,7 @@ module _ (ap (is-isometry-Metric-Space A B) (eq-htpy (λ x → refl)))) ``` -### Isometric equivalence of metric spaces characterize their equalities +### Isometric equivalences of metric spaces characterize their equalities ```agda module _ diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index e976a783d9..ef9be1c1d4 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -121,12 +121,12 @@ module _ where is-isometry-id-Metric-Space : - is-isometry-Metric-Space A A (λ x → x) + is-isometry-Metric-Space A A (id-Metric-Space A) is-isometry-id-Metric-Space d x y = id-iff isometry-id-Metric-Space : isometry-Metric-Space A A isometry-id-Metric-Space = - (λ x → x) , is-isometry-id-Metric-Space + id-Metric-Space A , is-isometry-id-Metric-Space ``` ### Equality of isometries in metric spaces is equivalent to homotopies between their carrier maps @@ -155,8 +155,7 @@ module _ map-equiv equiv-eq-htpy-map-isometry-Metric-Space eq-htpy-map-isometry-Metric-Space : - ( map-isometry-Metric-Space A B f ~ - map-isometry-Metric-Space A B g) → + ( map-isometry-Metric-Space A B f ~ map-isometry-Metric-Space A B g) → (f = g) eq-htpy-map-isometry-Metric-Space = map-inv-equiv equiv-eq-htpy-map-isometry-Metric-Space @@ -316,14 +315,14 @@ module _ module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : type-function-Metric-Space A B) + (I : is-isometry-Metric-Space A B f) + (E : is-equiv f) where is-isometry-map-inv-is-equiv-is-isometry-Metric-Space : - (f : type-function-Metric-Space A B) → - is-isometry-Metric-Space A B f → - (E : is-equiv f) → is-isometry-Metric-Space B A (map-inv-is-equiv E) - is-isometry-map-inv-is-equiv-is-isometry-Metric-Space f I E d x y = + is-isometry-map-inv-is-equiv-is-isometry-Metric-Space d x y = logical-equivalence-reasoning ( neighborhood-Metric-Space B d x y) ↔ ( neighborhood-Metric-Space B d diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index b5f69b7d9c..dbf3156295 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -36,9 +36,10 @@ open import metric-spaces.short-functions-metric-spaces An element `l` of a [metric space](metric-spaces.metric-spaces.md) is the {{#concept "limit" Disambiguation="of a sequence in a metric spaces" WD="limit of a sequence" WDID=Q847204 Agda=is-limit-sequence-Metric-Space}} -of a [sequence in metric spaces](metric-spaces.sequences-metric-spaces.md) if -there exists a function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, `u n` -is in an [`ε`-neighborhood](metric-spaces.rational-neighborhoods.md) of `l`. +of a [sequence in metric spaces](metric-spaces.sequences-metric-spaces.md) `u` +if there exists a function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, +`u n` is in an [`ε`-neighborhood](metric-spaces.rational-neighborhoods.md) of +`l`. ## Definition diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md index 7a6ed6988e..8e0cad8345 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md @@ -143,7 +143,7 @@ module _ ( short-convergent-cauchy-approximation-Complete-Metric-Space) ``` -### The map from a Cauchy approximation in a saturated complete metric space to its limit is short +### The map from a Cauchy approximation in a complete metric space to its limit is short ```agda module _ diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index 470b0390ad..7849ad7b2d 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# The standard metric space of the rational numbers +# The standard metric space of rational numbers ```agda {-# OPTIONS --lossy-unification #-} diff --git a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md index 5958af3217..d79c430d01 100644 --- a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md @@ -25,10 +25,10 @@ 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 +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` +on a type `B` and map `f : A → B` define 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`. diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index c931d9f28d..47feae9dda 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -91,7 +91,7 @@ Pseudometric-Structure l2 A = type-subtype (is-pseudometric-prop-Rational-Neighborhood-Relation A {l2}) ``` -### Pseudometric spaces +### The type of pseudometric spaces ```agda Pseudometric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) diff --git a/src/metric-spaces/short-functions-metric-spaces.lagda.md b/src/metric-spaces/short-functions-metric-spaces.lagda.md index 0f40ee670d..7769aa15f8 100644 --- a/src/metric-spaces/short-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces.lagda.md @@ -120,12 +120,12 @@ module _ where is-short-id-Metric-Space : - is-short-function-Metric-Space A A (λ x → x) + is-short-function-Metric-Space A A (id-Metric-Space A) is-short-id-Metric-Space d x y H = H short-id-Metric-Space : short-function-Metric-Space A A short-id-Metric-Space = - (λ x → x) , is-short-id-Metric-Space + id-Metric-Space A , is-short-id-Metric-Space ``` ### Equality of short functions between metric spaces is characterized by homotopy of their carrier maps diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md index 6cc4a3239a..39b44a3894 100644 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md @@ -82,9 +82,7 @@ module _ ```agda module _ - {l1 l2 l3 l4 : Level} - (X : Metric-Space l1 l2) - (Y : Metric-Space l3 l4) + {l1 l2 l3 l4 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4) where uniformly-continuous-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) From 7a149d1335092f7810cc867ba3ddb39a388f5d32 Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 16 Jul 2025 18:42:03 +0200 Subject: [PATCH 049/151] cleanup --- ...ace-of-cauchy-approximations-complete-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md index 8e0cad8345..1d0b66d6d3 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md @@ -179,7 +179,7 @@ module _ ### The metric space of Cauchy approximations in a complete metric space is complete Given a Cauchy approximation of Cauchy approximations `U : ℚ⁺ → ℚ⁺ → A` in a -saturated complete metric space `A`, we construct its limit as follows: +complete metric space `A`, we construct its limit as follows: 1. for any `η : ℚ⁺`, the partial application `ε ↦ U ε η` is a Cauchy approximation in `A`; From 283050270c3c7c82469e21c29ca2f87091bb185b Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 16 Jul 2025 19:55:09 +0200 Subject: [PATCH 050/151] Swapping the arguments of a Cauchy approximation of Cauchy approximations is an isometric equivalence --- ...uchy-approximations-metric-spaces.lagda.md | 20 +++ ...oximations-complete-metric-spaces.lagda.md | 8 +- ...uchy-approximations-metric-spaces.lagda.md | 162 ++++++++++++++++-- 3 files changed, 170 insertions(+), 20 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 9d75e7190b..4b1af7b4d5 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -11,7 +11,9 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.constant-maps open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.function-types +open import foundation.homotopies open import foundation.identity-types open import foundation.propositions open import foundation.subtypes @@ -153,6 +155,24 @@ module _ eq-comp-map-short-function-cauchy-approximation-Metric-Space = refl ``` +### Homotopic cauchy approximations are equal + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + {f g : cauchy-approximation-Metric-Space A} + where + + eq-htpy-cauchy-approximation-Metric-Space : + map-cauchy-approximation-Metric-Space A f ~ + map-cauchy-approximation-Metric-Space A g → + f = g + eq-htpy-cauchy-approximation-Metric-Space H = + eq-type-subtype + ( is-cauchy-approximation-prop-Metric-Space A) + ( eq-htpy H) +``` + ## References Our definition of Cauchy approximation follows Definition 4.5.5 of diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md index 1d0b66d6d3..b1fe9c66b5 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md @@ -200,7 +200,7 @@ module _ η = limit-cauchy-approximation-Complete-Metric-Space ( A) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( map-swap-cauchy-approximation-Metric-Space ( metric-space-Complete-Metric-Space A) ( U) ( η)) @@ -214,11 +214,11 @@ module _ is-short-limit-cauchy-approximation-Complete-Metric-Space ( A) ( ε +ℚ⁺ δ) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( map-swap-cauchy-approximation-Metric-Space ( metric-space-Complete-Metric-Space A) ( U) ( ε)) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( map-swap-cauchy-approximation-Metric-Space ( metric-space-Complete-Metric-Space A) ( U) ( δ)) @@ -251,7 +251,7 @@ module _ ε δ η = is-limit-limit-cauchy-approximation-Complete-Metric-Space ( A) - ( swap-cauchy-approximation-cauchy-approximations-Metric-Space + ( map-swap-cauchy-approximation-Metric-Space ( metric-space-Complete-Metric-Space A) ( U) ( η)) diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md index 3027c94dcd..488029a18b 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md @@ -10,10 +10,16 @@ module metric-spaces.metric-space-of-cauchy-approximations-metric-spaces where 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.involutions +open import foundation.subtypes open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.dependent-products-metric-spaces +open import metric-spaces.equality-of-metric-spaces +open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.short-functions-metric-spaces open import metric-spaces.subspaces-metric-spaces @@ -80,7 +86,7 @@ module _ is-short-map-short-function-cauchy-approximation-Metric-Space ``` -### The partial application of a Cauchy approximation of Cauchy approximations is a Cauchy approximation +### Swapping the arguments of a Cauchy approximation of Cauchy approximations produces a Cauchy approximation ```agda module _ @@ -89,23 +95,147 @@ module _ ( metric-space-of-cauchy-approximations-Metric-Space A)) where - swap-cauchy-approximation-cauchy-approximations-Metric-Space : + map-swap-map-cauchy-approximation-Metric-Space : + ℚ⁺ → ℚ⁺ → type-Metric-Space A + map-swap-map-cauchy-approximation-Metric-Space η ε = + map-cauchy-approximation-Metric-Space + ( A) + ( map-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) + ( U) + ( ε)) + ( η) + + is-cauchy-map-swap-map-cauchy-approximation-Metric-Space : + (η : ℚ⁺) → + is-cauchy-approximation-Metric-Space + ( A) + ( map-swap-map-cauchy-approximation-Metric-Space η) + is-cauchy-map-swap-map-cauchy-approximation-Metric-Space η ε δ = + is-cauchy-approximation-map-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) + ( U) + ( ε) + ( δ) + ( η) + + map-swap-cauchy-approximation-Metric-Space : ℚ⁺ → cauchy-approximation-Metric-Space A - swap-cauchy-approximation-cauchy-approximations-Metric-Space - η = - ( λ ε → - map-cauchy-approximation-Metric-Space - ( A) - ( map-cauchy-approximation-Metric-Space - ( metric-space-of-cauchy-approximations-Metric-Space A) - ( U) - ( ε)) - ( η)) , - ( λ ε δ → - is-cauchy-approximation-map-cauchy-approximation-Metric-Space + map-swap-cauchy-approximation-Metric-Space η = + ( map-swap-map-cauchy-approximation-Metric-Space η , + is-cauchy-map-swap-map-cauchy-approximation-Metric-Space η) + + is-cauchy-map-swap-cauchy-approximation-Metric-Space : + is-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) + ( map-swap-cauchy-approximation-Metric-Space) + is-cauchy-map-swap-cauchy-approximation-Metric-Space ε δ η = + is-cauchy-approximation-map-cauchy-approximation-Metric-Space + ( A) + ( map-cauchy-approximation-Metric-Space ( metric-space-of-cauchy-approximations-Metric-Space A) ( U) - ( ε) - ( δ) ( η)) + ( ε) + ( δ) + + swap-cauchy-approximation-Metric-Space : + cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) + swap-cauchy-approximation-Metric-Space = + ( map-swap-cauchy-approximation-Metric-Space , + is-cauchy-map-swap-cauchy-approximation-Metric-Space) +``` + +### Swapping the arguments of a Cauchy approximation of Cauchy approximations is an involution + +```agda +module _ + { l1 l2 : Level} (A : Metric-Space l1 l2) + where + + is-involution-swap-cauchy-approximation-Metric-Space : + is-involution + ( swap-cauchy-approximation-Metric-Space A) + is-involution-swap-cauchy-approximation-Metric-Space U = + eq-htpy-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) + ( λ ε → + eq-htpy-cauchy-approximation-Metric-Space + ( A) + ( λ δ → refl)) + + is-equiv-swap-cauchy-approximation-Metric-Space : + is-equiv (swap-cauchy-approximation-Metric-Space A) + is-equiv-swap-cauchy-approximation-Metric-Space = + is-equiv-is-involution + is-involution-swap-cauchy-approximation-Metric-Space + + equiv-swap-cauchy-approximation-Metric-Space : + ( cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) ≃ + ( cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + equiv-swap-cauchy-approximation-Metric-Space = + ( swap-cauchy-approximation-Metric-Space A , + is-equiv-swap-cauchy-approximation-Metric-Space) +``` + +### Swapping the arguments of a Cauchy approximation of Cauchy approximations is a short map + +```agda +module _ + { l1 l2 : Level} (A : Metric-Space l1 l2) + where + + is-short-swap-cauchy-approximation-Metric-Space : + is-short-function-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + ( metric-space-of-cauchy-approximations-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + ( swap-cauchy-approximation-Metric-Space A) + is-short-swap-cauchy-approximation-Metric-Space ε U V Nuv δ η = + Nuv η δ +``` + +### Swapping the arguments of a Cauchy approximation of Cauchy approximations is an isometry + +```agda +module _ + { l1 l2 : Level} (A : Metric-Space l1 l2) + where + + is-isometry-swap-cauchy-approximation-Metric-Space : + is-isometry-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + ( metric-space-of-cauchy-approximations-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + ( swap-cauchy-approximation-Metric-Space A) + is-isometry-swap-cauchy-approximation-Metric-Space ε U V = + ( is-short-swap-cauchy-approximation-Metric-Space A ε U V , + is-short-swap-cauchy-approximation-Metric-Space + ( A) + ( ε) + ( swap-cauchy-approximation-Metric-Space A U) + ( swap-cauchy-approximation-Metric-Space A V)) +``` + +### Swapping the arguments of a Cauchy approximation of Cauchy approximations is an isometric equivalence + +```agda +module _ + { l1 l2 : Level} (A : Metric-Space l1 l2) + where + + isometric-equiv-swap-cauchy-approximation-Metric-Space : + isometric-equiv-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + ( metric-space-of-cauchy-approximations-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A)) + isometric-equiv-swap-cauchy-approximation-Metric-Space = + ( equiv-swap-cauchy-approximation-Metric-Space A , + is-isometry-swap-cauchy-approximation-Metric-Space A) ``` From 00561b5a13822680cd2ef81f74d167e50c89892f Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 16 Jul 2025 20:16:06 +0200 Subject: [PATCH 051/151] canonical isometry from a metric space into its metric space of cauchy approximations (constant cauchy approximations) --- ...uchy-approximations-metric-spaces.lagda.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md index 488029a18b..fe409caef7 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md @@ -57,6 +57,31 @@ module _ ## Properties +### The map `(x : A) ↦ const x` is an isometry between `A` the the metric space of cauchy approximations in `A` + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + is-isometry-const-cauchy-approximation-Metric-Space : + is-isometry-Metric-Space + ( A) + ( metric-space-of-cauchy-approximations-Metric-Space A) + ( const-cauchy-approximation-Metric-Space A) + is-isometry-const-cauchy-approximation-Metric-Space ε x y = + ( λ Nxy η → Nxy) , + ( λ Nxy → Nxy one-ℚ⁺) + + isometry-const-cauchy-approximation-Metric-Space : + isometry-Metric-Space + ( A) + ( metric-space-of-cauchy-approximations-Metric-Space A) + isometry-const-cauchy-approximation-Metric-Space = + ( const-cauchy-approximation-Metric-Space A , + is-isometry-const-cauchy-approximation-Metric-Space) +``` + ### The action of short maps on Cauchy approximations is short ```agda From cb16a0cfeb5a11bd73005c124f6631322f020bbb Mon Sep 17 00:00:00 2001 From: malarbol Date: Wed, 16 Jul 2025 21:15:23 +0200 Subject: [PATCH 052/151] typo --- ...metric-space-of-cauchy-approximations-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md index fe409caef7..d1b8386769 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md @@ -57,7 +57,7 @@ module _ ## Properties -### The map `(x : A) ↦ const x` is an isometry between `A` the the metric space of cauchy approximations in `A` +### The map `(x : A) ↦ const x` is an isometry between `A` and the metric space of cauchy approximations in `A` ```agda module _ From 1467a15e270571984d942411f9d75c4efe9da501 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 18 Jul 2025 03:51:52 +0200 Subject: [PATCH 053/151] more cleanup --- .../cauchy-approximations-metric-spaces.lagda.md | 14 +++++++------- .../equality-of-metric-spaces.lagda.md | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 4b1af7b4d5..846208872c 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -159,18 +159,18 @@ module _ ```agda module _ - {l1 l2 : Level} (A : Metric-Space l1 l2) - {f g : cauchy-approximation-Metric-Space A} + { l1 l2 : Level} (A : Metric-Space l1 l2) + { f g : cauchy-approximation-Metric-Space A} + ( f~g : + map-cauchy-approximation-Metric-Space A f ~ + map-cauchy-approximation-Metric-Space A g) where - eq-htpy-cauchy-approximation-Metric-Space : - map-cauchy-approximation-Metric-Space A f ~ - map-cauchy-approximation-Metric-Space A g → - f = g + eq-htpy-cauchy-approximation-Metric-Space : f = g eq-htpy-cauchy-approximation-Metric-Space H = eq-type-subtype ( is-cauchy-approximation-prop-Metric-Space A) - ( eq-htpy H) + ( eq-htpy f~g) ``` ## References diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index ea2dff4a67..e1c7e1c67b 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -55,7 +55,7 @@ following equivalent concepts: ## Definitions -### Isometric equality between metric spaces +### Isometric equality of metric spaces ```agda module _ @@ -203,15 +203,15 @@ module _ equiv-isometric-equiv-isometric-equiv-Metric-Space' : isometric-equiv-Metric-Space A B ≃ isometric-equiv-Metric-Space' A B equiv-isometric-equiv-isometric-equiv-Metric-Space' = - equiv-tot + ( equiv-tot ( λ f → equiv-tot ( λ e → - equiv-eq (ap (is-isometry-Metric-Space A B) refl))) ∘e - associative-Σ + equiv-eq (ap (is-isometry-Metric-Space A B) refl)))) ∘e + ( associative-Σ ( type-function-Metric-Space A B) ( is-equiv) - ( is-isometry-Metric-Space A B ∘ map-equiv) + ( is-isometry-Metric-Space A B ∘ map-equiv)) ``` ### Isometric equivalences between metric spaces characterize their equality From a8b06dc47bf5429f904f840cdf3d3ef0aedbb499 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 18 Jul 2025 03:56:58 +0200 Subject: [PATCH 054/151] typo --- src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 846208872c..66e7d9c7d2 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -167,7 +167,7 @@ module _ where eq-htpy-cauchy-approximation-Metric-Space : f = g - eq-htpy-cauchy-approximation-Metric-Space H = + eq-htpy-cauchy-approximation-Metric-Space = eq-type-subtype ( is-cauchy-approximation-prop-Metric-Space A) ( eq-htpy f~g) From 51ebc9ef8bec17eea2ea348b5c18bea6eebfb99a Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 02:37:51 +0200 Subject: [PATCH 055/151] fix header --- src/metric-spaces/disjoint-sums-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index 75b30b4909..d640169d50 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -64,7 +64,7 @@ for any `x : A` the embedding `P x → Σ A P` is an ## Definitions -### Dependent sum of metric spaces +### Disjoint sum of metric spaces ```agda module _ From f5f28f11c7d66ef5b016a099890b322a25cc0ff2 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 02:38:05 +0200 Subject: [PATCH 056/151] typo --- src/metric-spaces/extensional-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md index cc5bb10bd6..fcccbe0ea6 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md @@ -31,7 +31,7 @@ open import metric-spaces.similarity-of-elements-pseudometric-spaces A [pseudometric space](metric-spaces.pseudometric-spaces.md) is called {{#concept "extensional" Disambiguation="pseudometric space" Agda=is-extensional-Pseudometric-Space}} -if any of the following equivalent condition holds: +if any of the following equivalent conditions holds: - any [similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) elements are [identical](foundation-core.identity-types.md); From 87ff21c14638c9a42e63d0f4865fff2ba215a665 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 02:50:49 +0200 Subject: [PATCH 057/151] ref binary-relations in headers --- src/metric-spaces/reflexive-rational-neighborhoods.lagda.md | 5 +++-- src/metric-spaces/symmetric-rational-neighborhoods.lagda.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md b/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md index 1fc82e1c0b..b90165c497 100644 --- a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md @@ -21,9 +21,10 @@ open import metric-spaces.rational-neighborhoods ## Idea -A [rational neighborhood](metric-spaces.rational-neighborhoods.md) is +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is {{#concept "reflexive" Disambiguation="rational neighborhood relation" Agda=is-reflexive-Rational-Neighborhood-Relation}} -if any element is in all neighborhoods of itself. +if any element is in all neighborhoods of itself, i.e., if all `ε`-neighborhoods +are reflexive [binary relations](foundation.binary-relations.md). ## Definitions diff --git a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md b/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md index c23e85b6b4..5f1293e7dc 100644 --- a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md @@ -21,9 +21,10 @@ open import metric-spaces.rational-neighborhoods ## Idea -A [rational neighborhood](metric-spaces.rational-neighborhoods.md) is +A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is {{#concept "symmetric" Disambiguation="rational neighborhood relation" Agda=is-symmetric-Rational-Neighborhood-Relation}} -if all neighborhoods are symmetric. +if all `ε`-neighborhoods are symmetric +[binary relations](foundation.binary-relations.md). ## Definitions From 5d0e7af72cbe08329166ea21b553f52bff78ec9e Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 02:56:38 +0200 Subject: [PATCH 058/151] typo --- src/metric-spaces/monotonic-rational-neighborhoods.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md index ab7117e855..9001cf5661 100644 --- a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md @@ -21,7 +21,7 @@ open import metric-spaces.rational-neighborhoods A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is {{#concept "monotonic" Disambiguation="rational neighborhood relation" Agda=is-monotonic-Rational-Neighborhood-Relation}} -if any `d₁`-neighborhoods are `d₂`-neighborhoods for `d₁ < d₂`. +if all `d₁`-neighborhoods are `d₂`-neighborhoods for `d₁ < d₂`. ## Definitions From 59d3580a79aebb4ee1d21b4966f5ac357340007e Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 03:03:08 +0200 Subject: [PATCH 059/151] rephrase ~at all points~ -> everywhere --- .../uniformly-continuous-functions-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md index 39b44a3894..8874ba1b22 100644 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md @@ -106,7 +106,7 @@ module _ ## Properties -### Uniformly continuous functions are continuous at all points +### Uniformly continuous functions are continuous everywhere ```agda module _ From 3c9fb4e07daaf5df0218cde6b2847239690f1336 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 03:10:33 +0200 Subject: [PATCH 060/151] abstract+lossy --- ...y-of-elements-pseudometric-spaces.lagda.md | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index dbdeeed6eb..299bc82ed4 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -1,6 +1,8 @@ # Similarity of elements in pseudometric spaces ```agda +{-# OPTIONS --lossy-unification #-} + module metric-spaces.similarity-of-elements-pseudometric-spaces where ``` @@ -118,24 +120,25 @@ module _ {l1 l2 : Level} (A : Pseudometric-Space l1 l2) where - transitive-sim-Pseudometric-Space : - (x y z : type-Pseudometric-Space A) → - sim-Pseudometric-Space A y z → - sim-Pseudometric-Space A x y → - sim-Pseudometric-Space A x z - transitive-sim-Pseudometric-Space x y z Nyz Nxy d = - tr - ( is-upper-bound-dist-Pseudometric-Space A x z) - ( eq-add-split-ℚ⁺ d) - ( triangular-neighborhood-Pseudometric-Space - ( A) - ( x) - ( y) - ( z) - ( left-summand-split-ℚ⁺ d) - ( right-summand-split-ℚ⁺ d) - ( Nyz (right-summand-split-ℚ⁺ d)) - ( Nxy (left-summand-split-ℚ⁺ d))) + abstract + transitive-sim-Pseudometric-Space : + (x y z : type-Pseudometric-Space A) → + sim-Pseudometric-Space A y z → + sim-Pseudometric-Space A x y → + sim-Pseudometric-Space A x z + transitive-sim-Pseudometric-Space x y z Nyz Nxy d = + tr + ( is-upper-bound-dist-Pseudometric-Space A x z) + ( eq-add-split-ℚ⁺ d) + ( triangular-neighborhood-Pseudometric-Space + ( 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 From dd8f2ef9c9b20b5e5e36827f17b7b86a1a768b80 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 19:42:21 +0200 Subject: [PATCH 061/151] add saturation of neighborhood relations ideas --- .../saturated-rational-neighborhoods.lagda.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/metric-spaces/saturated-rational-neighborhoods.lagda.md b/src/metric-spaces/saturated-rational-neighborhoods.lagda.md index b3875fbe99..6b5d849bf5 100644 --- a/src/metric-spaces/saturated-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/saturated-rational-neighborhoods.lagda.md @@ -30,6 +30,7 @@ open import foundation.univalence open import foundation.universe-levels open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.ordering-rational-neighborhoods open import metric-spaces.rational-neighborhoods ``` @@ -53,6 +54,19 @@ Or, equivalently if for any `(x y : A)`, the subset of - For any `ε : ℚ⁺`, if `ε + δ` is an upper bound of the distance between `x` and `y` for all `(δ : ℚ⁺)`, then so is `ε`. +Any rational neighborhood `N` can be **saturated** by + +```text +saturate-N ε x y = (δ : ℚ⁺) → N (ε +ℚ⁺ δ) x y +``` + +This is the +{{#concept "saturation" Disambiguation="rational neighborhood relation" Agda=saturate-Rational-Neighborhood-Relation}} +of a rational neighborhood relation. The saturation of a rational neighborhood +relation is **saturated** and +[finer](metric-spaces.ordering-rational-neighborhoods.md) than all saturated +rational neighborhood coarser than it. + ## Definitions ### The property of being a saturated rational neighborhood relation @@ -124,6 +138,57 @@ module _ ( H (left-summand-split-ℚ⁺ δ) (right-summand-split-ℚ⁺ δ)) ``` +### The saturation of a rational neighborhood relation is finer than all saturated rational neighborhood relations coarser than it + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (N : Rational-Neighborhood-Relation l2 A) + {l3 : Level} (B : Rational-Neighborhood-Relation l3 A) + (saturated-B : is-saturated-Rational-Neighborhood-Relation B) + where + + leq-saturate-leq-is-saturated-Neighborhood-Relation : + leq-Rational-Neighborhood-Relation N B → + leq-Rational-Neighborhood-Relation + ( saturate-Rational-Neighborhood-Relation N) + ( B) + leq-saturate-leq-is-saturated-Neighborhood-Relation H d x y Nxy = + saturated-B + ( d) + ( x) + ( y) + ( λ δ → H (d +ℚ⁺ δ) x y (Nxy δ)) +``` + +### Saturation of a neighborhood relation is idempotent + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : Rational-Neighborhood-Relation l2 A) + where + + is-idempotent-saturate-Rational-Neighborhood-Relation : + saturate-Rational-Neighborhood-Relation + (saturate-Rational-Neighborhood-Relation B) = + saturate-Rational-Neighborhood-Relation B + is-idempotent-saturate-Rational-Neighborhood-Relation = + antisymmetric-leq-Rational-Neighborhood-Relation + ( saturate-Rational-Neighborhood-Relation + ( saturate-Rational-Neighborhood-Relation B)) + ( saturate-Rational-Neighborhood-Relation B) + ( leq-saturate-leq-is-saturated-Neighborhood-Relation + ( saturate-Rational-Neighborhood-Relation B) + ( saturate-Rational-Neighborhood-Relation B) + ( is-saturated-saturate-Rational-Neighborhood-Relation B) + ( refl-leq-Rational-Neighborhood-Relation + ( saturate-Rational-Neighborhood-Relation B))) + ( λ d x y H δ₁ δ₂ → + inv-tr + ( is-upper-bound-dist-Rational-Neighborhood-Relation B x y) + ( associative-add-ℚ⁺ d δ₁ δ₂) + ( H (δ₁ +ℚ⁺ δ₂))) +``` + ### In a monotonic saturated rational neighborhood relation, `N ε x y ⇔ (∀ δ → ε < δ → N δ x y)` ```agda From 16afdedcd8100a45e36a7db2aef2868d54cad213 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 20:23:01 +0200 Subject: [PATCH 062/151] a characterization complete metric spaces --- ...oximations-complete-metric-spaces.lagda.md | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md index b1fe9c66b5..f5837b183e 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md @@ -12,10 +12,13 @@ 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.logical-equivalences +open import foundation.propositional-truncations open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces +open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.dependent-products-metric-spaces open import metric-spaces.equality-of-metric-spaces open import metric-spaces.isometries-metric-spaces @@ -287,3 +290,73 @@ module _ ( metric-space-of-cauchy-approximations-Complete-Metric-Space A) , ( is-complete-metric-space-of-cauchy-approximations-Complete-Metric-Space A) ``` + +### A metric space is complete if and only if its metric space of Cauchy approximations is complete + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + is-complete-is-complete-metric-space-of-cauchy-approximations-Metric-Space : + is-complete-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) → + is-complete-Metric-Space A + is-complete-is-complete-metric-space-of-cauchy-approximations-Metric-Space + H f = + rec-trunc-Prop + ( is-convergent-prop-cauchy-approximation-Metric-Space A f) + ( λ d → + ( map-cauchy-approximation-Metric-Space A lim-const-map-f d) , + ( is-lim-f-lim-const-map-f d)) + ( is-inhabited-ℚ⁺) + where + + const-map-f : + ℚ⁺ → cauchy-approximation-Metric-Space A + const-map-f = + ( const-cauchy-approximation-Metric-Space A) ∘ + ( map-cauchy-approximation-Metric-Space A f) + + is-cauchy-const-map-f : + is-cauchy-approximation-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) + ( const-map-f) + is-cauchy-const-map-f ε δ d = + is-cauchy-approximation-map-cauchy-approximation-Metric-Space + ( A) + ( f) + ( ε) + ( δ) + + lim-const-map-f : + cauchy-approximation-Metric-Space A + lim-const-map-f = + limit-cauchy-approximation-Complete-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A , H) + ( const-map-f , is-cauchy-const-map-f) + + is-lim-f-lim-const-map-f : + (d : ℚ⁺) → + is-limit-cauchy-approximation-Metric-Space + ( A) + ( f) + ( map-cauchy-approximation-Metric-Space A lim-const-map-f d) + is-lim-f-lim-const-map-f d ε δ = + is-limit-limit-cauchy-approximation-Complete-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A , H) + ( const-map-f , is-cauchy-const-map-f) + ( ε) + ( δ) + ( d) + + iff-is-complete-is-complete-metric-space-of-cauchy-approximations-Metric-Space : + is-complete-Metric-Space + ( metric-space-of-cauchy-approximations-Metric-Space A) ↔ + is-complete-Metric-Space A + iff-is-complete-is-complete-metric-space-of-cauchy-approximations-Metric-Space + = + ( is-complete-is-complete-metric-space-of-cauchy-approximations-Metric-Space) , + ( is-complete-metric-space-of-cauchy-approximations-Complete-Metric-Space ∘ + pair A) +``` From 5e3715d847bff7a779f474f980ef9c9d5018bf94 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 25 Jul 2025 21:00:14 +0200 Subject: [PATCH 063/151] reference dist-Q in Idea header of metric-space-Q --- src/metric-spaces/metric-space-of-rational-numbers.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index 7849ad7b2d..bf63cb4ca5 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -61,8 +61,8 @@ open import metric-spaces.triangular-rational-neighborhoods [rational numbers](elementary-number-theory.rational-numbers.md) induces a [rational neighborhood relation](metric-spaces.rational-neighborhoods.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 +if the [distance](elementary-number-theory.distance-rational-numbers.md) between +`x` and `y` is less than or equal to `d`. This is a [metric structure](metric-spaces.metric-spaces.md) on `ℚ` that defines the {{#concept "standard metric space of rational numbers" Agda=metric-space-ℚ}}. From c43683f8f480905481da2f39842d3c08a1d9b5c2 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 27 Jul 2025 20:33:09 +0200 Subject: [PATCH 064/151] Cauchy approximations and limits in pseudometric spaces --- src/metric-spaces.lagda.md | 2 + ...pproximations-pseudometric-spaces.lagda.md | 126 +++++++++++++++++ ...pproximations-pseudometric-spaces.lagda.md | 131 ++++++++++++++++++ 3 files changed, 259 insertions(+) create mode 100644 src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md create mode 100644 src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 34471f26da..8ce3891a73 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-pseudometric-spaces public open import metric-spaces.cauchy-sequences-complete-metric-spaces public open import metric-spaces.cauchy-sequences-metric-spaces public open import metric-spaces.complete-metric-spaces public @@ -65,6 +66,7 @@ open import metric-spaces.functor-category-set-functions-isometry-metric-spaces open import metric-spaces.functor-category-short-isometry-metric-spaces public open import metric-spaces.isometries-metric-spaces public open import metric-spaces.limits-of-cauchy-approximations-metric-spaces public +open import metric-spaces.limits-of-cauchy-approximations-pseudometric-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.lipschitz-functions-metric-spaces public diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..2aaf47abde --- /dev/null +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -0,0 +1,126 @@ +# Cauchy approximations in pseudometric spaces + +```agda +module metric-spaces.cauchy-approximations-pseudometric-spaces 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-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.pseudometric-spaces +``` + +
+ +## Idea + +A +{{#concept "Cauchy approximation" Disambiguation="in a pseudometric space" Agda=is-cauchy-approximation-Pseudometric-Space}} +in a [pseudometric space](pseudometric-spaces.pseudometric-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.rational-neighborhoods.md), i.e. the +distance between `f ε` and `f δ` is bounded by `ε + δ`. + +## Definitions + +### Cauchy approximations in pseudometric spaces + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + where + + is-cauchy-approximation-prop-Pseudometric-Space : + (ℚ⁺ → type-Pseudometric-Space A) → Prop l2 + is-cauchy-approximation-prop-Pseudometric-Space f = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( ℚ⁺) + ( λ δ → + neighborhood-prop-Pseudometric-Space A (ε +ℚ⁺ δ) (f ε) (f δ))) + + is-cauchy-approximation-Pseudometric-Space : + (ℚ⁺ → type-Pseudometric-Space A) → UU l2 + is-cauchy-approximation-Pseudometric-Space = + type-Prop ∘ is-cauchy-approximation-prop-Pseudometric-Space + + cauchy-approximation-Pseudometric-Space : UU (l1 ⊔ l2) + cauchy-approximation-Pseudometric-Space = + type-subtype is-cauchy-approximation-prop-Pseudometric-Space +``` + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (f : cauchy-approximation-Pseudometric-Space A) + where + + map-cauchy-approximation-Pseudometric-Space : + ℚ⁺ → type-Pseudometric-Space A + map-cauchy-approximation-Pseudometric-Space = pr1 f + + is-cauchy-approximation-map-cauchy-approximation-Pseudometric-Space : + (ε δ : ℚ⁺) → + neighborhood-Pseudometric-Space + ( A) + ( ε +ℚ⁺ δ) + ( map-cauchy-approximation-Pseudometric-Space ε) + ( map-cauchy-approximation-Pseudometric-Space δ) + is-cauchy-approximation-map-cauchy-approximation-Pseudometric-Space = pr2 f +``` + +## Properties + +### Constant maps in pseudometric spaces are Cauchy approximations + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (x : type-Pseudometric-Space A) + where + + const-cauchy-approximation-Pseudometric-Space : + cauchy-approximation-Pseudometric-Space A + const-cauchy-approximation-Pseudometric-Space = + (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Pseudometric-Space A (ε +ℚ⁺ δ) x) +``` + +### Homotopic cauchy approximations are equal + +```agda +module _ + { l1 l2 : Level} (A : Pseudometric-Space l1 l2) + { f g : cauchy-approximation-Pseudometric-Space A} + ( f~g : + map-cauchy-approximation-Pseudometric-Space A f ~ + map-cauchy-approximation-Pseudometric-Space A g) + where + + eq-htpy-cauchy-approximation-Pseudometric-Space : f = g + eq-htpy-cauchy-approximation-Pseudometric-Space = + eq-type-subtype + ( is-cauchy-approximation-prop-Pseudometric-Space A) + ( eq-htpy f~g) +``` + +## References + +Our definition of Cauchy approximation follows Definition 4.5.5 of +{{#cite Booij20PhD}} and Definition 11.2.10 of {{#cite UF13}}. + +{{#bibliography}} diff --git a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..914ce5bb27 --- /dev/null +++ b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md @@ -0,0 +1,131 @@ +# Limits of Cauchy approximations in pseudometric spaces + +```agda +module metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces 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-pseudometric-spaces +open import metric-spaces.pseudometric-spaces +open import metric-spaces.similarity-of-elements-pseudometric-spaces +``` + +
+ +## Idea + +A +[Cauchy approximation](metric-spaces.cauchy-approximations-pseudometric-spaces.md) +`f : ℚ⁺ → A` in a [pseudometric space](metric-spaces.pseudometric-spaces.md) `A` +has a +{{#concept "limit" Disambiguation="of a Cauchy approximation in a pseudometric space Agda=is-limit-cauchy-approximation-Pseudometric-Space}} +`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 pseudometric space + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (f : cauchy-approximation-Pseudometric-Space A) + where + + is-limit-cauchy-approximation-prop-Pseudometric-Space : + type-Pseudometric-Space A → Prop l2 + is-limit-cauchy-approximation-prop-Pseudometric-Space lim = + Π-Prop + ( ℚ⁺) + ( λ ε → + Π-Prop + ( ℚ⁺) + ( λ δ → + neighborhood-prop-Pseudometric-Space + ( A) + ( ε +ℚ⁺ δ) + ( map-cauchy-approximation-Pseudometric-Space A f ε) + ( lim))) + + is-limit-cauchy-approximation-Pseudometric-Space : + type-Pseudometric-Space A → UU l2 + is-limit-cauchy-approximation-Pseudometric-Space = + type-Prop ∘ is-limit-cauchy-approximation-prop-Pseudometric-Space +``` + +## Properties + +### Limits of a Cauchy approximations in a pseudometric space are similar + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + (f : cauchy-approximation-Pseudometric-Space A) + (x y : type-Pseudometric-Space A) + where + + all-sim-is-limit-cauchy-approximation-Pseudometric-Space : + is-limit-cauchy-approximation-Pseudometric-Space A f x → + is-limit-cauchy-approximation-Pseudometric-Space A f y → + sim-Pseudometric-Space A x y + all-sim-is-limit-cauchy-approximation-Pseudometric-Space 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-Pseudometric-Space A f θ + + Nεx : neighborhood-Pseudometric-Space A ε fθ x + Nεx = + tr + ( is-upper-bound-dist-Pseudometric-Space A fθ x) + ( right-diff-law-add-ℚ⁺ θ ε θ<ε) + ( lim-x θ ε') + + Nδy : neighborhood-Pseudometric-Space A δ fθ y + Nδy = + tr + ( is-upper-bound-dist-Pseudometric-Space A fθ y) + ( right-diff-law-add-ℚ⁺ θ δ θ<δ) + ( lim-y θ δ') + + Nxy : neighborhood-Pseudometric-Space A (ε +ℚ⁺ δ) x y + Nxy = + triangular-neighborhood-Pseudometric-Space + ( A) + ( x) + ( fθ) + ( y) + ( ε) + ( δ) + ( Nδy) + ( symmetric-neighborhood-Pseudometric-Space A ε fθ x Nεx) + in + tr + ( is-upper-bound-dist-Pseudometric-Space A x y) + ( ε+δ=d) + ( Nxy) +``` + +## References + +Our definition of limit of Cauchy approximation follows Definition 11.2.10 of +{{#cite UF13}}. + +{{#bibliography}} From c45af4a7b3c43d257f8724ff246a99d902107b0d Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 28 Jul 2025 00:19:30 +0200 Subject: [PATCH 065/151] fix link --- .../cauchy-approximations-pseudometric-spaces.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 2aaf47abde..90deaf3056 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -28,9 +28,9 @@ open import metric-spaces.pseudometric-spaces A {{#concept "Cauchy approximation" Disambiguation="in a pseudometric space" Agda=is-cauchy-approximation-Pseudometric-Space}} -in a [pseudometric space](pseudometric-spaces.pseudometric-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 +in a [pseudometric space](metric-spaces.pseudometric-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.rational-neighborhoods.md), i.e. the distance between `f ε` and `f δ` is bounded by `ε + δ`. From 7f6a7cb975651003409d7774dcf8d943946582d1 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 7 Aug 2025 19:44:29 +0200 Subject: [PATCH 066/151] isometries of pseudometric spaces Co-authored-by: Louis Wasserman --- src/metric-spaces.lagda.md | 2 + .../functions-pseudometric-spaces.lagda.md | 48 +++ .../isometries-metric-spaces.lagda.md | 164 +++----- .../isometries-pseudometric-spaces.lagda.md | 395 ++++++++++++++++++ .../pseudometric-spaces.lagda.md | 1 - 5 files changed, 501 insertions(+), 109 deletions(-) create mode 100644 src/metric-spaces/functions-pseudometric-spaces.lagda.md create mode 100644 src/metric-spaces/isometries-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 8ce3891a73..9803e0b30f 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -62,9 +62,11 @@ open import metric-spaces.elements-at-bounded-distance-metric-spaces public open import metric-spaces.equality-of-metric-spaces public open import metric-spaces.extensional-pseudometric-spaces public open import metric-spaces.functions-metric-spaces public +open import metric-spaces.functions-pseudometric-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 open import metric-spaces.isometries-metric-spaces public +open import metric-spaces.isometries-pseudometric-spaces public open import metric-spaces.limits-of-cauchy-approximations-metric-spaces public open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces public open import metric-spaces.limits-of-functions-metric-spaces public diff --git a/src/metric-spaces/functions-pseudometric-spaces.lagda.md b/src/metric-spaces/functions-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..fa20b77444 --- /dev/null +++ b/src/metric-spaces/functions-pseudometric-spaces.lagda.md @@ -0,0 +1,48 @@ +# Functions between pseudometric spaces + +```agda +module metric-spaces.functions-pseudometric-spaces where +``` + +
Imports + +```agda +open import foundation.function-types +open import foundation.universe-levels + +open import metric-spaces.pseudometric-spaces +``` + +
+ +## Idea + +{{#concept "Functions" Disambiguation="between pseudometric spaces" Agda=type-function-Pseudometric-Space}} +between [pseudometric spaces](metric-spaces.pseudometric-spaces.md) are +functions between their carrier types. + +## Definitions + +### The type of functions between pseudometric spaces + +```agda +module _ + {lx lx' ly ly' : Level} + (X : Pseudometric-Space lx lx') (Y : Pseudometric-Space ly ly') + where + + type-function-Pseudometric-Space : UU (lx ⊔ ly) + type-function-Pseudometric-Space = + type-Pseudometric-Space X → type-Pseudometric-Space Y +``` + +### The identity function on a pseudometric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + id-Pseudometric-Space : type-function-Pseudometric-Space M M + id-Pseudometric-Space = id +``` diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index ef9be1c1d4..f65c6e9fec 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -9,27 +9,24 @@ module metric-spaces.isometries-metric-spaces where ```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.functions-metric-spaces +open import metric-spaces.isometries-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods ``` @@ -37,15 +34,13 @@ 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 +An {{#concept "isometry" Disambiguation="between metric spaces" Agda=is-isometry-Metric-Space}} -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`. +between two [metric spaces](metric-spaces.metric-spaces.md) is an +[isometry](metric-spaces.isometries-pseudometric-spaces.md) between their +[pseudometric spaces](metric-spaces.pseudometric-spaces.md), 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 @@ -60,11 +55,10 @@ module _ is-isometry-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ l2') is-isometry-prop-Metric-Space = - Eq-prop-Rational-Neighborhood-Relation - ( neighborhood-prop-Metric-Space A) - ( preimage-Rational-Neighborhood-Relation - ( f) - ( neighborhood-prop-Metric-Space B)) + is-isometry-prop-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) is-isometry-Metric-Space : UU (l1 ⊔ l2 ⊔ l2') is-isometry-Metric-Space = @@ -142,9 +136,9 @@ module _ (f = g) ≃ (map-isometry-Metric-Space A B f ~ map-isometry-Metric-Space A B g) equiv-eq-htpy-map-isometry-Metric-Space = - equiv-funext ∘e - extensionality-type-subtype' - ( is-isometry-prop-Metric-Space A B) + equiv-eq-htpy-map-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ( f) ( g) @@ -218,14 +212,11 @@ module _ isometry-Metric-Space B C → isometry-Metric-Space A B → isometry-Metric-Space A C - comp-isometry-Metric-Space g f = - ( map-isometry-Metric-Space B C g ∘ - map-isometry-Metric-Space A B f) , - ( is-isometry-comp-is-isometry-Metric-Space - ( map-isometry-Metric-Space B C g) - ( map-isometry-Metric-Space A B f) - ( is-isometry-map-isometry-Metric-Space B C g) - ( is-isometry-map-isometry-Metric-Space A B f)) + comp-isometry-Metric-Space = + comp-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( pseudometric-Metric-Space C) ``` ### Unit laws for composition of isometries between metric spaces @@ -244,17 +235,10 @@ module _ ( f)) = ( f) left-unit-law-comp-isometry-Metric-Space = - eq-htpy-map-isometry-Metric-Space - ( A) - ( B) - ( comp-isometry-Metric-Space - ( A) - ( B) - ( B) - (isometry-id-Metric-Space B) - ( f)) + left-unit-law-comp-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ( f) - ( λ x → refl) right-unit-law-comp-isometry-Metric-Space : ( comp-isometry-Metric-Space A A B @@ -262,17 +246,10 @@ module _ ( isometry-id-Metric-Space A)) = ( f) right-unit-law-comp-isometry-Metric-Space = - eq-htpy-map-isometry-Metric-Space - ( A) - ( B) + right-unit-law-comp-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ( f) - ( comp-isometry-Metric-Space - ( A) - ( A) - ( B) - ( f) - ( isometry-id-Metric-Space A)) - ( λ x → refl) ``` ### Associativity of composition of isometries between metric spaces @@ -297,16 +274,14 @@ module _ ( h) ( comp-isometry-Metric-Space A B C g f)) associative-comp-isometry-Metric-Space = - eq-htpy-map-isometry-Metric-Space - ( A) - ( D) - ( comp-isometry-Metric-Space A B D - ( comp-isometry-Metric-Space B C D h g) - ( f)) - ( comp-isometry-Metric-Space A C D - ( h) - ( comp-isometry-Metric-Space A B C g f)) - ( λ x → refl) + associative-comp-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( pseudometric-Metric-Space C) + ( pseudometric-Metric-Space D) + ( h) + ( g) + ( f) ``` ### The inverse of an isometric equivalence is an isometry @@ -322,26 +297,13 @@ module _ is-isometry-map-inv-is-equiv-is-isometry-Metric-Space : is-isometry-Metric-Space B A (map-inv-is-equiv E) - is-isometry-map-inv-is-equiv-is-isometry-Metric-Space d x y = - logical-equivalence-reasoning - ( neighborhood-Metric-Space B d x y) - ↔ ( neighborhood-Metric-Space B d - ( f (map-inv-is-equiv E x)) - ( f (map-inv-is-equiv E y))) - by - binary-tr - ( λ u v → - ( neighborhood-Metric-Space B d x y) ↔ - ( neighborhood-Metric-Space 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 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)) + is-isometry-map-inv-is-equiv-is-isometry-Metric-Space = + is-isometry-map-inv-is-equiv-is-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) + ( I) + ( E) module _ {l1 l2 l1' l2' : Level} @@ -353,13 +315,11 @@ module _ isometry-inv-is-equiv-isometry-Metric-Space : isometry-Metric-Space B A isometry-inv-is-equiv-isometry-Metric-Space = - ( map-inv-is-equiv E) , - ( is-isometry-map-inv-is-equiv-is-isometry-Metric-Space - ( A) - ( B) - ( map-isometry-Metric-Space A B f) - ( is-isometry-map-isometry-Metric-Space A B f) - ( E)) + isometry-inv-is-equiv-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) + ( E) is-section-isometry-inv-is-equiv-isometry-Metric-Space : ( comp-isometry-Metric-Space @@ -370,17 +330,11 @@ module _ isometry-inv-is-equiv-isometry-Metric-Space) = ( isometry-id-Metric-Space B) is-section-isometry-inv-is-equiv-isometry-Metric-Space = - eq-htpy-map-isometry-Metric-Space - ( B) - ( B) - ( comp-isometry-Metric-Space - B - A - B - f - isometry-inv-is-equiv-isometry-Metric-Space) - ( isometry-id-Metric-Space B) - ( is-section-map-inv-is-equiv E) + is-section-isometry-inv-is-equiv-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) + ( E) is-retraction-isometry-inv-is-equiv-isometry-Metric-Space : ( comp-isometry-Metric-Space @@ -391,17 +345,11 @@ module _ f) = ( isometry-id-Metric-Space A) is-retraction-isometry-inv-is-equiv-isometry-Metric-Space = - eq-htpy-map-isometry-Metric-Space - ( A) - ( A) - ( comp-isometry-Metric-Space - A - B - A - isometry-inv-is-equiv-isometry-Metric-Space - f) - ( isometry-id-Metric-Space A) - ( is-retraction-map-inv-is-equiv E) + is-retraction-isometry-inv-is-equiv-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) + ( E) ``` ### Any isometry between metric spaces is an embedding diff --git a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..a98b079883 --- /dev/null +++ b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md @@ -0,0 +1,395 @@ +# Isometries between pseudometric spaces + +```agda +module metric-spaces.isometries-pseudometric-spaces 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.equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.sequences +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.functions-pseudometric-spaces +open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.pseudometric-spaces +open import metric-spaces.rational-neighborhoods +``` + +
+ +## Idea + +A [function](metric-spaces.functions-pseudometric-spaces.md) between +[pseudometric spaces](metric-spaces.pseudometric-spaces.md) is an +{{#concept "isometry" Disambiguation="between pseudometric spaces" Agda=is-isometry-Pseudometric-Space}} +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 pseudometric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : type-function-Pseudometric-Space A B) + where + + is-isometry-prop-Pseudometric-Space : Prop (l1 ⊔ l2 ⊔ l2') + is-isometry-prop-Pseudometric-Space = + Eq-prop-Rational-Neighborhood-Relation + ( neighborhood-prop-Pseudometric-Space A) + ( preimage-Rational-Neighborhood-Relation + ( f) + ( neighborhood-prop-Pseudometric-Space B)) + + is-isometry-Pseudometric-Space : UU (l1 ⊔ l2 ⊔ l2') + is-isometry-Pseudometric-Space = + type-Prop is-isometry-prop-Pseudometric-Space + + is-prop-is-isometry-Pseudometric-Space : + is-prop is-isometry-Pseudometric-Space + is-prop-is-isometry-Pseudometric-Space = + is-prop-type-Prop is-isometry-prop-Pseudometric-Space +``` + +### The type of isometries between metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + where + + isometry-Pseudometric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + isometry-Pseudometric-Space = + type-subtype + ( is-isometry-prop-Pseudometric-Space A B) + +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : isometry-Pseudometric-Space A B) + where + + map-isometry-Pseudometric-Space : type-function-Pseudometric-Space A B + map-isometry-Pseudometric-Space = pr1 f + + is-isometry-map-isometry-Pseudometric-Space : + is-isometry-Pseudometric-Space A B map-isometry-Pseudometric-Space + is-isometry-map-isometry-Pseudometric-Space = pr2 f +``` + +## Properties + +### The identity function on a pseudometric space is an isometry + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + where + + is-isometry-id-Pseudometric-Space : + is-isometry-Pseudometric-Space A A (id-Pseudometric-Space A) + is-isometry-id-Pseudometric-Space d x y = id-iff + + isometry-id-Pseudometric-Space : isometry-Pseudometric-Space A A + isometry-id-Pseudometric-Space = + id-Pseudometric-Space A , is-isometry-id-Pseudometric-Space +``` + +### Equality of isometries in pseudometric spaces is equivalent to homotopies between their carrier maps + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f g : isometry-Pseudometric-Space A B) + where + + equiv-eq-htpy-map-isometry-Pseudometric-Space : + ( f = g) ≃ + ( map-isometry-Pseudometric-Space A B f ~ + map-isometry-Pseudometric-Space A B g) + equiv-eq-htpy-map-isometry-Pseudometric-Space = + equiv-funext ∘e + extensionality-type-subtype' + ( is-isometry-prop-Pseudometric-Space A B) + ( f) + ( g) + + htpy-eq-map-isometry-Pseudometric-Space : + ( f = g) → + ( map-isometry-Pseudometric-Space A B f ~ + map-isometry-Pseudometric-Space A B g) + htpy-eq-map-isometry-Pseudometric-Space = + map-equiv equiv-eq-htpy-map-isometry-Pseudometric-Space + + eq-htpy-map-isometry-Pseudometric-Space : + ( map-isometry-Pseudometric-Space A B f ~ + map-isometry-Pseudometric-Space A B g) → + ( f = g) + eq-htpy-map-isometry-Pseudometric-Space = + map-inv-equiv equiv-eq-htpy-map-isometry-Pseudometric-Space +``` + +### An isometry preserves and reflects neighborhoods + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : isometry-Pseudometric-Space A B) + where + + preserves-neighborhood-map-isometry-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space A) → + neighborhood-Pseudometric-Space A d x y → + neighborhood-Pseudometric-Space + ( B) + ( d) + ( map-isometry-Pseudometric-Space A B f x) + ( map-isometry-Pseudometric-Space A B f y) + preserves-neighborhood-map-isometry-Pseudometric-Space d x y = + forward-implication + ( is-isometry-map-isometry-Pseudometric-Space A B f d x y) + + reflects-neighborhood-map-isometry-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space A) → + neighborhood-Pseudometric-Space + ( B) + ( d) + ( map-isometry-Pseudometric-Space A B f x) + ( map-isometry-Pseudometric-Space A B f y) → + neighborhood-Pseudometric-Space A d x y + reflects-neighborhood-map-isometry-Pseudometric-Space d x y = + backward-implication + ( is-isometry-map-isometry-Pseudometric-Space A B f d x y) +``` + +### Composition of isometries + +```agda +module _ + {l1a l2a l1b l2b l1c l2c : Level} + (A : Pseudometric-Space l1a l2a) + (B : Pseudometric-Space l1b l2b) + (C : Pseudometric-Space l1c l2c) + where + + is-isometry-comp-is-isometry-Pseudometric-Space : + (g : type-function-Pseudometric-Space B C) → + (f : type-function-Pseudometric-Space A B) → + is-isometry-Pseudometric-Space B C g → + is-isometry-Pseudometric-Space A B f → + is-isometry-Pseudometric-Space A C (g ∘ f) + is-isometry-comp-is-isometry-Pseudometric-Space g f H K d x y = + H d (f x) (f y) ∘iff K d x y + + comp-isometry-Pseudometric-Space : + isometry-Pseudometric-Space B C → + isometry-Pseudometric-Space A B → + isometry-Pseudometric-Space A C + comp-isometry-Pseudometric-Space g f = + ( map-isometry-Pseudometric-Space B C g ∘ + map-isometry-Pseudometric-Space A B f) , + ( is-isometry-comp-is-isometry-Pseudometric-Space + ( map-isometry-Pseudometric-Space B C g) + ( map-isometry-Pseudometric-Space A B f) + ( is-isometry-map-isometry-Pseudometric-Space B C g) + ( is-isometry-map-isometry-Pseudometric-Space A B f)) +``` + +### Unit laws for composition of isometries between pseudometric spaces + +```agda +module _ + {l1a l2a l1b l2b : Level} + (A : Pseudometric-Space l1a l2a) + (B : Pseudometric-Space l1b l2b) + (f : isometry-Pseudometric-Space A B) + where + + left-unit-law-comp-isometry-Pseudometric-Space : + ( comp-isometry-Pseudometric-Space A B B + (isometry-id-Pseudometric-Space B) + ( f)) = + ( f) + left-unit-law-comp-isometry-Pseudometric-Space = + eq-htpy-map-isometry-Pseudometric-Space + ( A) + ( B) + ( comp-isometry-Pseudometric-Space + ( A) + ( B) + ( B) + (isometry-id-Pseudometric-Space B) + ( f)) + ( f) + ( λ x → refl) + + right-unit-law-comp-isometry-Pseudometric-Space : + ( comp-isometry-Pseudometric-Space A A B + ( f) + ( isometry-id-Pseudometric-Space A)) = + ( f) + right-unit-law-comp-isometry-Pseudometric-Space = + eq-htpy-map-isometry-Pseudometric-Space + ( A) + ( B) + ( f) + ( comp-isometry-Pseudometric-Space + ( A) + ( A) + ( B) + ( f) + ( isometry-id-Pseudometric-Space A)) + ( λ x → refl) +``` + +### Associativity of composition of isometries between pseudometric spaces + +```agda +module _ + {l1a l2a l1b l2b l1c l2c l1d l2d : Level} + (A : Pseudometric-Space l1a l2a) + (B : Pseudometric-Space l1b l2b) + (C : Pseudometric-Space l1c l2c) + (D : Pseudometric-Space l1d l2d) + (h : isometry-Pseudometric-Space C D) + (g : isometry-Pseudometric-Space B C) + (f : isometry-Pseudometric-Space A B) + where + + associative-comp-isometry-Pseudometric-Space : + ( comp-isometry-Pseudometric-Space A B D + ( comp-isometry-Pseudometric-Space B C D h g) + ( f)) = + ( comp-isometry-Pseudometric-Space A C D + ( h) + ( comp-isometry-Pseudometric-Space A B C g f)) + associative-comp-isometry-Pseudometric-Space = + eq-htpy-map-isometry-Pseudometric-Space + ( A) + ( D) + ( comp-isometry-Pseudometric-Space A B D + ( comp-isometry-Pseudometric-Space B C D h g) + ( f)) + ( comp-isometry-Pseudometric-Space A C D + ( h) + ( comp-isometry-Pseudometric-Space A B C g f)) + ( λ x → refl) +``` + +### The inverse of an isometric equivalence is an isometry + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : type-function-Pseudometric-Space A B) + (I : is-isometry-Pseudometric-Space A B f) + (E : is-equiv f) + where + + is-isometry-map-inv-is-equiv-is-isometry-Pseudometric-Space : + is-isometry-Pseudometric-Space B A (map-inv-is-equiv E) + is-isometry-map-inv-is-equiv-is-isometry-Pseudometric-Space d x y = + logical-equivalence-reasoning + ( neighborhood-Pseudometric-Space B d x y) + ↔ ( neighborhood-Pseudometric-Space B d + ( f (map-inv-is-equiv E x)) + ( f (map-inv-is-equiv E y))) + by + binary-tr + ( λ u v → + ( neighborhood-Pseudometric-Space B d x y) ↔ + ( neighborhood-Pseudometric-Space 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-Pseudometric-Space 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 : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : isometry-Pseudometric-Space A B) + (E : is-equiv (map-isometry-Pseudometric-Space A B f)) + where + + isometry-inv-is-equiv-isometry-Pseudometric-Space : + isometry-Pseudometric-Space B A + isometry-inv-is-equiv-isometry-Pseudometric-Space = + ( map-inv-is-equiv E) , + ( is-isometry-map-inv-is-equiv-is-isometry-Pseudometric-Space + ( A) + ( B) + ( map-isometry-Pseudometric-Space A B f) + ( is-isometry-map-isometry-Pseudometric-Space A B f) + ( E)) + + is-section-isometry-inv-is-equiv-isometry-Pseudometric-Space : + ( comp-isometry-Pseudometric-Space + B + A + B + f + isometry-inv-is-equiv-isometry-Pseudometric-Space) = + ( isometry-id-Pseudometric-Space B) + is-section-isometry-inv-is-equiv-isometry-Pseudometric-Space = + eq-htpy-map-isometry-Pseudometric-Space + ( B) + ( B) + ( comp-isometry-Pseudometric-Space + B + A + B + f + isometry-inv-is-equiv-isometry-Pseudometric-Space) + ( isometry-id-Pseudometric-Space B) + ( is-section-map-inv-is-equiv E) + + is-retraction-isometry-inv-is-equiv-isometry-Pseudometric-Space : + ( comp-isometry-Pseudometric-Space + A + B + A + isometry-inv-is-equiv-isometry-Pseudometric-Space + f) = + ( isometry-id-Pseudometric-Space A) + is-retraction-isometry-inv-is-equiv-isometry-Pseudometric-Space = + eq-htpy-map-isometry-Pseudometric-Space + ( A) + ( A) + ( comp-isometry-Pseudometric-Space + A + B + A + isometry-inv-is-equiv-isometry-Pseudometric-Space + f) + ( isometry-id-Pseudometric-Space A) + ( is-retraction-map-inv-is-equiv E) +``` diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index 47feae9dda..8fdeb25e8e 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -23,7 +23,6 @@ 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 From 8cb0d7148173c141902c4904e8748bfd150c7c97 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 8 Aug 2025 15:32:51 +0200 Subject: [PATCH 067/151] equality of pseudometric spaces --- src/metric-spaces.lagda.md | 1 + .../equality-of-metric-spaces.lagda.md | 4 +- .../equality-of-pseudometric-spaces.lagda.md | 250 ++++++++++++++++++ .../pseudometric-spaces.lagda.md | 23 ++ 4 files changed, 276 insertions(+), 2 deletions(-) create mode 100644 src/metric-spaces/equality-of-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 9803e0b30f..18906db20b 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -60,6 +60,7 @@ open import metric-spaces.discrete-metric-spaces public open import metric-spaces.disjoint-sums-metric-spaces 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-pseudometric-spaces public open import metric-spaces.extensional-pseudometric-spaces public open import metric-spaces.functions-metric-spaces public open import metric-spaces.functions-pseudometric-spaces public diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index e1c7e1c67b..29840e6bec 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -175,7 +175,7 @@ module _ ( equiv-eq-isometric-eq-Metric-Space A B) ``` -### Isometric equivalence is torsorial +### Isometric equivalence of metric spaces is torsorial ```agda module _ @@ -234,7 +234,7 @@ module _ map-inv-equiv equiv-eq-isometric-equiv-Metric-Space' ``` -### The existence of invertibe isometries between metric spaces is torsorial +### The existence of invertible isometries between metric spaces is torsorial ```agda module _ diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..e091a97d10 --- /dev/null +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -0,0 +1,250 @@ +# Equality of pseudometric spaces + +```agda +module metric-spaces.equality-of-pseudometric-spaces 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.functions-pseudometric-spaces +open import metric-spaces.isometries-pseudometric-spaces +open import metric-spaces.pseudometric-spaces +``` + +
+ +## Idea + +[Equality](foundation-core.identity-types.md) of +[pseudometric spaces](metric-spaces.pseudometric-spaces.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-pseudometric-spaces.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-pseudometric-spaces.md); + +- a function between their carrier types that is both an + [equivalence](foundation-core.equivalences.md) and an + [isometry](metric-spaces.isometries-pseudometric-spaces.md). + +## Definitions + +### Isometric equality of pseudometric spaces + +```agda +module _ + {l1 l2 l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1 l2') + where + + isometric-eq-Pseudometric-Space : UU (lsuc l1 ⊔ l2 ⊔ l2') + isometric-eq-Pseudometric-Space = + Σ (type-Pseudometric-Space A = type-Pseudometric-Space B) + (λ e → is-isometry-Pseudometric-Space A B (map-eq e)) +``` + +### Isometric equivalence of pseudometric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + where + + isometric-equiv-Pseudometric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + isometric-equiv-Pseudometric-Space = + Σ (type-Pseudometric-Space A ≃ type-Pseudometric-Space B) + (λ e → is-isometry-Pseudometric-Space A B (map-equiv e)) +``` + +### Isometric equivalences between pseudometric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + where + + isometric-equiv-Pseudometric-Space' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + isometric-equiv-Pseudometric-Space' = + Σ (type-function-Pseudometric-Space A B) + (λ f → (is-equiv f) × (is-isometry-Pseudometric-Space A B f)) +``` + +## Properties + +### Equality of pseudometric spaces is equivalent to the existence of an isometric equality between their carrier types + +```agda +module _ + {l1 l2 : Level} + (A B : Pseudometric-Space l1 l2) + where + + equiv-eq-isometric-eq-Pseudometric-Space : + (A = B) ≃ isometric-eq-Pseudometric-Space A B + equiv-eq-isometric-eq-Pseudometric-Space = + ( equiv-tot + ( equiv-Eq-tr-Pseudometric-Structure + ( type-Pseudometric-Space A) + ( type-Pseudometric-Space B) + ( structure-Pseudometric-Space A) + ( structure-Pseudometric-Space B))) ∘e + ( equiv-pair-eq-Σ A B) + + eq-isometric-eq-Pseudometric-Space : + isometric-eq-Pseudometric-Space A B → A = B + eq-isometric-eq-Pseudometric-Space = + map-inv-equiv equiv-eq-isometric-eq-Pseudometric-Space +``` + +### Isometric equality is torsorial + +```agda +module _ + {l1 l2 : Level} + (A : Pseudometric-Space l1 l2) + where + + is-torsorial-isometric-eq-Pseudometric-Space : + is-torsorial (isometric-eq-Pseudometric-Space A) + is-torsorial-isometric-eq-Pseudometric-Space = + is-contr-equiv' + ( Σ (Pseudometric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-eq-Pseudometric-Space A)) + ( is-torsorial-Id A) +``` + +### Isometric equality between the carrier types of pseudometric spaces is equivalent to the existence of an isometric equivalence between them + +```agda +module _ + {l1 l2 : Level} + (A B : Pseudometric-Space l1 l2) + where + + equiv-isometric-eq-equiv-Pseudometric-Space : + isometric-eq-Pseudometric-Space A B ≃ isometric-equiv-Pseudometric-Space A B + equiv-isometric-eq-equiv-Pseudometric-Space = + equiv-Σ + ( λ e → is-isometry-Pseudometric-Space A B (map-equiv e)) + ( equiv-univalence) + ( λ (e : type-Pseudometric-Space A = type-Pseudometric-Space B) → + equiv-eq + (ap (is-isometry-Pseudometric-Space A B) (eq-htpy (λ x → refl)))) +``` + +### Isometric equivalences of pseudometric spaces characterize their equalities + +```agda +module _ + {l1 l2 : Level} + (A B : Pseudometric-Space l1 l2) + where + + equiv-eq-isometric-equiv-Pseudometric-Space : + (A = B) ≃ isometric-equiv-Pseudometric-Space A B + equiv-eq-isometric-equiv-Pseudometric-Space = + ( equiv-isometric-eq-equiv-Pseudometric-Space A B) ∘e + ( equiv-eq-isometric-eq-Pseudometric-Space A B) +``` + +### Isometric equivalence of pseudometric spaces is torsorial + +```agda +module _ + {l1 l2 : Level} + (A : Pseudometric-Space l1 l2) + where + + is-torsorial-isometric-equiv-Pseudometric-Space : + is-torsorial (isometric-equiv-Pseudometric-Space A) + is-torsorial-isometric-equiv-Pseudometric-Space = + is-contr-equiv' + ( Σ (Pseudometric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Pseudometric-Space A)) + ( is-torsorial-Id A) +``` + +### Two pseudometric spaces are isometrically equivalent if and only if there is an isometric equivalence between them + +```agda +module _ + {l1 l2 : Level} + (A B : Pseudometric-Space l1 l2) + where + + equiv-isometric-equiv-isometric-equiv-Pseudometric-Space' : + isometric-equiv-Pseudometric-Space A B ≃ + isometric-equiv-Pseudometric-Space' A B + equiv-isometric-equiv-isometric-equiv-Pseudometric-Space' = + ( equiv-tot + ( λ f → + equiv-tot + ( λ e → + equiv-eq (ap (is-isometry-Pseudometric-Space A B) refl)))) ∘e + ( associative-Σ + ( type-function-Pseudometric-Space A B) + ( is-equiv) + ( is-isometry-Pseudometric-Space A B ∘ map-equiv)) +``` + +### Isometric equivalences between pseudometric spaces characterize their equality + +```agda +module _ + {l1 l2 : Level} + (A B : Pseudometric-Space l1 l2) + where + + equiv-eq-isometric-equiv-Pseudometric-Space' : + (A = B) ≃ isometric-equiv-Pseudometric-Space' A B + equiv-eq-isometric-equiv-Pseudometric-Space' = + ( equiv-isometric-equiv-isometric-equiv-Pseudometric-Space' A B) ∘e + ( equiv-eq-isometric-equiv-Pseudometric-Space A B) + + eq-isometric-equiv-Pseudometric-Space' : + isometric-equiv-Pseudometric-Space' A B → A = B + eq-isometric-equiv-Pseudometric-Space' = + map-inv-equiv equiv-eq-isometric-equiv-Pseudometric-Space' +``` + +### The existence of invertible isometries between pseudometric spaces is torsorial + +```agda +module _ + {l1 l2 : Level} + (A : Pseudometric-Space l1 l2) + where + + is-torsorial-isometric-equiv-Pseudometric-Space' : + is-torsorial (isometric-equiv-Pseudometric-Space' A) + is-torsorial-isometric-equiv-Pseudometric-Space' = + is-contr-equiv' + ( Σ (Pseudometric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Pseudometric-Space' A)) + ( is-torsorial-Id A) +``` diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index 8fdeb25e8e..e7b1ac848a 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -30,6 +30,7 @@ open import foundation.univalence open import foundation.universe-levels open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.preimage-rational-neighborhoods open import metric-spaces.rational-neighborhoods open import metric-spaces.reflexive-rational-neighborhoods open import metric-spaces.saturated-rational-neighborhoods @@ -205,6 +206,28 @@ module _ saturated-neighborhood-Pseudometric-Space ``` +## Properties + +### Characterization of the transport of pseudometric structures along equalities + +```agda +equiv-Eq-tr-Pseudometric-Structure : + {l1 l2 : Level} (A B : UU l1) → + (P : Pseudometric-Structure l2 A) → + (Q : Pseudometric-Structure l2 B) → + (e : A = B) → + (tr (Pseudometric-Structure l2) e P = Q) ≃ + (Eq-Rational-Neighborhood-Relation + ( pr1 P) + ( preimage-Rational-Neighborhood-Relation (map-eq e) (pr1 Q))) +equiv-Eq-tr-Pseudometric-Structure A .A P Q refl = + ( equiv-Eq-eq-Rational-Neighborhood-Relation (pr1 P) (pr1 Q)) ∘e + ( extensionality-type-subtype' + ( is-pseudometric-prop-Rational-Neighborhood-Relation A) + ( P) + ( Q)) +``` + ## External links - [Pseudometric spaces](https://en.wikipedia.org/wiki/Pseudometric_space) at From 66f597c9e0550b55b4fab7e4b7617ab5beb3895b Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 8 Aug 2025 16:25:48 +0200 Subject: [PATCH 068/151] format parenthesis --- .../dependent-products-metric-spaces.lagda.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/metric-spaces/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index 40fd59815c..0ce01c569c 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -102,8 +102,8 @@ module _ pseudometric-space-Π-Metric-Space : Pseudometric-Space (l ⊔ l1) (l ⊔ l2) pseudometric-space-Π-Metric-Space = - ( type-Π-Metric-Space) , - ( neighborhood-prop-Π-Metric-Space , + ( type-Π-Metric-Space , + neighborhood-prop-Π-Metric-Space , is-reflexive-neighborhood-Π-Metric-Space , is-symmetric-neighborhood-Π-Metric-Space , is-triangular-neighborhood-Π-Metric-Space , @@ -156,7 +156,7 @@ module _ short-function-Metric-Space ( Π-Metric-Space A P) ( P a) - short-ev-Π-Metric-Space = (ev a) , (is-short-ev-Π-Metric-Space) + short-ev-Π-Metric-Space = (ev a , is-short-ev-Π-Metric-Space) ``` ### The partial applications of a Cauchy approximation in a dependent product metric space are Cauchy approximations @@ -245,8 +245,8 @@ module _ is-complete-Π-Metric-Space : is-complete-Metric-Space (Π-Metric-Space A P) is-complete-Π-Metric-Space u = - limit-cauchy-approximation-Π-is-complete-Metric-Space u , - is-limit-limit-cauchy-approximation-Π-is-complete-Metric-Space u + ( limit-cauchy-approximation-Π-is-complete-Metric-Space u , + is-limit-limit-cauchy-approximation-Π-is-complete-Metric-Space u) ``` ### The complete product of complete metric spaces From 245e0feccce297c9fed137d50bc4302cd4cd9268 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 8 Aug 2025 17:09:56 +0200 Subject: [PATCH 069/151] fix name equivalence-relation-sim-XXX --- src/metric-spaces/metric-spaces.lagda.md | 6 +++--- .../similarity-of-elements-pseudometric-spaces.lagda.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index d687ff45b0..59a4d894eb 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -316,10 +316,10 @@ module _ transitive-sim-Metric-Space = transitive-sim-Pseudometric-Space (pseudometric-Metric-Space A) - equivalence-sim-Metric-Space : + equivalence-relation-sim-Metric-Space : equivalence-relation l2 (type-Metric-Space A) - equivalence-sim-Metric-Space = - equivalence-sim-Pseudometric-Space (pseudometric-Metric-Space A) + equivalence-relation-sim-Metric-Space = + equivalence-relation-sim-Pseudometric-Space (pseudometric-Metric-Space A) ``` ## Properties diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index 299bc82ed4..6b327d2f42 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -155,9 +155,9 @@ module _ ( symmetric-sim-Pseudometric-Space A) , ( transitive-sim-Pseudometric-Space A) - equivalence-sim-Pseudometric-Space : + equivalence-relation-sim-Pseudometric-Space : equivalence-relation l2 (type-Pseudometric-Space A) - equivalence-sim-Pseudometric-Space = + equivalence-relation-sim-Pseudometric-Space = ( sim-prop-Pseudometric-Space A) , ( is-equivalence-relation-sim-Pseudometric-Space) ``` From c59d3632734284161d7b52774b669c971692f2cb Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 8 Aug 2025 17:46:40 +0200 Subject: [PATCH 070/151] fix definition: metric-space = extensional pseudometric space --- .../equality-of-metric-spaces.lagda.md | 15 +-- src/metric-spaces/metric-spaces.lagda.md | 104 ++++-------------- 2 files changed, 31 insertions(+), 88 deletions(-) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 29840e6bec..6bd43d8ef2 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -25,6 +25,7 @@ open import foundation.type-arithmetic-dependent-pair-types open import foundation.univalence open import foundation.universe-levels +open import metric-spaces.equality-of-pseudometric-spaces open import metric-spaces.extensional-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces @@ -110,13 +111,13 @@ module _ equiv-eq-isometric-eq-Metric-Space : (A = B) ≃ isometric-eq-Metric-Space A B equiv-eq-isometric-eq-Metric-Space = - ( equiv-tot - ( equiv-Eq-tr-Metric-Structure - ( type-Metric-Space A) - ( type-Metric-Space B) - ( structure-Metric-Space A) - ( structure-Metric-Space B))) ∘e - ( equiv-pair-eq-Σ A B) + equiv-eq-isometric-eq-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ∘e + ( extensionality-type-subtype' + ( is-extensional-prop-Pseudometric-Space) + ( A) + ( B)) eq-isometric-eq-Metric-Space : isometric-eq-Metric-Space A B → A = B diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index 59a4d894eb..2eb2caa4c8 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -94,83 +94,45 @@ 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 (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 : - {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) -Metric-Structure l2 A = - type-subtype (is-metric-prop-Rational-Neighborhood-Relation A {l2}) -``` - ### The type of metric spaces ```agda Metric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) Metric-Space l1 l2 = - Σ (UU l1) (Metric-Structure l2) - -make-Metric-Space : - { 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 : + Σ (Pseudometric-Space l1 l2) (is-extensional-Pseudometric-Space) + +module _ + {l1 l2 : Level} + ( A : UU l1) + ( N : Rational-Neighborhood-Relation l2 A) + ( refl-N : is-reflexive-Rational-Neighborhood-Relation N) + ( symmetric-N : is-symmetric-Rational-Neighborhood-Relation N) + ( triangular-N : is-triangular-Rational-Neighborhood-Relation N) + ( saturated-N : is-saturated-Rational-Neighborhood-Relation N) + ( extensional-N : is-extensional-Pseudometric-Space - (A , B , refl-B , symmetric-B , triangular-B , saturated-B)) → - Metric-Space l1 l2 -make-Metric-Space - A B refl-B symmetric-B triangular-B saturated-B extensional-B = - ( A) , - ( ( B) , - ( refl-B , symmetric-B , triangular-B , saturated-B) , - ( extensional-B)) + ( A , N , refl-N , symmetric-N , triangular-N , saturated-N)) + where + + make-Metric-Space : Metric-Space l1 l2 + pr1 make-Metric-Space = + (A , N , refl-N , symmetric-N , triangular-N , saturated-N) + pr2 make-Metric-Space = extensional-N module _ {l1 l2 : Level} (M : Metric-Space l1 l2) where + pseudometric-Metric-Space : Pseudometric-Space l1 l2 + pseudometric-Metric-Space = pr1 M + type-Metric-Space : UU l1 type-Metric-Space = - pr1 M - - structure-Metric-Space : Metric-Structure l2 type-Metric-Space - structure-Metric-Space = pr2 M - - pseudometric-Metric-Space : Pseudometric-Space l1 l2 - pseudometric-Metric-Space = - ( type-Metric-Space) , - ( pr1 structure-Metric-Space) , - ( pr1 (pr2 structure-Metric-Space)) + type-Pseudometric-Space pseudometric-Metric-Space is-extensional-pseudometric-Metric-Space : is-extensional-Pseudometric-Space pseudometric-Metric-Space - is-extensional-pseudometric-Metric-Space = - pr2 (pr2 structure-Metric-Space) + is-extensional-pseudometric-Metric-Space = pr2 M pseudometric-structure-Metric-Space : Pseudometric-Structure l2 type-Metric-Space @@ -365,26 +327,6 @@ module _ map-inv-equiv (equiv-sim-eq-Metric-Space 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 l2 A) → - (Q : Metric-Structure l2 B) → - (e : A = B) → - (tr (Metric-Structure 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) From 1ca596c1c3827cf46c294d970d32c84b7b8152a5 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 00:50:10 +0200 Subject: [PATCH 071/151] typo Discrete --- src/metric-spaces/discrete-metric-spaces.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index 49f6f665c4..4bd5e741d2 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -260,7 +260,7 @@ module _ (f : cauchy-approximation-Metric-Space (metric-space-Discrete-Metric-Space A)) where - is-wconstant-cauchy-approximation-Disrcete-Metric-Space : + is-wconstant-cauchy-approximation-Discrete-Metric-Space : (ε δ : ℚ⁺) → Id ( map-cauchy-approximation-Metric-Space @@ -271,7 +271,7 @@ module _ ( metric-space-Discrete-Metric-Space A) ( f) ( δ)) - is-wconstant-cauchy-approximation-Disrcete-Metric-Space ε δ = + is-wconstant-cauchy-approximation-Discrete-Metric-Space ε δ = is-discrete-metric-space-Discrete-Metric-Space ( A) ( ε +ℚ⁺ δ) From 48f2ce2c042b343996f386992c43576b7be2e7a6 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 00:50:56 +0200 Subject: [PATCH 072/151] typo Discrete --- src/metric-spaces/discrete-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index 4bd5e741d2..b5a61aecc5 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -308,7 +308,7 @@ module _ ( A) ( map-cauchy-approximation-Metric-Space A f ε) ( map-cauchy-approximation-Metric-Space A f one-ℚ⁺) - ( is-wconstant-cauchy-approximation-Disrcete-Metric-Space + ( is-wconstant-cauchy-approximation-Discrete-Metric-Space ( A , H) ( f) ( ε) From 4d028cbdf9342bf933d2875f624715536e9a9461 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:39:10 +0200 Subject: [PATCH 073/151] Update src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../cauchy-approximations-pseudometric-spaces.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 90deaf3056..a97d09aa3e 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -29,9 +29,9 @@ open import metric-spaces.pseudometric-spaces A {{#concept "Cauchy approximation" Disambiguation="in a pseudometric space" Agda=is-cauchy-approximation-Pseudometric-Space}} in a [pseudometric space](metric-spaces.pseudometric-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.rational-neighborhoods.md), i.e. the +from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the +carrier type of `A` such that for all `(ε δ : ℚ⁺)`, `f ε` and `f δ` are in a +(`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. ## Definitions From 74855b72203e4517c922fd7ebe7e6a0504581cd5 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:40:30 +0200 Subject: [PATCH 074/151] Update src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../cauchy-approximations-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index a97d09aa3e..440340d7ad 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -100,7 +100,7 @@ module _ (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Pseudometric-Space A (ε +ℚ⁺ δ) x) ``` -### Homotopic cauchy approximations are equal +### Homotopic Cauchy approximations are equal ```agda module _ From de59c4a3d9ae098d50e1f2e59a79e3180ace1043 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:41:38 +0200 Subject: [PATCH 075/151] Update src/metric-spaces/discrete-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/discrete-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index b5a61aecc5..8dd515f79d 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -53,7 +53,7 @@ open import metric-spaces.triangular-rational-neighborhoods ## Idea -A [metric space](metric-spaces.metric-spaces.md) is called +A [metric space](metric-spaces.metric-spaces.md) is {{#concept "discrete" Disambiguation="metric space" Agda=is-discrete-Metric-Space}} if all [elements at bounded distance](metric-spaces.elements-at-bounded-distance-metric-spaces.md) From bb64d696066f32fa713fd17b461c8ba07d6e9f14 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:42:51 +0200 Subject: [PATCH 076/151] Update src/metric-spaces/discrete-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/discrete-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index 8dd515f79d..899a38965e 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -65,7 +65,7 @@ the on its underlying [set](foundation.sets.md). Any [map](metric-spaces.functions-metric-spaces.md) from a discrete metric space -is [short](metric-spaces.short-functions-metric-spaces.md); a map into a +is [short](metric-spaces.short-functions-metric-spaces.md), and a map into a discrete metric space is short if and only if it is [locally constant](metric-spaces.locally-constant-functions-metric-spaces.md). From 7eb728b057c810b105d485f54a2129a63af3e5a1 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:43:59 +0200 Subject: [PATCH 077/151] Update src/metric-spaces/dependent-products-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/dependent-products-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index 0ce01c569c..71c87d028d 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -39,7 +39,7 @@ A family of [metric spaces](metric-spaces.metric-spaces.md) over a type produces a {{#concept "product metric space" Agda=Π-Metric-Space}} 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.rational-neighborhoods.md) in the -product structure if this holds for all the evaluations `f x` and `g x`. I.e, +product structure if this holds for all the evaluations `f x` and `g x`. I.e., [upper bounds](metric-spaces.rational-neighborhoods.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 From 132151f118e2550515ccc5494ca7b431b6e28d9e Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:45:31 +0200 Subject: [PATCH 078/151] Update src/metric-spaces/disjoint-sums-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/disjoint-sums-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index d640169d50..66e45105d3 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -58,7 +58,7 @@ metric space `A` is the metric space with underlying type `Σ A P` and the identification is a `d`-neighbor of `y` in `P y`. The [projection](foundation.dependent-pair-types.md) on the first component is -[locally constant](metric-spaces.locally-constant-functions-metric-spaces.md); +[locally constant](metric-spaces.locally-constant-functions-metric-spaces.md), and for any `x : A` the embedding `P x → Σ A P` is an [isometry](metric-spaces.isometries-metric-spaces.md). From ae302c29a33939f7f265845c3efa47d6c2ac25ff Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:47:32 +0200 Subject: [PATCH 079/151] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../disjoint-sums-metric-spaces.lagda.md | 4 ++-- .../equality-of-metric-spaces.lagda.md | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index 66e45105d3..a628c7bf43 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -234,11 +234,11 @@ module _ type-Metric-Space (P (base-point-Σ-Metric-Space x)) fiber-point-Σ-Metric-Space = pr2 - emb-fiber-Σ-Metric-Space : + map-emb-fiber-Σ-Metric-Space : (x : type-Metric-Space A) → type-Metric-Space ( P x) → type-Σ-Metric-Space - emb-fiber-Σ-Metric-Space x px = (x , px) + map-emb-fiber-Σ-Metric-Space x px = (x , px) ``` ## Properties diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 6bd43d8ef2..d1f78aa863 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -66,8 +66,8 @@ module _ isometric-eq-Metric-Space : UU (lsuc l1 ⊔ l2 ⊔ l2') isometric-eq-Metric-Space = - Σ (type-Metric-Space A = type-Metric-Space B) - (λ e → is-isometry-Metric-Space A B (map-eq e)) + Σ ( type-Metric-Space A = type-Metric-Space B) + ( λ e → is-isometry-Metric-Space A B (map-eq e)) ``` ### Isometric equivalence of metric spaces @@ -80,8 +80,8 @@ module _ isometric-equiv-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space = - Σ (type-Metric-Space A ≃ type-Metric-Space B) - (λ e → is-isometry-Metric-Space A B (map-equiv e)) + Σ ( type-Metric-Space A ≃ type-Metric-Space B) + ( λ e → is-isometry-Metric-Space A B (map-equiv e)) ``` ### Isometric equivalences between metric spaces @@ -94,13 +94,13 @@ module _ isometric-equiv-Metric-Space' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space' = - Σ (type-function-Metric-Space A B) - (λ f → (is-equiv f) × (is-isometry-Metric-Space A B f)) + Σ ( type-function-Metric-Space A B) + ( λ f → (is-equiv f) × (is-isometry-Metric-Space A B f)) ``` ## Properties -### Equality of metric spaces is equivalent to the existence of an isometric equality between their carrier types +### Equality of metric spaces is equivalent to isometric equality of their carrier types ```agda module _ @@ -142,7 +142,7 @@ module _ ( is-torsorial-Id A) ``` -### Isometric equality between the carrier types of metric spaces is equivalent to the existence of an isometric equivalence between them +### Isometric equality between the carrier types of metric spaces is equivalent isometric equivalence between them ```agda module _ From 048930371ebcf4b700227da331bf8316c8bb0bb7 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:50:07 +0200 Subject: [PATCH 080/151] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../equality-of-pseudometric-spaces.lagda.md | 8 ++++---- .../extensional-pseudometric-spaces.lagda.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index e091a97d10..170324f9c5 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -96,7 +96,7 @@ module _ ## Properties -### Equality of pseudometric spaces is equivalent to the existence of an isometric equality between their carrier types +### Equality of pseudometric spaces is equivalent to isometric equality of their carrier types ```agda module _ @@ -138,7 +138,7 @@ module _ ( is-torsorial-Id A) ``` -### Isometric equality between the carrier types of pseudometric spaces is equivalent to the existence of an isometric equivalence between them +### Isometric equality between the carrier types of pseudometric spaces is equivalent to isometric equivalence between them ```agda module _ @@ -157,7 +157,7 @@ module _ (ap (is-isometry-Pseudometric-Space A B) (eq-htpy (λ x → refl)))) ``` -### Isometric equivalences of pseudometric spaces characterize their equalities +### Isometric equivalences of pseudometric spaces characterize their equality ```agda module _ @@ -232,7 +232,7 @@ module _ map-inv-equiv equiv-eq-isometric-equiv-Pseudometric-Space' ``` -### The existence of invertible isometries between pseudometric spaces is torsorial +### Invertible isometry between pseudometric spaces is torsorial ```agda module _ diff --git a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md index fcccbe0ea6..bfdedcfbec 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md @@ -1,4 +1,4 @@ -# Extensional pseudometric spaces +# Extensionality of pseudometric spaces ```agda module metric-spaces.extensional-pseudometric-spaces where @@ -33,7 +33,7 @@ A [pseudometric space](metric-spaces.pseudometric-spaces.md) is called {{#concept "extensional" Disambiguation="pseudometric space" Agda=is-extensional-Pseudometric-Space}} if any of the following equivalent conditions holds: -- any [similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) +- [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; From 2f2ef6b95bda454f47bc5e015bda8b0606fbf287 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:53:01 +0200 Subject: [PATCH 081/151] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../extensional-pseudometric-spaces.lagda.md | 8 ++++---- src/metric-spaces/isometries-pseudometric-spaces.lagda.md | 2 +- src/metric-spaces/pseudometric-spaces.lagda.md | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md index bfdedcfbec..526d07ba6d 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md @@ -91,7 +91,7 @@ module _ ## Properties -### Any tight pseudometric space is extensional +### Tight pseudometric spaces are extensional ```agda module _ @@ -148,7 +148,7 @@ module _ map-inv-equiv (equiv-sim-eq-is-extensional-Pseudometric-Space x y) ``` -### Any extensional pseudometric is tight +### Extensional pseudometric spaces are tight ```agda module _ @@ -184,5 +184,5 @@ module _ ## See also -- [metric spaces](metric-spaces.metric-spaces.md): the type of extensional - pseudometric spaces. +- Extensional + pseudometric spaces are called [metric spaces](metric-spaces.metric-spaces.md). diff --git a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md index a98b079883..60f0bc9e5c 100644 --- a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md @@ -37,7 +37,7 @@ A [function](metric-spaces.functions-pseudometric-spaces.md) between {{#concept "isometry" Disambiguation="between pseudometric spaces" Agda=is-isometry-Pseudometric-Space}} 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 +[preimage](metric-spaces.preimage-rational-neighborhoods.md) under `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`. diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index e7b1ac848a..c893866cb1 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -48,7 +48,7 @@ with a {{concept "pseudometric structure" Agda=Pseudometric-Structure}}: a [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) +[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 From 256e6e377b139cc7572983167b8d8461cb6657e0 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:55:33 +0200 Subject: [PATCH 082/151] Update src/metric-spaces/isometries-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/isometries-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index f65c6e9fec..129896081c 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -155,7 +155,7 @@ module _ map-inv-equiv equiv-eq-htpy-map-isometry-Metric-Space ``` -### An isometry preserves and reflects neighborhoods +### Isometries preserve and reflect neighborhoods ```agda module _ From 9e5c346bea99324ae1bfeb696492890b6545c05c Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:56:05 +0200 Subject: [PATCH 083/151] Update src/metric-spaces/isometries-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/isometries-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index 129896081c..f274daee19 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -352,7 +352,7 @@ module _ ( E) ``` -### Any isometry between metric spaces is an embedding +### Isometries between metric spaces are embeddings ```agda module _ From 9160c89a2e0d69c9c1e5d526a83cd47a06ab67ac Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:56:25 +0200 Subject: [PATCH 084/151] Update src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../limits-of-cauchy-approximations-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 71e4f7b0db..946c766b9d 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -27,7 +27,7 @@ open import metric-spaces.metric-spaces 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}} +{{#concept "limit" Disambiguation="of a Cauchy approximation in a metric space" Agda=is-limit-cauchy-approximation-Metric-Space}} `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 `ε δ : ℚ⁺`. From 0250e000f9d1a59d53e2d781e47f59e03fa9b558 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:56:53 +0200 Subject: [PATCH 085/151] Update src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../limits-of-cauchy-approximations-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 946c766b9d..c99ce18e06 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -28,7 +28,7 @@ open import metric-spaces.metric-spaces 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}} -`x : A` if `f ε` is near `x` for small `ε : ℚ⁺`; more precisely, if `f ε` is in +`x : A` if `f ε` is near `x` for small `ε : ℚ⁺`. More precisely, `f` has a limit if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) of `x` for all `ε δ : ℚ⁺`. From 8e8875200761ca160279b9bd7f55a6365d8f7780 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:57:09 +0200 Subject: [PATCH 086/151] Update src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../limits-of-cauchy-approximations-metric-spaces.lagda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index c99ce18e06..1c95f46a52 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -133,8 +133,7 @@ module _ ## See also -- [convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md): - the type of Cauchy approximations with a limit. +- [Convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md) are Cauchy approximations with a limit. ## References From 16a38037150874580eb0a5d441d6a23b5fbac829 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 21:57:35 +0200 Subject: [PATCH 087/151] Update src/metric-spaces/limits-of-functions-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/limits-of-functions-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md index b99c93919b..fd42fed1b9 100644 --- a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md @@ -30,7 +30,7 @@ A [function](metric-spaces.functions-metric-spaces.md) `f` between {{#concept "limit" Disambiguation="of function between metric spaces at a point" Agda=is-pt-limit-function-Metric-Space}} `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`. +`ε`-neighborhood of `y`. In this case `m` is called a limit modulus of `f` at `x`. ## Definitions From e0eed256532c68f79fb943dab7ebe331472b4435 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 22:03:45 +0200 Subject: [PATCH 088/151] sentences are better than : --- .../limits-of-sequences-metric-spaces.lagda.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index dbf3156295..b4cd165dbc 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -269,11 +269,12 @@ module _ ## See also -- [Convergent sequences](metric-spaces.convergent-sequences-metric-spaces.md): - the type of sequences that have a limit +- [Convergent sequences](metric-spaces.convergent-sequences-metric-spaces.md) + are sequences with a limit; - The - [metric space of convergent sequences](metric-spaces.metric-space-of-convergent-sequences-metric-spaces.md): - the metric structure on the type of convergent sequences + [metric space of convergent sequences](metric-spaces.metric-space-of-convergent-sequences-metric-spaces.md) + is the metric space of convergent sequences in a metric space with the + product metric structure. ## External links From 1f38e12f4341785ab3cff53c404d7580c0ce3c61 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 22:04:19 +0200 Subject: [PATCH 089/151] precommit format --- src/metric-spaces/disjoint-sums-metric-spaces.lagda.md | 4 ++-- .../extensional-pseudometric-spaces.lagda.md | 4 ++-- ...imits-of-cauchy-approximations-metric-spaces.lagda.md | 9 +++++---- .../limits-of-functions-metric-spaces.lagda.md | 3 ++- .../limits-of-sequences-metric-spaces.lagda.md | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index a628c7bf43..053895d375 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -58,8 +58,8 @@ metric space `A` is the metric space with underlying type `Σ A P` and the identification is a `d`-neighbor of `y` in `P y`. The [projection](foundation.dependent-pair-types.md) on the first component is -[locally constant](metric-spaces.locally-constant-functions-metric-spaces.md), and -for any `x : A` the embedding `P x → Σ A P` is an +[locally constant](metric-spaces.locally-constant-functions-metric-spaces.md), +and for any `x : A` the embedding `P x → Σ A P` is an [isometry](metric-spaces.isometries-metric-spaces.md). ## Definitions diff --git a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md index 526d07ba6d..d10ff6ce86 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensional-pseudometric-spaces.lagda.md @@ -184,5 +184,5 @@ module _ ## See also -- Extensional - pseudometric spaces are called [metric spaces](metric-spaces.metric-spaces.md). +- Extensional pseudometric spaces are called + [metric spaces](metric-spaces.metric-spaces.md). diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 1c95f46a52..a460889360 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -28,9 +28,9 @@ open import metric-spaces.metric-spaces 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}} -`x : A` if `f ε` is near `x` for small `ε : ℚ⁺`. More precisely, `f` has a limit if `f ε` is in -a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) of `x` for all -`ε δ : ℚ⁺`. +`x : A` if `f ε` is near `x` for small `ε : ℚ⁺`. More precisely, `f` has a limit +if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) +of `x` for all `ε δ : ℚ⁺`. ## Definitions @@ -133,7 +133,8 @@ module _ ## See also -- [Convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md) are Cauchy approximations with a limit. +- [Convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md) + are Cauchy approximations with a limit. ## References diff --git a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md index fd42fed1b9..6c93ff5aa0 100644 --- a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md @@ -30,7 +30,8 @@ A [function](metric-spaces.functions-metric-spaces.md) `f` between {{#concept "limit" Disambiguation="of function between metric spaces at a point" Agda=is-pt-limit-function-Metric-Space}} `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`. In this case `m` is called a limit modulus of `f` at `x`. +`ε`-neighborhood of `y`. In this case `m` is called a limit modulus of `f` at +`x`. ## Definitions diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index b4cd165dbc..6ac03f34e8 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -273,8 +273,8 @@ module _ are sequences with a limit; - The [metric space of convergent sequences](metric-spaces.metric-space-of-convergent-sequences-metric-spaces.md) - is the metric space of convergent sequences in a metric space with the - product metric structure. + is the metric space of convergent sequences in a metric space with the product + metric structure. ## External links From e41c11f8c1cf04747a7f7fe83a44ad7a15294dfd Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 22:13:18 +0200 Subject: [PATCH 090/151] rephrase isometries-metric-spaces ## Idea --- .../isometries-metric-spaces.lagda.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index f274daee19..2a117b7dd4 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -34,13 +34,15 @@ open import metric-spaces.rational-neighborhoods ## Idea -An +A [map of metric spaces](metric-spaces.functions-metric-spaces.md) `f : A → B` +is an {{#concept "isometry" Disambiguation="between metric spaces" Agda=is-isometry-Metric-Space}} -between two [metric spaces](metric-spaces.metric-spaces.md) is an -[isometry](metric-spaces.isometries-pseudometric-spaces.md) between their -[pseudometric spaces](metric-spaces.pseudometric-spaces.md), 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`. +if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) +on `A` is equivalent to the +[preimage](metric-spaces.preimage-rational-neighborhoods.md) under `f` of the +rational neighborhood relation on `B`. In other words, `f` is an isometry if it +is an [isometry](metric-spaces.isometries-pseudometric-spaces.md) between the +underlying [pseudometric spaces](metric-spaces.pseudometric-spaces.md). ## Definitions From 05e8470336fa5719100bf966a8e9c066e53c15cf Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 22:18:52 +0200 Subject: [PATCH 091/151] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../cauchy-approximations-metric-spaces.lagda.md | 10 +++++----- .../continuous-functions-metric-spaces.lagda.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 66e7d9c7d2..ce75b9861d 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -30,9 +30,9 @@ open import metric-spaces.short-functions-metric-spaces A {{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space}} 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.rational-neighborhoods.md), i.e. the +[`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the carrier +type of `A` such that for all `(ε δ : ℚ⁺)`, `f ε` and `f δ` are in a +(`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. ## Definitions @@ -101,7 +101,7 @@ module _ (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Metric-Space A (ε +ℚ⁺ δ) x) ``` -### Short maps between metric spaces are functorial on Cauchy approximations +### The action of short maps on Cauchy approximations ```agda module _ @@ -155,7 +155,7 @@ module _ eq-comp-map-short-function-cauchy-approximation-Metric-Space = refl ``` -### Homotopic cauchy approximations are equal +### Homotopic Cauchy approximations are equal ```agda module _ diff --git a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md index 239e8cfec0..5ba1f799d9 100644 --- a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md @@ -32,7 +32,7 @@ A [function](metric-spaces.functions-metric-spaces.md) `f` between 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 +`m ε`-neighborhood of `x`, `f x'` is in an `ε`-neighborhood of `f x`. In this case, `m` is called a modulus of continuity of `f` at `x`. ## Definitions From d5a744db17a6db8315772705f7c081fb70a564ea Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 11 Aug 2025 23:11:56 +0200 Subject: [PATCH 092/151] fix name & format --- .../continuous-functions-metric-spaces.lagda.md | 4 ++-- .../disjoint-sums-metric-spaces.lagda.md | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md index 5ba1f799d9..7cca512ea9 100644 --- a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md @@ -32,8 +32,8 @@ A [function](metric-spaces.functions-metric-spaces.md) `f` between 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`. In this case, `m` is -called a modulus of continuity of `f` at `x`. +`m ε`-neighborhood of `x`, `f x'` is in an `ε`-neighborhood of `f x`. In this +case, `m` is called a modulus of continuity of `f` at `x`. ## Definitions diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index 053895d375..697ffad575 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -280,14 +280,14 @@ module _ is-short-function-Metric-Space ( P x) ( Σ-Metric-Space A P) - ( emb-fiber-Σ-Metric-Space A P x) + ( map-emb-fiber-Σ-Metric-Space A P x) is-short-emb-fiber-Σ-Metric-Space d px px' Nxx' = ( refl , Nxx') short-emb-fiber-Σ-Metric-Space : short-function-Metric-Space (P x) (Σ-Metric-Space A P) short-emb-fiber-Σ-Metric-Space = - ( emb-fiber-Σ-Metric-Space A P x) , + ( map-emb-fiber-Σ-Metric-Space A P x) , ( is-short-emb-fiber-Σ-Metric-Space) reflects-neighborhood-emb-fiber-Σ-Metric-Space : @@ -295,8 +295,8 @@ module _ neighborhood-Metric-Space ( Σ-Metric-Space A P) ( d) - ( emb-fiber-Σ-Metric-Space A P x px) - ( emb-fiber-Σ-Metric-Space A P x px') → + ( map-emb-fiber-Σ-Metric-Space A P x px) + ( map-emb-fiber-Σ-Metric-Space A P x px') → neighborhood-Metric-Space ( P x) ( d) @@ -320,7 +320,7 @@ module _ is-isometry-Metric-Space ( P x) ( Σ-Metric-Space A P) - ( emb-fiber-Σ-Metric-Space A P x) + ( map-emb-fiber-Σ-Metric-Space A P x) is-isometry-emb-fiber-Σ-Metric-Space d px px' = ( is-short-emb-fiber-Σ-Metric-Space d px px') , ( reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px') @@ -328,6 +328,6 @@ module _ isometry-emb-fiber-Σ-Metric-Space : isometry-Metric-Space (P x) (Σ-Metric-Space A P) isometry-emb-fiber-Σ-Metric-Space = - ( emb-fiber-Σ-Metric-Space A P x) , + ( map-emb-fiber-Σ-Metric-Space A P x) , ( is-isometry-emb-fiber-Σ-Metric-Space) ``` From ee258a2dbcd13be1b491b7b1f92b4b53733b799f Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 12 Aug 2025 01:15:16 +0200 Subject: [PATCH 093/151] use pseudometric-spaces in limits-cauchy-approximations-metric-spaces --- ...uchy-approximations-metric-spaces.lagda.md | 70 +++++-------------- 1 file changed, 18 insertions(+), 52 deletions(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index a460889360..72f5035aad 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -18,6 +18,7 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces open import metric-spaces.metric-spaces ``` @@ -32,6 +33,13 @@ A [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) of `x` for all `ε δ : ℚ⁺`. +These are +[limits](metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces.md) +in the underlying [pseudometric space](metric-spaces.pseudometric-spaces.md) +but, because metric spaces are +[extensional](metric-spaces.extensional-pseudometric-spaces.md), all limits of a +Cauchy approximation in a metric space are equal. + ## Definitions ### The property of having a limit in a metric space @@ -44,18 +52,10 @@ module _ is-limit-cauchy-approximation-prop-Metric-Space : type-Metric-Space A → Prop l2 - is-limit-cauchy-approximation-prop-Metric-Space lim = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( ℚ⁺) - ( λ δ → - neighborhood-prop-Metric-Space - ( A) - ( ε +ℚ⁺ δ) - ( map-cauchy-approximation-Metric-Space A f ε) - ( lim))) + is-limit-cauchy-approximation-prop-Metric-Space = + is-limit-cauchy-approximation-prop-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( f) is-limit-cauchy-approximation-Metric-Space : type-Metric-Space A → UU l2 @@ -78,46 +78,12 @@ module _ is-limit-cauchy-approximation-Metric-Space A f x → is-limit-cauchy-approximation-Metric-Space A f y → sim-Metric-Space A x y - all-sim-is-limit-cauchy-approximation-Metric-Space 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 A f θ - - Nεx : neighborhood-Metric-Space A ε fθ x - Nεx = - tr - ( is-upper-bound-dist-Metric-Space A fθ x) - ( right-diff-law-add-ℚ⁺ θ ε θ<ε) - ( lim-x θ ε') - - Nδy : neighborhood-Metric-Space A δ fθ y - Nδy = - tr - ( is-upper-bound-dist-Metric-Space A fθ y) - ( right-diff-law-add-ℚ⁺ θ δ θ<δ) - ( lim-y θ δ') - - Nxy : neighborhood-Metric-Space A (ε +ℚ⁺ δ) x y - Nxy = - triangular-neighborhood-Metric-Space - ( A) - ( x) - ( fθ) - ( y) - ( ε) - ( δ) - ( Nδy) - ( symmetric-neighborhood-Metric-Space A ε fθ x Nεx) - in - tr - ( is-upper-bound-dist-Metric-Space A x y) - ( ε+δ=d) - ( Nxy) + all-sim-is-limit-cauchy-approximation-Metric-Space = + all-sim-is-limit-cauchy-approximation-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( f) + ( x) + ( y) all-eq-is-limit-cauchy-approximation-Metric-Space : is-limit-cauchy-approximation-Metric-Space A f x → From c25a0aae1141e951d9dfae49dce2ae2ae9f7c669 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 12 Aug 2025 01:15:44 +0200 Subject: [PATCH 094/151] use pseudometric-spaces in equality-of-metric-spaces --- .../equality-of-metric-spaces.lagda.md | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index d1f78aa863..7086812cb2 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -66,8 +66,9 @@ module _ isometric-eq-Metric-Space : UU (lsuc l1 ⊔ l2 ⊔ l2') isometric-eq-Metric-Space = - Σ ( type-Metric-Space A = type-Metric-Space B) - ( λ e → is-isometry-Metric-Space A B (map-eq e)) + isometric-eq-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ``` ### Isometric equivalence of metric spaces @@ -80,8 +81,9 @@ module _ isometric-equiv-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space = - Σ ( type-Metric-Space A ≃ type-Metric-Space B) - ( λ e → is-isometry-Metric-Space A B (map-equiv e)) + isometric-equiv-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ``` ### Isometric equivalences between metric spaces @@ -94,8 +96,9 @@ module _ isometric-equiv-Metric-Space' : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometric-equiv-Metric-Space' = - Σ ( type-function-Metric-Space A B) - ( λ f → (is-equiv f) × (is-isometry-Metric-Space A B f)) + isometric-equiv-Pseudometric-Space' + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ``` ## Properties @@ -153,12 +156,9 @@ module _ equiv-isometric-eq-equiv-Metric-Space : isometric-eq-Metric-Space A B ≃ isometric-equiv-Metric-Space A B equiv-isometric-eq-equiv-Metric-Space = - equiv-Σ - ( λ e → is-isometry-Metric-Space A B (map-equiv e)) - ( equiv-univalence) - ( λ (e : type-Metric-Space A = type-Metric-Space B) → - equiv-eq - (ap (is-isometry-Metric-Space A B) (eq-htpy (λ x → refl)))) + equiv-isometric-eq-equiv-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ``` ### Isometric equivalences of metric spaces characterize their equalities @@ -204,15 +204,9 @@ module _ equiv-isometric-equiv-isometric-equiv-Metric-Space' : isometric-equiv-Metric-Space A B ≃ isometric-equiv-Metric-Space' A B equiv-isometric-equiv-isometric-equiv-Metric-Space' = - ( equiv-tot - ( λ f → - equiv-tot - ( λ e → - equiv-eq (ap (is-isometry-Metric-Space A B) refl)))) ∘e - ( associative-Σ - ( type-function-Metric-Space A B) - ( is-equiv) - ( is-isometry-Metric-Space A B ∘ map-equiv)) + equiv-isometric-equiv-isometric-equiv-Pseudometric-Space' + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ``` ### Isometric equivalences between metric spaces characterize their equality From bc56447d4fbc8613a9c27e10463750a8aa401685 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 12 Aug 2025 01:30:47 +0200 Subject: [PATCH 095/151] rename `extensionality-pseudometric-spaces` --- src/metric-spaces.lagda.md | 2 +- src/metric-spaces/dependent-products-metric-spaces.lagda.md | 2 +- src/metric-spaces/discrete-metric-spaces.lagda.md | 2 +- src/metric-spaces/disjoint-sums-metric-spaces.lagda.md | 2 +- src/metric-spaces/equality-of-metric-spaces.lagda.md | 2 +- ...s.lagda.md => extensionality-pseudometric-spaces.lagda.md} | 2 +- .../limits-of-cauchy-approximations-metric-spaces.lagda.md | 4 ++-- src/metric-spaces/metric-space-of-rational-numbers.lagda.md | 2 +- src/metric-spaces/metric-spaces.lagda.md | 4 ++-- src/metric-spaces/subspaces-metric-spaces.lagda.md | 2 +- src/real-numbers/metric-space-of-real-numbers.lagda.md | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) rename src/metric-spaces/{extensional-pseudometric-spaces.lagda.md => extensionality-pseudometric-spaces.lagda.md} (98%) diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 18906db20b..538b6a998a 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -61,7 +61,7 @@ open import metric-spaces.disjoint-sums-metric-spaces 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-pseudometric-spaces public -open import metric-spaces.extensional-pseudometric-spaces public +open import metric-spaces.extensionality-pseudometric-spaces public open import metric-spaces.functions-metric-spaces public open import metric-spaces.functions-pseudometric-spaces public open import metric-spaces.functor-category-set-functions-isometry-metric-spaces public diff --git a/src/metric-spaces/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index 71c87d028d..94af8bb6b8 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -18,7 +18,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.monotonic-rational-neighborhoods diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index 899a38965e..cbdd0f34d4 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -34,7 +34,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.equality-of-metric-spaces -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.locally-constant-functions-metric-spaces open import metric-spaces.metric-spaces diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index 697ffad575..feadd14188 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -25,7 +25,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 7086812cb2..da2d74ce3a 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -26,7 +26,7 @@ open import foundation.univalence open import foundation.universe-levels open import metric-spaces.equality-of-pseudometric-spaces -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces diff --git a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md b/src/metric-spaces/extensionality-pseudometric-spaces.lagda.md similarity index 98% rename from src/metric-spaces/extensional-pseudometric-spaces.lagda.md rename to src/metric-spaces/extensionality-pseudometric-spaces.lagda.md index d10ff6ce86..3815780086 100644 --- a/src/metric-spaces/extensional-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensionality-pseudometric-spaces.lagda.md @@ -1,7 +1,7 @@ # Extensionality of pseudometric spaces ```agda -module metric-spaces.extensional-pseudometric-spaces where +module metric-spaces.extensionality-pseudometric-spaces where ```
Imports diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 72f5035aad..f91d8a34cf 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -37,8 +37,8 @@ These are [limits](metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces.md) in the underlying [pseudometric space](metric-spaces.pseudometric-spaces.md) but, because metric spaces are -[extensional](metric-spaces.extensional-pseudometric-spaces.md), all limits of a -Cauchy approximation in a metric space are equal. +[extensional](metric-spaces.extensionality-pseudometric-spaces.md), all limits +of a Cauchy approximation in a metric space are equal. ## Definitions diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index bf63cb4ca5..fbfbe34f22 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -38,7 +38,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.lipschitz-functions-metric-spaces diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index 2eb2caa4c8..748cea4a33 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -24,7 +24,7 @@ open import foundation.type-arithmetic-dependent-pair-types open import foundation.univalence open import foundation.universe-levels -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.preimage-rational-neighborhoods open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods @@ -77,7 +77,7 @@ The neighborhood relation on a metric space must satisfy the following axioms: This gives `A` the structure of a [**pseudometric space**](metric-spaces.pseudometric-spaces.md); finally, we ask that our metric spaces are -[**extensional**](metric-spaces.extensional-pseudometric-spaces.md): +[**extensional**](metric-spaces.extensionality-pseudometric-spaces.md): [similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) elements are [equal](foundation-core.identity-types.md): diff --git a/src/metric-spaces/subspaces-metric-spaces.lagda.md b/src/metric-spaces/subspaces-metric-spaces.lagda.md index 035f57bd63..ff9f40b375 100644 --- a/src/metric-spaces/subspaces-metric-spaces.lagda.md +++ b/src/metric-spaces/subspaces-metric-spaces.lagda.md @@ -13,7 +13,7 @@ open import foundation.logical-equivalences open import foundation.subtypes open import foundation.universe-levels -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces diff --git a/src/real-numbers/metric-space-of-real-numbers.lagda.md b/src/real-numbers/metric-space-of-real-numbers.lagda.md index c0b1a4b244..bbce8fb9b8 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -28,7 +28,7 @@ open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import metric-spaces.extensional-pseudometric-spaces +open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.metric-spaces From 24c939cf8d1f945aefb5c063e7eeca06361026e8 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 12 Aug 2025 01:48:32 +0200 Subject: [PATCH 096/151] fix parenthesis pairs --- .../disjoint-sums-metric-spaces.lagda.md | 16 ++++++++-------- .../metric-space-of-rational-numbers.lagda.md | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md index feadd14188..8ed1419399 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md @@ -124,7 +124,7 @@ module _ is-saturated-Rational-Neighborhood-Relation neighborhood-prop-Σ-Metric-Space is-saturated-neighborhood-Σ-Metric-Space d (x , Px) (y , Py) H = - x=y , lemma-neighborhood-Σ + ( x=y , lemma-neighborhood-Σ) where x=y : x = y @@ -166,8 +166,8 @@ module _ pseudometric-space-Σ-Metric-Space : Pseudometric-Space (la ⊔ lp) (la ⊔ lp') pseudometric-space-Σ-Metric-Space = - ( type-Σ-Metric-Space) , - ( neighborhood-prop-Σ-Metric-Space , + ( type-Σ-Metric-Space , + neighborhood-prop-Σ-Metric-Space , is-reflexive-neighborhood-Σ-Metric-Space , is-symmetric-neighborhood-Σ-Metric-Space , is-triangular-neighborhood-Σ-Metric-Space , @@ -236,7 +236,7 @@ module _ map-emb-fiber-Σ-Metric-Space : (x : type-Metric-Space A) → - type-Metric-Space ( P x) → + type-Metric-Space (P x) → type-Σ-Metric-Space map-emb-fiber-Σ-Metric-Space x px = (x , px) ``` @@ -322,12 +322,12 @@ module _ ( Σ-Metric-Space A P) ( map-emb-fiber-Σ-Metric-Space A P x) is-isometry-emb-fiber-Σ-Metric-Space d px px' = - ( is-short-emb-fiber-Σ-Metric-Space d px px') , - ( reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px') + ( is-short-emb-fiber-Σ-Metric-Space d px px' , + reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px') isometry-emb-fiber-Σ-Metric-Space : isometry-Metric-Space (P x) (Σ-Metric-Space A P) isometry-emb-fiber-Σ-Metric-Space = - ( map-emb-fiber-Σ-Metric-Space A P x) , - ( is-isometry-emb-fiber-Σ-Metric-Space) + ( map-emb-fiber-Σ-Metric-Space A P x , + is-isometry-emb-fiber-Σ-Metric-Space) ``` diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index fbfbe34f22..aef364ebc2 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -164,11 +164,11 @@ is-saturated-neighborhood-ℚ ε x y H = pseudometric-space-ℚ : Pseudometric-Space lzero lzero pr1 pseudometric-space-ℚ = ℚ pr2 pseudometric-space-ℚ = - neighborhood-prop-ℚ , - is-reflexive-neighborhood-ℚ , - is-symmetric-neighborhood-ℚ , - is-triangular-neighborhood-ℚ , - is-saturated-neighborhood-ℚ + ( neighborhood-prop-ℚ , + is-reflexive-neighborhood-ℚ , + is-symmetric-neighborhood-ℚ , + is-triangular-neighborhood-ℚ , + is-saturated-neighborhood-ℚ) is-tight-pseudometric-space-ℚ : is-tight-Pseudometric-Space pseudometric-space-ℚ From 69e013a6b3a3fc50254f5e703bc4fd31eda872b1 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 12 Aug 2025 15:11:59 +0200 Subject: [PATCH 097/151] rename/refactor indexed sums of metric spaces --- src/metric-spaces.lagda.md | 2 +- .../discrete-metric-spaces.lagda.md | 12 ++-- ...md => indexed-sums-metric-spaces.lagda.md} | 55 ++++++++++--------- 3 files changed, 35 insertions(+), 34 deletions(-) rename src/metric-spaces/{disjoint-sums-metric-spaces.lagda.md => indexed-sums-metric-spaces.lagda.md} (88%) diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 538b6a998a..d6628fe81a 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -57,7 +57,6 @@ open import metric-spaces.convergent-cauchy-approximations-metric-spaces public open import metric-spaces.convergent-sequences-metric-spaces public open import metric-spaces.dependent-products-metric-spaces public open import metric-spaces.discrete-metric-spaces public -open import metric-spaces.disjoint-sums-metric-spaces 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-pseudometric-spaces public @@ -66,6 +65,7 @@ open import metric-spaces.functions-metric-spaces public open import metric-spaces.functions-pseudometric-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 +open import metric-spaces.indexed-sums-metric-spaces public open import metric-spaces.isometries-metric-spaces public open import metric-spaces.isometries-pseudometric-spaces public open import metric-spaces.limits-of-cauchy-approximations-metric-spaces public diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index cbdd0f34d4..697dea9686 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -164,12 +164,12 @@ module _ discrete-pseudometric-Set : Pseudometric-Space l l discrete-pseudometric-Set = - ( type-Set A) , - ( discrete-neighborhood-prop-Set) , - ( is-reflexive-discrete-neighborhood-Set) , - ( is-symmetric-discrete-neighborhood-Set) , - ( is-triangluar-discrete-neighborhood-Set) , - ( is-saturated-discrete-neighborhood-Set) + ( type-Set A , + discrete-neighborhood-prop-Set , + is-reflexive-discrete-neighborhood-Set , + is-symmetric-discrete-neighborhood-Set , + is-triangluar-discrete-neighborhood-Set , + is-saturated-discrete-neighborhood-Set) is-tight-discrete-pseudometric-space-Set : is-tight-Pseudometric-Space discrete-pseudometric-Set diff --git a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md similarity index 88% rename from src/metric-spaces/disjoint-sums-metric-spaces.lagda.md rename to src/metric-spaces/indexed-sums-metric-spaces.lagda.md index 8ed1419399..779f404e15 100644 --- a/src/metric-spaces/disjoint-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -1,7 +1,7 @@ -# Disjoint sums of metric spaces +# Indexed sums of metric spaces ```agda -module metric-spaces.disjoint-sums-metric-spaces where +module metric-spaces.indexed-sums-metric-spaces where ```
Imports @@ -25,6 +25,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces +open import metric-spaces.discrete-metric-spaces open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces @@ -47,10 +48,11 @@ open import metric-spaces.triangular-rational-neighborhoods ## Idea The -{{#concept "disjoint sum" Disambiguation="of a type family of metric spaces" Agda=Σ-Metric-Space}} +{{#concept "indexed sum" Disambiguation="of a type family of metric spaces" Agda=Σ-Metric-Space}} of a type family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a -metric space `A` is the metric space with underlying type `Σ A P` and the -[neighborhood relation](metric-spaces.rational-neighborhoods.md) defined as: +[set](foundation.sets.md) `A` is the metric space with underlying type `Σ A P` +and the [neighborhood relation](metric-spaces.rational-neighborhoods.md) defined +as: `(x , Px)` is `d`-neighbor of `(y , Py)` if and only if `x` is [equal](foundation.identity-types.md) to `y` and the @@ -64,25 +66,24 @@ and for any `x : A` the embedding `P x → Σ A P` is an ## Definitions -### Disjoint sum of metric spaces +### Indexed sum of metric spaces ```agda module _ - {la la' lp lp' : Level} - (A : Metric-Space la la') - (P : type-Metric-Space A → Metric-Space lp lp') + {la lp lp' : Level} + (A : Set la) + (P : type-Set A → Metric-Space lp lp') where type-Σ-Metric-Space : UU (la ⊔ lp) - type-Σ-Metric-Space = - Σ (type-Metric-Space A) (type-Metric-Space ∘ P) + type-Σ-Metric-Space = Σ (type-Set A) (type-Metric-Space ∘ P) neighborhood-prop-Σ-Metric-Space : Rational-Neighborhood-Relation (la ⊔ lp') type-Σ-Metric-Space neighborhood-prop-Σ-Metric-Space d (x , Px) (y , Py) = Σ-Prop ( Id-Prop - ( set-Metric-Space A) + ( A) ( x) ( y)) ( λ e → @@ -134,7 +135,7 @@ module _ (δ : ℚ⁺) → pr1 (H δ) = x=y all-eq-x=y δ = is-set-has-uip - ( is-set-type-Set (set-Metric-Space A)) + ( is-set-type-Set A) ( x) ( y) ( pr1 (H δ)) @@ -201,7 +202,7 @@ module _ (δ : ℚ⁺) → pr1 (H δ) = x=y all-eq-x=y δ = is-set-has-uip - ( is-set-type-Set (set-Metric-Space A)) + ( is-set-type-Set A) ( x) ( y) ( pr1 (H δ)) @@ -226,7 +227,7 @@ module _ is-extensional-pseudometric-space-Σ-Metric-Space base-point-Σ-Metric-Space : - type-function-Metric-Space Σ-Metric-Space A + type-Metric-Space Σ-Metric-Space → type-Set A base-point-Σ-Metric-Space = pr1 fiber-point-Σ-Metric-Space : @@ -235,7 +236,7 @@ module _ fiber-point-Σ-Metric-Space = pr2 map-emb-fiber-Σ-Metric-Space : - (x : type-Metric-Space A) → + (x : type-Set A) → type-Metric-Space (P x) → type-Σ-Metric-Space map-emb-fiber-Σ-Metric-Space x px = (x , px) @@ -243,24 +244,24 @@ module _ ## Properties -### The projection on the first component of a dependent sum of metric spaces is locally constant +### The projection on the first component of a indexed of metric spaces is locally constant ```agda module _ - {la la' lp lp' : Level} - (A : Metric-Space la la') - (P : type-Metric-Space A → Metric-Space lp lp') + {la lp lp' : Level} + (A : Set la) + (P : type-Set A → Metric-Space lp lp') where is-locally-constant-base-point-Σ-Metric-Space : is-locally-constant-function-Metric-Space ( Σ-Metric-Space A P) - ( A) + ( metric-space-discrete-metric-space-Set A) ( base-point-Σ-Metric-Space A P) is-locally-constant-base-point-Σ-Metric-Space x y = elim-exists ( Id-Prop - ( set-Metric-Space A) + ( A) ( base-point-Σ-Metric-Space A P x) ( base-point-Σ-Metric-Space A P y)) ( λ d Nxy → pr1 Nxy) @@ -270,10 +271,10 @@ module _ ```agda module _ - {la la' lp lp' : Level} - (A : Metric-Space la la') - (P : type-Metric-Space A → Metric-Space lp lp') - (x : type-Metric-Space A) + {la lp lp' : Level} + (A : Set la) + (P : type-Set A → Metric-Space lp lp') + (x : type-Set A) where is-short-emb-fiber-Σ-Metric-Space : @@ -311,7 +312,7 @@ module _ ( tr (type-Metric-Space ∘ P) e' px) ( px')) ( axiom-K-is-set - ( is-set-type-Set (set-Metric-Space A)) + ( is-set-type-Set A) ( x) ( e)) ( Nxx') From 2aef7b88d5b8d5788fee91928cae1fb26ae22488 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:51:12 +0200 Subject: [PATCH 098/151] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...uchy-approximations-metric-spaces.lagda.md | 11 ++-- .../isometries-pseudometric-spaces.lagda.md | 52 +++++++------------ .../monotonic-rational-neighborhoods.lagda.md | 4 +- .../preimage-rational-neighborhoods.lagda.md | 10 ++-- .../pseudometric-spaces.lagda.md | 2 +- 5 files changed, 29 insertions(+), 50 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index ce75b9861d..2eeb402a90 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -46,14 +46,9 @@ module _ is-cauchy-approximation-prop-Metric-Space : (ℚ⁺ → type-Metric-Space A) → Prop l2 - is-cauchy-approximation-prop-Metric-Space f = - Π-Prop - ( ℚ⁺) - ( λ ε → - Π-Prop - ( ℚ⁺) - ( λ δ → - neighborhood-prop-Metric-Space A (ε +ℚ⁺ δ) (f ε) (f δ))) + is-cauchy-approximation-prop-Metric-Space = + is-cauchy-approximation-prop-Pseudometric-Space + ( pseudometric-space-Metric-Space A) is-cauchy-approximation-Metric-Space : (ℚ⁺ → type-Metric-Space A) → UU l2 diff --git a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md index 60f0bc9e5c..71c4709224 100644 --- a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md @@ -113,7 +113,7 @@ module _ isometry-id-Pseudometric-Space : isometry-Pseudometric-Space A A isometry-id-Pseudometric-Space = - id-Pseudometric-Space A , is-isometry-id-Pseudometric-Space + ( id-Pseudometric-Space A , is-isometry-id-Pseudometric-Space) ``` ### Equality of isometries in pseudometric spaces is equivalent to homotopies between their carrier maps @@ -244,7 +244,7 @@ module _ (isometry-id-Pseudometric-Space B) ( f)) ( f) - ( λ x → refl) + ( refl-htpy) right-unit-law-comp-isometry-Pseudometric-Space : ( comp-isometry-Pseudometric-Space A A B @@ -262,7 +262,7 @@ module _ ( B) ( f) ( isometry-id-Pseudometric-Space A)) - ( λ x → refl) + ( refl-htpy) ``` ### Associativity of composition of isometries between pseudometric spaces @@ -296,7 +296,7 @@ module _ ( comp-isometry-Pseudometric-Space A C D ( h) ( comp-isometry-Pseudometric-Space A B C g f)) - ( λ x → refl) + ( refl-htpy) ``` ### The inverse of an isometric equivalence is an isometry @@ -352,44 +352,28 @@ module _ ( E)) is-section-isometry-inv-is-equiv-isometry-Pseudometric-Space : - ( comp-isometry-Pseudometric-Space - B - A - B - f - isometry-inv-is-equiv-isometry-Pseudometric-Space) = + ( comp-isometry-Pseudometric-Space B A B + ( f) + ( isometry-inv-is-equiv-isometry-Pseudometric-Space)) = ( isometry-id-Pseudometric-Space B) is-section-isometry-inv-is-equiv-isometry-Pseudometric-Space = - eq-htpy-map-isometry-Pseudometric-Space - ( B) - ( B) - ( comp-isometry-Pseudometric-Space - B - A - B - f - isometry-inv-is-equiv-isometry-Pseudometric-Space) + eq-htpy-map-isometry-Pseudometric-Space B B + ( comp-isometry-Pseudometric-Space B A B + ( f) + ( isometry-inv-is-equiv-isometry-Pseudometric-Space)) ( isometry-id-Pseudometric-Space B) ( is-section-map-inv-is-equiv E) is-retraction-isometry-inv-is-equiv-isometry-Pseudometric-Space : - ( comp-isometry-Pseudometric-Space - A - B - A - isometry-inv-is-equiv-isometry-Pseudometric-Space - f) = + ( comp-isometry-Pseudometric-Space A B A + ( isometry-inv-is-equiv-isometry-Pseudometric-Space) + ( f)) = ( isometry-id-Pseudometric-Space A) is-retraction-isometry-inv-is-equiv-isometry-Pseudometric-Space = - eq-htpy-map-isometry-Pseudometric-Space - ( A) - ( A) - ( comp-isometry-Pseudometric-Space - A - B - A - isometry-inv-is-equiv-isometry-Pseudometric-Space - f) + eq-htpy-map-isometry-Pseudometric-Space A A + ( comp-isometry-Pseudometric-Space A B A + ( isometry-inv-is-equiv-isometry-Pseudometric-Space) + ( f)) ( isometry-id-Pseudometric-Space A) ( is-retraction-map-inv-is-equiv E) ``` diff --git a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md index 9001cf5661..04f69270b9 100644 --- a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md @@ -1,4 +1,4 @@ -# Monotonic rational neighborhoods on types +# Monotonic rational neighborhood relations ```agda module metric-spaces.monotonic-rational-neighborhoods where @@ -21,7 +21,7 @@ open import metric-spaces.rational-neighborhoods A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is {{#concept "monotonic" Disambiguation="rational neighborhood relation" Agda=is-monotonic-Rational-Neighborhood-Relation}} -if all `d₁`-neighborhoods are `d₂`-neighborhoods for `d₁ < d₂`. +if, for all `d₁ < d₂`, all `d₁`-neighborhoods are `d₂`-neighborhoods. ## Definitions diff --git a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md index d79c430d01..a20e7dedc3 100644 --- a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md @@ -1,4 +1,4 @@ -# Preimage of rational neighborhood relations along maps +# Preimages of rational neighborhood relations along maps ```agda module metric-spaces.preimage-rational-neighborhoods where @@ -25,12 +25,12 @@ open import metric-spaces.triangular-rational-neighborhoods ## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` -on a type `B` and map `f : A → B` define a rational neighborhood relation on `A` -where `x y : A` are `d`-neighbors if `f x` and `f y` are `d`-neighbors in `U`. +Given a [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` +on a type `B` and map `f : A → B`, then we may define a rational neighborhood relation `f⁻¹U` on `A` +where `x y : A` are `d`-neighbors in `f⁻¹U` 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`. +of `U` along `f`. ## Definitions diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index c893866cb1..74657f6167 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -50,7 +50,7 @@ with a {{concept "pseudometric structure" Agda=Pseudometric-Structure}}: a [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 +Given a pseudometric structure `B` on `A` and some [positive rational number](elementary-number-theory.positive-rational-numbers.md) `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}} From cf93105bd54c9a4a8ae5546d7c92d85720563bc6 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:53:20 +0200 Subject: [PATCH 099/151] Update src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../limits-of-cauchy-approximations-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index f91d8a34cf..1aa828daa6 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -31,7 +31,7 @@ A [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) {{#concept "limit" Disambiguation="of a Cauchy approximation in a metric space" Agda=is-limit-cauchy-approximation-Metric-Space}} `x : A` if `f ε` is near `x` for small `ε : ℚ⁺`. More precisely, `f` has a limit if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) -of `x` for all `ε δ : ℚ⁺`. +of `x` for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`. These are [limits](metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces.md) From 5e1105febc2dd1a5739ec2b064605d25196b8608 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:54:18 +0200 Subject: [PATCH 100/151] Update src/metric-spaces/ordering-rational-neighborhoods.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/ordering-rational-neighborhoods.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md index 77213c10b8..0776c9a0c2 100644 --- a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md @@ -33,7 +33,7 @@ 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 +their distance in `V`. This defines a [partial order](order-theory.posets.md) on the type of rational neighborhood relations on `A`. ## Definitions From 16bfbc38ad49d0ca0e4a6b4e02a7653d3b4244dc Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:55:36 +0200 Subject: [PATCH 101/151] Update src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- .../cauchy-completeness-dedekind-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md index 848a033d5e..5056bfa793 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -93,7 +93,7 @@ is-cauchy-map-cauchy-approximation-ℝ {l} x = ## Properties -### The limit of a Cauchy approximation in `ℝ` +### The limit of a Cauchy approximation in ℝ ```agda module _ From 7acaa433b92d1550f96d9c33d9f47f1720afc82d Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:56:09 +0200 Subject: [PATCH 102/151] Update src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- .../cauchy-completeness-dedekind-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md index 5056bfa793..ea2f866ab9 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -532,7 +532,7 @@ pr1 (complete-metric-space-ℝ l) = metric-space-ℝ l pr2 (complete-metric-space-ℝ l) = is-complete-metric-space-ℝ l ``` -### Limits of Cauchy sequences in `ℝ` +### Limits of Cauchy sequences in ℝ ```agda cauchy-sequence-ℝ : (l : Level) → UU (lsuc l) From c97f3d07a30244bbf7fbcbca97ee803b8e681398 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:57:26 +0200 Subject: [PATCH 103/151] Update src/metric-spaces/rational-neighborhoods.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/rational-neighborhoods.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhoods.lagda.md index 070ea3a62e..3f6c4dc626 100644 --- a/src/metric-spaces/rational-neighborhoods.lagda.md +++ b/src/metric-spaces/rational-neighborhoods.lagda.md @@ -51,7 +51,7 @@ relation. ## Definitions -### Rational neighborhood relation on a type +### Rational neighborhood relations on a type ```agda module _ From 4399b116089c3202791e0aae08d8fcb1bb25aacb Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 04:07:02 +0200 Subject: [PATCH 104/151] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../cauchy-approximations-metric-spaces.lagda.md | 2 +- .../cauchy-approximations-pseudometric-spaces.lagda.md | 2 +- src/metric-spaces/indexed-sums-metric-spaces.lagda.md | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 2eeb402a90..93858563df 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -31,7 +31,7 @@ A {{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space}} in a [metric space](metric-spaces.metric-spaces.md) `A` is a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the carrier -type of `A` such that for all `(ε δ : ℚ⁺)`, `f ε` and `f δ` are in a +type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 440340d7ad..ce0f9c0b78 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -30,7 +30,7 @@ A {{#concept "Cauchy approximation" Disambiguation="in a pseudometric space" Agda=is-cauchy-approximation-Pseudometric-Space}} in a [pseudometric space](metric-spaces.pseudometric-spaces.md) `A` is a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the -carrier type of `A` such that for all `(ε δ : ℚ⁺)`, `f ε` and `f δ` are in a +carrier type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index 779f404e15..e8e04e8fca 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -52,12 +52,12 @@ The of a type family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a [set](foundation.sets.md) `A` is the metric space with underlying type `Σ A P` and the [neighborhood relation](metric-spaces.rational-neighborhoods.md) defined -as: +by: -`(x , Px)` is `d`-neighbor of `(y , Py)` if and only if `x` is +The pair `(x , x')` is a `d`-neighbor of `(y , y')` if and only if `x` is [equal](foundation.identity-types.md) to `y` and the -[transport](foundation.transport-along-identifications.md) of `Px` along this -identification is a `d`-neighbor of `y` in `P y`. +[transport](foundation.transport-along-identifications.md) of `x'` along this +identification is a `d`-neighbor of `y'` in `P y`. The [projection](foundation.dependent-pair-types.md) on the first component is [locally constant](metric-spaces.locally-constant-functions-metric-spaces.md), From 45fc8ce638dc7cef774dbae405384add5b8be36c Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 03:53:55 +0200 Subject: [PATCH 105/151] pre-commit --- .../cauchy-approximations-metric-spaces.lagda.md | 4 +++- .../cauchy-approximations-pseudometric-spaces.lagda.md | 4 +++- ...imits-of-cauchy-approximations-metric-spaces.lagda.md | 4 +++- .../ordering-rational-neighborhoods.lagda.md | 4 ++-- .../preimage-rational-neighborhoods.lagda.md | 9 +++++---- src/metric-spaces/pseudometric-spaces.lagda.md | 3 ++- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 93858563df..f4163d49e1 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -31,7 +31,9 @@ A {{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space}} in a [metric space](metric-spaces.metric-spaces.md) `A` is a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the carrier -type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a +type of `A` such that for all +[positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` +and `δ`, `f ε` and `f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index ce0f9c0b78..d70badc7ed 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -30,7 +30,9 @@ A {{#concept "Cauchy approximation" Disambiguation="in a pseudometric space" Agda=is-cauchy-approximation-Pseudometric-Space}} in a [pseudometric space](metric-spaces.pseudometric-spaces.md) `A` is a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the -carrier type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a +carrier type of `A` such that for all +[positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` +and `δ`, `f ε` and `f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 1aa828daa6..ae8af9ffb7 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -31,7 +31,9 @@ A [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) {{#concept "limit" Disambiguation="of a Cauchy approximation in a metric space" Agda=is-limit-cauchy-approximation-Metric-Space}} `x : A` if `f ε` is near `x` for small `ε : ℚ⁺`. More precisely, `f` has a limit if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) -of `x` for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`. +of `x` for all +[positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` +and `δ`. These are [limits](metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces.md) diff --git a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md index 0776c9a0c2..8b8eafbbc5 100644 --- a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/ordering-rational-neighborhoods.lagda.md @@ -33,8 +33,8 @@ 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 defines a [partial order](order-theory.posets.md) on the -type of rational neighborhood relations on `A`. +their distance in `V`. This defines a [partial order](order-theory.posets.md) on +the type of rational neighborhood relations on `A`. ## Definitions diff --git a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md index a20e7dedc3..daae74cf64 100644 --- a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/preimage-rational-neighborhoods.lagda.md @@ -25,10 +25,11 @@ open import metric-spaces.triangular-rational-neighborhoods ## Idea -Given a [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` -on a type `B` and map `f : A → B`, then we may define a rational neighborhood relation `f⁻¹U` on `A` -where `x y : A` are `d`-neighbors in `f⁻¹U` if `f x` and `f y` are `d`-neighbors in `U`. -This is the +Given a +[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` on +a type `B` and map `f : A → B`, then we may define a rational neighborhood +relation `f⁻¹U` on `A` where `x y : A` are `d`-neighbors in `f⁻¹U` 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` along `f`. diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index 74657f6167..a44627299e 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -50,7 +50,8 @@ with a {{concept "pseudometric structure" Agda=Pseudometric-Structure}}: a [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](elementary-number-theory.positive-rational-numbers.md) +Given a pseudometric structure `B` on `A` and some +[positive rational number](elementary-number-theory.positive-rational-numbers.md) `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}} From 4217c9c8662619784bb3a9d134562c782b91f36c Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 04:19:08 +0200 Subject: [PATCH 106/151] let-open-do --- ...ontinuous-functions-metric-spaces.lagda.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md index 8874ba1b22..2be122008b 100644 --- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md @@ -157,18 +157,19 @@ module _ is-uniformly-continuous-function-Metric-Space X Y f → is-uniformly-continuous-function-Metric-Space X Z (g ∘ f) is-uniformly-continuous-comp-function-Metric-Space 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 + let open do-syntax-trunc-Prop ( is-uniformly-continuous-prop-function-Metric-Space X Z (g ∘ f)) + in + 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') comp-uniformly-continuous-function-Metric-Space : uniformly-continuous-function-Metric-Space Y Z → From 1c27670399ba4f723dd9af23a7d8f47f3209d506 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 04:41:50 +0200 Subject: [PATCH 107/151] cleanup --- ...uchy-approximations-metric-spaces.lagda.md | 35 +++++++++++-------- ...pproximations-pseudometric-spaces.lagda.md | 6 ++-- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index f4163d49e1..1043c524db 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -19,6 +19,7 @@ open import foundation.propositions open import foundation.subtypes open import foundation.universe-levels +open import metric-spaces.cauchy-approximations-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.short-functions-metric-spaces ``` @@ -29,9 +30,11 @@ open import metric-spaces.short-functions-metric-spaces A {{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space}} -in a [metric space](metric-spaces.metric-spaces.md) `A` is a map `f` from -[`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the carrier -type of `A` such that for all +in a [metric space](metric-spaces.metric-spaces.md) `A` is a +[Cauchy approximation](metric-spaces.cauchy-approximations-pseudometric-spaces.md) +in its underlying [pseudometric-space](metric-spaces.pseudometric-spaces.md): a +map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to +the carrier type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the @@ -50,7 +53,7 @@ module _ (ℚ⁺ → type-Metric-Space A) → Prop l2 is-cauchy-approximation-prop-Metric-Space = is-cauchy-approximation-prop-Pseudometric-Space - ( pseudometric-space-Metric-Space A) + ( pseudometric-Metric-Space A) is-cauchy-approximation-Metric-Space : (ℚ⁺ → type-Metric-Space A) → UU l2 @@ -95,7 +98,9 @@ module _ const-cauchy-approximation-Metric-Space : cauchy-approximation-Metric-Space A const-cauchy-approximation-Metric-Space = - (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Metric-Space A (ε +ℚ⁺ δ) x) + const-cauchy-approximation-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( x) ``` ### The action of short maps on Cauchy approximations @@ -111,16 +116,16 @@ module _ cauchy-approximation-Metric-Space A → cauchy-approximation-Metric-Space B map-short-function-cauchy-approximation-Metric-Space (u , H) = - ( map-short-function-Metric-Space A B f ∘ u) , - ( λ ε δ → - is-short-map-short-function-Metric-Space - ( A) - ( B) - ( f) - ( ε +ℚ⁺ δ) - ( u ε) - ( u δ) - ( H ε δ)) + ( map-short-function-Metric-Space A B f ∘ u , + λ ε δ → + is-short-map-short-function-Metric-Space + ( A) + ( B) + ( f) + ( ε +ℚ⁺ δ) + ( u ε) + ( u δ) + ( H ε δ)) module _ {l1 l2 : Level} diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index d70badc7ed..22655d6646 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -9,7 +9,6 @@ module metric-spaces.cauchy-approximations-pseudometric-spaces where ```agda open import elementary-number-theory.positive-rational-numbers -open import foundation.constant-maps open import foundation.dependent-pair-types open import foundation.function-extensionality open import foundation.function-types @@ -98,8 +97,9 @@ module _ const-cauchy-approximation-Pseudometric-Space : cauchy-approximation-Pseudometric-Space A - const-cauchy-approximation-Pseudometric-Space = - (const ℚ⁺ x) , (λ ε δ → refl-neighborhood-Pseudometric-Space A (ε +ℚ⁺ δ) x) + pr1 const-cauchy-approximation-Pseudometric-Space _ = x + pr2 const-cauchy-approximation-Pseudometric-Space ε δ = + refl-neighborhood-Pseudometric-Space A (ε +ℚ⁺ δ) x ``` ### Homotopic Cauchy approximations are equal From 2bd9e62f6775618b83f88105e53cc25ab9d47382 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 05:18:40 +0200 Subject: [PATCH 108/151] fix credit triangle-inequality --- src/literature/100-theorems.lagda.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md index fa902d6f8d..d859e53b2f 100644 --- a/src/literature/100-theorems.lagda.md +++ b/src/literature/100-theorems.lagda.md @@ -136,11 +136,9 @@ open import elementary-number-theory.fundamental-theorem-of-arithmetic using ### 91. The triangle inequality {#91} -**Author:** [malarbol](https://github.com/malarbol) +**Author:** [Louis Wasserman](https://github.com/lowasser) ```agda -open import real-numbers.metric-space-of-real-numbers using - ( is-triangular-neighborhood-ℝ) open import real-numbers.distance-real-numbers using ( triangle-inequality-dist-ℝ) ``` From 1543d55bed7223c7c44dac76e55517f4ee689eb1 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 05:45:35 +0200 Subject: [PATCH 109/151] fix name preimages-rational-neighborhood-relations --- src/metric-spaces.lagda.md | 2 +- src/metric-spaces/discrete-metric-spaces.lagda.md | 2 +- src/metric-spaces/indexed-sums-metric-spaces.lagda.md | 2 +- src/metric-spaces/isometries-metric-spaces.lagda.md | 10 +++++----- .../isometries-pseudometric-spaces.lagda.md | 6 +++--- src/metric-spaces/metric-spaces.lagda.md | 2 +- ...preimages-rational-neighborhood-relations.lagda.md} | 2 +- src/metric-spaces/pseudometric-spaces.lagda.md | 2 +- .../short-functions-metric-spaces.lagda.md | 6 +++--- 9 files changed, 17 insertions(+), 17 deletions(-) rename src/metric-spaces/{preimage-rational-neighborhoods.lagda.md => preimages-rational-neighborhood-relations.lagda.md} (98%) diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index d6628fe81a..5dfc6981b9 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -89,7 +89,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.preimages-rational-neighborhood-relations public open import metric-spaces.pseudometric-spaces public open import metric-spaces.rational-approximations-of-zero public open import metric-spaces.rational-cauchy-approximations public diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index 697dea9686..ef46e2da72 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -38,7 +38,7 @@ open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.functions-metric-spaces open import metric-spaces.locally-constant-functions-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods open import metric-spaces.reflexive-rational-neighborhoods diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index e8e04e8fca..78e6785a87 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -32,7 +32,7 @@ open import metric-spaces.isometries-metric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.locally-constant-functions-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods open import metric-spaces.reflexive-rational-neighborhoods diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index 2a117b7dd4..70180ced09 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -25,7 +25,7 @@ open import foundation.universe-levels open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-pseudometric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods ``` @@ -39,10 +39,10 @@ is an {{#concept "isometry" Disambiguation="between metric spaces" Agda=is-isometry-Metric-Space}} if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) on `A` is equivalent to the -[preimage](metric-spaces.preimage-rational-neighborhoods.md) under `f` of the -rational neighborhood relation on `B`. In other words, `f` is an isometry if it -is an [isometry](metric-spaces.isometries-pseudometric-spaces.md) between the -underlying [pseudometric spaces](metric-spaces.pseudometric-spaces.md). +[preimage](metric-spaces.preimages-rational-neighborhood-relations.md) under `f` +of the rational neighborhood relation on `B`. In other words, `f` is an isometry +if it is an [isometry](metric-spaces.isometries-pseudometric-spaces.md) between +the underlying [pseudometric spaces](metric-spaces.pseudometric-spaces.md). ## Definitions diff --git a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md index 71c4709224..27ef5dbba0 100644 --- a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md @@ -23,7 +23,7 @@ open import foundation.subtypes open import foundation.universe-levels open import metric-spaces.functions-pseudometric-spaces -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods ``` @@ -37,8 +37,8 @@ A [function](metric-spaces.functions-pseudometric-spaces.md) between {{#concept "isometry" Disambiguation="between pseudometric spaces" Agda=is-isometry-Pseudometric-Space}} if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) on `A` is equivalent to the -[preimage](metric-spaces.preimage-rational-neighborhoods.md) under `f` of the -rational neighborhood relation on `B`. I.e., upper bounds on the distance +[preimage](metric-spaces.preimages-rational-neighborhood-relations.md) under `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`. diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index 748cea4a33..e397488f3f 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -25,7 +25,7 @@ open import foundation.univalence open import foundation.universe-levels open import metric-spaces.extensionality-pseudometric-spaces -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhoods open import metric-spaces.reflexive-rational-neighborhoods diff --git a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md b/src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md similarity index 98% rename from src/metric-spaces/preimage-rational-neighborhoods.lagda.md rename to src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md index daae74cf64..6f2caf04bf 100644 --- a/src/metric-spaces/preimage-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ # Preimages of rational neighborhood relations along maps ```agda -module metric-spaces.preimage-rational-neighborhoods where +module metric-spaces.preimages-rational-neighborhood-relations where ```
Imports diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index a44627299e..f2201fd80a 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -30,7 +30,7 @@ open import foundation.univalence open import foundation.universe-levels open import metric-spaces.monotonic-rational-neighborhoods -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.rational-neighborhoods open import metric-spaces.reflexive-rational-neighborhoods open import metric-spaces.saturated-rational-neighborhoods diff --git a/src/metric-spaces/short-functions-metric-spaces.lagda.md b/src/metric-spaces/short-functions-metric-spaces.lagda.md index 7769aa15f8..2cd87963ea 100644 --- a/src/metric-spaces/short-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces.lagda.md @@ -28,7 +28,7 @@ open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.ordering-rational-neighborhoods -open import metric-spaces.preimage-rational-neighborhoods +open import metric-spaces.preimages-rational-neighborhood-relations ```
@@ -40,8 +40,8 @@ A [function](metric-spaces.functions-metric-spaces.md) `f` between two {{#concept "short" Disambiguation="function between metric spaces" Agda=is-short-function-Metric-Space 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 +[preimage](metric-spaces.preimages-rational-neighborhood-relations.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`. From 3546b61eb9b28ca0383684371a961a7f10a410f0 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 05:50:17 +0200 Subject: [PATCH 110/151] fix name is-point-limit-[...] --- ...ontinuous-functions-metric-spaces.lagda.md | 8 +++---- ...limits-of-functions-metric-spaces.lagda.md | 24 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md index 7cca512ea9..fbebadc76c 100644 --- a/src/metric-spaces/continuous-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/continuous-functions-metric-spaces.lagda.md @@ -48,21 +48,21 @@ module _ is-continuous-at-point-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) is-continuous-at-point-prop-function-Metric-Space = - is-pt-limit-prop-function-Metric-Space X Y f x (f x) + is-point-limit-prop-function-Metric-Space X Y f x (f x) is-continuous-at-point-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) is-continuous-at-point-function-Metric-Space = - is-pt-limit-function-Metric-Space X Y f x (f x) + is-point-limit-function-Metric-Space X Y f x (f x) is-modulus-of-continuity-at-point-prop-function-Metric-Space : (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) is-modulus-of-continuity-at-point-prop-function-Metric-Space = - is-modulus-of-pt-limit-prop-function-Metric-Space X Y f x (f x) + is-modulus-of-point-limit-prop-function-Metric-Space X Y f x (f x) is-modulus-of-continuity-at-point-function-Metric-Space : (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l2 ⊔ l4) is-modulus-of-continuity-at-point-function-Metric-Space = - is-modulus-of-pt-limit-function-Metric-Space X Y f x (f x) + is-modulus-of-point-limit-function-Metric-Space X Y f x (f x) modulus-of-continuity-at-point-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) modulus-of-continuity-at-point-function-Metric-Space = diff --git a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md index 6c93ff5aa0..5e49e6ee82 100644 --- a/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-functions-metric-spaces.lagda.md @@ -27,7 +27,7 @@ open import metric-spaces.metric-spaces 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}} +{{#concept "limit" Disambiguation="of function between metric spaces at a point" Agda=is-point-limit-function-Metric-Space}} `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`. In this case `m` is called a limit modulus of `f` at @@ -45,9 +45,9 @@ module _ (y : type-Metric-Space Y) where - is-modulus-of-pt-limit-prop-function-Metric-Space : + is-modulus-of-point-limit-prop-function-Metric-Space : (ℚ⁺ → ℚ⁺) → Prop (l1 ⊔ l2 ⊔ l4) - is-modulus-of-pt-limit-prop-function-Metric-Space m = + is-modulus-of-point-limit-prop-function-Metric-Space m = Π-Prop ( ℚ⁺) ( λ ε → @@ -57,17 +57,17 @@ module _ neighborhood-prop-Metric-Space X (m ε) x x' ⇒ neighborhood-prop-Metric-Space Y ε y (f x'))) - is-modulus-of-pt-limit-function-Metric-Space : + is-modulus-of-point-limit-function-Metric-Space : (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l2 ⊔ l4) - is-modulus-of-pt-limit-function-Metric-Space m = - type-Prop (is-modulus-of-pt-limit-prop-function-Metric-Space m) + is-modulus-of-point-limit-function-Metric-Space m = + type-Prop (is-modulus-of-point-limit-prop-function-Metric-Space m) - is-pt-limit-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) - is-pt-limit-prop-function-Metric-Space = + is-point-limit-prop-function-Metric-Space : Prop (l1 ⊔ l2 ⊔ l4) + is-point-limit-prop-function-Metric-Space = is-inhabited-subtype-Prop - is-modulus-of-pt-limit-prop-function-Metric-Space + is-modulus-of-point-limit-prop-function-Metric-Space - is-pt-limit-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) - is-pt-limit-function-Metric-Space = - type-Prop is-pt-limit-prop-function-Metric-Space + is-point-limit-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l4) + is-point-limit-function-Metric-Space = + type-Prop is-point-limit-prop-function-Metric-Space ``` From bb7d29f6acca248ae95c68398ce021ba46acbccb Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 16:19:02 +0200 Subject: [PATCH 111/151] fix module names => rational-neighborhood-relations --- src/metric-spaces.lagda.md | 14 ++++----- ...uchy-approximations-metric-spaces.lagda.md | 4 +-- ...pproximations-pseudometric-spaces.lagda.md | 4 +-- .../dependent-products-metric-spaces.lagda.md | 23 +++++++------- .../discrete-metric-spaces.lagda.md | 10 +++--- .../equality-of-metric-spaces.lagda.md | 2 +- .../indexed-sums-metric-spaces.lagda.md | 15 ++++----- .../isometries-metric-spaces.lagda.md | 5 +-- .../isometries-pseudometric-spaces.lagda.md | 5 +-- ...uchy-approximations-metric-spaces.lagda.md | 5 +-- ...pproximations-pseudometric-spaces.lagda.md | 4 +-- ...limits-of-sequences-metric-spaces.lagda.md | 4 +-- .../metric-space-of-rational-numbers.lagda.md | 21 +++++++------ src/metric-spaces/metric-spaces.lagda.md | 31 ++++++++++--------- ...-rational-neighborhood-relations.lagda.md} | 8 +++-- ...-rational-neighborhood-relations.lagda.md} | 9 +++--- ...s-rational-neighborhood-relations.lagda.md | 18 +++++------ .../pseudometric-spaces.lagda.md | 22 ++++++------- ... rational-neighborhood-relations.lagda.md} | 4 +-- ...-rational-neighborhood-relations.lagda.md} | 10 +++--- ...-rational-neighborhood-relations.lagda.md} | 21 +++++++------ .../short-functions-metric-spaces.lagda.md | 15 ++++----- ...y-of-elements-pseudometric-spaces.lagda.md | 4 +-- .../subspaces-metric-spaces.lagda.md | 10 +++--- ...-rational-neighborhood-relations.lagda.md} | 10 +++--- ...-rational-neighborhood-relations.lagda.md} | 14 +++++---- .../metric-space-of-real-numbers.lagda.md | 16 +++++----- 27 files changed, 163 insertions(+), 145 deletions(-) rename src/metric-spaces/{monotonic-rational-neighborhoods.lagda.md => monotonic-rational-neighborhood-relations.lagda.md} (88%) rename src/metric-spaces/{ordering-rational-neighborhoods.lagda.md => poset-of-rational-neighborhood-relations.lagda.md} (94%) rename src/metric-spaces/{rational-neighborhoods.lagda.md => rational-neighborhood-relations.lagda.md} (99%) rename src/metric-spaces/{reflexive-rational-neighborhoods.lagda.md => reflexive-rational-neighborhood-relations.lagda.md} (83%) rename src/metric-spaces/{saturated-rational-neighborhoods.lagda.md => saturated-rational-neighborhood-relations.lagda.md} (91%) rename src/metric-spaces/{symmetric-rational-neighborhoods.lagda.md => symmetric-rational-neighborhood-relations.lagda.md} (83%) rename src/metric-spaces/{triangular-rational-neighborhoods.lagda.md => triangular-rational-neighborhood-relations.lagda.md} (87%) diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 5dfc6981b9..b6ae4a5178 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -84,8 +84,8 @@ open import metric-spaces.metric-space-of-lipschitz-functions-metric-spaces publ open import metric-spaces.metric-space-of-rational-numbers public open import metric-spaces.metric-space-of-short-functions-metric-spaces public open import metric-spaces.metric-spaces public -open import metric-spaces.monotonic-rational-neighborhoods public -open import metric-spaces.ordering-rational-neighborhoods public +open import metric-spaces.monotonic-rational-neighborhood-relations public +open import metric-spaces.poset-of-rational-neighborhood-relations 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 @@ -93,16 +93,16 @@ open import metric-spaces.preimages-rational-neighborhood-relations public open import metric-spaces.pseudometric-spaces 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-neighborhood-relations public open import metric-spaces.rational-sequences-approximating-zero public -open import metric-spaces.reflexive-rational-neighborhoods public -open import metric-spaces.saturated-rational-neighborhoods public +open import metric-spaces.reflexive-rational-neighborhood-relations public +open import metric-spaces.saturated-rational-neighborhood-relations public open import metric-spaces.sequences-metric-spaces public open import metric-spaces.short-functions-metric-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-rational-neighborhoods public -open import metric-spaces.triangular-rational-neighborhoods public +open import metric-spaces.symmetric-rational-neighborhood-relations public +open import metric-spaces.triangular-rational-neighborhood-relations public open import metric-spaces.uniformly-continuous-functions-metric-spaces public ``` diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 1043c524db..46a20ca46f 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -37,8 +37,8 @@ map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) t the carrier type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a -(`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the -distance between `f ε` and `f δ` is bounded by `ε + δ`. +(`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhood-relations.md), +i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. ## Definitions diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 22655d6646..137668d689 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -32,8 +32,8 @@ from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the carrier type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`, `f ε` and `f δ` are in a -(`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhoods.md), i.e., the -distance between `f ε` and `f δ` is bounded by `ε + δ`. +(`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhood-relations.md), +i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. ## Definitions diff --git a/src/metric-spaces/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index 94af8bb6b8..d5bc340326 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -21,14 +21,14 @@ open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.monotonic-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods -open import metric-spaces.reflexive-rational-neighborhoods -open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations open import metric-spaces.short-functions-metric-spaces -open import metric-spaces.symmetric-rational-neighborhoods -open import metric-spaces.triangular-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ```
@@ -38,12 +38,13 @@ open import metric-spaces.triangular-rational-neighborhoods A family of [metric spaces](metric-spaces.metric-spaces.md) over a type produces a {{#concept "product metric space" Agda=Π-Metric-Space}} 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.rational-neighborhoods.md) in the +`g` are in a +[`d`-neighborhood](metric-spaces.rational-neighborhood-relations.md) in the product structure if this holds for all the evaluations `f x` and `g x`. I.e., -[upper bounds](metric-spaces.rational-neighborhoods.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 +[upper bounds](metric-spaces.rational-neighborhood-relations.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 diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index ef46e2da72..c9b1c42b19 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -40,13 +40,13 @@ open import metric-spaces.locally-constant-functions-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods -open import metric-spaces.reflexive-rational-neighborhoods -open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations open import metric-spaces.short-functions-metric-spaces open import metric-spaces.similarity-of-elements-pseudometric-spaces -open import metric-spaces.symmetric-rational-neighborhoods -open import metric-spaces.triangular-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ```
diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index da2d74ce3a..2808657416 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -31,7 +31,7 @@ open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ``` diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index 78e6785a87..a41c3ba87a 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -34,13 +34,13 @@ open import metric-spaces.locally-constant-functions-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods -open import metric-spaces.reflexive-rational-neighborhoods -open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations open import metric-spaces.short-functions-metric-spaces open import metric-spaces.similarity-of-elements-pseudometric-spaces -open import metric-spaces.symmetric-rational-neighborhoods -open import metric-spaces.triangular-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ``` @@ -51,8 +51,9 @@ The {{#concept "indexed sum" Disambiguation="of a type family of metric spaces" Agda=Σ-Metric-Space}} of a type family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a [set](foundation.sets.md) `A` is the metric space with underlying type `Σ A P` -and the [neighborhood relation](metric-spaces.rational-neighborhoods.md) defined -by: +and the +[neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +defined by: The pair `(x , x')` is a `d`-neighbor of `(y , y')` if and only if `x` is [equal](foundation.identity-types.md) to `y` and the diff --git a/src/metric-spaces/isometries-metric-spaces.lagda.md b/src/metric-spaces/isometries-metric-spaces.lagda.md index 70180ced09..04edaf2f91 100644 --- a/src/metric-spaces/isometries-metric-spaces.lagda.md +++ b/src/metric-spaces/isometries-metric-spaces.lagda.md @@ -27,7 +27,7 @@ open import metric-spaces.isometries-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ``` @@ -37,7 +37,8 @@ open import metric-spaces.rational-neighborhoods A [map of metric spaces](metric-spaces.functions-metric-spaces.md) `f : A → B` is an {{#concept "isometry" Disambiguation="between metric spaces" Agda=is-isometry-Metric-Space}} -if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) +if the +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) on `A` is equivalent to the [preimage](metric-spaces.preimages-rational-neighborhood-relations.md) under `f` of the rational neighborhood relation on `B`. In other words, `f` is an isometry diff --git a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md index 27ef5dbba0..7dfdd87f64 100644 --- a/src/metric-spaces/isometries-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/isometries-pseudometric-spaces.lagda.md @@ -25,7 +25,7 @@ open import foundation.universe-levels open import metric-spaces.functions-pseudometric-spaces open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ``` @@ -35,7 +35,8 @@ open import metric-spaces.rational-neighborhoods A [function](metric-spaces.functions-pseudometric-spaces.md) between [pseudometric spaces](metric-spaces.pseudometric-spaces.md) is an {{#concept "isometry" Disambiguation="between pseudometric spaces" Agda=is-isometry-Pseudometric-Space}} -if the [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) +if the +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) on `A` is equivalent to the [preimage](metric-spaces.preimages-rational-neighborhood-relations.md) under `f` of the rational neighborhood relation on `B`. I.e., upper bounds on the distance diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index ae8af9ffb7..57833b4662 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -30,8 +30,9 @@ 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}} `x : A` if `f ε` is near `x` for small `ε : ℚ⁺`. More precisely, `f` has a limit -if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhoods.md) -of `x` for all +if `f ε` is in a +`ε + δ`-[neighborhood](metric-spaces.rational-neighborhood-relations.md) of `x` +for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` and `δ`. diff --git a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md index 914ce5bb27..cc1e921b26 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md @@ -32,8 +32,8 @@ A has a {{#concept "limit" Disambiguation="of a Cauchy approximation in a pseudometric space Agda=is-limit-cauchy-approximation-Pseudometric-Space}} `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 -`ε δ : ℚ⁺`. +a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhood-relations.md) of +`x` for all `ε δ : ℚ⁺`. ## Definitions diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index 6ac03f34e8..45c5140b71 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -38,8 +38,8 @@ An element `l` of a [metric space](metric-spaces.metric-spaces.md) is the {{#concept "limit" Disambiguation="of a sequence in a metric spaces" WD="limit of a sequence" WDID=Q847204 Agda=is-limit-sequence-Metric-Space}} of a [sequence in metric spaces](metric-spaces.sequences-metric-spaces.md) `u` if there exists a function `m : ℚ⁺ → ℕ` such that whenever `m ε ≤ n` in `ℕ`, -`u n` is in an [`ε`-neighborhood](metric-spaces.rational-neighborhoods.md) of -`l`. +`u n` is in an +[`ε`-neighborhood](metric-spaces.rational-neighborhood-relations.md) of `l`. ## Definition diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index aef364ebc2..a4fafae960 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -43,14 +43,14 @@ open import metric-spaces.isometries-metric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.lipschitz-functions-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.monotonic-rational-neighborhoods +open import metric-spaces.monotonic-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods -open import metric-spaces.reflexive-rational-neighborhoods -open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations open import metric-spaces.short-functions-metric-spaces -open import metric-spaces.symmetric-rational-neighborhoods -open import metric-spaces.triangular-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ``` @@ -59,10 +59,11 @@ open import metric-spaces.triangular-rational-neighborhoods [Inequality](elementary-number-theory.inequality-rational-numbers.md) on the [rational numbers](elementary-number-theory.rational-numbers.md) induces a -[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) on `ℚ` -where `x y : ℚ` are in a `d`-neighborhood when `y ≤ x + d` and `x ≤ y + d`, i.e. -if the [distance](elementary-number-theory.distance-rational-numbers.md) between -`x` and `y` is less than or equal to `d`. This is a +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +on `ℚ` where `x y : ℚ` are in a `d`-neighborhood when `y ≤ x + d` and +`x ≤ y + d`, i.e. if the +[distance](elementary-number-theory.distance-rational-numbers.md) between `x` +and `y` is less than or equal to `d`. This is a [metric structure](metric-spaces.metric-spaces.md) on `ℚ` that defines the {{#concept "standard metric space of rational numbers" Agda=metric-space-ℚ}}. diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index e397488f3f..9d9e823937 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -27,12 +27,12 @@ open import foundation.universe-levels open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods -open import metric-spaces.reflexive-rational-neighborhoods -open import metric-spaces.saturated-rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations open import metric-spaces.similarity-of-elements-pseudometric-spaces -open import metric-spaces.symmetric-rational-neighborhoods -open import metric-spaces.triangular-rational-neighborhoods +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ``` @@ -50,7 +50,7 @@ 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): +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md): ```text N : ℚ⁺ → A → A → Prop l @@ -61,17 +61,18 @@ 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 +- [**Reflexivity.**](metric-spaces.reflexive-rational-neighborhood-relations.md) + Every positive rational `d` is an upper bound on the distance from `x` to + itself. +- [**Symmetry.**](metric-spaces.symmetric-rational-neighborhood-relations.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-neighborhood-relations.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`. -- [**Saturation.**](metric-spaces.saturated-rational-neighborhoods.md): any - neighborhood `N d x y` contains the intersection of all `N d' x y` for +- [**Saturation.**](metric-spaces.saturated-rational-neighborhood-relations.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 diff --git a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md b/src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md similarity index 88% rename from src/metric-spaces/monotonic-rational-neighborhoods.lagda.md rename to src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md index 04f69270b9..adeb324aa5 100644 --- a/src/metric-spaces/monotonic-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ # Monotonic rational neighborhood relations ```agda -module metric-spaces.monotonic-rational-neighborhoods where +module metric-spaces.monotonic-rational-neighborhood-relations where ```
Imports @@ -12,14 +12,16 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.propositions open import foundation.universe-levels -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ```
## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is +A +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +is {{#concept "monotonic" Disambiguation="rational neighborhood relation" Agda=is-monotonic-Rational-Neighborhood-Relation}} if, for all `d₁ < d₂`, all `d₁`-neighborhoods are `d₂`-neighborhoods. diff --git a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md b/src/metric-spaces/poset-of-rational-neighborhood-relations.lagda.md similarity index 94% rename from src/metric-spaces/ordering-rational-neighborhoods.lagda.md rename to src/metric-spaces/poset-of-rational-neighborhood-relations.lagda.md index 8b8eafbbc5..4e0b91c954 100644 --- a/src/metric-spaces/ordering-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/poset-of-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ # The poset of rational neighborhood relations on a type ```agda -module metric-spaces.ordering-rational-neighborhoods where +module metric-spaces.poset-of-rational-neighborhood-relations where ```
Imports @@ -16,7 +16,7 @@ open import foundation.identity-types open import foundation.propositions open import foundation.universe-levels -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations open import order-theory.posets open import order-theory.preorders @@ -26,8 +26,9 @@ open import order-theory.preorders ## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` -on a type `A` is +A +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.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 diff --git a/src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md b/src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md index 6f2caf04bf..0d5d6664bf 100644 --- a/src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md +++ b/src/metric-spaces/preimages-rational-neighborhood-relations.lagda.md @@ -14,11 +14,11 @@ 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 +open import metric-spaces.monotonic-rational-neighborhood-relations +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ```
@@ -26,10 +26,10 @@ open import metric-spaces.triangular-rational-neighborhoods ## Idea Given a -[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) `U` on -a type `B` and map `f : A → B`, then we may define a rational neighborhood -relation `f⁻¹U` on `A` where `x y : A` are `d`-neighbors in `f⁻¹U` if `f x` and -`f y` are `d`-neighbors in `U`. This is the +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +`U` on a type `B` and map `f : A → B`, then we may define a rational +neighborhood relation `f⁻¹U` on `A` where `x y : A` are `d`-neighbors in `f⁻¹U` +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` along `f`. diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index f2201fd80a..21172290e3 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -29,13 +29,13 @@ 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.monotonic-rational-neighborhood-relations open import metric-spaces.preimages-rational-neighborhood-relations -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 +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ``` @@ -44,11 +44,11 @@ open import metric-spaces.triangular-rational-neighborhoods A {{#concept "pseudometric space" Agda=Pseudometric-Space}} 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). +[reflexive](metric-spaces.reflexive-rational-neighborhood-relations.md), +[symmetric](metric-spaces.symmetric-rational-neighborhood-relations.md), +[triangular](metric-spaces.triangular-rational-neighborhood-relations.md) and +[saturated](metric-spaces.saturated-rational-neighborhood-relations.md) +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md). Given a pseudometric structure `B` on `A` and some [positive rational number](elementary-number-theory.positive-rational-numbers.md) diff --git a/src/metric-spaces/rational-neighborhoods.lagda.md b/src/metric-spaces/rational-neighborhood-relations.lagda.md similarity index 99% rename from src/metric-spaces/rational-neighborhoods.lagda.md rename to src/metric-spaces/rational-neighborhood-relations.lagda.md index 3f6c4dc626..455cee59e9 100644 --- a/src/metric-spaces/rational-neighborhoods.lagda.md +++ b/src/metric-spaces/rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ -# Rational neighborhood relations on types +# Rational neighborhood relations ```agda -module metric-spaces.rational-neighborhoods where +module metric-spaces.rational-neighborhood-relations where ```
Imports diff --git a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md b/src/metric-spaces/reflexive-rational-neighborhood-relations.lagda.md similarity index 83% rename from src/metric-spaces/reflexive-rational-neighborhoods.lagda.md rename to src/metric-spaces/reflexive-rational-neighborhood-relations.lagda.md index b90165c497..800e4fb468 100644 --- a/src/metric-spaces/reflexive-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/reflexive-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ -# Reflexive rational neighborhoods on types +# Reflexive rational neighborhood relations ```agda -module metric-spaces.reflexive-rational-neighborhoods where +module metric-spaces.reflexive-rational-neighborhood-relations where ```
Imports @@ -14,14 +14,16 @@ open import foundation.function-types open import foundation.propositions open import foundation.universe-levels -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ```
## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is +A +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +is {{#concept "reflexive" Disambiguation="rational neighborhood relation" Agda=is-reflexive-Rational-Neighborhood-Relation}} if any element is in all neighborhoods of itself, i.e., if all `ε`-neighborhoods are reflexive [binary relations](foundation.binary-relations.md). diff --git a/src/metric-spaces/saturated-rational-neighborhoods.lagda.md b/src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md similarity index 91% rename from src/metric-spaces/saturated-rational-neighborhoods.lagda.md rename to src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md index 6b5d849bf5..e2e49e3163 100644 --- a/src/metric-spaces/saturated-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ # Saturated rational neighborhood relations ```agda -module metric-spaces.saturated-rational-neighborhoods where +module metric-spaces.saturated-rational-neighborhood-relations where ```
Imports @@ -29,17 +29,18 @@ 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.ordering-rational-neighborhoods -open import metric-spaces.rational-neighborhoods +open import metric-spaces.monotonic-rational-neighborhood-relations +open import metric-spaces.poset-of-rational-neighborhood-relations +open import metric-spaces.rational-neighborhood-relations ```
## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) on a -type `A` is +A +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +on a type `A` is {{#concept "saturated" Disambiguation="rational neighborhood relation" Agda=is-saturated-Rational-Neighborhood-Relation}} if `ε`-neighborhoods satisfy the following condition: @@ -48,8 +49,8 @@ if `ε`-neighborhoods satisfy the following condition: `δ`, 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: +[upper bounds](metric-spaces.rational-neighborhood-relations.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 `ε`. @@ -64,8 +65,8 @@ This is the {{#concept "saturation" Disambiguation="rational neighborhood relation" Agda=saturate-Rational-Neighborhood-Relation}} of a rational neighborhood relation. The saturation of a rational neighborhood relation is **saturated** and -[finer](metric-spaces.ordering-rational-neighborhoods.md) than all saturated -rational neighborhood coarser than it. +[finer](metric-spaces.poset-of-rational-neighborhood-relations.md) than all +saturated rational neighborhood coarser than it. ## Definitions diff --git a/src/metric-spaces/short-functions-metric-spaces.lagda.md b/src/metric-spaces/short-functions-metric-spaces.lagda.md index 2cd87963ea..af67b6bbdf 100644 --- a/src/metric-spaces/short-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces.lagda.md @@ -27,7 +27,7 @@ open import foundation.universe-levels open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.ordering-rational-neighborhoods +open import metric-spaces.poset-of-rational-neighborhood-relations open import metric-spaces.preimages-rational-neighborhood-relations ``` @@ -38,12 +38,13 @@ open import metric-spaces.preimages-rational-neighborhood-relations 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 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.preimages-rational-neighborhood-relations.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`. +if the +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +on `A` is [finer](metric-spaces.poset-of-rational-neighborhood-relations.md) +than the [preimage](metric-spaces.preimages-rational-neighborhood-relations.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 diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index 6b327d2f42..c48a4bb7ef 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -22,7 +22,7 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ```
@@ -35,7 +35,7 @@ Two elements `x y` of a if any of the following equivalent propositions holds: - they are similar w.r.t the underlying - [rational neighborhood relation](metric-spaces.rational-neighborhoods.md); + [rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md); - they have the same neighbors: `∀ δ z → N δ x z ↔ N δ y z`; - they share all neighborhoods: `∀ δ → N δ x y`. diff --git a/src/metric-spaces/subspaces-metric-spaces.lagda.md b/src/metric-spaces/subspaces-metric-spaces.lagda.md index ff9f40b375..1574eeab09 100644 --- a/src/metric-spaces/subspaces-metric-spaces.lagda.md +++ b/src/metric-spaces/subspaces-metric-spaces.lagda.md @@ -18,11 +18,11 @@ open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.pseudometric-spaces -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 +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations ``` diff --git a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md b/src/metric-spaces/symmetric-rational-neighborhood-relations.lagda.md similarity index 83% rename from src/metric-spaces/symmetric-rational-neighborhoods.lagda.md rename to src/metric-spaces/symmetric-rational-neighborhood-relations.lagda.md index 5f1293e7dc..f2f35b8994 100644 --- a/src/metric-spaces/symmetric-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/symmetric-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ -# Symmetric rational neighborhoods on types +# Symmetric rational neighborhood relations ```agda -module metric-spaces.symmetric-rational-neighborhoods where +module metric-spaces.symmetric-rational-neighborhood-relations where ```
Imports @@ -14,14 +14,16 @@ open import foundation.function-types open import foundation.propositions open import foundation.universe-levels -open import metric-spaces.rational-neighborhoods +open import metric-spaces.rational-neighborhood-relations ```
## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is +A +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +is {{#concept "symmetric" Disambiguation="rational neighborhood relation" Agda=is-symmetric-Rational-Neighborhood-Relation}} if all `ε`-neighborhoods are symmetric [binary relations](foundation.binary-relations.md). diff --git a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md b/src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md similarity index 87% rename from src/metric-spaces/triangular-rational-neighborhoods.lagda.md rename to src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md index 5bcb18f2c8..f1163142b7 100644 --- a/src/metric-spaces/triangular-rational-neighborhoods.lagda.md +++ b/src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md @@ -1,7 +1,7 @@ -# Triangular rational neighborhood relations on types +# Triangular rational neighborhood relations ```agda -module metric-spaces.triangular-rational-neighborhoods where +module metric-spaces.triangular-rational-neighborhood-relations where ```
Imports @@ -16,16 +16,18 @@ 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 +open import metric-spaces.monotonic-rational-neighborhood-relations +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations ```
## Idea -A [rational neighborhood relation](metric-spaces.rational-neighborhoods.md) is +A +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.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. diff --git a/src/real-numbers/metric-space-of-real-numbers.lagda.md b/src/real-numbers/metric-space-of-real-numbers.lagda.md index bbce8fb9b8..0338a6c0e3 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -33,11 +33,11 @@ open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.metric-spaces open import metric-spaces.pseudometric-spaces -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 +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.reflexive-rational-neighborhood-relations +open import metric-spaces.saturated-rational-neighborhood-relations +open import metric-spaces.symmetric-rational-neighborhood-relations +open import metric-spaces.triangular-rational-neighborhood-relations open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers @@ -57,9 +57,9 @@ open import real-numbers.transposition-addition-subtraction-cuts-dedekind-real-n The {{#concept "standard metric space of real numbers" Agda=metric-space-ℝ}} is the [metric space](metric-spaces.metric-spaces.md) with carrier type [`ℝ`](real-numbers.dedekind-real-numbers.md) and the -[rational neighborhood relation](metric-spaces.rational-neighborhoods.md) where -`x y : ℝ` are `d`-neighbors when for any `r : ℚ` the following two conditions -hold: +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +where `x y : ℝ` are `d`-neighbors when for any `r : ℚ` the following two +conditions hold: - if `r + d` is in the lower cut of `y`, `r` is in the lower cut of `x` - if `r + d` is in the lower cut of `x`, `r` is in the lower cut of `y` From 02a484a95ca9f6191bc620396956778267b89f50 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 17:50:45 +0200 Subject: [PATCH 112/151] short functions pseudometric spaces --- src/metric-spaces.lagda.md | 1 + ...uchy-approximations-metric-spaces.lagda.md | 32 +- ...pproximations-pseudometric-spaces.lagda.md | 26 ++ .../short-functions-metric-spaces.lagda.md | 152 ++++---- ...ort-functions-pseudometric-spaces.lagda.md | 335 ++++++++++++++++++ 5 files changed, 457 insertions(+), 89 deletions(-) create mode 100644 src/metric-spaces/short-functions-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index b6ae4a5178..63dca9f747 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -99,6 +99,7 @@ open import metric-spaces.reflexive-rational-neighborhood-relations public open import metric-spaces.saturated-rational-neighborhood-relations public open import metric-spaces.sequences-metric-spaces public open import metric-spaces.short-functions-metric-spaces public +open import metric-spaces.short-functions-pseudometric-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-rational-neighborhood-relations public diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 46a20ca46f..40d2960206 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -73,7 +73,10 @@ module _ map-cauchy-approximation-Metric-Space : ℚ⁺ → type-Metric-Space A - map-cauchy-approximation-Metric-Space = pr1 f + map-cauchy-approximation-Metric-Space = + map-cauchy-approximation-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( f) is-cauchy-approximation-map-cauchy-approximation-Metric-Space : (ε δ : ℚ⁺) → @@ -82,7 +85,10 @@ module _ ( ε +ℚ⁺ δ) ( map-cauchy-approximation-Metric-Space ε) ( map-cauchy-approximation-Metric-Space δ) - is-cauchy-approximation-map-cauchy-approximation-Metric-Space = pr2 f + is-cauchy-approximation-map-cauchy-approximation-Metric-Space = + is-cauchy-approximation-map-cauchy-approximation-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( f) ``` ## Properties @@ -115,17 +121,11 @@ module _ map-short-function-cauchy-approximation-Metric-Space : cauchy-approximation-Metric-Space A → cauchy-approximation-Metric-Space B - map-short-function-cauchy-approximation-Metric-Space (u , H) = - ( map-short-function-Metric-Space A B f ∘ u , - λ ε δ → - is-short-map-short-function-Metric-Space - ( A) - ( B) - ( f) - ( ε +ℚ⁺ δ) - ( u ε) - ( u δ) - ( H ε δ)) + map-short-function-cauchy-approximation-Metric-Space = + map-short-function-cauchy-approximation-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) module _ {l1 l2 : Level} @@ -170,9 +170,9 @@ module _ eq-htpy-cauchy-approximation-Metric-Space : f = g eq-htpy-cauchy-approximation-Metric-Space = - eq-type-subtype - ( is-cauchy-approximation-prop-Metric-Space A) - ( eq-htpy f~g) + eq-htpy-cauchy-approximation-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( f~g) ``` ## References diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 137668d689..943601ffa1 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -19,6 +19,7 @@ open import foundation.subtypes open import foundation.universe-levels open import metric-spaces.pseudometric-spaces +open import metric-spaces.short-functions-pseudometric-spaces ``` @@ -102,6 +103,31 @@ module _ refl-neighborhood-Pseudometric-Space A (ε +ℚ⁺ δ) x ``` +### The action of short maps on Cauchy approximations + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : short-function-Pseudometric-Space A B) + where + + map-short-function-cauchy-approximation-Pseudometric-Space : + cauchy-approximation-Pseudometric-Space A → + cauchy-approximation-Pseudometric-Space B + map-short-function-cauchy-approximation-Pseudometric-Space (u , H) = + ( map-short-function-Pseudometric-Space A B f ∘ u , + λ ε δ → + is-short-map-short-function-Pseudometric-Space + ( A) + ( B) + ( f) + ( ε +ℚ⁺ δ) + ( u ε) + ( u δ) + ( H ε δ)) +``` + ### Homotopic Cauchy approximations are equal ```agda diff --git a/src/metric-spaces/short-functions-metric-spaces.lagda.md b/src/metric-spaces/short-functions-metric-spaces.lagda.md index af67b6bbdf..6b7f17584b 100644 --- a/src/metric-spaces/short-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/short-functions-metric-spaces.lagda.md @@ -29,6 +29,7 @@ open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.poset-of-rational-neighborhood-relations open import metric-spaces.preimages-rational-neighborhood-relations +open import metric-spaces.short-functions-pseudometric-spaces ``` @@ -38,7 +39,9 @@ open import metric-spaces.preimages-rational-neighborhood-relations 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 WD="metric map" WDID=Q2713824}} -if the +if it's [short](metric-spaces.short-functions-pseudometric-spaces.md) between +their underlying [pseudometric spaces](metric-spaces.pseudometric-spaces.md). +That is, if the [rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) on `A` is [finer](metric-spaces.poset-of-rational-neighborhood-relations.md) than the [preimage](metric-spaces.preimages-rational-neighborhood-relations.md) @@ -59,11 +62,10 @@ module _ is-short-function-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ l2') is-short-function-prop-Metric-Space = - leq-prop-Rational-Neighborhood-Relation - ( neighborhood-prop-Metric-Space A) - ( preimage-Rational-Neighborhood-Relation - ( f) - ( neighborhood-prop-Metric-Space B)) + is-short-function-prop-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) is-short-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l2') is-short-function-Metric-Space = @@ -83,15 +85,18 @@ module _ (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') where + short-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + short-function-Metric-Space = + short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + set-short-function-Metric-Space : Set (l1 ⊔ l2 ⊔ l1' ⊔ l2') set-short-function-Metric-Space = set-subset ( set-function-Metric-Space A B) ( is-short-function-prop-Metric-Space A B) - short-function-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') - short-function-Metric-Space = type-Set set-short-function-Metric-Space - is-set-short-function-Metric-Space : is-set short-function-Metric-Space is-set-short-function-Metric-Space = @@ -104,11 +109,19 @@ module _ where map-short-function-Metric-Space : type-function-Metric-Space A B - map-short-function-Metric-Space = pr1 f + map-short-function-Metric-Space = + map-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) is-short-map-short-function-Metric-Space : is-short-function-Metric-Space A B map-short-function-Metric-Space - is-short-map-short-function-Metric-Space = pr2 f + is-short-map-short-function-Metric-Space = + is-short-map-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) ``` ## Properties @@ -122,11 +135,13 @@ module _ is-short-id-Metric-Space : is-short-function-Metric-Space A A (id-Metric-Space A) - is-short-id-Metric-Space d x y H = H + is-short-id-Metric-Space = + is-short-id-Pseudometric-Space + ( pseudometric-Metric-Space A) short-id-Metric-Space : short-function-Metric-Space A A short-id-Metric-Space = - id-Metric-Space A , is-short-id-Metric-Space + short-id-Pseudometric-Space (pseudometric-Metric-Space A) ``` ### Equality of short functions between metric spaces is characterized by homotopy of their carrier maps @@ -171,21 +186,21 @@ module _ is-short-function-Metric-Space B C g → is-short-function-Metric-Space A B f → is-short-function-Metric-Space A C (g ∘ f) - is-short-comp-is-short-function-Metric-Space g f H K d x y = - H d (f x) (f y) ∘ K d x y + is-short-comp-is-short-function-Metric-Space = + is-short-comp-is-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( pseudometric-Metric-Space C) comp-short-function-Metric-Space : short-function-Metric-Space B C → short-function-Metric-Space A B → short-function-Metric-Space A C - comp-short-function-Metric-Space g f = - ( map-short-function-Metric-Space B C g ∘ - map-short-function-Metric-Space A B f) , - ( is-short-comp-is-short-function-Metric-Space - ( map-short-function-Metric-Space B C g) - ( map-short-function-Metric-Space A B f) - ( is-short-map-short-function-Metric-Space B C g) - ( is-short-map-short-function-Metric-Space A B f)) + comp-short-function-Metric-Space = + comp-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( pseudometric-Metric-Space C) ``` ### Unit laws for composition of short maps between metric spaces @@ -204,17 +219,10 @@ module _ ( f)) = ( f) left-unit-law-comp-short-function-Metric-Space = - eq-htpy-map-short-function-Metric-Space - ( A) - ( B) - ( comp-short-function-Metric-Space - ( A) - ( B) - ( B) - ( short-id-Metric-Space B) - ( f)) + left-unit-law-comp-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ( f) - ( λ x → refl) right-unit-law-comp-short-function-Metric-Space : ( comp-short-function-Metric-Space A A B @@ -222,17 +230,10 @@ module _ ( short-id-Metric-Space A)) = ( f) right-unit-law-comp-short-function-Metric-Space = - eq-htpy-map-short-function-Metric-Space - ( A) - ( B) + right-unit-law-comp-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ( f) - ( comp-short-function-Metric-Space - ( A) - ( A) - ( B) - ( f) - ( short-id-Metric-Space A)) - ( λ x → refl) ``` ### Associativity of composition of short maps between metric spaces @@ -257,16 +258,14 @@ module _ ( h) ( comp-short-function-Metric-Space A B C g f)) associative-comp-short-function-Metric-Space = - eq-htpy-map-short-function-Metric-Space - ( A) - ( D) - ( comp-short-function-Metric-Space A B D - ( comp-short-function-Metric-Space B C D h g) - ( f)) - ( comp-short-function-Metric-Space A C D - ( h) - ( comp-short-function-Metric-Space A B C g f)) - ( λ x → refl) + associative-comp-short-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( pseudometric-Metric-Space C) + ( pseudometric-Metric-Space D) + ( h) + ( g) + ( f) ``` ### Constant functions between metric spaces are short @@ -280,8 +279,18 @@ module _ is-short-constant-function-Metric-Space : is-short-function-Metric-Space A B (λ _ → b) - is-short-constant-function-Metric-Space ε x y H = - refl-neighborhood-Metric-Space B ε b + is-short-constant-function-Metric-Space = + is-short-constant-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( b) + + short-constant-function-Metric-Space : short-function-Metric-Space A B + short-constant-function-Metric-Space = + short-constant-function-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( b) ``` ### Any isometry between metric spaces is short @@ -296,8 +305,11 @@ module _ is-short-is-isometry-Metric-Space : is-isometry-Metric-Space A B f → is-short-function-Metric-Space A B f - is-short-is-isometry-Metric-Space I = - preserves-neighborhood-map-isometry-Metric-Space A B (f , I) + is-short-is-isometry-Metric-Space = + is-short-is-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) + ( f) ``` ### The embedding of isometries of metric spaces into short maps @@ -310,30 +322,24 @@ module _ short-isometry-Metric-Space : isometry-Metric-Space A B → short-function-Metric-Space A B - short-isometry-Metric-Space f = - map-isometry-Metric-Space A B f , - is-short-is-isometry-Metric-Space - ( A) - ( B) - ( map-isometry-Metric-Space A B f) - ( is-isometry-map-isometry-Metric-Space A B f) + short-isometry-Metric-Space = + short-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) is-emb-short-isometry-Metric-Space : is-emb short-isometry-Metric-Space is-emb-short-isometry-Metric-Space = - is-emb-right-factor - ( map-short-function-Metric-Space A B) - ( short-isometry-Metric-Space) - ( is-emb-inclusion-subtype (is-short-function-prop-Metric-Space A B)) - ( is-emb-htpy - ( λ f → refl) - ( is-emb-inclusion-subtype (is-isometry-prop-Metric-Space A B))) + is-emb-short-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) emb-short-isometry-Metric-Space : isometry-Metric-Space A B ↪ short-function-Metric-Space A B emb-short-isometry-Metric-Space = - short-isometry-Metric-Space , - is-emb-short-isometry-Metric-Space + emb-short-isometry-Pseudometric-Space + ( pseudometric-Metric-Space A) + ( pseudometric-Metric-Space B) ``` ## See also diff --git a/src/metric-spaces/short-functions-pseudometric-spaces.lagda.md b/src/metric-spaces/short-functions-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..c8789e3cb6 --- /dev/null +++ b/src/metric-spaces/short-functions-pseudometric-spaces.lagda.md @@ -0,0 +1,335 @@ +# Short functions between pseudometric spaces + +```agda +module metric-spaces.short-functions-pseudometric-spaces 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.functions-pseudometric-spaces +open import metric-spaces.isometries-pseudometric-spaces +open import metric-spaces.poset-of-rational-neighborhood-relations +open import metric-spaces.preimages-rational-neighborhood-relations +open import metric-spaces.pseudometric-spaces +``` + +
+ +## Idea + +A [function](metric-spaces.functions-pseudometric-spaces.md) `f` between two +[pseudometric spaces](metric-spaces.pseudometric-spaces.md) `A` and `B` is +{{#concept "short" Disambiguation="function between pseudometric spaces" Agda=is-short-function-Pseudometric-Space WD="metric map" WDID=Q2713824}} +if the +[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) +on `A` is [finer](metric-spaces.poset-of-rational-neighborhood-relations.md) +than the [preimage](metric-spaces.preimages-rational-neighborhood-relations.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 pseudometric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : type-function-Pseudometric-Space A B) + where + + is-short-function-prop-Pseudometric-Space : Prop (l1 ⊔ l2 ⊔ l2') + is-short-function-prop-Pseudometric-Space = + leq-prop-Rational-Neighborhood-Relation + ( neighborhood-prop-Pseudometric-Space A) + ( preimage-Rational-Neighborhood-Relation + ( f) + ( neighborhood-prop-Pseudometric-Space B)) + + is-short-function-Pseudometric-Space : UU (l1 ⊔ l2 ⊔ l2') + is-short-function-Pseudometric-Space = + type-Prop is-short-function-prop-Pseudometric-Space + + is-prop-is-short-function-Pseudometric-Space : + is-prop is-short-function-Pseudometric-Space + is-prop-is-short-function-Pseudometric-Space = + is-prop-type-Prop is-short-function-prop-Pseudometric-Space +``` + +### The set of short functions between pseudometric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + where + + short-function-Pseudometric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') + short-function-Pseudometric-Space = + type-subtype (is-short-function-prop-Pseudometric-Space A B) + +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : short-function-Pseudometric-Space A B) + where + + map-short-function-Pseudometric-Space : type-function-Pseudometric-Space A B + map-short-function-Pseudometric-Space = pr1 f + + is-short-map-short-function-Pseudometric-Space : + is-short-function-Pseudometric-Space A B + map-short-function-Pseudometric-Space + is-short-map-short-function-Pseudometric-Space = pr2 f +``` + +## Properties + +### The identity function on a pseudometric space is short + +```agda +module _ + {l1 l2 : Level} (A : Pseudometric-Space l1 l2) + where + + is-short-id-Pseudometric-Space : + is-short-function-Pseudometric-Space A A (id-Pseudometric-Space A) + is-short-id-Pseudometric-Space d x y H = H + + short-id-Pseudometric-Space : short-function-Pseudometric-Space A A + short-id-Pseudometric-Space = + id-Pseudometric-Space A , is-short-id-Pseudometric-Space +``` + +### Equality of short functions between pseudometric spaces is characterized by homotopy of their carrier maps + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f g : short-function-Pseudometric-Space A B) + where + + equiv-eq-htpy-map-short-function-Pseudometric-Space : + ( f = g) ≃ + ( map-short-function-Pseudometric-Space A B f ~ + map-short-function-Pseudometric-Space A B g) + equiv-eq-htpy-map-short-function-Pseudometric-Space = + equiv-funext ∘e + extensionality-type-subtype' + ( is-short-function-prop-Pseudometric-Space A B) f g + + eq-htpy-map-short-function-Pseudometric-Space : + ( map-short-function-Pseudometric-Space A B f ~ + map-short-function-Pseudometric-Space A B g) → + ( f = g) + eq-htpy-map-short-function-Pseudometric-Space = + map-inv-equiv equiv-eq-htpy-map-short-function-Pseudometric-Space +``` + +### Composition of short functions between pseudometric spaces + +```agda +module _ + {l1a l2a l1b l2b l1c l2c : Level} + (A : Pseudometric-Space l1a l2a) + (B : Pseudometric-Space l1b l2b) + (C : Pseudometric-Space l1c l2c) + where + + is-short-comp-is-short-function-Pseudometric-Space : + (g : type-function-Pseudometric-Space B C) → + (f : type-function-Pseudometric-Space A B) → + is-short-function-Pseudometric-Space B C g → + is-short-function-Pseudometric-Space A B f → + is-short-function-Pseudometric-Space A C (g ∘ f) + is-short-comp-is-short-function-Pseudometric-Space g f H K d x y = + H d (f x) (f y) ∘ K d x y + + comp-short-function-Pseudometric-Space : + short-function-Pseudometric-Space B C → + short-function-Pseudometric-Space A B → + short-function-Pseudometric-Space A C + comp-short-function-Pseudometric-Space g f = + ( map-short-function-Pseudometric-Space B C g ∘ + map-short-function-Pseudometric-Space A B f) , + ( is-short-comp-is-short-function-Pseudometric-Space + ( map-short-function-Pseudometric-Space B C g) + ( map-short-function-Pseudometric-Space A B f) + ( is-short-map-short-function-Pseudometric-Space B C g) + ( is-short-map-short-function-Pseudometric-Space A B f)) +``` + +### Unit laws for composition of short maps between pseudometric spaces + +```agda +module _ + {l1a l2a l1b l2b : Level} + (A : Pseudometric-Space l1a l2a) + (B : Pseudometric-Space l1b l2b) + (f : short-function-Pseudometric-Space A B) + where + + left-unit-law-comp-short-function-Pseudometric-Space : + ( comp-short-function-Pseudometric-Space A B B + ( short-id-Pseudometric-Space B) + ( f)) = + ( f) + left-unit-law-comp-short-function-Pseudometric-Space = + eq-htpy-map-short-function-Pseudometric-Space + ( A) + ( B) + ( comp-short-function-Pseudometric-Space + ( A) + ( B) + ( B) + ( short-id-Pseudometric-Space B) + ( f)) + ( f) + ( λ x → refl) + + right-unit-law-comp-short-function-Pseudometric-Space : + ( comp-short-function-Pseudometric-Space A A B + ( f) + ( short-id-Pseudometric-Space A)) = + ( f) + right-unit-law-comp-short-function-Pseudometric-Space = + eq-htpy-map-short-function-Pseudometric-Space + ( A) + ( B) + ( f) + ( comp-short-function-Pseudometric-Space + ( A) + ( A) + ( B) + ( f) + ( short-id-Pseudometric-Space A)) + ( λ x → refl) +``` + +### Associativity of composition of short maps between pseudometric spaces + +```agda +module _ + {l1a l2a l1b l2b l1c l2c l1d l2d : Level} + (A : Pseudometric-Space l1a l2a) + (B : Pseudometric-Space l1b l2b) + (C : Pseudometric-Space l1c l2c) + (D : Pseudometric-Space l1d l2d) + (h : short-function-Pseudometric-Space C D) + (g : short-function-Pseudometric-Space B C) + (f : short-function-Pseudometric-Space A B) + where + + associative-comp-short-function-Pseudometric-Space : + ( comp-short-function-Pseudometric-Space A B D + ( comp-short-function-Pseudometric-Space B C D h g) + ( f)) = + ( comp-short-function-Pseudometric-Space A C D + ( h) + ( comp-short-function-Pseudometric-Space A B C g f)) + associative-comp-short-function-Pseudometric-Space = + eq-htpy-map-short-function-Pseudometric-Space + ( A) + ( D) + ( comp-short-function-Pseudometric-Space A B D + ( comp-short-function-Pseudometric-Space B C D h g) + ( f)) + ( comp-short-function-Pseudometric-Space A C D + ( h) + ( comp-short-function-Pseudometric-Space A B C g f)) + ( λ x → refl) +``` + +### Constant functions between pseudometric spaces are short + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (b : type-Pseudometric-Space B) + where + + is-short-constant-function-Pseudometric-Space : + is-short-function-Pseudometric-Space A B (λ _ → b) + is-short-constant-function-Pseudometric-Space ε x y H = + refl-neighborhood-Pseudometric-Space B ε b + + short-constant-function-Pseudometric-Space : + short-function-Pseudometric-Space A B + pr1 short-constant-function-Pseudometric-Space _ = b + pr2 short-constant-function-Pseudometric-Space = + is-short-constant-function-Pseudometric-Space +``` + +### Any isometry between pseudometric spaces is short + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + (f : type-function-Pseudometric-Space A B) + where + + is-short-is-isometry-Pseudometric-Space : + is-isometry-Pseudometric-Space A B f → + is-short-function-Pseudometric-Space A B f + is-short-is-isometry-Pseudometric-Space I = + preserves-neighborhood-map-isometry-Pseudometric-Space A B (f , I) +``` + +### The embedding of isometries of pseudometric spaces into short maps + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2') + where + + short-isometry-Pseudometric-Space : + isometry-Pseudometric-Space A B → short-function-Pseudometric-Space A B + short-isometry-Pseudometric-Space f = + map-isometry-Pseudometric-Space A B f , + is-short-is-isometry-Pseudometric-Space + ( A) + ( B) + ( map-isometry-Pseudometric-Space A B f) + ( is-isometry-map-isometry-Pseudometric-Space A B f) + + is-emb-short-isometry-Pseudometric-Space : + is-emb short-isometry-Pseudometric-Space + is-emb-short-isometry-Pseudometric-Space = + is-emb-right-factor + ( map-short-function-Pseudometric-Space A B) + ( short-isometry-Pseudometric-Space) + ( is-emb-inclusion-subtype + ( is-short-function-prop-Pseudometric-Space A B)) + ( is-emb-htpy + ( λ f → refl) + ( is-emb-inclusion-subtype (is-isometry-prop-Pseudometric-Space A B))) + + emb-short-isometry-Pseudometric-Space : + isometry-Pseudometric-Space A B ↪ short-function-Pseudometric-Space A B + emb-short-isometry-Pseudometric-Space = + short-isometry-Pseudometric-Space , + is-emb-short-isometry-Pseudometric-Space +``` From ecf139b4fa4127e883d2544611cb85e2da38ebf1 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 18:08:33 +0200 Subject: [PATCH 113/151] fix name => indexed-sum-Metric-Space --- .../indexed-sums-metric-spaces.lagda.md | 220 +++++++++--------- 1 file changed, 111 insertions(+), 109 deletions(-) diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index a41c3ba87a..3a26979877 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -48,7 +48,7 @@ open import metric-spaces.triangular-rational-neighborhood-relations ## Idea The -{{#concept "indexed sum" Disambiguation="of a type family of metric spaces" Agda=Σ-Metric-Space}} +{{#concept "indexed sum" Disambiguation="of a type family of metric spaces" Agda=indexed-sum-Metric-Space}} of a type family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a [set](foundation.sets.md) `A` is the metric space with underlying type `Σ A P` and the @@ -76,12 +76,12 @@ module _ (P : type-Set A → Metric-Space lp lp') where - type-Σ-Metric-Space : UU (la ⊔ lp) - type-Σ-Metric-Space = Σ (type-Set A) (type-Metric-Space ∘ P) + type-indexed-sum-Metric-Space : UU (la ⊔ lp) + type-indexed-sum-Metric-Space = Σ (type-Set A) (type-Metric-Space ∘ P) - neighborhood-prop-Σ-Metric-Space : - Rational-Neighborhood-Relation (la ⊔ lp') type-Σ-Metric-Space - neighborhood-prop-Σ-Metric-Space d (x , Px) (y , Py) = + neighborhood-prop-indexed-sum-Metric-Space : + Rational-Neighborhood-Relation (la ⊔ lp') type-indexed-sum-Metric-Space + neighborhood-prop-indexed-sum-Metric-Space d (x , x') (y , y') = Σ-Prop ( Id-Prop ( A) @@ -91,41 +91,42 @@ module _ neighborhood-prop-Metric-Space ( P y) ( d) - ( tr (type-Metric-Space ∘ P) e Px) - ( Py)) + ( tr (type-Metric-Space ∘ P) e x') + ( y')) - is-reflexive-neighborhood-Σ-Metric-Space : + is-reflexive-neighborhood-indexed-sum-Metric-Space : is-reflexive-Rational-Neighborhood-Relation - neighborhood-prop-Σ-Metric-Space - is-reflexive-neighborhood-Σ-Metric-Space d (x , Px) = - (refl , refl-neighborhood-Metric-Space (P x) d Px) + neighborhood-prop-indexed-sum-Metric-Space + is-reflexive-neighborhood-indexed-sum-Metric-Space d (x , x') = + (refl , refl-neighborhood-Metric-Space (P x) d x') - is-symmetric-neighborhood-Σ-Metric-Space : + is-symmetric-neighborhood-indexed-sum-Metric-Space : is-symmetric-Rational-Neighborhood-Relation - neighborhood-prop-Σ-Metric-Space - is-symmetric-neighborhood-Σ-Metric-Space d (x , Px) (.x , Px') (refl , Nxx') = - (refl , symmetric-neighborhood-Metric-Space (P x) d Px Px' Nxx') + neighborhood-prop-indexed-sum-Metric-Space + is-symmetric-neighborhood-indexed-sum-Metric-Space + d (x , x') (.x , x'') (refl , N) = + (refl , symmetric-neighborhood-Metric-Space (P x) d x' x'' N) - is-triangular-neighborhood-Σ-Metric-Space : + is-triangular-neighborhood-indexed-Metric-Space : is-triangular-Rational-Neighborhood-Relation - neighborhood-prop-Σ-Metric-Space - is-triangular-neighborhood-Σ-Metric-Space - (x , Px) (.x , Px') (.x , Px'') d₁ d₂ (refl , K) (refl , H) = + neighborhood-prop-indexed-sum-Metric-Space + is-triangular-neighborhood-indexed-Metric-Space + (x , xp) (.x , xp') (.x , xp'') d₁ d₂ (refl , K) (refl , H) = ( refl , triangular-neighborhood-Metric-Space - ( P x) - ( Px) - ( Px') - ( Px'') - ( d₁) - ( d₂) - ( K) - ( H)) - - is-saturated-neighborhood-Σ-Metric-Space : + ( P x) + ( xp) + ( xp') + ( xp'') + ( d₁) + ( d₂) + ( K) + ( H)) + + is-saturated-neighborhood-indexed-sum-Metric-Space : is-saturated-Rational-Neighborhood-Relation - neighborhood-prop-Σ-Metric-Space - is-saturated-neighborhood-Σ-Metric-Space d (x , Px) (y , Py) H = + neighborhood-prop-indexed-sum-Metric-Space + is-saturated-neighborhood-indexed-sum-Metric-Space d (x , x') (y , y') H = ( x=y , lemma-neighborhood-Σ) where @@ -146,38 +147,38 @@ module _ neighborhood-Metric-Space ( P y) ( d) - ( tr (type-Metric-Space ∘ P) x=y Px) - ( Py) + ( tr (type-Metric-Space ∘ P) x=y x') + ( y') lemma-neighborhood-Σ = saturated-neighborhood-Metric-Space ( P y) ( d) - ( tr (type-Metric-Space ∘ P) x=y Px) - ( Py) + ( tr (type-Metric-Space ∘ P) x=y x') + ( y') ( λ δ → tr ( λ e → neighborhood-Metric-Space (P y) (d +ℚ⁺ δ) - ( tr (type-Metric-Space ∘ P) e Px) - ( Py)) + ( tr (type-Metric-Space ∘ P) e x') + ( y')) ( all-eq-x=y δ) ( pr2 (H δ))) - pseudometric-space-Σ-Metric-Space : + pseudometric-space-indexed-sum-Metric-Space : Pseudometric-Space (la ⊔ lp) (la ⊔ lp') - pseudometric-space-Σ-Metric-Space = - ( type-Σ-Metric-Space , - neighborhood-prop-Σ-Metric-Space , - is-reflexive-neighborhood-Σ-Metric-Space , - is-symmetric-neighborhood-Σ-Metric-Space , - is-triangular-neighborhood-Σ-Metric-Space , - is-saturated-neighborhood-Σ-Metric-Space) - - is-tight-pseudometric-space-Σ-Metric-Space : - is-tight-Pseudometric-Space pseudometric-space-Σ-Metric-Space - is-tight-pseudometric-space-Σ-Metric-Space (x , Px) (y , Py) H = + pseudometric-space-indexed-sum-Metric-Space = + ( type-indexed-sum-Metric-Space , + neighborhood-prop-indexed-sum-Metric-Space , + is-reflexive-neighborhood-indexed-sum-Metric-Space , + is-symmetric-neighborhood-indexed-sum-Metric-Space , + is-triangular-neighborhood-indexed-Metric-Space , + is-saturated-neighborhood-indexed-sum-Metric-Space) + + is-tight-pseudometric-space-indexed-sum-Metric-Space : + is-tight-Pseudometric-Space pseudometric-space-indexed-sum-Metric-Space + is-tight-pseudometric-space-indexed-sum-Metric-Space (x , Px) (y , Py) H = eq-pair-Σ ( x=y) ( eq-sim-Metric-Space @@ -209,38 +210,39 @@ module _ ( pr1 (H δ)) ( x=y) - is-extensional-pseudometric-space-Σ-Metric-Space : - is-extensional-Pseudometric-Space pseudometric-space-Σ-Metric-Space - is-extensional-pseudometric-space-Σ-Metric-Space = + is-extensional-pseudometric-space-indexed-sum-Metric-Space : + is-extensional-Pseudometric-Space + pseudometric-space-indexed-sum-Metric-Space + is-extensional-pseudometric-space-indexed-sum-Metric-Space = is-extensional-is-tight-Pseudometric-Space - pseudometric-space-Σ-Metric-Space - is-tight-pseudometric-space-Σ-Metric-Space + pseudometric-space-indexed-sum-Metric-Space + is-tight-pseudometric-space-indexed-sum-Metric-Space - Σ-Metric-Space : Metric-Space (la ⊔ lp) (la ⊔ lp') - Σ-Metric-Space = + indexed-sum-Metric-Space : Metric-Space (la ⊔ lp) (la ⊔ lp') + indexed-sum-Metric-Space = make-Metric-Space - type-Σ-Metric-Space - neighborhood-prop-Σ-Metric-Space - is-reflexive-neighborhood-Σ-Metric-Space - is-symmetric-neighborhood-Σ-Metric-Space - is-triangular-neighborhood-Σ-Metric-Space - is-saturated-neighborhood-Σ-Metric-Space - is-extensional-pseudometric-space-Σ-Metric-Space - - base-point-Σ-Metric-Space : - type-Metric-Space Σ-Metric-Space → type-Set A - base-point-Σ-Metric-Space = pr1 - - fiber-point-Σ-Metric-Space : - (x : type-Σ-Metric-Space) → - type-Metric-Space (P (base-point-Σ-Metric-Space x)) - fiber-point-Σ-Metric-Space = pr2 - - map-emb-fiber-Σ-Metric-Space : + type-indexed-sum-Metric-Space + neighborhood-prop-indexed-sum-Metric-Space + is-reflexive-neighborhood-indexed-sum-Metric-Space + is-symmetric-neighborhood-indexed-sum-Metric-Space + is-triangular-neighborhood-indexed-Metric-Space + is-saturated-neighborhood-indexed-sum-Metric-Space + is-extensional-pseudometric-space-indexed-sum-Metric-Space + + base-point-indexed-sum-Metric-Space : + type-Metric-Space indexed-sum-Metric-Space → type-Set A + base-point-indexed-sum-Metric-Space = pr1 + + fiber-point-indexed-sum-Metric-Space : + (x : type-indexed-sum-Metric-Space) → + type-Metric-Space (P (base-point-indexed-sum-Metric-Space x)) + fiber-point-indexed-sum-Metric-Space = pr2 + + map-emb-fiber-indexed-sum-Metric-Space : (x : type-Set A) → type-Metric-Space (P x) → - type-Σ-Metric-Space - map-emb-fiber-Σ-Metric-Space x px = (x , px) + type-indexed-sum-Metric-Space + map-emb-fiber-indexed-sum-Metric-Space x px = (x , px) ``` ## Properties @@ -254,17 +256,17 @@ module _ (P : type-Set A → Metric-Space lp lp') where - is-locally-constant-base-point-Σ-Metric-Space : + is-locally-constant-base-point-indexed-sum-Metric-Space : is-locally-constant-function-Metric-Space - ( Σ-Metric-Space A P) + ( indexed-sum-Metric-Space A P) ( metric-space-discrete-metric-space-Set A) - ( base-point-Σ-Metric-Space A P) - is-locally-constant-base-point-Σ-Metric-Space x y = + ( base-point-indexed-sum-Metric-Space A P) + is-locally-constant-base-point-indexed-sum-Metric-Space x y = elim-exists ( Id-Prop ( A) - ( base-point-Σ-Metric-Space A P x) - ( base-point-Σ-Metric-Space A P y)) + ( base-point-indexed-sum-Metric-Space A P x) + ( base-point-indexed-sum-Metric-Space A P y)) ( λ d Nxy → pr1 Nxy) ``` @@ -278,33 +280,33 @@ module _ (x : type-Set A) where - is-short-emb-fiber-Σ-Metric-Space : + is-short-emb-fiber-indexed-sum-Metric-Space : is-short-function-Metric-Space ( P x) - ( Σ-Metric-Space A P) - ( map-emb-fiber-Σ-Metric-Space A P x) - is-short-emb-fiber-Σ-Metric-Space d px px' Nxx' = + ( indexed-sum-Metric-Space A P) + ( map-emb-fiber-indexed-sum-Metric-Space A P x) + is-short-emb-fiber-indexed-sum-Metric-Space d px px' Nxx' = ( refl , Nxx') - short-emb-fiber-Σ-Metric-Space : - short-function-Metric-Space (P x) (Σ-Metric-Space A P) - short-emb-fiber-Σ-Metric-Space = - ( map-emb-fiber-Σ-Metric-Space A P x) , - ( is-short-emb-fiber-Σ-Metric-Space) + short-emb-fiber-indexed-sum-Metric-Space : + short-function-Metric-Space (P x) (indexed-sum-Metric-Space A P) + short-emb-fiber-indexed-sum-Metric-Space = + ( map-emb-fiber-indexed-sum-Metric-Space A P x , + is-short-emb-fiber-indexed-sum-Metric-Space) - reflects-neighborhood-emb-fiber-Σ-Metric-Space : + reflects-neighborhood-emb-fiber-indexed-sum-Metric-Space : (d : ℚ⁺) (px px' : type-Metric-Space (P x)) → neighborhood-Metric-Space - ( Σ-Metric-Space A P) + ( indexed-sum-Metric-Space A P) ( d) - ( map-emb-fiber-Σ-Metric-Space A P x px) - ( map-emb-fiber-Σ-Metric-Space A P x px') → + ( map-emb-fiber-indexed-sum-Metric-Space A P x px) + ( map-emb-fiber-indexed-sum-Metric-Space A P x px') → neighborhood-Metric-Space ( P x) ( d) ( px) ( px') - reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px' (e , Nxx') = + reflects-neighborhood-emb-fiber-indexed-sum-Metric-Space d px px' (e , Nxx') = inv-tr ( λ e' → neighborhood-Metric-Space @@ -318,18 +320,18 @@ module _ ( e)) ( Nxx') - is-isometry-emb-fiber-Σ-Metric-Space : + is-isometry-emb-fiber-indexed-sum-Metric-Space : is-isometry-Metric-Space ( P x) - ( Σ-Metric-Space A P) - ( map-emb-fiber-Σ-Metric-Space A P x) - is-isometry-emb-fiber-Σ-Metric-Space d px px' = - ( is-short-emb-fiber-Σ-Metric-Space d px px' , - reflects-neighborhood-emb-fiber-Σ-Metric-Space d px px') - - isometry-emb-fiber-Σ-Metric-Space : - isometry-Metric-Space (P x) (Σ-Metric-Space A P) - isometry-emb-fiber-Σ-Metric-Space = - ( map-emb-fiber-Σ-Metric-Space A P x , - is-isometry-emb-fiber-Σ-Metric-Space) + ( indexed-sum-Metric-Space A P) + ( map-emb-fiber-indexed-sum-Metric-Space A P x) + is-isometry-emb-fiber-indexed-sum-Metric-Space d px px' = + ( is-short-emb-fiber-indexed-sum-Metric-Space d px px' , + reflects-neighborhood-emb-fiber-indexed-sum-Metric-Space d px px') + + isometry-emb-fiber-indexed-Metric-Space : + isometry-Metric-Space (P x) (indexed-sum-Metric-Space A P) + isometry-emb-fiber-indexed-Metric-Space = + ( map-emb-fiber-indexed-sum-Metric-Space A P x , + is-isometry-emb-fiber-indexed-sum-Metric-Space) ``` From 65471cfcbdef2965586d2229e2b9f6d43c816c80 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 18:43:47 +0200 Subject: [PATCH 114/151] Elaborate Ideas pseudometric spaces --- .../pseudometric-spaces.lagda.md | 67 +++++++++++++++---- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index 21172290e3..523f301643 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -42,20 +42,55 @@ open import metric-spaces.triangular-rational-neighborhood-relations ## Idea -A {{#concept "pseudometric space" Agda=Pseudometric-Space}} is a type equipped -with a {{concept "pseudometric structure" Agda=Pseudometric-Structure}}: a -[reflexive](metric-spaces.reflexive-rational-neighborhood-relations.md), -[symmetric](metric-spaces.symmetric-rational-neighborhood-relations.md), -[triangular](metric-spaces.triangular-rational-neighborhood-relations.md) and -[saturated](metric-spaces.saturated-rational-neighborhood-relations.md) -[rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md). - -Given a pseudometric structure `B` on `A` and some -[positive rational number](elementary-number-theory.positive-rational-numbers.md) -`d : ℚ⁺` such that `B d x y` holds for some pair of points `x y : A`, we -interpret `d` as an +A +{{#concept "pseudometric space" Agda=Pseudometric-Space WD='pseudometric space' WDID=Q1397059}} +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 {{#concept "upper bound" Disambiguation="on distance in a pseudometric space" Agda=is-upper-bound-dist-Pseudometric-Space}} -on the distance between `x` and `y` in the pseudometric space. +on the distance between points, rather than by a distance function as in the +classical approach. Thus, a pseudometric 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-neighborhood-relations.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 pseudometric space must satisfy the following +axioms: + +- [**Reflexivity.**](metric-spaces.reflexive-rational-neighborhood-relations.md) + Every positive rational `d` is an upper bound on the distance from `x` to + itself. +- [**Symmetry.**](metric-spaces.symmetric-rational-neighborhood-relations.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-neighborhood-relations.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`. +- [**Saturation.**](metric-spaces.saturated-rational-neighborhood-relations.md): + any neighborhood `N d x y` contains the intersection of all `N d' x y` for + `d < d'`. + +Unlike in [metric spaces](metric-spaces.metric-spaces.md), the rational +neighborhood relation in a pseudometric space is not required to be +[extensional](metric-spaces.extensionality-pseudometric-spaces.md) so +[similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) are not +necessarily [equal](foundation.identity-types.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 this axiom to ensure that the subsets of +upper bounds on distances between elements is closed on the left. ## Definitions @@ -229,6 +264,12 @@ equiv-Eq-tr-Pseudometric-Structure A .A P Q refl = ( Q)) ``` +## See also + +- The type of [metric spaces](metric-spaces.metric-spaces.md) is the type of + [extensional](metric-spaces.extensionality-pseudometric-spaces.md) + pseudometric spaces. + ## External links - [Pseudometric spaces](https://en.wikipedia.org/wiki/Pseudometric_space) at From 7a92a6683148fc5ceb509f408ea013efccece40f Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 18:54:27 +0200 Subject: [PATCH 115/151] more precise definition extensionality pseudometric spaces --- .../extensionality-pseudometric-spaces.lagda.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/metric-spaces/extensionality-pseudometric-spaces.lagda.md b/src/metric-spaces/extensionality-pseudometric-spaces.lagda.md index 3815780086..baed4bb19b 100644 --- a/src/metric-spaces/extensionality-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/extensionality-pseudometric-spaces.lagda.md @@ -31,12 +31,11 @@ open import metric-spaces.similarity-of-elements-pseudometric-spaces A [pseudometric space](metric-spaces.pseudometric-spaces.md) is called {{#concept "extensional" Disambiguation="pseudometric space" Agda=is-extensional-Pseudometric-Space}} -if any of the following equivalent conditions holds: +if the similarity relation has [propositional](foundation.propositions.md) +fibers. This is equivalent to the following conditions: - [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 From f703b192aacab7eccbf58326e33521a3ba9707d0 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 18:58:52 +0200 Subject: [PATCH 116/151] fix WD --- src/metric-spaces/pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index 523f301643..97072105e1 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -43,7 +43,7 @@ open import metric-spaces.triangular-rational-neighborhood-relations ## Idea A -{{#concept "pseudometric space" Agda=Pseudometric-Space WD='pseudometric space' WDID=Q1397059}} +{{#concept "pseudometric space" Agda=Pseudometric-Space WD="pseudometric space" WDID=Q1397059}} is a type [structured](foundation.structure.md) with a concept of distance on its elements. From eba6fdd7774a85573bac2cb70fbfb52806cc87fe Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 23:45:18 +0200 Subject: [PATCH 117/151] Update src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 40d2960206..17094b234f 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -32,7 +32,7 @@ A {{#concept "Cauchy approximation" Disambiguation="in a metric space" Agda=is-cauchy-approximation-Metric-Space}} in a [metric space](metric-spaces.metric-spaces.md) `A` is a [Cauchy approximation](metric-spaces.cauchy-approximations-pseudometric-spaces.md) -in its underlying [pseudometric-space](metric-spaces.pseudometric-spaces.md): a +in its underlying [pseudometric space](metric-spaces.pseudometric-spaces.md): a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the carrier type of `A` such that for all [positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` From e35feb5ce80adc5a51bc9d77428f77708c1c7f91 Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 23:52:34 +0200 Subject: [PATCH 118/151] Update src/metric-spaces/indexed-sums-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/indexed-sums-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index 3a26979877..6a92a8d2de 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -49,7 +49,7 @@ open import metric-spaces.triangular-rational-neighborhood-relations The {{#concept "indexed sum" Disambiguation="of a type family of metric spaces" Agda=indexed-sum-Metric-Space}} -of a type family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a +of a family `P` of [metric spaces](metric-spaces.metric-spaces.md) over a [set](foundation.sets.md) `A` is the metric space with underlying type `Σ A P` and the [neighborhood relation](metric-spaces.rational-neighborhood-relations.md) From 1f5b285d187c29132dde943ecbf1c96597add56d Mon Sep 17 00:00:00 2001 From: malarbol Date: Thu, 14 Aug 2025 23:53:01 +0200 Subject: [PATCH 119/151] WIP split components --- src/foundation/set-quotients.lagda.md | 41 +++++++++++++++++++ ...at-bounded-distance-metric-spaces.lagda.md | 1 + 2 files changed, 42 insertions(+) diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 26fd53a4bf..7218e2d2b7 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -14,6 +14,8 @@ open import foundation.embeddings open import foundation.equivalence-classes 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.inhabited-subtypes open import foundation.reflecting-maps-equivalence-relations @@ -417,6 +419,45 @@ module _ B f Uf ``` +```agda +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) + where + + Σ-quotient-Set : UU (l1 ⊔ l2) + Σ-quotient-Set = + Σ (set-quotient R) (type-subtype ∘ subtype-set-quotient R) + + map-Σ-quotient-Set : Σ-quotient-Set → A + map-Σ-quotient-Set (X , x , x∈X) = x + + postulate + lemma-quotient-Set : + (x : A) → is-in-equivalence-class-set-quotient R (quotient-map R x) x + -- lemma-quotient-Set x = {!!} + + map-split-Σ-quotient-Set : A → Σ-quotient-Set + map-split-Σ-quotient-Set x = + ( quotient-map R x , x , lemma-quotient-Set x) + + is-section-map-Σ-quotient-Set : + map-Σ-quotient-Set ∘ map-split-Σ-quotient-Set ~ id + is-section-map-Σ-quotient-Set x = refl + + is-retraction-map-Σ-quotient-Set : + map-split-Σ-quotient-Set ∘ map-Σ-quotient-Set ~ id + is-retraction-map-Σ-quotient-Set (X , x , x∈X) = + {!!} + + is-equiv-map-Σ-quotient-Set : is-equiv map-Σ-quotient-Set + is-equiv-map-Σ-quotient-Set = + is-equiv-is-invertible + map-split-Σ-quotient-Set + is-section-map-Σ-quotient-Set + {!!} + +``` + ## See also - [Set coequalizers](foundation.set-coequalizers.md) for an equivalent notion diff --git a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md index b566ef434d..f7ca4d61a6 100644 --- a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md +++ b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md @@ -16,6 +16,7 @@ open import foundation.function-types open import foundation.functoriality-propositional-truncation open import foundation.propositional-truncations open import foundation.propositions +open import foundation.set-quotients open import foundation.subtypes open import foundation.universe-levels From 6f8c642e886ea1ac43d6dce2dcc5acf7794cf869 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 00:02:31 +0200 Subject: [PATCH 120/151] parenthesis arguments --- .../dependent-products-metric-spaces.lagda.md | 14 +++++++------- .../indexed-sums-metric-spaces.lagda.md | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/metric-spaces/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index d5bc340326..1272368863 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -128,13 +128,13 @@ module _ Π-Metric-Space : Metric-Space (l ⊔ l1) (l ⊔ l2) Π-Metric-Space = make-Metric-Space - type-Π-Metric-Space - neighborhood-prop-Π-Metric-Space - is-reflexive-neighborhood-Π-Metric-Space - is-symmetric-neighborhood-Π-Metric-Space - is-triangular-neighborhood-Π-Metric-Space - is-saturated-neighborhood-Π-Metric-Space - is-extensional-pseudometric-space-Π-Metric-Space + ( type-Π-Metric-Space) + ( neighborhood-prop-Π-Metric-Space) + ( is-reflexive-neighborhood-Π-Metric-Space) + ( is-symmetric-neighborhood-Π-Metric-Space) + ( is-triangular-neighborhood-Π-Metric-Spac) + ( is-saturated-neighborhood-Π-Metric-Space) + ( is-extensional-pseudometric-space-Π-Metric-Space) ``` ## Properties diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index 6a92a8d2de..1889a32a07 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -221,13 +221,13 @@ module _ indexed-sum-Metric-Space : Metric-Space (la ⊔ lp) (la ⊔ lp') indexed-sum-Metric-Space = make-Metric-Space - type-indexed-sum-Metric-Space - neighborhood-prop-indexed-sum-Metric-Space - is-reflexive-neighborhood-indexed-sum-Metric-Space - is-symmetric-neighborhood-indexed-sum-Metric-Space - is-triangular-neighborhood-indexed-Metric-Space - is-saturated-neighborhood-indexed-sum-Metric-Space - is-extensional-pseudometric-space-indexed-sum-Metric-Space + ( type-indexed-sum-Metric-Space) + ( neighborhood-prop-indexed-sum-Metric-Space) + ( is-reflexive-neighborhood-indexed-sum-Metric-Space) + ( is-symmetric-neighborhood-indexed-sum-Metric-Space) + ( is-triangular-neighborhood-indexed-Metric-Space) + ( is-saturated-neighborhood-indexed-sum-Metric-Space) + ( is-extensional-pseudometric-space-indexed-sum-Metric-Space) base-point-indexed-sum-Metric-Space : type-Metric-Space indexed-sum-Metric-Space → type-Set A From de60898fd347f49ec846b31e6052dfe9e93624ab Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 00:06:09 +0200 Subject: [PATCH 121/151] typo --- src/metric-spaces/dependent-products-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/dependent-products-metric-spaces.lagda.md b/src/metric-spaces/dependent-products-metric-spaces.lagda.md index 1272368863..2675d11b69 100644 --- a/src/metric-spaces/dependent-products-metric-spaces.lagda.md +++ b/src/metric-spaces/dependent-products-metric-spaces.lagda.md @@ -132,7 +132,7 @@ module _ ( neighborhood-prop-Π-Metric-Space) ( is-reflexive-neighborhood-Π-Metric-Space) ( is-symmetric-neighborhood-Π-Metric-Space) - ( is-triangular-neighborhood-Π-Metric-Spac) + ( is-triangular-neighborhood-Π-Metric-Space) ( is-saturated-neighborhood-Π-Metric-Space) ( is-extensional-pseudometric-space-Π-Metric-Space) ``` From f9bc6b9241d9fb387f111f054232d7757d937d92 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 00:09:06 +0200 Subject: [PATCH 122/151] old triangle inequality 100 theorems --- src/literature/100-theorems.lagda.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md index d859e53b2f..72c2156dd7 100644 --- a/src/literature/100-theorems.lagda.md +++ b/src/literature/100-theorems.lagda.md @@ -136,6 +136,13 @@ open import elementary-number-theory.fundamental-theorem-of-arithmetic using ### 91. The triangle inequality {#91} +**Author:** [malarbol](https://github.com/malarbol) + +```agda +open import real-numbers.metric-space-of-real-numbers using + ( is-triangular-neighborhood-ℝ) +``` + **Author:** [Louis Wasserman](https://github.com/lowasser) ```agda From 0d47824af7d7f39d6a079b504bd3558158016a76 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 00:14:35 +0200 Subject: [PATCH 123/151] =?UTF-8?q?add=20`triangle-inequality-abs-?= =?UTF-8?q?=E2=84=9D`=20in=20100=20theorems?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/literature/100-theorems.lagda.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md index 72c2156dd7..e1415c75dc 100644 --- a/src/literature/100-theorems.lagda.md +++ b/src/literature/100-theorems.lagda.md @@ -146,6 +146,9 @@ open import real-numbers.metric-space-of-real-numbers using **Author:** [Louis Wasserman](https://github.com/lowasser) ```agda +open import real-numbers.absolute-value-real-numbers using + ( triangle-inequality-abs-ℝ) + open import real-numbers.distance-real-numbers using ( triangle-inequality-dist-ℝ) ``` From d9d9e6b4ea76f42c3cab16ff8278116923f3748d Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 00:26:01 +0200 Subject: [PATCH 124/151] fix parenthesis --- .../metric-space-of-rational-numbers.lagda.md | 18 +++++++++--------- .../metric-space-of-real-numbers.lagda.md | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index a4fafae960..a03627dff6 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -184,8 +184,8 @@ is-extensional-pseudometric-space-ℚ : is-extensional-Pseudometric-Space pseudometric-space-ℚ is-extensional-pseudometric-space-ℚ = is-extensional-is-tight-Pseudometric-Space - pseudometric-space-ℚ - is-tight-pseudometric-space-ℚ + ( pseudometric-space-ℚ) + ( is-tight-pseudometric-space-ℚ) ``` ### The standard metric space of rational numbers @@ -194,13 +194,13 @@ is-extensional-pseudometric-space-ℚ = metric-space-ℚ : Metric-Space lzero lzero metric-space-ℚ = make-Metric-Space - ℚ - neighborhood-prop-ℚ - is-reflexive-neighborhood-ℚ - is-symmetric-neighborhood-ℚ - is-triangular-neighborhood-ℚ - is-saturated-neighborhood-ℚ - is-extensional-pseudometric-space-ℚ + ( ℚ) + ( neighborhood-prop-ℚ) + ( is-reflexive-neighborhood-ℚ) + ( is-symmetric-neighborhood-ℚ) + ( is-triangular-neighborhood-ℚ) + ( is-saturated-neighborhood-ℚ) + ( is-extensional-pseudometric-space-ℚ) ``` ## Properties diff --git a/src/real-numbers/metric-space-of-real-numbers.lagda.md b/src/real-numbers/metric-space-of-real-numbers.lagda.md index 0338a6c0e3..64fcd174b9 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -141,8 +141,8 @@ module _ is-saturated-neighborhood-ℝ : is-saturated-Rational-Neighborhood-Relation (neighborhood-prop-ℝ l) is-saturated-neighborhood-ℝ ε x y H = - ( is-closed-lower-neighborhood-ℝ x y ε (pr1 ∘ H)) , - ( is-closed-lower-neighborhood-ℝ y x ε (pr2 ∘ H)) + ( is-closed-lower-neighborhood-ℝ x y ε (pr1 ∘ H) , + is-closed-lower-neighborhood-ℝ y x ε (pr2 ∘ H)) where is-closed-lower-neighborhood-ℝ : @@ -176,12 +176,12 @@ module _ pseudometric-space-ℝ : Pseudometric-Space (lsuc l) l pseudometric-space-ℝ = - ( ℝ l) , - ( neighborhood-prop-ℝ l) , - ( is-reflexive-neighborhood-ℝ) , - ( is-symmetric-neighborhood-ℝ) , - ( is-triangular-neighborhood-ℝ) , - ( is-saturated-neighborhood-ℝ) + ( ℝ l , + neighborhood-prop-ℝ l , + is-reflexive-neighborhood-ℝ , + is-symmetric-neighborhood-ℝ , + is-triangular-neighborhood-ℝ , + is-saturated-neighborhood-ℝ) module _ {l : Level} From aa5dd3990521207d1b5874f6596c3b60f5eeb0d0 Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 14:04:13 +0200 Subject: [PATCH 125/151] WIP --- src/foundation/set-quotients.lagda.md | 76 +++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 9 deletions(-) diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 7218e2d2b7..971b50867f 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -8,11 +8,14 @@ module foundation.set-quotients where ```agda open import foundation.action-on-identifications-functions +open import foundation.contractible-maps open import foundation.dependent-pair-types open import foundation.effective-maps-equivalence-relations open import foundation.embeddings +open import foundation.equality-dependent-pair-types open import foundation.equivalence-classes open import foundation.equivalences +open import foundation.fibers-of-maps open import foundation.function-extensionality open import foundation.function-types open import foundation.homotopies @@ -22,6 +25,7 @@ open import foundation.reflecting-maps-equivalence-relations open import foundation.sets open import foundation.slice open import foundation.surjective-maps +open import foundation.torsorial-type-families open import foundation.uniqueness-set-quotients open import foundation.universal-property-image open import foundation.universal-property-set-quotients @@ -419,6 +423,35 @@ module _ B f Uf ``` +```agda +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) + (x : A) (y : set-quotient R) + where + + Eq-quotient-map-quotient : UU (l1 ⊔ l2) + Eq-quotient-map-quotient = quotient-map R x = y + + is-prop-Eq-quotient-map-quotient : is-prop Eq-quotient-map-quotient + is-prop-Eq-quotient-map-quotient = + is-set-set-quotient R (quotient-map R x) y + + Eq-prop-quotient-map-quotient : Prop (l1 ⊔ l2) + Eq-prop-quotient-map-quotient = + ( Eq-quotient-map-quotient , is-prop-Eq-quotient-map-quotient) + +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) (x : A) + where + + is-torsorial-Eq-quotient-map-quotient : + is-torsorial (Eq-quotient-map-quotient R x) + pr1 is-torsorial-Eq-quotient-map-quotient = + ( quotient-map R x , refl) + pr2 is-torsorial-Eq-quotient-map-quotient (y , H) = + eq-type-subtype (Eq-prop-quotient-map-quotient R x) H +``` + ```agda module _ {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) @@ -431,15 +464,32 @@ module _ map-Σ-quotient-Set : Σ-quotient-Set → A map-Σ-quotient-Set (X , x , x∈X) = x - postulate - lemma-quotient-Set : - (x : A) → is-in-equivalence-class-set-quotient R (quotient-map R x) x - -- lemma-quotient-Set x = {!!} + + -- postulate + -- lemma-quotient-Set : + -- (x : A) → is-in-equivalence-class-set-quotient R (quotient-map R x) x + lemma-quotient-Set : + (x : A) → is-in-equivalence-class-set-quotient R (quotient-map R x) x + lemma-quotient-Set x = + {!!} map-split-Σ-quotient-Set : A → Σ-quotient-Set map-split-Σ-quotient-Set x = ( quotient-map R x , x , lemma-quotient-Set x) + lemma-contr-map-Σ-quotient-Set : + (x : A) (y : fiber map-Σ-quotient-Set x) → + (map-split-Σ-quotient-Set x , refl) = y + lemma-contr-map-Σ-quotient-Set x ((Y , y , y∈Y) , H) = + eq-pair-Σ + ( eq-pair-Σ {!!} {!!}) + {!!} + + is-contr-map-Σ-quotient-Set : is-contr-map map-Σ-quotient-Set + is-contr-map-Σ-quotient-Set x = + ( ( map-split-Σ-quotient-Set x , refl) , + ( lemma-contr-map-Σ-quotient-Set x)) + is-section-map-Σ-quotient-Set : map-Σ-quotient-Set ∘ map-split-Σ-quotient-Set ~ id is-section-map-Σ-quotient-Set x = refl @@ -447,15 +497,23 @@ module _ is-retraction-map-Σ-quotient-Set : map-split-Σ-quotient-Set ∘ map-Σ-quotient-Set ~ id is-retraction-map-Σ-quotient-Set (X , x , x∈X) = - {!!} + eq-pair-Σ + ( α) + ( eq-pair-Σ + {!!} + {!!}) + where + + α : quotient-map R x = X + α = {!!} + is-equiv-map-Σ-quotient-Set : is-equiv map-Σ-quotient-Set is-equiv-map-Σ-quotient-Set = is-equiv-is-invertible - map-split-Σ-quotient-Set - is-section-map-Σ-quotient-Set - {!!} - + ( map-split-Σ-quotient-Set) + ( is-section-map-Σ-quotient-Set) + ( is-retraction-map-Σ-quotient-Set) ``` ## See also From adc9641195cc1720f81f5ff0c21a2628ffec40cc Mon Sep 17 00:00:00 2001 From: malarbol Date: Fri, 15 Aug 2025 14:31:05 +0200 Subject: [PATCH 126/151] abstract is-torsorial-XXX --- .../equality-of-metric-spaces.lagda.md | 48 +++++++++-------- .../equality-of-pseudometric-spaces.lagda.md | 51 +++++++++++-------- .../rational-neighborhood-relations.lagda.md | 19 ++++--- 3 files changed, 68 insertions(+), 50 deletions(-) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 2808657416..cd9034e861 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -136,13 +136,15 @@ module _ (A : Metric-Space l1 l2) where - is-torsorial-isometric-eq-Metric-Space : - is-torsorial (isometric-eq-Metric-Space A) - is-torsorial-isometric-eq-Metric-Space = - is-contr-equiv' - ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-eq-Metric-Space A)) - ( is-torsorial-Id A) + abstract + is-torsorial-isometric-eq-Metric-Space : + is-torsorial + (λ (B : Metric-Space l1 l2) → isometric-eq-Metric-Space A B) + is-torsorial-isometric-eq-Metric-Space = + is-contr-equiv' + ( Σ (Metric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-eq-Metric-Space A)) + ( is-torsorial-Id A) ``` ### Isometric equality between the carrier types of metric spaces is equivalent isometric equivalence between them @@ -184,13 +186,15 @@ module _ (A : Metric-Space l1 l2) where - is-torsorial-isometric-equiv-Metric-Space : - is-torsorial (isometric-equiv-Metric-Space A) - is-torsorial-isometric-equiv-Metric-Space = - is-contr-equiv' - ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space A)) - ( is-torsorial-Id A) + abstract + is-torsorial-isometric-equiv-Metric-Space : + is-torsorial + (λ (B : Metric-Space l1 l2) → isometric-equiv-Metric-Space A B) + is-torsorial-isometric-equiv-Metric-Space = + is-contr-equiv' + ( Σ (Metric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space A)) + ( is-torsorial-Id A) ``` ### Two metric spaces are isometrically equivalent if and only if there is an isometric equivalence between them @@ -237,11 +241,13 @@ module _ (A : Metric-Space l1 l2) where - is-torsorial-isometric-equiv-Metric-Space' : - is-torsorial (isometric-equiv-Metric-Space' A) - is-torsorial-isometric-equiv-Metric-Space' = - is-contr-equiv' - ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space' A)) - ( is-torsorial-Id A) + abstract + is-torsorial-isometric-equiv-Metric-Space' : + is-torsorial + (λ (B : Metric-Space l1 l2) → isometric-equiv-Metric-Space' A B) + is-torsorial-isometric-equiv-Metric-Space' = + is-contr-equiv' + ( Σ (Metric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space' A)) + ( is-torsorial-Id A) ``` diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index 170324f9c5..9f86e2a310 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -129,13 +129,16 @@ module _ (A : Pseudometric-Space l1 l2) where - is-torsorial-isometric-eq-Pseudometric-Space : - is-torsorial (isometric-eq-Pseudometric-Space A) - is-torsorial-isometric-eq-Pseudometric-Space = - is-contr-equiv' - ( Σ (Pseudometric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-eq-Pseudometric-Space A)) - ( is-torsorial-Id A) + abstract + is-torsorial-isometric-eq-Pseudometric-Space : + is-torsorial + ( λ ( B : Pseudometric-Space l1 l2) → + ( isometric-eq-Pseudometric-Space A B)) + is-torsorial-isometric-eq-Pseudometric-Space = + is-contr-equiv' + ( Σ (Pseudometric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-eq-Pseudometric-Space A)) + ( is-torsorial-Id A) ``` ### Isometric equality between the carrier types of pseudometric spaces is equivalent to isometric equivalence between them @@ -180,13 +183,16 @@ module _ (A : Pseudometric-Space l1 l2) where - is-torsorial-isometric-equiv-Pseudometric-Space : - is-torsorial (isometric-equiv-Pseudometric-Space A) - is-torsorial-isometric-equiv-Pseudometric-Space = - is-contr-equiv' - ( Σ (Pseudometric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-equiv-Pseudometric-Space A)) - ( is-torsorial-Id A) + abstract + is-torsorial-isometric-equiv-Pseudometric-Space : + is-torsorial + ( λ ( B : Pseudometric-Space l1 l2) → + ( isometric-equiv-Pseudometric-Space A B)) + is-torsorial-isometric-equiv-Pseudometric-Space = + is-contr-equiv' + ( Σ (Pseudometric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Pseudometric-Space A)) + ( is-torsorial-Id A) ``` ### Two pseudometric spaces are isometrically equivalent if and only if there is an isometric equivalence between them @@ -240,11 +246,14 @@ module _ (A : Pseudometric-Space l1 l2) where - is-torsorial-isometric-equiv-Pseudometric-Space' : - is-torsorial (isometric-equiv-Pseudometric-Space' A) - is-torsorial-isometric-equiv-Pseudometric-Space' = - is-contr-equiv' - ( Σ (Pseudometric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-equiv-Pseudometric-Space' A)) - ( is-torsorial-Id A) + abstract + is-torsorial-isometric-equiv-Pseudometric-Space' : + is-torsorial + ( λ ( B : Pseudometric-Space l1 l2) → + ( isometric-equiv-Pseudometric-Space' A B)) + is-torsorial-isometric-equiv-Pseudometric-Space' = + is-contr-equiv' + ( Σ (Pseudometric-Space l1 l2) (Id A)) + ( equiv-tot (equiv-eq-isometric-equiv-Pseudometric-Space' A)) + ( is-torsorial-Id A) ``` diff --git a/src/metric-spaces/rational-neighborhood-relations.lagda.md b/src/metric-spaces/rational-neighborhood-relations.lagda.md index 455cee59e9..cad3060e0d 100644 --- a/src/metric-spaces/rational-neighborhood-relations.lagda.md +++ b/src/metric-spaces/rational-neighborhood-relations.lagda.md @@ -154,14 +154,17 @@ module _ ( λ 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)) + abstract + is-torsorial-Eq-Rational-Neighborhood-Relation : + is-torsorial + ( λ ( N' : Rational-Neighborhood-Relation l2 A) → + ( Eq-Rational-Neighborhood-Relation N 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) → From c4150cd5809901af22139d5d633d6daaeb248d7e Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 16:26:00 +0200 Subject: [PATCH 127/151] cleanup --- src/foundation/equivalence-classes.lagda.md | 25 +++- src/foundation/set-quotients.lagda.md | 158 ++++++++++---------- 2 files changed, 100 insertions(+), 83 deletions(-) diff --git a/src/foundation/equivalence-classes.lagda.md b/src/foundation/equivalence-classes.lagda.md index 71954bae57..0a9d6ec3f1 100644 --- a/src/foundation/equivalence-classes.lagda.md +++ b/src/foundation/equivalence-classes.lagda.md @@ -8,11 +8,15 @@ module foundation.equivalence-classes where ```agda open import foundation.conjunction +open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.effective-maps-equivalence-relations +open import foundation.equivalences open import foundation.existential-quantification +open import foundation.function-types open import foundation.functoriality-propositional-truncation open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopies open import foundation.inhabited-subtypes open import foundation.locally-small-types open import foundation.logical-equivalences @@ -23,13 +27,13 @@ open import foundation.small-types open import foundation.subtype-identity-principle open import foundation.subtypes open import foundation.surjective-maps +open import foundation.type-arithmetic-dependent-pair-types open import foundation.universal-property-image open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.embeddings open import foundation-core.equivalence-relations -open import foundation-core.equivalences open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.propositions @@ -338,6 +342,25 @@ module _ ( is-in-equivalence-class-eq-equivalence-class) ``` +### Σ-decompositions of types induced by equivalence classes + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) + where + + equiv-total-is-in-equivalence-class : + Σ A (λ x → Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x)) ≃ A + equiv-total-is-in-equivalence-class = + right-unit-law-Σ-is-contr + ( is-torsorial-is-in-equivalence-class R) + + Σ-decomposition-is-in-equivalence-class : + Σ (equivalence-class R) (type-subtype ∘ is-in-equivalence-class-Prop R) ≃ A + Σ-decomposition-is-in-equivalence-class = + equiv-total-is-in-equivalence-class ∘e equiv-left-swap-Σ +``` + ### The map `class : A → equivalence-class R` is an effective quotient map ```agda diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 971b50867f..69929ebf47 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -9,6 +9,7 @@ module foundation.set-quotients where ```agda open import foundation.action-on-identifications-functions open import foundation.contractible-maps +open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.effective-maps-equivalence-relations open import foundation.embeddings @@ -18,14 +19,18 @@ open import foundation.equivalences open import foundation.fibers-of-maps open import foundation.function-extensionality open import foundation.function-types +open import foundation.functoriality-dependent-pair-types open import foundation.homotopies open import foundation.identity-types open import foundation.inhabited-subtypes +open import foundation.logical-equivalences open import foundation.reflecting-maps-equivalence-relations open import foundation.sets open import foundation.slice open import foundation.surjective-maps open import foundation.torsorial-type-families +open import foundation.transport-along-identifications +open import foundation.type-arithmetic-dependent-pair-types open import foundation.uniqueness-set-quotients open import foundation.universal-property-image open import foundation.universal-property-set-quotients @@ -33,9 +38,7 @@ open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.equivalence-relations -open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types -open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.small-types open import foundation-core.subtypes @@ -158,7 +161,7 @@ module _ ( is-surjective-quotient-map) ``` -### The map `class : A → equivalence-class R` is an effective quotient map +### The map `class : A → set-quotient R` is an effective quotient map ```agda module _ @@ -423,97 +426,88 @@ module _ B f Uf ``` +### Any quotient class containing a given element is equal to its image by `quotient-map` + ```agda module _ {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) - (x : A) (y : set-quotient R) where - Eq-quotient-map-quotient : UU (l1 ⊔ l2) - Eq-quotient-map-quotient = quotient-map R x = y - - is-prop-Eq-quotient-map-quotient : is-prop Eq-quotient-map-quotient - is-prop-Eq-quotient-map-quotient = - is-set-set-quotient R (quotient-map R x) y - - Eq-prop-quotient-map-quotient : Prop (l1 ⊔ l2) - Eq-prop-quotient-map-quotient = - ( Eq-quotient-map-quotient , is-prop-Eq-quotient-map-quotient) - -module _ - {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) (x : A) - where - - is-torsorial-Eq-quotient-map-quotient : - is-torsorial (Eq-quotient-map-quotient R x) - pr1 is-torsorial-Eq-quotient-map-quotient = - ( quotient-map R x , refl) - pr2 is-torsorial-Eq-quotient-map-quotient (y , H) = - eq-type-subtype (Eq-prop-quotient-map-quotient R x) H + eq-set-quotient-equivalence-class-set-quotient : + (X : set-quotient R) {x : A} → + is-in-equivalence-class-set-quotient R X x → + quotient-map R x = X + eq-set-quotient-equivalence-class-set-quotient X {x} H = + ( ap + ( set-quotient-equivalence-class R) + ( eq-class-equivalence-class + ( R) + ( equivalence-class-set-quotient R X) + ( H))) ∙ + ( is-section-equivalence-class-set-quotient R X) ``` +### Σ-decompositions of types induced by set quotients + ```agda module _ {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - Σ-quotient-Set : UU (l1 ⊔ l2) - Σ-quotient-Set = - Σ (set-quotient R) (type-subtype ∘ subtype-set-quotient R) - - map-Σ-quotient-Set : Σ-quotient-Set → A - map-Σ-quotient-Set (X , x , x∈X) = x - - - -- postulate - -- lemma-quotient-Set : - -- (x : A) → is-in-equivalence-class-set-quotient R (quotient-map R x) x - lemma-quotient-Set : - (x : A) → is-in-equivalence-class-set-quotient R (quotient-map R x) x - lemma-quotient-Set x = - {!!} - - map-split-Σ-quotient-Set : A → Σ-quotient-Set - map-split-Σ-quotient-Set x = - ( quotient-map R x , x , lemma-quotient-Set x) - - lemma-contr-map-Σ-quotient-Set : - (x : A) (y : fiber map-Σ-quotient-Set x) → - (map-split-Σ-quotient-Set x , refl) = y - lemma-contr-map-Σ-quotient-Set x ((Y , y , y∈Y) , H) = - eq-pair-Σ - ( eq-pair-Σ {!!} {!!}) - {!!} - - is-contr-map-Σ-quotient-Set : is-contr-map map-Σ-quotient-Set - is-contr-map-Σ-quotient-Set x = - ( ( map-split-Σ-quotient-Set x , refl) , - ( lemma-contr-map-Σ-quotient-Set x)) - - is-section-map-Σ-quotient-Set : - map-Σ-quotient-Set ∘ map-split-Σ-quotient-Set ~ id - is-section-map-Σ-quotient-Set x = refl - - is-retraction-map-Σ-quotient-Set : - map-split-Σ-quotient-Set ∘ map-Σ-quotient-Set ~ id - is-retraction-map-Σ-quotient-Set (X , x , x∈X) = - eq-pair-Σ - ( α) - ( eq-pair-Σ - {!!} - {!!}) - where - - α : quotient-map R x = X - α = {!!} - - - is-equiv-map-Σ-quotient-Set : is-equiv map-Σ-quotient-Set - is-equiv-map-Σ-quotient-Set = - is-equiv-is-invertible - ( map-split-Σ-quotient-Set) - ( is-section-map-Σ-quotient-Set) - ( is-retraction-map-Σ-quotient-Set) + equiv-total-is-in-equivalence-class-set-quotient-is-in-equivalence-class : + (x : A) → + Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x) ≃ + Σ (set-quotient R) (λ X → is-in-equivalence-class-set-quotient R X x) + equiv-total-is-in-equivalence-class-set-quotient-is-in-equivalence-class x = + equiv-Σ + ( λ X → is-in-equivalence-class-set-quotient R X x) + ( compute-set-quotient R) + ( λ X → + equiv-iff-is-prop + ( is-prop-is-in-equivalence-class R X x) + ( is-prop-is-in-equivalence-class-set-quotient + ( R) + ( set-quotient-equivalence-class R X) + ( x)) + ( λ x∈X → + inv-tr + ( λ Y → is-in-equivalence-class R Y x) + ( is-retraction-equivalence-class-set-quotient R X) + ( x∈X)) + ( λ x∈X → + tr + ( λ Y → is-in-equivalence-class R Y x) + ( is-retraction-equivalence-class-set-quotient R X) + ( x∈X))) + + is-contr-total-is-in-equivalence-class-set-quotient : + (x : A) → + is-contr + ( Σ ( set-quotient R) + ( λ X → is-in-equivalence-class-set-quotient R X x)) + is-contr-total-is-in-equivalence-class-set-quotient x = + is-contr-equiv' + ( Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x)) + ( equiv-total-is-in-equivalence-class-set-quotient-is-in-equivalence-class + ( x)) + ( is-torsorial-is-in-equivalence-class R x) + + equiv-total-is-in-equivalence-class-set-quotient : + Σ ( A) + ( λ x → + Σ ( set-quotient R) + ( λ X → is-in-equivalence-class-set-quotient R X x)) ≃ + ( A) + equiv-total-is-in-equivalence-class-set-quotient = + right-unit-law-Σ-is-contr + ( is-contr-total-is-in-equivalence-class-set-quotient) + + Σ-decomposition-is-in-equivalence-class-set-quotient : + Σ ( set-quotient R) + ( type-subtype ∘ is-in-equivalence-class-set-quotient-Prop R) ≃ + ( A) + Σ-decomposition-is-in-equivalence-class-set-quotient = + equiv-total-is-in-equivalence-class-set-quotient ∘e equiv-left-swap-Σ ``` ## See also From a6e5988f583686329920ac9b4ea28710bb500315 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 17:02:26 +0200 Subject: [PATCH 128/151] cleanup --- src/foundation/equivalence-classes.lagda.md | 3 +- src/foundation/set-quotients.lagda.md | 69 +++++++++------------ 2 files changed, 33 insertions(+), 39 deletions(-) diff --git a/src/foundation/equivalence-classes.lagda.md b/src/foundation/equivalence-classes.lagda.md index 0a9d6ec3f1..112c599338 100644 --- a/src/foundation/equivalence-classes.lagda.md +++ b/src/foundation/equivalence-classes.lagda.md @@ -350,7 +350,8 @@ module _ where equiv-total-is-in-equivalence-class : - Σ A (λ x → Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x)) ≃ A + Σ A (λ x → Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x)) ≃ + ( A) equiv-total-is-in-equivalence-class = right-unit-law-Σ-is-contr ( is-torsorial-is-in-equivalence-class R) diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 69929ebf47..c10abe390b 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -454,43 +454,36 @@ module _ {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - equiv-total-is-in-equivalence-class-set-quotient-is-in-equivalence-class : - (x : A) → - Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x) ≃ - Σ (set-quotient R) (λ X → is-in-equivalence-class-set-quotient R X x) - equiv-total-is-in-equivalence-class-set-quotient-is-in-equivalence-class x = - equiv-Σ - ( λ X → is-in-equivalence-class-set-quotient R X x) - ( compute-set-quotient R) - ( λ X → - equiv-iff-is-prop - ( is-prop-is-in-equivalence-class R X x) - ( is-prop-is-in-equivalence-class-set-quotient - ( R) - ( set-quotient-equivalence-class R X) - ( x)) - ( λ x∈X → - inv-tr - ( λ Y → is-in-equivalence-class R Y x) - ( is-retraction-equivalence-class-set-quotient R X) - ( x∈X)) - ( λ x∈X → - tr - ( λ Y → is-in-equivalence-class R Y x) - ( is-retraction-equivalence-class-set-quotient R X) - ( x∈X))) - - is-contr-total-is-in-equivalence-class-set-quotient : - (x : A) → - is-contr - ( Σ ( set-quotient R) - ( λ X → is-in-equivalence-class-set-quotient R X x)) - is-contr-total-is-in-equivalence-class-set-quotient x = - is-contr-equiv' - ( Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x)) - ( equiv-total-is-in-equivalence-class-set-quotient-is-in-equivalence-class - ( x)) - ( is-torsorial-is-in-equivalence-class R x) + abstract + is-torsorial-is-in-equivalence-class-set-quotient : + (x : A) → + is-contr + ( Σ ( set-quotient R) + ( λ X → is-in-equivalence-class-set-quotient R X x)) + is-torsorial-is-in-equivalence-class-set-quotient x = + is-contr-equiv' + ( Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x)) + ( equiv-Σ + ( λ X → is-in-equivalence-class-set-quotient R X x) + ( compute-set-quotient R) + ( λ X → + equiv-iff-is-prop + ( is-prop-is-in-equivalence-class R X x) + ( is-prop-is-in-equivalence-class-set-quotient + ( R) + ( set-quotient-equivalence-class R X) + ( x)) + ( λ x∈X → + inv-tr + ( λ Y → is-in-equivalence-class R Y x) + ( is-retraction-equivalence-class-set-quotient R X) + ( x∈X)) + ( λ x∈X → + tr + ( λ Y → is-in-equivalence-class R Y x) + ( is-retraction-equivalence-class-set-quotient R X) + ( x∈X)))) + ( is-torsorial-is-in-equivalence-class R x) equiv-total-is-in-equivalence-class-set-quotient : Σ ( A) @@ -500,7 +493,7 @@ module _ ( A) equiv-total-is-in-equivalence-class-set-quotient = right-unit-law-Σ-is-contr - ( is-contr-total-is-in-equivalence-class-set-quotient) + ( is-torsorial-is-in-equivalence-class-set-quotient) Σ-decomposition-is-in-equivalence-class-set-quotient : Σ ( set-quotient R) From 1389f10a79f4e9cf6f202699eb88cc9eeb627474 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 17:43:28 +0200 Subject: [PATCH 129/151] decomposition of metric spaces into subspaces of elements at bounded distance --- src/metric-spaces.lagda.md | 1 + ...at-bounded-distance-metric-spaces.lagda.md | 321 ++++++++++++++++++ .../equality-of-metric-spaces.lagda.md | 6 + 3 files changed, 328 insertions(+) create mode 100644 src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 63dca9f747..ca86a5ddf1 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -55,6 +55,7 @@ open import metric-spaces.complete-metric-spaces public open import metric-spaces.continuous-functions-metric-spaces public open import metric-spaces.convergent-cauchy-approximations-metric-spaces public open import metric-spaces.convergent-sequences-metric-spaces public +open import metric-spaces.decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces public open import metric-spaces.dependent-products-metric-spaces public open import metric-spaces.discrete-metric-spaces public open import metric-spaces.elements-at-bounded-distance-metric-spaces public diff --git a/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md b/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md new file mode 100644 index 0000000000..f04091dd0a --- /dev/null +++ b/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md @@ -0,0 +1,321 @@ +# Decomposition of metric spaces as indexed sums of metric spaces with elements at bounded distance + +```agda +module metric-spaces.decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.equivalence-classes +open import foundation.equivalence-relations +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.functoriality-propositional-truncation +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.set-quotients +open import foundation.sets +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.elements-at-bounded-distance-metric-spaces +open import metric-spaces.equality-of-metric-spaces +open import metric-spaces.functions-metric-spaces +open import metric-spaces.indexed-sums-metric-spaces +open import metric-spaces.isometries-metric-spaces +open import metric-spaces.metric-spaces +open import metric-spaces.subspaces-metric-spaces +``` + +
+ +## Idea + +Any [metric space](metric-spaces.metric-spaces.md) is +[isometrically equivalent](metric-spaces.equality-of-metric-spaces.md) to its +{{#concept "Σ-decomposition into subspaces of elements at bounded distance" Agda=Σ-components-at-bounded-distance-Metric-Space}}, +the [indexed sum](metric-spaces.indexed-sums-metric-spaces.md) of its +[subspaces](metric-spaces.subspaces-metric-spaces.md) of +[elements at bounded distance](metric-spaces.elements-at-bounded-distance-metric-spaces.md) +indexed by the [set quotient](foundation.set-quotients.md) of the metric space +by the [equivalence relation](foundation.equivalence-relations.md) of being at +bounded distance. + +## Definitions + +### The set of components of subspaces of elements at bounded distance in a metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + set-components-at-bounded-distance-Metric-Space : Set (l1 ⊔ l2) + set-components-at-bounded-distance-Metric-Space = + quotient-Set + ( equivalence-relation-bounded-dist-Metric-Space A) + + type-components-at-bounded-distance-Metric-Space : UU (l1 ⊔ l2) + type-components-at-bounded-distance-Metric-Space = + type-Set set-components-at-bounded-distance-Metric-Space + + map-type-components-at-bounded-distance-Metric-Space : + type-Metric-Space A → + type-components-at-bounded-distance-Metric-Space + map-type-components-at-bounded-distance-Metric-Space = + quotient-map + ( equivalence-relation-bounded-dist-Metric-Space A) +``` + +### The metric subspaces of elements at bounded distance in a metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + (x : type-components-at-bounded-distance-Metric-Space A) + where + + subspace-components-at-bounded-distance-Metric-Space : + Metric-Space (l1 ⊔ l2) l2 + subspace-components-at-bounded-distance-Metric-Space = + subspace-Metric-Space + ( A) + ( subtype-set-quotient + ( equivalence-relation-bounded-dist-Metric-Space A) + ( x)) + + type-subspace-components-at-bounded-distance-Metric-Space : UU (l1 ⊔ l2) + type-subspace-components-at-bounded-distance-Metric-Space = + type-Metric-Space + subspace-components-at-bounded-distance-Metric-Space +``` + +### The sum of metric subspaces of elements at bounded distance indexed by the set of components + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + Σ-components-at-bounded-distance-Metric-Space : + Metric-Space (l1 ⊔ l2) (l1 ⊔ l2) + Σ-components-at-bounded-distance-Metric-Space = + indexed-sum-Metric-Space + ( set-components-at-bounded-distance-Metric-Space A) + ( subspace-components-at-bounded-distance-Metric-Space A) + + type-Σ-components-at-bounded-distance-Metric-Space : UU (l1 ⊔ l2) + type-Σ-components-at-bounded-distance-Metric-Space = + type-Metric-Space Σ-components-at-bounded-distance-Metric-Space +``` + +## Properties + +### All elements in a subspace of elements at bounded distance are at bounded distance + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + (X : type-components-at-bounded-distance-Metric-Space A) + where + + all-elements-at-bounded-distance-subspace-components-at-bounded-distance-Metric-Space : + (x y : type-subspace-components-at-bounded-distance-Metric-Space A X) → + bounded-dist-Metric-Space + ( subspace-components-at-bounded-distance-Metric-Space A X) + ( x) + ( y) + all-elements-at-bounded-distance-subspace-components-at-bounded-distance-Metric-Space + (x , x∈X) (y , y∈X) = + apply-effectiveness-quotient-map + ( equivalence-relation-bounded-dist-Metric-Space A) + ( ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-bounded-dist-Metric-Space A) + ( X) + ( x∈X)) ∙ + ( inv + ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-bounded-dist-Metric-Space A) + ( X) + ( y∈X)))) +``` + +### Neighborhoods in subspaces of equal components are neigborhoods in the ambient metric space + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + lemma-iff-neighborhood-Σ-components-at-bounded-distance-Metric-Space : + ( d : ℚ⁺) → + ( X Y : type-components-at-bounded-distance-Metric-Space A) → + ( eqXY : X = Y) → + ( x : type-subspace-components-at-bounded-distance-Metric-Space A X) → + ( y : type-subspace-components-at-bounded-distance-Metric-Space A Y) → + ( neighborhood-Metric-Space + ( subspace-components-at-bounded-distance-Metric-Space A Y) + ( d) + ( tr + ( type-Metric-Space ∘ + subspace-components-at-bounded-distance-Metric-Space A) + ( eqXY) + ( x)) + ( y)) ↔ + neighborhood-Metric-Space A d (pr1 x) (pr1 y) + lemma-iff-neighborhood-Σ-components-at-bounded-distance-Metric-Space + d X .X refl (x , x∈X) (y , y∈X) = id-iff +``` + +### Any metric space is isometrically equivalent to the indexed sum of its subspaces of components of elements at bounded distance + +#### Equivalence of underlying types + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + equiv-type-Σ-components-at-bounded-distance-Metric-Space : + type-Σ-components-at-bounded-distance-Metric-Space A ≃ + type-Metric-Space A + equiv-type-Σ-components-at-bounded-distance-Metric-Space = + Σ-decomposition-is-in-equivalence-class-set-quotient + ( equivalence-relation-bounded-dist-Metric-Space A) + + map-equiv-Σ-components-at-bounded-distance-Metric-Space : + type-function-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( A) + map-equiv-Σ-components-at-bounded-distance-Metric-Space = + map-equiv + ( equiv-type-Σ-components-at-bounded-distance-Metric-Space) +``` + +#### The equivalence between a metric space and its decompositions into subspaces of elements at bounded distance is an isometry + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + preserves-neighborhood-map-equiv-Σ-components-at-bounded-distance-Metric-Space : + ( d : ℚ⁺) + ( x y : type-Σ-components-at-bounded-distance-Metric-Space A) → + neighborhood-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( d) + ( x) + ( y) → + neighborhood-Metric-Space A d + ( map-equiv-Σ-components-at-bounded-distance-Metric-Space A x) + ( map-equiv-Σ-components-at-bounded-distance-Metric-Space A y) + preserves-neighborhood-map-equiv-Σ-components-at-bounded-distance-Metric-Space + d (X , x , x∈X) (Y , y , y∈Y) (X=Y , Nxy) = + forward-implication + ( lemma-iff-neighborhood-Σ-components-at-bounded-distance-Metric-Space + ( A) + ( d) + ( X) + ( Y) + ( X=Y) + ( x , x∈X) + ( y , y∈Y)) + ( Nxy) + + reflects-neighborhood-map-equiv-Σ-components-at-bounded-distance-Metric-Space : + ( d : ℚ⁺) + ( x y : type-Σ-components-at-bounded-distance-Metric-Space A) → + neighborhood-Metric-Space A d + ( map-equiv-Σ-components-at-bounded-distance-Metric-Space A x) + ( map-equiv-Σ-components-at-bounded-distance-Metric-Space A y) → + neighborhood-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( d) + ( x) + ( y) + reflects-neighborhood-map-equiv-Σ-components-at-bounded-distance-Metric-Space + d (X , x , x∈X) (Y , y , y∈Y) Nxy = + ( lemma-eq , + backward-implication + ( lemma-iff-neighborhood-Σ-components-at-bounded-distance-Metric-Space + ( A) + ( d) + ( X) + ( Y) + ( lemma-eq) + ( x , x∈X) + ( y , y∈Y)) + ( Nxy)) + where + + lemma-eq-Y : + map-type-components-at-bounded-distance-Metric-Space A y = Y + lemma-eq-Y = + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-bounded-dist-Metric-Space A) + ( Y) + ( y∈Y) + + lemma-eq-X : + map-type-components-at-bounded-distance-Metric-Space A x = X + lemma-eq-X = + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-bounded-dist-Metric-Space A) + ( X) + ( x∈X) + + lemma-eq-map-type-components-at-bounded-distance-Metric-Space : + ( map-type-components-at-bounded-distance-Metric-Space A x) = + ( map-type-components-at-bounded-distance-Metric-Space A y) + lemma-eq-map-type-components-at-bounded-distance-Metric-Space = + apply-effectiveness-quotient-map' + ( equivalence-relation-bounded-dist-Metric-Space A) + ( unit-trunc-Prop (d , Nxy)) + + lemma-eq : X = Y + lemma-eq = + ( inv lemma-eq-X) ∙ + ( lemma-eq-map-type-components-at-bounded-distance-Metric-Space) ∙ + ( lemma-eq-Y) + + is-isometry-map-equiv-Σ-components-at-bounded-distance-Metric-Space : + is-isometry-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( A) + ( map-equiv-Σ-components-at-bounded-distance-Metric-Space A) + is-isometry-map-equiv-Σ-components-at-bounded-distance-Metric-Space d x y = + ( ( preserves-neighborhood-map-equiv-Σ-components-at-bounded-distance-Metric-Space + ( d) + ( x) + ( y)) , + ( reflects-neighborhood-map-equiv-Σ-components-at-bounded-distance-Metric-Space + ( d) + ( x) + ( y))) +``` + +#### The isometric equivalence between a metric space and its decompositions into subspaces of elements at bounded distance + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + isometric-equiv-Σ-components-at-bounded-distance-Metric-Space : + isometric-equiv-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( A) + isometric-equiv-Σ-components-at-bounded-distance-Metric-Space = + ( equiv-type-Σ-components-at-bounded-distance-Metric-Space A , + is-isometry-map-equiv-Σ-components-at-bounded-distance-Metric-Space A) +``` diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index cd9034e861..3461753652 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -176,6 +176,12 @@ module _ equiv-eq-isometric-equiv-Metric-Space = ( equiv-isometric-eq-equiv-Metric-Space A B) ∘e ( equiv-eq-isometric-eq-Metric-Space A B) + + eq-isometric-equiv-Metric-Space : + isometric-equiv-Metric-Space A B → A = B + eq-isometric-equiv-Metric-Space = + map-inv-equiv + ( equiv-eq-isometric-equiv-Metric-Space) ``` ### Isometric equivalence of metric spaces is torsorial From dd4ba27b8e016d0b928a3e67f7fb8c5cb3302690 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 17:43:40 +0200 Subject: [PATCH 130/151] fix header --- src/foundation/set-quotients.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index c10abe390b..768a241abf 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -426,7 +426,7 @@ module _ B f Uf ``` -### Any quotient class containing a given element is equal to its image by `quotient-map` +### Any quotient class containing a given element `x` is equal to `quotient-map x` ```agda module _ From 075b3c4e9577cdbb225d3d87db527f46c520cf65 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 17:50:23 +0200 Subject: [PATCH 131/151] unused import --- .../elements-at-bounded-distance-metric-spaces.lagda.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md index f7ca4d61a6..b566ef434d 100644 --- a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md +++ b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md @@ -16,7 +16,6 @@ open import foundation.function-types open import foundation.functoriality-propositional-truncation open import foundation.propositional-truncations open import foundation.propositions -open import foundation.set-quotients open import foundation.subtypes open import foundation.universe-levels From 3af8fa425f6233eaa951df51564db894edaa5f17 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 17:53:03 +0200 Subject: [PATCH 132/151] eq-isometric-equiv-Metric-Space --- src/metric-spaces/equality-of-metric-spaces.lagda.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index cd9034e861..3461753652 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -176,6 +176,12 @@ module _ equiv-eq-isometric-equiv-Metric-Space = ( equiv-isometric-eq-equiv-Metric-Space A B) ∘e ( equiv-eq-isometric-eq-Metric-Space A B) + + eq-isometric-equiv-Metric-Space : + isometric-equiv-Metric-Space A B → A = B + eq-isometric-equiv-Metric-Space = + map-inv-equiv + ( equiv-eq-isometric-equiv-Metric-Space) ``` ### Isometric equivalence of metric spaces is torsorial From d1840fee83bdf46be3cff89d33755479a09f1bda Mon Sep 17 00:00:00 2001 From: malarbol Date: Sat, 16 Aug 2025 18:45:07 +0200 Subject: [PATCH 133/151] more properties --- src/foundation/equivalence-classes.lagda.md | 13 +++--- ...at-bounded-distance-metric-spaces.lagda.md | 43 +++++++++++++++++++ .../equality-of-metric-spaces.lagda.md | 21 +++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/src/foundation/equivalence-classes.lagda.md b/src/foundation/equivalence-classes.lagda.md index 112c599338..39adccde10 100644 --- a/src/foundation/equivalence-classes.lagda.md +++ b/src/foundation/equivalence-classes.lagda.md @@ -319,12 +319,13 @@ module _ ( λ D → is-in-equivalence-class-Prop R D a) ( eq-class-equivalence-class R C H) - is-torsorial-is-in-equivalence-class : - is-torsorial (λ P → is-in-equivalence-class R P a) - pr1 is-torsorial-is-in-equivalence-class = - center-total-is-in-equivalence-class - pr2 is-torsorial-is-in-equivalence-class = - contraction-total-is-in-equivalence-class + abstract + is-torsorial-is-in-equivalence-class : + is-torsorial (λ P → is-in-equivalence-class R P a) + pr1 is-torsorial-is-in-equivalence-class = + center-total-is-in-equivalence-class + pr2 is-torsorial-is-in-equivalence-class = + contraction-total-is-in-equivalence-class is-in-equivalence-class-eq-equivalence-class : (q : equivalence-class R) → class R a = q → diff --git a/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md b/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md index f04091dd0a..2b4ce0a37e 100644 --- a/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md +++ b/src/metric-spaces/decomposition-metric-spaces-elements-at-bounded-distance-metric-spaces.lagda.md @@ -319,3 +319,46 @@ module _ ( equiv-type-Σ-components-at-bounded-distance-Metric-Space A , is-isometry-map-equiv-Σ-components-at-bounded-distance-Metric-Space A) ``` + +### The decomposition into subspaces of elements at bounded distance is idempotent + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + idempotent-Σ-components-at-bounded-distance-Metric-Space : + Σ-components-at-bounded-distance-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) = + Σ-components-at-bounded-distance-Metric-Space A + idempotent-Σ-components-at-bounded-distance-Metric-Space = + eq-isometric-equiv-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A)) + ( Σ-components-at-bounded-distance-Metric-Space A) + ( isometric-equiv-Σ-components-at-bounded-distance-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A)) +``` + +### Universal property of the decomposition into subspaces of elements at bounded distance + +```agda +module _ + {l1 l2 : Level} (A : Metric-Space l1 l2) + where + + eq-Σ-components-at-bounded-distance-Metric-Space : + (M : Metric-Space (l1 ⊔ l2) (l1 ⊔ l2)) → + isometric-equiv-Metric-Space A M → + Σ-components-at-bounded-distance-Metric-Space A = M + eq-Σ-components-at-bounded-distance-Metric-Space M isometric-equiv-M = + eq-isometric-equiv-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( M) + ( comp-isometric-equiv-Metric-Space + ( Σ-components-at-bounded-distance-Metric-Space A) + ( A) + ( M) + ( isometric-equiv-M) + ( isometric-equiv-Σ-components-at-bounded-distance-Metric-Space A)) +``` diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 3461753652..a707d971d9 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -203,6 +203,27 @@ module _ ( is-torsorial-Id A) ``` +### Composition of isometric equivalences + +```agda +module _ + {la la' lb lb' lc lc' : Level} + (A : Metric-Space la la') (B : Metric-Space lb lb') (C : Metric-Space lc lc') + where + + comp-isometric-equiv-Metric-Space : + isometric-equiv-Metric-Space B C → + isometric-equiv-Metric-Space A B → + isometric-equiv-Metric-Space A C + comp-isometric-equiv-Metric-Space (B≃C , isometry-B≃C) (A≃B , isometry-A≃B) = + ( B≃C ∘e A≃B , + is-isometry-comp-is-isometry-Metric-Space A B C + ( map-equiv B≃C) + ( map-equiv A≃B) + ( isometry-B≃C) + ( isometry-A≃B)) +``` + ### Two metric spaces are isometrically equivalent if and only if there is an isometric equivalence between them ```agda From 9d2be16d482800f18c2bb93d3ac60333045caf35 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 19:02:02 +0200 Subject: [PATCH 134/151] lemmas --- src/foundation/set-quotients.lagda.md | 75 +++++++++++++++++++ ...y-of-elements-pseudometric-spaces.lagda.md | 11 +++ 2 files changed, 86 insertions(+) diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 768a241abf..4ed14ec988 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -161,6 +161,37 @@ module _ ( is-surjective-quotient-map) ``` +### Any element is in the class of its quotient + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) + where + + is-in-equivalence-class-quotient-map-set-quotient : + (x : A) → + is-in-equivalence-class-set-quotient + ( R) + ( quotient-map R x) + ( x) + is-in-equivalence-class-quotient-map-set-quotient x = + is-in-equivalence-class-eq-equivalence-class + ( R) + ( x) + ( equivalence-class-set-quotient R (quotient-map R x)) + ( inv + ( is-retraction-equivalence-class-set-quotient R (class R x))) + + inhabitant-equivalence-class-quotient-map-set-quotient : + (x : A) → + type-subtype + ( subtype-set-quotient R (quotient-map R x)) + inhabitant-equivalence-class-quotient-map-set-quotient x = + (x , is-in-equivalence-class-quotient-map-set-quotient x) +``` + +## Properties + ### The map `class : A → set-quotient R` is an effective quotient map ```agda @@ -447,6 +478,50 @@ module _ ( is-section-equivalence-class-set-quotient R X) ``` +### Two quotient classes that contain similar elements are equal + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) + where + + eq-set-quotient-sim-element-set-quotient : + (X : set-quotient R) {x : A} → + (Y : set-quotient R) {y : A} → + is-in-equivalence-class-set-quotient R X x → + is-in-equivalence-class-set-quotient R Y y → + sim-equivalence-relation R x y → + X = Y + eq-set-quotient-sim-element-set-quotient X {x} Y {y} x∈X y∈Y x~y = + ( ( inv (eq-set-quotient-equivalence-class-set-quotient R X x∈X)) ∙ + ( apply-effectiveness-quotient-map' R x~y) ∙ + ( eq-set-quotient-equivalence-class-set-quotient R Y y∈Y)) +``` + +### Any element in the quotient class of another is similar to it + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) + where + + sim-is-in-equivalence-class-set-quotient : + (x y : A) → + is-in-equivalence-class-set-quotient + ( R) + ( quotient-map R x) + ( y) → + sim-equivalence-relation R x y + sim-is-in-equivalence-class-set-quotient x y y∈X = + apply-effectiveness-quotient-map + ( R) + ( inv + ( eq-set-quotient-equivalence-class-set-quotient + ( R) + ( quotient-map R x) + ( y∈X))) +``` + ### Σ-decompositions of types induced by set quotients ```agda diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index c48a4bb7ef..fc9a78b0e8 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -200,6 +200,17 @@ module _ ( y) ( x≍y δ)))) + preserves-neighborhood-sim-Pseudometric-Space' : + { x y : type-Pseudometric-Space A} → + ( sim-Pseudometric-Space A x y) → + ( d : ℚ⁺) (z : type-Pseudometric-Space A) → + neighborhood-Pseudometric-Space A d z x → + neighborhood-Pseudometric-Space A d z y + preserves-neighborhood-sim-Pseudometric-Space' {x} {y} x≍y d z Nzx = + symmetric-neighborhood-Pseudometric-Space A d y z + ( preserves-neighborhood-sim-Pseudometric-Space x≍y d z + ( symmetric-neighborhood-Pseudometric-Space A d z x Nzx)) + iff-same-neighbors-sim-Pseudometric-Space : { x y : type-Pseudometric-Space A} → ( sim-Pseudometric-Space A x y) ↔ From bf41c162d9b9a6772d7981ce08d8b67fe4457d50 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 19:03:33 +0200 Subject: [PATCH 135/151] induced metric spaces of pseudometric spaces Co-authored-by: Louis Wasserman --- src/metric-spaces.lagda.md | 1 + ...tric-space-of-pseudometric-spaces.lagda.md | 483 ++++++++++++++++++ 2 files changed, 484 insertions(+) create mode 100644 src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index ca86a5ddf1..f4fc998dad 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -67,6 +67,7 @@ open import metric-spaces.functions-pseudometric-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 open import metric-spaces.indexed-sums-metric-spaces public +open import metric-spaces.induced-metric-space-of-pseudometric-spaces public open import metric-spaces.isometries-metric-spaces public open import metric-spaces.isometries-pseudometric-spaces public open import metric-spaces.limits-of-cauchy-approximations-metric-spaces public diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..e0a6eef4bf --- /dev/null +++ b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md @@ -0,0 +1,483 @@ +# The induced metric space of a pseudometric space + +```agda +{-# OPTIONS --lossy-unification #-} + +module metric-spaces.induced-metric-space-of-pseudometric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-relations +open import foundation.contractible-maps +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalence-classes +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.fibers-of-maps +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.retractions +open import foundation.sections +open import foundation.set-quotients +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import metric-spaces.equality-of-metric-spaces +open import metric-spaces.extensionality-pseudometric-spaces +open import metric-spaces.isometries-metric-spaces +open import metric-spaces.isometries-pseudometric-spaces +open import metric-spaces.metric-spaces +open import metric-spaces.pseudometric-spaces +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.similarity-of-elements-pseudometric-spaces +``` + +
+ +## Idea + +The +{{#concept "induced metric space" Disambiguation="of a pseudometric space" Agda=induced-metric-space-Pseudometric-Space}} +of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is the +[metric space](metric-spaces.metric-spaces.lagda.md) whose points are +[quotient classes](foundation.set-quotients.md) of `M` by the +[similarity relation](metric-spaces.similarity-of-elements-pseudometric-spaces.md). +and [neighborhoods](metric-spaces.rational-neighborhood-relations.md) given by +neighborhoods of inhabitants of the quotient classes: two quotient classes `X`, +`Y` are in a `d`-neighborhood if for all `x ∈ X` and `y ∈ Y`, `x` and `y` are +`d`-neighbors in the pseudometric space. + +Any metric space is +[isometrically equivalent](metric-spaces.equality-of-metric-spaces.md) to its +induced metric space. + +## Definition + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + set-induced-metric-space-Pseudometric-Space : Set (l1 ⊔ l2) + set-induced-metric-space-Pseudometric-Space = + quotient-Set (equivalence-relation-sim-Pseudometric-Space M) + + type-induced-metric-space-Pseudometric-Space : UU (l1 ⊔ l2) + type-induced-metric-space-Pseudometric-Space = + type-Set set-induced-metric-space-Pseudometric-Space + + type-subtype-induced-metric-space-Pseudometric-Space : + (X : type-induced-metric-space-Pseudometric-Space) → UU (l1 ⊔ l2) + type-subtype-induced-metric-space-Pseudometric-Space X = + type-subtype + ( subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X)) + + neighborhood-prop-induced-metric-space-Pseudometric-Space : + Rational-Neighborhood-Relation + ( l1 ⊔ l2) + ( type-induced-metric-space-Pseudometric-Space) + neighborhood-prop-induced-metric-space-Pseudometric-Space ε X Y = + Π-Prop + ( type-subtype-induced-metric-space-Pseudometric-Space X) + ( λ (x , x∈X) → + Π-Prop + ( type-subtype-induced-metric-space-Pseudometric-Space Y) + ( λ (y , y∈Y) → neighborhood-prop-Pseudometric-Space M ε x y)) + + neighborhood-induced-metric-space-Pseudometric-Space : + ℚ⁺ → Relation (l1 ⊔ l2) type-induced-metric-space-Pseudometric-Space + neighborhood-induced-metric-space-Pseudometric-Space ε X Y = + type-Prop (neighborhood-prop-induced-metric-space-Pseudometric-Space ε X Y) +``` + +## Properties + +### The induced neighborhood relation is reflexive + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space : + (d : ℚ⁺) (X : type-induced-metric-space-Pseudometric-Space M) → + neighborhood-induced-metric-space-Pseudometric-Space M d X X + is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space + d X (x , x∈X) (y , y∈X) = + apply-effectiveness-quotient-map + ( equivalence-relation-sim-Pseudometric-Space M) + ( ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + ( x∈X)) ∙ + ( inv + ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + ( y∈X)))) + ( d) +``` + +### The induced neighborhood relation is symmetric + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space : + (d : ℚ⁺) (x y : type-induced-metric-space-Pseudometric-Space M) → + neighborhood-induced-metric-space-Pseudometric-Space M d x y → + neighborhood-induced-metric-space-Pseudometric-Space M d y x + is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space + d X Y d⟨X,Y⟩ (y , y∈Y) (x , x∈X) = + symmetric-neighborhood-Pseudometric-Space + ( M) + ( d) + ( x) + ( y) + ( d⟨X,Y⟩ (x , x∈X) (y , y∈Y)) +``` + +### The induced neighborhood relation is triangular + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + (X Y Z : type-induced-metric-space-Pseudometric-Space M) + (d₁ d₂ : ℚ⁺) + where + + abstract + is-triangular-neighborhood-induced-metric-space-Pseudometric-Space : + neighborhood-induced-metric-space-Pseudometric-Space M d₂ Y Z → + neighborhood-induced-metric-space-Pseudometric-Space M d₁ X Y → + neighborhood-induced-metric-space-Pseudometric-Space M (d₁ +ℚ⁺ d₂) X Z + is-triangular-neighborhood-induced-metric-space-Pseudometric-Space + d₂⟨Y,Z⟩ d₁⟨X,Y⟩ (x , x∈X) (z , z∈Z) = + let + open + do-syntax-trunc-Prop + ( neighborhood-prop-Pseudometric-Space M (d₁ +ℚ⁺ d₂) x z) + in do + (y , y∈Y) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( Y) + triangular-neighborhood-Pseudometric-Space + ( M) + ( x) + ( y) + ( z) + ( d₁) + ( d₂) + ( d₂⟨Y,Z⟩ (y , y∈Y) (z , z∈Z)) + ( d₁⟨X,Y⟩ (x , x∈X) (y , y∈Y)) +``` + +### The induced neighborhood relation is saturated + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-saturated-neighborhood-induced-metric-space-Pseudometric-Space : + (ε : ℚ⁺) (X Y : type-induced-metric-space-Pseudometric-Space M) → + ((δ : ℚ⁺) → + neighborhood-induced-metric-space-Pseudometric-Space M (ε +ℚ⁺ δ) X Y) → + neighborhood-induced-metric-space-Pseudometric-Space M ε X Y + is-saturated-neighborhood-induced-metric-space-Pseudometric-Space + ε X Y H (x , x∈X) (y , y∈Y) = + saturated-neighborhood-Pseudometric-Space M ε x y + ( λ δ → H δ (x , x∈X) (y , y∈Y)) +``` + +### The induced pseudometric space + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + pseudometric-induced-metric-space-Pseudometric-Space : + Pseudometric-Space (l1 ⊔ l2) (l1 ⊔ l2) + pseudometric-induced-metric-space-Pseudometric-Space = + ( type-induced-metric-space-Pseudometric-Space M , + neighborhood-prop-induced-metric-space-Pseudometric-Space M , + is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space M , + is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space M , + is-triangular-neighborhood-induced-metric-space-Pseudometric-Space M , + is-saturated-neighborhood-induced-metric-space-Pseudometric-Space M) +``` + +### The induced pseudometric is tight and extensional + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-tight-pseudometric-induced-metric-space-Pseudometric-Space : + is-tight-Pseudometric-Space + (pseudometric-induced-metric-space-Pseudometric-Space M) + is-tight-pseudometric-induced-metric-space-Pseudometric-Space X Y X~Y = + let + open + do-syntax-trunc-Prop + ( Id-Prop + ( set-induced-metric-space-Pseudometric-Space M) + ( X) + ( Y)) + in do + ( x , x∈X) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + + ( y , y∈Y) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( Y) + + eq-set-quotient-sim-element-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + ( Y) + ( x∈X) + ( y∈Y) + ( λ d → X~Y d (x , x∈X) (y , y∈Y)) + + is-extensional-pseudometric-induced-metric-space-Pseudometric-Space : + is-extensional-Pseudometric-Space + ( pseudometric-induced-metric-space-Pseudometric-Space M) + is-extensional-pseudometric-induced-metric-space-Pseudometric-Space = + is-extensional-is-tight-Pseudometric-Space + ( pseudometric-induced-metric-space-Pseudometric-Space M) + ( is-tight-pseudometric-induced-metric-space-Pseudometric-Space) +``` + +### The induced metric space + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + induced-metric-space-Pseudometric-Space : + Metric-Space (l1 ⊔ l2) (l1 ⊔ l2) + induced-metric-space-Pseudometric-Space = + make-Metric-Space + ( type-induced-metric-space-Pseudometric-Space M) + ( neighborhood-prop-induced-metric-space-Pseudometric-Space M) + ( is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space M) + ( is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space M) + ( is-triangular-neighborhood-induced-metric-space-Pseudometric-Space M) + ( is-saturated-neighborhood-induced-metric-space-Pseudometric-Space M) + ( is-extensional-pseudometric-induced-metric-space-Pseudometric-Space M) +``` + +### Mapping from the pseudometric space to the induced metric space + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + map-induced-metric-space-Pseudometric-Space : + type-Pseudometric-Space M → type-induced-metric-space-Pseudometric-Space M + map-induced-metric-space-Pseudometric-Space = + quotient-map (equivalence-relation-sim-Pseudometric-Space M) + + map-subtype-induced-metric-space-Pseudometric-Space : + (x : type-Pseudometric-Space M) → + type-subtype-induced-metric-space-Pseudometric-Space M + ( map-induced-metric-space-Pseudometric-Space x) + map-subtype-induced-metric-space-Pseudometric-Space = + inhabitant-equivalence-class-quotient-map-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) +``` + +### The mapping from the pseudometric space to the induced metric space is an isometry + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + preserves-neighborhood-map-induced-metric-space-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space M) → + neighborhood-Pseudometric-Space M d x y → + neighborhood-induced-metric-space-Pseudometric-Space + ( M) + ( d) + ( map-induced-metric-space-Pseudometric-Space M x) + ( map-induced-metric-space-Pseudometric-Space M y) + preserves-neighborhood-map-induced-metric-space-Pseudometric-Space + d x y d⟨x,y⟩ (x' , x≈x') (y' , y≈y') = + let + x~x' = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( x) + ( x') + ( x≈x') + + y~y' = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( y) + ( y') + ( y≈y') + + in + preserves-neighborhood-sim-Pseudometric-Space' M y~y' d x' + ( preserves-neighborhood-sim-Pseudometric-Space M x~x' d y d⟨x,y⟩) + + reflects-neighborhood-map-induced-metric-space-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space M) → + neighborhood-induced-metric-space-Pseudometric-Space + ( M) + ( d) + ( map-induced-metric-space-Pseudometric-Space M x) + ( map-induced-metric-space-Pseudometric-Space M y) → + neighborhood-Pseudometric-Space M d x y + reflects-neighborhood-map-induced-metric-space-Pseudometric-Space + d x y Nxy = + Nxy + ( map-subtype-induced-metric-space-Pseudometric-Space M x) + ( map-subtype-induced-metric-space-Pseudometric-Space M y) + + is-isometry-map-induced-metric-space-Pseudometric-Space : + is-isometry-Pseudometric-Space + ( M) + ( pseudometric-induced-metric-space-Pseudometric-Space M) + ( map-induced-metric-space-Pseudometric-Space M) + is-isometry-map-induced-metric-space-Pseudometric-Space d x y = + ( preserves-neighborhood-map-induced-metric-space-Pseudometric-Space d x y , + reflects-neighborhood-map-induced-metric-space-Pseudometric-Space d x y) +``` + +### The isometry from a pseudometric space to its induced metric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + isometry-map-induced-metric-space-Pseudometric-Space : + isometry-Pseudometric-Space + ( M) + ( pseudometric-induced-metric-space-Pseudometric-Space M) + isometry-map-induced-metric-space-Pseudometric-Space = + ( map-induced-metric-space-Pseudometric-Space M , + is-isometry-map-induced-metric-space-Pseudometric-Space M) +``` + +### The isometric equivalence between a metric space and the induced metric space of its pseudometric + +```agda +module _ + {l1 l2 : Level} + (M : Metric-Space l1 l2) + where + + map-induced-metric-space-Metric-Space : + type-Metric-Space M → + type-induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space M) + map-induced-metric-space-Metric-Space = + map-induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space M) + + abstract + is-contr-map-induced-metric-space-Metric-Space : + is-contr-map map-induced-metric-space-Metric-Space + is-contr-map-induced-metric-space-Metric-Space X = + let + open + do-syntax-trunc-Prop + ( is-contr-Prop + ( fiber map-induced-metric-space-Metric-Space X)) + in do + ( x , x∈X) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Metric-Space M) + ( X) + + ( ( x , + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Metric-Space M) + ( X) + ( x∈X)) , + ( λ (y , Y=X) → + eq-type-subtype + ( λ z → + Id-Prop + ( set-induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space M)) + ( map-induced-metric-space-Metric-Space z) + ( X)) + ( eq-sim-Metric-Space + ( M) + ( x) + ( y) + ( apply-effectiveness-quotient-map + ( equivalence-relation-sim-Metric-Space M) + ( ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Metric-Space M) + ( X) + ( x∈X)) ∙ + ( inv Y=X)))))) + + is-equiv-map-induced-metric-space-Metric-Space : + is-equiv map-induced-metric-space-Metric-Space + is-equiv-map-induced-metric-space-Metric-Space = + is-equiv-is-contr-map + ( is-contr-map-induced-metric-space-Metric-Space) + + is-isometry-map-induced-metric-space-Metric-Space : + is-isometry-Metric-Space + ( M) + ( induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space M)) + ( map-induced-metric-space-Metric-Space) + is-isometry-map-induced-metric-space-Metric-Space = + is-isometry-map-induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space M) + + isometric-equiv-induced-metric-space-Metric-Space' : + isometric-equiv-Metric-Space' + ( M) + ( induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space M)) + isometric-equiv-induced-metric-space-Metric-Space' = + ( map-induced-metric-space-Metric-Space , + is-equiv-map-induced-metric-space-Metric-Space , + is-isometry-map-induced-metric-space-Metric-Space) +``` From babf467621b6e8ec192a6cea0a2bf2e1bbba186f Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 19:13:43 +0200 Subject: [PATCH 136/151] typo --- .../induced-metric-space-of-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md index e0a6eef4bf..6b38695b9c 100644 --- a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md @@ -49,7 +49,7 @@ The of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is the [metric space](metric-spaces.metric-spaces.lagda.md) whose points are [quotient classes](foundation.set-quotients.md) of `M` by the -[similarity relation](metric-spaces.similarity-of-elements-pseudometric-spaces.md). +[similarity relation](metric-spaces.similarity-of-elements-pseudometric-spaces.md) and [neighborhoods](metric-spaces.rational-neighborhood-relations.md) given by neighborhoods of inhabitants of the quotient classes: two quotient classes `X`, `Y` are in a `d`-neighborhood if for all `x ∈ X` and `y ∈ Y`, `x` and `y` are From 47176dbc180978c0dbcfb1942978def6bc0f833d Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 19:34:41 +0200 Subject: [PATCH 137/151] fix link --- .../induced-metric-space-of-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md index 6b38695b9c..a3fd79c281 100644 --- a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md @@ -47,7 +47,7 @@ open import metric-spaces.similarity-of-elements-pseudometric-spaces The {{#concept "induced metric space" Disambiguation="of a pseudometric space" Agda=induced-metric-space-Pseudometric-Space}} of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is the -[metric space](metric-spaces.metric-spaces.lagda.md) whose points are +[metric space](metric-spaces.metric-spaces.md) whose points are [quotient classes](foundation.set-quotients.md) of `M` by the [similarity relation](metric-spaces.similarity-of-elements-pseudometric-spaces.md) and [neighborhoods](metric-spaces.rational-neighborhood-relations.md) given by From 58d0ef687f7c26e4d2b5131fb33f9750428c7507 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 20:47:00 +0200 Subject: [PATCH 138/151] Update src/metric-spaces/equality-of-pseudometric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/equality-of-pseudometric-spaces.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index 9f86e2a310..0173a34c5c 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -186,8 +186,8 @@ module _ abstract is-torsorial-isometric-equiv-Pseudometric-Space : is-torsorial - ( λ ( B : Pseudometric-Space l1 l2) → - ( isometric-equiv-Pseudometric-Space A B)) + ( λ (B : Pseudometric-Space l1 l2) → + isometric-equiv-Pseudometric-Space A B) is-torsorial-isometric-equiv-Pseudometric-Space = is-contr-equiv' ( Σ (Pseudometric-Space l1 l2) (Id A)) From 50d3c1d94d0f93eedf8383fd91d2b594e4bd9360 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 20:47:17 +0200 Subject: [PATCH 139/151] Update src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- ...limits-of-cauchy-approximations-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md index cc1e921b26..39065cd977 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md @@ -30,7 +30,7 @@ A [Cauchy approximation](metric-spaces.cauchy-approximations-pseudometric-spaces.md) `f : ℚ⁺ → A` in a [pseudometric space](metric-spaces.pseudometric-spaces.md) `A` has a -{{#concept "limit" Disambiguation="of a Cauchy approximation in a pseudometric space Agda=is-limit-cauchy-approximation-Pseudometric-Space}} +{{#concept "limit" Disambiguation="of a Cauchy approximation in a pseudometric space" Agda=is-limit-cauchy-approximation-Pseudometric-Space}} `x : A` if `f ε` is near `x` for small `ε : ℚ⁺`; more precisely, if `f ε` is in a `ε + δ`-[neighborhood](metric-spaces.rational-neighborhood-relations.md) of `x` for all `ε δ : ℚ⁺`. From 4718717601944a3fb201bc122bc3331f5b1dc6c4 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 20:47:30 +0200 Subject: [PATCH 140/151] Update src/metric-spaces/metric-space-of-rational-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/metric-space-of-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index a03627dff6..43ec2a4d79 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -61,7 +61,7 @@ open import metric-spaces.triangular-rational-neighborhood-relations [rational numbers](elementary-number-theory.rational-numbers.md) induces a [rational neighborhood relation](metric-spaces.rational-neighborhood-relations.md) on `ℚ` where `x y : ℚ` are in a `d`-neighborhood when `y ≤ x + d` and -`x ≤ y + d`, i.e. if the +`x ≤ y + d`, i.e., if the [distance](elementary-number-theory.distance-rational-numbers.md) between `x` and `y` is less than or equal to `d`. This is a [metric structure](metric-spaces.metric-spaces.md) on `ℚ` that defines the From 763aae0020c88f27b5a691b96a8091c87de5397d Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 20:48:07 +0200 Subject: [PATCH 141/151] Update src/metric-spaces/equality-of-pseudometric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- src/metric-spaces/equality-of-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index 0173a34c5c..7002c27db0 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -157,7 +157,7 @@ module _ ( equiv-univalence) ( λ (e : type-Pseudometric-Space A = type-Pseudometric-Space B) → equiv-eq - (ap (is-isometry-Pseudometric-Space A B) (eq-htpy (λ x → refl)))) + (ap (is-isometry-Pseudometric-Space A B) (eq-htpy refl-htpy))) ``` ### Isometric equivalences of pseudometric spaces characterize their equality From e571e32d8beeba90a84df27a4d9e14909919d718 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 21:19:49 +0200 Subject: [PATCH 142/151] fix links and typecheck --- .../equality-of-pseudometric-spaces.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index 7002c27db0..d987aa8da4 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -16,6 +16,7 @@ open import foundation.equivalences open import foundation.function-extensionality open import foundation.function-types open import foundation.functoriality-dependent-pair-types +open import foundation.homotopies open import foundation.identity-types open import foundation.propositions open import foundation.subtypes @@ -38,17 +39,16 @@ open import metric-spaces.pseudometric-spaces [pseudometric spaces](metric-spaces.pseudometric-spaces.md) is characterized by the following equivalent concepts: -- an [equality](foundation-core.identity-types.md) between their carrier types +- an equality between their carrier types such that the induced map under [`map-eq`](foundation-core.univalence.md) is an [isometry](metric-spaces.isometries-pseudometric-spaces.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-pseudometric-spaces.md); + is an isometry; - a function between their carrier types that is both an - [equivalence](foundation-core.equivalences.md) and an - [isometry](metric-spaces.isometries-pseudometric-spaces.md). + equivalence and an isometry. ## Definitions From dd7fc86a4c42ca69a4241fea201e8e5bca34f057 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 21:26:10 +0200 Subject: [PATCH 143/151] format pre-commit --- .../equality-of-pseudometric-spaces.lagda.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index d987aa8da4..536869c790 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -39,16 +39,16 @@ open import metric-spaces.pseudometric-spaces [pseudometric spaces](metric-spaces.pseudometric-spaces.md) is characterized by the following equivalent concepts: -- an equality between their carrier types - such that the induced map under [`map-eq`](foundation-core.univalence.md) is - an [isometry](metric-spaces.isometries-pseudometric-spaces.md); +- an equality between their carrier types such that the induced map under + [`map-eq`](foundation-core.univalence.md) is an + [isometry](metric-spaces.isometries-pseudometric-spaces.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; -- a function between their carrier types that is both an - equivalence and an isometry. +- a function between their carrier types that is both an equivalence and an + isometry. ## Definitions From 665b46623c523e50482bd0ad853507c5782f3769 Mon Sep 17 00:00:00 2001 From: malarbol Date: Sun, 17 Aug 2025 21:15:15 +0200 Subject: [PATCH 144/151] cauchy approx induced metric spaces --- ...tric-space-of-pseudometric-spaces.lagda.md | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md index a3fd79c281..297d0a7bf7 100644 --- a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md @@ -19,6 +19,7 @@ open import foundation.equivalence-classes open import foundation.equivalences open import foundation.existential-quantification open import foundation.fibers-of-maps +open import foundation.function-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositional-truncations @@ -30,13 +31,19 @@ open import foundation.sets open import foundation.subtypes open import foundation.universe-levels +open import metric-spaces.cauchy-approximations-metric-spaces +open import metric-spaces.cauchy-approximations-pseudometric-spaces +open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.equality-of-metric-spaces open import metric-spaces.extensionality-pseudometric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.isometries-pseudometric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.short-functions-pseudometric-spaces open import metric-spaces.similarity-of-elements-pseudometric-spaces ``` @@ -481,3 +488,83 @@ module _ is-equiv-map-induced-metric-space-Metric-Space , is-isometry-map-induced-metric-space-Metric-Space) ``` + +### The pointwise quotient of a Cauchy approximation in a pseudometric space is a Cauchy approximation in the induced metric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + map-induced-metric-space-cauchy-approximation-Pseudometric-Space : + cauchy-approximation-Pseudometric-Space M → + cauchy-approximation-Metric-Space + ( induced-metric-space-Pseudometric-Space M) + map-induced-metric-space-cauchy-approximation-Pseudometric-Space = + map-short-function-cauchy-approximation-Pseudometric-Space + ( M) + ( pseudometric-induced-metric-space-Pseudometric-Space M) + ( short-isometry-Pseudometric-Space + ( M) + ( pseudometric-induced-metric-space-Pseudometric-Space M) + ( isometry-map-induced-metric-space-Pseudometric-Space M)) +``` + +### The pointwise quotient of Cauchy approximations in the induced metric space preserves limits + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + (u : cauchy-approximation-Pseudometric-Space M) + (lim : type-Pseudometric-Space M) + (is-lim : + is-limit-cauchy-approximation-Pseudometric-Space M u lim) + where + + preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space : + is-limit-cauchy-approximation-Metric-Space + ( induced-metric-space-Pseudometric-Space M) + ( map-induced-metric-space-cauchy-approximation-Pseudometric-Space M u) + ( map-induced-metric-space-Pseudometric-Space M lim) + preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space + ε δ (x , x∈uε) (y , y∈lim) = + let + lim~y : sim-Pseudometric-Space M lim y + lim~y = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( lim) + ( y) + ( y∈lim) + + uε~x : + sim-Pseudometric-Space M + ( map-cauchy-approximation-Pseudometric-Space M u ε) + ( x) + uε~x = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( map-cauchy-approximation-Pseudometric-Space M u ε) + ( x) + ( x∈uε) + in + preserves-neighborhood-sim-Pseudometric-Space' + ( M) + ( lim~y) + ( ε +ℚ⁺ δ) + ( x) + ( preserves-neighborhood-sim-Pseudometric-Space + ( M) + ( uε~x) + ( ε +ℚ⁺ δ) + ( lim) + ( is-lim ε δ)) + + convergent-map-induced-metric-space-cauchy-approximation-Pseudometric-Space : + convergent-cauchy-approximation-Metric-Space + ( induced-metric-space-Pseudometric-Space M) + convergent-map-induced-metric-space-cauchy-approximation-Pseudometric-Space = + ( map-induced-metric-space-cauchy-approximation-Pseudometric-Space M u , + map-induced-metric-space-Pseudometric-Space M lim , + preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space) +``` From c3855a893ad87cde948b3f3fdeb73d3ec8a5d9dd Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 18 Aug 2025 15:09:37 +0200 Subject: [PATCH 145/151] remove duplicates links in Idea sections --- .../cauchy-approximations-metric-spaces.lagda.md | 5 ++--- ...chy-approximations-pseudometric-spaces.lagda.md | 5 ++--- .../equality-of-metric-spaces.lagda.md | 14 ++++++-------- .../equality-of-pseudometric-spaces.lagda.md | 3 +-- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 17094b234f..7978b4ae73 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -34,9 +34,8 @@ in a [metric space](metric-spaces.metric-spaces.md) `A` is a [Cauchy approximation](metric-spaces.cauchy-approximations-pseudometric-spaces.md) in its underlying [pseudometric space](metric-spaces.pseudometric-spaces.md): a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to -the carrier type of `A` such that for all -[positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` -and `δ`, `f ε` and `f δ` are in a +the carrier type of `A` such that for all positive rationals `ε` and `δ`, `f ε` +and `f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhood-relations.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 943601ffa1..17ab1e237c 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -30,9 +30,8 @@ A {{#concept "Cauchy approximation" Disambiguation="in a pseudometric space" Agda=is-cauchy-approximation-Pseudometric-Space}} in a [pseudometric space](metric-spaces.pseudometric-spaces.md) `A` is a map `f` from [`ℚ⁺`](elementary-number-theory.positive-rational-numbers.md) to the -carrier type of `A` such that for all -[positive rationals](elementary-number-theory.positive-rational-numbers.md) `ε` -and `δ`, `f ε` and `f δ` are in a +carrier type of `A` such that for all positive rationals `ε` and `δ`, `f ε` and +`f δ` are in a (`ε + δ`)-[neighborhood](metric-spaces.rational-neighborhood-relations.md), i.e., the distance between `f ε` and `f δ` is bounded by `ε + δ`. diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 3461753652..d66c56acff 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -42,17 +42,15 @@ open import metric-spaces.rational-neighborhood-relations [metric spaces](metric-spaces.metric-spaces.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.md); +- an equality between their carrier types such that the induced map under + [`map-eq`](foundation-core.univalence.md) is an + [isometry](metric-spaces.isometries-metric-spaces.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.md); + such that the induced map under `map-equiv` is an isometry; -- a function between their carrier types that is both an - [equivalence](foundation-core.equivalences.md) and an - [isometry](metric-spaces.isometries-metric-spaces.md). +- a function between their carrier types that is both an equivalence and an + isometry. ## Definitions diff --git a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md index 536869c790..e92824c132 100644 --- a/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-pseudometric-spaces.lagda.md @@ -44,8 +44,7 @@ the following equivalent concepts: [isometry](metric-spaces.isometries-pseudometric-spaces.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; + such that the induced map under `map-equiv` is an isometry; - a function between their carrier types that is both an equivalence and an isometry. From 74ee9b46362123cf99fa5b0f3ee4a2c45677ad55 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 18 Aug 2025 16:31:40 +0200 Subject: [PATCH 146/151] idempotent induced metric space --- ...tric-space-of-pseudometric-spaces.lagda.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md index 297d0a7bf7..fe0d880d59 100644 --- a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md @@ -489,6 +489,29 @@ module _ is-isometry-map-induced-metric-space-Metric-Space) ``` +### The construction of the induced metric space of a pseudometric space is idempotent + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + is-idempotent-induced-metric-space-Pseudometric-Space : + induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space + ( induced-metric-space-Pseudometric-Space M)) = + induced-metric-space-Pseudometric-Space M + is-idempotent-induced-metric-space-Pseudometric-Space = + inv + ( eq-isometric-equiv-Metric-Space' + ( induced-metric-space-Pseudometric-Space M) + ( induced-metric-space-Pseudometric-Space + ( pseudometric-Metric-Space + ( induced-metric-space-Pseudometric-Space M))) + ( isometric-equiv-induced-metric-space-Metric-Space' + ( induced-metric-space-Pseudometric-Space M))) +``` + ### The pointwise quotient of a Cauchy approximation in a pseudometric space is a Cauchy approximation in the induced metric space ```agda From 0c6820f48a17a938a437680143e04d2a92160891 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 18 Aug 2025 16:52:37 +0200 Subject: [PATCH 147/151] typo --- src/metric-spaces/equality-of-metric-spaces.lagda.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index 2ac9f4d4c8..c2c1ad028b 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -132,7 +132,6 @@ module _ module _ {l1 l2 : Level} (A : Metric-Space l1 l2) - where abstract From 3f1caf4d2a2fa3483b05a39ca588fb6730c23a51 Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 18 Aug 2025 16:55:13 +0200 Subject: [PATCH 148/151] fix merge --- .../equality-of-metric-spaces.lagda.md | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/src/metric-spaces/equality-of-metric-spaces.lagda.md b/src/metric-spaces/equality-of-metric-spaces.lagda.md index c2c1ad028b..f589d893af 100644 --- a/src/metric-spaces/equality-of-metric-spaces.lagda.md +++ b/src/metric-spaces/equality-of-metric-spaces.lagda.md @@ -201,25 +201,6 @@ module _ ( 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 : Metric-Space l1 l2) - where - - abstract - is-torsorial-isometric-equiv-Metric-Space : - is-torsorial - (λ (B : Metric-Space l1 l2) → isometric-equiv-Metric-Space A B) - is-torsorial-isometric-equiv-Metric-Space = - is-contr-equiv' - ( Σ (Metric-Space l1 l2) (Id A)) - ( equiv-tot (equiv-eq-isometric-equiv-Metric-Space A)) - ( is-torsorial-Id A) -``` - ### Composition of isometric equivalences ```agda @@ -245,6 +226,7 @@ module _ ```agda module _ + {l1 l2 : Level} (A B : Metric-Space l1 l2) where From 944342e08fbd7db68f111ddd779959706f19467d Mon Sep 17 00:00:00 2001 From: malarbol Date: Mon, 18 Aug 2025 23:04:53 +0200 Subject: [PATCH 149/151] WIP short functions induced metric spaces --- ...tric-space-of-pseudometric-spaces.lagda.md | 240 ++++++++++++++++++ ...y-of-elements-pseudometric-spaces.lagda.md | 21 ++ 2 files changed, 261 insertions(+) diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md index fe0d880d59..1e256c4997 100644 --- a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md @@ -11,7 +11,9 @@ module metric-spaces.induced-metric-space-of-pseudometric-spaces where ```agda open import elementary-number-theory.positive-rational-numbers +open import foundation.action-on-identifications-functions open import foundation.binary-relations +open import foundation.binary-transport open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types @@ -20,15 +22,19 @@ open import foundation.equivalences open import foundation.existential-quantification open import foundation.fibers-of-maps open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.homotopies open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions +open import foundation.reflecting-maps-equivalence-relations open import foundation.retractions open import foundation.sections open import foundation.set-quotients open import foundation.sets open import foundation.subtypes +open import foundation.universal-property-set-quotients open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces @@ -36,6 +42,7 @@ open import metric-spaces.cauchy-approximations-pseudometric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.equality-of-metric-spaces open import metric-spaces.extensionality-pseudometric-spaces +open import metric-spaces.functions-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.isometries-pseudometric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces @@ -43,6 +50,7 @@ open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces open import metric-spaces.metric-spaces open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.short-functions-metric-spaces open import metric-spaces.short-functions-pseudometric-spaces open import metric-spaces.similarity-of-elements-pseudometric-spaces ``` @@ -406,6 +414,24 @@ module _ is-isometry-map-induced-metric-space-Pseudometric-Space M) ``` +### The short map from a pseudometric space tp its induced metric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + short-map-induced-metric-space-Pseudometric-Space : + short-function-Pseudometric-Space + ( M) + ( pseudometric-induced-metric-space-Pseudometric-Space M) + short-map-induced-metric-space-Pseudometric-Space = + short-isometry-Pseudometric-Space + ( M) + ( pseudometric-induced-metric-space-Pseudometric-Space M) + ( isometry-map-induced-metric-space-Pseudometric-Space M) +``` + ### The isometric equivalence between a metric space and the induced metric space of its pseudometric ```agda @@ -591,3 +617,217 @@ module _ map-induced-metric-space-Pseudometric-Space M lim , preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space) ``` + +### Characterization of functions from the induced metric space into metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) + (B : Metric-Space l1' l2') + where + + precomp-map-induced-metric-space-Pseudometric-Space : + type-function-Metric-Space + ( induced-metric-space-Pseudometric-Space A) + ( B) → + reflecting-map-equivalence-relation + ( equivalence-relation-sim-Pseudometric-Space A) + ( type-Metric-Space B) + precomp-map-induced-metric-space-Pseudometric-Space = + precomp-Set-Quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-induced-metric-space-Pseudometric-Space A) + ( reflecting-map-quotient-map + ( equivalence-relation-sim-Pseudometric-Space A)) + ( set-Metric-Space B) + + is-equiv-precomp-map-induced-metric-space-Pseudometric-Space : + is-equiv precomp-map-induced-metric-space-Pseudometric-Space + is-equiv-precomp-map-induced-metric-space-Pseudometric-Space = + is-set-quotient-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-Metric-Space B) + + equiv-type-function-induced-metric-space-Pseudometric-Space : + type-function-Metric-Space + ( induced-metric-space-Pseudometric-Space A) + ( B) ≃ + reflecting-map-equivalence-relation + ( equivalence-relation-sim-Pseudometric-Space A) + ( type-Metric-Space B) + equiv-type-function-induced-metric-space-Pseudometric-Space = + ( precomp-map-induced-metric-space-Pseudometric-Space , + is-equiv-precomp-map-induced-metric-space-Pseudometric-Space) +``` + +### Short maps from a pseudometric space to a metric space reflects similarity + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) + (B : Metric-Space l1' l2') + (f : short-function-Pseudometric-Space A (pseudometric-Metric-Space B)) + where + + reflects-sim-map-short-function-metric-space-Pseudometric-Space : + {x y : type-Pseudometric-Space A} → + sim-Pseudometric-Space A x y → + map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f x = + map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f y + reflects-sim-map-short-function-metric-space-Pseudometric-Space {x} {y} x~y = + eq-sim-Metric-Space B + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( x)) + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( y)) + ( preserves-sim-map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( x) + ( y) + ( x~y)) + + reflecting-map-short-function-metric-space-Pseudometric-Space : + reflecting-map-equivalence-relation + ( equivalence-relation-sim-Pseudometric-Space A) + ( type-Metric-Space B) + reflecting-map-short-function-metric-space-Pseudometric-Space = + ( ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f)) , + ( reflects-sim-map-short-function-metric-space-Pseudometric-Space)) +``` + +### Induced short function from the induced metric space into a metric space + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) + (B : Metric-Space l1' l2') + (f : short-function-Pseudometric-Space A (pseudometric-Metric-Space B)) + where + + map-short-function-induced-metric-space-Pseudometric-space : + type-function-Metric-Space + ( induced-metric-space-Pseudometric-Space A) + ( B) + map-short-function-induced-metric-space-Pseudometric-space = + inv-precomp-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-Metric-Space B) + ( reflecting-map-short-function-metric-space-Pseudometric-Space A B f) + + htpy-map-short-function-induced-metric-space-Pseudometric-Space : + ( ( map-short-function-induced-metric-space-Pseudometric-space) ∘ + ( map-induced-metric-space-Pseudometric-Space A)) ~ + ( map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f) + htpy-map-short-function-induced-metric-space-Pseudometric-Space = + is-section-inv-precomp-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-Metric-Space B) + ( reflecting-map-short-function-metric-space-Pseudometric-Space A B f) + + abstract + is-short-map-short-function-induced-metric-space-Pseudometric-Space : + is-short-function-Metric-Space + ( induced-metric-space-Pseudometric-Space A) + ( B) + ( map-short-function-induced-metric-space-Pseudometric-space) + is-short-map-short-function-induced-metric-space-Pseudometric-Space + d X Y N⟨X,Y⟩ = + let + open + do-syntax-trunc-Prop + ( neighborhood-prop-Metric-Space + ( B) + ( d) + ( map-short-function-induced-metric-space-Pseudometric-space X) + ( map-short-function-induced-metric-space-Pseudometric-space Y)) + in do + ( x , x∈X) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( X) + ( y , y∈Y) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( Y) + let + lemma-eq-X : + map-induced-metric-space-Pseudometric-Space A x = X + lemma-eq-X = + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( X) + ( x∈X) + + lemma-eq-fX : + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( x)) = + ( map-short-function-induced-metric-space-Pseudometric-space X) + lemma-eq-fX = + ( inv + ( htpy-map-short-function-induced-metric-space-Pseudometric-Space + ( x))) ∙ + ( ap + ( map-short-function-induced-metric-space-Pseudometric-space) + ( lemma-eq-X)) + + lemma-eq-Y : + map-induced-metric-space-Pseudometric-Space A y = Y + lemma-eq-Y = + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( Y) + ( y∈Y) + + lemma-eq-fY : + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( y)) = + ( map-short-function-induced-metric-space-Pseudometric-space Y) + lemma-eq-fY = + ( inv + ( htpy-map-short-function-induced-metric-space-Pseudometric-Space + ( y))) ∙ + ( ap + ( map-short-function-induced-metric-space-Pseudometric-space) + ( lemma-eq-Y)) + + binary-tr + ( neighborhood-Metric-Space B d) + ( lemma-eq-fX) + ( lemma-eq-fY) + ( is-short-map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( d) + ( x) + ( y) + ( N⟨X,Y⟩ (x , x∈X) (y , y∈Y))) + + short-function-induced-metric-space-Pseudometric-Space : + short-function-Metric-Space + ( induced-metric-space-Pseudometric-Space A) + ( B) + short-function-induced-metric-space-Pseudometric-Space = + ( map-short-function-induced-metric-space-Pseudometric-space , + is-short-map-short-function-induced-metric-space-Pseudometric-Space) +``` diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index fc9a78b0e8..cc4d35de83 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -23,6 +23,7 @@ open import foundation.universe-levels open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.short-functions-pseudometric-spaces ``` @@ -269,3 +270,23 @@ module _ ( iff-same-neighbors-same-neighborhood-Pseudometric-Space) ∘iff ( iff-same-neighbors-sim-Pseudometric-Space A) ``` + +### Short maps between pseudometric spaces preserves similarity + +```agda +module _ + { l1 l2 l1' l2' : Level} + ( A : Pseudometric-Space l1 l2) + ( B : Pseudometric-Space l1' l2') + ( f : short-function-Pseudometric-Space A B) + where + + preserves-sim-map-short-function-Pseudometric-Space : + ( x y : type-Pseudometric-Space A) → + ( sim-Pseudometric-Space A x y) → + ( sim-Pseudometric-Space B + ( map-short-function-Pseudometric-Space A B f x) + ( map-short-function-Pseudometric-Space A B f y)) + preserves-sim-map-short-function-Pseudometric-Space x y x~y d = + is-short-map-short-function-Pseudometric-Space A B f d x y (x~y d) +``` From ef6539c75f8bd4823ab4f9d18f8c7f753be4d6df Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 19 Aug 2025 02:45:58 +0200 Subject: [PATCH 150/151] rename => metric-quotient --- src/metric-spaces.lagda.md | 2 +- ...tric-space-of-pseudometric-spaces.lagda.md | 833 ------------------ ...-quotients-of-pseudometric-spaces.lagda.md | 790 +++++++++++++++++ src/metric-spaces/metric-spaces.lagda.md | 49 ++ 4 files changed, 840 insertions(+), 834 deletions(-) delete mode 100644 src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md create mode 100644 src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index f4fc998dad..504d515b72 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -67,7 +67,6 @@ open import metric-spaces.functions-pseudometric-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 open import metric-spaces.indexed-sums-metric-spaces public -open import metric-spaces.induced-metric-space-of-pseudometric-spaces public open import metric-spaces.isometries-metric-spaces public open import metric-spaces.isometries-pseudometric-spaces public open import metric-spaces.limits-of-cauchy-approximations-metric-spaces public @@ -76,6 +75,7 @@ open import metric-spaces.limits-of-functions-metric-spaces public open import metric-spaces.limits-of-sequences-metric-spaces public open import metric-spaces.lipschitz-functions-metric-spaces public open import metric-spaces.locally-constant-functions-metric-spaces public +open import metric-spaces.metric-quotients-of-pseudometric-spaces public open import metric-spaces.metric-space-of-cauchy-approximations-complete-metric-spaces public open import metric-spaces.metric-space-of-cauchy-approximations-metric-spaces public open import metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spaces public diff --git a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md b/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md deleted file mode 100644 index 1e256c4997..0000000000 --- a/src/metric-spaces/induced-metric-space-of-pseudometric-spaces.lagda.md +++ /dev/null @@ -1,833 +0,0 @@ -# The induced metric space of a pseudometric space - -```agda -{-# OPTIONS --lossy-unification #-} - -module metric-spaces.induced-metric-space-of-pseudometric-spaces where -``` - -
Imports - -```agda -open import elementary-number-theory.positive-rational-numbers - -open import foundation.action-on-identifications-functions -open import foundation.binary-relations -open import foundation.binary-transport -open import foundation.contractible-maps -open import foundation.contractible-types -open import foundation.dependent-pair-types -open import foundation.equivalence-classes -open import foundation.equivalences -open import foundation.existential-quantification -open import foundation.fibers-of-maps -open import foundation.function-types -open import foundation.functoriality-dependent-pair-types -open import foundation.homotopies -open import foundation.identity-types -open import foundation.logical-equivalences -open import foundation.propositional-truncations -open import foundation.propositions -open import foundation.reflecting-maps-equivalence-relations -open import foundation.retractions -open import foundation.sections -open import foundation.set-quotients -open import foundation.sets -open import foundation.subtypes -open import foundation.universal-property-set-quotients -open import foundation.universe-levels - -open import metric-spaces.cauchy-approximations-metric-spaces -open import metric-spaces.cauchy-approximations-pseudometric-spaces -open import metric-spaces.convergent-cauchy-approximations-metric-spaces -open import metric-spaces.equality-of-metric-spaces -open import metric-spaces.extensionality-pseudometric-spaces -open import metric-spaces.functions-metric-spaces -open import metric-spaces.isometries-metric-spaces -open import metric-spaces.isometries-pseudometric-spaces -open import metric-spaces.limits-of-cauchy-approximations-metric-spaces -open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces -open import metric-spaces.metric-spaces -open import metric-spaces.pseudometric-spaces -open import metric-spaces.rational-neighborhood-relations -open import metric-spaces.short-functions-metric-spaces -open import metric-spaces.short-functions-pseudometric-spaces -open import metric-spaces.similarity-of-elements-pseudometric-spaces -``` - -
- -## Idea - -The -{{#concept "induced metric space" Disambiguation="of a pseudometric space" Agda=induced-metric-space-Pseudometric-Space}} -of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is the -[metric space](metric-spaces.metric-spaces.md) whose points are -[quotient classes](foundation.set-quotients.md) of `M` by the -[similarity relation](metric-spaces.similarity-of-elements-pseudometric-spaces.md) -and [neighborhoods](metric-spaces.rational-neighborhood-relations.md) given by -neighborhoods of inhabitants of the quotient classes: two quotient classes `X`, -`Y` are in a `d`-neighborhood if for all `x ∈ X` and `y ∈ Y`, `x` and `y` are -`d`-neighbors in the pseudometric space. - -Any metric space is -[isometrically equivalent](metric-spaces.equality-of-metric-spaces.md) to its -induced metric space. - -## Definition - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - set-induced-metric-space-Pseudometric-Space : Set (l1 ⊔ l2) - set-induced-metric-space-Pseudometric-Space = - quotient-Set (equivalence-relation-sim-Pseudometric-Space M) - - type-induced-metric-space-Pseudometric-Space : UU (l1 ⊔ l2) - type-induced-metric-space-Pseudometric-Space = - type-Set set-induced-metric-space-Pseudometric-Space - - type-subtype-induced-metric-space-Pseudometric-Space : - (X : type-induced-metric-space-Pseudometric-Space) → UU (l1 ⊔ l2) - type-subtype-induced-metric-space-Pseudometric-Space X = - type-subtype - ( subtype-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( X)) - - neighborhood-prop-induced-metric-space-Pseudometric-Space : - Rational-Neighborhood-Relation - ( l1 ⊔ l2) - ( type-induced-metric-space-Pseudometric-Space) - neighborhood-prop-induced-metric-space-Pseudometric-Space ε X Y = - Π-Prop - ( type-subtype-induced-metric-space-Pseudometric-Space X) - ( λ (x , x∈X) → - Π-Prop - ( type-subtype-induced-metric-space-Pseudometric-Space Y) - ( λ (y , y∈Y) → neighborhood-prop-Pseudometric-Space M ε x y)) - - neighborhood-induced-metric-space-Pseudometric-Space : - ℚ⁺ → Relation (l1 ⊔ l2) type-induced-metric-space-Pseudometric-Space - neighborhood-induced-metric-space-Pseudometric-Space ε X Y = - type-Prop (neighborhood-prop-induced-metric-space-Pseudometric-Space ε X Y) -``` - -## Properties - -### The induced neighborhood relation is reflexive - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - abstract - is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space : - (d : ℚ⁺) (X : type-induced-metric-space-Pseudometric-Space M) → - neighborhood-induced-metric-space-Pseudometric-Space M d X X - is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space - d X (x , x∈X) (y , y∈X) = - apply-effectiveness-quotient-map - ( equivalence-relation-sim-Pseudometric-Space M) - ( ( eq-set-quotient-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( X) - ( x∈X)) ∙ - ( inv - ( eq-set-quotient-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( X) - ( y∈X)))) - ( d) -``` - -### The induced neighborhood relation is symmetric - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - abstract - is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space : - (d : ℚ⁺) (x y : type-induced-metric-space-Pseudometric-Space M) → - neighborhood-induced-metric-space-Pseudometric-Space M d x y → - neighborhood-induced-metric-space-Pseudometric-Space M d y x - is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space - d X Y d⟨X,Y⟩ (y , y∈Y) (x , x∈X) = - symmetric-neighborhood-Pseudometric-Space - ( M) - ( d) - ( x) - ( y) - ( d⟨X,Y⟩ (x , x∈X) (y , y∈Y)) -``` - -### The induced neighborhood relation is triangular - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - (X Y Z : type-induced-metric-space-Pseudometric-Space M) - (d₁ d₂ : ℚ⁺) - where - - abstract - is-triangular-neighborhood-induced-metric-space-Pseudometric-Space : - neighborhood-induced-metric-space-Pseudometric-Space M d₂ Y Z → - neighborhood-induced-metric-space-Pseudometric-Space M d₁ X Y → - neighborhood-induced-metric-space-Pseudometric-Space M (d₁ +ℚ⁺ d₂) X Z - is-triangular-neighborhood-induced-metric-space-Pseudometric-Space - d₂⟨Y,Z⟩ d₁⟨X,Y⟩ (x , x∈X) (z , z∈Z) = - let - open - do-syntax-trunc-Prop - ( neighborhood-prop-Pseudometric-Space M (d₁ +ℚ⁺ d₂) x z) - in do - (y , y∈Y) ← - is-inhabited-subtype-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( Y) - triangular-neighborhood-Pseudometric-Space - ( M) - ( x) - ( y) - ( z) - ( d₁) - ( d₂) - ( d₂⟨Y,Z⟩ (y , y∈Y) (z , z∈Z)) - ( d₁⟨X,Y⟩ (x , x∈X) (y , y∈Y)) -``` - -### The induced neighborhood relation is saturated - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - abstract - is-saturated-neighborhood-induced-metric-space-Pseudometric-Space : - (ε : ℚ⁺) (X Y : type-induced-metric-space-Pseudometric-Space M) → - ((δ : ℚ⁺) → - neighborhood-induced-metric-space-Pseudometric-Space M (ε +ℚ⁺ δ) X Y) → - neighborhood-induced-metric-space-Pseudometric-Space M ε X Y - is-saturated-neighborhood-induced-metric-space-Pseudometric-Space - ε X Y H (x , x∈X) (y , y∈Y) = - saturated-neighborhood-Pseudometric-Space M ε x y - ( λ δ → H δ (x , x∈X) (y , y∈Y)) -``` - -### The induced pseudometric space - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - pseudometric-induced-metric-space-Pseudometric-Space : - Pseudometric-Space (l1 ⊔ l2) (l1 ⊔ l2) - pseudometric-induced-metric-space-Pseudometric-Space = - ( type-induced-metric-space-Pseudometric-Space M , - neighborhood-prop-induced-metric-space-Pseudometric-Space M , - is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space M , - is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space M , - is-triangular-neighborhood-induced-metric-space-Pseudometric-Space M , - is-saturated-neighborhood-induced-metric-space-Pseudometric-Space M) -``` - -### The induced pseudometric is tight and extensional - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - abstract - is-tight-pseudometric-induced-metric-space-Pseudometric-Space : - is-tight-Pseudometric-Space - (pseudometric-induced-metric-space-Pseudometric-Space M) - is-tight-pseudometric-induced-metric-space-Pseudometric-Space X Y X~Y = - let - open - do-syntax-trunc-Prop - ( Id-Prop - ( set-induced-metric-space-Pseudometric-Space M) - ( X) - ( Y)) - in do - ( x , x∈X) ← - is-inhabited-subtype-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( X) - - ( y , y∈Y) ← - is-inhabited-subtype-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( Y) - - eq-set-quotient-sim-element-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( X) - ( Y) - ( x∈X) - ( y∈Y) - ( λ d → X~Y d (x , x∈X) (y , y∈Y)) - - is-extensional-pseudometric-induced-metric-space-Pseudometric-Space : - is-extensional-Pseudometric-Space - ( pseudometric-induced-metric-space-Pseudometric-Space M) - is-extensional-pseudometric-induced-metric-space-Pseudometric-Space = - is-extensional-is-tight-Pseudometric-Space - ( pseudometric-induced-metric-space-Pseudometric-Space M) - ( is-tight-pseudometric-induced-metric-space-Pseudometric-Space) -``` - -### The induced metric space - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - induced-metric-space-Pseudometric-Space : - Metric-Space (l1 ⊔ l2) (l1 ⊔ l2) - induced-metric-space-Pseudometric-Space = - make-Metric-Space - ( type-induced-metric-space-Pseudometric-Space M) - ( neighborhood-prop-induced-metric-space-Pseudometric-Space M) - ( is-reflexive-neighborhood-induced-metric-space-Pseudometric-Space M) - ( is-symmetric-neighborhood-induced-metric-space-Pseudometric-Space M) - ( is-triangular-neighborhood-induced-metric-space-Pseudometric-Space M) - ( is-saturated-neighborhood-induced-metric-space-Pseudometric-Space M) - ( is-extensional-pseudometric-induced-metric-space-Pseudometric-Space M) -``` - -### Mapping from the pseudometric space to the induced metric space - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - map-induced-metric-space-Pseudometric-Space : - type-Pseudometric-Space M → type-induced-metric-space-Pseudometric-Space M - map-induced-metric-space-Pseudometric-Space = - quotient-map (equivalence-relation-sim-Pseudometric-Space M) - - map-subtype-induced-metric-space-Pseudometric-Space : - (x : type-Pseudometric-Space M) → - type-subtype-induced-metric-space-Pseudometric-Space M - ( map-induced-metric-space-Pseudometric-Space x) - map-subtype-induced-metric-space-Pseudometric-Space = - inhabitant-equivalence-class-quotient-map-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) -``` - -### The mapping from the pseudometric space to the induced metric space is an isometry - -```agda -module _ - {l1 l2 : Level} - (M : Pseudometric-Space l1 l2) - where - - abstract - preserves-neighborhood-map-induced-metric-space-Pseudometric-Space : - (d : ℚ⁺) (x y : type-Pseudometric-Space M) → - neighborhood-Pseudometric-Space M d x y → - neighborhood-induced-metric-space-Pseudometric-Space - ( M) - ( d) - ( map-induced-metric-space-Pseudometric-Space M x) - ( map-induced-metric-space-Pseudometric-Space M y) - preserves-neighborhood-map-induced-metric-space-Pseudometric-Space - d x y d⟨x,y⟩ (x' , x≈x') (y' , y≈y') = - let - x~x' = - sim-is-in-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( x) - ( x') - ( x≈x') - - y~y' = - sim-is-in-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( y) - ( y') - ( y≈y') - - in - preserves-neighborhood-sim-Pseudometric-Space' M y~y' d x' - ( preserves-neighborhood-sim-Pseudometric-Space M x~x' d y d⟨x,y⟩) - - reflects-neighborhood-map-induced-metric-space-Pseudometric-Space : - (d : ℚ⁺) (x y : type-Pseudometric-Space M) → - neighborhood-induced-metric-space-Pseudometric-Space - ( M) - ( d) - ( map-induced-metric-space-Pseudometric-Space M x) - ( map-induced-metric-space-Pseudometric-Space M y) → - neighborhood-Pseudometric-Space M d x y - reflects-neighborhood-map-induced-metric-space-Pseudometric-Space - d x y Nxy = - Nxy - ( map-subtype-induced-metric-space-Pseudometric-Space M x) - ( map-subtype-induced-metric-space-Pseudometric-Space M y) - - is-isometry-map-induced-metric-space-Pseudometric-Space : - is-isometry-Pseudometric-Space - ( M) - ( pseudometric-induced-metric-space-Pseudometric-Space M) - ( map-induced-metric-space-Pseudometric-Space M) - is-isometry-map-induced-metric-space-Pseudometric-Space d x y = - ( preserves-neighborhood-map-induced-metric-space-Pseudometric-Space d x y , - reflects-neighborhood-map-induced-metric-space-Pseudometric-Space d x y) -``` - -### The isometry from a pseudometric space to its induced metric space - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - where - - isometry-map-induced-metric-space-Pseudometric-Space : - isometry-Pseudometric-Space - ( M) - ( pseudometric-induced-metric-space-Pseudometric-Space M) - isometry-map-induced-metric-space-Pseudometric-Space = - ( map-induced-metric-space-Pseudometric-Space M , - is-isometry-map-induced-metric-space-Pseudometric-Space M) -``` - -### The short map from a pseudometric space tp its induced metric space - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - where - - short-map-induced-metric-space-Pseudometric-Space : - short-function-Pseudometric-Space - ( M) - ( pseudometric-induced-metric-space-Pseudometric-Space M) - short-map-induced-metric-space-Pseudometric-Space = - short-isometry-Pseudometric-Space - ( M) - ( pseudometric-induced-metric-space-Pseudometric-Space M) - ( isometry-map-induced-metric-space-Pseudometric-Space M) -``` - -### The isometric equivalence between a metric space and the induced metric space of its pseudometric - -```agda -module _ - {l1 l2 : Level} - (M : Metric-Space l1 l2) - where - - map-induced-metric-space-Metric-Space : - type-Metric-Space M → - type-induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space M) - map-induced-metric-space-Metric-Space = - map-induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space M) - - abstract - is-contr-map-induced-metric-space-Metric-Space : - is-contr-map map-induced-metric-space-Metric-Space - is-contr-map-induced-metric-space-Metric-Space X = - let - open - do-syntax-trunc-Prop - ( is-contr-Prop - ( fiber map-induced-metric-space-Metric-Space X)) - in do - ( x , x∈X) ← - is-inhabited-subtype-set-quotient - ( equivalence-relation-sim-Metric-Space M) - ( X) - - ( ( x , - eq-set-quotient-equivalence-class-set-quotient - ( equivalence-relation-sim-Metric-Space M) - ( X) - ( x∈X)) , - ( λ (y , Y=X) → - eq-type-subtype - ( λ z → - Id-Prop - ( set-induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space M)) - ( map-induced-metric-space-Metric-Space z) - ( X)) - ( eq-sim-Metric-Space - ( M) - ( x) - ( y) - ( apply-effectiveness-quotient-map - ( equivalence-relation-sim-Metric-Space M) - ( ( eq-set-quotient-equivalence-class-set-quotient - ( equivalence-relation-sim-Metric-Space M) - ( X) - ( x∈X)) ∙ - ( inv Y=X)))))) - - is-equiv-map-induced-metric-space-Metric-Space : - is-equiv map-induced-metric-space-Metric-Space - is-equiv-map-induced-metric-space-Metric-Space = - is-equiv-is-contr-map - ( is-contr-map-induced-metric-space-Metric-Space) - - is-isometry-map-induced-metric-space-Metric-Space : - is-isometry-Metric-Space - ( M) - ( induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space M)) - ( map-induced-metric-space-Metric-Space) - is-isometry-map-induced-metric-space-Metric-Space = - is-isometry-map-induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space M) - - isometric-equiv-induced-metric-space-Metric-Space' : - isometric-equiv-Metric-Space' - ( M) - ( induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space M)) - isometric-equiv-induced-metric-space-Metric-Space' = - ( map-induced-metric-space-Metric-Space , - is-equiv-map-induced-metric-space-Metric-Space , - is-isometry-map-induced-metric-space-Metric-Space) -``` - -### The construction of the induced metric space of a pseudometric space is idempotent - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - where - - is-idempotent-induced-metric-space-Pseudometric-Space : - induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space - ( induced-metric-space-Pseudometric-Space M)) = - induced-metric-space-Pseudometric-Space M - is-idempotent-induced-metric-space-Pseudometric-Space = - inv - ( eq-isometric-equiv-Metric-Space' - ( induced-metric-space-Pseudometric-Space M) - ( induced-metric-space-Pseudometric-Space - ( pseudometric-Metric-Space - ( induced-metric-space-Pseudometric-Space M))) - ( isometric-equiv-induced-metric-space-Metric-Space' - ( induced-metric-space-Pseudometric-Space M))) -``` - -### The pointwise quotient of a Cauchy approximation in a pseudometric space is a Cauchy approximation in the induced metric space - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - where - - map-induced-metric-space-cauchy-approximation-Pseudometric-Space : - cauchy-approximation-Pseudometric-Space M → - cauchy-approximation-Metric-Space - ( induced-metric-space-Pseudometric-Space M) - map-induced-metric-space-cauchy-approximation-Pseudometric-Space = - map-short-function-cauchy-approximation-Pseudometric-Space - ( M) - ( pseudometric-induced-metric-space-Pseudometric-Space M) - ( short-isometry-Pseudometric-Space - ( M) - ( pseudometric-induced-metric-space-Pseudometric-Space M) - ( isometry-map-induced-metric-space-Pseudometric-Space M)) -``` - -### The pointwise quotient of Cauchy approximations in the induced metric space preserves limits - -```agda -module _ - {l1 l2 : Level} (M : Pseudometric-Space l1 l2) - (u : cauchy-approximation-Pseudometric-Space M) - (lim : type-Pseudometric-Space M) - (is-lim : - is-limit-cauchy-approximation-Pseudometric-Space M u lim) - where - - preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space : - is-limit-cauchy-approximation-Metric-Space - ( induced-metric-space-Pseudometric-Space M) - ( map-induced-metric-space-cauchy-approximation-Pseudometric-Space M u) - ( map-induced-metric-space-Pseudometric-Space M lim) - preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space - ε δ (x , x∈uε) (y , y∈lim) = - let - lim~y : sim-Pseudometric-Space M lim y - lim~y = - sim-is-in-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( lim) - ( y) - ( y∈lim) - - uε~x : - sim-Pseudometric-Space M - ( map-cauchy-approximation-Pseudometric-Space M u ε) - ( x) - uε~x = - sim-is-in-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space M) - ( map-cauchy-approximation-Pseudometric-Space M u ε) - ( x) - ( x∈uε) - in - preserves-neighborhood-sim-Pseudometric-Space' - ( M) - ( lim~y) - ( ε +ℚ⁺ δ) - ( x) - ( preserves-neighborhood-sim-Pseudometric-Space - ( M) - ( uε~x) - ( ε +ℚ⁺ δ) - ( lim) - ( is-lim ε δ)) - - convergent-map-induced-metric-space-cauchy-approximation-Pseudometric-Space : - convergent-cauchy-approximation-Metric-Space - ( induced-metric-space-Pseudometric-Space M) - convergent-map-induced-metric-space-cauchy-approximation-Pseudometric-Space = - ( map-induced-metric-space-cauchy-approximation-Pseudometric-Space M u , - map-induced-metric-space-Pseudometric-Space M lim , - preserves-limit-map-induced-metric-space-cauchy-approximation-Pseudometric-Space) -``` - -### Characterization of functions from the induced metric space into metric spaces - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Pseudometric-Space l1 l2) - (B : Metric-Space l1' l2') - where - - precomp-map-induced-metric-space-Pseudometric-Space : - type-function-Metric-Space - ( induced-metric-space-Pseudometric-Space A) - ( B) → - reflecting-map-equivalence-relation - ( equivalence-relation-sim-Pseudometric-Space A) - ( type-Metric-Space B) - precomp-map-induced-metric-space-Pseudometric-Space = - precomp-Set-Quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( set-induced-metric-space-Pseudometric-Space A) - ( reflecting-map-quotient-map - ( equivalence-relation-sim-Pseudometric-Space A)) - ( set-Metric-Space B) - - is-equiv-precomp-map-induced-metric-space-Pseudometric-Space : - is-equiv precomp-map-induced-metric-space-Pseudometric-Space - is-equiv-precomp-map-induced-metric-space-Pseudometric-Space = - is-set-quotient-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( set-Metric-Space B) - - equiv-type-function-induced-metric-space-Pseudometric-Space : - type-function-Metric-Space - ( induced-metric-space-Pseudometric-Space A) - ( B) ≃ - reflecting-map-equivalence-relation - ( equivalence-relation-sim-Pseudometric-Space A) - ( type-Metric-Space B) - equiv-type-function-induced-metric-space-Pseudometric-Space = - ( precomp-map-induced-metric-space-Pseudometric-Space , - is-equiv-precomp-map-induced-metric-space-Pseudometric-Space) -``` - -### Short maps from a pseudometric space to a metric space reflects similarity - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Pseudometric-Space l1 l2) - (B : Metric-Space l1' l2') - (f : short-function-Pseudometric-Space A (pseudometric-Metric-Space B)) - where - - reflects-sim-map-short-function-metric-space-Pseudometric-Space : - {x y : type-Pseudometric-Space A} → - sim-Pseudometric-Space A x y → - map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f x = - map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f y - reflects-sim-map-short-function-metric-space-Pseudometric-Space {x} {y} x~y = - eq-sim-Metric-Space B - ( map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f) - ( x)) - ( map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f) - ( y)) - ( preserves-sim-map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f) - ( x) - ( y) - ( x~y)) - - reflecting-map-short-function-metric-space-Pseudometric-Space : - reflecting-map-equivalence-relation - ( equivalence-relation-sim-Pseudometric-Space A) - ( type-Metric-Space B) - reflecting-map-short-function-metric-space-Pseudometric-Space = - ( ( map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f)) , - ( reflects-sim-map-short-function-metric-space-Pseudometric-Space)) -``` - -### Induced short function from the induced metric space into a metric space - -```agda -module _ - {l1 l2 l1' l2' : Level} - (A : Pseudometric-Space l1 l2) - (B : Metric-Space l1' l2') - (f : short-function-Pseudometric-Space A (pseudometric-Metric-Space B)) - where - - map-short-function-induced-metric-space-Pseudometric-space : - type-function-Metric-Space - ( induced-metric-space-Pseudometric-Space A) - ( B) - map-short-function-induced-metric-space-Pseudometric-space = - inv-precomp-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( set-Metric-Space B) - ( reflecting-map-short-function-metric-space-Pseudometric-Space A B f) - - htpy-map-short-function-induced-metric-space-Pseudometric-Space : - ( ( map-short-function-induced-metric-space-Pseudometric-space) ∘ - ( map-induced-metric-space-Pseudometric-Space A)) ~ - ( map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f) - htpy-map-short-function-induced-metric-space-Pseudometric-Space = - is-section-inv-precomp-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( set-Metric-Space B) - ( reflecting-map-short-function-metric-space-Pseudometric-Space A B f) - - abstract - is-short-map-short-function-induced-metric-space-Pseudometric-Space : - is-short-function-Metric-Space - ( induced-metric-space-Pseudometric-Space A) - ( B) - ( map-short-function-induced-metric-space-Pseudometric-space) - is-short-map-short-function-induced-metric-space-Pseudometric-Space - d X Y N⟨X,Y⟩ = - let - open - do-syntax-trunc-Prop - ( neighborhood-prop-Metric-Space - ( B) - ( d) - ( map-short-function-induced-metric-space-Pseudometric-space X) - ( map-short-function-induced-metric-space-Pseudometric-space Y)) - in do - ( x , x∈X) ← - is-inhabited-subtype-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( X) - ( y , y∈Y) ← - is-inhabited-subtype-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( Y) - let - lemma-eq-X : - map-induced-metric-space-Pseudometric-Space A x = X - lemma-eq-X = - eq-set-quotient-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( X) - ( x∈X) - - lemma-eq-fX : - ( map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f) - ( x)) = - ( map-short-function-induced-metric-space-Pseudometric-space X) - lemma-eq-fX = - ( inv - ( htpy-map-short-function-induced-metric-space-Pseudometric-Space - ( x))) ∙ - ( ap - ( map-short-function-induced-metric-space-Pseudometric-space) - ( lemma-eq-X)) - - lemma-eq-Y : - map-induced-metric-space-Pseudometric-Space A y = Y - lemma-eq-Y = - eq-set-quotient-equivalence-class-set-quotient - ( equivalence-relation-sim-Pseudometric-Space A) - ( Y) - ( y∈Y) - - lemma-eq-fY : - ( map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f) - ( y)) = - ( map-short-function-induced-metric-space-Pseudometric-space Y) - lemma-eq-fY = - ( inv - ( htpy-map-short-function-induced-metric-space-Pseudometric-Space - ( y))) ∙ - ( ap - ( map-short-function-induced-metric-space-Pseudometric-space) - ( lemma-eq-Y)) - - binary-tr - ( neighborhood-Metric-Space B d) - ( lemma-eq-fX) - ( lemma-eq-fY) - ( is-short-map-short-function-Pseudometric-Space - ( A) - ( pseudometric-Metric-Space B) - ( f) - ( d) - ( x) - ( y) - ( N⟨X,Y⟩ (x , x∈X) (y , y∈Y))) - - short-function-induced-metric-space-Pseudometric-Space : - short-function-Metric-Space - ( induced-metric-space-Pseudometric-Space A) - ( B) - short-function-induced-metric-space-Pseudometric-Space = - ( map-short-function-induced-metric-space-Pseudometric-space , - is-short-map-short-function-induced-metric-space-Pseudometric-Space) -``` diff --git a/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md b/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md new file mode 100644 index 0000000000..7c3dc24111 --- /dev/null +++ b/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md @@ -0,0 +1,790 @@ +# Metric quotients of pseudometric spaces + +```agda +{-# OPTIONS --lossy-unification #-} + +module metric-spaces.metric-quotients-of-pseudometric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-relations +open import foundation.binary-transport +open import foundation.contractible-maps +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalence-classes +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.fibers-of-maps +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.reflecting-maps-equivalence-relations +open import foundation.retractions +open import foundation.sections +open import foundation.set-quotients +open import foundation.sets +open import foundation.subtypes +open import foundation.universal-property-set-quotients +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces +open import metric-spaces.cauchy-approximations-pseudometric-spaces +open import metric-spaces.convergent-cauchy-approximations-metric-spaces +open import metric-spaces.equality-of-metric-spaces +open import metric-spaces.extensionality-pseudometric-spaces +open import metric-spaces.functions-metric-spaces +open import metric-spaces.isometries-metric-spaces +open import metric-spaces.isometries-pseudometric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces +open import metric-spaces.metric-spaces +open import metric-spaces.pseudometric-spaces +open import metric-spaces.rational-neighborhood-relations +open import metric-spaces.short-functions-metric-spaces +open import metric-spaces.short-functions-pseudometric-spaces +open import metric-spaces.similarity-of-elements-pseudometric-spaces +``` + +
+ +## Idea + +The +{{#concept "quotient metric space" Disambiguation="of a pseudometric space" Agda=metric-quotient-Pseudometric-Space}} +of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is the +[metric space](metric-spaces.metric-spaces.md) whose points are +[quotient classes](foundation.set-quotients.md) of `M` by the +[similarity relation](metric-spaces.similarity-of-elements-pseudometric-spaces.md) +and [neighborhoods](metric-spaces.rational-neighborhood-relations.md) given by +neighborhoods of inhabitants of the quotient classes: two quotient classes `X`, +`Y` are in a `d`-neighborhood if for all `x ∈ X` and `y ∈ Y`, `x` and `y` are +`d`-neighbors in the pseudometric space. + +Any metric space is +[isometrically equivalent](metric-spaces.equality-of-metric-spaces.md) to its +induced metric space. + +## Definition + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + set-metric-quotient-Pseudometric-Space : Set (l1 ⊔ l2) + set-metric-quotient-Pseudometric-Space = + quotient-Set (equivalence-relation-sim-Pseudometric-Space M) + + type-metric-quotient-Pseudometric-Space : UU (l1 ⊔ l2) + type-metric-quotient-Pseudometric-Space = + type-Set set-metric-quotient-Pseudometric-Space + + type-subtype-metric-quotient-Pseudometric-Space : + (X : type-metric-quotient-Pseudometric-Space) → UU (l1 ⊔ l2) + type-subtype-metric-quotient-Pseudometric-Space X = + type-subtype + ( subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X)) + + neighborhood-prop-metric-quotient-Pseudometric-Space : + Rational-Neighborhood-Relation + ( l1 ⊔ l2) + ( type-metric-quotient-Pseudometric-Space) + neighborhood-prop-metric-quotient-Pseudometric-Space ε X Y = + Π-Prop + ( type-subtype-metric-quotient-Pseudometric-Space X) + ( λ (x , x∈X) → + Π-Prop + ( type-subtype-metric-quotient-Pseudometric-Space Y) + ( λ (y , y∈Y) → neighborhood-prop-Pseudometric-Space M ε x y)) + + neighborhood-metric-quotient-Pseudometric-Space : + ℚ⁺ → Relation (l1 ⊔ l2) type-metric-quotient-Pseudometric-Space + neighborhood-metric-quotient-Pseudometric-Space ε X Y = + type-Prop (neighborhood-prop-metric-quotient-Pseudometric-Space ε X Y) +``` + +## Properties + +### The quotient neighborhood relation is reflexive + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-reflexive-neighborhood-metric-quotient-Pseudometric-Space : + (d : ℚ⁺) (X : type-metric-quotient-Pseudometric-Space M) → + neighborhood-metric-quotient-Pseudometric-Space M d X X + is-reflexive-neighborhood-metric-quotient-Pseudometric-Space + d X (x , x∈X) (y , y∈X) = + apply-effectiveness-quotient-map + ( equivalence-relation-sim-Pseudometric-Space M) + ( ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + ( x∈X)) ∙ + ( inv + ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + ( y∈X)))) + ( d) +``` + +### The quotient neighborhood relation is symmetric + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-symmetric-neighborhood-metric-quotient-Pseudometric-Space : + (d : ℚ⁺) (x y : type-metric-quotient-Pseudometric-Space M) → + neighborhood-metric-quotient-Pseudometric-Space M d x y → + neighborhood-metric-quotient-Pseudometric-Space M d y x + is-symmetric-neighborhood-metric-quotient-Pseudometric-Space + d X Y d⟨X,Y⟩ (y , y∈Y) (x , x∈X) = + symmetric-neighborhood-Pseudometric-Space + ( M) + ( d) + ( x) + ( y) + ( d⟨X,Y⟩ (x , x∈X) (y , y∈Y)) +``` + +### The quotient neighborhood relation is triangular + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + (X Y Z : type-metric-quotient-Pseudometric-Space M) + (d₁ d₂ : ℚ⁺) + where + + abstract + is-triangular-neighborhood-metric-quotient-Pseudometric-Space : + neighborhood-metric-quotient-Pseudometric-Space M d₂ Y Z → + neighborhood-metric-quotient-Pseudometric-Space M d₁ X Y → + neighborhood-metric-quotient-Pseudometric-Space M (d₁ +ℚ⁺ d₂) X Z + is-triangular-neighborhood-metric-quotient-Pseudometric-Space + d₂⟨Y,Z⟩ d₁⟨X,Y⟩ (x , x∈X) (z , z∈Z) = + let + open + do-syntax-trunc-Prop + ( neighborhood-prop-Pseudometric-Space M (d₁ +ℚ⁺ d₂) x z) + in do + (y , y∈Y) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( Y) + triangular-neighborhood-Pseudometric-Space + ( M) + ( x) + ( y) + ( z) + ( d₁) + ( d₂) + ( d₂⟨Y,Z⟩ (y , y∈Y) (z , z∈Z)) + ( d₁⟨X,Y⟩ (x , x∈X) (y , y∈Y)) +``` + +### The quotient neighborhood relation is saturated + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-saturated-neighborhood-metric-quotient-Pseudometric-Space : + (ε : ℚ⁺) (X Y : type-metric-quotient-Pseudometric-Space M) → + ((δ : ℚ⁺) → + neighborhood-metric-quotient-Pseudometric-Space M (ε +ℚ⁺ δ) X Y) → + neighborhood-metric-quotient-Pseudometric-Space M ε X Y + is-saturated-neighborhood-metric-quotient-Pseudometric-Space + ε X Y H (x , x∈X) (y , y∈Y) = + saturated-neighborhood-Pseudometric-Space M ε x y + ( λ δ → H δ (x , x∈X) (y , y∈Y)) +``` + +### The quotient pseudometric space + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + pseudometric-metric-quotient-Pseudometric-Space : + Pseudometric-Space (l1 ⊔ l2) (l1 ⊔ l2) + pseudometric-metric-quotient-Pseudometric-Space = + ( type-metric-quotient-Pseudometric-Space M , + neighborhood-prop-metric-quotient-Pseudometric-Space M , + is-reflexive-neighborhood-metric-quotient-Pseudometric-Space M , + is-symmetric-neighborhood-metric-quotient-Pseudometric-Space M , + is-triangular-neighborhood-metric-quotient-Pseudometric-Space M , + is-saturated-neighborhood-metric-quotient-Pseudometric-Space M) +``` + +### The quotient pseudometric space is tight and extensional + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + is-tight-pseudometric-metric-quotient-Pseudometric-Space : + is-tight-Pseudometric-Space + (pseudometric-metric-quotient-Pseudometric-Space M) + is-tight-pseudometric-metric-quotient-Pseudometric-Space X Y X~Y = + let + open + do-syntax-trunc-Prop + ( Id-Prop + ( set-metric-quotient-Pseudometric-Space M) + ( X) + ( Y)) + in do + ( x , x∈X) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + + ( y , y∈Y) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( Y) + + eq-set-quotient-sim-element-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( X) + ( Y) + ( x∈X) + ( y∈Y) + ( λ d → X~Y d (x , x∈X) (y , y∈Y)) + + is-extensional-pseudometric-metric-quotient-Pseudometric-Space : + is-extensional-Pseudometric-Space + ( pseudometric-metric-quotient-Pseudometric-Space M) + is-extensional-pseudometric-metric-quotient-Pseudometric-Space = + is-extensional-is-tight-Pseudometric-Space + ( pseudometric-metric-quotient-Pseudometric-Space M) + ( is-tight-pseudometric-metric-quotient-Pseudometric-Space) +``` + +### The quotient metric space of a pseudometric space + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + metric-quotient-Pseudometric-Space : Metric-Space (l1 ⊔ l2) (l1 ⊔ l2) + metric-quotient-Pseudometric-Space = + make-Metric-Space + ( type-metric-quotient-Pseudometric-Space M) + ( neighborhood-prop-metric-quotient-Pseudometric-Space M) + ( is-reflexive-neighborhood-metric-quotient-Pseudometric-Space M) + ( is-symmetric-neighborhood-metric-quotient-Pseudometric-Space M) + ( is-triangular-neighborhood-metric-quotient-Pseudometric-Space M) + ( is-saturated-neighborhood-metric-quotient-Pseudometric-Space M) + ( is-extensional-pseudometric-metric-quotient-Pseudometric-Space M) +``` + +### Mapping from a pseudometric space to its quotient metric space + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + map-metric-quotient-Pseudometric-Space : + type-Pseudometric-Space M → type-metric-quotient-Pseudometric-Space M + map-metric-quotient-Pseudometric-Space = + quotient-map (equivalence-relation-sim-Pseudometric-Space M) + + map-subtype-metric-quotient-Pseudometric-Space : + (x : type-Pseudometric-Space M) → + type-subtype-metric-quotient-Pseudometric-Space M + ( map-metric-quotient-Pseudometric-Space x) + map-subtype-metric-quotient-Pseudometric-Space = + inhabitant-equivalence-class-quotient-map-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) +``` + +### The mapping from a pseudometric space its quotient metric space is an isometry + +```agda +module _ + {l1 l2 : Level} + (M : Pseudometric-Space l1 l2) + where + + abstract + preserves-neighborhood-map-metric-quotient-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space M) → + neighborhood-Pseudometric-Space M d x y → + neighborhood-metric-quotient-Pseudometric-Space + ( M) + ( d) + ( map-metric-quotient-Pseudometric-Space M x) + ( map-metric-quotient-Pseudometric-Space M y) + preserves-neighborhood-map-metric-quotient-Pseudometric-Space + d x y d⟨x,y⟩ (x' , x≈x') (y' , y≈y') = + let + x~x' = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( x) + ( x') + ( x≈x') + + y~y' = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( y) + ( y') + ( y≈y') + + in + preserves-neighborhood-sim-Pseudometric-Space' M y~y' d x' + ( preserves-neighborhood-sim-Pseudometric-Space M x~x' d y d⟨x,y⟩) + + reflects-neighborhood-map-metric-quotient-Pseudometric-Space : + (d : ℚ⁺) (x y : type-Pseudometric-Space M) → + neighborhood-metric-quotient-Pseudometric-Space + ( M) + ( d) + ( map-metric-quotient-Pseudometric-Space M x) + ( map-metric-quotient-Pseudometric-Space M y) → + neighborhood-Pseudometric-Space M d x y + reflects-neighborhood-map-metric-quotient-Pseudometric-Space + d x y Nxy = + Nxy + ( map-subtype-metric-quotient-Pseudometric-Space M x) + ( map-subtype-metric-quotient-Pseudometric-Space M y) + + is-isometry-map-metric-quotient-Pseudometric-Space : + is-isometry-Pseudometric-Space + ( M) + ( pseudometric-metric-quotient-Pseudometric-Space M) + ( map-metric-quotient-Pseudometric-Space M) + is-isometry-map-metric-quotient-Pseudometric-Space d x y = + ( preserves-neighborhood-map-metric-quotient-Pseudometric-Space d x y , + reflects-neighborhood-map-metric-quotient-Pseudometric-Space d x y) +``` + +### The isometry from a pseudometric space to its quotient metric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + isometry-map-metric-quotient-Pseudometric-Space : + isometry-Pseudometric-Space + ( M) + ( pseudometric-metric-quotient-Pseudometric-Space M) + isometry-map-metric-quotient-Pseudometric-Space = + ( map-metric-quotient-Pseudometric-Space M , + is-isometry-map-metric-quotient-Pseudometric-Space M) +``` + +### The short map from a pseudometric space to its quotient metric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + short-map-metric-quotient-Pseudometric-Space : + short-function-Pseudometric-Space + ( M) + ( pseudometric-metric-quotient-Pseudometric-Space M) + short-map-metric-quotient-Pseudometric-Space = + short-isometry-Pseudometric-Space + ( M) + ( pseudometric-metric-quotient-Pseudometric-Space M) + ( isometry-map-metric-quotient-Pseudometric-Space M) +``` + +### The isometric equivalence between a metric space and the quotient metric space of its pseudometric + +```agda +module _ + {l1 l2 : Level} + (M : Metric-Space l1 l2) + where + + map-metric-quotient-Metric-Space : + type-Metric-Space M → + type-metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space M) + map-metric-quotient-Metric-Space = + map-metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space M) + + abstract + is-contr-map-metric-quotient-Metric-Space : + is-contr-map map-metric-quotient-Metric-Space + is-contr-map-metric-quotient-Metric-Space X = + let + open + do-syntax-trunc-Prop + ( is-contr-Prop + ( fiber map-metric-quotient-Metric-Space X)) + in do + ( x , x∈X) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Metric-Space M) + ( X) + + ( ( x , + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Metric-Space M) + ( X) + ( x∈X)) , + ( λ (y , Y=X) → + eq-type-subtype + ( λ z → + Id-Prop + ( set-metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space M)) + ( map-metric-quotient-Metric-Space z) + ( X)) + ( eq-sim-Metric-Space + ( M) + ( x) + ( y) + ( apply-effectiveness-quotient-map + ( equivalence-relation-sim-Metric-Space M) + ( ( eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Metric-Space M) + ( X) + ( x∈X)) ∙ + ( inv Y=X)))))) + + is-equiv-map-metric-quotient-Metric-Space : + is-equiv map-metric-quotient-Metric-Space + is-equiv-map-metric-quotient-Metric-Space = + is-equiv-is-contr-map + ( is-contr-map-metric-quotient-Metric-Space) + + is-isometry-map-metric-quotient-Metric-Space : + is-isometry-Metric-Space + ( M) + ( metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space M)) + ( map-metric-quotient-Metric-Space) + is-isometry-map-metric-quotient-Metric-Space = + is-isometry-map-metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space M) + + isometric-equiv-metric-quotient-Metric-Space' : + isometric-equiv-Metric-Space' + ( M) + ( metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space M)) + isometric-equiv-metric-quotient-Metric-Space' = + ( map-metric-quotient-Metric-Space , + is-equiv-map-metric-quotient-Metric-Space , + is-isometry-map-metric-quotient-Metric-Space) +``` + +### The construction of the quotient metric space of a pseudometric space is idempotent + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + is-idempotent-metric-quotient-Pseudometric-Space : + metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space + ( metric-quotient-Pseudometric-Space M)) = + metric-quotient-Pseudometric-Space M + is-idempotent-metric-quotient-Pseudometric-Space = + inv + ( eq-isometric-equiv-Metric-Space' + ( metric-quotient-Pseudometric-Space M) + ( metric-quotient-Pseudometric-Space + ( pseudometric-Metric-Space + ( metric-quotient-Pseudometric-Space M))) + ( isometric-equiv-metric-quotient-Metric-Space' + ( metric-quotient-Pseudometric-Space M))) +``` + +### The pointwise quotient of a Cauchy approximation in a pseudometric space is a Cauchy approximation in the quotient metric space + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + where + + map-metric-quotient-cauchy-approximation-Pseudometric-Space : + cauchy-approximation-Pseudometric-Space M → + cauchy-approximation-Metric-Space + ( metric-quotient-Pseudometric-Space M) + map-metric-quotient-cauchy-approximation-Pseudometric-Space = + map-short-function-cauchy-approximation-Pseudometric-Space + ( M) + ( pseudometric-metric-quotient-Pseudometric-Space M) + ( short-isometry-Pseudometric-Space + ( M) + ( pseudometric-metric-quotient-Pseudometric-Space M) + ( isometry-map-metric-quotient-Pseudometric-Space M)) +``` + +### The pointwise quotient of Cauchy approximations in the quotient metric space preserves limits + +```agda +module _ + {l1 l2 : Level} (M : Pseudometric-Space l1 l2) + (u : cauchy-approximation-Pseudometric-Space M) + (lim : type-Pseudometric-Space M) + (is-lim : + is-limit-cauchy-approximation-Pseudometric-Space M u lim) + where + + preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space : + is-limit-cauchy-approximation-Metric-Space + ( metric-quotient-Pseudometric-Space M) + ( map-metric-quotient-cauchy-approximation-Pseudometric-Space M u) + ( map-metric-quotient-Pseudometric-Space M lim) + preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space + ε δ (x , x∈uε) (y , y∈lim) = + let + lim~y : sim-Pseudometric-Space M lim y + lim~y = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( lim) + ( y) + ( y∈lim) + + uε~x : + sim-Pseudometric-Space M + ( map-cauchy-approximation-Pseudometric-Space M u ε) + ( x) + uε~x = + sim-is-in-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space M) + ( map-cauchy-approximation-Pseudometric-Space M u ε) + ( x) + ( x∈uε) + in + preserves-neighborhood-sim-Pseudometric-Space' + ( M) + ( lim~y) + ( ε +ℚ⁺ δ) + ( x) + ( preserves-neighborhood-sim-Pseudometric-Space + ( M) + ( uε~x) + ( ε +ℚ⁺ δ) + ( lim) + ( is-lim ε δ)) + + convergent-map-metric-quotient-cauchy-approximation-Pseudometric-Space : + convergent-cauchy-approximation-Metric-Space + ( metric-quotient-Pseudometric-Space M) + convergent-map-metric-quotient-cauchy-approximation-Pseudometric-Space = + ( map-metric-quotient-cauchy-approximation-Pseudometric-Space M u , + map-metric-quotient-Pseudometric-Space M lim , + preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space) +``` + +### Characterization of functions from the quotient metric space into metric spaces + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) + (B : Metric-Space l1' l2') + where + + precomp-map-metric-quotient-Pseudometric-Space : + type-function-Metric-Space + ( metric-quotient-Pseudometric-Space A) + ( B) → + reflecting-map-equivalence-relation + ( equivalence-relation-sim-Pseudometric-Space A) + ( type-Metric-Space B) + precomp-map-metric-quotient-Pseudometric-Space = + precomp-Set-Quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-metric-quotient-Pseudometric-Space A) + ( reflecting-map-quotient-map + ( equivalence-relation-sim-Pseudometric-Space A)) + ( set-Metric-Space B) + + is-equiv-precomp-map-metric-quotient-Pseudometric-Space : + is-equiv precomp-map-metric-quotient-Pseudometric-Space + is-equiv-precomp-map-metric-quotient-Pseudometric-Space = + is-set-quotient-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-Metric-Space B) + + equiv-type-function-metric-quotient-Pseudometric-Space : + type-function-Metric-Space + ( metric-quotient-Pseudometric-Space A) + ( B) ≃ + reflecting-map-equivalence-relation + ( equivalence-relation-sim-Pseudometric-Space A) + ( type-Metric-Space B) + equiv-type-function-metric-quotient-Pseudometric-Space = + ( precomp-map-metric-quotient-Pseudometric-Space , + is-equiv-precomp-map-metric-quotient-Pseudometric-Space) +``` + +### Induced short function from the quotient metric space into a metric space + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) + (B : Metric-Space l1' l2') + (f : short-function-Pseudometric-Space A (pseudometric-Metric-Space B)) + where + + map-short-function-metric-quotient-Pseudometric-space : + type-function-Metric-Space + ( metric-quotient-Pseudometric-Space A) + ( B) + map-short-function-metric-quotient-Pseudometric-space = + inv-precomp-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-Metric-Space B) + ( reflecting-map-short-function-metric-space-Pseudometric-Space A B f) + + htpy-map-short-function-metric-quotient-Pseudometric-Space : + ( ( map-short-function-metric-quotient-Pseudometric-space) ∘ + ( map-metric-quotient-Pseudometric-Space A)) ~ + ( map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f) + htpy-map-short-function-metric-quotient-Pseudometric-Space = + is-section-inv-precomp-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( set-Metric-Space B) + ( reflecting-map-short-function-metric-space-Pseudometric-Space A B f) + + abstract + is-short-map-short-function-metric-quotient-Pseudometric-Space : + is-short-function-Metric-Space + ( metric-quotient-Pseudometric-Space A) + ( B) + ( map-short-function-metric-quotient-Pseudometric-space) + is-short-map-short-function-metric-quotient-Pseudometric-Space + d X Y N⟨X,Y⟩ = + let + open + do-syntax-trunc-Prop + ( neighborhood-prop-Metric-Space + ( B) + ( d) + ( map-short-function-metric-quotient-Pseudometric-space X) + ( map-short-function-metric-quotient-Pseudometric-space Y)) + in do + ( x , x∈X) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( X) + ( y , y∈Y) ← + is-inhabited-subtype-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( Y) + let + lemma-eq-X : + map-metric-quotient-Pseudometric-Space A x = X + lemma-eq-X = + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( X) + ( x∈X) + + lemma-eq-fX : + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( x)) = + ( map-short-function-metric-quotient-Pseudometric-space X) + lemma-eq-fX = + ( inv + ( htpy-map-short-function-metric-quotient-Pseudometric-Space + ( x))) ∙ + ( ap + ( map-short-function-metric-quotient-Pseudometric-space) + ( lemma-eq-X)) + + lemma-eq-Y : + map-metric-quotient-Pseudometric-Space A y = Y + lemma-eq-Y = + eq-set-quotient-equivalence-class-set-quotient + ( equivalence-relation-sim-Pseudometric-Space A) + ( Y) + ( y∈Y) + + lemma-eq-fY : + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( y)) = + ( map-short-function-metric-quotient-Pseudometric-space Y) + lemma-eq-fY = + ( inv + ( htpy-map-short-function-metric-quotient-Pseudometric-Space + ( y))) ∙ + ( ap + ( map-short-function-metric-quotient-Pseudometric-space) + ( lemma-eq-Y)) + + binary-tr + ( neighborhood-Metric-Space B d) + ( lemma-eq-fX) + ( lemma-eq-fY) + ( is-short-map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( d) + ( x) + ( y) + ( N⟨X,Y⟩ (x , x∈X) (y , y∈Y))) + + short-function-metric-quotient-Pseudometric-Space : + short-function-Metric-Space + ( metric-quotient-Pseudometric-Space A) + ( B) + short-function-metric-quotient-Pseudometric-Space = + ( map-short-function-metric-quotient-Pseudometric-space , + is-short-map-short-function-metric-quotient-Pseudometric-Space) +``` + +## External links + +- [Metric identification](https://en.wikipedia.org/wiki/Pseudometric_space#Metric_identification) + on pseudometric spaces at Wikipedia diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index 9d9e823937..d857545e04 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -17,6 +17,7 @@ open import foundation.function-types open import foundation.functoriality-dependent-pair-types open import foundation.identity-types open import foundation.propositions +open import foundation.reflecting-maps-equivalence-relations open import foundation.sets open import foundation.subtypes open import foundation.transport-along-identifications @@ -30,6 +31,7 @@ open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhood-relations open import metric-spaces.reflexive-rational-neighborhood-relations open import metric-spaces.saturated-rational-neighborhood-relations +open import metric-spaces.short-functions-pseudometric-spaces open import metric-spaces.similarity-of-elements-pseudometric-spaces open import metric-spaces.symmetric-rational-neighborhood-relations open import metric-spaces.triangular-rational-neighborhood-relations @@ -328,6 +330,53 @@ module _ map-inv-equiv (equiv-sim-eq-Metric-Space x y) ``` +### Short maps from a pseudometric space to a metric space reflect similarity + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Pseudometric-Space l1 l2) + (B : Metric-Space l1' l2') + (f : short-function-Pseudometric-Space A (pseudometric-Metric-Space B)) + where + + reflects-sim-map-short-function-metric-space-Pseudometric-Space : + {x y : type-Pseudometric-Space A} → + sim-Pseudometric-Space A x y → + map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f x = + map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f y + reflects-sim-map-short-function-metric-space-Pseudometric-Space {x} {y} x~y = + eq-sim-Metric-Space B + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( x)) + ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( y)) + ( preserves-sim-map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f) + ( x) + ( y) + ( x~y)) + + reflecting-map-short-function-metric-space-Pseudometric-Space : + reflecting-map-equivalence-relation + ( equivalence-relation-sim-Pseudometric-Space A) + ( type-Metric-Space B) + reflecting-map-short-function-metric-space-Pseudometric-Space = + ( ( map-short-function-Pseudometric-Space + ( A) + ( pseudometric-Metric-Space B) + ( f)) , + ( reflects-sim-map-short-function-metric-space-Pseudometric-Space)) +``` + ## External links - [`MetricSpaces.Type`](https://www.cs.bham.ac.uk/~mhe/TypeTopology/MetricSpaces.Type.html) From c65a51bb5c3cd1e0cf4a9f01a5ac90455de3cf43 Mon Sep 17 00:00:00 2001 From: malarbol Date: Tue, 19 Aug 2025 02:51:39 +0200 Subject: [PATCH 151/151] fix name --- .../metric-quotients-of-pseudometric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md b/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md index 7c3dc24111..36d41a5dd3 100644 --- a/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md @@ -60,7 +60,7 @@ open import metric-spaces.similarity-of-elements-pseudometric-spaces ## Idea The -{{#concept "quotient metric space" Disambiguation="of a pseudometric space" Agda=metric-quotient-Pseudometric-Space}} +{{#concept "metric quotient" Disambiguation="of a pseudometric space" Agda=metric-quotient-Pseudometric-Space}} of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is the [metric space](metric-spaces.metric-spaces.md) whose points are [quotient classes](foundation.set-quotients.md) of `M` by the