diff --git a/src/analysis.lagda.md b/src/analysis.lagda.md
new file mode 100644
index 0000000000..6acef1adf4
--- /dev/null
+++ b/src/analysis.lagda.md
@@ -0,0 +1,7 @@
+# Analysis
+
+```agda
+module analysis where
+
+open import analysis.metric-semigroups public
+```
diff --git a/src/analysis/metric-semigroups.lagda.md b/src/analysis/metric-semigroups.lagda.md
new file mode 100644
index 0000000000..bf34b54980
--- /dev/null
+++ b/src/analysis/metric-semigroups.lagda.md
@@ -0,0 +1,187 @@
+# Metric semigroups
+
+```agda
+module analysis.metric-semigroups where
+```
+
+Imports
+
+```agda
+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.propositions
+open import foundation.sets
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import group-theory.semigroups
+
+open import metric-spaces.metric-space-of-short-functions-metric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.short-functions-metric-spaces
+```
+
+
+
+## Idea
+
+A {{#concept "metric semigroup" Agda=Metric-Semigroup}} is a
+[metric-space](metric-spaces.metric-spaces.md) equipped with a
+[short](metric-spaces.short-functions-metric-spaces.md)
+[associative binary operator](group-theory.semigroups.md).
+
+## Definitions
+
+### Associative short binary operators
+
+```agda
+module _
+ {l1 l2 : Level} (A : Metric-Space l1 l2)
+ where
+
+ mul-short-mul-Metric-Space :
+ short-function-Metric-Space
+ ( A)
+ ( metric-space-of-short-functions-Metric-Space A A) →
+ type-Metric-Space A →
+ type-Metric-Space A →
+ type-Metric-Space A
+ mul-short-mul-Metric-Space f =
+ ( map-short-function-Metric-Space A A) ∘
+ ( map-short-function-Metric-Space
+ ( A)
+ ( metric-space-of-short-functions-Metric-Space A A)
+ ( f))
+
+ is-associative-prop-short-mul-Metric-Space :
+ short-function-Metric-Space
+ ( A)
+ ( metric-space-of-short-functions-Metric-Space A A) →
+ Prop l1
+ is-associative-prop-short-mul-Metric-Space f =
+ let
+ μ : type-Metric-Space A → type-Metric-Space A → type-Metric-Space A
+ μ = mul-short-mul-Metric-Space f
+ in
+ Π-Prop
+ ( type-Metric-Space A)
+ ( λ x →
+ Π-Prop
+ ( type-Metric-Space A)
+ ( λ y →
+ Π-Prop
+ ( type-Metric-Space A)
+ ( λ z →
+ Id-Prop
+ ( set-Metric-Space A)
+ ( μ (μ x y) z)
+ ( μ x (μ y z)))))
+```
+
+### Metric semigroups
+
+```agda
+Metric-Semigroup : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
+Metric-Semigroup l1 l2 =
+ Σ ( Metric-Space l1 l2)
+ ( type-subtype ∘ is-associative-prop-short-mul-Metric-Space)
+
+module _
+ {l1 l2 : Level} (M : Metric-Semigroup l1 l2)
+ where
+
+ metric-space-Metric-Semigroup : Metric-Space l1 l2
+ metric-space-Metric-Semigroup = pr1 M
+
+ set-Metric-Semigroup : Set l1
+ set-Metric-Semigroup = set-Metric-Space metric-space-Metric-Semigroup
+
+ type-Metric-Semigroup : UU l1
+ type-Metric-Semigroup = type-Metric-Space metric-space-Metric-Semigroup
+
+ short-associative-mul-Metric-Semigroup :
+ type-subtype
+ (is-associative-prop-short-mul-Metric-Space metric-space-Metric-Semigroup)
+ short-associative-mul-Metric-Semigroup = pr2 M
+
+ short-mul-Metric-Semigroup :
+ short-function-Metric-Space
+ ( metric-space-Metric-Semigroup)
+ ( metric-space-of-short-functions-Metric-Space
+ metric-space-Metric-Semigroup
+ metric-space-Metric-Semigroup)
+ short-mul-Metric-Semigroup = pr1 short-associative-mul-Metric-Semigroup
+
+ mul-Metric-Semigroup :
+ type-Metric-Semigroup → type-Metric-Semigroup → type-Metric-Semigroup
+ mul-Metric-Semigroup =
+ mul-short-mul-Metric-Space
+ metric-space-Metric-Semigroup
+ short-mul-Metric-Semigroup
+
+ mul-Metric-Semigroup' :
+ type-Metric-Semigroup → type-Metric-Semigroup → type-Metric-Semigroup
+ mul-Metric-Semigroup' x y =
+ mul-Metric-Semigroup y x
+
+ associative-mul-Metric-Semigroup :
+ (x y z : type-Metric-Semigroup) →
+ mul-Metric-Semigroup (mul-Metric-Semigroup x y) z =
+ mul-Metric-Semigroup x (mul-Metric-Semigroup y z)
+ associative-mul-Metric-Semigroup =
+ pr2 short-associative-mul-Metric-Semigroup
+
+ semigroup-Metric-Semigroup : Semigroup l1
+ semigroup-Metric-Semigroup =
+ set-Metric-Semigroup ,
+ mul-Metric-Semigroup ,
+ associative-mul-Metric-Semigroup
+```
+
+## Properties
+
+### Multiplication in a metric semigroup is short
+
+```agda
+module _
+ {l1 l2 : Level} (M : Metric-Semigroup l1 l2) (x : type-Metric-Semigroup M)
+ where
+
+ is-short-mul-Metric-Semigroup :
+ is-short-function-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-Metric-Semigroup M)
+ ( mul-Metric-Semigroup M x)
+ is-short-mul-Metric-Semigroup =
+ is-short-map-short-function-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-Metric-Semigroup M)
+ ( map-short-function-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-of-short-functions-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-Metric-Semigroup M))
+ ( short-mul-Metric-Semigroup M)
+ ( x))
+
+ is-short-mul-Metric-Semigroup' :
+ is-short-function-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-Metric-Semigroup M)
+ ( mul-Metric-Semigroup' M x)
+ is-short-mul-Metric-Semigroup' d y z Nyz =
+ is-short-map-short-function-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-of-short-functions-Metric-Space
+ ( metric-space-Metric-Semigroup M)
+ ( metric-space-Metric-Semigroup M))
+ ( short-mul-Metric-Semigroup M)
+ ( d)
+ ( y)
+ ( z)
+ ( Nyz)
+ ( x)
+```
diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md
index 81a017ff2d..6fbbc78e97 100644
--- a/src/metric-spaces.lagda.md
+++ b/src/metric-spaces.lagda.md
@@ -95,6 +95,7 @@ open import metric-spaces.precategory-of-metric-spaces-and-isometries public
open import metric-spaces.precategory-of-metric-spaces-and-short-functions public
open import metric-spaces.premetric-spaces public
open import metric-spaces.premetric-structures public
+open import metric-spaces.products-metric-spaces public
open import metric-spaces.pseudometric-spaces public
open import metric-spaces.pseudometric-structures public
open import metric-spaces.rational-approximations-of-zero public
diff --git a/src/metric-spaces/metric-space-of-short-functions-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-short-functions-metric-spaces.lagda.md
index 4541811636..a1ada9ab87 100644
--- a/src/metric-spaces/metric-space-of-short-functions-metric-spaces.lagda.md
+++ b/src/metric-spaces/metric-space-of-short-functions-metric-spaces.lagda.md
@@ -7,6 +7,9 @@ module metric-spaces.metric-space-of-short-functions-metric-spaces where
Imports
```agda
+open import foundation.dependent-pair-types
+open import foundation.function-types
+open import foundation.identity-types
open import foundation.universe-levels
open import metric-spaces.metric-space-of-functions-metric-spaces
@@ -43,3 +46,70 @@ module _
( metric-space-of-functions-Metric-Space A B)
( is-short-function-prop-Metric-Space A B)
```
+
+### Mapping a short function of short functions
+
+```agda
+module _
+ { lx lx' ly ly' lz lz' : Level}
+ ( X : Metric-Space lx lx') (Y : Metric-Space ly ly') (Z : Metric-Space lz lz')
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ where
+
+ map²-short-function-Metric-Space :
+ type-Metric-Space X →
+ type-Metric-Space Y →
+ type-Metric-Space Z
+ map²-short-function-Metric-Space =
+ ( map-short-function-Metric-Space Y Z) ∘
+ ( map-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ( f))
+
+ is-short-map²-short-function-Metric-Space :
+ (x : type-Metric-Space X) →
+ is-short-function-Metric-Space
+ ( Y)
+ ( Z)
+ ( map²-short-function-Metric-Space x)
+ is-short-map²-short-function-Metric-Space =
+ ( is-short-map-short-function-Metric-Space Y Z) ∘
+ ( map-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ( f))
+
+ short-map²-short-function-Metric-Space :
+ (x : type-Metric-Space X) → short-function-Metric-Space Y Z
+ short-map²-short-function-Metric-Space x =
+ map²-short-function-Metric-Space x ,
+ is-short-map²-short-function-Metric-Space x
+
+ is-short-short-map²-short-function-Metric-Space :
+ is-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ( short-map²-short-function-Metric-Space)
+ is-short-short-map²-short-function-Metric-Space =
+ is-short-map-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ( f)
+
+ short-short-map²-short-function-Metric-Space :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ short-short-map²-short-function-Metric-Space =
+ short-map²-short-function-Metric-Space ,
+ is-short-short-map²-short-function-Metric-Space
+
+ eq-short-short-map²-short-map-function-Metric-Space :
+ short-short-map²-short-function-Metric-Space = f
+ eq-short-short-map²-short-map-function-Metric-Space =
+ refl
+```
diff --git a/src/metric-spaces/products-metric-spaces.lagda.md b/src/metric-spaces/products-metric-spaces.lagda.md
new file mode 100644
index 0000000000..3e84242cf2
--- /dev/null
+++ b/src/metric-spaces/products-metric-spaces.lagda.md
@@ -0,0 +1,602 @@
+# Products of metric spaces
+
+```agda
+module metric-spaces.products-metric-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.action-on-identifications-functions
+open import foundation.cartesian-product-types
+open import foundation.category-of-sets
+open import foundation.conjunction
+open import foundation.dependent-pair-types
+open import foundation.equality-cartesian-product-types
+open import foundation.equivalences
+open import foundation.existential-quantification
+open import foundation.function-extensionality
+open import foundation.function-types
+open import foundation.homotopies
+open import foundation.identity-types
+open import foundation.isomorphisms-of-sets
+open import foundation.propositions
+open import foundation.sets
+open import foundation.subtypes
+open import foundation.universal-property-dependent-pair-types
+open import foundation.universe-levels
+
+open import metric-spaces.equality-of-metric-spaces
+open import metric-spaces.extensional-premetric-structures
+open import metric-spaces.functions-metric-spaces
+open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.metric-space-of-short-functions-metric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.metric-structures
+open import metric-spaces.monotonic-premetric-structures
+open import metric-spaces.premetric-structures
+open import metric-spaces.pseudometric-structures
+open import metric-spaces.reflexive-premetric-structures
+open import metric-spaces.short-functions-metric-spaces
+open import metric-spaces.symmetric-premetric-structures
+open import metric-spaces.triangular-premetric-structures
+open import metric-spaces.uniformly-continuous-functions-metric-spaces
+```
+
+
+
+## Idea
+
+A pair of [metric spaces](metric-spaces.metric-spaces.md) induces a metric space
+over the [Cartesian product](foundation.cartesian-product-types.md) of the
+carrier types of its arguments.
+
+## Definitions
+
+### Products of metric spaces
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Metric-Space l1 l2) (B : Metric-Space l3 l4)
+ where
+
+ type-product-Metric-Space : UU (l1 ⊔ l3)
+ type-product-Metric-Space = type-Metric-Space A × type-Metric-Space B
+
+ structure-product-Metric-Space : Premetric (l2 ⊔ l4) type-product-Metric-Space
+ structure-product-Metric-Space d (a1 , b1) (a2 , b2) =
+ structure-Metric-Space A d a1 a2 ∧ structure-Metric-Space B d b1 b2
+
+ is-reflexive-structure-product-Metric-Space :
+ is-reflexive-Premetric structure-product-Metric-Space
+ is-reflexive-structure-product-Metric-Space d (a , b) =
+ ( is-reflexive-structure-Metric-Space A d a ,
+ is-reflexive-structure-Metric-Space B d b)
+
+ is-symmetric-structure-product-Metric-Space :
+ is-symmetric-Premetric structure-product-Metric-Space
+ is-symmetric-structure-product-Metric-Space
+ d (a1 , b1) (a2 , b2) (a1~a2 , b1~b2) =
+ ( is-symmetric-structure-Metric-Space A d a1 a2 a1~a2 ,
+ is-symmetric-structure-Metric-Space B d b1 b2 b1~b2)
+
+ is-triangular-structure-product-Metric-Space :
+ is-triangular-Premetric structure-product-Metric-Space
+ is-triangular-structure-product-Metric-Space
+ (a1 , b1) (a2 , b2) (a3 , b3) d12 d23 (a1~a2 , b1~b2) (a2~a3 , b2~b3) =
+ ( is-triangular-structure-Metric-Space A a1 a2 a3 d12 d23 a1~a2 a2~a3 ,
+ is-triangular-structure-Metric-Space B b1 b2 b3 d12 d23 b1~b2 b2~b3)
+
+ is-local-structure-product-Metric-Space :
+ is-local-Premetric structure-product-Metric-Space
+ is-local-structure-product-Metric-Space =
+ is-local-is-tight-Premetric
+ ( structure-product-Metric-Space)
+ ( λ (a1 , b1) (a2 , b2) ind-ab1-ab2 →
+ eq-pair
+ ( is-tight-structure-Metric-Space A a1 a2 (pr1 ∘ ind-ab1-ab2))
+ ( is-tight-structure-Metric-Space B b1 b2 (pr2 ∘ ind-ab1-ab2)))
+
+ is-pseudometric-structure-product-Metric-Space :
+ is-pseudometric-Premetric structure-product-Metric-Space
+ is-pseudometric-structure-product-Metric-Space =
+ is-reflexive-structure-product-Metric-Space ,
+ is-symmetric-structure-product-Metric-Space ,
+ is-triangular-structure-product-Metric-Space
+
+ is-metric-structure-product-Metric-Space :
+ is-metric-Premetric structure-product-Metric-Space
+ is-metric-structure-product-Metric-Space =
+ is-pseudometric-structure-product-Metric-Space ,
+ is-local-structure-product-Metric-Space
+
+ product-Metric-Space : Metric-Space (l1 ⊔ l3) (l2 ⊔ l4)
+ pr1 product-Metric-Space =
+ ( type-product-Metric-Space , structure-product-Metric-Space)
+ pr2 product-Metric-Space = is-metric-structure-product-Metric-Space
+```
+
+## Properties
+
+### The projection maps on a product metric space are short
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Metric-Space l1 l2) (B : Metric-Space l3 l4)
+ where
+
+ is-short-pr1-product-Metric-Space :
+ is-short-function-Metric-Space (product-Metric-Space A B) A pr1
+ is-short-pr1-product-Metric-Space _ _ _ = pr1
+
+ is-short-pr2-product-Metric-Space :
+ is-short-function-Metric-Space (product-Metric-Space A B) B pr2
+ is-short-pr2-product-Metric-Space _ _ _ = pr2
+```
+
+### The pairing map is short
+
+```agda
+module _
+ {lx lx' ly ly' : Level} (X : Metric-Space lx lx') (Y : Metric-Space ly ly')
+ where
+
+ is-short-pair-product-Metric-Space :
+ (x : type-Metric-Space X) →
+ is-short-function-Metric-Space
+ ( Y)
+ ( product-Metric-Space X Y)
+ ( pair x)
+ is-short-pair-product-Metric-Space x d y y' Nyy' =
+ ( refl-structure-Metric-Space X d x , Nyy')
+
+ short-pair-product-Metric-Space :
+ type-Metric-Space X →
+ short-function-Metric-Space Y (product-Metric-Space X Y)
+ short-pair-product-Metric-Space x =
+ ( pair x , is-short-pair-product-Metric-Space x)
+
+ is-short-short-pair-product-Metric-Space :
+ is-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space
+ ( Y)
+ ( product-Metric-Space X Y))
+ ( short-pair-product-Metric-Space)
+ is-short-short-pair-product-Metric-Space d x x' Nxx' y =
+ ( Nxx' , refl-structure-Metric-Space Y d y)
+
+ short-pair-Metric-Space :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space
+ ( Y)
+ ( product-Metric-Space X Y))
+ short-pair-Metric-Space =
+ short-pair-product-Metric-Space ,
+ is-short-short-pair-product-Metric-Space
+```
+
+### Currying short maps from a product metric space
+
+```agda
+module _
+ {lx lx' ly ly' lz lz' : Level}
+ (X : Metric-Space lx lx') (Y : Metric-Space ly ly') (Z : Metric-Space lz lz')
+ (f : short-function-Metric-Space (product-Metric-Space X Y) Z)
+ where
+
+ map-ev-pair-short-function-product-Metric-Space :
+ type-Metric-Space X →
+ type-Metric-Space Y →
+ type-Metric-Space Z
+ map-ev-pair-short-function-product-Metric-Space x y =
+ map-short-function-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( f)
+ ( x , y)
+
+ is-short-map-ev-pair-short-function-product-Metric-Space :
+ (x : type-Metric-Space X) →
+ is-short-function-Metric-Space
+ ( Y)
+ ( Z)
+ ( map-ev-pair-short-function-product-Metric-Space x)
+ is-short-map-ev-pair-short-function-product-Metric-Space x d y y' =
+ ( is-short-map-short-function-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( f)
+ ( d)
+ ( x , y)
+ ( x , y')) ∘
+ ( is-short-pair-product-Metric-Space X Y x d y y')
+
+ short-map-ev-pair-short-function-product-Metric-Space :
+ (x : type-Metric-Space X) →
+ short-function-Metric-Space Y Z
+ short-map-ev-pair-short-function-product-Metric-Space x =
+ map-ev-pair-short-function-product-Metric-Space x ,
+ is-short-map-ev-pair-short-function-product-Metric-Space x
+
+ is-short-short-map-ev-pair-short-function-product-Metric-Space :
+ is-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ( short-map-ev-pair-short-function-product-Metric-Space)
+ is-short-short-map-ev-pair-short-function-product-Metric-Space d x x' Nxx' y =
+ is-short-map-short-function-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( f)
+ ( d)
+ ( x , y)
+ ( x' , y)
+ ( is-short-short-pair-product-Metric-Space X Y d x x' Nxx' y)
+
+ ev-pair-short-function-product-Metric-Space :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ev-pair-short-function-product-Metric-Space =
+ short-map-ev-pair-short-function-product-Metric-Space ,
+ is-short-short-map-ev-pair-short-function-product-Metric-Space
+```
+
+### Currying short maps from a product metric space is preserves and reflects neighborhoods
+
+```agda
+module _
+ {lx lx' ly ly' lz lz' : Level}
+ (X : Metric-Space lx lx') (Y : Metric-Space ly ly') (Z : Metric-Space lz lz')
+ (d : ℚ⁺)
+ (f g : short-function-Metric-Space (product-Metric-Space X Y) Z)
+ where
+
+ preserves-neighborhood-ev-pair-short-function-product-Metric-Space :
+ neighborhood-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z))
+ ( d)
+ ( f)
+ ( g) →
+ neighborhood-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ ( d)
+ ( ev-pair-short-function-product-Metric-Space X Y Z f)
+ ( ev-pair-short-function-product-Metric-Space X Y Z g)
+ preserves-neighborhood-ev-pair-short-function-product-Metric-Space
+ Nfg x y =
+ Nfg (x , y)
+
+ reflects-neighborhood-ev-pair-short-function-product-Metric-Space :
+ neighborhood-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ ( d)
+ ( ev-pair-short-function-product-Metric-Space X Y Z f)
+ ( ev-pair-short-function-product-Metric-Space X Y Z g) →
+ neighborhood-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z))
+ ( d)
+ ( f)
+ ( g)
+ reflects-neighborhood-ev-pair-short-function-product-Metric-Space
+ Nfg (x , y) =
+ Nfg x y
+```
+
+### Currying short maps from a product metric space is an isometry
+
+```agda
+module _
+ {lx lx' ly ly' lz lz' : Level}
+ (X : Metric-Space lx lx') (Y : Metric-Space ly ly') (Z : Metric-Space lz lz')
+ where
+
+ is-isometry-ev-pair-short-function-product-Metric-Space :
+ is-isometry-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z))
+ ( metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ ( ev-pair-short-function-product-Metric-Space X Y Z)
+ is-isometry-ev-pair-short-function-product-Metric-Space d f g =
+ ( preserves-neighborhood-ev-pair-short-function-product-Metric-Space
+ X
+ Y
+ Z
+ d
+ f
+ g) ,
+ ( reflects-neighborhood-ev-pair-short-function-product-Metric-Space
+ X
+ Y
+ Z
+ d
+ f
+ g)
+
+ isometry-ev-pair-short-function-product-Metric-Space :
+ isometry-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z))
+ ( metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ isometry-ev-pair-short-function-product-Metric-Space =
+ ev-pair-short-function-product-Metric-Space X Y Z ,
+ is-isometry-ev-pair-short-function-product-Metric-Space
+```
+
+### Uncurrying short maps between metric spaces
+
+```agda
+module _
+ {lx lx' ly ly' lz lz' : Level}
+ (X : Metric-Space lx lx') (Y : Metric-Space ly ly') (Z : Metric-Space lz lz')
+ where
+
+ map-ind-short-function-product-Metric-Space :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z) →
+ map-type-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ map-ind-short-function-product-Metric-Space f (x , y) =
+ map²-short-function-Metric-Space X Y Z f x y
+
+ eq-map-ev-pair-ind-short-function-product-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)) →
+ map-ind-short-function-product-Metric-Space
+ ( ev-pair-short-function-product-Metric-Space X Y Z f) =
+ map-short-function-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( f)
+ eq-map-ev-pair-ind-short-function-product-Metric-Space f =
+ refl
+
+ all-eq-preimage-ev-pair-short-function-product-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)) →
+ ( g g' : short-function-Metric-Space (product-Metric-Space X Y) Z) →
+ ( ev-pair-short-function-product-Metric-Space X Y Z g = f) →
+ ( ev-pair-short-function-product-Metric-Space X Y Z g' = f) →
+ ( g = g')
+ all-eq-preimage-ev-pair-short-function-product-Metric-Space f g g' H H' =
+ eq-type-subtype
+ ( is-short-function-prop-Metric-Space (product-Metric-Space X Y) Z)
+ ( ( inv (eq-map-ev-pair-ind-short-function-product-Metric-Space g)) ∙
+ ( ap map-ind-short-function-product-Metric-Space H) ∙
+ ( ap map-ind-short-function-product-Metric-Space (inv H') ∙
+ ( eq-map-ev-pair-ind-short-function-product-Metric-Space g')))
+
+ all-eq-fiber-ev-pair-short-function-product-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)) →
+ ( g g' :
+ Σ ( short-function-Metric-Space (product-Metric-Space X Y) Z)
+ ( λ g → ev-pair-short-function-product-Metric-Space X Y Z g = f)) →
+ ( g = g')
+ all-eq-fiber-ev-pair-short-function-product-Metric-Space f g g' =
+ eq-type-subtype
+ ( λ h →
+ Id-Prop
+ ( set-Metric-Space
+ ( metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)))
+ ( ev-pair-short-function-product-Metric-Space X Y Z h)
+ ( f))
+ ( all-eq-preimage-ev-pair-short-function-product-Metric-Space
+ ( f)
+ ( pr1 g)
+ ( pr1 g')
+ ( pr2 g)
+ ( pr2 g'))
+
+ is-prop-fiber-ev-pair-short-function-product-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)) →
+ is-prop
+ ( Σ ( short-function-Metric-Space (product-Metric-Space X Y) Z)
+ ( λ g → ev-pair-short-function-product-Metric-Space X Y Z g = f))
+ is-prop-fiber-ev-pair-short-function-product-Metric-Space =
+ is-prop-all-elements-equal ∘
+ all-eq-fiber-ev-pair-short-function-product-Metric-Space
+
+ lemma-neighborhood-map-ind-short-function-product-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)) →
+ (dx dy : ℚ⁺) →
+ (x x' : type-Metric-Space X) →
+ (y y' : type-Metric-Space Y) →
+ neighborhood-Metric-Space X dx x x' →
+ neighborhood-Metric-Space Y dy y y' →
+ neighborhood-Metric-Space
+ ( Z)
+ ( dx +ℚ⁺ dy)
+ ( map-ind-short-function-product-Metric-Space f ( x , y))
+ ( map-ind-short-function-product-Metric-Space f ( x' , y'))
+ lemma-neighborhood-map-ind-short-function-product-Metric-Space
+ f dx dy x x' y y' Nxx' Nyy' =
+ is-triangular-structure-Metric-Space
+ ( Z)
+ ( map-ind-short-function-product-Metric-Space f (x , y))
+ ( map-ind-short-function-product-Metric-Space f (x' , y))
+ ( map-ind-short-function-product-Metric-Space f (x' , y'))
+ ( dx)
+ ( dy)
+ ( is-short-map²-short-function-Metric-Space
+ ( X)
+ ( Y)
+ ( Z)
+ ( f)
+ ( x')
+ ( dy)
+ ( y)
+ ( y')
+ ( Nyy'))
+ ( is-short-map-short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ ( f)
+ ( dx)
+ ( x)
+ ( x')
+ ( Nxx')
+ ( y))
+
+ is-uniformly-continuous-map-ind-short-function-product-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)) →
+ is-uniformly-continuous-map-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( map-ind-short-function-product-Metric-Space f)
+ is-uniformly-continuous-map-ind-short-function-product-Metric-Space f =
+ intro-exists
+ modulus-le-double-le-ℚ⁺
+ le-double-is-modulus-of-uc-map-ind-short-function-product-Metric-Space
+ where
+
+ le-double-is-modulus-of-uc-map-ind-short-function-product-Metric-Space :
+ is-modulus-of-uniform-continuity-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( map-ind-short-function-product-Metric-Space f)
+ ( modulus-le-double-le-ℚ⁺)
+ le-double-is-modulus-of-uc-map-ind-short-function-product-Metric-Space
+ (x , y) d (x' , y') (Nxx' , Nyy') =
+ is-monotonic-structure-Metric-Space
+ ( Z)
+ ( map-ind-short-function-product-Metric-Space f (x , y))
+ ( map-ind-short-function-product-Metric-Space f (x' , y'))
+ ( (modulus-le-double-le-ℚ⁺ d) +ℚ⁺ (modulus-le-double-le-ℚ⁺ d))
+ ( d)
+ ( le-double-le-modulus-le-double-le-ℚ⁺ d)
+ ( lemma-neighborhood-map-ind-short-function-product-Metric-Space
+ ( f)
+ ( modulus-le-double-le-ℚ⁺ d)
+ ( modulus-le-double-le-ℚ⁺ d)
+ ( x)
+ ( x')
+ ( y)
+ ( y')
+ ( Nxx')
+ ( Nyy'))
+```
+
+```agda
+module _
+ {lx lx' ly ly' lz lz' : Level}
+ (X : Metric-Space lx lx') (Y : Metric-Space ly ly') (Z : Metric-Space lz lz')
+ where
+
+ is-short-map-ind-short-function-prop-Metric-Space :
+ Prop (lx ⊔ lx' ⊔ ly ⊔ ly' ⊔ lz ⊔ lz')
+ is-short-map-ind-short-function-prop-Metric-Space =
+ Π-Prop
+ ( short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ ( ( is-short-function-prop-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)) ∘
+ ( map-ind-short-function-product-Metric-Space X Y Z))
+
+ is-short-map-ind-short-function-Metric-Space :
+ UU (lx ⊔ lx' ⊔ ly ⊔ ly' ⊔ lz ⊔ lz')
+ is-short-map-ind-short-function-Metric-Space =
+ type-Prop is-short-map-ind-short-function-prop-Metric-Space
+
+ lemma-is-short-map-ind-short-function-Metric-Space :
+ ( f :
+ short-function-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)) →
+ ( let
+ map-f : type-Metric-Space X → type-Metric-Space Y → type-Metric-Space Z
+ map-f = map²-short-function-Metric-Space X Y Z f
+ in
+ (d : ℚ⁺) (x x' : type-Metric-Space X) (y y' : type-Metric-Space Y) →
+ neighborhood-Metric-Space X d x x' →
+ neighborhood-Metric-Space Y d y y' →
+ neighborhood-Metric-Space Z d (map-f x y) (map-f x' y')) →
+ is-short-function-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z)
+ ( map-ind-short-function-product-Metric-Space X Y Z f)
+ lemma-is-short-map-ind-short-function-Metric-Space
+ f H d (x , y) (x' , y') N = H d x x' y y' (pr1 N) (pr2 N)
+
+ is-equiv-ev-pair-is-short-map-ind-short-function-Metric-Space :
+ is-short-map-ind-short-function-Metric-Space →
+ is-equiv (ev-pair-short-function-product-Metric-Space X Y Z)
+ is-equiv-ev-pair-is-short-map-ind-short-function-Metric-Space H =
+ is-equiv-is-invertible
+ ( λ f → map-ind-short-function-product-Metric-Space X Y Z f , H f)
+ ( λ f →
+ eq-type-subtype
+ ( is-short-function-prop-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ ( eq-htpy
+ ( λ x →
+ eq-type-subtype
+ ( is-short-function-prop-Metric-Space Y Z)
+ ( eq-htpy (λ y → refl)))))
+ ( λ f →
+ eq-type-subtype
+ ( is-short-function-prop-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z))
+ ( refl))
+
+ lemma-eq-short-ind-short-function-Metric-Space :
+ is-short-map-ind-short-function-Metric-Space →
+ metric-space-of-short-functions-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z) =
+ metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z)
+ lemma-eq-short-ind-short-function-Metric-Space H =
+ eq-isometric-equiv-Metric-Space'
+ ( metric-space-of-short-functions-Metric-Space
+ ( product-Metric-Space X Y)
+ ( Z))
+ ( metric-space-of-short-functions-Metric-Space
+ ( X)
+ ( metric-space-of-short-functions-Metric-Space Y Z))
+ ( ev-pair-short-function-product-Metric-Space X Y Z ,
+ is-equiv-ev-pair-is-short-map-ind-short-function-Metric-Space H ,
+ is-isometry-ev-pair-short-function-product-Metric-Space X Y Z)
+```
diff --git a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md
index 2089657c54..cbe4bd1f06 100644
--- a/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md
+++ b/src/metric-spaces/uniformly-continuous-functions-metric-spaces.lagda.md
@@ -49,6 +49,11 @@ module _
( premetric-Metric-Space Y)
( f)
+ is-modulus-of-uniform-continuity-Metric-Space :
+ (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l2 ⊔ l4)
+ is-modulus-of-uniform-continuity-Metric-Space =
+ type-Prop ∘ is-modulus-of-uniform-continuity-prop-Metric-Space
+
modulus-of-uniform-continuity-map-Metric-Space : UU (l1 ⊔ l2 ⊔ l4)
modulus-of-uniform-continuity-map-Metric-Space =
type-subtype is-modulus-of-uniform-continuity-prop-Metric-Space