diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md
index bc48c2ee7e..6b8a2c6213 100644
--- a/src/metric-spaces.lagda.md
+++ b/src/metric-spaces.lagda.md
@@ -67,6 +67,8 @@ open import metric-spaces.category-of-metric-spaces-and-short-functions public
open import metric-spaces.cauchy-approximations-metric-quotients-of-pseudometric-spaces public
open import metric-spaces.cauchy-approximations-metric-spaces public
open import metric-spaces.cauchy-approximations-pseudometric-spaces public
+open import metric-spaces.cauchy-dense-metric-extensions-of-pseudometric-spaces public
+open import metric-spaces.cauchy-precompletion-of-pseudometric-spaces public
open import metric-spaces.cauchy-pseudocompletion-of-metric-spaces public
open import metric-spaces.cauchy-pseudocompletion-of-pseudometric-spaces public
open import metric-spaces.cauchy-sequences-complete-metric-spaces public
@@ -75,6 +77,7 @@ open import metric-spaces.closed-subsets-located-metric-spaces public
open import metric-spaces.closed-subsets-metric-spaces public
open import metric-spaces.closure-subsets-metric-spaces public
open import metric-spaces.compact-metric-spaces public
+open import metric-spaces.complete-metric-extensions-of-pseudometric-spaces public
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
@@ -106,6 +109,7 @@ 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.located-metric-spaces public
+open import metric-spaces.metric-extensions-of-pseudometric-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
diff --git a/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md
index 9184f29af6..4c46e7a886 100644
--- a/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md
@@ -107,7 +107,7 @@ module _
( cauchy-pseudocompletion-Metric-Space
( metric-quotient-Pseudometric-Space M))
short-map-metric-quotient-cauchy-apprtoximation-Pseudometric-Space =
- short-map-short-function-cauchy-approximation-Pseudometric-Space
+ short-map-cauchy-approximation-short-function-Pseudometric-Space
( M)
( pseudometric-metric-quotient-Pseudometric-Space M)
( short-map-metric-quotient-Pseudometric-Space M)
diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md
index caf5ee3d31..d8bf919a55 100644
--- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md
@@ -123,7 +123,7 @@ module _
cauchy-approximation-Metric-Space A →
cauchy-approximation-Metric-Space B
map-short-function-cauchy-approximation-Metric-Space =
- map-short-function-cauchy-approximation-Pseudometric-Space
+ map-cauchy-approximation-short-function-Pseudometric-Space
( pseudometric-Metric-Space A)
( pseudometric-Metric-Space B)
( f)
diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md
index 3f7b863d42..b6b0b62a39 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.propositions
open import foundation.subtypes
open import foundation.universe-levels
+open import metric-spaces.isometries-pseudometric-spaces
open import metric-spaces.pseudometric-spaces
open import metric-spaces.short-functions-pseudometric-spaces
```
@@ -112,10 +113,10 @@ module _
(f : short-function-Pseudometric-Space A B)
where
- map-short-function-cauchy-approximation-Pseudometric-Space :
+ map-cauchy-approximation-short-function-Pseudometric-Space :
cauchy-approximation-Pseudometric-Space A →
cauchy-approximation-Pseudometric-Space B
- map-short-function-cauchy-approximation-Pseudometric-Space (u , H) =
+ map-cauchy-approximation-short-function-Pseudometric-Space (u , H) =
( map-short-function-Pseudometric-Space A B f ∘ u ,
λ ε δ →
is-short-map-short-function-Pseudometric-Space
@@ -128,6 +129,25 @@ module _
( H ε δ))
```
+### The action of isometries on Cauchy approximations
+
+```agda
+module _
+ {l1 l2 l1' l2' : Level}
+ (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2')
+ (f : isometry-Pseudometric-Space A B)
+ where
+
+ map-cauchy-approximation-isometry-Pseudometric-Space :
+ cauchy-approximation-Pseudometric-Space A →
+ cauchy-approximation-Pseudometric-Space B
+ map-cauchy-approximation-isometry-Pseudometric-Space =
+ map-cauchy-approximation-short-function-Pseudometric-Space
+ ( A)
+ ( B)
+ ( short-isometry-Pseudometric-Space A B f)
+```
+
### Homotopic Cauchy approximations are equal
```agda
diff --git a/src/metric-spaces/cauchy-dense-metric-extensions-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-dense-metric-extensions-of-pseudometric-spaces.lagda.md
new file mode 100644
index 0000000000..f47fed160e
--- /dev/null
+++ b/src/metric-spaces/cauchy-dense-metric-extensions-of-pseudometric-spaces.lagda.md
@@ -0,0 +1,497 @@
+# Cauchy dense metric extensions of pseudometric spaces
+
+```agda
+module metric-spaces.cauchy-dense-metric-extensions-of-pseudometric-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-relations
+open import foundation.binary-transport
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.existential-quantification
+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.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.cauchy-approximations-metric-quotients-of-pseudometric-spaces
+open import metric-spaces.cauchy-approximations-metric-spaces
+open import metric-spaces.cauchy-approximations-pseudometric-spaces
+open import metric-spaces.cauchy-precompletion-of-pseudometric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-metric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-pseudometric-spaces
+open import metric-spaces.complete-metric-spaces
+open import metric-spaces.convergent-cauchy-approximations-metric-spaces
+open import metric-spaces.equality-of-metric-spaces
+open import metric-spaces.functions-metric-spaces
+open import metric-spaces.functions-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-extensions-of-pseudometric-spaces
+open import metric-spaces.metric-quotients-of-pseudometric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.precategory-of-metric-spaces-and-short-functions
+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
+
+A [metric extension](metric-spaces.metric-extensions-of-pseudometric-spaces.md)
+of a [pseudometric space](metric-spaces.pseudometric-spaces.md) is called
+{{#concept "Cauchy dense" Disambiguation="metric extension of a pseudometric space" Agda=is-cauchy-dense-Metric-Extension}}
+if all the points of the target [metric space](metric-spaces.metric-spaces.md)
+are [limits](metric-spaces.limits-of-cauchy-approximations-metric-spaces.md) of
+images of
+[cauchy approximations](metric-spaces.cauchy-approximations-metric-spaces.md) in
+the pseudometric space.
+
+## Definitions
+
+### The property of being a limit point of the Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ (X : type-cauchy-precompletion-Pseudometric-Space P)
+ (y : type-metric-space-Metric-Extension P M)
+ where
+
+ is-limit-cauchy-precompletion-prop-point-Metric-Extension :
+ Prop (l1 ⊔ l2 ⊔ l4)
+ is-limit-cauchy-precompletion-prop-point-Metric-Extension =
+ Π-Prop
+ ( cauchy-approximation-Pseudometric-Space P)
+ ( λ x →
+ Π-Prop
+ ( is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X)
+ ( x))
+ ( λ x∈X →
+ is-limit-map-metric-extension-prop-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( x)
+ ( y)))
+
+ is-limit-cauchy-precompletion-point-Metric-Extension : UU (l1 ⊔ l2 ⊔ l4)
+ is-limit-cauchy-precompletion-point-Metric-Extension =
+ type-Prop is-limit-cauchy-precompletion-prop-point-Metric-Extension
+```
+
+### Adherent points of a metric extension
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ (y : type-metric-space-Metric-Extension P M)
+ where
+
+ is-adherent-point-Metric-Extension : UU (l1 ⊔ l2 ⊔ l4)
+ is-adherent-point-Metric-Extension =
+ Σ ( type-cauchy-precompletion-Pseudometric-Space P)
+ ( λ X →
+ is-limit-cauchy-precompletion-point-Metric-Extension P M X y)
+
+ all-eq-is-adherent-point-Metric-Extension :
+ (X X' : is-adherent-point-Metric-Extension) → X = X'
+ all-eq-is-adherent-point-Metric-Extension (X , lim-X) (X' , lim-X') =
+ eq-type-subtype
+ ( λ Y → is-limit-cauchy-precompletion-prop-point-Metric-Extension P M Y y)
+ ( X=X')
+ where
+ X=X' : X = X'
+ X=X' =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( Id-Prop
+ ( set-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P))
+ ( X)
+ ( X'))
+ in do
+ (x , x∈X) ←
+ is-inhabited-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X)
+ (x' , x'∈X') ←
+ is-inhabited-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X')
+ eq-set-quotient-sim-element-set-quotient
+ ( equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( X)
+ ( X')
+ ( x∈X)
+ ( x'∈X')
+ ( lemma-sim-is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( y)
+ ( x)
+ ( x')
+ ( lim-X x x∈X)
+ ( lim-X' x' x'∈X'))
+
+ is-prop-is-adherent-point-Metric-Extension :
+ is-prop is-adherent-point-Metric-Extension
+ is-prop-is-adherent-point-Metric-Extension =
+ is-prop-all-elements-equal all-eq-is-adherent-point-Metric-Extension
+
+ is-adherent-prop-point-Metric-Extension : Prop (l1 ⊔ l2 ⊔ l4)
+ is-adherent-prop-point-Metric-Extension =
+ ( is-adherent-point-Metric-Extension ,
+ is-prop-is-adherent-point-Metric-Extension)
+```
+
+### The property of being a Cauchy dense metric extensions
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ where
+
+ is-cauchy-dense-prop-Metric-Extension : Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ is-cauchy-dense-prop-Metric-Extension =
+ Π-Prop
+ ( type-metric-space-Metric-Extension P M)
+ ( is-adherent-prop-point-Metric-Extension P M)
+
+ is-cauchy-dense-Metric-Extension : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ is-cauchy-dense-Metric-Extension =
+ type-Prop is-cauchy-dense-prop-Metric-Extension
+
+ is-prop-is-cauchy-dense-Metric-Extension :
+ is-prop is-cauchy-dense-Metric-Extension
+ is-prop-is-cauchy-dense-Metric-Extension =
+ is-prop-type-Prop is-cauchy-dense-prop-Metric-Extension
+```
+
+## Properties
+
+### The map from the target metric space of a Cauchy dense extension into the Cauchy precompletion is an isometry
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ (dense-M : is-cauchy-dense-Metric-Extension P M)
+ where
+
+ map-cauchy-precompletion-is-cauchy-dense-Metric-Extension :
+ type-metric-space-Metric-Extension P M →
+ type-cauchy-precompletion-Pseudometric-Space P
+ map-cauchy-precompletion-is-cauchy-dense-Metric-Extension y =
+ pr1 (dense-M y)
+
+ is-limit-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension :
+ (y : type-metric-space-Metric-Extension P M) →
+ is-limit-cauchy-precompletion-point-Metric-Extension
+ ( P)
+ ( M)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension y)
+ ( y)
+ is-limit-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension y =
+ pr2 (dense-M y)
+
+ sim-const-is-in-class-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension :
+ (y : type-metric-space-Metric-Extension P M) →
+ (x : cauchy-approximation-Pseudometric-Space P) →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension y)
+ ( x) →
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( x))
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( y))
+ sim-const-is-in-class-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension
+ y x x∈X =
+ sim-const-is-limit-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M x)
+ ( y)
+ ( is-limit-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension
+ ( y)
+ ( x)
+ ( x∈X))
+
+ preserves-neighborhood-map-cauchy-precompletion-is-dense-Metric-Extension :
+ is-short-function-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension)
+ preserves-neighborhood-map-cauchy-precompletion-is-dense-Metric-Extension
+ d X Y NXY (x , x∈fX) (y , y∈fY) =
+ reflects-neighborhood-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( isometry-metric-extension-cauchy-approximation-Pseudometric-Space P M)
+ ( d)
+ ( x)
+ ( y)
+ ( Nxy)
+ where
+
+ fx~X :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M x)
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( X))
+ fx~X =
+ sim-const-is-in-class-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension
+ ( X)
+ ( x)
+ ( x∈fX)
+
+ fy~Y :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M y)
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( Y))
+ fy~Y =
+ sim-const-is-in-class-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension
+ ( Y)
+ ( y)
+ ( y∈fY)
+
+ Nxy :
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( d)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M x)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M y)
+ Nxy =
+ reflects-neighborhood-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ { map-metric-extension-cauchy-approximation-Pseudometric-Space P M x}
+ { const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( X)}
+ { map-metric-extension-cauchy-approximation-Pseudometric-Space P M y}
+ { const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( Y)}
+ ( fx~X)
+ ( fy~Y)
+ ( d)
+ ( preserves-neighborhood-map-cauchy-pseudocompletion-Pseudometric-Space
+ ( pseudometric-space-Metric-Extension P M)
+ ( d)
+ ( X)
+ ( Y)
+ ( NXY))
+
+ reflects-neighborhood-map-cauchy-precompletion-is-dense-Metric-Extension :
+ ( d : ℚ⁺) →
+ ( X Y : type-metric-space-Metric-Extension P M) →
+ neighborhood-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( d)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension X)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension Y) →
+ neighborhood-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( d)
+ ( X)
+ ( Y)
+ reflects-neighborhood-map-cauchy-precompletion-is-dense-Metric-Extension
+ d X Y NXY =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( neighborhood-prop-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( d)
+ ( X)
+ ( Y))
+ in do
+ ( u , lim-u) ←
+ is-inhabited-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension X)
+
+ ( v , lim-v) ←
+ is-inhabited-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension Y)
+ let
+ fu~X :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( u))
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( X))
+ fu~X =
+ sim-const-is-in-class-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension
+ ( X)
+ ( u)
+ ( lim-u)
+
+ fv~Y :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( v))
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( Y))
+ fv~Y =
+ sim-const-is-in-class-map-cauchy-precompletion-is-cauchy-dense-Metric-Extension
+ ( Y)
+ ( v)
+ ( lim-v)
+
+ Nuv :
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( d)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( u))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( v))
+ Nuv =
+ preserves-neighborhood-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( isometry-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M))
+ ( d)
+ ( u)
+ ( v)
+ ( NXY (u , lim-u) (v , lim-v))
+
+ reflects-neighborhood-map-isometry-Pseudometric-Space
+ ( pseudometric-space-Metric-Extension P M)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( isometry-cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( d)
+ ( X)
+ ( Y)
+ ( preserves-neighborhood-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ { map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( u)}
+ { const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( X)}
+ { map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( v)}
+ { const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( Y)}
+ ( fu~X)
+ ( fv~Y)
+ ( d)
+ ( Nuv))
+
+ is-isometry-map-cauchy-precompletion-is-dense-Metric-Extension :
+ is-isometry-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension)
+ is-isometry-map-cauchy-precompletion-is-dense-Metric-Extension d x y =
+ ( ( preserves-neighborhood-map-cauchy-precompletion-is-dense-Metric-Extension
+ ( d)
+ ( x)
+ ( y)) ,
+ ( reflects-neighborhood-map-cauchy-precompletion-is-dense-Metric-Extension
+ ( d)
+ ( x)
+ ( y)))
+
+ isometry-map-cauchy-precompletion-is-dense-Metric-Extension :
+ isometry-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ isometry-map-cauchy-precompletion-is-dense-Metric-Extension =
+ ( map-cauchy-precompletion-is-cauchy-dense-Metric-Extension ,
+ is-isometry-map-cauchy-precompletion-is-dense-Metric-Extension)
+```
+
+### The Cauchy precompletion of a pseudometric space is Cauchy dense
+
+```agda
+module _
+ {l1 l2 : Level}
+ (P : Pseudometric-Space l1 l2)
+ where
+
+ is-cauchy-dense-metric-extension-cauchy-precompletion-Pseudometric-Space :
+ is-cauchy-dense-Metric-Extension
+ ( P)
+ ( metric-extension-cauchy-precompletion-Pseudometric-Space P)
+ is-cauchy-dense-metric-extension-cauchy-precompletion-Pseudometric-Space X =
+ ( X , is-limit-is-in-class-cauchy-precompletion-Pseudometric-Space P X)
+```
diff --git a/src/metric-spaces/cauchy-precompletion-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-precompletion-of-pseudometric-spaces.lagda.md
new file mode 100644
index 0000000000..604ca15726
--- /dev/null
+++ b/src/metric-spaces/cauchy-precompletion-of-pseudometric-spaces.lagda.md
@@ -0,0 +1,1151 @@
+# The Cauchy precompletion of a pseudometric space
+
+```agda
+module metric-spaces.cauchy-precompletion-of-pseudometric-spaces where
+```
+
+Imports
+
+```agda
+open import category-theory.isomorphisms-in-precategories
+
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-relations
+open import foundation.binary-transport
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.existential-quantification
+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.set-quotients
+open import foundation.sets
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-approximations-metric-quotients-of-pseudometric-spaces
+open import metric-spaces.cauchy-approximations-metric-spaces
+open import metric-spaces.cauchy-approximations-pseudometric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-metric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-pseudometric-spaces
+open import metric-spaces.complete-metric-spaces
+open import metric-spaces.convergent-cauchy-approximations-metric-spaces
+open import metric-spaces.equality-of-metric-spaces
+open import metric-spaces.functions-metric-spaces
+open import metric-spaces.functions-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-extensions-of-pseudometric-spaces
+open import metric-spaces.metric-quotients-of-pseudometric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.precategory-of-metric-spaces-and-short-functions
+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
+
+Let `M` be a [pseudometric space](metric-spaces.pseudometric-spaces.md) and
+`C M` denote its
+[Cauchy pseudocompletion](metric-spaces.cauchy-pseudocompletion-of-pseudometric-spaces.md);
+the
+{{#concept "Cauchy precompletion" Disambiguation="of a pseudometric space" Agda=cauchy-precompletion-Pseudometric-Space}}
+of `M` is the
+[metric quotient](metric-spaces.metric-quotients-of-pseudometric-spaces.md)
+
+```text
+[C M] = C M / ~
+```
+
+There are [isometries](metric-spaces.isometries-pseudometric-spaces.md)
+
+```text
+M → C M → [C M]
+```
+
+The Cauchy precompletion of the Cauchy pseudocompletion of a pseudometric space
+is the Cauchy precompletion of the pseudometric space:
+
+```text
+[C (C M)] = [C M]
+```
+
+A [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md)
+in `[C M]`, `f : C [C M]` is
+[convergent](metric-spaces.convergent-cauchy-approximations-metric-spaces.md) if
+and only if it is
+[similar](metric-spaces.similarity-of-elements-pseudometric-spaces.md) in
+`C [C M]` to the
+[pointwise quotient](metric-spaces.cauchy-approximations-metric-quotients-of-pseudometric-spaces.md)
+of some
+[Cauchy approximation](metric-spaces.cauchy-approximations-pseudometric-spaces.md)
+`g : C (C M)`. So the Cauchy precompletion of a pseudometric space is
+[complete](metric-spaces.complete-metric-spaces.md) if and only if all its
+Cauchy approximations have a lift up to similarity in its Cauchy
+pseudocompletion.
+
+Any [short map](metric-spaces.short-functions-pseudometric-spaces.md) (resp.
+isometry) from a pseudometric space in a complete metric space factors as a
+short map (resp. isometry) through the Cauchy precompletion of its domain. This
+is the
+{{#concept "universal property" Disambiguation="of the Cauchy precompletion of a pseudometric space"}}
+of the Cauchy precompletion.
+
+## Definition
+
+### The Cauchy precompletion of a pseudometric space
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ cauchy-precompletion-Pseudometric-Space :
+ Metric-Space (l1 ⊔ l2) (l1 ⊔ l2)
+ cauchy-precompletion-Pseudometric-Space =
+ metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+
+ pseudometric-cauchy-precompletion-Pseudometric-Space :
+ Pseudometric-Space (l1 ⊔ l2) (l1 ⊔ l2)
+ pseudometric-cauchy-precompletion-Pseudometric-Space =
+ pseudometric-Metric-Space
+ cauchy-precompletion-Pseudometric-Space
+
+ type-cauchy-precompletion-Pseudometric-Space : UU (l1 ⊔ l2)
+ type-cauchy-precompletion-Pseudometric-Space =
+ type-Metric-Space cauchy-precompletion-Pseudometric-Space
+```
+
+### The Cauchy precompletion of the Cauchy pseudocompletion of a pseudometric space
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ Metric-Space (l1 ⊔ l2) (l1 ⊔ l2)
+ cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ cauchy-precompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+```
+
+## Properties
+
+### The isometry from the Cauchy pseudocompletion of a pseudometric space into its Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ isometry-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ isometry-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ isometry-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+```
+
+### The isometry from a pseudometric space into its Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ isometry-cauchy-precompletion-Pseudometric-Space :
+ isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ isometry-cauchy-precompletion-Pseudometric-Space =
+ comp-isometry-Pseudometric-Space
+ ( P)
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P))
+ ( isometry-cauchy-pseudocompletion-Pseudometric-Space P)
+
+ metric-extension-cauchy-precompletion-Pseudometric-Space :
+ Metric-Extension (l1 ⊔ l2) (l1 ⊔ l2) P
+ metric-extension-cauchy-precompletion-Pseudometric-Space =
+ ( ( cauchy-precompletion-Pseudometric-Space P) ,
+ ( isometry-cauchy-precompletion-Pseudometric-Space))
+```
+
+### The isometry from the Cauchy pseudocompletion of the Cauchy pseudocompletion into the Cauchy precompletion
+
+```agda
+module _
+ { l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ isometry-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ isometry-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space =
+ comp-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( isometry-lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P))
+
+ short-map-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space :
+ short-function-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ short-map-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space =
+ short-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space)
+```
+
+### The short isomorphism from the Cauchy precompletion of the Cauchy pseudocompletion of a pseudometric space into its Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ short-function-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ short-map-short-function-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( short-map-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space
+ ( P))
+
+ map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ type-function-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ map-short-function-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)
+
+ compute-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ ( X :
+ type-cauchy-precompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)) →
+ ( x :
+ cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)) →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( X)
+ ( x) →
+ map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space X =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))
+ compute-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ =
+ compute-map-short-function-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( short-map-cauchy-precompletion-cauchy-pseudocompletion²-Pseudometric-Space
+ ( P))
+
+ short-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ short-function-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ short-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ short-map-short-function-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( comp-short-function-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( short-map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)))
+ ( short-map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)))
+
+ map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ type-function-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ map-short-function-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( short-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)
+
+ compute-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ (X : type-cauchy-precompletion-Pseudometric-Space P) →
+ (x : cauchy-approximation-Pseudometric-Space P) →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X)
+ ( x) →
+ map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X) =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x))
+ compute-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ =
+ compute-map-short-function-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( comp-short-function-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( short-map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)))
+ ( short-map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)))
+
+ is-section-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ ( map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space ∘
+ map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space) ~
+ id
+ is-section-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ X =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( Id-Prop
+ ( set-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P))
+ ( map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X)))
+ ( X))
+ in do
+ ( x , x∈X) ←
+ is-inhabited-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X)
+ let
+ map-inv-X =
+ map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X)
+
+ compute-map-inv-X :
+ map-inv-X =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x))
+ compute-map-inv-X =
+ compute-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X)
+ ( x)
+ ( x∈X)
+
+ is-in-class-x :
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-inv-X)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x))
+ is-in-class-x =
+ inv-tr
+ ( λ Y →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( Y)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)))
+ ( compute-map-inv-X)
+ ( is-in-class-map-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)))
+
+ compute-map :
+ map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( map-inv-X) =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)))
+ compute-map =
+ compute-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( map-inv-X)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x))
+ ( is-in-class-x)
+
+ compute-quotient-lim :
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x))) =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)
+ compute-quotient-lim =
+ apply-effectiveness-quotient-map'
+ ( equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( all-sim-is-limit-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x))
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)))
+ ( x)
+ ( is-limit-lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)))
+ ( is-limit-const-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)))
+
+ compute-quotient-x :
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x) = X
+ compute-quotient-x =
+ eq-set-quotient-equivalence-class-set-quotient
+ ( equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( X)
+ ( x∈X)
+
+ ( compute-map ∙
+ compute-quotient-lim ∙
+ compute-quotient-x)
+
+ is-retraction-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ ( map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space ∘
+ map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)
+ ~
+ id
+ is-retraction-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ X =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( Id-Prop
+ ( set-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)))
+ ( map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X)))
+ ( X))
+
+ in do
+ ( x , x∈X) ←
+ is-inhabited-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( X)
+ let
+ map-X =
+ map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X)
+
+ compute-map-X :
+ map-X =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))
+ compute-map-X =
+ compute-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( X)
+ ( x)
+ ( x∈X)
+
+ is-in-class-map-X :
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( map-X)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))
+ is-in-class-map-X =
+ inv-tr
+ ( λ Y →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( Y)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x)))
+ ( compute-map-X)
+ ( is-in-class-map-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x)))
+
+ compute-map-inv :
+ map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( map-X) =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x)))
+ compute-map-inv =
+ compute-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( map-X)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))
+ ( is-in-class-map-X)
+
+ compute-map-quotient-lim :
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))) =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( x)
+ compute-map-quotient-lim =
+ apply-effectiveness-quotient-map'
+ ( equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)))
+ ( symmetric-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( x)
+ ( map-cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x)))
+ ( sim-const-is-limit-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( x)
+ ( lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))
+ ( is-limit-lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( x))))
+
+ compute-quotient-x :
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( x) =
+ X
+ compute-quotient-x =
+ eq-set-quotient-equivalence-class-set-quotient
+ ( equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)))
+ ( X)
+ ( x∈X)
+
+ ( compute-map-inv ∙
+ compute-map-quotient-lim ∙
+ compute-quotient-x)
+
+ is-iso-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ is-iso-Precategory
+ precategory-short-function-Metric-Space
+ { cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P}
+ { cauchy-precompletion-Pseudometric-Space P}
+ short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ pr1
+ is-iso-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ =
+ short-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ pr2
+ is-iso-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ =
+ ( ( eq-htpy-map-short-function-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( comp-short-function-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P))
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)
+ ( short-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space))
+ ( short-id-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P))
+ ( is-section-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)) ,
+ ( eq-htpy-map-short-function-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( comp-short-function-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P))
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P))
+ ( short-map-inv-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)
+ ( short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space))
+ ( short-id-Metric-Space
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)))
+ ( is-retraction-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)))
+
+ iso-metric-pseudocompeletion-cauchy-pseudocompletion-Pseudometric-Space :
+ iso-Precategory
+ ( precategory-short-function-Metric-Space)
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ iso-metric-pseudocompeletion-cauchy-pseudocompletion-Pseudometric-Space =
+ ( short-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space ,
+ is-iso-map-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space)
+```
+
+### The equality between the Cauchy precompletion of the Cauchy pseudocompletion of a pseudometric space and its Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ eq-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space :
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P) =
+ ( cauchy-precompletion-Pseudometric-Space P)
+ eq-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space =
+ eq-isometric-equiv-Metric-Space'
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-equiv-isometric-equiv-iso-short-function-Metric-Space'
+ ( cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( iso-metric-pseudocompeletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)))
+```
+
+### A Cauchy approximation in the Cauchy precompletion of a pseudometric space is convergent if and only if it has a lift its Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ ( u :
+ cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P))
+ where
+
+ is-convergent-has-lift-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ has-lift-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u) →
+ is-convergent-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( u)
+ is-convergent-has-lift-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ sim-lift =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( is-convergent-prop-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ in do
+ ( v , u~[v]) ← sim-lift
+ let
+ ( lim-v , is-lim-v) =
+ has-limit-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
+ ( P)
+ ( v)
+
+ lim-u =
+ map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( lim-v)
+
+ is-lim[v]-lim-u :
+ is-limit-cauchy-approximation-Metric-Space
+ ( metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( map-metric-quotient-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( v))
+ ( lim-u)
+ is-lim[v]-lim-u =
+ preserves-limits-map-metric-quotient-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( v)
+ ( lim-v)
+ ( is-lim-v)
+
+ [lim-u] =
+ const-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( lim-u)
+
+ u~[lim-u] :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P))
+ ( u)
+ ( [lim-u])
+ u~[lim-u] =
+ transitive-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P))
+ ( u)
+ ( map-metric-quotient-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( v))
+ ( [lim-u])
+ ( sim-const-is-limit-cauchy-approximation-Pseudometric-Space
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( map-metric-quotient-cauchy-approximation-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( v))
+ ( lim-u)
+ ( is-lim[v]-lim-u))
+ ( u~[v])
+ ( ( lim-u) ,
+ ( is-limit-sim-const-cauchy-approximation-Pseudometric-Space
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( u)
+ ( lim-u)
+ ( u~[lim-u])))
+
+ iff-has-lift-is-convergent-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ is-convergent-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( u) ↔
+ has-lift-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)
+ pr1
+ iff-has-lift-is-convergent-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ =
+ has-lift-is-convergent-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)
+ pr2
+ iff-has-lift-is-convergent-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ =
+ is-convergent-has-lift-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+
+ equiv-has-lift-is-convergent-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ is-convergent-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( u) ≃
+ has-lift-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)
+ equiv-has-lift-is-convergent-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ =
+ equiv-iff
+ ( is-convergent-prop-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( has-lift-prop-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u))
+ ( has-lift-is-convergent-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u))
+ ( is-convergent-has-lift-cauchy-approximation-cauchy-precompletion-Pseudometric-Space)
+```
+
+### Images of Cauchy approximations in a pseudometric space converge in its Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ (u : cauchy-approximation-Pseudometric-Space P)
+ where
+
+ is-convergent-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ is-convergent-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ is-convergent-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ =
+ is-convergent-has-lift-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( has-lift-map-quotient-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( isometry-cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)))
+
+ lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ type-cauchy-precompletion-Pseudometric-Space P
+ lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space =
+ pr1
+ is-convergent-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+
+ is-limit-lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ is-limit-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space)
+ is-limit-lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ =
+ pr2
+ is-convergent-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+```
+
+### The Cauchy precompletion of a pseudometric space is complete if and only if all its Cauchy approximations have a lift in its Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ iff-all-has-lift-is-complete-cauchy-precompletion-Pseudometric-Space :
+ is-complete-Metric-Space (cauchy-precompletion-Pseudometric-Space P) ↔
+ ( ( u : cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)) →
+ has-lift-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u))
+ pr1 iff-all-has-lift-is-complete-cauchy-precompletion-Pseudometric-Space H u =
+ has-lift-is-convergent-cauchy-approximation-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)
+ ( H u)
+ pr2 iff-all-has-lift-is-complete-cauchy-precompletion-Pseudometric-Space K u =
+ is-convergent-has-lift-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( u)
+ ( K u)
+```
+
+### Induced short map from the Cauchy precompletion to a complete metric space
+
+```agda
+module _
+ { l1 l2 l3 l4 : Level} (P : Pseudometric-Space l1 l2)
+ ( C : Complete-Metric-Space l3 l4)
+ where
+
+ short-map-short-function-complete-metric-space-cauchy-precompletion-Pseudometric-Space :
+ short-function-Pseudometric-Space
+ ( P)
+ ( pseudometric-space-Complete-Metric-Space C) →
+ short-function-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( metric-space-Complete-Metric-Space C)
+ short-map-short-function-complete-metric-space-cauchy-precompletion-Pseudometric-Space
+ f =
+ short-map-short-function-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( metric-space-Complete-Metric-Space C)
+ ( comp-short-function-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Complete-Metric-Space C))
+ ( pseudometric-space-Complete-Metric-Space C)
+ ( short-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( metric-space-Complete-Metric-Space C)
+ ( is-complete-metric-space-Complete-Metric-Space C))
+ ( short-map-cauchy-approximation-short-function-Pseudometric-Space
+ ( P)
+ ( pseudometric-space-Complete-Metric-Space C)
+ ( f)))
+```
+
+### Induced isometry from the Cauchy precompletion into a complete metric space
+
+```agda
+module _
+ { l1 l2 l3 l4 : Level} (P : Pseudometric-Space l1 l2)
+ ( C : Complete-Metric-Space l3 l4)
+ where
+
+ isometry-map-isometry-complete-metric-space-cauchy-precompletion-Pseudometric-Space :
+ isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-space-Complete-Metric-Space C) →
+ isometry-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( metric-space-Complete-Metric-Space C)
+ isometry-map-isometry-complete-metric-space-cauchy-precompletion-Pseudometric-Space
+ f =
+ isometry-map-isometry-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( metric-space-Complete-Metric-Space C)
+ ( comp-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Complete-Metric-Space C))
+ ( pseudometric-space-Complete-Metric-Space C)
+ ( isometry-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( metric-space-Complete-Metric-Space C)
+ ( is-complete-metric-space-Complete-Metric-Space C))
+ ( isometry-map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-space-Complete-Metric-Space C)
+ ( f)))
+```
+
+### The image of a Cauchy approximation in the Cauchy precompletion converges to its image by the quotient map
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ (u : cauchy-approximation-Pseudometric-Space P)
+ where
+
+ sim-const-map-isometry-cauchy-precompletion-Pseudometric-Space :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P))
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( const-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)))
+ sim-const-map-isometry-cauchy-precompletion-Pseudometric-Space d α β =
+ preserves-neighborhood-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P))
+ ( α +ℚ⁺ β +ℚ⁺ d)
+ ( const-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( map-cauchy-approximation-Pseudometric-Space P u α))
+ ( u)
+ ( λ ε δ →
+ monotonic-neighborhood-Pseudometric-Space
+ ( P)
+ ( map-cauchy-approximation-Pseudometric-Space P u α)
+ ( map-cauchy-approximation-Pseudometric-Space P u δ)
+ ( α +ℚ⁺ δ)
+ ( ( ε +ℚ⁺ δ) +ℚ⁺ (α +ℚ⁺ β +ℚ⁺ d))
+ ( lemma-le α δ ε β d)
+ ( is-cauchy-approximation-map-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( u)
+ ( α)
+ ( δ)))
+ where
+
+ lemma-le :
+ (a b c d e : ℚ⁺) →
+ le-ℚ⁺
+ ( a +ℚ⁺ b)
+ ( (c +ℚ⁺ b) +ℚ⁺ (a +ℚ⁺ d +ℚ⁺ e))
+ lemma-le a b c d e =
+ tr
+ ( λ u → le-ℚ⁺ u ((c +ℚ⁺ b) +ℚ⁺ (a +ℚ⁺ d +ℚ⁺ e)))
+ ( commutative-add-ℚ⁺ b a)
+ ( preserves-le-add-ℚ
+ { rational-ℚ⁺ b}
+ { rational-ℚ⁺ (c +ℚ⁺ b)}
+ { rational-ℚ⁺ a}
+ { rational-ℚ⁺ (a +ℚ⁺ d +ℚ⁺ e)}
+ ( le-right-add-ℚ⁺ c b)
+ ( transitive-le-ℚ⁺
+ ( a)
+ ( a +ℚ⁺ d)
+ ( a +ℚ⁺ d +ℚ⁺ e)
+ ( le-left-add-ℚ⁺ (a +ℚ⁺ d) e)
+ ( le-left-add-ℚ⁺ a d)))
+
+ is-limit-map-isometry-cauchy-pseudocompletion-cauchy-precompletion-Pseudometric-Space :
+ is-limit-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u))
+ is-limit-map-isometry-cauchy-pseudocompletion-cauchy-precompletion-Pseudometric-Space
+ =
+ is-limit-sim-const-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-cauchy-pseudocompletion-Pseudometric-Space
+ ( P))
+ ( u))
+ ( sim-const-map-isometry-cauchy-precompletion-Pseudometric-Space)
+```
+
+### Any point of the Cauchy precompletion is the limit of the image of a Cauchy approximation
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ where
+
+ is-limit-is-in-class-cauchy-precompletion-Pseudometric-Space :
+ (X : type-cauchy-precompletion-Pseudometric-Space P) →
+ (x : cauchy-approximation-Pseudometric-Space P) →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X)
+ ( x) →
+ is-limit-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( x))
+ ( X)
+ is-limit-is-in-class-cauchy-precompletion-Pseudometric-Space X x x∈X =
+ tr
+ ( is-limit-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( x)))
+ ( eq-map-is-in-class-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( X)
+ ( x∈X))
+ ( is-limit-map-isometry-cauchy-pseudocompletion-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( x))
+```
+
+### The limit in the Cauchy precompletion of a Cauchy approximation in a Pseudometric space is its quotient
+
+```agda
+module _
+ {l1 l2 : Level} (P : Pseudometric-Space l1 l2)
+ (u : cauchy-approximation-Pseudometric-Space P)
+ where
+
+ eq-map-quotient-lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space :
+ ( lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( u)) =
+ ( map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u))
+ eq-map-quotient-lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ =
+ all-eq-is-limit-cauchy-approximation-Metric-Space
+ ( cauchy-precompletion-Pseudometric-Space P)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ ( isometry-cauchy-precompletion-Pseudometric-Space P)
+ ( u))
+ ( lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( u))
+ ( map-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u))
+ ( is-limit-lim-map-isometry-cauchy-approximation-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( u))
+ ( is-limit-map-isometry-cauchy-pseudocompletion-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( u))
+```
+
+-- TODO
+
+-- ### If ACC holds then cauchy precompletions are complete
diff --git a/src/metric-spaces/cauchy-pseudocompletion-of-metric-spaces.lagda.md b/src/metric-spaces/cauchy-pseudocompletion-of-metric-spaces.lagda.md
index 9dad3ad654..2cdba77681 100644
--- a/src/metric-spaces/cauchy-pseudocompletion-of-metric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-pseudocompletion-of-metric-spaces.lagda.md
@@ -437,3 +437,103 @@ module _
( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space u)
( is-limit-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space u)
```
+
+### The isometry from the Cauchy pseudocompletion of a complete metric space to its limit
+
+```agda
+module _
+ {l1 l2 : Level} (M : Metric-Space l1 l2)
+ (is-complete-M : is-complete-Metric-Space M)
+ where
+
+ abstract
+ reflects-neighborhood-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space :
+ (δ : ℚ⁺) →
+ (u v : cauchy-approximation-Metric-Space M) →
+ neighborhood-Metric-Space
+ ( M)
+ ( δ)
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( u))
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( v)) →
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+ ( δ)
+ ( u)
+ ( v)
+ reflects-neighborhood-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ δ x y Nδ =
+ reflects-neighborhood-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+ { x}
+ { const-cauchy-approximation-Metric-Space
+ ( M)
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( x))}
+ { y}
+ { const-cauchy-approximation-Metric-Space
+ ( M)
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( y))}
+ ( sim-const-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( x))
+ ( sim-const-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( y))
+ ( δ)
+ ( preserves-neighborhood-map-isometry-Pseudometric-Space
+ ( pseudometric-Metric-Space M)
+ ( cauchy-pseudocompletion-Metric-Space M)
+ ( isometry-cauchy-pseudocompletion-Metric-Space M)
+ ( δ)
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( x))
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( y))
+ ( Nδ))
+
+ is-isometry-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space :
+ is-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+ ( pseudometric-Metric-Space M)
+ ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M))
+ is-isometry-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space d x y =
+ ( ( is-short-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)
+ ( d)
+ ( x)
+ ( y)) ,
+ ( reflects-neighborhood-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( d)
+ ( x)
+ ( y)))
+
+ isometry-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+ ( pseudometric-Metric-Space M)
+ isometry-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space =
+ ( ( map-lim-cauchy-pseudocompletion-is-complete-Metric-Space
+ ( M)
+ ( is-complete-M)) ,
+ ( is-isometry-map-lim-cauchy-pseudocompletion-is-complete-Metric-Space))
+```
diff --git a/src/metric-spaces/cauchy-pseudocompletion-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-pseudocompletion-of-pseudometric-spaces.lagda.md
index 5bc301fcc1..d4b849e877 100644
--- a/src/metric-spaces/cauchy-pseudocompletion-of-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-pseudocompletion-of-pseudometric-spaces.lagda.md
@@ -412,6 +412,64 @@ module _
( λ d → H d α β)
```
+### Similarity in the Cauchy pseudocompletion preserves and reflects limits
+
+```agda
+module _
+ {l1 l2 : Level} (M : Pseudometric-Space l1 l2)
+ (u v : cauchy-approximation-Pseudometric-Space M)
+ (x : type-Pseudometric-Space M)
+ where
+
+ has-same-limit-sim-cauchy-approximation-Pseudometric-Space :
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+ ( u)
+ ( v) →
+ is-limit-cauchy-approximation-Pseudometric-Space M u x →
+ is-limit-cauchy-approximation-Pseudometric-Space M v x
+ has-same-limit-sim-cauchy-approximation-Pseudometric-Space u~v lim-u =
+ is-limit-sim-const-cauchy-approximation-Pseudometric-Space
+ ( M)
+ ( v)
+ ( x)
+ ( transitive-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+ ( v)
+ ( u)
+ ( const-cauchy-approximation-Pseudometric-Space M x)
+ ( sim-const-is-limit-cauchy-approximation-Pseudometric-Space
+ ( M)
+ ( u)
+ ( x)
+ ( lim-u))
+ ( inv-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+ ( u~v)))
+
+ sim-has-same-limit-cauchy-approximation-Pseudometric-Space :
+ is-limit-cauchy-approximation-Pseudometric-Space M u x →
+ is-limit-cauchy-approximation-Pseudometric-Space M v x →
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+ ( u)
+ ( v)
+ sim-has-same-limit-cauchy-approximation-Pseudometric-Space lim-u lim-v =
+ transitive-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+ ( u)
+ ( const-cauchy-approximation-Pseudometric-Space M x)
+ ( v)
+ ( inv-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+ ( sim-const-is-limit-cauchy-approximation-Pseudometric-Space
+ ( M)
+ ( v)
+ ( x)
+ ( lim-v)))
+ ( sim-const-is-limit-cauchy-approximation-Pseudometric-Space M u x lim-u)
+```
+
### Any Cauchy approximation in the Cauchy pseudocompletion of a pseudometric space has a limit
```agda
@@ -772,12 +830,12 @@ module _
(f : short-function-Pseudometric-Space A B)
where
- is-short-map-short-function-cauchy-approximation-Pseudometric-Space :
+ is-short-map-cauchy-approximation-short-function-Pseudometric-Space :
is-short-function-Pseudometric-Space
( cauchy-pseudocompletion-Pseudometric-Space A)
( cauchy-pseudocompletion-Pseudometric-Space B)
- ( map-short-function-cauchy-approximation-Pseudometric-Space A B f)
- is-short-map-short-function-cauchy-approximation-Pseudometric-Space
+ ( map-cauchy-approximation-short-function-Pseudometric-Space A B f)
+ is-short-map-cauchy-approximation-short-function-Pseudometric-Space
d x y Nxy α β =
is-short-map-short-function-Pseudometric-Space A B f
( α +ℚ⁺ β +ℚ⁺ d)
@@ -785,13 +843,95 @@ module _
( map-cauchy-approximation-Pseudometric-Space A y β)
( Nxy α β)
- short-map-short-function-cauchy-approximation-Pseudometric-Space :
+ short-map-cauchy-approximation-short-function-Pseudometric-Space :
short-function-Pseudometric-Space
( cauchy-pseudocompletion-Pseudometric-Space A)
( cauchy-pseudocompletion-Pseudometric-Space B)
- short-map-short-function-cauchy-approximation-Pseudometric-Space =
- ( map-short-function-cauchy-approximation-Pseudometric-Space A B f ,
- is-short-map-short-function-cauchy-approximation-Pseudometric-Space)
+ short-map-cauchy-approximation-short-function-Pseudometric-Space =
+ ( map-cauchy-approximation-short-function-Pseudometric-Space A B f ,
+ is-short-map-cauchy-approximation-short-function-Pseudometric-Space)
+```
+
+### The action of isometries on Cauchy approximations is an isometry
+
+```agda
+module _
+ {l1 l2 l1' l2' : Level}
+ (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2')
+ (f : isometry-Pseudometric-Space A B)
+ where abstract
+
+ preserves-neighborhood-map-cauchy-approximation-isometry-Pseudometric-Space :
+ (d : ℚ⁺) →
+ (x y : cauchy-approximation-Pseudometric-Space A) →
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space A)
+ ( d)
+ ( x)
+ ( y) →
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space B)
+ ( d)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space A B f x)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space A B f y)
+ preserves-neighborhood-map-cauchy-approximation-isometry-Pseudometric-Space =
+ is-short-map-cauchy-approximation-short-function-Pseudometric-Space
+ ( A)
+ ( B)
+ ( short-isometry-Pseudometric-Space A B f)
+
+ reflects-neighborhood-map-cauchy-approximation-isometry-Pseudometric-Space :
+ (d : ℚ⁺) →
+ (x y : cauchy-approximation-Pseudometric-Space A) →
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space B)
+ ( d)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space A B f x)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space A B f y) →
+ neighborhood-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space A)
+ ( d)
+ ( x)
+ ( y)
+ reflects-neighborhood-map-cauchy-approximation-isometry-Pseudometric-Space
+ d x y Nxy α β =
+ reflects-neighborhood-map-isometry-Pseudometric-Space
+ ( A)
+ ( B)
+ ( f)
+ ( α +ℚ⁺ β +ℚ⁺ d)
+ ( map-cauchy-approximation-Pseudometric-Space A x α)
+ ( map-cauchy-approximation-Pseudometric-Space A y β)
+ ( Nxy α β)
+
+ is-isometry-map-cauchy-approximation-isometry-Pseudometric-Space :
+ is-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space A)
+ ( cauchy-pseudocompletion-Pseudometric-Space B)
+ ( map-cauchy-approximation-isometry-Pseudometric-Space A B f)
+ is-isometry-map-cauchy-approximation-isometry-Pseudometric-Space d x y =
+ ( ( preserves-neighborhood-map-cauchy-approximation-isometry-Pseudometric-Space
+ ( d)
+ ( x)
+ ( y)) ,
+ ( reflects-neighborhood-map-cauchy-approximation-isometry-Pseudometric-Space
+ ( d)
+ ( x)
+ ( y)))
+
+module _
+ {l1 l2 l1' l2' : Level}
+ (A : Pseudometric-Space l1 l2) (B : Pseudometric-Space l1' l2')
+ (f : isometry-Pseudometric-Space A B)
+ where
+
+ isometry-map-cauchy-approximation-isometry-Pseudometric-Space :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space A)
+ ( cauchy-pseudocompletion-Pseudometric-Space B)
+ isometry-map-cauchy-approximation-isometry-Pseudometric-Space =
+ ( map-cauchy-approximation-isometry-Pseudometric-Space A B f ,
+ is-isometry-map-cauchy-approximation-isometry-Pseudometric-Space A B f)
```
### The image of a Cauchy approximation in the Cauchy pseudocompletion is convergent
@@ -805,7 +945,7 @@ module _
is-limit-map-cauchy-approximation-cauchy-pseudocompletion-Ppseudometric-Space :
is-limit-cauchy-approximation-Pseudometric-Space
( cauchy-pseudocompletion-Pseudometric-Space M)
- ( map-short-function-cauchy-approximation-Pseudometric-Space
+ ( map-cauchy-approximation-short-function-Pseudometric-Space
( M)
( cauchy-pseudocompletion-Pseudometric-Space M)
( short-map-cauchy-pseudocompletion-Pseudometric-Space M)
@@ -839,7 +979,7 @@ module _
sim-Pseudometric-Space
( cauchy-pseudocompletion-Pseudometric-Space
( cauchy-pseudocompletion-Pseudometric-Space M))
- ( map-short-function-cauchy-approximation-Pseudometric-Space
+ ( map-cauchy-approximation-short-function-Pseudometric-Space
( M)
( cauchy-pseudocompletion-Pseudometric-Space M)
( short-map-cauchy-pseudocompletion-Pseudometric-Space M)
@@ -850,7 +990,7 @@ module _
sim-map-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space =
sim-const-is-limit-cauchy-approximation-Pseudometric-Space
( cauchy-pseudocompletion-Pseudometric-Space M)
- ( map-short-function-cauchy-approximation-Pseudometric-Space
+ ( map-cauchy-approximation-short-function-Pseudometric-Space
( M)
( cauchy-pseudocompletion-Pseudometric-Space M)
( short-map-cauchy-pseudocompletion-Pseudometric-Space M)
diff --git a/src/metric-spaces/complete-metric-extensions-of-pseudometric-spaces.lagda.md b/src/metric-spaces/complete-metric-extensions-of-pseudometric-spaces.lagda.md
new file mode 100644
index 0000000000..12f8df9499
--- /dev/null
+++ b/src/metric-spaces/complete-metric-extensions-of-pseudometric-spaces.lagda.md
@@ -0,0 +1,164 @@
+# Complete metric extensions of pseudometric spaces
+
+```agda
+module metric-spaces.complete-metric-extensions-of-pseudometric-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-relations
+open import foundation.binary-transport
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.existential-quantification
+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.set-quotients
+open import foundation.sets
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-approximations-metric-quotients-of-pseudometric-spaces
+open import metric-spaces.cauchy-approximations-metric-spaces
+open import metric-spaces.cauchy-approximations-pseudometric-spaces
+open import metric-spaces.cauchy-precompletion-of-pseudometric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-metric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-pseudometric-spaces
+open import metric-spaces.complete-metric-spaces
+open import metric-spaces.convergent-cauchy-approximations-metric-spaces
+open import metric-spaces.equality-of-metric-spaces
+open import metric-spaces.functions-metric-spaces
+open import metric-spaces.functions-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-extensions-of-pseudometric-spaces
+open import metric-spaces.metric-quotients-of-pseudometric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.precategory-of-metric-spaces-and-short-functions
+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
+
+A [metric extension](metric-spaces.metric-extensions-of-pseudometric-spaces.md)
+is
+{{#concept "complete" Disambiguation="metric extension of a pseudometric space Agda=Complete-Metric-Extension}}
+if its target [metric space](metric-spaces.metric-spaces.md) is
+[complete](metric-spaces.complete-metric-spaces.md).
+
+## Definition
+
+### The property of being a complete metric extension
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ where
+
+ is-complete-prop-Metric-Extension : Prop (l3 ⊔ l4)
+ is-complete-prop-Metric-Extension =
+ is-complete-prop-Metric-Space (metric-space-Metric-Extension P M)
+
+ is-complete-Metric-Extension : UU (l3 ⊔ l4)
+ is-complete-Metric-Extension =
+ type-Prop is-complete-prop-Metric-Extension
+
+ is-prop-is-complete-Metric-Extension : is-prop is-complete-Metric-Extension
+ is-prop-is-complete-Metric-Extension =
+ is-prop-type-Prop is-complete-prop-Metric-Extension
+```
+
+### The type of complete metric extensions of a pseudometric space
+
+```agda
+module _
+ {l1 l2 : Level}
+ (l3 l4 : Level)
+ (P : Pseudometric-Space l1 l2)
+ where
+
+ Complete-Metric-Extension : UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4)
+ Complete-Metric-Extension =
+ Σ ( Metric-Extension l3 l4 P)
+ ( is-complete-Metric-Extension P)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Complete-Metric-Extension l3 l4 P)
+ where
+
+ metric-extension-Complete-Meric-Extension : Metric-Extension l3 l4 P
+ metric-extension-Complete-Meric-Extension = pr1 M
+
+ metric-space-Complete-Metric-Extension : Metric-Space l3 l4
+ metric-space-Complete-Metric-Extension =
+ metric-space-Metric-Extension P metric-extension-Complete-Meric-Extension
+
+ type-metric-space-Complete-Metric-Extension : UU l3
+ type-metric-space-Complete-Metric-Extension =
+ type-metric-space-Metric-Extension
+ ( P)
+ ( metric-extension-Complete-Meric-Extension)
+
+ is-complete-metric-space-Complete-Metric-Extension :
+ is-complete-Metric-Space metric-space-Complete-Metric-Extension
+ is-complete-metric-space-Complete-Metric-Extension = pr2 M
+
+ complete-metric-space-Complete-Metric-Extension : Complete-Metric-Space l3 l4
+ complete-metric-space-Complete-Metric-Extension =
+ ( metric-space-Complete-Metric-Extension ,
+ is-complete-metric-space-Complete-Metric-Extension)
+
+ isometry-Complete-Metric-Extension :
+ isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-Metric-Space metric-space-Complete-Metric-Extension)
+ isometry-Complete-Metric-Extension =
+ isometry-Metric-Extension P metric-extension-Complete-Meric-Extension
+```
+
+## Properties
+
+### A complete metric extension of a pseudometric space induces a complete metric extension of its Cauchy precompletion
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Complete-Metric-Extension l3 l4 P)
+ where
+
+ map-complete-metric-extension-cauchy-precompletion-Pseudometric-Space :
+ Complete-Metric-Extension l3 l4
+ ( pseudometric-cauchy-precompletion-Pseudometric-Space P)
+ pr1 map-complete-metric-extension-cauchy-precompletion-Pseudometric-Space =
+ ( ( metric-space-Complete-Metric-Extension P M) ,
+ ( isometry-map-isometry-complete-metric-space-cauchy-precompletion-Pseudometric-Space
+ ( P)
+ ( complete-metric-space-Complete-Metric-Extension P M)
+ ( isometry-Complete-Metric-Extension P M)))
+ pr2 map-complete-metric-extension-cauchy-precompletion-Pseudometric-Space =
+ is-complete-metric-space-Complete-Metric-Extension P M
+```
diff --git a/src/metric-spaces/metric-extensions-of-pseudometric-spaces.lagda.md b/src/metric-spaces/metric-extensions-of-pseudometric-spaces.lagda.md
new file mode 100644
index 0000000000..b0dc1d57f3
--- /dev/null
+++ b/src/metric-spaces/metric-extensions-of-pseudometric-spaces.lagda.md
@@ -0,0 +1,238 @@
+# Metric extensions of pseudometric spaces
+
+```agda
+module metric-spaces.metric-extensions-of-pseudometric-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-relations
+open import foundation.binary-transport
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.existential-quantification
+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.set-quotients
+open import foundation.sets
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-approximations-metric-quotients-of-pseudometric-spaces
+open import metric-spaces.cauchy-approximations-metric-spaces
+open import metric-spaces.cauchy-approximations-pseudometric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-metric-spaces
+open import metric-spaces.cauchy-pseudocompletion-of-pseudometric-spaces
+open import metric-spaces.complete-metric-spaces
+open import metric-spaces.convergent-cauchy-approximations-metric-spaces
+open import metric-spaces.equality-of-metric-spaces
+open import metric-spaces.functions-metric-spaces
+open import metric-spaces.functions-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-quotients-of-pseudometric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.precategory-of-metric-spaces-and-short-functions
+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
+
+A
+{{#concept "metric extension" Disambiguation="of a pseudometric space" Agda=Metric-Extension}}
+of a [pseudometric space](metric-spaces.pseudometric-spaces.md) `P` is a
+[metric space](metric-spaces.metric-spaces.md) `M` together with an
+[isometry](metric-spaces.isometries-pseudometric-spaces.md) `f : P → M`.
+
+## Definition
+
+### Metric extensions of pseudometric spaces
+
+```agda
+module _
+ {l1 l2 : Level} (l3 l4 : Level) (P : Pseudometric-Space l1 l2)
+ where
+
+ Metric-Extension : UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4)
+ Metric-Extension =
+ Σ ( Metric-Space l3 l4)
+ ( isometry-Pseudometric-Space P ∘ pseudometric-Metric-Space)
+```
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ where
+
+ metric-space-Metric-Extension : Metric-Space l3 l4
+ metric-space-Metric-Extension = pr1 M
+
+ pseudometric-space-Metric-Extension : Pseudometric-Space l3 l4
+ pseudometric-space-Metric-Extension =
+ pseudometric-Metric-Space metric-space-Metric-Extension
+
+ type-metric-space-Metric-Extension : UU l3
+ type-metric-space-Metric-Extension =
+ type-Metric-Space metric-space-Metric-Extension
+
+ isometry-Metric-Extension :
+ isometry-Pseudometric-Space P pseudometric-space-Metric-Extension
+ isometry-Metric-Extension = pr2 M
+```
+
+## Properties
+
+### Action of metric extensions on Cauchy approximations
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ where
+
+ isometry-metric-extension-cauchy-approximation-Pseudometric-Space :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ isometry-metric-extension-cauchy-approximation-Pseudometric-Space =
+ isometry-map-cauchy-approximation-isometry-Pseudometric-Space
+ ( P)
+ ( pseudometric-space-Metric-Extension P M)
+ ( isometry-Metric-Extension P M)
+
+ map-metric-extension-cauchy-approximation-Pseudometric-Space :
+ cauchy-approximation-Pseudometric-Space P →
+ cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ map-metric-extension-cauchy-approximation-Pseudometric-Space =
+ map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( isometry-metric-extension-cauchy-approximation-Pseudometric-Space)
+
+ is-isometry-map-metric-extenion-cauchy-approximation-Pseudometric-Space :
+ is-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space)
+ is-isometry-map-metric-extenion-cauchy-approximation-Pseudometric-Space =
+ is-isometry-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( isometry-metric-extension-cauchy-approximation-Pseudometric-Space)
+```
+
+### Adherent points of metric extensions
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ (u : cauchy-approximation-Pseudometric-Space P)
+ (y : type-metric-space-Metric-Extension P M)
+ where
+
+ is-limit-map-metric-extension-prop-cauchy-approximation-Pseudometric-Space :
+ Prop l4
+ is-limit-map-metric-extension-prop-cauchy-approximation-Pseudometric-Space =
+ is-limit-cauchy-approximation-prop-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M u)
+ ( y)
+
+ is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space : UU l4
+ is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space =
+ type-Prop
+ is-limit-map-metric-extension-prop-cauchy-approximation-Pseudometric-Space
+```
+
+### Cauchy approximations converging to the same image in a metric extension are similar in the Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (P : Pseudometric-Space l1 l2)
+ (M : Metric-Extension l3 l4 P)
+ (y : type-metric-space-Metric-Extension P M)
+ (u v : cauchy-approximation-Pseudometric-Space P)
+ where
+
+ lemma-sim-is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space :
+ is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( u)
+ ( y) →
+ is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( v)
+ ( y) →
+ sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( u)
+ ( v)
+ lemma-sim-is-limit-map-metric-extension-cauchy-approximation-Pseudometric-Space
+ lim-u lim-v =
+ reflects-sim-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space P)
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( isometry-metric-extension-cauchy-approximation-Pseudometric-Space P M)
+ ( u)
+ ( v)
+ ( transitive-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M u)
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( y))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M v)
+ ( symmetric-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Extension P M))
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M v)
+ ( const-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( y))
+ ( sim-const-is-limit-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space
+ ( P)
+ ( M)
+ ( v))
+ ( y)
+ ( lim-v)))
+ ( sim-const-is-limit-cauchy-approximation-Metric-Space
+ ( metric-space-Metric-Extension P M)
+ ( map-metric-extension-cauchy-approximation-Pseudometric-Space P M u)
+ ( y)
+ ( lim-u)))
+```
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 ffecd0aafc..3f48274856 100644
--- a/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/metric-quotients-of-pseudometric-spaces.lagda.md
@@ -386,6 +386,20 @@ module _
map-subtype-metric-quotient-Pseudometric-Space =
inhabitant-equivalence-class-quotient-map-set-quotient
( equivalence-relation-sim-Pseudometric-Space M)
+
+ eq-map-is-in-class-metric-quotient-Pseudometric-Space :
+ (X : type-metric-quotient-Pseudometric-Space M) →
+ {x : type-Pseudometric-Space M} →
+ is-in-class-metric-quotient-Pseudometric-Space
+ ( M)
+ ( X)
+ ( x) →
+ map-metric-quotient-Pseudometric-Space x = X
+ eq-map-is-in-class-metric-quotient-Pseudometric-Space X {x} x∈X =
+ eq-set-quotient-equivalence-class-set-quotient
+ ( equivalence-relation-sim-Pseudometric-Space M)
+ ( X)
+ ( x∈X)
```
### The mapping from a pseudometric space its quotient metric space is an isometry
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 f9caa041d2..168c7d6710 100644
--- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md
@@ -22,6 +22,7 @@ open import foundation.propositions
open import foundation.transport-along-identifications
open import foundation.universe-levels
+open import metric-spaces.isometries-pseudometric-spaces
open import metric-spaces.pseudometric-spaces
open import metric-spaces.rational-neighborhood-relations
open import metric-spaces.short-functions-pseudometric-spaces
@@ -314,15 +315,34 @@ module _
( A : Pseudometric-Space l1 l2)
( B : Pseudometric-Space l1' l2')
( f : short-function-Pseudometric-Space A B)
- where
+ where abstract
+
+ 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)
+```
- abstract
- 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)
+### Isometries between pseudometric spaces reflect similarity
+
+```agda
+module _
+ { l1 l2 l1' l2' : Level}
+ ( A : Pseudometric-Space l1 l2)
+ ( B : Pseudometric-Space l1' l2')
+ ( f : isometry-Pseudometric-Space A B)
+ where abstract
+
+ reflects-sim-map-isometry-Pseudometric-Space :
+ ( x y : type-Pseudometric-Space A) →
+ ( sim-Pseudometric-Space B
+ ( map-isometry-Pseudometric-Space A B f x)
+ ( map-isometry-Pseudometric-Space A B f y)) →
+ ( sim-Pseudometric-Space A x y)
+ reflects-sim-map-isometry-Pseudometric-Space x y fx~fy d =
+ reflects-neighborhood-map-isometry-Pseudometric-Space A B f d x y (fx~fy d)
```