Isometries between metric spaces
Content created by malarbol, Louis Wasserman and Fredrik Bakke.
Created on 2024-09-28.
Last modified on 2025-08-18.
module metric-spaces.isometries-metric-spaces where
Imports
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.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.sets open import foundation.subtypes 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.preimages-rational-neighborhood-relations open import metric-spaces.pseudometric-spaces open import metric-spaces.rational-neighborhood-relations
Idea
A map of metric spaces f : A → B
is an
isometry¶
if the
rational neighborhood relation
on A
is equivalent to the
preimage under f
of the rational neighborhood relation on B
. In other words, f
is an isometry
if it is an isometry between
the underlying pseudometric spaces.
Definitions
The property of being a isometry between 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-isometry-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ l2') is-isometry-prop-Metric-Space = 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 = type-Prop is-isometry-prop-Metric-Space is-prop-is-isometry-Metric-Space : is-prop is-isometry-Metric-Space is-prop-is-isometry-Metric-Space = is-prop-type-Prop is-isometry-prop-Metric-Space
The set of isometries between metric spaces
module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') where set-isometry-Metric-Space : Set (l1 ⊔ l2 ⊔ l1' ⊔ l2') set-isometry-Metric-Space = set-subset ( set-function-Metric-Space A B) ( is-isometry-prop-Metric-Space A B) isometry-Metric-Space : UU (l1 ⊔ l2 ⊔ l1' ⊔ l2') isometry-Metric-Space = type-Set set-isometry-Metric-Space is-set-isometry-Metric-Space : is-set isometry-Metric-Space is-set-isometry-Metric-Space = is-set-type-Set set-isometry-Metric-Space module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') (f : isometry-Metric-Space A B) where 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 = pr2 f
Properties
The identity function on a metric space is an isometry
module _ {l1 l2 : Level} (A : Metric-Space l1 l2) where is-isometry-id-Metric-Space : 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 = id-Metric-Space A , is-isometry-id-Metric-Space
Equality of isometries in metric spaces is equivalent to homotopies between their carrier maps
module _ {l1 l2 l1' l2' : Level} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') (f g : isometry-Metric-Space A B) where equiv-eq-htpy-map-isometry-Metric-Space : (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-Pseudometric-Space ( pseudometric-Metric-Space A) ( pseudometric-Metric-Space B) ( f) ( g) htpy-eq-map-isometry-Metric-Space : (f = g) → (map-isometry-Metric-Space A B f ~ map-isometry-Metric-Space A B g) htpy-eq-map-isometry-Metric-Space = 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) → (f = g) eq-htpy-map-isometry-Metric-Space = map-inv-equiv equiv-eq-htpy-map-isometry-Metric-Space
Isometries preserve and reflect neighborhoods
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
module _ {l1a l2a l1b l2b l1c l2c : Level} (A : Metric-Space l1a l2a) (B : Metric-Space l1b l2b) (C : Metric-Space l1c l2c) 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-Pseudometric-Space ( pseudometric-Metric-Space A) ( pseudometric-Metric-Space B) ( pseudometric-Metric-Space C)
Unit laws for composition of isometries between metric spaces
module _ {l1a l2a l1b l2b : Level} (A : Metric-Space l1a l2a) (B : Metric-Space l1b l2b) (f : isometry-Metric-Space A B) where left-unit-law-comp-isometry-Metric-Space : ( comp-isometry-Metric-Space A B B (isometry-id-Metric-Space B) ( f)) = ( f) left-unit-law-comp-isometry-Metric-Space = left-unit-law-comp-isometry-Pseudometric-Space ( pseudometric-Metric-Space A) ( pseudometric-Metric-Space B) ( f) right-unit-law-comp-isometry-Metric-Space : ( comp-isometry-Metric-Space A A B ( f) ( isometry-id-Metric-Space A)) = ( f) right-unit-law-comp-isometry-Metric-Space = right-unit-law-comp-isometry-Pseudometric-Space ( pseudometric-Metric-Space A) ( pseudometric-Metric-Space B) ( f)
Associativity of composition of isometries between metric spaces
module _ {l1a l2a l1b l2b l1c l2c l1d l2d : Level} (A : Metric-Space l1a l2a) (B : Metric-Space l1b l2b) (C : Metric-Space l1c l2c) (D : Metric-Space l1d l2d) (h : isometry-Metric-Space C D) (g : isometry-Metric-Space B C) (f : isometry-Metric-Space A B) where associative-comp-isometry-Metric-Space : ( 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)) associative-comp-isometry-Metric-Space = 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
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 : is-isometry-Metric-Space B A (map-inv-is-equiv E) 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} (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') (f : isometry-Metric-Space A B) (E : is-equiv (map-isometry-Metric-Space A B f)) where isometry-inv-is-equiv-isometry-Metric-Space : isometry-Metric-Space B A isometry-inv-is-equiv-isometry-Metric-Space = 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 B A B f isometry-inv-is-equiv-isometry-Metric-Space) = ( isometry-id-Metric-Space B) is-section-isometry-inv-is-equiv-isometry-Metric-Space = 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 A B A isometry-inv-is-equiv-isometry-Metric-Space f) = ( isometry-id-Metric-Space A) is-retraction-isometry-inv-is-equiv-isometry-Metric-Space = is-retraction-isometry-inv-is-equiv-isometry-Pseudometric-Space ( pseudometric-Metric-Space A) ( pseudometric-Metric-Space B) ( f) ( E)
Isometries between metric spaces are embeddings
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 : is-emb (map-isometry-Metric-Space A B f) is-emb-map-isometry-Metric-Space = is-emb-is-injective ( is-set-type-Metric-Space B) ( is-injective-map-isometry-Metric-Space)
Recent changes
- 2025-08-18. malarbol and Louis Wasserman. Refactor metric spaces (#1450).
- 2025-05-05. malarbol. Metric properties of real negation, absolute value, addition and maximum (#1398).
- 2025-03-30. Louis Wasserman. Continuity of functions between metric spaces (#1375).
- 2024-09-28. malarbol and Fredrik Bakke. Metric spaces (#1162).