diff --git a/config/codespell-ignore.txt b/config/codespell-ignore.txt
index 79a8f895b86..e060a3a5f41 100644
--- a/config/codespell-ignore.txt
+++ b/config/codespell-ignore.txt
@@ -1,3 +1,4 @@
+Nd
Tim
blacklist
couldn
diff --git a/src/analysis.lagda.md b/src/analysis.lagda.md
index bce22009164..74ccc276304 100644
--- a/src/analysis.lagda.md
+++ b/src/analysis.lagda.md
@@ -3,13 +3,20 @@
```agda
module analysis where
+open import analysis.abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups public
+open import analysis.addition-cauchy-approximations-metric-abelian-groups public
open import analysis.alternation-sequences-metric-abelian-groups public
+open import analysis.cauchy-approximations-metric-abelian-groups public
+open import analysis.cauchy-pseudocompletions-metric-abelian-groups public
open import analysis.complete-metric-abelian-groups public
open import analysis.convergent-series-complete-metric-abelian-groups public
open import analysis.convergent-series-metric-abelian-groups public
open import analysis.limits-of-sequences-metric-abelian-groups public
open import analysis.metric-abelian-groups public
+open import analysis.metric-abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups public
open import analysis.metric-abelian-groups-of-uniformly-continuous-maps-into-metric-abelian-groups public
+open import analysis.metric-quotients-cauchy-pseudocompletions-metric-abelian-groups public
+open import analysis.negation-cauchy-approximations-metric-abelian-groups public
open import analysis.sequences-metric-abelian-groups public
open import analysis.series-complete-metric-abelian-groups public
open import analysis.series-metric-abelian-groups public
diff --git a/src/analysis/abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md b/src/analysis/abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..a5ae7f941e6
--- /dev/null
+++ b/src/analysis/abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md
@@ -0,0 +1,461 @@
+# The abelian groups of the metric quotients of Cauchy pseudocompletions of metric abelian groups
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module analysis.abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.addition-cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.metric-abelian-groups
+open import analysis.metric-quotients-cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.negation-cauchy-approximations-metric-abelian-groups
+
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-functoriality-set-quotients
+open import foundation.dependent-pair-types
+open import foundation.functoriality-set-quotients
+open import foundation.identity-types
+open import foundation.set-quotients
+open import foundation.sets
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import group-theory.abelian-groups
+open import group-theory.groups
+open import group-theory.monoids
+open import group-theory.semigroups
+
+open import metric-spaces.similarity-of-elements-pseudometric-spaces
+```
+
+
+
+## Idea
+
+The [metric quotient](metric-spaces.metric-quotients-of-pseudometric-spaces.md)
+of the
+[Cauchy pseudocompletion](analysis.cauchy-pseudocompletions-metric-abelian-groups.md)
+of a [metric abelian group](analysis.metric-abelian-groups.md) forms an
+[abelian group](group-theory.abelian-groups.md).
+
+## Definition
+
+### Addition in the metric quotient
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ binary-hom-add-cauchy-pseudocompletion-Metric-Ab :
+ binary-hom-equivalence-relation
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ binary-hom-add-cauchy-pseudocompletion-Metric-Ab =
+ ( add-cauchy-approximation-Metric-Ab G ,
+ λ {x} {x'} {y} {y'} →
+ preserves-sim-add-cauchy-approximation-Metric-Ab G {x} {x'} {y} {y'})
+
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G →
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G →
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ binary-map-set-quotient
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( binary-hom-add-cauchy-pseudocompletion-Metric-Ab)
+```
+
+## Properties
+
+### The embedding in the metric quotient of the Cauchy pseudocompletion preserves addition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x y : cauchy-approximation-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x))
+ ( in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( y)) =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( add-cauchy-approximation-Metric-Ab G x y)
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ compute-binary-map-set-quotient
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( binary-hom-add-cauchy-pseudocompletion-Metric-Ab G)
+
+ add-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x y : type-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( in-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x)
+ ( in-metric-quotient-cauchy-pseudocompletion-Metric-Ab G y) =
+ in-metric-quotient-cauchy-pseudocompletion-Metric-Ab G (add-Metric-Ab G x y)
+ add-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab x y =
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( const-cauchy-approximation-Metric-Ab G x)
+ ( const-cauchy-approximation-Metric-Ab G y) ∙
+ apply-effectiveness-quotient-map'
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( sim-add-const-cauchy-approximation-Metric-Ab G x y)
+```
+
+### Addition in the metric quotient of the Cauchy pseudocompletion is associative
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ associative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x y z : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x y)
+ ( z) =
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( x)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G y z)
+ associative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ triple-induction-set-quotient'
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( λ x y z →
+ Id-Prop
+ ( set-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x y)
+ ( z))
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( x)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G y z)))
+ ( λ x y z →
+ let
+ in-approx-G =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ _+~G_ = add-cauchy-approximation-Metric-Ab G
+ _+∙G_ = add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ in
+ equational-reasoning
+ (in-approx-G x +∙G in-approx-G y) +∙G in-approx-G z
+ = in-approx-G (x +~G y) +∙G in-approx-G z
+ by
+ ap-binary
+ ( _+∙G_)
+ ( add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x)
+ ( y))
+ ( refl)
+ = in-approx-G ((x +~G y) +~G z)
+ by
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x +~G y)
+ ( z)
+ = in-approx-G (x +~G (y +~G z))
+ by
+ apply-effectiveness-quotient-map'
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab
+ ( G))
+ ( sim-associative-add-cauchy-approximation-Metric-Ab G x y z)
+ = in-approx-G x +∙G in-approx-G (y +~G z)
+ by
+ inv
+ ( add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x)
+ ( y +~G z))
+ = in-approx-G x +∙G (in-approx-G y +∙G in-approx-G z)
+ by
+ ap-binary
+ ( _+∙G_)
+ ( refl)
+ ( inv
+ ( add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( y)
+ ( z))))
+```
+
+### Addition in the metric quotient of the Cauchy pseudocompletion is commutative
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ commutative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x y : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x y =
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G y x
+ commutative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ double-induction-set-quotient'
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( λ x y →
+ Id-Prop
+ ( set-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x y)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G y x))
+ ( λ x y →
+ let
+ in-approx-G =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ _+~G_ = add-cauchy-approximation-Metric-Ab G
+ _+∙G_ = add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ in
+ equational-reasoning
+ in-approx-G x +∙G in-approx-G y
+ = in-approx-G (x +~G y)
+ by
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x)
+ ( y)
+ = in-approx-G (y +~G x)
+ by
+ ap
+ ( in-approx-G)
+ ( commutative-add-cauchy-approximation-Metric-Ab G x y)
+ = in-approx-G y +∙G in-approx-G x
+ by
+ inv
+ ( add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( y)
+ ( x)))
+```
+
+### Unit laws of addition in the metric quotient of the Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ left-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( x) =
+ x
+ left-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ induction-set-quotient
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( λ x →
+ Id-Prop
+ ( set-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( x))
+ ( x))
+ ( λ x →
+ let
+ in-approx-G =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ _+~G_ = add-cauchy-approximation-Metric-Ab G
+ _+∙G_ = add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ 0-approx-G = zero-cauchy-approximation-Metric-Ab G
+ in
+ equational-reasoning
+ in-approx-G 0-approx-G +∙G in-approx-G x
+ = in-approx-G (0-approx-G +~G x)
+ by
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( 0-approx-G)
+ ( x)
+ = in-approx-G x
+ by
+ apply-effectiveness-quotient-map'
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab
+ ( G))
+ ( sim-left-unit-law-add-cauchy-approximation-Metric-Ab G x))
+
+ right-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( x)
+ ( zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) =
+ x
+ right-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab x =
+ commutative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G _ _ ∙
+ left-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab x
+```
+
+### Negation in the metric quotient of the Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ hom-neg-cauchy-pseudocompletion-Metric-Ab :
+ hom-equivalence-relation
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ hom-neg-cauchy-pseudocompletion-Metric-Ab =
+ ( neg-cauchy-approximation-Metric-Ab G ,
+ preserves-sim-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( isometry-neg-cauchy-pseudocompletion-Metric-Ab G)
+ ( _)
+ ( _))
+
+ neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G →
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ map-set-quotient
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( hom-neg-cauchy-pseudocompletion-Metric-Ab)
+
+ abstract
+ neg-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x : cauchy-approximation-Metric-Ab G) →
+ neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x)) =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( neg-cauchy-approximation-Metric-Ab G x)
+ neg-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ coherence-square-map-set-quotient
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( hom-neg-cauchy-pseudocompletion-Metric-Ab)
+```
+
+### Inverse laws of addition in the metric quotient of the Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ left-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x)
+ ( x) =
+ zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ left-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ induction-set-quotient
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( λ x →
+ Id-Prop
+ ( set-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x)
+ ( x))
+ ( zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G))
+ ( λ x →
+ let
+ in-approx-G =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ _+~G_ = add-cauchy-approximation-Metric-Ab G
+ _+∙G_ = add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ neg-∙G = neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ neg-G = neg-cauchy-approximation-Metric-Ab G
+ 0-approx-G = zero-cauchy-approximation-Metric-Ab G
+ in
+ equational-reasoning
+ neg-∙G (in-approx-G x) +∙G in-approx-G x
+ = in-approx-G (neg-G x) +∙G in-approx-G x
+ by
+ ap-binary
+ ( _+∙G_)
+ ( neg-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x))
+ ( refl)
+ = in-approx-G (neg-G x +~G x)
+ by
+ add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( neg-G x)
+ ( x)
+ = in-approx-G 0-approx-G
+ by
+ ap
+ ( in-approx-G)
+ ( left-inverse-law-add-cauchy-approximation-Metric-Ab G x))
+
+ right-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ ( x)
+ ( neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x) =
+ zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ right-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab x =
+ commutative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G _ _ ∙
+ left-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab x
+```
+
+### The metric quotient of the Cauchy pseudocompletion forms an abelian group
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ Semigroup (l1 ⊔ l2)
+ semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( set-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ associative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+
+ is-unital-semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ is-unital-Semigroup
+ ( semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+ is-unital-semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ left-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ right-unit-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+
+ group-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ Group (l1 ⊔ l2)
+ group-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab ,
+ is-unital-semigroup-metric-quotient-cauchy-pseudocompletion-Metric-Ab ,
+ neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ left-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ right-inverse-law-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+
+ ab-metric-quotient-cauchy-pseudocompletion-Metric-Ab : Ab (l1 ⊔ l2)
+ ab-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( group-metric-quotient-cauchy-pseudocompletion-Metric-Ab ,
+ commutative-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+```
diff --git a/src/analysis/addition-cauchy-approximations-metric-abelian-groups.lagda.md b/src/analysis/addition-cauchy-approximations-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..e1b92eb14ef
--- /dev/null
+++ b/src/analysis/addition-cauchy-approximations-metric-abelian-groups.lagda.md
@@ -0,0 +1,374 @@
+# Addition of Cauchy approximations in metric abelian groups
+
+```agda
+module analysis.addition-cauchy-approximations-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.metric-abelian-groups
+
+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.binary-functoriality-set-quotients
+open import foundation.dependent-pair-types
+open import foundation.function-extensionality
+open import foundation.identity-types
+open import foundation.logical-equivalences
+open import foundation.subtypes
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import metric-spaces.short-maps-pseudometric-spaces
+```
+
+
+
+## Idea
+
+[Cauchy approximations](analysis.cauchy-approximations-metric-abelian-groups.md)
+in [metric abelian groups](analysis.metric-abelian-groups.md) admit an addition
+operation whose properties resemble an
+[abelian group](group-theory.abelian-groups.md) with respect to the
+[similarity relationship](metric-spaces.similarity-of-elements-pseudometric-spaces.md)
+of the
+[Cauchy pseudocompletion of the metric abelian group](analysis.cauchy-pseudocompletions-metric-abelian-groups.md).
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ ((x , is-approx-x) (y , is-approx-y) :
+ cauchy-approximation-Metric-Ab G)
+ where
+
+ opaque
+ map-add-cauchy-approximation-Metric-Ab :
+ ℚ⁺ → type-Metric-Ab G
+ map-add-cauchy-approximation-Metric-Ab ε =
+ let (δ , _) = bound-double-le-ℚ⁺ ε in add-Metric-Ab G (x δ) (y δ)
+
+ abstract opaque
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ is-cauchy-approximation-map-add-cauchy-approximation-Metric-Ab :
+ is-cauchy-approximation-Metric-Ab G map-add-cauchy-approximation-Metric-Ab
+ is-cauchy-approximation-map-add-cauchy-approximation-Metric-Ab δ ε =
+ let
+ (δ' , 2δ'<δ) = bound-double-le-ℚ⁺ δ
+ (ε' , 2ε'<ε) = bound-double-le-ℚ⁺ ε
+ in
+ monotonic-neighborhood-Metric-Ab G
+ ( add-Metric-Ab G (x δ') (y δ'))
+ ( add-Metric-Ab G (x ε') (y ε'))
+ ( (δ' +ℚ⁺ ε') +ℚ⁺ (δ' +ℚ⁺ ε'))
+ ( δ +ℚ⁺ ε)
+ ( concat-eq-le-ℚ⁺
+ { z = δ +ℚ⁺ ε}
+ ( interchange-law-add-add-ℚ⁺ δ' ε' δ' ε')
+ ( preserves-le-add-ℚ 2δ'<δ 2ε'<ε))
+ ( neighborhood-add-Metric-Ab
+ ( G)
+ ( δ' +ℚ⁺ ε')
+ ( δ' +ℚ⁺ ε')
+ ( x δ')
+ ( x ε')
+ ( y δ')
+ ( y ε')
+ ( is-approx-x δ' ε')
+ ( is-approx-y δ' ε'))
+
+ add-cauchy-approximation-Metric-Ab : cauchy-approximation-Metric-Ab G
+ add-cauchy-approximation-Metric-Ab =
+ ( map-add-cauchy-approximation-Metric-Ab ,
+ is-cauchy-approximation-map-add-cauchy-approximation-Metric-Ab)
+```
+
+## Properties
+
+### Addition of Cauchy approximations is a similarity-preserving binary map
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract opaque
+
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ preserves-sim-add-cauchy-approximation-Metric-Ab :
+ preserves-sim-binary-map-equivalence-relation
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( add-cauchy-approximation-Metric-Ab G)
+ preserves-sim-add-cauchy-approximation-Metric-Ab
+ {x , is-approx-x} {x' , is-approx-x'} {y , is-approx-y} {y' , is-approx-y'}
+ x~x' y~y' δ ε θ =
+ let
+ (δ' , 2δ'<δ) = bound-double-le-ℚ⁺ δ
+ (ε' , 2ε'<ε) = bound-double-le-ℚ⁺ ε
+ (θ' , 2θ'<θ) = bound-double-le-ℚ⁺ θ
+ in
+ monotonic-neighborhood-Metric-Ab G
+ ( add-Metric-Ab G (x ε') (y ε'))
+ ( add-Metric-Ab G (x' θ') (y' θ'))
+ ( (ε' +ℚ⁺ θ' +ℚ⁺ δ') +ℚ⁺ (ε' +ℚ⁺ θ' +ℚ⁺ δ'))
+ ( ε +ℚ⁺ θ +ℚ⁺ δ)
+ ( concat-eq-le-ℚ⁺
+ { z = ε +ℚ⁺ θ +ℚ⁺ δ}
+ ( equational-reasoning
+ (ε' +ℚ⁺ θ' +ℚ⁺ δ') +ℚ⁺ (ε' +ℚ⁺ θ' +ℚ⁺ δ')
+ = ((ε' +ℚ⁺ θ') +ℚ⁺ (ε' +ℚ⁺ θ')) +ℚ⁺ (δ' +ℚ⁺ δ')
+ by interchange-law-add-add-ℚ⁺ _ _ _ _
+ = (ε' +ℚ⁺ ε') +ℚ⁺ (θ' +ℚ⁺ θ') +ℚ⁺ (δ' +ℚ⁺ δ')
+ by ap-add-ℚ⁺ (interchange-law-add-add-ℚ⁺ ε' θ' ε' θ') refl)
+ ( preserves-le-add-ℚ
+ ( preserves-le-add-ℚ 2ε'<ε 2θ'<θ)
+ ( 2δ'<δ)))
+ ( neighborhood-add-Metric-Ab
+ ( G)
+ ( ε' +ℚ⁺ θ' +ℚ⁺ δ')
+ ( ε' +ℚ⁺ θ' +ℚ⁺ δ')
+ ( x ε')
+ ( x' θ')
+ ( y ε')
+ ( y' θ')
+ ( x~x' δ' ε' θ')
+ ( y~y' δ' ε' θ'))
+```
+
+### The addition of two constant Cauchy approximations for `x` and `y` is similar to the constant approximation for `x + y`
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract opaque
+
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ sim-add-const-cauchy-approximation-Metric-Ab :
+ (x y : type-Metric-Ab G) →
+ sim-cauchy-pseudocompletion-Metric-Ab G
+ ( add-cauchy-approximation-Metric-Ab G
+ ( const-cauchy-approximation-Metric-Ab G x)
+ ( const-cauchy-approximation-Metric-Ab G y))
+ ( const-cauchy-approximation-Metric-Ab G (add-Metric-Ab G x y))
+ sim-add-const-cauchy-approximation-Metric-Ab x y δ ε θ =
+ refl-neighborhood-Metric-Ab G (ε +ℚ⁺ θ +ℚ⁺ δ) (add-Metric-Ab G x y)
+```
+
+### Addition is associative relative to the similarity relation
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ (ax@(x , is-approx-x) ay@(y , is-approx-y) az@(z , is-approx-z) :
+ cauchy-approximation-Metric-Ab G)
+ where abstract opaque
+
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ sim-associative-add-cauchy-approximation-Metric-Ab :
+ sim-cauchy-pseudocompletion-Metric-Ab G
+ ( add-cauchy-approximation-Metric-Ab G
+ ( add-cauchy-approximation-Metric-Ab G ax ay)
+ ( az))
+ ( add-cauchy-approximation-Metric-Ab G
+ ( ax)
+ ( add-cauchy-approximation-Metric-Ab G ay az))
+ sim-associative-add-cauchy-approximation-Metric-Ab δ ε θ =
+ let
+ (ε' , 2ε'<ε) = bound-double-le-ℚ⁺ ε
+ (ε'' , 2ε''<ε') = bound-double-le-ℚ⁺ ε'
+ (θ' , 2θ'<θ) = bound-double-le-ℚ⁺ θ
+ (θ'' , 2θ''<θ') = bound-double-le-ℚ⁺ θ'
+ xyz1 = add-Metric-Ab G (add-Metric-Ab G (x ε'') (y ε'')) (z ε')
+ xyz2 = add-Metric-Ab G (add-Metric-Ab G (x θ') (y θ'')) (z θ'')
+ in
+ tr
+ ( neighborhood-Metric-Ab G (ε +ℚ⁺ θ +ℚ⁺ δ) xyz1)
+ ( associative-add-Metric-Ab G _ _ _)
+ ( monotonic-neighborhood-Metric-Ab G
+ ( xyz1)
+ ( xyz2)
+ ( (ε'' +ℚ⁺ θ') +ℚ⁺ (ε'' +ℚ⁺ θ'') +ℚ⁺ (ε' +ℚ⁺ θ''))
+ ( ε +ℚ⁺ θ +ℚ⁺ δ)
+ ( concat-eq-le-ℚ⁺
+ { z = ε +ℚ⁺ θ +ℚ⁺ δ}
+ ( equational-reasoning
+ (ε'' +ℚ⁺ θ') +ℚ⁺ (ε'' +ℚ⁺ θ'') +ℚ⁺ (ε' +ℚ⁺ θ'')
+ = ((ε'' +ℚ⁺ ε'') +ℚ⁺ (θ' +ℚ⁺ θ'')) +ℚ⁺ (ε' +ℚ⁺ θ'')
+ by ap-add-ℚ⁺ (interchange-law-add-add-ℚ⁺ _ _ _ _) refl
+ = ((ε'' +ℚ⁺ ε'') +ℚ⁺ ε') +ℚ⁺ ((θ' +ℚ⁺ θ'') +ℚ⁺ θ'')
+ by interchange-law-add-add-ℚ⁺ _ _ _ _
+ = ((ε'' +ℚ⁺ ε'') +ℚ⁺ ε') +ℚ⁺ (θ' +ℚ⁺ (θ'' +ℚ⁺ θ''))
+ by ap-add-ℚ⁺ refl (associative-add-ℚ⁺ _ _ _))
+ ( transitive-le-ℚ⁺
+ ( ((ε'' +ℚ⁺ ε'') +ℚ⁺ ε') +ℚ⁺ (θ' +ℚ⁺ (θ'' +ℚ⁺ θ'')))
+ ( (ε' +ℚ⁺ ε') +ℚ⁺ (θ' +ℚ⁺ θ'))
+ ( ε +ℚ⁺ θ +ℚ⁺ δ)
+ ( transitive-le-ℚ⁺
+ ( (ε' +ℚ⁺ ε') +ℚ⁺ (θ' +ℚ⁺ θ'))
+ ( ε +ℚ⁺ θ)
+ ( ε +ℚ⁺ θ +ℚ⁺ δ)
+ ( le-left-add-ℚ⁺ (ε +ℚ⁺ θ) δ)
+ ( preserves-le-add-ℚ 2ε'<ε 2θ'<θ))
+ ( preserves-le-add-ℚ
+ ( preserves-le-left-add-ℚ _ _ _ 2ε''<ε')
+ ( preserves-le-right-add-ℚ _ _ _ 2θ''<θ'))))
+ ( neighborhood-add-Metric-Ab G
+ ( (ε'' +ℚ⁺ θ') +ℚ⁺ (ε'' +ℚ⁺ θ''))
+ ( ε' +ℚ⁺ θ'')
+ ( add-Metric-Ab G (x ε'') (y ε''))
+ ( add-Metric-Ab G (x θ') (y θ''))
+ ( z ε')
+ ( z θ'')
+ ( neighborhood-add-Metric-Ab G
+ ( ε'' +ℚ⁺ θ')
+ ( ε'' +ℚ⁺ θ'')
+ ( x ε'')
+ ( x θ')
+ ( y ε'')
+ ( y θ'')
+ ( is-approx-x ε'' θ')
+ ( is-approx-y ε'' θ''))
+ ( is-approx-z ε' θ'')))
+```
+
+### Commutativity of addition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ (x y : cauchy-approximation-Metric-Ab G)
+ where abstract opaque
+
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ commutative-add-cauchy-approximation-Metric-Ab :
+ add-cauchy-approximation-Metric-Ab G x y =
+ add-cauchy-approximation-Metric-Ab G y x
+ commutative-add-cauchy-approximation-Metric-Ab =
+ eq-type-subtype
+ ( is-cauchy-approximation-prop-Metric-Ab G)
+ ( eq-htpy (λ _ → commutative-add-Metric-Ab G _ _))
+```
+
+### Unit laws
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ (ax@(x , is-approx-x) : cauchy-approximation-Metric-Ab G)
+ where abstract opaque
+
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ sim-left-unit-law-add-cauchy-approximation-Metric-Ab :
+ sim-cauchy-pseudocompletion-Metric-Ab G
+ ( add-cauchy-approximation-Metric-Ab G
+ ( zero-cauchy-approximation-Metric-Ab G)
+ ( ax))
+ ( ax)
+ sim-left-unit-law-add-cauchy-approximation-Metric-Ab δ ε θ =
+ let (ε' , 2ε'<ε) = bound-double-le-ℚ⁺ ε in
+ monotonic-neighborhood-Metric-Ab G
+ ( add-Metric-Ab G (zero-Metric-Ab G) (x ε'))
+ ( x θ)
+ ( ε' +ℚ⁺ θ)
+ ( ε +ℚ⁺ θ +ℚ⁺ δ)
+ ( transitive-le-ℚ⁺
+ ( ε' +ℚ⁺ θ)
+ ( ε +ℚ⁺ θ)
+ ( ε +ℚ⁺ θ +ℚ⁺ δ)
+ ( le-left-add-ℚ⁺ (ε +ℚ⁺ θ) δ)
+ ( preserves-le-left-add-ℚ _ _ _ (le-modulus-le-double-le-ℚ⁺ ε)))
+ ( inv-tr
+ ( λ y → neighborhood-Metric-Ab G (ε' +ℚ⁺ θ) y (x θ))
+ ( left-unit-law-add-Metric-Ab G (x ε'))
+ ( is-approx-x ε' θ))
+
+ sim-right-unit-law-add-cauchy-approximation-Metric-Ab :
+ sim-cauchy-pseudocompletion-Metric-Ab G
+ ( add-cauchy-approximation-Metric-Ab G
+ ( ax)
+ ( zero-cauchy-approximation-Metric-Ab G))
+ ( ax)
+ sim-right-unit-law-add-cauchy-approximation-Metric-Ab =
+ tr
+ ( λ ay → sim-cauchy-pseudocompletion-Metric-Ab G ay ax)
+ ( commutative-add-cauchy-approximation-Metric-Ab G
+ ( zero-cauchy-approximation-Metric-Ab G)
+ ( ax))
+ ( sim-left-unit-law-add-cauchy-approximation-Metric-Ab)
+```
+
+### Left addition is a short map in the Cauchy pseudocompletion of a metric abelian group
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ abstract opaque
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ preserves-neighborhood-left-add-cauchy-approximation-Metric-Ab :
+ (x : cauchy-approximation-Metric-Ab G) →
+ is-short-map-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( add-cauchy-approximation-Metric-Ab G x)
+ preserves-neighborhood-left-add-cauchy-approximation-Metric-Ab
+ (x , is-approx-x) d (y , is-approx-y) (z , is-approx-z) Ndyz δ ε =
+ let
+ (δ' , 2δ'<δ) = bound-double-le-ℚ⁺ δ
+ (ε' , 2ε'<ε) = bound-double-le-ℚ⁺ ε
+ in
+ monotonic-neighborhood-Metric-Ab G
+ ( add-Metric-Ab G (x δ') (y δ'))
+ ( add-Metric-Ab G (x ε') (z ε'))
+ ( (δ' +ℚ⁺ ε') +ℚ⁺ (δ' +ℚ⁺ ε' +ℚ⁺ d))
+ ( δ +ℚ⁺ ε +ℚ⁺ d)
+ ( concat-eq-le-ℚ⁺
+ { z = δ +ℚ⁺ ε +ℚ⁺ d}
+ ( equational-reasoning
+ (δ' +ℚ⁺ ε') +ℚ⁺ (δ' +ℚ⁺ ε' +ℚ⁺ d)
+ = (δ' +ℚ⁺ ε') +ℚ⁺ (δ' +ℚ⁺ ε') +ℚ⁺ d
+ by inv (associative-add-ℚ⁺ _ _ _)
+ = (δ' +ℚ⁺ δ') +ℚ⁺ (ε' +ℚ⁺ ε') +ℚ⁺ d
+ by ap-add-ℚ⁺ (interchange-law-add-add-ℚ⁺ _ _ _ _) refl)
+ ( preserves-le-left-add-ℚ _ _ _ (preserves-le-add-ℚ 2δ'<δ 2ε'<ε)))
+ ( neighborhood-add-Metric-Ab G
+ ( δ' +ℚ⁺ ε')
+ ( δ' +ℚ⁺ ε' +ℚ⁺ d)
+ ( x δ')
+ ( x ε')
+ ( y δ')
+ ( z ε')
+ ( is-approx-x δ' ε')
+ ( Ndyz δ' ε'))
+
+ short-map-left-add-cauchy-pseudocompletion-Metric-Ab :
+ (x : cauchy-approximation-Metric-Ab G) →
+ short-map-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ short-map-left-add-cauchy-pseudocompletion-Metric-Ab x =
+ ( add-cauchy-approximation-Metric-Ab G x ,
+ preserves-neighborhood-left-add-cauchy-approximation-Metric-Ab x)
+```
diff --git a/src/analysis/cauchy-approximations-metric-abelian-groups.lagda.md b/src/analysis/cauchy-approximations-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..f93cdc3d811
--- /dev/null
+++ b/src/analysis/cauchy-approximations-metric-abelian-groups.lagda.md
@@ -0,0 +1,70 @@
+# Cauchy approximations in metric abelian groups
+
+```agda
+module analysis.cauchy-approximations-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.metric-abelian-groups
+
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-approximations-metric-spaces
+```
+
+
+
+## Idea
+
+A
+{{#concept "Cauchy approximation" Disambiguation="in a metric abelian group" Agda=cauchy-approximation-Metric-Ab}}
+in a [metric abelian group](analysis.metric-abelian-groups.md) is a
+[Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) in
+the underlying [metric space](metric-spaces.metric-spaces.md).
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ is-cauchy-approximation-prop-Metric-Ab : subtype l2 (ℚ⁺ → type-Metric-Ab G)
+ is-cauchy-approximation-prop-Metric-Ab =
+ is-cauchy-approximation-prop-Metric-Space (metric-space-Metric-Ab G)
+
+ is-cauchy-approximation-Metric-Ab : (ℚ⁺ → type-Metric-Ab G) → UU l2
+ is-cauchy-approximation-Metric-Ab =
+ is-in-subtype is-cauchy-approximation-prop-Metric-Ab
+
+ cauchy-approximation-Metric-Ab : UU (l1 ⊔ l2)
+ cauchy-approximation-Metric-Ab =
+ type-subtype is-cauchy-approximation-prop-Metric-Ab
+```
+
+## Properties
+
+### Constant maps in metric abelian groups are Cauchy approximations
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ const-cauchy-approximation-Metric-Ab :
+ type-Metric-Ab G → cauchy-approximation-Metric-Ab G
+ const-cauchy-approximation-Metric-Ab =
+ const-cauchy-approximation-Metric-Space (metric-space-Metric-Ab G)
+
+ zero-cauchy-approximation-Metric-Ab :
+ cauchy-approximation-Metric-Ab G
+ zero-cauchy-approximation-Metric-Ab =
+ const-cauchy-approximation-Metric-Ab (zero-Metric-Ab G)
+```
diff --git a/src/analysis/cauchy-pseudocompletions-metric-abelian-groups.lagda.md b/src/analysis/cauchy-pseudocompletions-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..ec533984187
--- /dev/null
+++ b/src/analysis/cauchy-pseudocompletions-metric-abelian-groups.lagda.md
@@ -0,0 +1,94 @@
+# Cauchy pseudocompletions of metric abelian groups
+
+```agda
+module analysis.cauchy-pseudocompletions-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.cauchy-approximations-metric-abelian-groups
+open import analysis.metric-abelian-groups
+
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.binary-relations
+open import foundation.equivalence-relations
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-pseudocompletions-of-metric-spaces
+open import metric-spaces.pseudometric-spaces
+open import metric-spaces.rational-neighborhood-relations
+open import metric-spaces.similarity-of-elements-pseudometric-spaces
+```
+
+
+
+## Idea
+
+The
+{{#concept "Cauchy pseudocompletion" Disambiguation="of a metric abelian group" Agda=cauchy-pseudocompletion-Metric-Ab}}
+of a [metric abelian group](analysis.metric-abelian-groups.md) is the
+[Cauchy pseudocompletion](metric-spaces.cauchy-pseudocompletions-of-metric-spaces.md)
+of the underlying [metric space](metric-spaces.metric-spaces.md).
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ cauchy-pseudocompletion-Metric-Ab : Pseudometric-Space (l1 ⊔ l2) l2
+ cauchy-pseudocompletion-Metric-Ab =
+ cauchy-pseudocompletion-Metric-Space (metric-space-Metric-Ab G)
+
+ neighborhood-prop-cauchy-pseudocompletion-Metric-Ab :
+ Rational-Neighborhood-Relation l2 (cauchy-approximation-Metric-Ab G)
+ neighborhood-prop-cauchy-pseudocompletion-Metric-Ab =
+ neighborhood-prop-Pseudometric-Space cauchy-pseudocompletion-Metric-Ab
+
+ neighborhood-cauchy-pseudocompletion-Metric-Ab :
+ ℚ⁺ → Relation l2 (cauchy-approximation-Metric-Ab G)
+ neighborhood-cauchy-pseudocompletion-Metric-Ab =
+ neighborhood-Pseudometric-Space cauchy-pseudocompletion-Metric-Ab
+
+ equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab :
+ equivalence-relation l2 (cauchy-approximation-Metric-Ab G)
+ equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab =
+ equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab)
+
+ sim-prop-cauchy-pseudocompletion-Metric-Ab :
+ Relation-Prop l2 (cauchy-approximation-Metric-Ab G)
+ sim-prop-cauchy-pseudocompletion-Metric-Ab =
+ sim-prop-Pseudometric-Space cauchy-pseudocompletion-Metric-Ab
+
+ sim-cauchy-pseudocompletion-Metric-Ab :
+ Relation l2 (cauchy-approximation-Metric-Ab G)
+ sim-cauchy-pseudocompletion-Metric-Ab =
+ sim-Pseudometric-Space cauchy-pseudocompletion-Metric-Ab
+```
+
+## Properties
+
+### If two constant Cauchy approximations are similar, they have the same constant
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ eq-sim-const-cauchy-approximation-cauchy-pseudocompletion-Metric-Ab :
+ (x y : type-Metric-Ab G) →
+ sim-cauchy-pseudocompletion-Metric-Ab G
+ ( const-cauchy-approximation-Metric-Ab G x)
+ ( const-cauchy-approximation-Metric-Ab G y) →
+ x = y
+ eq-sim-const-cauchy-approximation-cauchy-pseudocompletion-Metric-Ab =
+ eq-sim-const-cauchy-approximation-cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Ab G)
+```
diff --git a/src/analysis/metric-abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md b/src/analysis/metric-abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..5a56b5722ef
--- /dev/null
+++ b/src/analysis/metric-abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md
@@ -0,0 +1,253 @@
+# The metric abelian group of the metric quotient of the Cauchy pseudocompletion of metric abelian groups
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module analysis.metric-abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.abelian-groups-metric-quotients-cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.addition-cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.metric-abelian-groups
+open import analysis.metric-quotients-cauchy-pseudocompletions-metric-abelian-groups
+
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
+open import foundation.dependent-pair-types
+open import foundation.identity-types
+open import foundation.propositional-truncations
+open import foundation.set-quotients
+open import foundation.universe-levels
+
+open import group-theory.abelian-groups
+open import group-theory.homomorphisms-abelian-groups
+
+open import metric-spaces.cauchy-pseudocompletions-of-metric-spaces
+open import metric-spaces.functoriality-isometries-cauchy-pseudocompletions-of-metric-spaces
+open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.isometries-pseudometric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.short-maps-metric-spaces
+open import metric-spaces.short-maps-pseudometric-spaces
+open import metric-spaces.unit-map-metric-quotients-of-pseudometric-spaces
+```
+
+
+
+## Idea
+
+The [metric quotient](metric-spaces.metric-quotients-of-pseudometric-spaces.md)
+of the
+[Cauchy pseudocompletion](analysis.cauchy-pseudocompletions-metric-abelian-groups.md)
+of a [metric abelian group](analysis.metric-abelian-groups.md) is itself a
+metric abelian group.
+
+## Proof
+
+### Negation is a short map
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ is-short-map-neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ is-short-map-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ is-short-map-neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ d x y Ndxy =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( neighborhood-prop-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( d)
+ ( neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x)
+ ( neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G y))
+ in do
+ (x' , ux'=x) ←
+ is-surjective-quotient-map
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( x)
+ (y' , uy'=y) ←
+ is-surjective-quotient-map
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( y)
+ binary-tr
+ ( neighborhood-metric-quotient-cauchy-pseudocompletion-Metric-Ab G d)
+ ( ( inv
+ ( neg-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x'))) ∙
+ ( ap (neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) ux'=x))
+ ( ( inv
+ ( neg-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( y'))) ∙
+ ( ap (neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) uy'=y))
+ ( preserves-neighborhoods-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( pseudometric-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G))
+ ( comp-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( pseudometric-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G))
+ ( isometry-unit-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G))
+ ( isometry-cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Ab G)
+ ( metric-space-Metric-Ab G)
+ ( isometry-neg-Metric-Ab G)))
+ ( d)
+ ( x')
+ ( y')
+ ( reflects-neighborhoods-map-unit-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( d)
+ ( x')
+ ( y')
+ ( binary-tr
+ ( neighborhood-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( d))
+ ( inv ux'=x)
+ ( inv uy'=y)
+ ( Ndxy))))
+```
+
+### Left addition is a short map on the metric quotient of the Cauchy pseudocompletion of a metric abelian group
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where abstract
+
+ is-short-map-left-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ (x : type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G) →
+ is-short-map-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x)
+ is-short-map-left-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ x d y z Ndyz =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( neighborhood-prop-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( d)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x y)
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G x z))
+ in do
+ (x' , ux'=x) ←
+ is-surjective-quotient-map
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( x)
+ (y' , uy'=y) ←
+ is-surjective-quotient-map
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( y)
+ (z' , uz'=z) ←
+ is-surjective-quotient-map
+ ( equivalence-relation-sim-cauchy-pseudocompletion-Metric-Ab G)
+ ( z)
+ binary-tr
+ ( neighborhood-metric-quotient-cauchy-pseudocompletion-Metric-Ab G d)
+ ( ( inv
+ ( add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x')
+ ( y'))) ∙
+ ( ap-binary
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( ux'=x)
+ ( uy'=y)))
+ ( ( inv
+ ( add-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( x')
+ ( z'))) ∙
+ ( ap-binary
+ ( add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( ux'=x)
+ ( uz'=z)))
+ ( is-short-map-short-map-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( pseudometric-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G))
+ ( comp-short-map-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( pseudometric-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G))
+ ( short-map-unit-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G))
+ ( short-map-left-add-cauchy-pseudocompletion-Metric-Ab G x'))
+ ( d)
+ ( y')
+ ( z')
+ ( reflects-neighborhoods-map-unit-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( d)
+ ( y')
+ ( z')
+ ( binary-tr
+ ( neighborhood-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( G)
+ ( d))
+ ( inv uy'=y)
+ ( inv uz'=z)
+ ( Ndyz))))
+```
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ metric-ab-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ Metric-Ab (l1 ⊔ l2) (l1 ⊔ l2)
+ metric-ab-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( ab-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ pseudometric-structure-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G) ,
+ is-extensional-pseudometric-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G) ,
+ is-short-map-neg-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ is-short-map-left-add-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+```
+
+## Properties
+
+### The embedding of the metric abelian group into the metric abelian group of the metric quotient of its Cauchy pseudocompletion is an Abelian group homomorphism
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ hom-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ hom-Ab
+ ( ab-Metric-Ab G)
+ ( ab-metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ hom-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( in-metric-quotient-cauchy-pseudocompletion-Metric-Ab G ,
+ inv (add-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab G _ _))
+```
diff --git a/src/analysis/metric-abelian-groups-of-uniformly-continuous-maps-into-metric-abelian-groups.lagda.md b/src/analysis/metric-abelian-groups-of-uniformly-continuous-maps-into-metric-abelian-groups.lagda.md
index ecce1868350..f54b856bfe8 100644
--- a/src/analysis/metric-abelian-groups-of-uniformly-continuous-maps-into-metric-abelian-groups.lagda.md
+++ b/src/analysis/metric-abelian-groups-of-uniformly-continuous-maps-into-metric-abelian-groups.lagda.md
@@ -18,11 +18,11 @@ open import group-theory.function-abelian-groups
open import group-theory.subgroups-abelian-groups
open import metric-spaces.cartesian-products-metric-spaces
-open import metric-spaces.isometries-metric-spaces
open import metric-spaces.maps-metric-spaces
open import metric-spaces.metric-space-of-uniformly-continuous-maps-metric-spaces
open import metric-spaces.metric-spaces
open import metric-spaces.pseudometric-spaces
+open import metric-spaces.short-maps-metric-spaces
open import metric-spaces.uniformly-continuous-maps-metric-spaces
```
@@ -154,26 +154,24 @@ module _
add-Ab ab-uniformly-continuous-map-Metric-Ab
abstract
- is-isometry-neg-uniformly-continuous-map-Metric-Ab :
- is-isometry-Metric-Space
+ is-short-map-neg-uniformly-continuous-map-Metric-Ab :
+ is-short-map-Metric-Space
( metric-space-uniformly-continuous-map-Metric-Ab)
( metric-space-uniformly-continuous-map-Metric-Ab)
( neg-uniformly-continuous-map-Metric-Ab)
- is-isometry-neg-uniformly-continuous-map-Metric-Ab
- d f@(map-f , _) g@(map-g , _) =
- iff-Π-iff-family
- ( λ x → is-isometry-neg-Metric-Ab G d (map-f x) (map-g x))
+ is-short-map-neg-uniformly-continuous-map-Metric-Ab
+ d f@(map-f , _) g@(map-g , _) Ndfg x =
+ is-short-map-neg-Metric-Ab G d (map-f x) (map-g x) (Ndfg x)
- is-isometry-add-uniformly-continuous-map-Metric-Ab :
+ is-short-map-add-uniformly-continuous-map-Metric-Ab :
(f : type-uniformly-continuous-map-Metric-Ab) →
- is-isometry-Metric-Space
+ is-short-map-Metric-Space
( metric-space-uniformly-continuous-map-Metric-Ab)
( metric-space-uniformly-continuous-map-Metric-Ab)
( add-uniformly-continuous-map-Metric-Ab f)
- is-isometry-add-uniformly-continuous-map-Metric-Ab
- (map-f , _) d (map-g , _) (map-h , _) =
- iff-Π-iff-family
- ( λ x → is-isometry-add-Metric-Ab G (map-f x) d (map-g x) (map-h x))
+ is-short-map-add-uniformly-continuous-map-Metric-Ab
+ (map-f , _) d (map-g , _) (map-h , _) Ndgh x =
+ is-short-map-add-Metric-Ab G (map-f x) d (map-g x) (map-h x) (Ndgh x)
metric-ab-uniformly-continuous-map-Metric-Ab :
Metric-Ab (l1 ⊔ l2 ⊔ l3 ⊔ l4) (l1 ⊔ l4)
@@ -182,6 +180,6 @@ module _
pseudometric-structure-uniformly-continuous-map-Metric-Ab ,
is-extensional-pseudometric-Metric-Space
( metric-space-uniformly-continuous-map-Metric-Ab) ,
- is-isometry-neg-uniformly-continuous-map-Metric-Ab ,
- is-isometry-add-uniformly-continuous-map-Metric-Ab)
+ is-short-map-neg-uniformly-continuous-map-Metric-Ab ,
+ is-short-map-add-uniformly-continuous-map-Metric-Ab)
```
diff --git a/src/analysis/metric-abelian-groups.lagda.md b/src/analysis/metric-abelian-groups.lagda.md
index bf9a4eaf0c3..57eaaa6771c 100644
--- a/src/analysis/metric-abelian-groups.lagda.md
+++ b/src/analysis/metric-abelian-groups.lagda.md
@@ -7,16 +7,19 @@ module analysis.metric-abelian-groups where
Imports
```agda
+open import elementary-number-theory.addition-positive-rational-numbers
open import elementary-number-theory.positive-rational-numbers
open import foundation.action-on-identifications-binary-functions
open import foundation.binary-relations
+open import foundation.binary-transport
open import foundation.cartesian-product-types
open import foundation.conjunction
open import foundation.dependent-pair-types
open import foundation.dependent-products-propositions
open import foundation.function-extensionality
open import foundation.identity-types
+open import foundation.logical-equivalences
open import foundation.propositions
open import foundation.transport-along-identifications
open import foundation.universe-levels
@@ -26,11 +29,15 @@ open import group-theory.abelian-groups
open import metric-spaces.cartesian-products-metric-spaces
open import metric-spaces.extensionality-pseudometric-spaces
open import metric-spaces.isometries-metric-spaces
-open import metric-spaces.isometries-pseudometric-spaces
open import metric-spaces.metric-spaces
open import metric-spaces.modulated-uniformly-continuous-maps-metric-spaces
+open import metric-spaces.monotonic-rational-neighborhood-relations
open import metric-spaces.pseudometric-spaces
open import metric-spaces.rational-neighborhood-relations
+open import metric-spaces.reflexive-rational-neighborhood-relations
+open import metric-spaces.short-maps-metric-spaces
+open import metric-spaces.short-maps-pseudometric-spaces
+open import metric-spaces.triangular-rational-neighborhood-relations
open import metric-spaces.uniformly-continuous-maps-metric-spaces
```
@@ -41,8 +48,9 @@ open import metric-spaces.uniformly-continuous-maps-metric-spaces
A {{#concept "metric abelian group" Agda=Metric-Ab}} is an
[abelian group](group-theory.abelian-groups.md) endowed with the structure of a
[metric space](metric-spaces.metric-spaces.md) such that the addition operation
-and negation operation are
-[isometries](metric-spaces.isometries-metric-spaces.md).
+and negation operation are [short](metric-spaces.short-maps-metric-spaces.md)
+(which, together with the group operations, implies they are
+[isometries](metric-spaces.isometries-metric-spaces.md)).
## Definition
@@ -55,10 +63,10 @@ is-metric-ab-prop-Ab-Pseudometric-Structure G M =
MS = (type-Ab G , M)
in
is-extensional-prop-Pseudometric-Space MS ∧
- is-isometry-prop-Pseudometric-Space MS MS (neg-Ab G) ∧
+ is-short-map-prop-Pseudometric-Space MS MS (neg-Ab G) ∧
Π-Prop
( type-Ab G)
- ( λ x → is-isometry-prop-Pseudometric-Space MS MS (add-Ab G x))
+ ( λ x → is-short-map-prop-Pseudometric-Space MS MS (add-Ab G x))
is-metric-ab-Ab-Pseudometric-Structure :
{l1 l2 : Level} (G : Ab l1) (M : Pseudometric-Structure l2 (type-Ab G)) →
@@ -89,32 +97,52 @@ module _
```agda
module _
{l1 l2 : Level} (MG : Metric-Ab l1 l2)
+ (let ab-MG = ab-Metric-Ab MG)
where
zero-Metric-Ab : type-Metric-Ab MG
- zero-Metric-Ab = zero-Ab (ab-Metric-Ab MG)
+ zero-Metric-Ab = zero-Ab ab-MG
add-Metric-Ab : type-Metric-Ab MG → type-Metric-Ab MG → type-Metric-Ab MG
- add-Metric-Ab = add-Ab (ab-Metric-Ab MG)
+ add-Metric-Ab = add-Ab ab-MG
add-Metric-Ab' : type-Metric-Ab MG → type-Metric-Ab MG → type-Metric-Ab MG
- add-Metric-Ab' = add-Ab' (ab-Metric-Ab MG)
+ add-Metric-Ab' = add-Ab' ab-MG
ap-add-Metric-Ab :
{x x' y y' : type-Metric-Ab MG} → x = x' → y = y' →
add-Metric-Ab x y = add-Metric-Ab x' y'
- ap-add-Metric-Ab = ap-add-Ab (ab-Metric-Ab MG)
+ ap-add-Metric-Ab = ap-add-Ab ab-MG
neg-Metric-Ab : type-Metric-Ab MG → type-Metric-Ab MG
- neg-Metric-Ab = neg-Ab (ab-Metric-Ab MG)
+ neg-Metric-Ab = neg-Ab ab-MG
abstract
+ left-unit-law-add-Metric-Ab :
+ (x : type-Metric-Ab MG) → add-Metric-Ab zero-Metric-Ab x = x
+ left-unit-law-add-Metric-Ab = left-unit-law-add-Ab ab-MG
+
+ associative-add-Metric-Ab :
+ (x y z : type-Metric-Ab MG) →
+ add-Metric-Ab (add-Metric-Ab x y) z = add-Metric-Ab x (add-Metric-Ab y z)
+ associative-add-Metric-Ab = associative-add-Ab ab-MG
+
+ left-inverse-law-add-Metric-Ab :
+ (x : type-Metric-Ab MG) →
+ add-Metric-Ab (neg-Metric-Ab x) x = zero-Metric-Ab
+ left-inverse-law-add-Metric-Ab = left-inverse-law-add-Ab ab-MG
+
+ right-inverse-law-add-Metric-Ab :
+ (x : type-Metric-Ab MG) →
+ add-Metric-Ab x (neg-Metric-Ab x) = zero-Metric-Ab
+ right-inverse-law-add-Metric-Ab = right-inverse-law-add-Ab ab-MG
+
neg-zero-Metric-Ab : neg-Metric-Ab zero-Metric-Ab = zero-Metric-Ab
- neg-zero-Metric-Ab = neg-zero-Ab (ab-Metric-Ab MG)
+ neg-zero-Metric-Ab = neg-zero-Ab ab-MG
neg-neg-Metric-Ab :
(x : type-Metric-Ab MG) → neg-Metric-Ab (neg-Metric-Ab x) = x
- neg-neg-Metric-Ab = neg-neg-Ab (ab-Metric-Ab MG)
+ neg-neg-Metric-Ab = neg-neg-Ab ab-MG
diff-Metric-Ab : type-Metric-Ab MG → type-Metric-Ab MG → type-Metric-Ab MG
diff-Metric-Ab x y = add-Metric-Ab x (neg-Metric-Ab y)
@@ -122,16 +150,16 @@ module _
ap-diff-Metric-Ab :
{x x' y y' : type-Metric-Ab MG} → x = x' → y = y' →
diff-Metric-Ab x y = diff-Metric-Ab x' y'
- ap-diff-Metric-Ab = ap-right-subtraction-Ab (ab-Metric-Ab MG)
+ ap-diff-Metric-Ab = ap-right-subtraction-Ab ab-MG
commutative-add-Metric-Ab :
(x y : type-Metric-Ab MG) → add-Metric-Ab x y = add-Metric-Ab y x
- commutative-add-Metric-Ab = commutative-add-Ab (ab-Metric-Ab MG)
+ commutative-add-Metric-Ab = commutative-add-Ab ab-MG
is-identity-right-conjugation-Metric-Ab :
(x y : type-Metric-Ab MG) → add-Metric-Ab x (diff-Metric-Ab y x) = y
is-identity-right-conjugation-Metric-Ab =
- is-identity-right-conjugation-Ab (ab-Metric-Ab MG)
+ is-identity-right-conjugation-Ab ab-MG
```
### Metric properties of metric abelian groups
@@ -162,13 +190,55 @@ module _
neighborhood-Metric-Ab : ℚ⁺ → Relation l2 (type-Metric-Ab MG)
neighborhood-Metric-Ab = neighborhood-Metric-Space metric-space-Metric-Ab
+ refl-neighborhood-Metric-Ab :
+ is-reflexive-Rational-Neighborhood-Relation neighborhood-prop-Metric-Ab
+ refl-neighborhood-Metric-Ab =
+ refl-neighborhood-Metric-Space metric-space-Metric-Ab
+
+ monotonic-neighborhood-Metric-Ab :
+ is-monotonic-Rational-Neighborhood-Relation neighborhood-prop-Metric-Ab
+ monotonic-neighborhood-Metric-Ab =
+ monotonic-neighborhood-Metric-Space metric-space-Metric-Ab
+
+ triangular-neighborhood-Metric-Ab :
+ is-triangular-Rational-Neighborhood-Relation neighborhood-prop-Metric-Ab
+ triangular-neighborhood-Metric-Ab =
+ triangular-neighborhood-Metric-Space metric-space-Metric-Ab
+
+ is-short-map-add-Metric-Ab :
+ (x : type-Metric-Ab MG) →
+ is-short-map-Metric-Space
+ ( metric-space-Metric-Ab)
+ ( metric-space-Metric-Ab)
+ ( add-Metric-Ab MG x)
+ is-short-map-add-Metric-Ab = pr2 (pr2 (pr2 (pr2 MG)))
+
+ abstract
+ reflects-neighborhoods-left-add-Metric-Ab :
+ (x : type-Metric-Ab MG)
+ (d : ℚ⁺)
+ (y z : type-Metric-Ab MG) →
+ neighborhood-Metric-Ab
+ ( d)
+ ( add-Metric-Ab MG x y)
+ ( add-Metric-Ab MG x z) →
+ neighborhood-Metric-Ab d y z
+ reflects-neighborhoods-left-add-Metric-Ab x d y z Nd⟨x+y⟩⟨x+z⟩ =
+ binary-tr
+ ( neighborhood-Metric-Ab d)
+ ( is-retraction-left-subtraction-Ab (ab-Metric-Ab MG) x y)
+ ( is-retraction-left-subtraction-Ab (ab-Metric-Ab MG) x z)
+ ( is-short-map-add-Metric-Ab (neg-Metric-Ab MG x) d _ _ Nd⟨x+y⟩⟨x+z⟩)
+
is-isometry-add-Metric-Ab :
(x : type-Metric-Ab MG) →
is-isometry-Metric-Space
( metric-space-Metric-Ab)
( metric-space-Metric-Ab)
( add-Metric-Ab MG x)
- is-isometry-add-Metric-Ab = pr2 (pr2 (pr2 (pr2 MG)))
+ is-isometry-add-Metric-Ab x d y z =
+ ( is-short-map-add-Metric-Ab x d y z ,
+ reflects-neighborhoods-left-add-Metric-Ab x d y z)
isometry-add-Metric-Ab :
(x : type-Metric-Ab MG) →
@@ -200,12 +270,33 @@ module _
isometry-add-Metric-Ab' x =
( add-Metric-Ab' MG x , is-isometry-add-Metric-Ab' x)
+ is-short-map-neg-Metric-Ab :
+ is-short-map-Metric-Space
+ ( metric-space-Metric-Ab)
+ ( metric-space-Metric-Ab)
+ ( neg-Metric-Ab MG)
+ is-short-map-neg-Metric-Ab = pr1 (pr2 (pr2 (pr2 MG)))
+
+ abstract
+ reflects-neighborhoods-neg-Metric-Ab :
+ (d : ℚ⁺) (x y : type-Metric-Ab MG) →
+ neighborhood-Metric-Ab d (neg-Metric-Ab MG x) (neg-Metric-Ab MG y) →
+ neighborhood-Metric-Ab d x y
+ reflects-neighborhoods-neg-Metric-Ab d x y Nd⟨-x⟩⟨-y⟩ =
+ binary-tr
+ ( neighborhood-Metric-Ab d)
+ ( neg-neg-Metric-Ab MG x)
+ ( neg-neg-Metric-Ab MG y)
+ ( is-short-map-neg-Metric-Ab d _ _ Nd⟨-x⟩⟨-y⟩)
+
is-isometry-neg-Metric-Ab :
is-isometry-Metric-Space
( metric-space-Metric-Ab)
( metric-space-Metric-Ab)
( neg-Metric-Ab MG)
- is-isometry-neg-Metric-Ab = pr1 (pr2 (pr2 (pr2 MG)))
+ is-isometry-neg-Metric-Ab d x y =
+ ( is-short-map-neg-Metric-Ab d x y ,
+ reflects-neighborhoods-neg-Metric-Ab d x y)
isometry-neg-Metric-Ab :
isometry-Metric-Space
@@ -253,3 +344,35 @@ module _
( metric-space-Metric-Ab G)
( modulated-uniformly-continuous-map-add-pair-Metric-Ab)
```
+
+### Neighborhoods of sums in metric abelian groups
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ (dxx' dyy' : ℚ⁺)
+ (x x' y y' : type-Metric-Ab G)
+ where abstract
+
+ neighborhood-add-Metric-Ab :
+ neighborhood-Metric-Ab G dxx' x x' →
+ neighborhood-Metric-Ab G dyy' y y' →
+ neighborhood-Metric-Ab G
+ ( dxx' +ℚ⁺ dyy')
+ ( add-Metric-Ab G x y)
+ ( add-Metric-Ab G x' y')
+ neighborhood-add-Metric-Ab Nxx' Nyy' =
+ triangular-neighborhood-Metric-Ab G
+ ( add-Metric-Ab G x y)
+ ( add-Metric-Ab G x' y)
+ ( add-Metric-Ab G x' y')
+ ( dxx')
+ ( dyy')
+ ( forward-implication
+ ( is-isometry-add-Metric-Ab G x' dyy' y y')
+ ( Nyy'))
+ ( forward-implication
+ ( is-isometry-add-Metric-Ab' G y dxx' x x')
+ ( Nxx'))
+```
diff --git a/src/analysis/metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md b/src/analysis/metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..99750ce71e2
--- /dev/null
+++ b/src/analysis/metric-quotients-cauchy-pseudocompletions-metric-abelian-groups.lagda.md
@@ -0,0 +1,149 @@
+# Metric quotients of Cauchy pseudocompletions of metric abelian groups
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module analysis.metric-quotients-cauchy-pseudocompletions-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.metric-abelian-groups
+
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.binary-relations
+open import foundation.dependent-pair-types
+open import foundation.embeddings
+open import foundation.sets
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-pseudocompletions-of-metric-spaces
+open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.isometries-pseudometric-spaces
+open import metric-spaces.metric-quotients-of-pseudometric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.pseudometric-spaces
+open import metric-spaces.rational-neighborhood-relations
+open import metric-spaces.unit-map-metric-quotients-of-pseudometric-spaces
+```
+
+
+
+## Idea
+
+The [metric quotient](metric-spaces.metric-quotients-of-pseudometric-spaces.md)
+of the
+[Cauchy pseudocompletion](analysis.cauchy-pseudocompletions-metric-abelian-groups.md)
+of a [metric abelian group](analysis.metric-abelian-groups.md) forms a
+[metric space](metric-spaces.metric-spaces.md).
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ Metric-Space (l1 ⊔ l2) (l1 ⊔ l2)
+ metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ metric-quotient-Pseudometric-Space (cauchy-pseudocompletion-Metric-Ab G)
+
+ pseudometric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ Pseudometric-Space (l1 ⊔ l2) (l1 ⊔ l2)
+ pseudometric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ pseudometric-Metric-Space metric-quotient-cauchy-pseudocompletion-Metric-Ab
+
+ set-metric-quotient-cauchy-pseudocompletion-Metric-Ab : Set (l1 ⊔ l2)
+ set-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ set-Metric-Space metric-quotient-cauchy-pseudocompletion-Metric-Ab
+
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab : UU (l1 ⊔ l2)
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ type-Set set-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+
+ neighborhood-prop-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ Rational-Neighborhood-Relation
+ ( l1 ⊔ l2)
+ ( type-metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+ neighborhood-prop-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ neighborhood-prop-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+
+ neighborhood-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ ℚ⁺ →
+ Relation (l1 ⊔ l2) type-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ neighborhood-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ neighborhood-Metric-Space
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+```
+
+## Properties
+
+### The embedding of elements of a metric abelian group in the metric quotient of its Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ isometry-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( pseudometric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ isometry-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ isometry-unit-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+
+ isometry-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ isometry-Metric-Space
+ ( metric-space-Metric-Ab G)
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ isometry-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ comp-isometry-Pseudometric-Space
+ ( pseudometric-space-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( pseudometric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( isometry-in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+ ( isometry-unit-cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Ab G))
+
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ cauchy-approximation-Metric-Ab G →
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ map-unit-metric-quotient-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+
+ in-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ type-Metric-Ab G → type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ in-metric-quotient-cauchy-pseudocompletion-Metric-Ab x =
+ in-approximation-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ ( const-cauchy-approximation-Metric-Ab G x)
+
+ abstract
+ is-emb-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ is-emb in-metric-quotient-cauchy-pseudocompletion-Metric-Ab
+ is-emb-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ is-emb-map-isometry-Metric-Space
+ ( metric-space-Metric-Ab G)
+ ( metric-quotient-cauchy-pseudocompletion-Metric-Ab G)
+ ( isometry-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+
+ emb-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ type-Metric-Ab G ↪ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ emb-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ ( in-metric-quotient-cauchy-pseudocompletion-Metric-Ab ,
+ is-emb-in-metric-quotient-cauchy-pseudocompletion-Metric-Ab)
+
+ zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab :
+ type-metric-quotient-cauchy-pseudocompletion-Metric-Ab G
+ zero-metric-quotient-cauchy-pseudocompletion-Metric-Ab =
+ in-metric-quotient-cauchy-pseudocompletion-Metric-Ab (zero-Metric-Ab G)
+```
diff --git a/src/analysis/negation-cauchy-approximations-metric-abelian-groups.lagda.md b/src/analysis/negation-cauchy-approximations-metric-abelian-groups.lagda.md
new file mode 100644
index 00000000000..51c27be6649
--- /dev/null
+++ b/src/analysis/negation-cauchy-approximations-metric-abelian-groups.lagda.md
@@ -0,0 +1,115 @@
+# Negation of Cauchy approximations in metric abelian groups
+
+```agda
+module analysis.negation-cauchy-approximations-metric-abelian-groups where
+```
+
+Imports
+
+```agda
+open import analysis.addition-cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-approximations-metric-abelian-groups
+open import analysis.cauchy-pseudocompletions-metric-abelian-groups
+open import analysis.metric-abelian-groups
+
+open import foundation.dependent-pair-types
+open import foundation.function-extensionality
+open import foundation.identity-types
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import metric-spaces.functoriality-isometries-cauchy-pseudocompletions-of-metric-spaces
+open import metric-spaces.isometries-pseudometric-spaces
+```
+
+
+
+## Idea
+
+Negation of
+[Cauchy approximations](analysis.cauchy-approximations-metric-abelian-groups.md)
+in [metric abelian groups](analysis.metric-abelian-groups.md) is the inverse
+operation for
+[addition](analysis.addition-cauchy-approximations-metric-abelian-groups.md).
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ neg-cauchy-approximation-Metric-Ab :
+ cauchy-approximation-Metric-Ab G → cauchy-approximation-Metric-Ab G
+ neg-cauchy-approximation-Metric-Ab =
+ map-isometry-cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Ab G)
+ ( metric-space-Metric-Ab G)
+ ( isometry-neg-Metric-Ab G)
+```
+
+## Properties
+
+### Negation is an isometry in the Cauchy pseudocompletion of metric abelian groups
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ where
+
+ isometry-neg-cauchy-pseudocompletion-Metric-Ab :
+ isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ isometry-neg-cauchy-pseudocompletion-Metric-Ab =
+ isometry-cauchy-pseudocompletion-Metric-Space
+ ( metric-space-Metric-Ab G)
+ ( metric-space-Metric-Ab G)
+ ( isometry-neg-Metric-Ab G)
+
+ abstract
+ is-isometry-neg-cauchy-pseudocompletion-Metric-Ab :
+ is-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( neg-cauchy-approximation-Metric-Ab G)
+ is-isometry-neg-cauchy-pseudocompletion-Metric-Ab =
+ is-isometry-map-isometry-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( cauchy-pseudocompletion-Metric-Ab G)
+ ( isometry-neg-cauchy-pseudocompletion-Metric-Ab)
+```
+
+### Inverse laws of addition of Cauchy approximations
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Metric-Ab l1 l2)
+ (ax@(x , is-approx-x) : cauchy-approximation-Metric-Ab G)
+ where abstract opaque
+
+ unfolding map-add-cauchy-approximation-Metric-Ab
+
+ left-inverse-law-add-cauchy-approximation-Metric-Ab :
+ add-cauchy-approximation-Metric-Ab G
+ ( neg-cauchy-approximation-Metric-Ab G ax)
+ ( ax) =
+ zero-cauchy-approximation-Metric-Ab G
+ left-inverse-law-add-cauchy-approximation-Metric-Ab =
+ eq-type-subtype
+ ( is-cauchy-approximation-prop-Metric-Ab G)
+ ( eq-htpy (λ _ → left-inverse-law-add-Metric-Ab G _))
+
+ right-inverse-law-add-cauchy-approximation-Metric-Ab :
+ add-cauchy-approximation-Metric-Ab G
+ ( ax)
+ ( neg-cauchy-approximation-Metric-Ab G ax) =
+ zero-cauchy-approximation-Metric-Ab G
+ right-inverse-law-add-cauchy-approximation-Metric-Ab =
+ eq-type-subtype
+ ( is-cauchy-approximation-prop-Metric-Ab G)
+ ( eq-htpy (λ _ → right-inverse-law-add-Metric-Ab G _))
+```
diff --git a/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md
index 38d71c14497..aa78014a8b5 100644
--- a/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md
+++ b/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md
@@ -34,6 +34,6 @@ metric-ab-add-ℚ =
( abelian-group-add-ℚ ,
pseudometric-structure-Metric-Space metric-space-ℚ ,
is-extensional-pseudometric-space-ℚ ,
- is-isometry-neg-ℚ ,
- is-isometry-left-add-ℚ)
+ is-short-map-neg-ℚ ,
+ is-short-map-left-add-ℚ)
```
diff --git a/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md
index 4e2a1657a36..4ca8e619ac0 100644
--- a/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md
+++ b/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md
@@ -15,7 +15,9 @@ open import elementary-number-theory.strict-inequality-rational-numbers
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.function-types
+open import foundation.identity-types
open import foundation.propositions
+open import foundation.transport-along-identifications
open import foundation.universe-levels
open import order-theory.strict-preorders
@@ -64,6 +66,17 @@ leq-le-ℚ⁺ : {x y : ℚ⁺} → le-ℚ⁺ x y → leq-ℚ⁺ x y
leq-le-ℚ⁺ {x} {y} = leq-le-ℚ {rational-ℚ⁺ x} {rational-ℚ⁺ y}
```
+### Concatenation of equality and strict inequality
+
+```agda
+module _
+ {x y z : ℚ⁺}
+ where abstract
+
+ concat-eq-le-ℚ⁺ : x = y → le-ℚ⁺ y z → le-ℚ⁺ x z
+ concat-eq-le-ℚ⁺ = inv-tr (λ w → le-ℚ⁺ w z)
+```
+
### The strictly preordered set of positive rational numbers
```agda
diff --git a/src/foundation/functoriality-set-quotients.lagda.md b/src/foundation/functoriality-set-quotients.lagda.md
index 31b756d2f8c..eaf92db532a 100644
--- a/src/foundation/functoriality-set-quotients.lagda.md
+++ b/src/foundation/functoriality-set-quotients.lagda.md
@@ -41,7 +41,8 @@ open import foundation-core.torsorial-type-families
## Idea
-Set quotients act functorially on types equipped with equivalence relations.
+[Set quotients](foundation.set-quotients.md) act functorially on types equipped
+with [equivalence relations](foundation.equivalence-relations.md).
## Definition
diff --git a/src/functional-analysis/metric-abelian-groups-normed-real-vector-spaces.lagda.md b/src/functional-analysis/metric-abelian-groups-normed-real-vector-spaces.lagda.md
index afd9de40317..9e452b93110 100644
--- a/src/functional-analysis/metric-abelian-groups-normed-real-vector-spaces.lagda.md
+++ b/src/functional-analysis/metric-abelian-groups-normed-real-vector-spaces.lagda.md
@@ -69,8 +69,8 @@ module _
pseudometric-structure-metric-ab-Normed-ℝ-Vector-Space ,
is-extensional-pseudometric-Metric-Space
( metric-space-Normed-ℝ-Vector-Space V) ,
- is-isometry-neg-Normed-ℝ-Vector-Space V ,
- is-isometry-left-add-Normed-ℝ-Vector-Space V)
+ is-short-map-neg-Normed-ℝ-Vector-Space V ,
+ is-short-map-left-add-Normed-ℝ-Vector-Space V)
```
## Properties
diff --git a/src/group-theory/homomorphisms-abelian-groups.lagda.md b/src/group-theory/homomorphisms-abelian-groups.lagda.md
index 43fa154acc8..5ad470912c9 100644
--- a/src/group-theory/homomorphisms-abelian-groups.lagda.md
+++ b/src/group-theory/homomorphisms-abelian-groups.lagda.md
@@ -28,8 +28,9 @@ open import group-theory.homomorphisms-semigroups
## Idea
-Homomorphisms between abelian groups are just homomorphisms between their
-underlying groups.
+Homomorphisms between [abelian groups](group-theory.abelian-groups.md) are just
+[homomorphisms](group-theory.homomorphisms-groups.md) between their underlying
+[groups](group-theory.groups.md).
## Definition
diff --git a/src/linear-algebra/normed-real-vector-spaces.lagda.md b/src/linear-algebra/normed-real-vector-spaces.lagda.md
index 53a58db9b70..29c56236d5b 100644
--- a/src/linear-algebra/normed-real-vector-spaces.lagda.md
+++ b/src/linear-algebra/normed-real-vector-spaces.lagda.md
@@ -31,6 +31,7 @@ open import metric-spaces.located-metric-spaces
open import metric-spaces.metric-spaces
open import metric-spaces.metrics
open import metric-spaces.metrics-of-metric-spaces
+open import metric-spaces.short-maps-metric-spaces
open import real-numbers.absolute-value-real-numbers
open import real-numbers.addition-real-numbers
@@ -363,6 +364,18 @@ module _
( _))
= dist-Normed-ℝ-Vector-Space V x y
by symmetric-dist-Normed-ℝ-Vector-Space V y x)))
+
+ is-short-map-neg-Normed-ℝ-Vector-Space :
+ is-short-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( neg-Normed-ℝ-Vector-Space V)
+ is-short-map-neg-Normed-ℝ-Vector-Space =
+ is-short-map-is-isometry-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( neg-Normed-ℝ-Vector-Space V)
+ ( is-isometry-neg-Normed-ℝ-Vector-Space)
```
### Left addition is an isometry in the metric space of a normed vector space
@@ -403,6 +416,18 @@ module _
( u)
( v)
( w)))))
+
+ is-short-map-left-add-Normed-ℝ-Vector-Space :
+ is-short-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( add-Normed-ℝ-Vector-Space V u)
+ is-short-map-left-add-Normed-ℝ-Vector-Space =
+ is-short-map-is-isometry-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( add-Normed-ℝ-Vector-Space V u)
+ ( is-isometry-left-add-Normed-ℝ-Vector-Space)
```
### The norm of the zero vector is zero
diff --git a/src/metric-spaces/cauchy-pseudocompletions-of-metric-spaces.lagda.md b/src/metric-spaces/cauchy-pseudocompletions-of-metric-spaces.lagda.md
index b434d07f104..edb2a44f4f2 100644
--- a/src/metric-spaces/cauchy-pseudocompletions-of-metric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-pseudocompletions-of-metric-spaces.lagda.md
@@ -13,6 +13,7 @@ open import elementary-number-theory.positive-rational-numbers
open import foundation.action-on-identifications-functions
open import foundation.binary-relations
open import foundation.dependent-pair-types
+open import foundation.equivalence-relations
open import foundation.function-types
open import foundation.homotopies
open import foundation.identity-types
@@ -253,3 +254,57 @@ module _
isometry-lim-cauchy-approximation-cauchy-pseudocompletion-Pseudometric-Space
( pseudometric-Metric-Space M)
```
+
+### The similarity relation in a Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level} (M : Metric-Space l1 l2)
+ where
+
+ equivalence-relation-sim-cauchy-pseudocompletion-Metric-Space :
+ equivalence-relation l2 (cauchy-approximation-Metric-Space M)
+ equivalence-relation-sim-cauchy-pseudocompletion-Metric-Space =
+ equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+
+ sim-prop-cauchy-pseudocompletion-Metric-Space :
+ Relation-Prop l2 (cauchy-approximation-Metric-Space M)
+ sim-prop-cauchy-pseudocompletion-Metric-Space =
+ sim-prop-Pseudometric-Space (cauchy-pseudocompletion-Metric-Space M)
+
+ sim-cauchy-pseudocompletion-Metric-Space :
+ Relation l2 (cauchy-approximation-Metric-Space M)
+ sim-cauchy-pseudocompletion-Metric-Space =
+ type-Relation-Prop sim-prop-cauchy-pseudocompletion-Metric-Space
+```
+
+### If two constant Cauchy approximations are similar, they have the same constant
+
+```agda
+module _
+ {l1 l2 : Level} (M : Metric-Space l1 l2)
+ where abstract
+
+ eq-sim-const-cauchy-approximation-cauchy-pseudocompletion-Metric-Space :
+ (x y : type-Metric-Space M) →
+ sim-cauchy-pseudocompletion-Metric-Space M
+ ( const-cauchy-approximation-Metric-Space M x)
+ ( const-cauchy-approximation-Metric-Space M y) →
+ x = y
+ eq-sim-const-cauchy-approximation-cauchy-pseudocompletion-Metric-Space
+ x y cx~cy =
+ eq-sim-Metric-Space
+ ( M)
+ ( x)
+ ( y)
+ ( λ ε →
+ let
+ (ε12 , ε3 , ε12+ε3=ε) = split-ℚ⁺ ε
+ (ε1 , ε2 , ε1+ε2=ε12) = split-ℚ⁺ ε12
+ in
+ tr
+ ( λ d → neighborhood-Metric-Space M d x y)
+ ( ap-add-ℚ⁺ ε1+ε2=ε12 refl ∙ ε12+ε3=ε)
+ ( cx~cy ε3 ε1 ε2))
+```
diff --git a/src/metric-spaces/cauchy-pseudocompletions-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-pseudocompletions-of-pseudometric-spaces.lagda.md
index 7b9c060eed8..9e9c8c5750e 100644
--- a/src/metric-spaces/cauchy-pseudocompletions-of-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-pseudocompletions-of-pseudometric-spaces.lagda.md
@@ -19,6 +19,7 @@ open import foundation.action-on-identifications-functions
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.dependent-products-propositions
+open import foundation.equivalence-relations
open import foundation.function-types
open import foundation.identity-types
open import foundation.propositions
@@ -279,6 +280,30 @@ module _
is-saturated-neighborhood-cauchy-pseudocompletion-Pseudometric-Space M)
```
+### The similarity equivalence relation in the Cauchy pseudocompletion of a pseudometric space
+
+```agda
+module _
+ {l1 l2 : Level} (M : Pseudometric-Space l1 l2)
+ where
+
+ equivalence-relation-sim-cauchy-pseudocompletion-Pseudometric-Space :
+ equivalence-relation l2 (cauchy-approximation-Pseudometric-Space M)
+ equivalence-relation-sim-cauchy-pseudocompletion-Pseudometric-Space =
+ equivalence-relation-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Pseudometric-Space M)
+
+ sim-prop-cauchy-pseudocompletion-Pseudometric-Space :
+ Relation-Prop l2 (cauchy-approximation-Pseudometric-Space M)
+ sim-prop-cauchy-pseudocompletion-Pseudometric-Space =
+ sim-prop-Pseudometric-Space (cauchy-pseudocompletion-Pseudometric-Space M)
+
+ sim-cauchy-pseudocompletion-Pseudometric-Space :
+ Relation l2 (cauchy-approximation-Pseudometric-Space M)
+ sim-cauchy-pseudocompletion-Pseudometric-Space =
+ sim-Pseudometric-Space (cauchy-pseudocompletion-Pseudometric-Space M)
+```
+
### The isometry from a pseudometric space to its Cauchy pseudocompletion
```agda
@@ -408,7 +433,7 @@ module _
{l1 l2 : Level} (M : Pseudometric-Space l1 l2)
(u v : cauchy-approximation-Pseudometric-Space M)
(x : type-Pseudometric-Space M)
- where
+ where abstract
has-same-limit-sim-cauchy-approximation-Pseudometric-Space :
sim-Pseudometric-Space
diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md
index 6a2459d92bd..d7627035b9f 100644
--- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md
+++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md
@@ -10,13 +10,17 @@ module metric-spaces.limits-of-cauchy-approximations-metric-spaces where
open import elementary-number-theory.addition-positive-rational-numbers
open import elementary-number-theory.positive-rational-numbers
+open import foundation.dependent-pair-types
open import foundation.function-types
open import foundation.identity-types
+open import foundation.logical-equivalences
open import foundation.propositions
open import foundation.universe-levels
open import metric-spaces.cauchy-approximations-metric-spaces
open import metric-spaces.cauchy-pseudocompletions-of-metric-spaces
+open import metric-spaces.cauchy-pseudocompletions-of-pseudometric-spaces
+open import metric-spaces.isometries-pseudometric-spaces
open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces
open import metric-spaces.metric-spaces
open import metric-spaces.short-maps-metric-spaces
@@ -183,6 +187,93 @@ module _
( λ d → H d α β)
```
+### Cauchy approximations with the same limit are similar in the Cauchy pseudocompletion
+
+```agda
+module _
+ {l1 l2 : Level} (M : Metric-Space l1 l2)
+ (u v : cauchy-approximation-Metric-Space M)
+ (x : type-Metric-Space M)
+ (is-limit-u-x : is-limit-cauchy-approximation-Metric-Space M u x)
+ (is-limit-v-x : is-limit-cauchy-approximation-Metric-Space M v x)
+ where abstract
+
+ sim-is-limit-cauchy-approximation-Metric-Space :
+ sim-cauchy-pseudocompletion-Metric-Space M u v
+ sim-is-limit-cauchy-approximation-Metric-Space =
+ transitive-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+ ( u)
+ ( const-cauchy-approximation-Metric-Space M x)
+ ( v)
+ ( symmetric-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space M)
+ ( v)
+ ( const-cauchy-approximation-Metric-Space M x)
+ ( sim-const-is-limit-cauchy-approximation-Metric-Space M
+ ( v)
+ ( x)
+ ( is-limit-v-x)))
+ ( sim-const-is-limit-cauchy-approximation-Metric-Space M u x is-limit-u-x)
+```
+
+### If two Cauchy approximations are similar and have limits, the limits are equal
+
+```agda
+module _
+ {l1 l2 : Level}
+ (M : Metric-Space l1 l2)
+ (u v : cauchy-approximation-Metric-Space M)
+ (u~v : sim-cauchy-pseudocompletion-Metric-Space M u v)
+ (x y : type-Metric-Space M)
+ (is-lim-u-x : is-limit-cauchy-approximation-Metric-Space M u x)
+ (is-lim-v-y : is-limit-cauchy-approximation-Metric-Space M v y)
+ where abstract
+
+ eq-limit-sim-cauchy-pseudocompletion-Metric-Space : x = y
+ eq-limit-sim-cauchy-pseudocompletion-Metric-Space =
+ all-eq-is-limit-cauchy-approximation-Metric-Space
+ ( M)
+ ( v)
+ ( x)
+ ( y)
+ ( has-same-limit-sim-cauchy-approximation-Pseudometric-Space
+ ( pseudometric-Metric-Space M)
+ ( u)
+ ( v)
+ ( x)
+ ( u~v)
+ ( is-lim-u-x))
+ ( is-lim-v-y)
+```
+
+### Cauchy approximations with limits are similar if and only if the limits are equal
+
+```agda
+module _
+ {l1 l2 : Level}
+ (M : Metric-Space l1 l2)
+ (u v : cauchy-approximation-Metric-Space M)
+ {x y : type-Metric-Space M}
+ (is-lim-u-x : is-limit-cauchy-approximation-Metric-Space M u x)
+ (is-lim-v-y : is-limit-cauchy-approximation-Metric-Space M v y)
+ where
+
+ eq-limit-iff-sim-cauchy-pseudocompletion-Metric-Space :
+ sim-cauchy-pseudocompletion-Metric-Space M u v ↔ (x = y)
+ pr1 eq-limit-iff-sim-cauchy-pseudocompletion-Metric-Space u~v =
+ eq-limit-sim-cauchy-pseudocompletion-Metric-Space M
+ ( u)
+ ( v)
+ ( u~v)
+ ( x)
+ ( y)
+ ( is-lim-u-x)
+ ( is-lim-v-y)
+ pr2 eq-limit-iff-sim-cauchy-pseudocompletion-Metric-Space refl =
+ sim-is-limit-cauchy-approximation-Metric-Space M u v x is-lim-u-x is-lim-v-y
+```
+
### Homotopic Cauchy approximations have the same limits
```agda
@@ -205,6 +296,71 @@ module _
( f~g)
```
+### If two Cauchy approximations have limits, they are in a `d`-neighborhood in the Cauchy pseudocompletion if and only if their limits are in a `d`-neighborhood
+
+```agda
+module _
+ {l1 l2 : Level}
+ (X : Metric-Space l1 l2)
+ (d : ℚ⁺)
+ (f g : cauchy-approximation-Metric-Space X)
+ (x y : type-Metric-Space X)
+ (is-lim-f-x : is-limit-cauchy-approximation-Metric-Space X f x)
+ (is-lim-g-y : is-limit-cauchy-approximation-Metric-Space X g y)
+ where
+
+ abstract
+ same-neighborhoods-limits-cauchy-pseudocompletion-Metric-Space :
+ neighborhood-cauchy-pseudocompletion-Metric-Space X d f g ↔
+ neighborhood-Metric-Space X d x y
+ same-neighborhoods-limits-cauchy-pseudocompletion-Metric-Space =
+ logical-equivalence-reasoning
+ neighborhood-cauchy-pseudocompletion-Metric-Space X d f g
+ ↔ neighborhood-cauchy-pseudocompletion-Metric-Space X
+ ( d)
+ ( const-cauchy-approximation-Metric-Space X x)
+ ( const-cauchy-approximation-Metric-Space X y)
+ by
+ preserves-and-reflects-neighborhoods-sim-Pseudometric-Space
+ ( cauchy-pseudocompletion-Metric-Space X)
+ { x = f}
+ { x' = const-cauchy-approximation-Metric-Space X x}
+ { y = g}
+ { y' = const-cauchy-approximation-Metric-Space X y}
+ ( sim-const-is-limit-cauchy-approximation-Metric-Space X
+ ( f)
+ ( x)
+ ( is-lim-f-x))
+ ( sim-const-is-limit-cauchy-approximation-Metric-Space
+ ( X)
+ ( g)
+ ( y)
+ ( is-lim-g-y))
+ ( d)
+ ↔ neighborhood-Metric-Space X d x y
+ by
+ inv-iff
+ ( is-isometry-map-unit-cauchy-pseudocompletion-Metric-Space
+ ( X)
+ ( d)
+ ( x)
+ ( y))
+
+ preserves-neighborhoods-limits-cauchy-approximation-Metric-Space :
+ neighborhood-cauchy-pseudocompletion-Metric-Space X d f g →
+ neighborhood-Metric-Space X d x y
+ preserves-neighborhoods-limits-cauchy-approximation-Metric-Space =
+ forward-implication
+ ( same-neighborhoods-limits-cauchy-pseudocompletion-Metric-Space)
+
+ reflects-neighborhoods-limits-cauchy-approximation-Metric-Space :
+ neighborhood-Metric-Space X d x y →
+ neighborhood-cauchy-pseudocompletion-Metric-Space X d f g
+ reflects-neighborhoods-limits-cauchy-approximation-Metric-Space =
+ backward-implication
+ ( same-neighborhoods-limits-cauchy-pseudocompletion-Metric-Space)
+```
+
## See also
- [Convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md)
diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md
index be3f658b930..304b77c7d64 100644
--- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md
+++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md
@@ -169,15 +169,17 @@ abstract
( associative-add-ℚ y (rational-ℚ⁺ ε) (rational-ℚ⁺ δ))
( pr2 (H δ)))
-pseudometric-space-ℚ : Pseudometric-Space lzero lzero
-pr1 pseudometric-space-ℚ = ℚ
-pr2 pseudometric-space-ℚ =
+pseudometric-structure-ℚ : Pseudometric-Structure lzero ℚ
+pseudometric-structure-ℚ =
( neighborhood-prop-ℚ ,
is-reflexive-neighborhood-ℚ ,
is-symmetric-neighborhood-ℚ ,
is-triangular-neighborhood-ℚ ,
is-saturated-neighborhood-ℚ)
+pseudometric-space-ℚ : Pseudometric-Space lzero lzero
+pseudometric-space-ℚ = (ℚ , pseudometric-structure-ℚ)
+
abstract
is-tight-pseudometric-space-ℚ :
is-tight-Pseudometric-Space pseudometric-space-ℚ
@@ -306,6 +308,16 @@ module _
where
abstract
+ is-short-map-left-add-ℚ :
+ is-short-map-Metric-Space
+ ( metric-space-ℚ)
+ ( metric-space-ℚ)
+ ( add-ℚ x)
+ is-short-map-left-add-ℚ d y z =
+ map-product
+ ( preserves-lower-neighborhood-add-ℚ x y z d)
+ ( preserves-lower-neighborhood-add-ℚ x z y d)
+
is-isometry-left-add-ℚ :
is-isometry-Metric-Space
( metric-space-ℚ)
@@ -313,9 +325,7 @@ module _
( add-ℚ x)
is-isometry-left-add-ℚ d y z =
pair
- ( map-product
- ( preserves-lower-neighborhood-add-ℚ x y z d)
- ( preserves-lower-neighborhood-add-ℚ x z y d))
+ ( is-short-map-left-add-ℚ d y z)
( map-product
( reflects-lower-neighborhood-add-ℚ x y z d)
( reflects-lower-neighborhood-add-ℚ x z y d))
@@ -372,6 +382,15 @@ abstract
↔ neighborhood-ℚ d (neg-ℚ x) (neg-ℚ y)
by leq-dist-iff-neighborhood-ℚ _ _ _
+ is-short-map-neg-ℚ :
+ is-short-map-Metric-Space metric-space-ℚ metric-space-ℚ neg-ℚ
+ is-short-map-neg-ℚ =
+ is-short-map-is-isometry-Metric-Space
+ ( metric-space-ℚ)
+ ( metric-space-ℚ)
+ ( neg-ℚ)
+ ( is-isometry-neg-ℚ)
+
is-uniformly-continuous-map-neg-ℚ :
is-uniformly-continuous-map-Metric-Space
( metric-space-ℚ)
diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md
index ae932073c8d..296228f80c3 100644
--- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md
@@ -269,6 +269,18 @@ module _
backward-implication
( same-neighbors d _)
( refl-sim-Pseudometric-Space A _ d))
+
+ preserves-and-reflects-neighborhoods-sim-Pseudometric-Space :
+ {x x' y y' : type-Pseudometric-Space A} →
+ sim-Pseudometric-Space A x x' →
+ sim-Pseudometric-Space A y y' →
+ (d : ℚ⁺) →
+ neighborhood-Pseudometric-Space A d x y ↔
+ neighborhood-Pseudometric-Space A d x' y'
+ preserves-and-reflects-neighborhoods-sim-Pseudometric-Space
+ {x} {x'} {y} {y'} x~x' y~y' d =
+ ( preserves-neighborhoods-sim-Pseudometric-Space x~x' y~y' d ,
+ reflects-neighborhoods-sim-Pseudometric-Space x~x' y~y' d)
```
### Similar elements are elements similar w.r.t the underlying rational neighborhood relation
@@ -362,4 +374,14 @@ module _
( sim-Pseudometric-Space A x y)
reflects-sim-map-isometry-Pseudometric-Space x y fx~fy d =
reflects-neighborhoods-map-isometry-Pseudometric-Space A B f d x y (fx~fy d)
+
+ iff-sim-map-isometry-Pseudometric-Space :
+ ( x y : type-Pseudometric-Space A) →
+ ( sim-Pseudometric-Space A x y) ↔
+ ( sim-Pseudometric-Space B
+ ( map-isometry-Pseudometric-Space A B f x)
+ ( map-isometry-Pseudometric-Space A B f y))
+ iff-sim-map-isometry-Pseudometric-Space x y =
+ ( preserves-sim-map-isometry-Pseudometric-Space x y ,
+ reflects-sim-map-isometry-Pseudometric-Space x y)
```
diff --git a/src/real-numbers/isometry-addition-real-numbers.lagda.md b/src/real-numbers/isometry-addition-real-numbers.lagda.md
index 55b9f3b3e51..be0a83e6e90 100644
--- a/src/real-numbers/isometry-addition-real-numbers.lagda.md
+++ b/src/real-numbers/isometry-addition-real-numbers.lagda.md
@@ -15,6 +15,7 @@ open import foundation.transport-along-identifications
open import foundation.universe-levels
open import metric-spaces.cartesian-products-metric-spaces
+open import metric-spaces.expansive-maps-metric-spaces
open import metric-spaces.isometries-metric-spaces
open import metric-spaces.metric-space-of-isometries-metric-spaces
open import metric-spaces.modulated-uniformly-continuous-maps-metric-spaces
@@ -51,27 +52,41 @@ module _
where
abstract
+ is-short-map-left-add-ℝ :
+ is-short-map-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( add-ℝ x)
+ is-short-map-left-add-ℝ d y z Nyz =
+ neighborhood-real-bound-each-leq-ℝ
+ ( d)
+ ( add-ℝ x y)
+ ( add-ℝ x z)
+ ( preserves-lower-neighborhood-leq-left-add-ℝ d x y z
+ ( left-leq-real-bound-neighborhood-ℝ d y z Nyz))
+ ( preserves-lower-neighborhood-leq-left-add-ℝ d x z y
+ ( right-leq-real-bound-neighborhood-ℝ d y z Nyz))
+
+ is-expansive-map-left-add-ℝ :
+ is-expansive-map-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( add-ℝ x)
+ is-expansive-map-left-add-ℝ d y z Nxyz =
+ neighborhood-real-bound-each-leq-ℝ d y z
+ ( reflects-lower-neighborhood-leq-left-add-ℝ d x y z
+ ( left-leq-real-bound-neighborhood-ℝ d (x +ℝ y) (x +ℝ z) Nxyz))
+ ( reflects-lower-neighborhood-leq-left-add-ℝ d x z y
+ ( right-leq-real-bound-neighborhood-ℝ d (x +ℝ y) (x +ℝ z) Nxyz))
+
is-isometry-left-add-ℝ :
is-isometry-Metric-Space
( metric-space-ℝ l2)
( metric-space-ℝ (l1 ⊔ l2))
( add-ℝ x)
is-isometry-left-add-ℝ d y z =
- ( λ Nyz →
- neighborhood-real-bound-each-leq-ℝ
- ( d)
- ( add-ℝ x y)
- ( add-ℝ x z)
- ( preserves-lower-neighborhood-leq-left-add-ℝ d x y z
- ( left-leq-real-bound-neighborhood-ℝ d y z Nyz))
- ( preserves-lower-neighborhood-leq-left-add-ℝ d x z y
- ( right-leq-real-bound-neighborhood-ℝ d y z Nyz))) ,
- ( λ Nxyz →
- neighborhood-real-bound-each-leq-ℝ d y z
- ( reflects-lower-neighborhood-leq-left-add-ℝ d x y z
- ( left-leq-real-bound-neighborhood-ℝ d (x +ℝ y) (x +ℝ z) Nxyz))
- ( reflects-lower-neighborhood-leq-left-add-ℝ d x z y
- ( right-leq-real-bound-neighborhood-ℝ d (x +ℝ y) (x +ℝ z) Nxyz)))
+ ( is-short-map-left-add-ℝ d y z ,
+ is-expansive-map-left-add-ℝ d y z)
is-isometry-right-add-ℝ :
is-isometry-Metric-Space
diff --git a/src/real-numbers/isometry-negation-real-numbers.lagda.md b/src/real-numbers/isometry-negation-real-numbers.lagda.md
index c12aba0caf9..022ff28dd7c 100644
--- a/src/real-numbers/isometry-negation-real-numbers.lagda.md
+++ b/src/real-numbers/isometry-negation-real-numbers.lagda.md
@@ -74,10 +74,10 @@ module _
where
abstract
- neg-neighborhood-ℝ : (d : ℚ⁺) (x y : ℝ l1) →
+ is-short-map-neg-ℝ : (d : ℚ⁺) (x y : ℝ l1) →
neighborhood-ℝ l1 d x y →
neighborhood-ℝ l1 d (neg-ℝ x) (neg-ℝ y)
- neg-neighborhood-ℝ d x y H =
+ is-short-map-neg-ℝ d x y H =
neighborhood-real-bound-each-leq-ℝ
( d)
( neg-ℝ x)
@@ -108,12 +108,12 @@ module _
( metric-space-ℝ l1)
( neg-ℝ)
is-isometry-neg-ℝ d x y =
- ( neg-neighborhood-ℝ d x y) ,
+ ( is-short-map-neg-ℝ d x y) ,
( ( binary-tr
( neighborhood-ℝ l1 d)
( neg-neg-ℝ x)
( neg-neg-ℝ y)) ∘
- ( neg-neighborhood-ℝ
+ ( is-short-map-neg-ℝ
( d)
( neg-ℝ x)
( neg-ℝ y)))
@@ -128,20 +128,6 @@ module _
### Negation on the real numbers is short
```agda
-abstract
- is-short-map-neg-ℝ :
- {l : Level} →
- is-short-map-Metric-Space
- ( metric-space-ℝ l)
- ( metric-space-ℝ l)
- ( neg-ℝ)
- is-short-map-neg-ℝ =
- is-short-map-is-isometry-Metric-Space
- ( metric-space-ℝ _)
- ( metric-space-ℝ _)
- ( neg-ℝ)
- ( is-isometry-neg-ℝ)
-
short-map-neg-ℝ :
{l : Level} →
short-map-Metric-Space
diff --git a/src/real-numbers/metric-additive-group-of-real-numbers.lagda.md b/src/real-numbers/metric-additive-group-of-real-numbers.lagda.md
index db74d26fd06..1040e36dc20 100644
--- a/src/real-numbers/metric-additive-group-of-real-numbers.lagda.md
+++ b/src/real-numbers/metric-additive-group-of-real-numbers.lagda.md
@@ -41,8 +41,8 @@ metric-ab-add-ℝ l =
( ab-add-ℝ l ,
structure-Pseudometric-Space (pseudometric-space-ℝ l) ,
is-extensional-pseudometric-space-ℝ ,
- is-isometry-neg-ℝ ,
- is-isometry-left-add-ℝ)
+ is-short-map-neg-ℝ ,
+ is-short-map-left-add-ℝ)
complete-metric-ab-add-ℝ : (l : Level) → Complete-Metric-Ab (lsuc l) l
complete-metric-ab-add-ℝ l =