diff --git a/src/commutative-algebra/commutative-rings.lagda.md b/src/commutative-algebra/commutative-rings.lagda.md
index a12e07d1fe..2fd1976b3d 100644
--- a/src/commutative-algebra/commutative-rings.lagda.md
+++ b/src/commutative-algebra/commutative-rings.lagda.md
@@ -200,6 +200,13 @@ module _
right-subtraction-Commutative-Ring =
right-subtraction-Ring ring-Commutative-Ring
+ ap-right-subtraction-Commutative-Ring :
+ {x x' y y' : type-Commutative-Ring} → x = x' → y = y' →
+ right-subtraction-Commutative-Ring x y =
+ right-subtraction-Commutative-Ring x' y'
+ ap-right-subtraction-Commutative-Ring =
+ ap-right-subtraction-Ring ring-Commutative-Ring
+
is-section-right-subtraction-Commutative-Ring :
(x : type-Commutative-Ring) →
( add-Commutative-Ring' x ∘
@@ -659,3 +666,20 @@ module _
preserves-concat-add-list-Commutative-Ring =
preserves-concat-add-list-Ring ring-Commutative-Ring
```
+
+### The sum of `x - y` and `y - z` is `x - z`
+
+```agda
+module _
+ {l : Level} (R : Commutative-Ring l)
+ where
+
+ add-right-subtraction-Commutative-Ring :
+ (x y z : type-Commutative-Ring R) →
+ add-Commutative-Ring R
+ ( right-subtraction-Commutative-Ring R x y)
+ ( right-subtraction-Commutative-Ring R y z) =
+ right-subtraction-Commutative-Ring R x z
+ add-right-subtraction-Commutative-Ring =
+ add-right-subtraction-Ab (ab-Commutative-Ring R)
+```
diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md
index 9343e05ed8..5af1cfd3a2 100644
--- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md
+++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md
@@ -10,7 +10,10 @@ module commutative-algebra.geometric-sequences-commutative-rings where
open import commutative-algebra.commutative-rings
open import commutative-algebra.commutative-semirings
open import commutative-algebra.geometric-sequences-commutative-semirings
+open import commutative-algebra.groups-of-units-commutative-rings
+open import commutative-algebra.invertible-elements-commutative-rings
open import commutative-algebra.powers-of-elements-commutative-rings
+open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-rings
open import elementary-number-theory.natural-numbers
@@ -288,6 +291,11 @@ module _
```agda
module _
{l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R)
+ (let _*R_ = mul-Commutative-Ring R)
+ (let _+R_ = add-Commutative-Ring R)
+ (let _-R_ = right-subtraction-Commutative-Ring R)
+ (let zero-R = zero-Commutative-Ring R)
+ (let one-R = one-Commutative-Ring R)
where
abstract
@@ -307,4 +315,141 @@ module _
( commutative-semiring-Commutative-Ring R)
( a)
( r)
+
+ abstract
+ compute-sum-standard-geometric-fin-sequence-Commutative-Ring :
+ (H :
+ is-invertible-element-Commutative-Ring R
+ ( right-subtraction-Commutative-Ring R (one-Commutative-Ring R) r)) →
+ (n : ℕ) →
+ sum-standard-geometric-fin-sequence-Commutative-Ring R a r n =
+ mul-Commutative-Ring R
+ ( mul-Commutative-Ring R
+ ( a)
+ ( inv-is-invertible-element-Commutative-Ring R H))
+ ( right-subtraction-Commutative-Ring R
+ ( one-Commutative-Ring R)
+ ( power-Commutative-Ring R n r))
+ compute-sum-standard-geometric-fin-sequence-Commutative-Ring
+ (1/⟨1-r⟩ , H) 0 =
+ inv
+ ( equational-reasoning
+ (a *R 1/⟨1-r⟩) *R (one-R -R one-R)
+ = (a *R 1/⟨1-r⟩) *R zero-R
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( right-inverse-law-add-Commutative-Ring R one-R)
+ = zero-R
+ by right-zero-law-mul-Commutative-Ring R _)
+ compute-sum-standard-geometric-fin-sequence-Commutative-Ring
+ (1/⟨1-r⟩ , H) (succ-ℕ n) =
+ equational-reasoning
+ sum-standard-geometric-fin-sequence-Commutative-Ring R a r (succ-ℕ n)
+ =
+ sum-standard-geometric-fin-sequence-Commutative-Ring R a r n +R
+ seq-standard-geometric-sequence-Commutative-Ring R a r n
+ by
+ cons-sum-fin-sequence-type-Commutative-Ring R
+ ( n)
+ ( standard-geometric-fin-sequence-Commutative-Ring R
+ ( a)
+ ( r)
+ ( succ-ℕ n))
+ ( refl)
+ =
+ ( (a *R 1/⟨1-r⟩) *R (one-R -R power-Commutative-Ring R n r)) +R
+ ( a *R power-Commutative-Ring R n r)
+ by
+ ap-add-Commutative-Ring R
+ ( compute-sum-standard-geometric-fin-sequence-Commutative-Ring
+ ( 1/⟨1-r⟩ , H)
+ ( n))
+ ( inv
+ ( htpy-mul-pow-standard-geometric-sequence-Commutative-Ring R
+ ( a)
+ ( r)
+ ( n)))
+ =
+ ( a *R (1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r))) +R
+ ( a *R (one-R *R power-Commutative-Ring R n r))
+ by
+ ap-add-Commutative-Ring R
+ ( associative-mul-Commutative-Ring R _ _ _)
+ ( ap-mul-Commutative-Ring R
+ ( refl)
+ ( inv (left-unit-law-mul-Commutative-Ring R _)))
+ =
+ a *R
+ ( (1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r)) +R
+ (one-R *R power-Commutative-Ring R n r))
+ by inv (left-distributive-mul-add-Commutative-Ring R a _ _)
+ =
+ a *R
+ ( ( 1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r)) +R
+ ( (1/⟨1-r⟩ *R (one-R -R r)) *R power-Commutative-Ring R n r))
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( ap-add-Commutative-Ring R
+ ( refl)
+ ( ap-mul-Commutative-Ring R (inv (pr2 H)) refl))
+ =
+ a *R
+ ( ( 1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r)) +R
+ ( 1/⟨1-r⟩ *R ((one-R -R r) *R power-Commutative-Ring R n r)))
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( ap-add-Commutative-Ring R
+ ( refl)
+ ( associative-mul-Commutative-Ring R _ _ _))
+ =
+ a *R
+ ( 1/⟨1-r⟩ *R
+ ( ( one-R -R power-Commutative-Ring R n r) +R
+ ( (one-R -R r) *R power-Commutative-Ring R n r)))
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( inv (left-distributive-mul-add-Commutative-Ring R _ _ _))
+ =
+ ( a *R 1/⟨1-r⟩) *R
+ ( ( one-R -R power-Commutative-Ring R n r) +R
+ ( (one-R -R r) *R power-Commutative-Ring R n r))
+ by inv (associative-mul-Commutative-Ring R _ _ _)
+ =
+ ( a *R 1/⟨1-r⟩) *R
+ ( ( one-R -R power-Commutative-Ring R n r) +R
+ ( (one-R *R power-Commutative-Ring R n r) -R
+ (r *R power-Commutative-Ring R n r)))
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( ap-add-Commutative-Ring R
+ ( refl)
+ ( right-distributive-mul-right-subtraction-Commutative-Ring R
+ ( _)
+ ( _)
+ ( _)))
+ =
+ ( a *R 1/⟨1-r⟩) *R
+ ( ( one-R -R power-Commutative-Ring R n r) +R
+ ( power-Commutative-Ring R n r -R
+ power-Commutative-Ring R (succ-ℕ n) r))
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( ap-add-Commutative-Ring R
+ ( refl)
+ ( ap-right-subtraction-Commutative-Ring R
+ ( left-unit-law-mul-Commutative-Ring R _)
+ ( inv (power-succ-Commutative-Ring' R n r))))
+ =
+ ( a *R 1/⟨1-r⟩) *R
+ ( one-R -R power-Commutative-Ring R (succ-ℕ n) r)
+ by
+ ap-mul-Commutative-Ring R
+ ( refl)
+ ( add-right-subtraction-Commutative-Ring R _ _ _)
```
diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md
index 07004973a8..5e81a68f07 100644
--- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md
+++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md
@@ -30,6 +30,7 @@ open import elementary-number-theory.ring-of-rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers
open import foundation.binary-transport
+open import foundation.dependent-pair-types
open import foundation.function-extensionality
open import foundation.identity-types
open import foundation.negated-equality
@@ -111,102 +112,14 @@ module _
compute-sum-standard-geometric-fin-sequence-ℚ :
(n : ℕ) →
sum-standard-geometric-fin-sequence-ℚ a r n =
- ( a *ℚ
- ( (one-ℚ -ℚ power-ℚ n r) *ℚ
- rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)))
- compute-sum-standard-geometric-fin-sequence-ℚ 0 =
- inv
- ( equational-reasoning
- a *ℚ ((one-ℚ -ℚ one-ℚ) *ℚ _)
- = a *ℚ (zero-ℚ *ℚ _)
- by
- ap-mul-ℚ
- ( refl)
- ( ap-mul-ℚ (right-inverse-law-add-ℚ one-ℚ) refl)
- = a *ℚ zero-ℚ
- by ap-mul-ℚ refl (left-zero-law-mul-ℚ _)
- = zero-ℚ
- by right-zero-law-mul-ℚ a)
- compute-sum-standard-geometric-fin-sequence-ℚ (succ-ℕ n) =
- let
- 1/⟨1-r⟩ = rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)
- in
- equational-reasoning
- sum-standard-geometric-fin-sequence-ℚ a r (succ-ℕ n)
- =
- sum-standard-geometric-fin-sequence-ℚ a r n +ℚ
- seq-standard-geometric-sequence-ℚ a r n
- by
- cons-sum-fin-sequence-type-Commutative-Ring
- ( commutative-ring-ℚ)
- ( n)
- ( _)
- ( refl)
- =
- ( a *ℚ
- ( (one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩)) +ℚ
- ( a *ℚ power-ℚ n r)
- by
- ap-add-ℚ
- ( compute-sum-standard-geometric-fin-sequence-ℚ n)
- ( compute-standard-geometric-sequence-ℚ a r n)
- =
- a *ℚ
- (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩) +ℚ power-ℚ n r)
- by inv (left-distributive-mul-add-ℚ a _ _)
- =
- a *ℚ
- ( (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩) +ℚ
- (power-ℚ n r *ℚ (one-ℚ -ℚ r)) *ℚ 1/⟨1-r⟩))
- by
- ap-mul-ℚ
- ( refl)
- ( ap-add-ℚ
- ( refl)
- ( inv
- ( cancel-right-mul-div-ℚˣ _
- ( invertible-diff-neq-ℚ r one-ℚ r≠1))))
- =
- a *ℚ
- ( ( (one-ℚ -ℚ power-ℚ n r) +ℚ (power-ℚ n r *ℚ (one-ℚ -ℚ r))) *ℚ
- 1/⟨1-r⟩)
- by
- ap-mul-ℚ
- ( refl)
- ( inv (right-distributive-mul-add-ℚ _ _ 1/⟨1-r⟩))
- =
- a *ℚ
- ( ( one-ℚ -ℚ power-ℚ n r +ℚ
- ((power-ℚ n r *ℚ one-ℚ) -ℚ (power-ℚ n r *ℚ r))) *ℚ
- 1/⟨1-r⟩)
- by
- ap-mul-ℚ
- ( refl)
- ( ap-mul-ℚ
- ( ap-add-ℚ refl (left-distributive-mul-diff-ℚ _ _ _))
- ( refl))
- =
- a *ℚ
- ( ( one-ℚ -ℚ power-ℚ n r +ℚ
- ((power-ℚ n r -ℚ power-ℚ (succ-ℕ n) r))) *ℚ
- 1/⟨1-r⟩)
- by
- ap-mul-ℚ
- ( refl)
- ( ap-mul-ℚ
- ( ap-add-ℚ
- ( refl)
- ( ap-diff-ℚ
- ( right-unit-law-mul-ℚ _)
- ( inv (power-succ-ℚ n r))))
- ( refl))
- = a *ℚ ((one-ℚ -ℚ power-ℚ (succ-ℕ n) r) *ℚ 1/⟨1-r⟩)
- by
- ap-mul-ℚ
- ( refl)
- ( ap-mul-ℚ
- ( mul-right-div-Group group-add-ℚ _ _ _)
- ( refl))
+ ( (a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) *ℚ
+ (one-ℚ -ℚ power-ℚ n r))
+ compute-sum-standard-geometric-fin-sequence-ℚ =
+ compute-sum-standard-geometric-fin-sequence-Commutative-Ring
+ ( commutative-ring-ℚ)
+ ( a)
+ ( r)
+ ( pr2 (invertible-diff-neq-ℚ r one-ℚ r≠1))
```
### If `|r| < 1`, the sum of the standard geometric sequence `n ↦ arⁿ` is `a/(1-r)`
@@ -241,30 +154,24 @@ module _
( inv
( eq-htpy (compute-sum-standard-geometric-fin-sequence-ℚ a r r≠1)))
( equational-reasoning
- a *ℚ
- ( (one-ℚ -ℚ zero-ℚ) *ℚ
- rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))
+ a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) *ℚ
+ (one-ℚ -ℚ zero-ℚ)
+ =
+ a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) *ℚ one-ℚ
+ by ap-mul-ℚ refl (right-zero-law-diff-ℚ _)
=
- a *ℚ
- ( one-ℚ *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))
- by ap-mul-ℚ refl (ap-mul-ℚ (right-zero-law-diff-ℚ one-ℚ) refl)
- = a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)
- by ap-mul-ℚ refl (left-unit-law-mul-ℚ _))
- ( uniformly-continuous-map-limit-sequence-Metric-Space
+ a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)
+ by right-unit-law-mul-ℚ _)
+ ( preserves-limits-sequence-uniformly-continuous-function-Metric-Space
( metric-space-ℚ)
( metric-space-ℚ)
( comp-uniformly-continuous-function-Metric-Space
( metric-space-ℚ)
( metric-space-ℚ)
( metric-space-ℚ)
- ( uniformly-continuous-left-mul-ℚ a)
- ( comp-uniformly-continuous-function-Metric-Space
- ( metric-space-ℚ)
- ( metric-space-ℚ)
- ( metric-space-ℚ)
- ( uniformly-continuous-right-mul-ℚ
- ( rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)))
- ( uniformly-continuous-diff-ℚ one-ℚ)))
+ ( uniformly-continuous-left-mul-ℚ
+ ( a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)))
+ ( uniformly-continuous-diff-ℚ one-ℚ))
( λ n → power-ℚ n r)
( zero-ℚ)
( is-zero-limit-power-le-one-abs-ℚ r |r|<1))
diff --git a/src/elementary-number-theory/triangular-numbers.lagda.md b/src/elementary-number-theory/triangular-numbers.lagda.md
index 23ae32125c..0a3f74aae1 100644
--- a/src/elementary-number-theory/triangular-numbers.lagda.md
+++ b/src/elementary-number-theory/triangular-numbers.lagda.md
@@ -284,7 +284,7 @@ abstract
by ap-mul-ℚ refl (right-zero-law-diff-ℚ one-ℚ)
= rational-ℕ 2
by right-unit-law-mul-ℚ _)
- ( uniformly-continuous-map-limit-sequence-Metric-Space
+ ( preserves-limits-sequence-uniformly-continuous-function-Metric-Space
( metric-space-ℚ)
( metric-space-ℚ)
( comp-uniformly-continuous-function-Metric-Space
diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md
index a17c9a0db8..862d0a1cea 100644
--- a/src/literature/100-theorems.lagda.md
+++ b/src/literature/100-theorems.lagda.md
@@ -116,6 +116,16 @@ open import foundation.cantors-theorem using
( theorem-Cantor)
```
+### 66. Sum of a Geometric Series {#66}
+
+**Author:** [Louis Wasserman](https://github.com/lowasser)
+
+```agda
+open import real-numbers.geometric-sequences-real-numbers using
+ ( compute-sum-standard-geometric-fin-sequence-ℝ ;
+ compute-sum-standard-geometric-series-ℝ)
+```
+
### 68. Sum of an arithmetic series {#68}
**Author:** [malarbol](http://www.github.com/malarbol)
diff --git a/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md
index 13705b93b6..9184f29af6 100644
--- a/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md
@@ -206,12 +206,12 @@ module _
is-limit-cauchy-approximation-Pseudometric-Space M u lim)
where
- preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space :
+ preserves-limits-map-metric-quotient-cauchy-approximation-Pseudometric-Space :
is-limit-cauchy-approximation-Metric-Space
( metric-quotient-Pseudometric-Space M)
( map-metric-quotient-cauchy-approximation-Pseudometric-Space M u)
( map-metric-quotient-Pseudometric-Space M lim)
- preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space
+ preserves-limits-map-metric-quotient-cauchy-approximation-Pseudometric-Space
ε δ (x , x∈uε) (y , y∈lim) =
let
lim~y : sim-Pseudometric-Space M lim y
diff --git a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md
index 073ef2f615..b2dc8712ac 100644
--- a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md
+++ b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md
@@ -111,7 +111,7 @@ module _
( seq-modulated-ucont-map-convergent-sequence-Metric-Space)
( limit-seq-modulated-ucont-map-convergent-sequence-Metric-Space)
is-limit-seq-modulated-ucont-map-convergent-sequence-Metric-Space =
- modulated-ucont-map-limit-sequence-Metric-Space
+ preserves-limits-sequence-modulated-ucont-map-Metric-Space
( A)
( B)
( f)
@@ -162,7 +162,7 @@ module _
( seq-uniformly-continuous-map-convergent-sequence-Metric-Space)
( limit-seq-uniformly-continuous-map-convergent-sequence-Metric-Space)
is-limit-seq-uniformly-continuous-map-convergent-sequence-Metric-Space =
- uniformly-continuous-map-limit-sequence-Metric-Space
+ preserves-limits-sequence-uniformly-continuous-function-Metric-Space
( A)
( B)
( f)
@@ -206,7 +206,7 @@ module _
has-limit-seq-short-map-convergent-sequence-Metric-Space =
( map-short-function-Metric-Space A B f
( limit-convergent-sequence-Metric-Space A u)) ,
- ( short-map-limit-sequence-Metric-Space
+ ( preserves-limits-sequence-short-function-Metric-Space
( A)
( B)
( f)
diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md
index 219491a035..2cfda0f25e 100644
--- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md
+++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md
@@ -292,7 +292,7 @@ module _
( n)
( N≤n)))
- modulated-ucont-map-limit-sequence-Metric-Space :
+ preserves-limits-sequence-modulated-ucont-map-Metric-Space :
is-limit-sequence-Metric-Space A u lim →
is-limit-sequence-Metric-Space
( B)
@@ -300,7 +300,7 @@ module _
( map-modulated-ucont-map-Metric-Space A B f)
( u))
( map-modulated-ucont-map-Metric-Space A B f lim)
- modulated-ucont-map-limit-sequence-Metric-Space =
+ preserves-limits-sequence-modulated-ucont-map-Metric-Space =
map-is-inhabited modulated-ucont-map-limit-modulus-sequence-Metric-Space
```
@@ -317,7 +317,7 @@ module _
where
abstract
- uniformly-continuous-map-limit-sequence-Metric-Space :
+ preserves-limits-sequence-uniformly-continuous-function-Metric-Space :
is-limit-sequence-Metric-Space A u lim →
is-limit-sequence-Metric-Space
( B)
@@ -325,11 +325,12 @@ module _
( map-uniformly-continuous-function-Metric-Space A B f)
( u))
( map-uniformly-continuous-function-Metric-Space A B f lim)
- uniformly-continuous-map-limit-sequence-Metric-Space is-limit-lim =
+ preserves-limits-sequence-uniformly-continuous-function-Metric-Space
+ is-limit-lim =
rec-trunc-Prop
( is-limit-prop-sequence-Metric-Space B _ _)
( λ m →
- modulated-ucont-map-limit-sequence-Metric-Space
+ preserves-limits-sequence-modulated-ucont-map-Metric-Space
( A)
( B)
( map-uniformly-continuous-function-Metric-Space A B f , m)
@@ -370,7 +371,7 @@ module _
( u)
( lim)
- short-map-limit-sequence-Metric-Space :
+ preserves-limits-sequence-short-function-Metric-Space :
is-limit-sequence-Metric-Space A u lim →
is-limit-sequence-Metric-Space
( B)
@@ -378,7 +379,7 @@ module _
( map-short-function-Metric-Space A B f)
( u))
( map-short-function-Metric-Space A B f lim)
- short-map-limit-sequence-Metric-Space =
+ preserves-limits-sequence-short-function-Metric-Space =
map-is-inhabited short-map-limit-modulus-sequence-Metric-Space
```
diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md
index 3b84f6c0b0..c9c9de03d9 100644
--- a/src/real-numbers.lagda.md
+++ b/src/real-numbers.lagda.md
@@ -18,11 +18,13 @@ open import real-numbers.binary-minimum-real-numbers public
open import real-numbers.cauchy-completeness-dedekind-real-numbers public
open import real-numbers.cauchy-sequences-real-numbers public
open import real-numbers.closed-intervals-real-numbers public
+open import real-numbers.convergent-series-real-numbers public
open import real-numbers.dedekind-real-numbers public
open import real-numbers.difference-real-numbers public
open import real-numbers.distance-real-numbers public
open import real-numbers.enclosing-closed-rational-intervals-real-numbers public
open import real-numbers.finitely-enumerable-subsets-real-numbers public
+open import real-numbers.geometric-sequences-real-numbers public
open import real-numbers.inequalities-addition-and-subtraction-real-numbers public
open import real-numbers.inequality-lower-dedekind-real-numbers public
open import real-numbers.inequality-nonnegative-real-numbers public
@@ -34,6 +36,7 @@ open import real-numbers.infima-families-real-numbers public
open import real-numbers.inhabited-finitely-enumerable-subsets-real-numbers public
open import real-numbers.inhabited-totally-bounded-subsets-real-numbers public
open import real-numbers.isometry-addition-real-numbers public
+open import real-numbers.isometry-difference-real-numbers public
open import real-numbers.isometry-negation-real-numbers public
open import real-numbers.large-additive-group-of-real-numbers public
open import real-numbers.large-multiplicative-monoid-of-real-numbers public
@@ -45,6 +48,7 @@ open import real-numbers.maximum-finite-families-real-numbers public
open import real-numbers.maximum-inhabited-finitely-enumerable-subsets-real-numbers public
open import real-numbers.maximum-lower-dedekind-real-numbers public
open import real-numbers.maximum-upper-dedekind-real-numbers public
+open import real-numbers.metric-abelian-group-of-real-numbers public
open import real-numbers.metric-space-of-nonnegative-real-numbers public
open import real-numbers.metric-space-of-real-numbers public
open import real-numbers.minimum-finite-families-real-numbers public
@@ -73,8 +77,10 @@ open import real-numbers.rational-real-numbers public
open import real-numbers.rational-upper-dedekind-real-numbers public
open import real-numbers.real-numbers-from-lower-dedekind-real-numbers public
open import real-numbers.real-numbers-from-upper-dedekind-real-numbers public
+open import real-numbers.real-sequences-approximating-zero public
open import real-numbers.saturation-inequality-nonnegative-real-numbers public
open import real-numbers.saturation-inequality-real-numbers public
+open import real-numbers.series-real-numbers public
open import real-numbers.short-function-binary-maximum-real-numbers public
open import real-numbers.similarity-nonnegative-real-numbers public
open import real-numbers.similarity-positive-real-numbers public
@@ -89,5 +95,6 @@ open import real-numbers.subsets-real-numbers public
open import real-numbers.suprema-families-real-numbers public
open import real-numbers.totally-bounded-subsets-real-numbers public
open import real-numbers.transposition-addition-subtraction-cuts-dedekind-real-numbers public
+open import real-numbers.uniformly-continuous-functions-real-numbers public
open import real-numbers.upper-dedekind-real-numbers public
```
diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md
index 242133133b..a362297a3d 100644
--- a/src/real-numbers/apartness-real-numbers.lagda.md
+++ b/src/real-numbers/apartness-real-numbers.lagda.md
@@ -7,6 +7,8 @@ module real-numbers.apartness-real-numbers where
Imports
```agda
+open import foundation.apartness-relations
+open import foundation.binary-transport
open import foundation.disjunction
open import foundation.empty-types
open import foundation.function-types
@@ -18,7 +20,12 @@ open import foundation.negation
open import foundation.propositions
open import foundation.universe-levels
+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.negation-real-numbers
+open import real-numbers.similarity-real-numbers
+open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers
open import real-numbers.strict-inequality-real-numbers
```
@@ -42,6 +49,10 @@ module _
apart-ℝ : UU (l1 ⊔ l2)
apart-ℝ = type-Prop apart-prop-ℝ
+
+apart-le-ℝ :
+ {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → apart-ℝ x y
+apart-le-ℝ = inl-disjunction
```
## Properties
@@ -58,8 +69,8 @@ antireflexive-apart-ℝ x =
```agda
symmetric-apart-ℝ :
- {l1 l2 : Level} → (x : ℝ l1) (y : ℝ l2) → apart-ℝ x y → apart-ℝ y x
-symmetric-apart-ℝ x y =
+ {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → apart-ℝ x y → apart-ℝ y x
+symmetric-apart-ℝ {x = x} {y = y} =
elim-disjunction (apart-prop-ℝ y x) inr-disjunction inl-disjunction
```
@@ -91,7 +102,7 @@ apart-prop-Large-Apartness-Relation large-apartness-relation-ℝ =
apart-prop-ℝ
antirefl-Large-Apartness-Relation large-apartness-relation-ℝ =
antireflexive-apart-ℝ
-symmetric-Large-Apartness-Relation large-apartness-relation-ℝ =
+symmetric-Large-Apartness-Relation large-apartness-relation-ℝ _ _ =
symmetric-apart-ℝ
cotransitive-Large-Apartness-Relation large-apartness-relation-ℝ =
cotransitive-apart-ℝ
@@ -104,3 +115,77 @@ nonequal-apart-ℝ : {l : Level} (x y : ℝ l) → apart-ℝ x y → x ≠ y
nonequal-apart-ℝ x y =
nonequal-apart-Large-Apartness-Relation large-apartness-relation-ℝ
```
+
+### Apartness is preserved by translation
+
+```agda
+abstract
+ preserves-apart-left-add-ℝ :
+ {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) →
+ apart-ℝ y z → apart-ℝ (x +ℝ y) (x +ℝ z)
+ preserves-apart-left-add-ℝ x y z =
+ map-disjunction
+ ( preserves-le-left-add-ℝ x y z)
+ ( preserves-le-left-add-ℝ x z y)
+
+ preserves-apart-right-add-ℝ :
+ {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) →
+ apart-ℝ y z → apart-ℝ (y +ℝ x) (z +ℝ x)
+ preserves-apart-right-add-ℝ x y z y#z =
+ binary-tr
+ ( apart-ℝ)
+ ( commutative-add-ℝ x y)
+ ( commutative-add-ℝ x z)
+ ( preserves-apart-left-add-ℝ x y z y#z)
+```
+
+### Apartness is preserved by negation
+
+```agda
+abstract
+ preserves-apart-neg-ℝ :
+ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → apart-ℝ x y →
+ apart-ℝ (neg-ℝ x) (neg-ℝ y)
+ preserves-apart-neg-ℝ x y =
+ elim-disjunction
+ ( apart-prop-ℝ _ _)
+ ( inr-disjunction ∘ neg-le-ℝ)
+ ( inl-disjunction ∘ neg-le-ℝ)
+```
+
+### Apartness is preserved by similarity
+
+```agda
+abstract
+ apart-right-sim-ℝ :
+ {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) →
+ sim-ℝ x y → apart-ℝ z x → apart-ℝ z y
+ apart-right-sim-ℝ z x y x~y =
+ map-disjunction
+ ( preserves-le-right-sim-ℝ z x y x~y)
+ ( preserves-le-left-sim-ℝ z x y x~y)
+
+ apart-left-sim-ℝ :
+ {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) →
+ sim-ℝ x y → apart-ℝ x z → apart-ℝ y z
+ apart-left-sim-ℝ z x y x~y =
+ map-disjunction
+ ( preserves-le-left-sim-ℝ z x y x~y)
+ ( preserves-le-right-sim-ℝ z x y x~y)
+
+ apart-sim-ℝ :
+ {l1 l2 l3 l4 : Level} {x : ℝ l1} {x' : ℝ l2} {y : ℝ l3} {y' : ℝ l4} →
+ sim-ℝ x x' → sim-ℝ y y' → apart-ℝ x y → apart-ℝ x' y'
+ apart-sim-ℝ {x = x} {x' = x'} {y = y} {y' = y'} x~x' y~y' x#y =
+ apart-left-sim-ℝ
+ ( y')
+ ( x)
+ ( x')
+ ( x~x')
+ ( apart-right-sim-ℝ
+ ( x)
+ ( y)
+ ( y')
+ ( y~y')
+ ( x#y))
+```
diff --git a/src/real-numbers/convergent-series-real-numbers.lagda.md b/src/real-numbers/convergent-series-real-numbers.lagda.md
new file mode 100644
index 0000000000..9c8b3bd2db
--- /dev/null
+++ b/src/real-numbers/convergent-series-real-numbers.lagda.md
@@ -0,0 +1,40 @@
+# Convergent series of real numbers
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.convergent-series-real-numbers where
+```
+
+Imports
+
+```agda
+open import analysis.convergent-series-metric-abelian-groups
+
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.series-real-numbers
+```
+
+
+
+## Idea
+
+A [series](real-numbers.series-real-numbers.md) of
+[real numbers](real-numbers.dedekind-real-numbers.md)
+{{#concept "converges" Disambiguation="series of real numbers" Agda=is-sum-series-ℝ}}
+to `x` if the sequence of its partial sums
+[converges](metric-spaces.limits-of-sequences-metric-spaces.md) to `x` in the
+[standard metric space of real numbers](real-numbers.metric-space-of-real-numbers.md).
+
+## Definition
+
+```agda
+is-sum-prop-series-ℝ : {l : Level} → series-ℝ l → ℝ l → Prop l
+is-sum-prop-series-ℝ = is-sum-prop-series-Metric-Ab
+
+is-sum-series-ℝ : {l : Level} → series-ℝ l → ℝ l → UU l
+is-sum-series-ℝ = is-sum-series-Metric-Ab
+```
diff --git a/src/real-numbers/distance-real-numbers.lagda.md b/src/real-numbers/distance-real-numbers.lagda.md
index 4bc37c1536..8b9f67f22b 100644
--- a/src/real-numbers/distance-real-numbers.lagda.md
+++ b/src/real-numbers/distance-real-numbers.lagda.md
@@ -295,7 +295,7 @@ abstract
by sim-eq-ℝ (ap abs-ℝ (right-unit-law-add-ℝ (x -ℝ y)))
```
-## Distributivity laws
+### Distributivity laws
```agda
module _
@@ -323,3 +323,39 @@ module _
= dist-ℝ (x *ℝ z) (y *ℝ z)
by ap abs-ℝ (right-distributive-mul-diff-ℝ x y z)
```
+
+### Zero laws
+
+```agda
+abstract
+ right-zero-law-dist-ℝ : {l : Level} (x : ℝ l) → dist-ℝ x zero-ℝ = abs-ℝ x
+ right-zero-law-dist-ℝ x = ap abs-ℝ (right-unit-law-diff-ℝ x)
+
+ left-zero-law-dist-ℝ : {l : Level} (x : ℝ l) → dist-ℝ zero-ℝ x = abs-ℝ x
+ left-zero-law-dist-ℝ x = commutative-dist-ℝ zero-ℝ x ∙ right-zero-law-dist-ℝ x
+```
+
+### Distance is preserved by similarity
+
+```agda
+abstract
+ preserves-dist-left-sim-ℝ :
+ {l1 l2 l3 : Level} {z : ℝ l1} {x : ℝ l2} {y : ℝ l3} → sim-ℝ x y →
+ sim-ℝ (dist-ℝ x z) (dist-ℝ y z)
+ preserves-dist-left-sim-ℝ {z = z} {x = x} {y = y} x~y =
+ preserves-sim-abs-ℝ (preserves-sim-right-add-ℝ (neg-ℝ z) x y x~y)
+
+ preserves-dist-right-sim-ℝ :
+ {l1 l2 l3 : Level} {z : ℝ l1} {x : ℝ l2} {y : ℝ l3} → sim-ℝ x y →
+ sim-ℝ (dist-ℝ z x) (dist-ℝ z y)
+ preserves-dist-right-sim-ℝ {z = z} x~y =
+ preserves-sim-abs-ℝ (preserves-sim-diff-ℝ (refl-sim-ℝ z) x~y)
+
+ preserves-dist-sim-ℝ :
+ {l1 l2 l3 l4 : Level} {x : ℝ l1} {x' : ℝ l2} {y : ℝ l3} {y' : ℝ l4} →
+ sim-ℝ x x' → sim-ℝ y y' → sim-ℝ (dist-ℝ x y) (dist-ℝ x' y')
+ preserves-dist-sim-ℝ x~x' y~y' =
+ transitive-sim-ℝ _ _ _
+ ( preserves-dist-right-sim-ℝ y~y')
+ ( preserves-dist-left-sim-ℝ x~x')
+```
diff --git a/src/real-numbers/geometric-sequences-real-numbers.lagda.md b/src/real-numbers/geometric-sequences-real-numbers.lagda.md
new file mode 100644
index 0000000000..a868836657
--- /dev/null
+++ b/src/real-numbers/geometric-sequences-real-numbers.lagda.md
@@ -0,0 +1,248 @@
+# Geometric sequences of real numbers
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.geometric-sequences-real-numbers where
+```
+
+Imports
+
+```agda
+open import commutative-algebra.geometric-sequences-commutative-rings
+
+open import elementary-number-theory.natural-numbers
+
+open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
+open import foundation.function-extensionality
+open import foundation.identity-types
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import lists.sequences
+
+open import metric-spaces.limits-of-sequences-metric-spaces
+open import metric-spaces.uniformly-continuous-functions-metric-spaces
+
+open import real-numbers.absolute-value-real-numbers
+open import real-numbers.apartness-real-numbers
+open import real-numbers.convergent-series-real-numbers
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.difference-real-numbers
+open import real-numbers.isometry-difference-real-numbers
+open import real-numbers.large-ring-of-real-numbers
+open import real-numbers.limits-sequences-real-numbers
+open import real-numbers.lipschitz-continuity-multiplication-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.multiplication-real-numbers
+open import real-numbers.multiplicative-inverses-nonzero-real-numbers
+open import real-numbers.nonzero-real-numbers
+open import real-numbers.powers-real-numbers
+open import real-numbers.raising-universe-levels-real-numbers
+open import real-numbers.rational-real-numbers
+open import real-numbers.series-real-numbers
+open import real-numbers.similarity-real-numbers
+open import real-numbers.strict-inequality-real-numbers
+open import real-numbers.uniformly-continuous-functions-real-numbers
+```
+
+
+
+## Idea
+
+A
+{{#concept "geometric sequence" Disambiguation="of real numbers" Agda=geometric-sequence-ℝ}}
+of [real numbers](real-numbers.dedekind-real-numbers.md) is a
+[geometric sequence](commutative-algebra.geometric-sequences-commutative-rings.md)
+in the
+[commutative ring of real numbers](real-numbers.large-ring-of-real-numbers.md).
+
+## Definitions
+
+```agda
+geometric-sequence-ℝ : (l : Level) → UU (lsuc l)
+geometric-sequence-ℝ l =
+ geometric-sequence-Commutative-Ring (commutative-ring-ℝ l)
+
+seq-geometric-sequence-ℝ : {l : Level} → geometric-sequence-ℝ l → sequence (ℝ l)
+seq-geometric-sequence-ℝ {l} =
+ seq-geometric-sequence-Commutative-Ring (commutative-ring-ℝ l)
+
+standard-geometric-sequence-ℝ :
+ {l : Level} → ℝ l → ℝ l → geometric-sequence-ℝ l
+standard-geometric-sequence-ℝ {l} =
+ standard-geometric-sequence-Commutative-Ring (commutative-ring-ℝ l)
+
+seq-standard-geometric-sequence-ℝ :
+ {l : Level} → ℝ l → ℝ l → sequence (ℝ l)
+seq-standard-geometric-sequence-ℝ {l} =
+ seq-standard-geometric-sequence-Commutative-Ring (commutative-ring-ℝ l)
+```
+
+## Properties
+
+### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ`
+
+```agda
+module _
+ {l : Level} (a r : ℝ l)
+ where
+
+ compute-standard-geometric-sequence-ℝ :
+ (n : ℕ) → seq-standard-geometric-sequence-ℝ a r n = a *ℝ power-ℝ n r
+ compute-standard-geometric-sequence-ℝ n =
+ inv
+ ( htpy-mul-pow-standard-geometric-sequence-Commutative-Ring
+ ( commutative-ring-ℝ l)
+ ( a)
+ ( r)
+ ( n))
+```
+
+### If `r` is apart from `1`, the sum of the first `n` elements of the standard geometric sequence `n ↦ arⁿ` is `a(1-rⁿ)/(1-r)`
+
+```agda
+sum-standard-geometric-fin-sequence-ℝ : {l : Level} → ℝ l → ℝ l → ℕ → ℝ l
+sum-standard-geometric-fin-sequence-ℝ {l} =
+ sum-standard-geometric-fin-sequence-Commutative-Ring (commutative-ring-ℝ l)
+
+module _
+ {l : Level} (a r : ℝ l) (r≠1 : apart-ℝ r one-ℝ)
+ where
+
+ abstract
+ compute-sum-standard-geometric-fin-sequence-ℝ :
+ (n : ℕ) →
+ sum-standard-geometric-fin-sequence-ℝ a r n =
+ ( ( a *ℝ
+ real-inv-nonzero-ℝ
+ ( nonzero-diff-apart-ℝ one-ℝ r (symmetric-apart-ℝ r≠1))) *ℝ
+ (one-ℝ -ℝ power-ℝ n r))
+ compute-sum-standard-geometric-fin-sequence-ℝ n =
+ let
+ 1#r = symmetric-apart-ℝ r≠1
+ 1l#r =
+ apart-left-sim-ℝ
+ ( r)
+ ( one-ℝ)
+ ( raise-ℝ l one-ℝ)
+ ( sim-raise-ℝ l one-ℝ)
+ ( 1#r)
+ in
+ equational-reasoning
+ sum-standard-geometric-fin-sequence-ℝ a r n
+ =
+ ( a *ℝ
+ real-inv-nonzero-ℝ
+ ( nonzero-diff-apart-ℝ (raise-ℝ l one-ℝ) r 1l#r)) *ℝ
+ ( raise-ℝ l one-ℝ -ℝ power-ℝ n r)
+ by
+ compute-sum-standard-geometric-fin-sequence-Commutative-Ring
+ ( commutative-ring-ℝ l)
+ ( a)
+ ( r)
+ ( is-invertible-is-nonzero-ℝ _
+ ( is-nonzero-diff-is-apart-ℝ _ _ 1l#r))
+ ( n)
+ =
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-apart-ℝ one-ℝ r 1#r)) *ℝ
+ ( one-ℝ -ℝ power-ℝ n r)
+ by
+ ap-mul-ℝ
+ ( ap-mul-ℝ
+ ( refl)
+ ( ap
+ ( real-inv-nonzero-ℝ)
+ ( eq-nonzero-ℝ _ _
+ ( eq-sim-ℝ
+ ( preserves-sim-diff-ℝ
+ ( symmetric-sim-ℝ (sim-raise-ℝ l one-ℝ))
+ ( refl-sim-ℝ r))))))
+ ( eq-sim-ℝ
+ ( preserves-sim-diff-ℝ
+ ( symmetric-sim-ℝ (sim-raise-ℝ l one-ℝ))
+ ( refl-sim-ℝ (power-ℝ n r))))
+```
+
+### If `|r| < 1`, then the geometric series `Σₙ arⁿ` converges to `a/(1-r)`
+
+This is the [66th](literature.100-theorems.md#66) theorem on
+[Freek Wiedijk](http://www.cs.ru.nl/F.Wiedijk/)'s list of
+[100 theorems](literature.100-theorems.md) {{#cite 100theorems}}.
+
+```agda
+module _
+ {l : Level} (a r : ℝ l)
+ where
+
+ standard-geometric-series-ℝ : series-ℝ l
+ standard-geometric-series-ℝ =
+ series-terms-ℝ (seq-standard-geometric-sequence-ℝ a r)
+
+ abstract
+ compute-sum-standard-geometric-series-ℝ :
+ (|r|<1 : le-ℝ (abs-ℝ r) one-ℝ) →
+ is-sum-series-ℝ
+ ( standard-geometric-series-ℝ)
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1))
+ compute-sum-standard-geometric-series-ℝ |r|<1 =
+ let
+ r#1 = apart-le-ℝ (concatenate-leq-le-ℝ _ _ _ (leq-abs-ℝ r) |r|<1)
+ in
+ binary-tr
+ ( is-limit-sequence-ℝ)
+ ( inv
+ ( eq-htpy
+ ( λ n →
+ equational-reasoning
+ sum-standard-geometric-fin-sequence-ℝ a r n
+ =
+ ( a *ℝ real-inv-nonzero-ℝ _) *ℝ
+ ( one-ℝ -ℝ power-ℝ n r)
+ by compute-sum-standard-geometric-fin-sequence-ℝ a r r#1 n
+ =
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ
+ ( one-ℝ -ℝ power-ℝ n r)
+ by
+ ap
+ ( λ z →
+ (a *ℝ real-inv-nonzero-ℝ z) *ℝ (one-ℝ -ℝ power-ℝ n r))
+ ( eq-nonzero-ℝ
+ ( nonzero-diff-apart-ℝ
+ ( one-ℝ)
+ ( r)
+ ( symmetric-apart-ℝ r#1))
+ ( nonzero-diff-le-abs-ℝ |r|<1)
+ ( refl)))))
+ ( equational-reasoning
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ
+ ( one-ℝ -ℝ raise-ℝ l zero-ℝ)
+ =
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ
+ ( one-ℝ -ℝ zero-ℝ)
+ by
+ eq-sim-ℝ
+ ( preserves-sim-left-mul-ℝ _ _ _
+ ( preserves-sim-diff-ℝ
+ ( refl-sim-ℝ one-ℝ)
+ ( symmetric-sim-ℝ (sim-raise-ℝ l zero-ℝ))))
+ =
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ one-ℝ
+ by ap-mul-ℝ refl (right-unit-law-diff-ℝ one-ℝ)
+ = a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)
+ by right-unit-law-mul-ℝ _)
+ ( preserves-limits-sequence-uniformly-continuous-function-ℝ
+ ( comp-uniformly-continuous-function-ℝ
+ ( uniformly-continuous-right-mul-ℝ
+ ( l)
+ ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)))
+ ( uniformly-continuous-diff-ℝ one-ℝ))
+ ( λ n → power-ℝ n r)
+ ( raise-ℝ l zero-ℝ)
+ ( is-zero-lim-power-le-one-abs-ℝ r |r|<1))
+```
+
+## References
+
+{{#bibliography}}
diff --git a/src/real-numbers/isometry-difference-real-numbers.lagda.md b/src/real-numbers/isometry-difference-real-numbers.lagda.md
new file mode 100644
index 0000000000..73b411df6a
--- /dev/null
+++ b/src/real-numbers/isometry-difference-real-numbers.lagda.md
@@ -0,0 +1,73 @@
+# The difference isometry on real numbers
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.isometry-difference-real-numbers where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.uniformly-continuous-functions-metric-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.isometry-addition-real-numbers
+open import real-numbers.isometry-negation-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.negation-real-numbers
+```
+
+
+
+## Idea
+
+[Subtracting](real-numbers.difference-real-numbers.md) from a fixed
+[real number](real-numbers.dedekind-real-numbers.md) is an
+[isometry](metric-spaces.isometries-metric-spaces.md) from the
+[metric space of real numbers](real-numbers.metric-space-of-real-numbers.md) to
+itself.
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level} (x : ℝ l1)
+ where
+
+ abstract
+ is-isometry-diff-ℝ :
+ is-isometry-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( diff-ℝ x)
+ is-isometry-diff-ℝ =
+ is-isometry-comp-is-isometry-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( add-ℝ x)
+ ( neg-ℝ)
+ ( is-isometry-left-add-ℝ x)
+ ( is-isometry-neg-ℝ)
+
+ isometry-diff-ℝ :
+ isometry-Metric-Space (metric-space-ℝ l2) (metric-space-ℝ (l1 ⊔ l2))
+ isometry-diff-ℝ = (diff-ℝ x , is-isometry-diff-ℝ)
+
+ uniformly-continuous-diff-ℝ :
+ uniformly-continuous-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ uniformly-continuous-diff-ℝ =
+ uniformly-continuous-isometry-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( isometry-diff-ℝ)
+```
diff --git a/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md b/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md
index b5d2a73c59..b3829c7449 100644
--- a/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md
+++ b/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md
@@ -48,7 +48,7 @@ large-monoid-mul-ℝ =
( large-similarity-relation-sim-ℝ)
( raise-ℝ)
( sim-raise-ℝ)
- ( preserves-sim-mul-ℝ)
+ ( λ _ _ x~x' _ _ y~y' → preserves-sim-mul-ℝ x~x' y~y')
( one-ℝ)
( left-unit-law-mul-ℝ)
( right-unit-law-mul-ℝ)
diff --git a/src/real-numbers/large-ring-of-real-numbers.lagda.md b/src/real-numbers/large-ring-of-real-numbers.lagda.md
index 98fd1e8782..d1d3b2b5ee 100644
--- a/src/real-numbers/large-ring-of-real-numbers.lagda.md
+++ b/src/real-numbers/large-ring-of-real-numbers.lagda.md
@@ -44,7 +44,7 @@ large-ring-ℝ =
make-Large-Ring
( large-ab-add-ℝ)
( mul-ℝ)
- ( preserves-sim-mul-ℝ)
+ ( λ _ _ a~a' _ _ → preserves-sim-mul-ℝ a~a')
( one-ℝ)
( associative-mul-ℝ)
( left-unit-law-mul-ℝ)
diff --git a/src/real-numbers/limits-sequences-real-numbers.lagda.md b/src/real-numbers/limits-sequences-real-numbers.lagda.md
index f7ab605183..4636b60dcd 100644
--- a/src/real-numbers/limits-sequences-real-numbers.lagda.md
+++ b/src/real-numbers/limits-sequences-real-numbers.lagda.md
@@ -10,6 +10,8 @@ module real-numbers.limits-sequences-real-numbers where
```agda
open import foundation.dependent-pair-types
+open import foundation.propositional-truncations
+open import foundation.propositions
open import foundation.universe-levels
open import lists.sequences
@@ -21,6 +23,7 @@ open import real-numbers.addition-real-numbers
open import real-numbers.dedekind-real-numbers
open import real-numbers.isometry-addition-real-numbers
open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.uniformly-continuous-functions-real-numbers
```
@@ -34,6 +37,10 @@ On this page, we describe properties of
## Definition
```agda
+is-limit-prop-sequence-ℝ : {l : Level} → sequence (ℝ l) → ℝ l → Prop l
+is-limit-prop-sequence-ℝ {l} =
+ is-limit-prop-sequence-Metric-Space (metric-space-ℝ l)
+
is-limit-sequence-ℝ : {l : Level} → sequence (ℝ l) → ℝ l → UU l
is-limit-sequence-ℝ {l} = is-limit-sequence-Metric-Space (metric-space-ℝ l)
```
@@ -54,13 +61,13 @@ module _
where
abstract
- is-limit-add-sequence-ℝ :
+ preserves-limits-add-sequence-ℝ :
is-limit-sequence-Metric-Space
( metric-space-ℝ (l1 ⊔ l2))
( binary-map-sequence add-ℝ u v)
( lim-u +ℝ lim-v)
- is-limit-add-sequence-ℝ =
- modulated-ucont-map-limit-sequence-Metric-Space
+ preserves-limits-add-sequence-ℝ =
+ preserves-limits-sequence-modulated-ucont-map-Metric-Space
( product-Metric-Space (metric-space-ℝ l1) (metric-space-ℝ l2))
( metric-space-ℝ (l1 ⊔ l2))
( modulated-ucont-add-pair-ℝ l1 l2)
@@ -72,3 +79,30 @@ module _
( Hu)
( Hv))
```
+
+### Uniformly continuous functions from `ℝ` to `ℝ` preserve limits
+
+```agda
+module _
+ {l1 l2 : Level}
+ (f : uniformly-continuous-function-ℝ l1 l2)
+ (u : sequence (ℝ l1))
+ (lim : ℝ l1)
+ where
+
+ abstract
+ preserves-limits-sequence-uniformly-continuous-function-ℝ :
+ is-limit-sequence-ℝ u lim →
+ is-limit-sequence-ℝ
+ ( map-sequence
+ ( map-uniformly-continuous-function-ℝ f)
+ ( u))
+ ( map-uniformly-continuous-function-ℝ f lim)
+ preserves-limits-sequence-uniformly-continuous-function-ℝ =
+ preserves-limits-sequence-uniformly-continuous-function-Metric-Space
+ ( metric-space-ℝ l1)
+ ( metric-space-ℝ l2)
+ ( f)
+ ( u)
+ ( lim)
+```
diff --git a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md
index b44914841b..7e881fca25 100644
--- a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md
+++ b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md
@@ -38,6 +38,7 @@ open import real-numbers.multiplication-real-numbers
open import real-numbers.nonnegative-real-numbers
open import real-numbers.rational-real-numbers
open import real-numbers.strict-inequality-real-numbers
+open import real-numbers.uniformly-continuous-functions-real-numbers
```
@@ -148,16 +149,12 @@ module _
( is-lipschitz-left-mul-ℝ l2 c)
uniformly-continuous-right-mul-ℝ :
- uniformly-continuous-function-Metric-Space
- ( metric-space-ℝ l2)
- ( metric-space-ℝ (l1 ⊔ l2))
+ uniformly-continuous-function-ℝ l2 (l1 ⊔ l2)
uniformly-continuous-right-mul-ℝ =
( mul-ℝ c , is-uniformly-continuous-right-mul-ℝ)
uniformly-continuous-left-mul-ℝ :
- uniformly-continuous-function-Metric-Space
- ( metric-space-ℝ l2)
- ( metric-space-ℝ (l1 ⊔ l2))
+ uniformly-continuous-function-ℝ l2 (l1 ⊔ l2)
uniformly-continuous-left-mul-ℝ =
( mul-ℝ' c , is-uniformly-continuous-left-mul-ℝ)
```
diff --git a/src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md b/src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md
new file mode 100644
index 0000000000..3402489495
--- /dev/null
+++ b/src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md
@@ -0,0 +1,44 @@
+# The metric abelian group of real numbers
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.metric-abelian-group-of-real-numbers where
+```
+
+Imports
+
+```agda
+open import analysis.metric-abelian-groups
+
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import metric-spaces.pseudometric-spaces
+
+open import real-numbers.isometry-addition-real-numbers
+open import real-numbers.isometry-negation-real-numbers
+open import real-numbers.large-additive-group-of-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+```
+
+
+
+## Idea
+
+The [Dedekind real numbers](real-numbers.dedekind-real-numbers.md) form a
+[metric abelian group](analysis.metric-abelian-groups.md) under
+[addition](real-numbers.addition-real-numbers.md) with regards to their
+[standard metric space](real-numbers.metric-space-of-real-numbers.md).
+
+## Definition
+
+```agda
+metric-ab-ℝ : (l : Level) → Metric-Ab (lsuc l) l
+metric-ab-ℝ l =
+ ( ab-add-ℝ l ,
+ structure-Pseudometric-Space (pseudometric-space-ℝ l) ,
+ is-extensional-pseudometric-space-ℝ ,
+ is-isometry-neg-ℝ ,
+ is-isometry-left-add-ℝ)
+```
diff --git a/src/real-numbers/multiplication-real-numbers.lagda.md b/src/real-numbers/multiplication-real-numbers.lagda.md
index 22733658d6..e228164d2d 100644
--- a/src/real-numbers/multiplication-real-numbers.lagda.md
+++ b/src/real-numbers/multiplication-real-numbers.lagda.md
@@ -1150,10 +1150,10 @@ module _
abstract
preserves-sim-mul-ℝ :
{l1 l2 l3 l4 : Level} →
- (a : ℝ l1) (a' : ℝ l2) → sim-ℝ a a' →
- (b : ℝ l3) (b' : ℝ l4) → sim-ℝ b b' →
+ {a : ℝ l1} {a' : ℝ l2} → sim-ℝ a a' →
+ {b : ℝ l3} {b' : ℝ l4} → sim-ℝ b b' →
sim-ℝ (a *ℝ b) (a' *ℝ b')
- preserves-sim-mul-ℝ a a' a~a' b b' b~b' =
+ preserves-sim-mul-ℝ {a = a} {a' = a'} a~a' {b = b} {b' = b'} b~b' =
transitive-sim-ℝ
( a *ℝ b)
( a *ℝ b')
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 51ab87da43..aedb75f632 100644
--- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md
+++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md
@@ -9,6 +9,8 @@ module real-numbers.multiplicative-inverses-nonzero-real-numbers where
Imports
```agda
+open import commutative-algebra.invertible-elements-commutative-rings
+
open import elementary-number-theory.inequality-rational-numbers
open import elementary-number-theory.minimum-rational-numbers
open import elementary-number-theory.multiplication-closed-intervals-rational-numbers
@@ -32,12 +34,15 @@ open import foundation.transport-along-identifications
open import foundation.universe-levels
open import real-numbers.dedekind-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.large-ring-of-real-numbers
open import real-numbers.multiplication-real-numbers
open import real-numbers.multiplicative-inverses-negative-real-numbers
open import real-numbers.multiplicative-inverses-positive-real-numbers
open import real-numbers.negative-real-numbers
open import real-numbers.nonzero-real-numbers
open import real-numbers.positive-real-numbers
+open import real-numbers.raising-universe-levels-real-numbers
open import real-numbers.rational-real-numbers
open import real-numbers.similarity-real-numbers
```
@@ -120,13 +125,27 @@ module _
right-inverse-law-mul-nonzero-ℝ = pr2 has-nonzero-inv-nonzero-ℝ
abstract
- left-inverse-law-nonzero-ℝ :
+ left-inverse-law-mul-nonzero-ℝ :
sim-ℝ (real-inv-nonzero-ℝ *ℝ real-nonzero-ℝ x) one-ℝ
- left-inverse-law-nonzero-ℝ =
+ left-inverse-law-mul-nonzero-ℝ =
tr
( λ y → sim-ℝ y one-ℝ)
( commutative-mul-ℝ _ _)
( right-inverse-law-mul-nonzero-ℝ)
+
+is-invertible-is-nonzero-ℝ :
+ {l : Level} (x : ℝ l) → is-nonzero-ℝ x →
+ is-invertible-element-Commutative-Ring (commutative-ring-ℝ l) x
+is-invertible-is-nonzero-ℝ x x≠0 =
+ ( real-inv-nonzero-ℝ (x , x≠0) ,
+ eq-sim-ℝ
+ ( transitive-sim-ℝ _ _ _
+ ( sim-raise-ℝ _ _)
+ ( right-inverse-law-mul-nonzero-ℝ (x , x≠0))) ,
+ eq-sim-ℝ
+ ( transitive-sim-ℝ _ _ _
+ ( sim-raise-ℝ _ _)
+ ( left-inverse-law-mul-nonzero-ℝ (x , x≠0))))
```
### If a real number has a multiplicative inverse, it is nonzero
@@ -225,3 +244,24 @@ abstract
unique-right-inv-nonzero-ℝ y x
( tr (λ z → sim-ℝ z one-ℝ) (commutative-mul-ℝ _ _) xy=1)
```
+
+### If two nonzero real numbers are similar, so are their inverses
+
+```agda
+abstract
+ preserves-sim-inv-nonzero-ℝ :
+ {l1 l2 : Level} (x : nonzero-ℝ l1) (y : nonzero-ℝ l2) →
+ sim-ℝ (real-nonzero-ℝ x) (real-nonzero-ℝ y) →
+ sim-ℝ (real-inv-nonzero-ℝ x) (real-inv-nonzero-ℝ y)
+ preserves-sim-inv-nonzero-ℝ (x , x≠0) (y , y≠0) x~y =
+ symmetric-sim-ℝ
+ ( unique-right-inv-nonzero-ℝ
+ ( x , x≠0)
+ ( inv-nonzero-ℝ (y , y≠0))
+ ( similarity-reasoning-ℝ
+ x *ℝ real-inv-nonzero-ℝ (y , y≠0)
+ ~ℝ y *ℝ real-inv-nonzero-ℝ (y , y≠0)
+ by preserves-sim-right-mul-ℝ _ _ _ x~y
+ ~ℝ one-ℝ
+ by right-inverse-law-mul-nonzero-ℝ (y , y≠0)))
+```
diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md
index c7b56ff0af..d536334e57 100644
--- a/src/real-numbers/nonnegative-real-numbers.lagda.md
+++ b/src/real-numbers/nonnegative-real-numbers.lagda.md
@@ -36,7 +36,9 @@ open import real-numbers.dedekind-real-numbers
open import real-numbers.difference-real-numbers
open import real-numbers.inequalities-addition-and-subtraction-real-numbers
open import real-numbers.inequality-real-numbers
+open import real-numbers.raising-universe-levels-real-numbers
open import real-numbers.rational-real-numbers
+open import real-numbers.similarity-real-numbers
open import real-numbers.strict-inequality-real-numbers
```
@@ -126,6 +128,11 @@ abstract
preserves-is-nonnegative-real-ℚ is-nonneg-q =
preserves-leq-real-ℚ (leq-zero-is-nonnegative-ℚ is-nonneg-q)
+ reflects-is-nonnegative-real-ℚ :
+ {q : ℚ} → is-nonnegative-ℝ (real-ℚ q) → is-nonnegative-ℚ q
+ reflects-is-nonnegative-real-ℚ 0≤qℝ =
+ is-nonnegative-leq-zero-ℚ (reflects-leq-real-ℚ 0≤qℝ)
+
nonnegative-real-ℚ⁰⁺ : ℚ⁰⁺ → ℝ⁰⁺ lzero
nonnegative-real-ℚ⁰⁺ (q , is-nonneg-q) =
( real-ℚ q , preserves-is-nonnegative-real-ℚ is-nonneg-q)
@@ -277,4 +284,29 @@ abstract
{l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ l2) → leq-ℝ (real-ℝ⁰⁺ x) y →
is-nonnegative-ℝ y
is-nonnegative-leq-ℝ⁰⁺ (x , 0≤x) y x≤y = transitive-leq-ℝ zero-ℝ x y x≤y 0≤x
+
+ is-nonnegative-le-ℝ⁰⁺ :
+ {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ l2) → le-ℝ (real-ℝ⁰⁺ x) y →
+ is-nonnegative-ℝ y
+ is-nonnegative-le-ℝ⁰⁺ x y x
@@ -86,3 +93,48 @@ eq-nonzero-ℝ :
x = y
eq-nonzero-ℝ _ _ = eq-type-subtype is-nonzero-prop-ℝ
```
+
+### Two real numbers are apart if and only if their difference is nonzero
+
+```agda
+module _
+ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2)
+ where
+
+ abstract
+ is-nonzero-diff-is-apart-ℝ : apart-ℝ x y → is-nonzero-ℝ (x -ℝ y)
+ is-nonzero-diff-is-apart-ℝ x#y =
+ apart-right-sim-ℝ
+ ( x -ℝ y)
+ ( y -ℝ y)
+ ( zero-ℝ)
+ ( right-inverse-law-add-ℝ y)
+ ( preserves-apart-right-add-ℝ (neg-ℝ y) x y x#y)
+
+ is-apart-is-nonzero-diff-ℝ : is-nonzero-ℝ (x -ℝ y) → apart-ℝ x y
+ is-apart-is-nonzero-diff-ℝ x-y#0 =
+ apart-sim-ℝ
+ ( cancel-right-diff-add-ℝ x y)
+ ( sim-eq-ℝ (left-unit-law-add-ℝ y))
+ ( preserves-apart-right-add-ℝ y _ _ x-y#0)
+
+ nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2)
+ nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y)
+```
+
+### The nonzero difference of a pair of real numbers `x` and `y` such that `x < y`
+
+```agda
+nonzero-diff-le-ℝ :
+ {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → nonzero-ℝ (l1 ⊔ l2)
+nonzero-diff-le-ℝ {x = x} {y = y} x
@@ -181,6 +188,27 @@ abstract
is-positive-power-ℝ⁺ 1 (_ , is-pos-x) = is-pos-x
is-positive-power-ℝ⁺ (succ-ℕ n@(succ-ℕ _)) x⁺@(x , is-pos-x) =
is-positive-mul-ℝ (is-positive-power-ℝ⁺ n x⁺) is-pos-x
+
+power-ℝ⁺ : {l : Level} → ℕ → ℝ⁺ l → ℝ⁺ l
+power-ℝ⁺ n x⁺@(x , _) = (power-ℝ n x , is-positive-power-ℝ⁺ n x⁺)
+```
+
+### Powers of nonnegative real numbers are nonnegative
+
+```agda
+abstract
+ is-nonnegative-power-ℝ⁰⁺ :
+ {l : Level} (n : ℕ) (x : ℝ⁰⁺ l) → is-nonnegative-ℝ (power-ℝ n (real-ℝ⁰⁺ x))
+ is-nonnegative-power-ℝ⁰⁺ {l} 0 _ =
+ is-nonnegative-real-ℝ⁰⁺ (raise-ℝ⁰⁺ l one-ℝ⁰⁺)
+ is-nonnegative-power-ℝ⁰⁺ 1 (x , is-nonneg-x) = is-nonneg-x
+ is-nonnegative-power-ℝ⁰⁺ (succ-ℕ n@(succ-ℕ _)) x⁰⁺@(x , is-nonneg-x) =
+ is-nonnegative-mul-ℝ
+ ( is-nonnegative-power-ℝ⁰⁺ n x⁰⁺)
+ ( is-nonneg-x)
+
+power-ℝ⁰⁺ : {l : Level} → ℕ → ℝ⁰⁺ l → ℝ⁰⁺ l
+power-ℝ⁰⁺ n x⁰⁺@(x , _) = (power-ℝ n x , is-nonnegative-power-ℝ⁰⁺ n x⁰⁺)
```
### Even powers of negative real numbers are positive
@@ -326,3 +354,80 @@ abstract
≤ abs-ℝ (power-ℝ (succ-ℕ n) y)
by leq-eq-ℝ (ap abs-ℝ (inv (power-succ-ℝ n y)))
```
+
+### If `x` and `y` are nonnegative such that `x ≤ y`, then `xⁿ ≤ yⁿ`
+
+```agda
+abstract
+ preserves-leq-power-real-ℝ⁰⁺ :
+ {l1 l2 : Level} (n : ℕ) (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) → leq-ℝ⁰⁺ x y →
+ leq-ℝ (power-ℝ n (real-ℝ⁰⁺ x)) (power-ℝ n (real-ℝ⁰⁺ y))
+ preserves-leq-power-real-ℝ⁰⁺ {l1} {l2} 0 _ _ _ =
+ leq-sim-ℝ
+ ( transitive-sim-ℝ _ one-ℝ _
+ ( sim-raise-ℝ l2 one-ℝ)
+ ( symmetric-sim-ℝ (sim-raise-ℝ l1 one-ℝ)))
+ preserves-leq-power-real-ℝ⁰⁺ (succ-ℕ n) x⁰⁺@(x , _) y⁰⁺@(y , _) x≤y =
+ let
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ in
+ chain-of-inequalities
+ power-ℝ (succ-ℕ n) x
+ ≤ power-ℝ n x *ℝ x
+ by leq-eq-ℝ (power-succ-ℝ n x)
+ ≤ power-ℝ n y *ℝ y
+ by
+ preserves-leq-mul-ℝ⁰⁺
+ ( power-ℝ⁰⁺ n x⁰⁺)
+ ( power-ℝ⁰⁺ n y⁰⁺)
+ ( x⁰⁺)
+ ( y⁰⁺)
+ ( preserves-leq-power-real-ℝ⁰⁺ n x⁰⁺ y⁰⁺ x≤y)
+ ( x≤y)
+ ≤ power-ℝ (succ-ℕ n) y
+ by leq-eq-ℝ (inv (power-succ-ℝ n y))
+```
+
+### If `|r| < 1`, then `rⁿ` approaches 0
+
+```agda
+abstract
+ is-zero-lim-power-le-one-abs-ℝ :
+ {l : Level} (r : ℝ l) → le-ℝ (abs-ℝ r) one-ℝ →
+ is-zero-limit-sequence-ℝ (λ n → power-ℝ n r)
+ is-zero-lim-power-le-one-abs-ℝ r |r|<1 =
+ let
+ open
+ do-syntax-trunc-Prop (is-zero-limit-prop-sequence-ℝ (λ n → power-ℝ n r))
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ in do
+ (ε , |r|<ε , ε<1ℝ) ← dense-rational-le-ℝ _ _ |r|<1
+ let
+ is-pos-ε =
+ reflects-is-positive-real-ℚ
+ ( is-positive-le-ℝ⁰⁺ (nonnegative-abs-ℝ r) (real-ℚ ε) |r|<ε)
+ ε⁺ = (ε , is-pos-ε)
+ is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ
+ ( λ n → power-ℝ n r)
+ ( (λ n → rational-ℚ⁺ (power-ℚ⁺ n ε⁺)) ,
+ is-zero-limit-power-le-one-ℚ⁺ ε⁺ (reflects-le-real-ℚ ε<1ℝ))
+ ( λ n →
+ chain-of-inequalities
+ abs-ℝ (power-ℝ n r)
+ ≤ abs-ℝ (power-ℝ n (real-ℚ ε))
+ by
+ preserves-leq-abs-power-ℝ
+ ( n)
+ ( r)
+ ( real-ℚ ε)
+ ( inv-tr
+ ( leq-ℝ (abs-ℝ r))
+ ( abs-real-ℝ⁺ (positive-real-ℚ⁺ ε⁺))
+ ( leq-le-ℝ |r|<ε))
+ ≤ power-ℝ n (real-ℚ ε)
+ by leq-eq-ℝ (abs-real-ℝ⁺ (power-ℝ⁺ n (positive-real-ℚ⁺ ε⁺)))
+ ≤ real-ℚ (power-ℚ n ε)
+ by leq-eq-ℝ (power-real-ℚ n ε)
+ ≤ real-ℚ⁺ (power-ℚ⁺ n ε⁺)
+ by leq-eq-ℝ (ap real-ℚ (power-rational-ℚ⁺ n ε⁺)))
+```
diff --git a/src/real-numbers/real-sequences-approximating-zero.lagda.md b/src/real-numbers/real-sequences-approximating-zero.lagda.md
new file mode 100644
index 0000000000..4cf4a469c7
--- /dev/null
+++ b/src/real-numbers/real-sequences-approximating-zero.lagda.md
@@ -0,0 +1,114 @@
+# Real sequences approximating zero
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.real-sequences-approximating-zero where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.absolute-value-rational-numbers
+open import elementary-number-theory.distance-rational-numbers
+open import elementary-number-theory.natural-numbers
+open import elementary-number-theory.nonnegative-rational-numbers
+open import elementary-number-theory.rational-numbers
+
+open import foundation.action-on-identifications-functions
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import lists.sequences
+
+open import logic.functoriality-existential-quantification
+
+open import metric-spaces.limits-of-sequences-metric-spaces
+open import metric-spaces.metric-space-of-rational-numbers
+open import metric-spaces.rational-sequences-approximating-zero
+
+open import order-theory.large-posets
+
+open import real-numbers.absolute-value-real-numbers
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.distance-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.limits-sequences-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.raising-universe-levels-real-numbers
+open import real-numbers.rational-real-numbers
+open import real-numbers.similarity-real-numbers
+```
+
+
+
+## Idea
+
+A [sequence](lists.sequences.md) of
+[real numbers](real-numbers.dedekind-real-numbers.md) is an
+{{#concept "approximation of zero" Disambiguation="sequence of real numbers" Agda=zero-limit-sequence-ℝ}}
+if it [converges](metric-spaces.limits-of-sequences-metric-spaces.md) to 0 in
+the
+[standard metric space of real numbers](real-numbers.metric-space-of-real-numbers.md).
+
+## Definition
+
+```agda
+is-zero-limit-prop-sequence-ℝ : {l : Level} → sequence (ℝ l) → Prop l
+is-zero-limit-prop-sequence-ℝ {l} σ =
+ is-limit-prop-sequence-ℝ σ (raise-ℝ l zero-ℝ)
+
+is-zero-limit-sequence-ℝ : {l : Level} → sequence (ℝ l) → UU l
+is-zero-limit-sequence-ℝ σ = type-Prop (is-zero-limit-prop-sequence-ℝ σ)
+```
+
+## Properties
+
+### If the absolute value of a sequence of reals is bounded by a rational approximation of zero, the sequence of reals is an approximation of zero
+
+```agda
+abstract
+ is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ :
+ {l : Level} (a : sequence (ℝ l)) (b : zero-limit-sequence-ℚ) →
+ ((n : ℕ) → leq-ℝ (abs-ℝ (a n)) (real-ℚ (seq-zero-limit-sequence-ℚ b n))) →
+ is-zero-limit-sequence-ℝ a
+ is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ
+ {l} a (b , lim-b=0) H =
+ let
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ in
+ map-tot-exists
+ ( λ μ is-mod-μ ε n με≤n →
+ neighborhood-dist-ℝ
+ ( ε)
+ ( a n)
+ ( raise-ℝ l zero-ℝ)
+ ( chain-of-inequalities
+ dist-ℝ (a n) (raise-ℝ l zero-ℝ)
+ ≤ dist-ℝ (a n) zero-ℝ
+ by
+ leq-sim-ℝ
+ ( preserves-dist-right-sim-ℝ
+ ( symmetric-sim-ℝ (sim-raise-ℝ l zero-ℝ)))
+ ≤ abs-ℝ (a n)
+ by leq-eq-ℝ (right-zero-law-dist-ℝ (a n))
+ ≤ real-ℚ (b n)
+ by H n
+ ≤ real-ℚ (rational-abs-ℚ (b n))
+ by preserves-leq-real-ℚ (leq-abs-ℚ (b n))
+ ≤ real-ℚ (rational-dist-ℚ (b n) zero-ℚ)
+ by
+ leq-eq-ℝ
+ ( ap
+ ( real-ℚ ∘ rational-ℚ⁰⁺)
+ ( inv (right-zero-law-dist-ℚ (b n))))
+ ≤ real-ℚ⁺ ε
+ by
+ preserves-leq-real-ℚ
+ ( leq-dist-neighborhood-ℚ ε _ _ (is-mod-μ ε n με≤n))))
+ ( lim-b=0)
+```
diff --git a/src/real-numbers/series-real-numbers.lagda.md b/src/real-numbers/series-real-numbers.lagda.md
new file mode 100644
index 0000000000..f3d0ecf21e
--- /dev/null
+++ b/src/real-numbers/series-real-numbers.lagda.md
@@ -0,0 +1,42 @@
+# Series of real numbers
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.series-real-numbers where
+```
+
+Imports
+
+```agda
+open import analysis.series-metric-abelian-groups
+
+open import foundation.universe-levels
+
+open import lists.sequences
+
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.metric-abelian-group-of-real-numbers
+```
+
+
+
+## Idea
+
+A {{#concept "series" Disambiguation="of real numbers" Agda=series-ℝ}} of
+[real numbers](real-numbers.dedekind-real-numbers.md) is an infinite sum
+$$∑_{n=0}^∞ a_n$$, which is evaluated for convergence in the
+[metric abelian group of real numbers](real-numbers.metric-abelian-group-of-real-numbers.md).
+
+## Definition
+
+```agda
+series-ℝ : (l : Level) → UU (lsuc l)
+series-ℝ l = series-Metric-Ab (metric-ab-ℝ l)
+
+series-terms-ℝ : {l : Level} → sequence (ℝ l) → series-ℝ l
+series-terms-ℝ = series-terms-Metric-Ab
+
+terms-series-ℝ : {l : Level} → series-ℝ l → sequence (ℝ l)
+terms-series-ℝ = term-series-Metric-Ab
+```
diff --git a/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md b/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md
new file mode 100644
index 0000000000..c929bb7da0
--- /dev/null
+++ b/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md
@@ -0,0 +1,59 @@
+# Uniformly continuous functions of real numbers
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.uniformly-continuous-functions-real-numbers where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import metric-spaces.uniformly-continuous-functions-metric-spaces
+
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+```
+
+
+
+## Idea
+
+A
+{{#concept "uniformly continuous function" Disambiguation="from ℝ to ℝ" Agda=uniformly-continuous-function-ℝ}}
+from the [real numbers](real-numbers.dedekind-real-numbers.md) to the real
+numbers is a function `f : ℝ → ℝ` such that there
+[exists](foundation.existential-quantification.md) a modulus `μ : ℚ⁺ → ℚ⁺` such
+that for all `x y : ℝ` within a
+`μ ε`-[neighborhood](real-numbers.metric-space-of-real-numbers.md) of each
+other, `f x` and `f y` are within an `ε`-neighborhood.
+
+## Definition
+
+```agda
+uniformly-continuous-function-ℝ : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
+uniformly-continuous-function-ℝ l1 l2 =
+ uniformly-continuous-function-Metric-Space
+ ( metric-space-ℝ l1)
+ ( metric-space-ℝ l2)
+
+comp-uniformly-continuous-function-ℝ :
+ {l1 l2 l3 : Level} →
+ uniformly-continuous-function-ℝ l2 l3 →
+ uniformly-continuous-function-ℝ l1 l2 →
+ uniformly-continuous-function-ℝ l1 l3
+comp-uniformly-continuous-function-ℝ {l1} {l2} {l3} =
+ comp-uniformly-continuous-function-Metric-Space
+ ( metric-space-ℝ l1)
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ l3)
+
+map-uniformly-continuous-function-ℝ :
+ {l1 l2 : Level} → uniformly-continuous-function-ℝ l1 l2 → ℝ l1 → ℝ l2
+map-uniformly-continuous-function-ℝ {l1} {l2} =
+ map-uniformly-continuous-function-Metric-Space
+ ( metric-space-ℝ l1)
+ ( metric-space-ℝ l2)
+```