diff --git a/src/functional-analysis.lagda.md b/src/functional-analysis.lagda.md
index 485d15d2e3..7e96a1b208 100644
--- a/src/functional-analysis.lagda.md
+++ b/src/functional-analysis.lagda.md
@@ -6,13 +6,16 @@ module functional-analysis where
open import functional-analysis.absolute-convergence-series-real-banach-spaces public
open import functional-analysis.additive-complete-metric-abelian-groups-real-banach-spaces public
open import functional-analysis.convergent-series-real-banach-spaces public
+open import functional-analysis.differentiable-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces public
open import functional-analysis.metric-abelian-groups-normed-real-vector-spaces public
+open import functional-analysis.modulated-uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces public
open import functional-analysis.ratio-test-series-real-banach-spaces public
open import functional-analysis.real-banach-spaces public
open import functional-analysis.real-hilbert-spaces public
open import functional-analysis.series-real-banach-spaces public
open import functional-analysis.standard-euclidean-hilbert-spaces public
open import functional-analysis.sums-of-finite-sequences-of-elements-real-banach-spaces public
+open import functional-analysis.uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces public
```
## External links
diff --git a/src/functional-analysis/differentiable-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.lagda.md b/src/functional-analysis/differentiable-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.lagda.md
new file mode 100644
index 0000000000..7612a4047b
--- /dev/null
+++ b/src/functional-analysis/differentiable-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.lagda.md
@@ -0,0 +1,846 @@
+# Differentiable maps from proper closed intervals on ℝ to normed real vector spaces
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module functional-analysis.differentiable-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.minimum-positive-rational-numbers
+open import elementary-number-theory.multiplication-positive-rational-numbers
+open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.action-on-identifications-binary-functions
+open import foundation.action-on-identifications-functions
+open import foundation.dependent-pair-types
+open import foundation.dependent-products-propositions
+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.inhabited-subtypes
+open import foundation.propositional-truncations
+open import foundation.propositions
+open import foundation.sets
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import functional-analysis.modulated-uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces
+open import functional-analysis.uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces
+
+open import group-theory.abelian-groups
+
+open import linear-algebra.normed-real-vector-spaces
+
+open import lists.sequences
+
+open import metric-spaces.limits-of-sequences-metric-spaces
+
+open import order-theory.large-posets
+
+open import real-numbers.absolute-value-real-numbers
+open import real-numbers.accumulation-points-subsets-real-numbers
+open import real-numbers.addition-nonnegative-real-numbers
+open import real-numbers.addition-real-numbers
+open import real-numbers.apartness-real-numbers
+open import real-numbers.difference-real-numbers
+open import real-numbers.distance-real-numbers
+open import real-numbers.inequalities-addition-and-subtraction-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.multiplication-nonnegative-real-numbers
+open import real-numbers.multiplication-positive-real-numbers
+open import real-numbers.multiplication-real-numbers
+open import real-numbers.multiplicative-inverses-nonzero-real-numbers
+open import real-numbers.negation-real-numbers
+open import real-numbers.nonnegative-real-numbers
+open import real-numbers.nonzero-real-numbers
+open import real-numbers.proper-closed-intervals-real-numbers
+open import real-numbers.rational-real-numbers
+open import real-numbers.strict-inequality-real-numbers
+```
+
+
+
+## Idea
+
+Given a map `f` from a
+[proper closed interval](real-numbers.proper-closed-intervals-real-numbers.md)
+`[a, b]` of [real numbers](real-numbers.dedekind-real-numbers.md) to a
+[normed real vector space](linear-algebra.normed-real-vector-spaces.md) `V`, `g`
+is a
+{{#concept "derivative" Disambiguation="of map from a proper closed interval in ℝ to a normed real vector space" WD="derivative" WDID=Q29175 Agda=is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space}}
+of `f` if there [exists](foundation.existential-quantification.md) a modulus
+function `μ` such that for `ε : ℚ⁺` and any `x` and `y` in `[a, b]` within a
+`μ(ε)`-[neighborhood](real-numbers.metric-space-of-real-numbers.md) of each
+other, we have $$∥f(y) - f(x) - (y - x)g(x)∥ ≤ ε|y - x|.$$
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f g : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ where
+
+ is-modulus-of-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ subtype (lsuc l1) (ℚ⁺ → ℚ⁺)
+ is-modulus-of-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ μ =
+ Π-Prop
+ ( ℚ⁺)
+ ( λ ε →
+ Π-Prop
+ ( type-proper-closed-interval-ℝ l1 [a,b])
+ ( λ (x , x∈[a,b]) →
+ Π-Prop
+ ( type-proper-closed-interval-ℝ l1 [a,b])
+ ( λ (y , y∈[a,b]) →
+ hom-Prop
+ ( neighborhood-prop-ℝ l1 (μ ε) x y)
+ ( leq-prop-ℝ
+ ( dist-Normed-ℝ-Vector-Space V
+ ( diff-Normed-ℝ-Vector-Space V
+ ( f (y , y∈[a,b]))
+ ( f (x , x∈[a,b])))
+ ( mul-Normed-ℝ-Vector-Space V (y -ℝ x) (g (x , x∈[a,b]))))
+ ( real-ℚ⁺ ε *ℝ dist-ℝ y x)))))
+
+ is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ (ℚ⁺ → ℚ⁺) → UU (lsuc l1)
+ is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-in-subtype
+ ( is-modulus-of-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+ is-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ Prop (lsuc l1)
+ is-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-inhabited-subtype-Prop
+ ( is-modulus-of-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ UU (lsuc l1)
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ type-Prop
+ ( is-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ where
+
+ is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ (type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V) →
+ UU (lsuc l1 ⊔ l2)
+ is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space f =
+ Σ ( type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ ( is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+
+ differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ UU (lsuc l1 ⊔ l2)
+ differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ Σ ( type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ ( is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+ map-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space →
+ type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V
+ map-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space = pr1
+
+ map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space →
+ type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V
+ map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ pr1 ∘ pr2
+
+ is-derivative-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ (f : differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space) →
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( map-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( f))
+ ( map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( f))
+ is-derivative-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ pr2 ∘ pr2
+```
+
+## Properties
+
+### Proving the derivative of a map from a modulus
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f g : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ where abstract
+
+ is-derivative-modulus-of-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ ( (ε : ℚ⁺) →
+ Σ ( ℚ⁺)
+ ( λ δ →
+ (x y : type-proper-closed-interval-ℝ l1 [a,b]) →
+ neighborhood-ℝ l1 δ (pr1 x) (pr1 y) →
+ leq-ℝ
+ ( dist-Normed-ℝ-Vector-Space V
+ ( diff-Normed-ℝ-Vector-Space V (f y) (f x))
+ ( mul-Normed-ℝ-Vector-Space V (pr1 y -ℝ pr1 x) (g x)))
+ ( real-ℚ⁺ ε *ℝ dist-ℝ (pr1 y) (pr1 x)))) →
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( g)
+ is-derivative-modulus-of-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ M =
+ intro-exists (pr1 ∘ M) (pr2 ∘ M)
+```
+
+### If `g` is a derivative of `f`, and `aₙ` is a sequence accumulating to `x`, and the limit exists, then `g x` is equal to the limit of `(f aₙ - f x)/(aₙ - x)` as `n → ∞`
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ ((x , x∈[a,b]) : type-proper-closed-interval-ℝ l1 [a,b])
+ (y@(sequence-y , _) :
+ sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( x))
+ where
+
+ sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ sequence (type-Normed-ℝ-Vector-Space V)
+ sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ n =
+ mul-Normed-ℝ-Vector-Space
+ ( V)
+ ( real-inv-nonzero-ℝ
+ ( nonzero-diff-apart-ℝ
+ ( real-sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( x)
+ ( y)
+ ( n))
+ ( x)
+ ( apart-sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( x)
+ ( y)
+ ( n))))
+ ( diff-Normed-ℝ-Vector-Space V
+ ( f (sequence-y n))
+ ( f (x , x∈[a,b])))
+
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f g : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ (x@(xℝ , xℝ∈[a,b]) : type-proper-closed-interval-ℝ l1 [a,b])
+ (y@(seq-y , apart-y , lim-y→x) :
+ sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( xℝ))
+ where abstract
+
+ is-limit-sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( g) →
+ is-limit-sequence-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( x)
+ ( y))
+ ( g x)
+ is-limit-sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ is-derivative-f-g =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( is-limit-prop-sequence-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( x)
+ ( y))
+ ( g x))
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ seq-deriv =
+ sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( x)
+ ( y)
+ nonzero-diff n =
+ nonzero-diff-apart-ℝ
+ ( real-sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( xℝ)
+ ( y)
+ ( n))
+ ( xℝ)
+ ( apart-sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( xℝ)
+ ( y)
+ ( n))
+ real-nonzero-diff n = real-nonzero-ℝ (nonzero-diff n)
+ dist-V = dist-Normed-ℝ-Vector-Space V
+ _*V_ = mul-Normed-ℝ-Vector-Space V
+ _-V_ = diff-Normed-ℝ-Vector-Space V
+ in do
+ (μ , is-mod-μ) ←
+ is-limit-sequence-accumulating-to-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( xℝ)
+ ( y)
+ (ν , is-mod-ν) ← is-derivative-f-g
+ intro-exists
+ ( μ ∘ ν)
+ ( λ ε n N≤n →
+ chain-of-inequalities
+ dist-V (seq-deriv n) (g x)
+ ≤ dist-V
+ ( seq-deriv n)
+ ( raise-one-ℝ l1 *V g x)
+ by
+ leq-eq-ℝ
+ ( ap-binary
+ ( dist-V)
+ ( refl)
+ ( inv (left-unit-law-mul-Normed-ℝ-Vector-Space V (g x))))
+ ≤ dist-V
+ ( real-inv-nonzero-ℝ (nonzero-diff n) *V (f (seq-y n) -V f x))
+ ( ( real-inv-nonzero-ℝ (nonzero-diff n) *ℝ
+ real-nonzero-diff n) *V
+ ( g x))
+ by
+ leq-eq-ℝ
+ ( ap-binary
+ ( dist-V)
+ ( refl)
+ ( ap-binary
+ ( _*V_)
+ ( inv
+ ( eq-left-inverse-law-mul-nonzero-ℝ (nonzero-diff n)))
+ ( refl)))
+ ≤ dist-V
+ ( real-inv-nonzero-ℝ (nonzero-diff n) *V (f (seq-y n) -V f x))
+ ( ( real-inv-nonzero-ℝ (nonzero-diff n)) *V
+ ( real-nonzero-diff n *V g x))
+ by
+ leq-eq-ℝ
+ ( ap-binary
+ ( dist-V)
+ ( refl)
+ ( associative-mul-Normed-ℝ-Vector-Space V _ _ _))
+ ≤ ( abs-ℝ (real-inv-nonzero-ℝ (nonzero-diff n))) *ℝ
+ ( dist-V (f (seq-y n) -V f x) (real-nonzero-diff n *V g x))
+ by
+ leq-eq-ℝ
+ ( inv
+ ( left-distributive-abs-mul-dist-Normed-ℝ-Vector-Space V
+ ( _)
+ ( _)
+ ( _)))
+ ≤ ( abs-ℝ (real-inv-nonzero-ℝ (nonzero-diff n))) *ℝ
+ ( real-ℚ⁺ ε *ℝ dist-ℝ (pr1 (seq-y n)) xℝ)
+ by
+ preserves-leq-left-mul-ℝ⁰⁺
+ ( nonnegative-abs-ℝ _)
+ ( is-mod-ν
+ ( ε)
+ ( x)
+ ( seq-y n)
+ ( is-symmetric-neighborhood-ℝ
+ ( ν ε)
+ ( pr1 (seq-y n))
+ ( xℝ)
+ ( is-mod-μ (ν ε) n N≤n)))
+ ≤ ( real-ℚ⁺ ε) *ℝ
+ ( ( abs-ℝ (real-inv-nonzero-ℝ (nonzero-diff n))) *ℝ
+ ( dist-ℝ (pr1 (seq-y n)) xℝ))
+ by leq-eq-ℝ (left-swap-mul-ℝ _ _ _)
+ ≤ ( real-ℚ⁺ ε) *ℝ
+ ( abs-ℝ
+ ( real-inv-nonzero-ℝ (nonzero-diff n) *ℝ real-nonzero-diff n))
+ by leq-eq-ℝ (ap-mul-ℝ refl (inv (abs-mul-ℝ _ _)))
+ ≤ real-ℚ⁺ ε *ℝ abs-ℝ one-ℝ
+ by
+ leq-sim-ℝ
+ ( preserves-sim-left-mul-ℝ (real-ℚ⁺ ε) _ _
+ ( preserves-sim-abs-ℝ
+ ( left-inverse-law-mul-nonzero-ℝ (nonzero-diff n))))
+ ≤ real-ℚ⁺ ε *ℝ one-ℝ
+ by leq-eq-ℝ (ap-mul-ℝ refl (abs-real-ℝ⁰⁺ one-ℝ⁰⁺))
+ ≤ real-ℚ⁺ ε
+ by leq-eq-ℝ (right-unit-law-mul-ℝ _))
+```
+
+### Any two derivatives of a map are homotopic
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f g h :
+ type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ where abstract
+
+ htpy-is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( g) →
+ is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( h) →
+ g ~ h
+ htpy-is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ Dg Dh x@(xℝ , x∈[a,b]) =
+ rec-trunc-Prop
+ ( Id-Prop (set-Normed-ℝ-Vector-Space V) (g x) (h x))
+ ( λ y →
+ eq-limit-sequence-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( x)
+ ( y))
+ ( g x)
+ ( h x)
+ ( is-limit-sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( g)
+ ( x)
+ ( y)
+ ( Dg))
+ ( is-limit-sequence-derivative-accumulating-to-point-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( h)
+ ( x)
+ ( y)
+ ( Dh)))
+ ( is-sequential-accumulation-point-is-accumulation-point-subset-ℝ
+ ( subtype-proper-closed-interval-ℝ l1 [a,b])
+ ( xℝ)
+ ( is-accumulation-point-is-in-proper-closed-interval-ℝ
+ ( [a,b])
+ ( xℝ)
+ ( x∈[a,b])))
+```
+
+### Being differentiable is a proposition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ where
+
+ abstract
+ all-elements-equal-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ all-elements-equal
+ ( is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+ all-elements-equal-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ (g , Dg) (h , Dh) =
+ eq-type-subtype
+ ( is-derivative-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+ ( eq-htpy
+ ( htpy-is-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( g)
+ ( h)
+ ( Dg)
+ ( Dh)))
+
+ is-prop-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-prop
+ ( is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+ is-prop-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-prop-all-elements-equal
+ ( all-elements-equal-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+ is-differentiable-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ Prop (lsuc l1 ⊔ l2)
+ is-differentiable-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ ( is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f) ,
+ is-prop-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+```
+
+### A derivative of a map from a proper closed interval to a normed real vector space is uniformly continuous
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f f' : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ (δf : ℚ⁺ → ℚ⁺)
+ (is-mod-derivative-f-f'-δf :
+ is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( f')
+ ( δf))
+ where abstract
+
+ apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ ℚ⁺ → ℚ⁺
+ apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ δf ∘ modulus-le-double-le-ℚ⁺
+
+ is-apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ (ε : ℚ⁺) (x y : type-proper-closed-interval-ℝ l1 [a,b]) →
+ apart-ℝ (pr1 x) (pr1 y) →
+ neighborhood-ℝ _
+ ( apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( ε))
+ ( pr1 x)
+ ( pr1 y) →
+ neighborhood-Normed-ℝ-Vector-Space V ε (f' x) (f' y)
+ is-apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ε x@(xℝ , _) y@(yℝ , _) x#y Nμεxy =
+ let
+ (ε' , ε'+ε'<ε) = bound-double-le-ℚ⁺ ε
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ dist-V = dist-Normed-ℝ-Vector-Space V
+ _*V_ = mul-Normed-ℝ-Vector-Space V
+ _-V_ = diff-Normed-ℝ-Vector-Space V
+ neg-V = neg-Normed-ℝ-Vector-Space V
+ in
+ reflects-leq-left-mul-ℝ⁺
+ ( dist-ℝ xℝ yℝ , is-positive-dist-apart-ℝ x#y)
+ ( _)
+ ( _)
+ ( chain-of-inequalities
+ dist-ℝ xℝ yℝ *ℝ dist-V (f' x) (f' y)
+ ≤ dist-V ((xℝ -ℝ yℝ) *V f' x) ((xℝ -ℝ yℝ) *V f' y)
+ by
+ leq-eq-ℝ
+ ( left-distributive-abs-mul-dist-Normed-ℝ-Vector-Space V
+ ( xℝ -ℝ yℝ)
+ ( f' x)
+ ( f' y))
+ ≤ dist-V ((xℝ -ℝ yℝ) *V f' x) (f x -V f y) +ℝ
+ dist-V (f x -V f y) ((xℝ -ℝ yℝ) *V f' y)
+ by triangular-dist-Normed-ℝ-Vector-Space V _ _ _
+ ≤ dist-V (f x -V f y) ((xℝ -ℝ yℝ) *V f' x) +ℝ
+ dist-V (f x -V f y) ((xℝ -ℝ yℝ) *V f' y)
+ by
+ leq-eq-ℝ
+ ( ap-add-ℝ (symmetric-dist-Normed-ℝ-Vector-Space V _ _) refl)
+ ≤ dist-V (neg-V (f x -V f y)) (neg-V ((xℝ -ℝ yℝ) *V f' x)) +ℝ
+ dist-V (f x -V f y) ((xℝ -ℝ yℝ) *V f' y)
+ by
+ leq-eq-ℝ
+ ( ap-add-ℝ (inv (dist-neg-Normed-ℝ-Vector-Space V _ _)) refl)
+ ≤ dist-V (f y -V f x) (neg-ℝ (xℝ -ℝ yℝ) *V f' x) +ℝ
+ dist-V (f x -V f y) ((xℝ -ℝ yℝ) *V f' y)
+ by
+ leq-eq-ℝ
+ ( ap-add-ℝ
+ ( ap-binary
+ ( dist-V)
+ ( neg-right-subtraction-Ab
+ ( ab-Normed-ℝ-Vector-Space V)
+ ( f x)
+ ( f y))
+ ( inv (left-negative-law-mul-Normed-ℝ-Vector-Space V _ _)))
+ ( refl))
+ ≤ dist-V (f y -V f x) ((yℝ -ℝ xℝ) *V f' x) +ℝ
+ dist-V (f x -V f y) ((xℝ -ℝ yℝ) *V f' y)
+ by
+ leq-eq-ℝ
+ ( ap-add-ℝ
+ ( ap-binary
+ ( dist-V)
+ ( refl)
+ ( ap-binary _*V_ (distributive-neg-diff-ℝ xℝ yℝ) refl))
+ ( refl))
+ ≤ ( real-ℚ⁺ ε' *ℝ dist-ℝ yℝ xℝ) +ℝ
+ ( real-ℚ⁺ ε' *ℝ dist-ℝ xℝ yℝ)
+ by
+ preserves-leq-add-ℝ
+ ( is-mod-derivative-f-f'-δf ε' x y Nμεxy)
+ ( is-mod-derivative-f-f'-δf ε' y x
+ ( is-symmetric-neighborhood-ℝ (δf ε') xℝ yℝ Nμεxy))
+ ≤ ( real-ℚ⁺ ε' *ℝ dist-ℝ xℝ yℝ) +ℝ
+ ( real-ℚ⁺ ε' *ℝ dist-ℝ xℝ yℝ)
+ by
+ leq-eq-ℝ
+ ( ap-add-ℝ (ap-mul-ℝ refl (commutative-dist-ℝ yℝ xℝ)) refl)
+ ≤ (real-ℚ⁺ ε' +ℝ real-ℚ⁺ ε') *ℝ dist-ℝ xℝ yℝ
+ by leq-eq-ℝ (inv (right-distributive-mul-add-ℝ _ _ _))
+ ≤ real-ℚ⁺ (ε' +ℚ⁺ ε') *ℝ dist-ℝ xℝ yℝ
+ by leq-eq-ℝ (ap-mul-ℝ (add-real-ℚ _ _) refl)
+ ≤ real-ℚ⁺ ε *ℝ dist-ℝ xℝ yℝ
+ by
+ preserves-leq-right-mul-ℝ⁰⁺
+ ( nonnegative-dist-ℝ xℝ yℝ)
+ ( preserves-leq-real-ℚ (leq-le-ℚ ε'+ε'<ε))
+ ≤ dist-ℝ xℝ yℝ *ℝ real-ℚ⁺ ε
+ by leq-eq-ℝ (commutative-mul-ℝ _ _))
+
+ is-uniformly-continuous-derivative-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f')
+ is-uniformly-continuous-derivative-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-uniformly-continuous-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ { l5 = l1}
+ ( V)
+ ( [a,b])
+ ( f')
+ ( apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+ ( is-apart-modulus-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (df@(f , f' , Df) :
+ differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b]))
+ where
+
+ abstract
+ is-uniformly-continuous-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( df))
+ is-uniformly-continuous-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ elim-exists
+ ( is-uniformly-continuous-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f'))
+ ( is-uniformly-continuous-derivative-is-modulus-of-derivative-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( f'))
+ ( Df)
+
+ uniformly-continuous-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( l1)
+ ( V)
+ ( [a,b])
+ uniformly-continuous-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ ( f' ,
+ is-uniformly-continuous-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+```
+
+### A differentiable map from a proper closed interval to a normed real vector space is uniformly continuous
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (f : type-proper-closed-interval-ℝ l1 [a,b] → type-Normed-ℝ-Vector-Space V)
+ ((f' , Df) :
+ is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+ where abstract
+
+ is-uniformly-continuous-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ is-uniformly-continuous-is-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( is-uniformly-continuous-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ dist-V = dist-Normed-ℝ-Vector-Space V
+ norm-V = map-norm-Normed-ℝ-Vector-Space V
+ _-V_ = diff-Normed-ℝ-Vector-Space V
+ _*V_ = mul-Normed-ℝ-Vector-Space V
+ (max-|f'|⁰⁺@(max-|f'| , 0≤max-|f'|) , is-max-|f'|) =
+ nonnegative-upper-bound-norm-im-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( uniformly-continuous-map-derivative-differentiable-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f , f' , Df))
+ in do
+ (q , |f'|+1Imports
+
+```agda
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.function-types
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import linear-algebra.normed-real-vector-spaces
+
+open import metric-spaces.modulated-uniformly-continuous-maps-metric-spaces
+
+open import order-theory.large-posets
+
+open import real-numbers.addition-real-numbers
+open import real-numbers.apartness-real-numbers
+open import real-numbers.inequalities-addition-and-subtraction-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.proper-closed-intervals-real-numbers
+open import real-numbers.rational-real-numbers
+```
+
+
+
+## Idea
+
+Given a map `f` from a
+[proper closed interval](real-numbers.proper-closed-intervals-real-numbers.md)
+`[a, b]` in the [real numbers](real-numbers.dedekind-real-numbers.md) to a
+[normed real vector space](linear-algebra.normed-real-vector-spaces.md) `V`, a
+{{#concept "modulus of uniform continuity" Disambiguation="for a map from a proper closed interval in ℝ to a normed real vector space" Agda=is-modulus-of-uniform-continuity-map-proper-closed-interval-real-Normed-ℝ-Vector-Space}}
+for `f` is a
+[modulus of uniform continuity](metric-spaces.modulated-uniformly-continuous-maps-metric-spaces.md)
+of `f` from the [metric space](metric-spaces.metric-spaces.md) of `[a, b]` to
+the metric space of `V`.
+
+## Definition
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l3 l4)
+ (f : type-proper-closed-interval-ℝ l5 [a,b] → type-Normed-ℝ-Vector-Space V)
+ where
+
+ is-modulus-of-uniform-continuity-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ subtype (l1 ⊔ l3 ⊔ l4 ⊔ lsuc l5) (ℚ⁺ → ℚ⁺)
+ is-modulus-of-uniform-continuity-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-modulus-of-uniform-continuity-prop-map-Metric-Space
+ ( metric-space-proper-closed-interval-ℝ l5 [a,b])
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( f)
+
+ is-modulus-of-uniform-continuity-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ (ℚ⁺ → ℚ⁺) → UU (l1 ⊔ l3 ⊔ l4 ⊔ lsuc l5)
+ is-modulus-of-uniform-continuity-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-in-subtype
+ ( is-modulus-of-uniform-continuity-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+ modulus-of-uniform-continuity-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ UU (l1 ⊔ l3 ⊔ l4 ⊔ lsuc l5)
+ modulus-of-uniform-continuity-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ type-subtype
+ ( is-modulus-of-uniform-continuity-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+```
+
+## Properties
+
+### To show a function on a proper closed interval of real numbers is uniformly continuous, it suffices to exhibit a modulus that applies when its arguments are apart
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l3 l4)
+ (f :
+ type-proper-closed-interval-ℝ (l3 ⊔ l4 ⊔ l5) [a,b] →
+ type-Normed-ℝ-Vector-Space V)
+ (μ : ℚ⁺ → ℚ⁺)
+ (H :
+ (ε : ℚ⁺) (x y : type-proper-closed-interval-ℝ (l3 ⊔ l4 ⊔ l5) [a,b]) →
+ apart-ℝ (pr1 x) (pr1 y) →
+ neighborhood-ℝ _ (μ ε) (pr1 x) (pr1 y) →
+ neighborhood-Normed-ℝ-Vector-Space V ε (f x) (f y))
+ where abstract
+
+ modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ ℚ⁺ → ℚ⁺
+ modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ μ ∘ modulus-le-double-le-ℚ⁺
+
+ is-modulus-of-uniform-continuity-modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-modulus-of-uniform-continuity-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ ( modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+ is-modulus-of-uniform-continuity-modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ x ε y Nxy =
+ let
+ (ε' , 2ε'<ε) = bound-double-le-ℚ⁺ ε
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ in
+ elim-exists
+ ( neighborhood-prop-Normed-ℝ-Vector-Space V ε (f x) (f y))
+ ( λ z (z#x , z#y , Nε'zx , Nε'zy) →
+ chain-of-inequalities
+ dist-Normed-ℝ-Vector-Space V (f x) (f y)
+ ≤ dist-Normed-ℝ-Vector-Space V (f x) (f z) +ℝ
+ dist-Normed-ℝ-Vector-Space V (f z) (f y)
+ by triangular-dist-Normed-ℝ-Vector-Space V (f x) (f z) (f y)
+ ≤ real-ℚ⁺ ε' +ℝ real-ℚ⁺ ε'
+ by
+ preserves-leq-add-ℝ
+ ( H ε' x z
+ ( symmetric-apart-ℝ z#x)
+ ( is-symmetric-neighborhood-ℝ (μ ε') (pr1 z) (pr1 x) Nε'zx))
+ ( H ε' z y z#y Nε'zy)
+ ≤ real-ℚ⁺ (ε' +ℚ⁺ ε')
+ by leq-eq-ℝ (add-real-ℚ _ _)
+ ≤ real-ℚ⁺ ε
+ by preserves-leq-real-ℚ (leq-le-ℚ 2ε'<ε))
+ ( exists-element-apart-from-both-in-neighborhood-proper-closed-interval-ℝ
+ ( l3 ⊔ l4 ⊔ l5)
+ ( [a,b])
+ ( x)
+ ( y)
+ ( μ ε')
+ ( Nxy))
+```
diff --git a/src/functional-analysis/uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.lagda.md b/src/functional-analysis/uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.lagda.md
new file mode 100644
index 0000000000..d576692315
--- /dev/null
+++ b/src/functional-analysis/uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.lagda.md
@@ -0,0 +1,176 @@
+# Uniformly continuous maps from proper closed intervals in the real numbers to normed real vector spaces
+
+```agda
+module functional-analysis.uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.positive-rational-numbers
+
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.inhabited-subtypes
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import functional-analysis.modulated-uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces
+
+open import linear-algebra.normed-real-vector-spaces
+
+open import metric-spaces.uniformly-continuous-maps-metric-spaces
+
+open import real-numbers.absolute-value-real-numbers
+open import real-numbers.apartness-real-numbers
+open import real-numbers.inequality-nonnegative-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.nonnegative-real-numbers
+open import real-numbers.proper-closed-intervals-real-numbers
+open import real-numbers.uniformly-continuous-real-maps-proper-closed-intervals-real-numbers
+```
+
+
+
+## Idea
+
+A map `f` from a
+[proper closed interval](real-numbers.proper-closed-intervals-real-numbers.md)
+`[a, b]` in the [real numbers](real-numbers.dedekind-real-numbers.md) to a
+[normed real vector space](linear-algebra.normed-real-vector-spaces.md) `V` is
+{{#concept "uniformly continuous" Disambiguation="uniformly continuous map from a proper closed interval in ℝ to a normed real vector space" Agda=uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space}}
+if it is
+[uniformly continuous](metric-spaces.uniformly-continuous-maps-metric-spaces.md)
+as a map from the [metric space](metric-spaces.metric-spaces.md) of `[a, b]` to
+the metric space of `V`.
+
+## Definition
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l3 l4)
+ where
+
+ is-uniformly-continuous-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ {l5 : Level} →
+ subtype
+ ( l1 ⊔ l3 ⊔ l4 ⊔ lsuc l5)
+ ( type-proper-closed-interval-ℝ l5 [a,b] → type-Normed-ℝ-Vector-Space V)
+ is-uniformly-continuous-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ f =
+ is-inhabited-subtype-Prop
+ ( is-modulus-of-uniform-continuity-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f))
+
+ is-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ {l5 : Level} →
+ (type-proper-closed-interval-ℝ l5 [a,b] → type-Normed-ℝ-Vector-Space V) →
+ UU (l1 ⊔ l3 ⊔ l4 ⊔ lsuc l5)
+ is-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ is-in-subtype
+ ( is-uniformly-continuous-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space)
+
+uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ {l1 l2 l3 l4 : Level} (l5 : Level) → Normed-ℝ-Vector-Space l1 l2 →
+ proper-closed-interval-ℝ l3 l4 → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ lsuc l5)
+uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ l5 V [a,b] =
+ type-subtype
+ ( is-uniformly-continuous-prop-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ { l5 = l5})
+```
+
+## Properties
+
+### To show a function on a proper closed interval of real numbers is uniformly continuous, it suffices to exhibit a modulus that applies when its arguments are apart
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l3 l4)
+ (f :
+ type-proper-closed-interval-ℝ (l3 ⊔ l4 ⊔ l5) [a,b] →
+ type-Normed-ℝ-Vector-Space V)
+ (μ : ℚ⁺ → ℚ⁺)
+ (H :
+ (ε : ℚ⁺) (x y : type-proper-closed-interval-ℝ (l3 ⊔ l4 ⊔ l5) [a,b]) →
+ apart-ℝ (pr1 x) (pr1 y) →
+ neighborhood-ℝ _ (μ ε) (pr1 x) (pr1 y) →
+ neighborhood-Normed-ℝ-Vector-Space V ε (f x) (f y))
+ where abstract
+
+ is-uniformly-continuous-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ is-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( V)
+ ( [a,b])
+ ( f)
+ is-uniformly-continuous-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ intro-exists
+ ( modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ { l5 = l5}
+ ( V)
+ ( [a,b])
+ ( f)
+ ( μ)
+ ( H))
+ ( is-modulus-of-uniform-continuity-modulus-modulus-apart-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ { l5 = l5}
+ ( V)
+ ( [a,b])
+ ( f)
+ ( μ)
+ ( H))
+```
+
+### There is a bound on the norm of the image of a proper closed interval under a uniformly continuous real function
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ ([a,b] : proper-closed-interval-ℝ l1 l1)
+ (ucf@(f , is-uc-f) :
+ uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space
+ ( l1)
+ ( V)
+ ( [a,b]))
+ where abstract
+
+ nonnegative-upper-bound-norm-im-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space :
+ Σ ( ℝ⁰⁺ l1)
+ ( λ b →
+ (x : type-proper-closed-interval-ℝ l1 [a,b]) →
+ leq-ℝ⁰⁺ (nonnegative-norm-Normed-ℝ-Vector-Space V (f x)) b)
+ nonnegative-upper-bound-norm-im-uniformly-continuous-map-proper-closed-interval-real-Normed-ℝ-Vector-Space =
+ let
+ (b , |||fx|||≤b) =
+ nonnegative-upper-bound-abs-im-uniformly-continuous-real-map-proper-closed-interval-ℝ
+ ( [a,b])
+ ( comp-uniformly-continuous-map-Metric-Space
+ ( metric-space-proper-closed-interval-ℝ l1 [a,b])
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-ℝ l1)
+ ( uniformly-continuous-map-norm-Normed-ℝ-Vector-Space V)
+ ( ucf))
+ in
+ ( b ,
+ λ x →
+ transitive-leq-ℝ⁰⁺
+ ( nonnegative-norm-Normed-ℝ-Vector-Space V (f x))
+ ( nonnegative-abs-ℝ (map-norm-Normed-ℝ-Vector-Space V (f x)))
+ ( b)
+ ( |||fx|||≤b x)
+ ( leq-abs-ℝ (map-norm-Normed-ℝ-Vector-Space V (f x))))
+```
+
+## See also
+
+- [Modulated uniformly continuous maps from proper closed intervals in ℝ to normed real vector spaces](functional-analysis.modulated-uniformly-continuous-maps-on-proper-closed-intervals-real-numbers-normed-real-vector-spaces.md)
diff --git a/src/group-theory/abelian-groups.lagda.md b/src/group-theory/abelian-groups.lagda.md
index 962f85ee6e..d2fbd538f8 100644
--- a/src/group-theory/abelian-groups.lagda.md
+++ b/src/group-theory/abelian-groups.lagda.md
@@ -543,6 +543,24 @@ module _
is-unit-right-div-eq-Group (group-Ab A)
```
+### Unit laws of right subtraction
+
+```agda
+module _
+ {l : Level} (G : Ab l) (x : type-Ab G)
+ where abstract
+
+ right-zero-law-right-subtraction-Ab :
+ right-subtraction-Ab G x (zero-Ab G) = x
+ right-zero-law-right-subtraction-Ab =
+ right-unit-law-right-div-Group (group-Ab G) x
+
+ left-unit-law-right-subtraction-Ab :
+ right-subtraction-Ab G (zero-Ab G) x = neg-Ab G x
+ left-unit-law-right-subtraction-Ab =
+ left-unit-law-right-div-Group (group-Ab G) x
+```
+
### If `x + y = 0`, then `y = -x`
```agda
diff --git a/src/group-theory/groups.lagda.md b/src/group-theory/groups.lagda.md
index 85bfdc1f95..a51374aa9d 100644
--- a/src/group-theory/groups.lagda.md
+++ b/src/group-theory/groups.lagda.md
@@ -652,6 +652,23 @@ module _
is-injective-mul-Group G x (p ∙ inv (right-unit-law-mul-Group G x))
```
+### Unit laws of division
+
+```agda
+module _
+ {l : Level} (G : Group l) (x : type-Group G)
+ where abstract
+
+ right-unit-law-right-div-Group :
+ right-div-Group G x (unit-Group G) = x
+ right-unit-law-right-div-Group =
+ ap-mul-Group G refl (inv-unit-Group G) ∙ right-unit-law-mul-Group G x
+
+ left-unit-law-right-div-Group :
+ right-div-Group G (unit-Group G) x = inv-Group G x
+ left-unit-law-right-div-Group = left-unit-law-mul-Group G _
+```
+
### Multiplication of a list of elements in a group
```agda
diff --git a/src/group-theory/homomorphisms-abelian-groups.lagda.md b/src/group-theory/homomorphisms-abelian-groups.lagda.md
index 43fa154acc..ff48c6e169 100644
--- a/src/group-theory/homomorphisms-abelian-groups.lagda.md
+++ b/src/group-theory/homomorphisms-abelian-groups.lagda.md
@@ -195,3 +195,21 @@ right-unit-law-comp-hom-Ab :
right-unit-law-comp-hom-Ab A B =
right-unit-law-comp-hom-Semigroup (semigroup-Ab A) (semigroup-Ab B)
```
+
+### Abelian group homomorphisms preserve subtraction
+
+```agda
+module _
+ {l1 l2 : Level}
+ (G : Ab l1)
+ (H : Ab l2)
+ (φ : hom-Ab G H)
+ where abstract
+
+ preserves-right-subtraction-hom-Ab :
+ {x y : type-Ab G} →
+ map-hom-Ab G H φ (right-subtraction-Ab G x y) =
+ right-subtraction-Ab H (map-hom-Ab G H φ x) (map-hom-Ab G H φ y)
+ preserves-right-subtraction-hom-Ab =
+ preserves-right-div-hom-Group (group-Ab G) (group-Ab H) φ
+```
diff --git a/src/linear-algebra/left-modules-rings.lagda.md b/src/linear-algebra/left-modules-rings.lagda.md
index b266313029..86bdf8c4a4 100644
--- a/src/linear-algebra/left-modules-rings.lagda.md
+++ b/src/linear-algebra/left-modules-rings.lagda.md
@@ -9,6 +9,7 @@ module linear-algebra.left-modules-rings where
```agda
open import elementary-number-theory.ring-of-integers
+open import foundation.action-on-identifications-binary-functions
open import foundation.action-on-identifications-functions
open import foundation.dependent-pair-types
open import foundation.equality-dependent-pair-types
@@ -90,6 +91,16 @@ module _
(x y : type-left-module-Ring) → type-left-module-Ring
add-left-module-Ring = add-Ab ab-left-module-Ring
+ ap-add-left-module-Ring :
+ {x x' : type-left-module-Ring} → x = x' →
+ {y y' : type-left-module-Ring} → y = y' →
+ add-left-module-Ring x y = add-left-module-Ring x' y'
+ ap-add-left-module-Ring = ap-binary add-left-module-Ring
+
+ diff-left-module-Ring :
+ (x y : type-left-module-Ring) → type-left-module-Ring
+ diff-left-module-Ring = right-subtraction-Ab ab-left-module-Ring
+
zero-left-module-Ring : type-left-module-Ring
zero-left-module-Ring = zero-Ab ab-left-module-Ring
@@ -207,6 +218,27 @@ module _
interchange-add-add-Ab (ab-left-module-Ring R M)
```
+### Interchange laws of addition and differences
+
+```agda
+module _
+ {l1 l2 : Level}
+ (R : Ring l1)
+ (M : left-module-Ring l2 R)
+ where abstract
+
+ interchange-add-diff-left-module-Ring :
+ (x y z w : type-left-module-Ring R M) →
+ diff-left-module-Ring R M
+ ( add-left-module-Ring R M x y)
+ ( add-left-module-Ring R M z w) =
+ add-left-module-Ring R M
+ ( diff-left-module-Ring R M x z)
+ ( diff-left-module-Ring R M y w)
+ interchange-add-diff-left-module-Ring =
+ interchange-add-right-subtraction-Ab (ab-left-module-Ring R M)
+```
+
### Negation distributes over addition
```agda
@@ -558,6 +590,53 @@ module _
left-module-hom-left-module-Ring R S h (left-module-ring-Ring S)
```
+### Left distributivity of scalar multiplication over differences
+
+```agda
+module _
+ {l1 l2 : Level}
+ (R : Ring l1)
+ (M : left-module-Ring l2 R)
+ where abstract
+
+ left-distributive-mul-diff-left-module-Ring :
+ (r : type-Ring R) (x y : type-left-module-Ring R M) →
+ mul-left-module-Ring R M r (diff-left-module-Ring R M x y) =
+ diff-left-module-Ring R M
+ ( mul-left-module-Ring R M r x)
+ ( mul-left-module-Ring R M r y)
+ left-distributive-mul-diff-left-module-Ring r x y =
+ ( left-distributive-mul-add-left-module-Ring R M
+ ( r)
+ ( x)
+ ( neg-left-module-Ring R M y)) ∙
+ ( ap-add-left-module-Ring R M
+ ( refl)
+ ( right-negative-law-mul-left-module-Ring R M r y))
+```
+
+### Right distributivity of scalar multiplication over differences
+
+```agda
+module _
+ {l1 l2 : Level}
+ (R : Ring l1)
+ (M : left-module-Ring l2 R)
+ where abstract
+
+ right-distributive-mul-diff-left-module-Ring :
+ (r s : type-Ring R) (x : type-left-module-Ring R M) →
+ mul-left-module-Ring R M (diff-Ring R r s) x =
+ diff-left-module-Ring R M
+ ( mul-left-module-Ring R M r x)
+ ( mul-left-module-Ring R M s x)
+ right-distributive-mul-diff-left-module-Ring r s x =
+ ( right-distributive-mul-add-left-module-Ring R M r (neg-Ring R s) x) ∙
+ ( ap-add-left-module-Ring R M
+ ( refl)
+ ( left-negative-law-mul-left-module-Ring R M s x))
+```
+
## See also
- [Left modules over commutative rings](linear-algebra.left-modules-commutative-rings.md)
diff --git a/src/linear-algebra/normed-real-vector-spaces.lagda.md b/src/linear-algebra/normed-real-vector-spaces.lagda.md
index 53a58db9b7..6110465fb0 100644
--- a/src/linear-algebra/normed-real-vector-spaces.lagda.md
+++ b/src/linear-algebra/normed-real-vector-spaces.lagda.md
@@ -9,9 +9,13 @@ module linear-algebra.normed-real-vector-spaces where
Imports
```agda
+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.dependent-products-propositions
+open import foundation.function-extensionality
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.propositions
@@ -25,23 +29,33 @@ open import group-theory.abelian-groups
open import linear-algebra.real-vector-spaces
open import linear-algebra.seminormed-real-vector-spaces
+open import metric-spaces.cartesian-products-metric-spaces
open import metric-spaces.equality-of-metric-spaces
open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.lipschitz-maps-metric-spaces
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.metrics-of-metric-spaces-are-uniformly-continuous
+open import metric-spaces.rational-neighborhood-relations
+open import metric-spaces.subspaces-metric-spaces
+open import metric-spaces.uniformly-continuous-maps-metric-spaces
+
+open import order-theory.large-posets
open import real-numbers.absolute-value-real-numbers
open import real-numbers.addition-real-numbers
open import real-numbers.dedekind-real-numbers
+open import real-numbers.difference-real-numbers
open import real-numbers.distance-real-numbers
open import real-numbers.inequality-real-numbers
+open import real-numbers.metric-space-of-nonnegative-real-numbers
open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.multiplication-real-numbers
+open import real-numbers.negation-real-numbers
open import real-numbers.nonnegative-real-numbers
-open import real-numbers.raising-universe-levels-real-numbers
open import real-numbers.rational-real-numbers
-open import real-numbers.saturation-inequality-nonnegative-real-numbers
open import real-numbers.similarity-real-numbers
open import real-numbers.zero-real-numbers
```
@@ -126,140 +140,299 @@ module _
type-Normed-ℝ-Vector-Space : UU l2
type-Normed-ℝ-Vector-Space =
type-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space
+```
- add-Normed-ℝ-Vector-Space :
- type-Normed-ℝ-Vector-Space → type-Normed-ℝ-Vector-Space →
- type-Normed-ℝ-Vector-Space
- add-Normed-ℝ-Vector-Space =
- add-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space
+### Properties inherited from the abelian group structure on addition
- commutative-add-Normed-ℝ-Vector-Space :
- (u v : type-Normed-ℝ-Vector-Space) →
- add-Normed-ℝ-Vector-Space u v = add-Normed-ℝ-Vector-Space v u
- commutative-add-Normed-ℝ-Vector-Space =
- commutative-add-Ab ab-Normed-ℝ-Vector-Space
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ (let ab-V = ab-Normed-ℝ-Vector-Space V)
+ where
+
+ add-Normed-ℝ-Vector-Space :
+ type-Normed-ℝ-Vector-Space V → type-Normed-ℝ-Vector-Space V →
+ type-Normed-ℝ-Vector-Space V
+ add-Normed-ℝ-Vector-Space = add-Ab ab-V
diff-Normed-ℝ-Vector-Space :
- type-Normed-ℝ-Vector-Space → type-Normed-ℝ-Vector-Space →
- type-Normed-ℝ-Vector-Space
- diff-Normed-ℝ-Vector-Space =
- diff-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space
+ type-Normed-ℝ-Vector-Space V → type-Normed-ℝ-Vector-Space V →
+ type-Normed-ℝ-Vector-Space V
+ diff-Normed-ℝ-Vector-Space = right-subtraction-Ab ab-V
neg-Normed-ℝ-Vector-Space :
- type-Normed-ℝ-Vector-Space → type-Normed-ℝ-Vector-Space
- neg-Normed-ℝ-Vector-Space =
- neg-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space
-
- neg-neg-Normed-ℝ-Vector-Space :
- (v : type-Normed-ℝ-Vector-Space) →
- neg-Normed-ℝ-Vector-Space (neg-Normed-ℝ-Vector-Space v) = v
- neg-neg-Normed-ℝ-Vector-Space =
- neg-neg-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space
-
- distributive-neg-add-Normed-ℝ-Vector-Space :
- (v w : type-Normed-ℝ-Vector-Space) →
- neg-Normed-ℝ-Vector-Space (add-Normed-ℝ-Vector-Space v w) =
- add-Normed-ℝ-Vector-Space
- ( neg-Normed-ℝ-Vector-Space v)
- ( neg-Normed-ℝ-Vector-Space w)
- distributive-neg-add-Normed-ℝ-Vector-Space =
- distributive-neg-add-Ab ab-Normed-ℝ-Vector-Space
-
- interchange-add-add-Normed-ℝ-Vector-Space :
- (u v w x : type-Normed-ℝ-Vector-Space) →
- add-Normed-ℝ-Vector-Space
- ( add-Normed-ℝ-Vector-Space u v)
- ( add-Normed-ℝ-Vector-Space w x) =
- add-Normed-ℝ-Vector-Space
- ( add-Normed-ℝ-Vector-Space u w)
- ( add-Normed-ℝ-Vector-Space v x)
- interchange-add-add-Normed-ℝ-Vector-Space =
- interchange-add-add-Ab ab-Normed-ℝ-Vector-Space
-
- zero-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space
- zero-Normed-ℝ-Vector-Space =
- zero-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space
-
- left-unit-law-add-Normed-ℝ-Vector-Space :
- (v : type-Normed-ℝ-Vector-Space) →
- add-Normed-ℝ-Vector-Space zero-Normed-ℝ-Vector-Space v = v
- left-unit-law-add-Normed-ℝ-Vector-Space =
- left-unit-law-add-Ab ab-Normed-ℝ-Vector-Space
-
- right-inverse-law-add-Normed-ℝ-Vector-Space :
- (v : type-Normed-ℝ-Vector-Space) →
- diff-Normed-ℝ-Vector-Space v v = zero-Normed-ℝ-Vector-Space
- right-inverse-law-add-Normed-ℝ-Vector-Space =
- right-inverse-law-add-Ab ab-Normed-ℝ-Vector-Space
-
- map-norm-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space → ℝ l1
- map-norm-Normed-ℝ-Vector-Space = pr1 (pr1 norm-Normed-ℝ-Vector-Space)
-
- nonnegative-norm-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space → ℝ⁰⁺ l1
+ type-Normed-ℝ-Vector-Space V → type-Normed-ℝ-Vector-Space V
+ neg-Normed-ℝ-Vector-Space = neg-Ab ab-V
+
+ zero-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space V
+ zero-Normed-ℝ-Vector-Space = zero-Ab ab-V
+
+ is-zero-prop-Normed-ℝ-Vector-Space : subtype l2 (type-Normed-ℝ-Vector-Space V)
+ is-zero-prop-Normed-ℝ-Vector-Space = is-zero-prop-Ab ab-V
+
+ is-zero-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space V → UU l2
+ is-zero-Normed-ℝ-Vector-Space = is-zero-Ab ab-V
+
+ abstract
+ associative-add-Normed-ℝ-Vector-Space :
+ (u v w : type-Normed-ℝ-Vector-Space V) →
+ add-Normed-ℝ-Vector-Space
+ ( add-Normed-ℝ-Vector-Space u v)
+ ( w) =
+ add-Normed-ℝ-Vector-Space
+ ( u)
+ ( add-Normed-ℝ-Vector-Space v w)
+ associative-add-Normed-ℝ-Vector-Space = associative-add-Ab ab-V
+
+ left-unit-law-add-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ add-Normed-ℝ-Vector-Space zero-Normed-ℝ-Vector-Space v = v
+ left-unit-law-add-Normed-ℝ-Vector-Space = left-unit-law-add-Ab ab-V
+
+ right-unit-law-add-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ add-Normed-ℝ-Vector-Space v zero-Normed-ℝ-Vector-Space = v
+ right-unit-law-add-Normed-ℝ-Vector-Space = right-unit-law-add-Ab ab-V
+
+ left-inverse-law-add-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ add-Normed-ℝ-Vector-Space (neg-Normed-ℝ-Vector-Space v) v =
+ zero-Normed-ℝ-Vector-Space
+ left-inverse-law-add-Normed-ℝ-Vector-Space =
+ left-inverse-law-add-Ab ab-V
+
+ right-inverse-law-add-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ diff-Normed-ℝ-Vector-Space v v = zero-Normed-ℝ-Vector-Space
+ right-inverse-law-add-Normed-ℝ-Vector-Space =
+ right-inverse-law-add-Ab ab-V
+
+ commutative-add-Normed-ℝ-Vector-Space :
+ (u v : type-Normed-ℝ-Vector-Space V) →
+ add-Normed-ℝ-Vector-Space u v = add-Normed-ℝ-Vector-Space v u
+ commutative-add-Normed-ℝ-Vector-Space = commutative-add-Ab ab-V
+
+ neg-neg-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ neg-Normed-ℝ-Vector-Space (neg-Normed-ℝ-Vector-Space v) = v
+ neg-neg-Normed-ℝ-Vector-Space = neg-neg-Ab ab-V
+
+ distributive-neg-add-Normed-ℝ-Vector-Space :
+ (v w : type-Normed-ℝ-Vector-Space V) →
+ neg-Normed-ℝ-Vector-Space (add-Normed-ℝ-Vector-Space v w) =
+ add-Normed-ℝ-Vector-Space
+ ( neg-Normed-ℝ-Vector-Space v)
+ ( neg-Normed-ℝ-Vector-Space w)
+ distributive-neg-add-Normed-ℝ-Vector-Space = distributive-neg-add-Ab ab-V
+
+ interchange-add-add-Normed-ℝ-Vector-Space :
+ (u v w x : type-Normed-ℝ-Vector-Space V) →
+ add-Normed-ℝ-Vector-Space
+ ( add-Normed-ℝ-Vector-Space u v)
+ ( add-Normed-ℝ-Vector-Space w x) =
+ add-Normed-ℝ-Vector-Space
+ ( add-Normed-ℝ-Vector-Space u w)
+ ( add-Normed-ℝ-Vector-Space v x)
+ interchange-add-add-Normed-ℝ-Vector-Space =
+ interchange-add-add-Ab ab-V
+
+ eq-is-zero-diff-Normed-ℝ-Vector-Space :
+ {u v : type-Normed-ℝ-Vector-Space V} →
+ is-zero-Normed-ℝ-Vector-Space (diff-Normed-ℝ-Vector-Space u v) →
+ u = v
+ eq-is-zero-diff-Normed-ℝ-Vector-Space =
+ eq-is-zero-right-subtraction-Ab ab-V
+
+ interchange-add-diff-Normed-ℝ-Vector-Space :
+ (x y z w : type-Normed-ℝ-Vector-Space V) →
+ diff-Normed-ℝ-Vector-Space
+ ( add-Normed-ℝ-Vector-Space x y)
+ ( add-Normed-ℝ-Vector-Space z w) =
+ add-Normed-ℝ-Vector-Space
+ ( diff-Normed-ℝ-Vector-Space x z)
+ ( diff-Normed-ℝ-Vector-Space y w)
+ interchange-add-diff-Normed-ℝ-Vector-Space =
+ interchange-add-right-subtraction-Ab ab-V
+```
+
+### Properties inherited from the vector space structure
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ (let vector-space-V = vector-space-Normed-ℝ-Vector-Space V)
+ where
+
+ mul-Normed-ℝ-Vector-Space :
+ ℝ l1 → type-Normed-ℝ-Vector-Space V → type-Normed-ℝ-Vector-Space V
+ mul-Normed-ℝ-Vector-Space = mul-ℝ-Vector-Space vector-space-V
+
+ abstract
+ left-distributive-mul-add-Normed-ℝ-Vector-Space :
+ (c : ℝ l1) (v w : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space c (add-Normed-ℝ-Vector-Space V v w) =
+ add-Normed-ℝ-Vector-Space V
+ ( mul-Normed-ℝ-Vector-Space c v)
+ ( mul-Normed-ℝ-Vector-Space c w)
+ left-distributive-mul-add-Normed-ℝ-Vector-Space =
+ left-distributive-mul-add-ℝ-Vector-Space vector-space-V
+
+ left-distributive-mul-diff-Normed-ℝ-Vector-Space :
+ (c : ℝ l1) (v w : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space c (diff-Normed-ℝ-Vector-Space V v w) =
+ diff-Normed-ℝ-Vector-Space V
+ ( mul-Normed-ℝ-Vector-Space c v)
+ ( mul-Normed-ℝ-Vector-Space c w)
+ left-distributive-mul-diff-Normed-ℝ-Vector-Space =
+ left-distributive-mul-diff-ℝ-Vector-Space vector-space-V
+
+ right-distributive-mul-add-Normed-ℝ-Vector-Space :
+ (c d : ℝ l1) (v : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space (c +ℝ d) v =
+ add-Normed-ℝ-Vector-Space V
+ ( mul-Normed-ℝ-Vector-Space c v)
+ ( mul-Normed-ℝ-Vector-Space d v)
+ right-distributive-mul-add-Normed-ℝ-Vector-Space =
+ right-distributive-mul-add-ℝ-Vector-Space vector-space-V
+
+ right-distributive-mul-diff-Normed-ℝ-Vector-Space :
+ (c d : ℝ l1) (v : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space (c -ℝ d) v =
+ diff-Normed-ℝ-Vector-Space V
+ ( mul-Normed-ℝ-Vector-Space c v)
+ ( mul-Normed-ℝ-Vector-Space d v)
+ right-distributive-mul-diff-Normed-ℝ-Vector-Space =
+ right-distributive-mul-diff-ℝ-Vector-Space vector-space-V
+
+ associative-mul-Normed-ℝ-Vector-Space :
+ (c d : ℝ l1) (v : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space (c *ℝ d) v =
+ mul-Normed-ℝ-Vector-Space c (mul-Normed-ℝ-Vector-Space d v)
+ associative-mul-Normed-ℝ-Vector-Space =
+ associative-mul-ℝ-Vector-Space vector-space-V
+
+ left-unit-law-mul-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space (raise-one-ℝ l1) v = v
+ left-unit-law-mul-Normed-ℝ-Vector-Space =
+ left-unit-law-mul-ℝ-Vector-Space vector-space-V
+
+ left-negative-law-mul-Normed-ℝ-Vector-Space :
+ (c : ℝ l1) (v : type-Normed-ℝ-Vector-Space V) →
+ mul-Normed-ℝ-Vector-Space (neg-ℝ c) v =
+ neg-Normed-ℝ-Vector-Space V (mul-Normed-ℝ-Vector-Space c v)
+ left-negative-law-mul-Normed-ℝ-Vector-Space =
+ left-negative-law-mul-ℝ-Vector-Space vector-space-V
+```
+
+### Norms and distances in a normed vector space
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ (let seminormed-V = seminormed-vector-space-Normed-ℝ-Vector-Space V)
+ where
+
+ map-norm-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space V → ℝ l1
+ map-norm-Normed-ℝ-Vector-Space = pr1 (pr1 (norm-Normed-ℝ-Vector-Space V))
+
+ nonnegative-norm-Normed-ℝ-Vector-Space : type-Normed-ℝ-Vector-Space V → ℝ⁰⁺ l1
nonnegative-norm-Normed-ℝ-Vector-Space =
- nonnegative-seminorm-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space)
+ nonnegative-seminorm-Seminormed-ℝ-Vector-Space seminormed-V
dist-Normed-ℝ-Vector-Space :
- type-Normed-ℝ-Vector-Space → type-Normed-ℝ-Vector-Space → ℝ l1
- dist-Normed-ℝ-Vector-Space =
- dist-Seminormed-ℝ-Vector-Space seminormed-vector-space-Normed-ℝ-Vector-Space
+ type-Normed-ℝ-Vector-Space V → type-Normed-ℝ-Vector-Space V → ℝ l1
+ dist-Normed-ℝ-Vector-Space = dist-Seminormed-ℝ-Vector-Space seminormed-V
nonnegative-dist-Normed-ℝ-Vector-Space :
- type-Normed-ℝ-Vector-Space → type-Normed-ℝ-Vector-Space → ℝ⁰⁺ l1
+ type-Normed-ℝ-Vector-Space V → type-Normed-ℝ-Vector-Space V → ℝ⁰⁺ l1
nonnegative-dist-Normed-ℝ-Vector-Space =
- nonnegative-dist-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space)
+ nonnegative-dist-Seminormed-ℝ-Vector-Space seminormed-V
+
+ is-absolutely-homogeneous-norm-Normed-ℝ-Vector-Space :
+ (c : ℝ l1) (v : type-Normed-ℝ-Vector-Space V) →
+ map-norm-Normed-ℝ-Vector-Space (mul-Normed-ℝ-Vector-Space V c v) =
+ abs-ℝ c *ℝ map-norm-Normed-ℝ-Vector-Space v
+ is-absolutely-homogeneous-norm-Normed-ℝ-Vector-Space =
+ is-absolutely-homogeneous-seminorm-Seminormed-ℝ-Vector-Space seminormed-V
+
+ right-zero-law-dist-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ dist-Normed-ℝ-Vector-Space v (zero-Normed-ℝ-Vector-Space V) =
+ map-norm-Normed-ℝ-Vector-Space v
+ right-zero-law-dist-Normed-ℝ-Vector-Space =
+ right-zero-law-dist-Seminormed-ℝ-Vector-Space seminormed-V
+```
- abstract
- is-extensional-norm-Normed-ℝ-Vector-Space :
- (v : type-Normed-ℝ-Vector-Space) →
- is-zero-ℝ (map-norm-Normed-ℝ-Vector-Space v) →
- v = zero-Normed-ℝ-Vector-Space
- is-extensional-norm-Normed-ℝ-Vector-Space = pr2 norm-Normed-ℝ-Vector-Space
-
- is-extensional-dist-Normed-ℝ-Vector-Space :
- (v w : type-Normed-ℝ-Vector-Space) →
- is-zero-ℝ (dist-Normed-ℝ-Vector-Space v w) →
- v = w
- is-extensional-dist-Normed-ℝ-Vector-Space v w |v-w|=0 =
- eq-is-zero-right-subtraction-Ab
- ( ab-ℝ-Vector-Space vector-space-Normed-ℝ-Vector-Space)
- ( is-extensional-norm-Normed-ℝ-Vector-Space
- ( diff-Normed-ℝ-Vector-Space v w)
- ( |v-w|=0))
-
- refl-dist-Normed-ℝ-Vector-Space :
- (v : type-Normed-ℝ-Vector-Space) →
- is-zero-ℝ (dist-Normed-ℝ-Vector-Space v v)
- refl-dist-Normed-ℝ-Vector-Space =
- is-zero-diagonal-dist-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space)
-
- symmetric-dist-Normed-ℝ-Vector-Space :
- (v w : type-Normed-ℝ-Vector-Space) →
- dist-Normed-ℝ-Vector-Space v w = dist-Normed-ℝ-Vector-Space w v
- symmetric-dist-Normed-ℝ-Vector-Space =
- symmetric-dist-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space)
-
- triangular-norm-Normed-ℝ-Vector-Space :
- (v w : type-Normed-ℝ-Vector-Space) →
- leq-ℝ
- ( map-norm-Normed-ℝ-Vector-Space (add-Normed-ℝ-Vector-Space v w))
- ( map-norm-Normed-ℝ-Vector-Space v +ℝ map-norm-Normed-ℝ-Vector-Space w)
- triangular-norm-Normed-ℝ-Vector-Space =
- triangular-seminorm-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space)
-
- triangular-dist-Normed-ℝ-Vector-Space :
- (u v w : type-Normed-ℝ-Vector-Space) →
- leq-ℝ
- ( dist-Normed-ℝ-Vector-Space u w)
- ( dist-Normed-ℝ-Vector-Space u v +ℝ dist-Normed-ℝ-Vector-Space v w)
- triangular-dist-Normed-ℝ-Vector-Space =
- triangular-dist-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space)
+### The distance function in a normed vector space satisfies the properties of a metric
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ where abstract
+
+ is-extensional-norm-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ is-zero-ℝ (map-norm-Normed-ℝ-Vector-Space V v) →
+ v = zero-Normed-ℝ-Vector-Space V
+ is-extensional-norm-Normed-ℝ-Vector-Space = pr2 (norm-Normed-ℝ-Vector-Space V)
+
+ is-extensional-dist-Normed-ℝ-Vector-Space :
+ (v w : type-Normed-ℝ-Vector-Space V) →
+ is-zero-ℝ (dist-Normed-ℝ-Vector-Space V v w) →
+ v = w
+ is-extensional-dist-Normed-ℝ-Vector-Space v w |v-w|=0 =
+ eq-is-zero-diff-Normed-ℝ-Vector-Space V
+ ( is-extensional-norm-Normed-ℝ-Vector-Space
+ ( diff-Normed-ℝ-Vector-Space V v w)
+ ( |v-w|=0))
+
+ refl-dist-Normed-ℝ-Vector-Space :
+ (v : type-Normed-ℝ-Vector-Space V) →
+ is-zero-ℝ (dist-Normed-ℝ-Vector-Space V v v)
+ refl-dist-Normed-ℝ-Vector-Space =
+ is-zero-diagonal-dist-Seminormed-ℝ-Vector-Space
+ ( seminormed-vector-space-Normed-ℝ-Vector-Space V)
+
+ symmetric-dist-Normed-ℝ-Vector-Space :
+ (v w : type-Normed-ℝ-Vector-Space V) →
+ dist-Normed-ℝ-Vector-Space V v w = dist-Normed-ℝ-Vector-Space V w v
+ symmetric-dist-Normed-ℝ-Vector-Space =
+ symmetric-dist-Seminormed-ℝ-Vector-Space
+ ( seminormed-vector-space-Normed-ℝ-Vector-Space V)
+
+ triangular-norm-Normed-ℝ-Vector-Space :
+ (v w : type-Normed-ℝ-Vector-Space V) →
+ leq-ℝ
+ ( map-norm-Normed-ℝ-Vector-Space V (add-Normed-ℝ-Vector-Space V v w))
+ ( map-norm-Normed-ℝ-Vector-Space V v +ℝ
+ map-norm-Normed-ℝ-Vector-Space V w)
+ triangular-norm-Normed-ℝ-Vector-Space =
+ triangular-seminorm-Seminormed-ℝ-Vector-Space
+ ( seminormed-vector-space-Normed-ℝ-Vector-Space V)
+
+ triangular-dist-Normed-ℝ-Vector-Space :
+ (u v w : type-Normed-ℝ-Vector-Space V) →
+ leq-ℝ
+ ( dist-Normed-ℝ-Vector-Space V u w)
+ ( dist-Normed-ℝ-Vector-Space V u v +ℝ dist-Normed-ℝ-Vector-Space V v w)
+ triangular-dist-Normed-ℝ-Vector-Space =
+ triangular-dist-Seminormed-ℝ-Vector-Space
+ ( seminormed-vector-space-Normed-ℝ-Vector-Space V)
+
+ is-metric-dist-Normed-ℝ-Vector-Space :
+ is-metric-distance-function
+ ( set-Normed-ℝ-Vector-Space V)
+ ( nonnegative-dist-Normed-ℝ-Vector-Space V)
+ is-metric-dist-Normed-ℝ-Vector-Space =
+ ( refl-dist-Normed-ℝ-Vector-Space ,
+ ( λ v w → eq-ℝ⁰⁺ _ _ (symmetric-dist-Normed-ℝ-Vector-Space v w)) ,
+ triangular-dist-Normed-ℝ-Vector-Space ,
+ is-extensional-dist-Normed-ℝ-Vector-Space)
```
### The metric space of a normed vector space
@@ -269,21 +442,10 @@ module _
{l1 l2 : Level} (V : Normed-ℝ-Vector-Space l1 l2)
where
- abstract
- is-metric-dist-Normed-ℝ-Vector-Space :
- is-metric-distance-function
- ( set-Normed-ℝ-Vector-Space V)
- ( nonnegative-dist-Normed-ℝ-Vector-Space V)
- is-metric-dist-Normed-ℝ-Vector-Space =
- ( refl-dist-Normed-ℝ-Vector-Space V ,
- ( λ v w → eq-ℝ⁰⁺ _ _ (symmetric-dist-Normed-ℝ-Vector-Space V v w)) ,
- triangular-dist-Normed-ℝ-Vector-Space V ,
- is-extensional-dist-Normed-ℝ-Vector-Space V)
-
metric-Normed-ℝ-Vector-Space : Metric l1 (set-Normed-ℝ-Vector-Space V)
metric-Normed-ℝ-Vector-Space =
( nonnegative-dist-Normed-ℝ-Vector-Space V ,
- is-metric-dist-Normed-ℝ-Vector-Space)
+ is-metric-dist-Normed-ℝ-Vector-Space V)
metric-space-Normed-ℝ-Vector-Space : Metric-Space l2 l1
metric-space-Normed-ℝ-Vector-Space =
@@ -296,28 +458,16 @@ module _
located-metric-space-Metric
( set-Normed-ℝ-Vector-Space V)
( metric-Normed-ℝ-Vector-Space)
-```
-## Properties
+ neighborhood-prop-Normed-ℝ-Vector-Space :
+ Rational-Neighborhood-Relation l1 (type-Normed-ℝ-Vector-Space V)
+ neighborhood-prop-Normed-ℝ-Vector-Space =
+ neighborhood-prop-Metric-Space metric-space-Normed-ℝ-Vector-Space
-### The real numbers are a normed vector space over themselves with norm `x ↦ |x|`
-
-```agda
-normed-real-vector-space-ℝ :
- (l : Level) → Normed-ℝ-Vector-Space l (lsuc l)
-normed-real-vector-space-ℝ l =
- ( real-vector-space-ℝ l ,
- ( abs-ℝ , triangle-inequality-abs-ℝ , abs-mul-ℝ) ,
- λ x |x|~0 → eq-raise-zero-is-zero-ℝ (is-zero-is-zero-abs-ℝ x |x|~0))
-
-abstract
- eq-metric-space-normed-real-vector-space-metric-space-ℝ :
- (l : Level) →
- metric-space-Normed-ℝ-Vector-Space (normed-real-vector-space-ℝ l) =
- metric-space-ℝ l
- eq-metric-space-normed-real-vector-space-metric-space-ℝ l =
- eq-isometric-eq-Metric-Space _ _
- ( refl , λ d x y → inv-iff (neighborhood-iff-leq-dist-ℝ d x y))
+ neighborhood-Normed-ℝ-Vector-Space :
+ ℚ⁺ → Relation l1 (type-Normed-ℝ-Vector-Space V)
+ neighborhood-Normed-ℝ-Vector-Space =
+ neighborhood-Metric-Space metric-space-Normed-ℝ-Vector-Space
```
### Negation is an isometry in the metric space of a normed vector space
@@ -325,44 +475,49 @@ abstract
```agda
module _
{l1 l2 : Level} (V : Normed-ℝ-Vector-Space l1 l2)
- where
-
- abstract
- is-isometry-neg-Normed-ℝ-Vector-Space :
- 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 =
- is-isometry-sim-metric-Metric-Space
- ( metric-space-Normed-ℝ-Vector-Space V)
- ( metric-space-Normed-ℝ-Vector-Space V)
- ( nonnegative-dist-Normed-ℝ-Vector-Space V)
- ( nonnegative-dist-Normed-ℝ-Vector-Space V)
- ( is-metric-metric-space-Metric
- ( set-Normed-ℝ-Vector-Space V)
- ( metric-Normed-ℝ-Vector-Space V))
- ( is-metric-metric-space-Metric
- ( set-Normed-ℝ-Vector-Space V)
- ( metric-Normed-ℝ-Vector-Space V))
- ( neg-Normed-ℝ-Vector-Space V)
- ( λ x y →
- sim-eq-ℝ
- ( inv
- ( equational-reasoning
- dist-Normed-ℝ-Vector-Space V
- ( neg-Normed-ℝ-Vector-Space V x)
- ( neg-Normed-ℝ-Vector-Space V y)
- = dist-Normed-ℝ-Vector-Space V y x
- by
- ap
- ( map-norm-Normed-ℝ-Vector-Space V)
- ( right-subtraction-neg-Ab
- ( ab-Normed-ℝ-Vector-Space V)
- ( _)
- ( _))
- = dist-Normed-ℝ-Vector-Space V x y
- by symmetric-dist-Normed-ℝ-Vector-Space V y x)))
+ where abstract
+
+ dist-neg-Normed-ℝ-Vector-Space :
+ (x y : type-Normed-ℝ-Vector-Space V) →
+ dist-Normed-ℝ-Vector-Space V
+ ( neg-Normed-ℝ-Vector-Space V x)
+ ( neg-Normed-ℝ-Vector-Space V y) =
+ dist-Normed-ℝ-Vector-Space V x y
+ dist-neg-Normed-ℝ-Vector-Space x y =
+ equational-reasoning
+ dist-Normed-ℝ-Vector-Space V
+ ( neg-Normed-ℝ-Vector-Space V x)
+ ( neg-Normed-ℝ-Vector-Space V y)
+ = dist-Normed-ℝ-Vector-Space V y x
+ by
+ ap
+ ( map-norm-Normed-ℝ-Vector-Space V)
+ ( right-subtraction-neg-Ab
+ ( ab-Normed-ℝ-Vector-Space V)
+ ( _)
+ ( _))
+ = dist-Normed-ℝ-Vector-Space V x y
+ by symmetric-dist-Normed-ℝ-Vector-Space V y x
+
+ is-isometry-neg-Normed-ℝ-Vector-Space :
+ 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 =
+ is-isometry-sim-metric-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( nonnegative-dist-Normed-ℝ-Vector-Space V)
+ ( nonnegative-dist-Normed-ℝ-Vector-Space V)
+ ( is-metric-metric-space-Metric
+ ( set-Normed-ℝ-Vector-Space V)
+ ( metric-Normed-ℝ-Vector-Space V))
+ ( is-metric-metric-space-Metric
+ ( set-Normed-ℝ-Vector-Space V)
+ ( metric-Normed-ℝ-Vector-Space V))
+ ( neg-Normed-ℝ-Vector-Space V)
+ ( λ x y → sim-eq-ℝ (inv (dist-neg-Normed-ℝ-Vector-Space x y)))
```
### Left addition is an isometry in the metric space of a normed vector space
@@ -407,6 +562,85 @@ module _
### The norm of the zero vector is zero
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ where abstract
+
+ norm-zero-Normed-ℝ-Vector-Space :
+ map-norm-Normed-ℝ-Vector-Space V (zero-Normed-ℝ-Vector-Space V) =
+ raise-zero-ℝ l1
+ norm-zero-Normed-ℝ-Vector-Space =
+ seminorm-zero-Seminormed-ℝ-Vector-Space
+ ( seminormed-vector-space-Normed-ℝ-Vector-Space V)
+```
+
+### The distance between `cv` and `cw` is `|c|` times the distance between `v` and `w`
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ (c : ℝ l1)
+ (v w : type-Normed-ℝ-Vector-Space V)
+ where abstract
+
+ multiplicative-dist-Normed-ℝ-Vector-Space :
+ dist-Normed-ℝ-Vector-Space V
+ ( mul-Normed-ℝ-Vector-Space V c v)
+ ( mul-Normed-ℝ-Vector-Space V c w) =
+ abs-ℝ c *ℝ dist-Normed-ℝ-Vector-Space V v w
+ multiplicative-dist-Normed-ℝ-Vector-Space =
+ ( ap
+ ( map-norm-Normed-ℝ-Vector-Space V)
+ ( inv (left-distributive-mul-diff-Normed-ℝ-Vector-Space V c v w))) ∙
+ ( is-absolutely-homogeneous-norm-Normed-ℝ-Vector-Space V c _)
+```
+
+### The real numbers are a normed vector space over themselves with norm `x ↦ |x|`
+
+```agda
+normed-real-vector-space-ℝ :
+ (l : Level) → Normed-ℝ-Vector-Space l (lsuc l)
+normed-real-vector-space-ℝ l =
+ ( real-vector-space-ℝ l ,
+ ( abs-ℝ , triangle-inequality-abs-ℝ , abs-mul-ℝ) ,
+ λ x |x|~0 → eq-raise-zero-is-zero-ℝ (is-zero-is-zero-abs-ℝ x |x|~0))
+
+abstract
+ eq-metric-space-normed-real-vector-space-metric-space-ℝ :
+ (l : Level) →
+ metric-space-Normed-ℝ-Vector-Space (normed-real-vector-space-ℝ l) =
+ metric-space-ℝ l
+ eq-metric-space-normed-real-vector-space-metric-space-ℝ l =
+ eq-isometric-eq-Metric-Space _ _
+ ( refl , λ d x y → inv-iff (neighborhood-iff-leq-dist-ℝ d x y))
+```
+
+### The distance between `cx` and `cy` is `abs-ℝ c` times the distance between `x` and `y`
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ where abstract
+
+ left-distributive-abs-mul-dist-Normed-ℝ-Vector-Space :
+ (c : ℝ l1) (x y : type-Normed-ℝ-Vector-Space V) →
+ abs-ℝ c *ℝ dist-Normed-ℝ-Vector-Space V x y =
+ dist-Normed-ℝ-Vector-Space V
+ ( mul-Normed-ℝ-Vector-Space V c x)
+ ( mul-Normed-ℝ-Vector-Space V c y)
+ left-distributive-abs-mul-dist-Normed-ℝ-Vector-Space c x y =
+ ( inv (is-absolutely-homogeneous-norm-Normed-ℝ-Vector-Space V c _)) ∙
+ ( ap
+ ( map-norm-Normed-ℝ-Vector-Space V)
+ ( left-distributive-mul-diff-Normed-ℝ-Vector-Space V c x y))
+```
+
+### The distance function is a uniformly continuous map from the product metric space to the nonnegative real numbers
+
```agda
module _
{l1 l2 : Level}
@@ -414,12 +648,110 @@ module _
where
abstract
- eq-zero-norm-zero-Normed-ℝ-Vector-Space :
- map-norm-Normed-ℝ-Vector-Space V (zero-Normed-ℝ-Vector-Space V) =
- raise-ℝ l1 zero-ℝ
- eq-zero-norm-zero-Normed-ℝ-Vector-Space =
- eq-zero-seminorm-zero-Seminormed-ℝ-Vector-Space
- ( seminormed-vector-space-Normed-ℝ-Vector-Space V)
+ is-uniformly-continuous-map-nonnegative-dist-Normed-ℝ-Vector-Space :
+ is-uniformly-continuous-map-Metric-Space
+ ( product-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V))
+ ( metric-space-ℝ⁰⁺ l1)
+ ( ind-Σ (nonnegative-dist-Normed-ℝ-Vector-Space V))
+ is-uniformly-continuous-map-nonnegative-dist-Normed-ℝ-Vector-Space =
+ is-uniformly-continuous-map-metric-of-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( nonnegative-dist-Normed-ℝ-Vector-Space V)
+ ( is-metric-metric-space-Metric
+ ( set-Normed-ℝ-Vector-Space V)
+ ( metric-Normed-ℝ-Vector-Space V))
+
+ is-uniformly-continuous-map-nonnegative-norm-Normed-ℝ-Vector-Space :
+ is-uniformly-continuous-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-ℝ⁰⁺ l1)
+ ( nonnegative-norm-Normed-ℝ-Vector-Space V)
+ is-uniformly-continuous-map-nonnegative-norm-Normed-ℝ-Vector-Space =
+ tr
+ ( is-uniformly-continuous-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-ℝ⁰⁺ l1))
+ ( eq-htpy
+ ( λ v → eq-ℝ⁰⁺ _ _ (right-zero-law-dist-Normed-ℝ-Vector-Space V v)))
+ ( is-uniformly-continuous-map-comp-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( product-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V))
+ ( metric-space-ℝ⁰⁺ l1)
+ ( ind-Σ (nonnegative-dist-Normed-ℝ-Vector-Space V))
+ ( _, zero-Normed-ℝ-Vector-Space V)
+ ( is-uniformly-continuous-map-nonnegative-dist-Normed-ℝ-Vector-Space)
+ ( is-uniformly-continuous-map-is-isometry-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( product-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V))
+ ( _, zero-Normed-ℝ-Vector-Space V)
+ ( is-isometry-right-pair-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( zero-Normed-ℝ-Vector-Space V))))
+
+ uniformly-continuous-map-nonnegative-norm-Normed-ℝ-Vector-Space :
+ uniformly-continuous-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-ℝ⁰⁺ l1)
+ uniformly-continuous-map-nonnegative-norm-Normed-ℝ-Vector-Space =
+ ( nonnegative-norm-Normed-ℝ-Vector-Space V ,
+ is-uniformly-continuous-map-nonnegative-norm-Normed-ℝ-Vector-Space)
+
+ uniformly-continuous-map-norm-Normed-ℝ-Vector-Space :
+ uniformly-continuous-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-ℝ l1)
+ uniformly-continuous-map-norm-Normed-ℝ-Vector-Space =
+ comp-uniformly-continuous-map-Metric-Space
+ ( metric-space-Normed-ℝ-Vector-Space V)
+ ( metric-space-ℝ⁰⁺ l1)
+ ( metric-space-ℝ l1)
+ ( uniformly-continuous-inclusion-subspace-Metric-Space
+ ( metric-space-ℝ l1)
+ ( is-nonnegative-prop-ℝ))
+ ( uniformly-continuous-map-nonnegative-norm-Normed-ℝ-Vector-Space)
+```
+
+### For any `x y : V`, `∥x∥ ≤ ∥y∥ + ∥x - y∥`
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : Normed-ℝ-Vector-Space l1 l2)
+ (x y : type-Normed-ℝ-Vector-Space V)
+ (let _+V_ = add-Normed-ℝ-Vector-Space V)
+ (let _-V_ = diff-Normed-ℝ-Vector-Space V)
+ where abstract
+
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+
+ leq-norm-add-norm-dist-Normed-ℝ-Vector-Space :
+ leq-ℝ
+ ( map-norm-Normed-ℝ-Vector-Space V x)
+ ( map-norm-Normed-ℝ-Vector-Space V y +ℝ
+ dist-Normed-ℝ-Vector-Space V x y)
+ leq-norm-add-norm-dist-Normed-ℝ-Vector-Space =
+ chain-of-inequalities
+ map-norm-Normed-ℝ-Vector-Space V x
+ ≤ map-norm-Normed-ℝ-Vector-Space V (y +V (x -V y))
+ by
+ leq-eq-ℝ
+ ( ap
+ ( map-norm-Normed-ℝ-Vector-Space V)
+ ( inv
+ ( is-identity-right-conjugation-Ab
+ ( ab-Normed-ℝ-Vector-Space V)
+ ( y)
+ ( x))))
+ ≤ map-norm-Normed-ℝ-Vector-Space V y +ℝ
+ dist-Normed-ℝ-Vector-Space V x y
+ by triangular-norm-Normed-ℝ-Vector-Space V _ _
```
## See also
diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md
index 526b466b41..2672295359 100644
--- a/src/linear-algebra/real-vector-spaces.lagda.md
+++ b/src/linear-algebra/real-vector-spaces.lagda.md
@@ -24,6 +24,7 @@ open import linear-algebra.vector-spaces
open import real-numbers.addition-real-numbers
open import real-numbers.dedekind-real-numbers
+open import real-numbers.difference-real-numbers
open import real-numbers.field-of-real-numbers
open import real-numbers.multiplication-real-numbers
open import real-numbers.negation-real-numbers
@@ -84,8 +85,7 @@ module _
diff-ℝ-Vector-Space :
type-ℝ-Vector-Space → type-ℝ-Vector-Space → type-ℝ-Vector-Space
- diff-ℝ-Vector-Space v w =
- add-ℝ-Vector-Space v (neg-ℝ-Vector-Space w)
+ diff-ℝ-Vector-Space = diff-Vector-Space (heyting-field-ℝ l1) V
associative-add-ℝ-Vector-Space :
(v w x : type-ℝ-Vector-Space) →
@@ -128,6 +128,13 @@ module _
(v : type-ℝ-Vector-Space) → neg-ℝ-Vector-Space (neg-ℝ-Vector-Space v) = v
neg-neg-ℝ-Vector-Space = neg-neg-Ab ab-ℝ-Vector-Space
+ interchange-add-diff-ℝ-Vector-Space :
+ (x y z w : type-ℝ-Vector-Space) →
+ diff-ℝ-Vector-Space (add-ℝ-Vector-Space x y) (add-ℝ-Vector-Space z w) =
+ add-ℝ-Vector-Space (diff-ℝ-Vector-Space x z) (diff-ℝ-Vector-Space y w)
+ interchange-add-diff-ℝ-Vector-Space =
+ interchange-add-diff-Vector-Space (heyting-field-ℝ l1) V
+
left-unit-law-mul-ℝ-Vector-Space :
(v : type-ℝ-Vector-Space) →
mul-ℝ-Vector-Space (raise-ℝ l1 one-ℝ) v = v
@@ -141,6 +148,13 @@ module _
left-distributive-mul-add-ℝ-Vector-Space =
left-distributive-mul-add-Vector-Space (heyting-field-ℝ l1) V
+ left-distributive-mul-diff-ℝ-Vector-Space :
+ (r : ℝ l1) (v w : type-ℝ-Vector-Space) →
+ mul-ℝ-Vector-Space r (diff-ℝ-Vector-Space v w) =
+ diff-ℝ-Vector-Space (mul-ℝ-Vector-Space r v) (mul-ℝ-Vector-Space r w)
+ left-distributive-mul-diff-ℝ-Vector-Space =
+ left-distributive-mul-diff-Vector-Space (heyting-field-ℝ l1) V
+
right-distributive-mul-add-ℝ-Vector-Space :
(r s : ℝ l1) (v : type-ℝ-Vector-Space) →
mul-ℝ-Vector-Space (r +ℝ s) v =
@@ -148,6 +162,13 @@ module _
right-distributive-mul-add-ℝ-Vector-Space =
right-distributive-mul-add-Vector-Space (heyting-field-ℝ l1) V
+ right-distributive-mul-diff-ℝ-Vector-Space :
+ (r s : ℝ l1) (v : type-ℝ-Vector-Space) →
+ mul-ℝ-Vector-Space (r -ℝ s) v =
+ diff-ℝ-Vector-Space (mul-ℝ-Vector-Space r v) (mul-ℝ-Vector-Space s v)
+ right-distributive-mul-diff-ℝ-Vector-Space =
+ right-distributive-mul-diff-Vector-Space (heyting-field-ℝ l1) V
+
associative-mul-ℝ-Vector-Space :
(r s : ℝ l1) (v : type-ℝ-Vector-Space) →
mul-ℝ-Vector-Space (r *ℝ s) v =
@@ -155,6 +176,13 @@ module _
associative-mul-ℝ-Vector-Space =
associative-mul-Vector-Space (heyting-field-ℝ l1) V
+ left-swap-mul-ℝ-Vector-Space :
+ (r s : ℝ l1) (v : type-ℝ-Vector-Space) →
+ mul-ℝ-Vector-Space r (mul-ℝ-Vector-Space s v) =
+ mul-ℝ-Vector-Space s (mul-ℝ-Vector-Space r v)
+ left-swap-mul-ℝ-Vector-Space =
+ left-swap-mul-Vector-Space (heyting-field-ℝ l1) V
+
left-zero-law-mul-ℝ-Vector-Space :
(v : type-ℝ-Vector-Space) →
mul-ℝ-Vector-Space (raise-ℝ l1 zero-ℝ) v = zero-ℝ-Vector-Space
diff --git a/src/linear-algebra/seminormed-real-vector-spaces.lagda.md b/src/linear-algebra/seminormed-real-vector-spaces.lagda.md
index 065ed1fba7..709623280c 100644
--- a/src/linear-algebra/seminormed-real-vector-spaces.lagda.md
+++ b/src/linear-algebra/seminormed-real-vector-spaces.lagda.md
@@ -151,13 +151,15 @@ module _
vector-space-Seminormed-ℝ-Vector-Space : ℝ-Vector-Space l1 l2
vector-space-Seminormed-ℝ-Vector-Space = pr1 V
+ ab-Seminormed-ℝ-Vector-Space : Ab l2
+ ab-Seminormed-ℝ-Vector-Space =
+ ab-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+
set-Seminormed-ℝ-Vector-Space : Set l2
- set-Seminormed-ℝ-Vector-Space =
- set-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ set-Seminormed-ℝ-Vector-Space = set-Ab ab-Seminormed-ℝ-Vector-Space
type-Seminormed-ℝ-Vector-Space : UU l2
- type-Seminormed-ℝ-Vector-Space =
- type-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ type-Seminormed-ℝ-Vector-Space = type-Ab ab-Seminormed-ℝ-Vector-Space
seminorm-Seminormed-ℝ-Vector-Space :
seminorm-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
@@ -169,23 +171,20 @@ module _
pr1 seminorm-Seminormed-ℝ-Vector-Space
zero-Seminormed-ℝ-Vector-Space : type-Seminormed-ℝ-Vector-Space
- zero-Seminormed-ℝ-Vector-Space =
- zero-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ zero-Seminormed-ℝ-Vector-Space = zero-Ab ab-Seminormed-ℝ-Vector-Space
is-zero-prop-Seminormed-ℝ-Vector-Space :
subtype l2 type-Seminormed-ℝ-Vector-Space
is-zero-prop-Seminormed-ℝ-Vector-Space =
- is-zero-prop-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ is-zero-prop-Ab ab-Seminormed-ℝ-Vector-Space
is-zero-Seminormed-ℝ-Vector-Space : type-Seminormed-ℝ-Vector-Space → UU l2
- is-zero-Seminormed-ℝ-Vector-Space =
- is-zero-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ is-zero-Seminormed-ℝ-Vector-Space = is-zero-Ab ab-Seminormed-ℝ-Vector-Space
add-Seminormed-ℝ-Vector-Space :
type-Seminormed-ℝ-Vector-Space → type-Seminormed-ℝ-Vector-Space →
type-Seminormed-ℝ-Vector-Space
- add-Seminormed-ℝ-Vector-Space =
- add-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ add-Seminormed-ℝ-Vector-Space = add-Ab ab-Seminormed-ℝ-Vector-Space
mul-Seminormed-ℝ-Vector-Space :
ℝ l1 → type-Seminormed-ℝ-Vector-Space → type-Seminormed-ℝ-Vector-Space
@@ -194,21 +193,20 @@ module _
neg-Seminormed-ℝ-Vector-Space :
type-Seminormed-ℝ-Vector-Space → type-Seminormed-ℝ-Vector-Space
- neg-Seminormed-ℝ-Vector-Space =
- neg-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ neg-Seminormed-ℝ-Vector-Space = neg-Ab ab-Seminormed-ℝ-Vector-Space
diff-Seminormed-ℝ-Vector-Space :
type-Seminormed-ℝ-Vector-Space → type-Seminormed-ℝ-Vector-Space →
type-Seminormed-ℝ-Vector-Space
- diff-Seminormed-ℝ-Vector-Space v w =
- add-Seminormed-ℝ-Vector-Space v (neg-Seminormed-ℝ-Vector-Space w)
+ diff-Seminormed-ℝ-Vector-Space =
+ right-subtraction-Ab ab-Seminormed-ℝ-Vector-Space
right-inverse-law-add-Seminormed-ℝ-Vector-Space :
(v : type-Seminormed-ℝ-Vector-Space) →
add-Seminormed-ℝ-Vector-Space v (neg-Seminormed-ℝ-Vector-Space v) =
zero-Seminormed-ℝ-Vector-Space
right-inverse-law-add-Seminormed-ℝ-Vector-Space =
- right-inverse-law-add-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ right-inverse-law-add-Ab ab-Seminormed-ℝ-Vector-Space
add-diff-Seminormed-ℝ-Vector-Space :
(v w x : type-Seminormed-ℝ-Vector-Space) →
@@ -223,7 +221,7 @@ module _
(v : type-Seminormed-ℝ-Vector-Space) →
neg-Seminormed-ℝ-Vector-Space (neg-Seminormed-ℝ-Vector-Space v) = v
neg-neg-Seminormed-ℝ-Vector-Space =
- neg-neg-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space
+ neg-neg-Ab ab-Seminormed-ℝ-Vector-Space
left-zero-law-mul-Seminormed-ℝ-Vector-Space :
(v : type-Seminormed-ℝ-Vector-Space) →
@@ -244,8 +242,7 @@ module _
neg-Seminormed-ℝ-Vector-Space (diff-Seminormed-ℝ-Vector-Space v w) =
diff-Seminormed-ℝ-Vector-Space w v
distributive-neg-diff-Seminormed-ℝ-Vector-Space =
- neg-right-subtraction-Ab
- ( ab-ℝ-Vector-Space vector-space-Seminormed-ℝ-Vector-Space)
+ neg-right-subtraction-Ab ab-Seminormed-ℝ-Vector-Space
triangular-seminorm-Seminormed-ℝ-Vector-Space :
(v w : type-Seminormed-ℝ-Vector-Space) →
@@ -281,12 +278,12 @@ module _
where
abstract
- eq-zero-seminorm-zero-Seminormed-ℝ-Vector-Space :
+ seminorm-zero-Seminormed-ℝ-Vector-Space :
map-seminorm-Seminormed-ℝ-Vector-Space
( V)
( zero-Seminormed-ℝ-Vector-Space V) =
raise-ℝ l1 zero-ℝ
- eq-zero-seminorm-zero-Seminormed-ℝ-Vector-Space =
+ seminorm-zero-Seminormed-ℝ-Vector-Space =
equational-reasoning
map-seminorm-Seminormed-ℝ-Vector-Space
( V)
@@ -330,7 +327,7 @@ module _
( ap
( map-seminorm-Seminormed-ℝ-Vector-Space V)
( right-inverse-law-add-Seminormed-ℝ-Vector-Space V v)) ∙
- ( eq-zero-seminorm-zero-Seminormed-ℝ-Vector-Space)
+ ( seminorm-zero-Seminormed-ℝ-Vector-Space)
is-zero-diagonal-dist-Seminormed-ℝ-Vector-Space :
(v : type-Seminormed-ℝ-Vector-Space V) →
@@ -586,6 +583,23 @@ module _
pseudometric-structure-Seminormed-ℝ-Vector-Space)
```
+### Zero laws of distance in a seminormed vector space
+
+```agda
+module _
+ {l1 l2 : Level} (V : Seminormed-ℝ-Vector-Space l1 l2)
+ where abstract
+
+ right-zero-law-dist-Seminormed-ℝ-Vector-Space :
+ (x : type-Seminormed-ℝ-Vector-Space V) →
+ dist-Seminormed-ℝ-Vector-Space V x (zero-Seminormed-ℝ-Vector-Space V) =
+ map-seminorm-Seminormed-ℝ-Vector-Space V x
+ right-zero-law-dist-Seminormed-ℝ-Vector-Space x =
+ ap
+ ( map-seminorm-Seminormed-ℝ-Vector-Space V)
+ ( right-zero-law-right-subtraction-Ab (ab-Seminormed-ℝ-Vector-Space V) x)
+```
+
### The real numbers are a seminormed vector space over themselves with seminorm `x ↦ |x|`
```agda
diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md
index f12b24dc0f..b018a99616 100644
--- a/src/linear-algebra/vector-spaces.lagda.md
+++ b/src/linear-algebra/vector-spaces.lagda.md
@@ -18,6 +18,7 @@ open import foundation.universe-levels
open import group-theory.abelian-groups
open import linear-algebra.left-modules-commutative-rings
+open import linear-algebra.left-modules-rings
```
@@ -59,6 +60,9 @@ module _
add-Vector-Space : type-Vector-Space → type-Vector-Space → type-Vector-Space
add-Vector-Space = add-Ab ab-Vector-Space
+ diff-Vector-Space : type-Vector-Space → type-Vector-Space → type-Vector-Space
+ diff-Vector-Space = right-subtraction-Ab ab-Vector-Space
+
zero-Vector-Space : type-Vector-Space
zero-Vector-Space = zero-Ab ab-Vector-Space
@@ -106,6 +110,13 @@ module _
(v w : type-Vector-Space) → add-Vector-Space v w = add-Vector-Space w v
commutative-add-Vector-Space = commutative-add-Ab ab-Vector-Space
+ interchange-add-diff-Vector-Space :
+ (x y z w : type-Vector-Space) →
+ diff-Vector-Space (add-Vector-Space x y) (add-Vector-Space z w) =
+ add-Vector-Space (diff-Vector-Space x z) (diff-Vector-Space y w)
+ interchange-add-diff-Vector-Space =
+ interchange-add-diff-left-module-Ring (ring-Heyting-Field R) V
+
left-unit-law-mul-Vector-Space :
(v : type-Vector-Space) →
mul-Vector-Space (one-Heyting-Field R) v = v
@@ -123,6 +134,15 @@ module _
( commutative-ring-Heyting-Field R)
( V)
+ left-distributive-mul-diff-Vector-Space :
+ (r : type-Heyting-Field R) (v w : type-Vector-Space) →
+ mul-Vector-Space r (diff-Vector-Space v w) =
+ diff-Vector-Space (mul-Vector-Space r v) (mul-Vector-Space r w)
+ left-distributive-mul-diff-Vector-Space =
+ left-distributive-mul-diff-left-module-Ring
+ ( ring-Heyting-Field R)
+ ( V)
+
right-distributive-mul-add-Vector-Space :
(r s : type-Heyting-Field R) (v : type-Vector-Space) →
mul-Vector-Space (add-Heyting-Field R r s) v =
@@ -132,6 +152,15 @@ module _
( commutative-ring-Heyting-Field R)
( V)
+ right-distributive-mul-diff-Vector-Space :
+ (r s : type-Heyting-Field R) (v : type-Vector-Space) →
+ mul-Vector-Space (diff-Heyting-Field R r s) v =
+ diff-Vector-Space (mul-Vector-Space r v) (mul-Vector-Space s v)
+ right-distributive-mul-diff-Vector-Space =
+ right-distributive-mul-diff-left-module-Ring
+ ( ring-Heyting-Field R)
+ ( V)
+
associative-mul-Vector-Space :
(r s : type-Heyting-Field R) (v : type-Vector-Space) →
mul-Vector-Space (mul-Heyting-Field R r s) v =
@@ -141,6 +170,15 @@ module _
( commutative-ring-Heyting-Field R)
( V)
+ left-swap-mul-Vector-Space :
+ (r s : type-Heyting-Field R) (v : type-Vector-Space) →
+ mul-Vector-Space r (mul-Vector-Space s v) =
+ mul-Vector-Space s (mul-Vector-Space r v)
+ left-swap-mul-Vector-Space =
+ left-swap-mul-left-module-Commutative-Ring
+ ( commutative-ring-Heyting-Field R)
+ ( V)
+
left-zero-law-mul-Vector-Space :
(v : type-Vector-Space) →
is-zero-Vector-Space (mul-Vector-Space (zero-Heyting-Field R) v)
diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md
index 241c102cdf..7b48e04148 100644
--- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md
+++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md
@@ -208,6 +208,11 @@ module _
UU (l1 ⊔ l2 ⊔ l3)
is-sequential-accumulation-point-subset-Located-Metric-Space =
type-Prop is-sequential-accumulation-point-prop-subset-Located-Metric-Space
+
+ sequence-accumulating-to-point-subset-Located-Metric-Space : UU (l1 ⊔ l2 ⊔ l3)
+ sequence-accumulating-to-point-subset-Located-Metric-Space =
+ type-subtype
+ ( is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space)
```
### If `x` is an accumulation point of `S`, it is a sequential accumulation point of `S`
diff --git a/src/metric-spaces/cartesian-products-metric-spaces.lagda.md b/src/metric-spaces/cartesian-products-metric-spaces.lagda.md
index b39eec2c5f..a24ac69300 100644
--- a/src/metric-spaces/cartesian-products-metric-spaces.lagda.md
+++ b/src/metric-spaces/cartesian-products-metric-spaces.lagda.md
@@ -161,3 +161,51 @@ module _
( diagonal-product (type-Metric-Space X) ,
( λ _ _ _ → ((λ N → (N , N)) , pr1)))
```
+
+### Given a constant element `x : X`, the map `y ↦ (x , y)` is an isometry
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (X : Metric-Space l1 l2)
+ (Y : Metric-Space l3 l4)
+ (x : type-Metric-Space X)
+ where
+
+ abstract
+ is-isometry-left-pair-Metric-Space :
+ is-isometry-Metric-Space Y (product-Metric-Space X Y) (x ,_)
+ pr1 (is-isometry-left-pair-Metric-Space d y y') Ndyy' =
+ ( refl-neighborhood-Metric-Space X d x , Ndyy')
+ pr2 (is-isometry-left-pair-Metric-Space d x x') = pr2
+
+ isometry-left-pair-Metric-Space :
+ isometry-Metric-Space Y (product-Metric-Space X Y)
+ isometry-left-pair-Metric-Space =
+ ( (x ,_) ,
+ is-isometry-left-pair-Metric-Space)
+```
+
+### Given a constant element `y : Y`, the map `x ↦ (x , y)` is an isometry
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (X : Metric-Space l1 l2)
+ (Y : Metric-Space l3 l4)
+ (y : type-Metric-Space Y)
+ where
+
+ abstract
+ is-isometry-right-pair-Metric-Space :
+ is-isometry-Metric-Space X (product-Metric-Space X Y) (_, y)
+ pr1 (is-isometry-right-pair-Metric-Space d x x') Ndxx' =
+ ( Ndxx' , refl-neighborhood-Metric-Space Y d y)
+ pr2 (is-isometry-right-pair-Metric-Space d x x') = pr1
+
+ isometry-right-pair-Metric-Space :
+ isometry-Metric-Space X (product-Metric-Space X Y)
+ isometry-right-pair-Metric-Space =
+ ( ( _, y) ,
+ is-isometry-right-pair-Metric-Space)
+```
diff --git a/src/metric-spaces/uniformly-continuous-maps-metric-spaces.lagda.md b/src/metric-spaces/uniformly-continuous-maps-metric-spaces.lagda.md
index e9c63b9da2..3cf059bd1b 100644
--- a/src/metric-spaces/uniformly-continuous-maps-metric-spaces.lagda.md
+++ b/src/metric-spaces/uniformly-continuous-maps-metric-spaces.lagda.md
@@ -353,3 +353,10 @@ module _
## See also
- [Modulated uniformly continuous maps on metric spaces](metric-spaces.modulated-uniformly-continuous-maps-metric-spaces.md)
+
+## External links
+
+- [Uniform continuity](https://en.wikipedia.org/wiki/Uniform_continuity) on
+ Wikipedia
+- [Uniformly continuous map](https://ncatlab.org/nlab/show/uniformly+continuous+map)
+ on $n$Lab
diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md
index 7ecb7b8953..f29d2c3bf2 100644
--- a/src/real-numbers/apartness-real-numbers.lagda.md
+++ b/src/real-numbers/apartness-real-numbers.lagda.md
@@ -303,8 +303,8 @@ module _
```agda
module _
{l1 l2 : Level}
- (x : ℝ l1)
- (y : ℝ l2)
+ {x : ℝ l1}
+ {y : ℝ l2}
where
abstract
@@ -372,8 +372,6 @@ module _
apart-located-metric-space-ℝ x y → apart-ℝ x y
apart-apart-located-metric-space-ℝ x#y =
apart-is-positive-dist-ℝ
- ( x)
- ( y)
( is-positive-exists-not-le-positive-rational-ℝ
( dist-ℝ x y)
( map-tot-exists
diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md
index 14a42db763..dfad36c7c7 100644
--- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md
+++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md
@@ -134,6 +134,14 @@ module _
( commutative-mul-ℝ _ _)
( right-inverse-law-mul-nonzero-ℝ)
+ eq-left-inverse-law-mul-nonzero-ℝ :
+ real-inv-nonzero-ℝ *ℝ real-nonzero-ℝ x = raise-one-ℝ l
+ eq-left-inverse-law-mul-nonzero-ℝ =
+ eq-sim-ℝ
+ ( transitive-sim-ℝ _ _ _
+ ( sim-raise-ℝ l one-ℝ)
+ ( left-inverse-law-mul-nonzero-ℝ))
+
is-invertible-is-nonzero-ℝ :
{l : Level} (x : ℝ l) → is-nonzero-ℝ x →
is-invertible-element-Commutative-Ring (commutative-ring-ℝ l) x
diff --git a/src/ring-theory/rings.lagda.md b/src/ring-theory/rings.lagda.md
index 2a5ca889c4..14415ee686 100644
--- a/src/ring-theory/rings.lagda.md
+++ b/src/ring-theory/rings.lagda.md
@@ -119,6 +119,9 @@ module _
add-Ring' : type-Ring R → type-Ring R → type-Ring R
add-Ring' = add-Ab' (ab-Ring R)
+ diff-Ring : type-Ring R → type-Ring R → type-Ring R
+ diff-Ring = right-subtraction-Ab (ab-Ring R)
+
ap-add-Ring :
{x y x' y' : type-Ring R} →
x = x' → y = y' → add-Ring x y = add-Ring x' y'