Metric quotients of pseudometric spaces

Content created by Louis Wasserman and malarbol.

Created on 2025-11-06.
Last modified on 2025-11-06.

{-# OPTIONS --lossy-unification #-}

module metric-spaces.metric-quotients-of-pseudometric-spaces where
Imports
open import elementary-number-theory.addition-positive-rational-numbers
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.inhabited-subtypes
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.transport-along-identifications
open import foundation.universal-property-set-quotients
open import foundation.universe-levels

open import logic.functoriality-existential-quantification

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 metric quotient of a pseudometric space is the metric space whose points are quotient classes of M by the similarity relation and neighborhoods are 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 pseudometric space M has an isometry into its metric quotient; if M is a metric space, this is an isometric equivalence.

Any short map (resp. isometry) from a pseudometric space to a metric space factors uniquely as a short map (resp. isometry) through the metric quotient of its domain. This is the universal property of the metric space quotient.

Definitions

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

  subtype-class-metric-quotient-Pseudometric-Space :
    (X : type-metric-quotient-Pseudometric-Space) 
    subtype l2 (type-Pseudometric-Space M)
  subtype-class-metric-quotient-Pseudometric-Space =
    subtype-set-quotient
      ( equivalence-relation-sim-Pseudometric-Space M)

  is-in-class-metric-quotient-Pseudometric-Space :
    (X : type-metric-quotient-Pseudometric-Space) 
    type-Pseudometric-Space M 
    UU l2
  is-in-class-metric-quotient-Pseudometric-Space =
    is-in-equivalence-class-set-quotient
      ( equivalence-relation-sim-Pseudometric-Space M)

  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-class-metric-quotient-Pseudometric-Space 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

All quotient classes are inhabited

module _
  {l1 l2 : Level} (A : Pseudometric-Space l1 l2)
  (x : type-metric-quotient-Pseudometric-Space A)
  where

  is-inhabited-class-metric-quotient-Pseudometric-Space :
    is-inhabited-subtype
      ( subtype-class-metric-quotient-Pseudometric-Space A x)
  is-inhabited-class-metric-quotient-Pseudometric-Space =
    is-inhabited-subtype-set-quotient
      ( equivalence-relation-sim-Pseudometric-Space A)
      ( x)

The quotient neighborhood relation is reflexive

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

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

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

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

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

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

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)

