Discrete metric spaces
Content created by Louis Wasserman and malarbol.
Created on 2025-08-18.
Last modified on 2025-08-18.
module metric-spaces.discrete-metric-spaces where
Imports
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.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.preimages-rational-neighborhood-relations 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-metric-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
Idea
A metric space is discrete¶ if all elements at bounded distance are equal. Discrete metric spaces are complete and any discrete metric space is isometrically equal to the standard discrete metric space¶ on its underlying set.
Any map from a discrete metric space is short, and a map into a discrete metric space is short if and only if it is locally constant.
Definitions
The property of being a discrete metric space
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
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
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
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
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
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-Discrete-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-Discrete-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
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-Discrete-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
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)
Recent changes
- 2025-08-18. malarbol and Louis Wasserman. Refactor metric spaces (#1450).