The mapping from a pseudometric space to its quotient metric space

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)

  is-in-class-map-quotient-Pseudometric-Space :
    (x : type-Pseudometric-Space M) 
    is-in-class-metric-quotient-Pseudometric-Space
      ( M)
      ( map-metric-quotient-Pseudometric-Space x)
      ( x)
  is-in-class-map-quotient-Pseudometric-Space =
    is-in-equivalence-class-quotient-map-set-quotient
      ( 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

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-quotient-map-set-quotient
            ( equivalence-relation-sim-Pseudometric-Space M)
            ( x)
            ( x')
            ( x≈x')

        y~y' =
          sim-is-in-equivalence-class-quotient-map-set-quotient
            ( equivalence-relation-sim-Pseudometric-Space M)
            ( y)
            ( y')
            ( y≈y')

      in
        preserves-neighborhood-right-sim-Pseudometric-Space M y~y' d x'
          ( preserves-neighborhood-left-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

module _
  {l1 l2 : Level} (M : Pseudometric-Space l1 l2)
  where

  isometry-metric-quotient-Pseudometric-Space :
    isometry-Pseudometric-Space
      ( M)
      ( pseudometric-metric-quotient-Pseudometric-Space M)
  isometry-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

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-metric-quotient-Pseudometric-Space M)

The isometric equivalence between a metric space and the quotient metric space of its pseudometric space

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

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 induced short function from the quotient metric space into a metric space

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)

  compute-map-short-function-metric-quotient-Pseudometric-Space :
    (X : type-metric-quotient-Pseudometric-Space A) 
    (x : type-Pseudometric-Space A) 
    is-in-class-metric-quotient-Pseudometric-Space A X x 
    map-short-function-metric-quotient-Pseudometric-space X 
    map-short-function-Pseudometric-Space A (pseudometric-Metric-Space B) f x
  compute-map-short-function-metric-quotient-Pseudometric-Space X x x∈X =
    tr
      ( λ Y 
        map-short-function-metric-quotient-Pseudometric-space Y 
        map-short-function-Pseudometric-Space
          ( A)
          ( pseudometric-Metric-Space B)
          ( f)
          ( x))
      ( eq-set-quotient-equivalence-class-set-quotient
        ( equivalence-relation-sim-Pseudometric-Space A)
        ( X)
        ( x∈X))
      ( htpy-map-short-function-metric-quotient-Pseudometric-Space x)

  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)

          binary-tr
            ( neighborhood-Metric-Space B d)
            ( inv
              ( compute-map-short-function-metric-quotient-Pseudometric-Space
                ( X)
                ( x)
                ( x∈X)))
            ( inv
              ( compute-map-short-function-metric-quotient-Pseudometric-Space
                ( Y)
                ( y)
                ( y∈Y)))
            ( 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-map-short-function-metric-quotient-Pseudometric-Space :
    short-function-Metric-Space
      ( metric-quotient-Pseudometric-Space A)
      ( B)
  short-map-short-function-metric-quotient-Pseudometric-Space =
    ( map-short-function-metric-quotient-Pseudometric-space ,
      is-short-map-short-function-metric-quotient-Pseudometric-Space)

Induced isometry from the quotient metric space into a metric space

module _
  {l1 l2 l1' l2' : Level}
  (A : Pseudometric-Space l1 l2)
  (B : Metric-Space l1' l2')
  (f : isometry-Pseudometric-Space A (pseudometric-Metric-Space B))
  where

  map-isometry-metric-quotient-Pseudometric-Space :
    type-function-Metric-Space
      ( metric-quotient-Pseudometric-Space A)
      ( B)
  map-isometry-metric-quotient-Pseudometric-Space =
    map-short-function-metric-quotient-Pseudometric-space
      ( A)
      ( B)
      ( short-isometry-Pseudometric-Space
        ( A)
        ( pseudometric-Metric-Space B)
        ( f))

  htpy-map-isometry-metric-quotient-Pseudometric-Space :
    ( ( map-isometry-metric-quotient-Pseudometric-Space) 
      ( map-metric-quotient-Pseudometric-Space A)) ~
    ( map-isometry-Pseudometric-Space A (pseudometric-Metric-Space B) f)
  htpy-map-isometry-metric-quotient-Pseudometric-Space =
    htpy-map-short-function-metric-quotient-Pseudometric-Space
      ( A)
      ( B)
      ( short-isometry-Pseudometric-Space
        ( A)
        ( pseudometric-Metric-Space B)
        ( f))

  compute-map-isometry-metric-quotient-Pseudometric-Space :
    (X : type-metric-quotient-Pseudometric-Space A) 
    (x : type-Pseudometric-Space A) 
    is-in-class-metric-quotient-Pseudometric-Space A X x 
    map-isometry-metric-quotient-Pseudometric-Space X 
    map-isometry-Pseudometric-Space
      ( A)
      ( pseudometric-Metric-Space B)
      ( f)
      ( x)
  compute-map-isometry-metric-quotient-Pseudometric-Space =
    compute-map-short-function-metric-quotient-Pseudometric-Space
      ( A)
      ( B)
      ( short-isometry-Pseudometric-Space
        ( A)
        ( pseudometric-Metric-Space B)
        ( f))

  abstract
    preserves-neighborhood-map-isometry-metric-quotient-Pseudometric-Space :
      (d : ℚ⁺) 
      (x y : type-metric-quotient-Pseudometric-Space A) 
      neighborhood-metric-quotient-Pseudometric-Space
        ( A)
        ( d)
        ( x)
        ( y) 
      neighborhood-Metric-Space
        ( B)
        ( d)
        ( map-isometry-metric-quotient-Pseudometric-Space x)
        ( map-isometry-metric-quotient-Pseudometric-Space y)
    preserves-neighborhood-map-isometry-metric-quotient-Pseudometric-Space =
      is-short-map-short-function-metric-quotient-Pseudometric-Space
        ( A)
        ( B)
        ( short-isometry-Pseudometric-Space
          ( A)
          ( pseudometric-Metric-Space B)
          ( f))

    reflects-neighborhood-map-isometry-metric-quotient-Pseudometric-Space :
      (d : ℚ⁺) 
      (x y : type-metric-quotient-Pseudometric-Space A) 
      neighborhood-Metric-Space
        ( B)
        ( d)
        ( map-isometry-metric-quotient-Pseudometric-Space x)
        ( map-isometry-metric-quotient-Pseudometric-Space y) 
      neighborhood-metric-quotient-Pseudometric-Space
        ( A)
        ( d)
        ( x)
        ( y)
    reflects-neighborhood-map-isometry-metric-quotient-Pseudometric-Space
      d X Y N⟨fX,fY⟩ (x , x∈X) (y , y∈Y) =
      reflects-neighborhood-map-isometry-Pseudometric-Space
        ( A)
        ( pseudometric-Metric-Space B)
        ( f)
        ( d)
        ( x)
        ( y)
        ( binary-tr
          ( neighborhood-Metric-Space B d)
          ( compute-map-isometry-metric-quotient-Pseudometric-Space X x x∈X)
          ( compute-map-isometry-metric-quotient-Pseudometric-Space Y y y∈Y)
          ( N⟨fX,fY⟩))

    is-isometry-map-isometry-metric-quotient-Pseudometric-Space :
      is-isometry-Metric-Space
        ( metric-quotient-Pseudometric-Space A)
        ( B)
        ( map-isometry-metric-quotient-Pseudometric-Space)
    is-isometry-map-isometry-metric-quotient-Pseudometric-Space d x y =
      ( preserves-neighborhood-map-isometry-metric-quotient-Pseudometric-Space
        ( d)
        ( x)
        ( y) ,
        reflects-neighborhood-map-isometry-metric-quotient-Pseudometric-Space
          ( d)
          ( x)
          ( y))

  isometry-map-isometry-metric-quotient-Pseudometric-Space :
    isometry-Metric-Space
      ( metric-quotient-Pseudometric-Space A)
      ( B)
  isometry-map-isometry-metric-quotient-Pseudometric-Space =
    ( map-isometry-metric-quotient-Pseudometric-Space ,
      is-isometry-map-isometry-metric-quotient-Pseudometric-Space)

Recent changes