diff --git a/src/analysis.lagda.md b/src/analysis.lagda.md
index 0899030d3c..d74a8b9016 100644
--- a/src/analysis.lagda.md
+++ b/src/analysis.lagda.md
@@ -4,6 +4,7 @@
module analysis where
open import analysis.absolute-convergence-series-real-numbers public
+open import analysis.comparison-test-series-real-numbers public
open import analysis.complete-metric-abelian-groups public
open import analysis.convergent-series-complete-metric-abelian-groups public
open import analysis.convergent-series-metric-abelian-groups public
@@ -12,6 +13,7 @@ open import analysis.derivatives-of-real-functions-on-proper-closed-intervals pu
open import analysis.metric-abelian-groups public
open import analysis.metric-abelian-groups-normed-real-vector-spaces public
open import analysis.nonnegative-series-real-numbers public
+open import analysis.ratio-test-series-real-numbers public
open import analysis.series-complete-metric-abelian-groups public
open import analysis.series-metric-abelian-groups public
open import analysis.series-real-numbers public
diff --git a/src/analysis/absolute-convergence-series-real-numbers.lagda.md b/src/analysis/absolute-convergence-series-real-numbers.lagda.md
index b1bbc8dd2a..bba6147836 100644
--- a/src/analysis/absolute-convergence-series-real-numbers.lagda.md
+++ b/src/analysis/absolute-convergence-series-real-numbers.lagda.md
@@ -40,12 +40,9 @@ module _
(σ : series-ℝ l)
where
- map-abs-series-ℝ : series-ℝ l
- map-abs-series-ℝ = series-terms-ℝ (abs-ℝ ∘ term-series-ℝ σ)
-
is-absolutely-convergent-prop-series-ℝ : Prop (lsuc l)
is-absolutely-convergent-prop-series-ℝ =
- is-convergent-prop-series-ℝ map-abs-series-ℝ
+ is-convergent-prop-series-ℝ (map-abs-series-ℝ σ)
is-absolutely-convergent-series-ℝ : UU (lsuc l)
is-absolutely-convergent-series-ℝ =
diff --git a/src/analysis/comparison-test-series-real-numbers.lagda.md b/src/analysis/comparison-test-series-real-numbers.lagda.md
new file mode 100644
index 0000000000..6b148b94cb
--- /dev/null
+++ b/src/analysis/comparison-test-series-real-numbers.lagda.md
@@ -0,0 +1,202 @@
+# Comparison test for series in the real numbers
+
+```agda
+module analysis.comparison-test-series-real-numbers where
+```
+
+Imports
+
+```agda
+open import analysis.convergent-series-real-numbers
+open import analysis.nonnegative-series-real-numbers
+open import analysis.series-real-numbers
+
+open import elementary-number-theory.addition-natural-numbers
+open import elementary-number-theory.inequality-natural-numbers
+open import elementary-number-theory.natural-numbers
+
+open import foundation.binary-transport
+open import foundation.conjunction
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.propositional-truncations
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-sequences-metric-spaces
+
+open import order-theory.large-posets
+
+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-real-numbers
+open import real-numbers.negation-real-numbers
+open import real-numbers.nonnegative-real-numbers
+open import real-numbers.rational-real-numbers
+open import real-numbers.sums-of-finite-sequences-of-real-numbers
+
+open import univalent-combinatorics.standard-finite-types
+```
+
+
+
+## Idea
+
+A [series](analysis.series-real-numbers.md) `∑ aₙ` of
+[nonnegative](real-numbers.nonnegative-real-numbers.md)
+[real numbers](real-numbers.dedekind-real-numbers.md)
+[converges](analysis.convergent-series-real-numbers.md) if there
+[exists](foundation.existential-quantification.md) a convergent series `∑ bₙ`
+such that `aₙ ≤ bₙ` for all `n`. This is the
+{{#concept "comparison test" Disambiguation="for series in the real numbers" Agda=comparison-test-series-ℝ Agda=is-convergent-comparison-test-series-ℝ}}
+for series in the real numbers.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ (l2 : Level)
+ (σ : series-ℝ l1)
+ where
+
+ comparison-test-prop-series-ℝ : Prop (l1 ⊔ lsuc l2)
+ comparison-test-prop-series-ℝ =
+ ( is-nonnegative-prop-series-ℝ σ) ∧
+ ( ∃
+ ( convergent-series-ℝ l2)
+ ( λ τ →
+ Π-Prop
+ ( ℕ)
+ ( λ n →
+ leq-prop-ℝ (term-series-ℝ σ n) (term-convergent-series-ℝ τ n))))
+
+ comparison-test-series-ℝ : UU (l1 ⊔ lsuc l2)
+ comparison-test-series-ℝ =
+ type-Prop comparison-test-prop-series-ℝ
+```
+
+## Properties
+
+### The comparison test implies convergence
+
+```agda
+module _
+ {l1 l2 : Level}
+ (σ : series-ℝ l1)
+ (τ : convergent-series-ℝ l2)
+ where
+
+ abstract
+ is-convergent-is-nonnegative-is-bounded-by-convergent-series-ℝ :
+ ((n : ℕ) → is-nonnegative-ℝ (term-series-ℝ σ n)) →
+ ((n : ℕ) → leq-ℝ (term-series-ℝ σ n) (term-convergent-series-ℝ τ n)) →
+ is-convergent-series-ℝ σ
+ is-convergent-is-nonnegative-is-bounded-by-convergent-series-ℝ 0≤σₙ σₙ≤τₙ =
+ let
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ open do-syntax-trunc-Prop (is-convergent-prop-series-ℝ σ)
+ in do
+ lim-modulus-τ ← is-sum-sum-convergent-series-ℝ τ
+ let
+ cauchy-mod-partial-sum-τ =
+ is-cauchy-has-limit-modulus-sequence-Metric-Space
+ ( metric-space-ℝ l2)
+ ( partial-sum-convergent-series-ℝ τ)
+ ( sum-convergent-series-ℝ τ)
+ ( lim-modulus-τ)
+ μ = pr1 ∘ cauchy-mod-partial-sum-τ
+ is-mod-μ = pr2 ∘ cauchy-mod-partial-sum-τ
+ is-mod'-μ ε n k με≤n =
+ neighborhood-dist-ℝ ε _ _
+ ( leq-dist-leq-diff-ℝ _ _ _
+ ( chain-of-inequalities
+ partial-sum-series-ℝ σ (n +ℕ k) -ℝ partial-sum-series-ℝ σ n
+ ≤ partial-sum-series-ℝ (drop-series-ℝ n σ) k
+ by leq-eq-ℝ (inv (partial-sum-drop-series-ℝ n σ k))
+ ≤ partial-sum-series-ℝ
+ ( drop-series-ℝ n (series-convergent-series-ℝ τ))
+ ( k)
+ by
+ leq-sum-fin-sequence-ℝ k _ _
+ ( λ m → σₙ≤τₙ (n +ℕ nat-Fin k m))
+ ≤ ( partial-sum-convergent-series-ℝ τ (n +ℕ k)) -ℝ
+ ( partial-sum-convergent-series-ℝ τ n)
+ by
+ leq-eq-ℝ
+ ( partial-sum-drop-series-ℝ
+ ( n)
+ ( series-convergent-series-ℝ τ)
+ ( k))
+ ≤ dist-ℝ
+ ( partial-sum-convergent-series-ℝ τ (n +ℕ k))
+ ( partial-sum-convergent-series-ℝ τ n)
+ by leq-diff-dist-ℝ _ _
+ ≤ real-ℚ⁺ ε
+ by
+ leq-dist-neighborhood-ℝ ε _ _
+ ( is-mod-μ
+ ( ε)
+ ( n +ℕ k)
+ ( n)
+ ( transitive-leq-ℕ
+ ( μ ε)
+ ( n)
+ ( n +ℕ k)
+ ( leq-add-ℕ n k)
+ ( με≤n))
+ ( με≤n)))
+ ( transitive-leq-ℝ
+ ( partial-sum-series-ℝ σ n -ℝ partial-sum-series-ℝ σ (n +ℕ k))
+ ( zero-ℝ)
+ ( real-ℚ⁺ ε)
+ ( is-nonnegative-real-ℝ⁰⁺ (nonnegative-real-ℚ⁺ ε))
+ ( binary-tr
+ ( leq-ℝ)
+ ( distributive-neg-diff-ℝ _ _)
+ ( neg-zero-ℝ)
+ ( neg-leq-ℝ
+ ( is-nonnegative-diff-leq-ℝ
+ ( is-increasing-partial-sum-is-nonnegative-term-series-ℝ
+ ( σ)
+ ( 0≤σₙ)
+ ( n)
+ ( n +ℕ k)
+ ( leq-add-ℕ n k)))))))
+ is-convergent-is-cauchy-sequence-partial-sum-series-ℝ
+ σ
+ ( λ ε →
+ ( μ ε ,
+ is-cauchy-modulus-is-cauchy-modulus-sequence-Metric-Space'
+ ( metric-space-ℝ l1)
+ ( partial-sum-series-ℝ σ)
+ ( ε)
+ ( μ ε)
+ ( is-mod'-μ ε)))
+
+module _
+ {l1 l2 : Level}
+ (σ : series-ℝ l1)
+ where
+
+ is-convergent-comparison-test-series-ℝ :
+ {l2 : Level} → comparison-test-series-ℝ l2 σ → is-convergent-series-ℝ σ
+ is-convergent-comparison-test-series-ℝ (0≤σₙ , ∃τ) =
+ rec-trunc-Prop
+ ( is-convergent-prop-series-ℝ σ)
+ ( λ (τ , σₙ≤τₙ) →
+ is-convergent-is-nonnegative-is-bounded-by-convergent-series-ℝ
+ ( σ)
+ ( τ)
+ ( 0≤σₙ)
+ ( σₙ≤τₙ))
+ ( ∃τ)
+```
+
+## External links
+
+- [Direct comparison test](https://en.wikipedia.org/wiki/Direct_comparison_test)
+ on Wikipedia
diff --git a/src/analysis/convergent-series-metric-abelian-groups.lagda.md b/src/analysis/convergent-series-metric-abelian-groups.lagda.md
index d78cf2b8bd..723e6e82ca 100644
--- a/src/analysis/convergent-series-metric-abelian-groups.lagda.md
+++ b/src/analysis/convergent-series-metric-abelian-groups.lagda.md
@@ -10,9 +10,19 @@ module analysis.convergent-series-metric-abelian-groups where
open import analysis.metric-abelian-groups
open import analysis.series-metric-abelian-groups
+open import elementary-number-theory.addition-natural-numbers
+open import elementary-number-theory.inequality-natural-numbers
+open import elementary-number-theory.natural-numbers
+
+open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
open import foundation.dependent-pair-types
+open import foundation.functoriality-propositional-truncation
+open import foundation.identity-types
+open import foundation.logical-equivalences
open import foundation.propositions
open import foundation.subtypes
+open import foundation.transport-along-identifications
open import foundation.universe-levels
open import lists.sequences
@@ -79,7 +89,7 @@ module _
partial-sum-series-Metric-Ab series-convergent-series-Metric-Ab
```
-## The partial sums of a convergent series have a limit, the sum of the series
+### The partial sums of a convergent series converge to the sum of the series
```agda
module _
@@ -111,3 +121,79 @@ module _
( partial-sum-convergent-series-Metric-Ab G σ)
( has-limit-partial-sum-convergent-series-Metric-Ab)
```
+
+### A series converges if it converges after dropping a finite number of terms
+
+```agda
+module _
+ {l1 l2 : Level}
+ {G : Metric-Ab l1 l2}
+ (σ : series-Metric-Ab G)
+ (k : ℕ)
+ where
+
+ is-convergent-is-convergent-drop-series-ℝ :
+ is-convergent-series-Metric-Ab (drop-series-Metric-Ab k σ) →
+ is-convergent-series-Metric-Ab σ
+ is-convergent-is-convergent-drop-series-ℝ (lim-drop , is-lim-drop) =
+ ( add-Metric-Ab G (partial-sum-series-Metric-Ab σ k) lim-drop ,
+ map-trunc-Prop
+ ( λ (μ , is-mod-μ) →
+ ( ( λ ε → μ ε +ℕ k) ,
+ ( λ ε n με+k≤n →
+ let
+ (l , l+k=n) =
+ subtraction-leq-ℕ
+ ( k)
+ ( n)
+ ( transitive-leq-ℕ
+ ( k)
+ ( μ ε +ℕ k)
+ ( n)
+ ( με+k≤n)
+ ( leq-add-ℕ' k (μ ε)))
+ in
+ tr
+ ( λ x → neighborhood-Metric-Ab G ε x _)
+ ( equational-reasoning
+ add-Metric-Ab G
+ ( partial-sum-series-Metric-Ab σ k)
+ ( partial-sum-series-Metric-Ab
+ ( drop-series-Metric-Ab k σ)
+ ( l))
+ =
+ add-Metric-Ab G
+ ( partial-sum-series-Metric-Ab σ k)
+ ( diff-Metric-Ab G
+ ( partial-sum-series-Metric-Ab σ (k +ℕ l))
+ ( partial-sum-series-Metric-Ab σ k))
+ by
+ ap-add-Metric-Ab G
+ ( refl)
+ ( partial-sum-drop-series-Metric-Ab k σ l)
+ = partial-sum-series-Metric-Ab σ (k +ℕ l)
+ by is-identity-right-conjugation-Metric-Ab G _ _
+ = partial-sum-series-Metric-Ab σ n
+ by
+ ap
+ ( partial-sum-series-Metric-Ab σ)
+ ( commutative-add-ℕ k l ∙ l+k=n))
+ ( forward-implication
+ ( is-isometry-add-Metric-Ab
+ ( G)
+ ( partial-sum-series-Metric-Ab σ k)
+ ( ε)
+ ( partial-sum-series-Metric-Ab
+ ( drop-series-Metric-Ab k σ)
+ ( l))
+ ( lim-drop))
+ ( is-mod-μ
+ ( ε)
+ ( l)
+ ( reflects-leq-left-add-ℕ
+ ( k)
+ ( μ ε)
+ ( l)
+ ( inv-tr (leq-ℕ (μ ε +ℕ k)) l+k=n με+k≤n)))))))
+ ( is-lim-drop))
+```
diff --git a/src/analysis/convergent-series-real-numbers.lagda.md b/src/analysis/convergent-series-real-numbers.lagda.md
index 1226c36539..f7d5effe76 100644
--- a/src/analysis/convergent-series-real-numbers.lagda.md
+++ b/src/analysis/convergent-series-real-numbers.lagda.md
@@ -11,10 +11,13 @@ open import analysis.convergent-series-complete-metric-abelian-groups
open import analysis.convergent-series-metric-abelian-groups
open import analysis.series-real-numbers
+open import foundation.dependent-pair-types
open import foundation.propositions
open import foundation.subtypes
open import foundation.universe-levels
+open import lists.sequences
+
open import real-numbers.cauchy-sequences-real-numbers
open import real-numbers.dedekind-real-numbers
open import real-numbers.metric-additive-group-of-real-numbers
@@ -52,6 +55,28 @@ module _
convergent-series-ℝ : (l : Level) → UU (lsuc l)
convergent-series-ℝ l = type-subtype (is-convergent-prop-series-ℝ {l})
+
+module _
+ {l : Level}
+ (σ : convergent-series-ℝ l)
+ where
+
+ series-convergent-series-ℝ : series-ℝ l
+ series-convergent-series-ℝ = pr1 σ
+
+ term-convergent-series-ℝ : sequence (ℝ l)
+ term-convergent-series-ℝ = term-series-ℝ series-convergent-series-ℝ
+
+ sum-convergent-series-ℝ : ℝ l
+ sum-convergent-series-ℝ = pr1 (pr2 σ)
+
+ is-sum-sum-convergent-series-ℝ :
+ is-sum-series-ℝ series-convergent-series-ℝ sum-convergent-series-ℝ
+ is-sum-sum-convergent-series-ℝ = pr2 (pr2 σ)
+
+ partial-sum-convergent-series-ℝ : sequence (ℝ l)
+ partial-sum-convergent-series-ℝ =
+ partial-sum-series-ℝ series-convergent-series-ℝ
```
## Properties
diff --git a/src/analysis/metric-abelian-groups.lagda.md b/src/analysis/metric-abelian-groups.lagda.md
index fffb958a61..becf60fe83 100644
--- a/src/analysis/metric-abelian-groups.lagda.md
+++ b/src/analysis/metric-abelian-groups.lagda.md
@@ -113,6 +113,11 @@ module _
commutative-add-Metric-Ab :
(x y : type-Metric-Ab MG) → add-Metric-Ab x y = add-Metric-Ab y x
commutative-add-Metric-Ab = commutative-add-Ab (ab-Metric-Ab MG)
+
+ is-identity-right-conjugation-Metric-Ab :
+ (x y : type-Metric-Ab MG) → add-Metric-Ab x (diff-Metric-Ab y x) = y
+ is-identity-right-conjugation-Metric-Ab =
+ is-identity-right-conjugation-Ab (ab-Metric-Ab MG)
```
### Metric properties of metric abelian groups
diff --git a/src/analysis/ratio-test-series-real-numbers.lagda.md b/src/analysis/ratio-test-series-real-numbers.lagda.md
new file mode 100644
index 0000000000..55588f5c05
--- /dev/null
+++ b/src/analysis/ratio-test-series-real-numbers.lagda.md
@@ -0,0 +1,144 @@
+# The ratio test for series in the real numbers
+
+```agda
+module analysis.ratio-test-series-real-numbers where
+```
+
+Imports
+
+```agda
+open import analysis.absolute-convergence-series-real-numbers
+open import analysis.comparison-test-series-real-numbers
+open import analysis.convergent-series-real-numbers
+open import analysis.series-real-numbers
+
+open import elementary-number-theory.inequality-natural-numbers
+open import elementary-number-theory.natural-numbers
+
+open import foundation.cartesian-product-types
+open import foundation.conjunction
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.identity-types
+open import foundation.propositional-truncations
+open import foundation.propositions
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import order-theory.large-posets
+
+open import real-numbers.absolute-value-real-numbers
+open import real-numbers.geometric-sequences-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.multiplication-nonnegative-real-numbers
+open import real-numbers.multiplication-real-numbers
+open import real-numbers.nonnegative-real-numbers
+open import real-numbers.powers-real-numbers
+open import real-numbers.rational-real-numbers
+open import real-numbers.strict-inequality-nonnegative-real-numbers
+open import real-numbers.strict-inequality-real-numbers
+```
+
+
+
+## Idea
+
+To prove that a [series](analysis.series-real-numbers.md) `∑ aₙ` of
+[real numbers](real-numbers.dedekind-real-numbers.md)
+[converges](analysis.convergent-series-real-numbers.md), it is sufficient to
+show that [there exists](foundation.existential-quantification.md) a
+[nonnegative](real-numbers.nonnegative-real-numbers.md) real number `r`
+[less than](real-numbers.strict-inequality-real-numbers.md) 1 such that for all
+`n`, `|aₙ₊₁| ≤ r|aₙ|`. This condition is known as the
+{{#concept "ratio test" Disambiguation="for series in the real numbers" WDID=Q165638 WD="ratio test" Agda=ratio-test-series-ℝ Agda=is-convergent-ratio-test-series-ℝ}}
+for series in the real numbers.
+
+## Definition
+
+```agda
+module _
+ {l : Level}
+ (σ : series-ℝ l)
+ where
+
+ ratio-test-prop-series-ℝ : Prop (lsuc l)
+ ratio-test-prop-series-ℝ =
+ ∃ ( ℝ⁰⁺ l)
+ ( λ r →
+ le-prop-ℝ⁰⁺ r one-ℝ⁰⁺ ∧
+ Π-Prop
+ ( ℕ)
+ ( λ n →
+ ( leq-prop-ℝ
+ ( abs-ℝ (term-series-ℝ σ (succ-ℕ n)))
+ ( real-ℝ⁰⁺ r *ℝ abs-ℝ (term-series-ℝ σ n)))))
+
+ ratio-test-series-ℝ : UU (lsuc l)
+ ratio-test-series-ℝ = type-Prop ratio-test-prop-series-ℝ
+```
+
+## Properties
+
+### The ratio test implies convergence
+
+```agda
+module _
+ {l : Level}
+ (σ : series-ℝ l)
+ where
+
+ abstract
+ is-convergent-ratio-test-series-ℝ :
+ ratio-test-series-ℝ σ → is-convergent-series-ℝ σ
+ is-convergent-ratio-test-series-ℝ H =
+ let
+ open inequality-reasoning-Large-Poset ℝ-Large-Poset
+ open do-syntax-trunc-Prop (is-convergent-prop-series-ℝ σ)
+ in do
+ (r⁰⁺@(r , 0≤r) , r<1 , K) ← H
+ let |σ₀| = abs-ℝ (term-series-ℝ σ 0)
+ is-convergent-is-absolutely-convergent-series-ℝ
+ ( σ)
+ ( is-convergent-is-nonnegative-is-bounded-by-convergent-series-ℝ
+ ( map-abs-series-ℝ σ)
+ ( convergent-standard-geometric-series-ℝ
+ ( |σ₀|)
+ ( r)
+ ( inv-tr (λ x → le-ℝ x one-ℝ) (abs-real-ℝ⁰⁺ r⁰⁺) r<1))
+ ( λ _ → is-nonnegative-abs-ℝ _)
+ ( ind-ℕ
+ ( refl-leq-ℝ _)
+ ( λ n |σₙ|≤arⁿ →
+ chain-of-inequalities
+ abs-ℝ (term-series-ℝ σ (succ-ℕ n))
+ ≤ r *ℝ abs-ℝ (term-series-ℝ σ n)
+ by K n
+ ≤ r *ℝ seq-standard-geometric-sequence-ℝ |σ₀| r n
+ by preserves-leq-left-mul-ℝ⁰⁺ r⁰⁺ |σₙ|≤arⁿ
+ ≤ r *ℝ (|σ₀| *ℝ power-ℝ n r)
+ by
+ leq-eq-ℝ
+ ( ap-mul-ℝ
+ ( refl)
+ ( compute-standard-geometric-sequence-ℝ |σ₀| r n))
+ ≤ |σ₀| *ℝ (r *ℝ power-ℝ n r)
+ by leq-eq-ℝ (left-swap-mul-ℝ _ _ _)
+ ≤ |σ₀| *ℝ power-ℝ (succ-ℕ n) r
+ by leq-eq-ℝ (ap-mul-ℝ refl (inv (power-succ-ℝ' n r)))
+ ≤ seq-standard-geometric-sequence-ℝ |σ₀| r (succ-ℕ n)
+ by
+ leq-eq-ℝ
+ ( inv
+ ( compute-standard-geometric-sequence-ℝ
+ ( |σ₀|)
+ ( r)
+ ( succ-ℕ n))))))
+```
+
+## See also
+
+- [The ratio test for series in real Banach spaces](functional-analysis.ratio-test-series-real-banach-spaces.md)
+
+## External links
+
+- [Ratio test](https://en.wikipedia.org/wiki/Ratio_test) on Wikipedia
diff --git a/src/analysis/series-real-numbers.lagda.md b/src/analysis/series-real-numbers.lagda.md
index ee553fef4d..65d916d7d8 100644
--- a/src/analysis/series-real-numbers.lagda.md
+++ b/src/analysis/series-real-numbers.lagda.md
@@ -21,10 +21,15 @@ open import foundation.universe-levels
open import lists.sequences
+open import order-theory.increasing-sequences-posets
+
open import real-numbers.absolute-value-real-numbers
+open import real-numbers.addition-nonnegative-real-numbers
open import real-numbers.dedekind-real-numbers
open import real-numbers.difference-real-numbers
+open import real-numbers.inequality-real-numbers
open import real-numbers.metric-additive-group-of-real-numbers
+open import real-numbers.nonnegative-real-numbers
```
@@ -54,6 +59,18 @@ partial-sum-series-ℝ {l} = partial-sum-series-Metric-Ab
## Properties
+### The series of absolute values
+
+```agda
+module _
+ {l : Level}
+ (σ : series-ℝ l)
+ where
+
+ map-abs-series-ℝ : series-ℝ l
+ map-abs-series-ℝ = series-terms-ℝ (abs-ℝ ∘ term-series-ℝ σ)
+```
+
### Dropping terms from a series
```agda
diff --git a/src/functional-analysis.lagda.md b/src/functional-analysis.lagda.md
index 875ad21cc3..b5508d4a8d 100644
--- a/src/functional-analysis.lagda.md
+++ b/src/functional-analysis.lagda.md
@@ -6,6 +6,7 @@ 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.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
diff --git a/src/functional-analysis/ratio-test-series-real-banach-spaces.lagda.md b/src/functional-analysis/ratio-test-series-real-banach-spaces.lagda.md
new file mode 100644
index 0000000000..4cc1428de0
--- /dev/null
+++ b/src/functional-analysis/ratio-test-series-real-banach-spaces.lagda.md
@@ -0,0 +1,116 @@
+# The ratio test for series in real Banach spaces
+
+```agda
+module functional-analysis.ratio-test-series-real-banach-spaces where
+```
+
+Imports
+
+```agda
+open import analysis.ratio-test-series-real-numbers
+
+open import elementary-number-theory.natural-numbers
+
+open import foundation.binary-transport
+open import foundation.conjunction
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.identity-types
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import functional-analysis.absolute-convergence-series-real-banach-spaces
+open import functional-analysis.convergent-series-real-banach-spaces
+open import functional-analysis.real-banach-spaces
+open import functional-analysis.series-real-banach-spaces
+
+open import logic.functoriality-existential-quantification
+
+open import real-numbers.absolute-value-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.multiplication-real-numbers
+open import real-numbers.nonnegative-real-numbers
+open import real-numbers.strict-inequality-nonnegative-real-numbers
+```
+
+
+
+## Idea
+
+To prove that a [series](functional-analysis.series-real-banach-spaces.md)
+`∑ aₙ` in a [real Banach space](functional-analysis.real-banach-spaces.md)
+[converges](analysis.series-real-numbers.md), it is sufficient to show that
+[there exists](foundation.existential-quantification.md) a
+[nonnegative](real-numbers.nonnegative-real-numbers.md) real number `r`
+[less than](real-numbers.strict-inequality-real-numbers.md) 1 such that for all
+`n`, `∥aₙ₊₁∥ ≤ r∥aₙ∥`. This condition is known as the
+{{#concept "ratio test" Disambiguation="in real Banach spaces" WDID=Q165638 WD="ratio test" Agda=is-convergent-ratio-test-series-ℝ-Banach-Space}}.
+
+## Definition
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : ℝ-Banach-Space l1 l2)
+ (σ : series-ℝ-Banach-Space V)
+ where
+
+ ratio-test-prop-series-ℝ-Banach-Space : Prop (lsuc l1)
+ ratio-test-prop-series-ℝ-Banach-Space =
+ ∃ ( ℝ⁰⁺ l1)
+ ( λ r →
+ le-prop-ℝ⁰⁺ r one-ℝ⁰⁺ ∧
+ Π-Prop
+ ( ℕ)
+ ( λ n →
+ leq-prop-ℝ
+ ( map-norm-ℝ-Banach-Space V
+ ( term-series-ℝ-Banach-Space V σ (succ-ℕ n)))
+ ( ( real-ℝ⁰⁺ r) *ℝ
+ ( map-norm-ℝ-Banach-Space V
+ ( term-series-ℝ-Banach-Space V σ n)))))
+
+ ratio-test-series-ℝ-Banach-Space : UU (lsuc l1)
+ ratio-test-series-ℝ-Banach-Space =
+ type-Prop ratio-test-prop-series-ℝ-Banach-Space
+```
+
+## Properties
+
+### The ratio test implies convergence
+
+```agda
+module _
+ {l1 l2 : Level}
+ (V : ℝ-Banach-Space l1 l2)
+ (σ : series-ℝ-Banach-Space V)
+ where
+
+ abstract
+ is-convergent-ratio-test-series-ℝ-Banach-Space :
+ ratio-test-series-ℝ-Banach-Space V σ →
+ is-convergent-series-ℝ-Banach-Space V σ
+ is-convergent-ratio-test-series-ℝ-Banach-Space H =
+ is-convergent-is-absolutely-convergent-series-ℝ-Banach-Space
+ ( V)
+ ( σ)
+ ( is-convergent-ratio-test-series-ℝ
+ ( map-norm-series-ℝ-Banach-Space V σ)
+ ( map-tot-exists
+ ( λ r (r<1 , K) →
+ ( r<1 ,
+ λ n →
+ binary-tr
+ ( leq-ℝ)
+ ( inv (abs-real-ℝ⁰⁺ (nonnegative-norm-ℝ-Banach-Space V _)))
+ ( ap-mul-ℝ
+ ( refl)
+ ( inv
+ ( abs-real-ℝ⁰⁺ (nonnegative-norm-ℝ-Banach-Space V _))))
+ ( K n)))
+ ( H)))
+```
+
+## See also
+
+- [The ratio test for series of real numbers](analysis.ratio-test-series-real-numbers.md)
diff --git a/src/functional-analysis/real-banach-spaces.lagda.md b/src/functional-analysis/real-banach-spaces.lagda.md
index 39d91fc118..358913502c 100644
--- a/src/functional-analysis/real-banach-spaces.lagda.md
+++ b/src/functional-analysis/real-banach-spaces.lagda.md
@@ -30,6 +30,7 @@ open import metric-spaces.metric-spaces
open import real-numbers.cauchy-completeness-dedekind-real-numbers
open import real-numbers.dedekind-real-numbers
+open import real-numbers.nonnegative-real-numbers
```
@@ -93,6 +94,10 @@ module _
map-norm-ℝ-Banach-Space =
map-norm-Normed-ℝ-Vector-Space normed-vector-space-ℝ-Banach-Space
+ nonnegative-norm-ℝ-Banach-Space : type-ℝ-Banach-Space → ℝ⁰⁺ l1
+ nonnegative-norm-ℝ-Banach-Space =
+ nonnegative-norm-Normed-ℝ-Vector-Space normed-vector-space-ℝ-Banach-Space
+
cauchy-sequence-ℝ-Banach-Space : UU (l1 ⊔ l2)
cauchy-sequence-ℝ-Banach-Space =
cauchy-sequence-Metric-Space metric-space-ℝ-Banach-Space
diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md
index 1939cffe2e..356b9f9a02 100644
--- a/src/real-numbers/absolute-value-real-numbers.lagda.md
+++ b/src/real-numbers/absolute-value-real-numbers.lagda.md
@@ -298,6 +298,20 @@ module _
leq-abs-leq-leq-neg-ℝ = leq-max-leq-leq-ℝ x (neg-ℝ x) y
```
+### If `x < y` and `-x < y`, then `|x| < y`
+
+```agda
+module _
+ {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2}
+ where
+
+ abstract opaque
+ unfolding abs-ℝ
+
+ le-abs-le-le-neg-ℝ : le-ℝ x y → le-ℝ (neg-ℝ x) y → le-ℝ (abs-ℝ x) y
+ le-abs-le-le-neg-ℝ = le-max-le-le-ℝ
+```
+
### Triangle inequality
```agda
diff --git a/src/real-numbers/geometric-sequences-real-numbers.lagda.md b/src/real-numbers/geometric-sequences-real-numbers.lagda.md
index 61f906d375..5d39bfad4d 100644
--- a/src/real-numbers/geometric-sequences-real-numbers.lagda.md
+++ b/src/real-numbers/geometric-sequences-real-numbers.lagda.md
@@ -18,6 +18,7 @@ open import elementary-number-theory.natural-numbers
open import foundation.action-on-identifications-functions
open import foundation.binary-transport
+open import foundation.dependent-pair-types
open import foundation.function-extensionality
open import foundation.identity-types
open import foundation.transport-along-identifications
@@ -242,6 +243,13 @@ module _
( λ n → power-ℝ n r)
( raise-zero-ℝ l)
( is-zero-lim-power-le-one-abs-ℝ r |r|<1))
+
+ convergent-standard-geometric-series-ℝ :
+ le-ℝ (abs-ℝ r) one-ℝ → convergent-series-ℝ l
+ convergent-standard-geometric-series-ℝ |r|<1 =
+ ( standard-geometric-series-ℝ ,
+ a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1) ,
+ compute-sum-standard-geometric-series-ℝ |r|<1)
```
## References
diff --git a/src/real-numbers/sums-of-finite-sequences-of-real-numbers.lagda.md b/src/real-numbers/sums-of-finite-sequences-of-real-numbers.lagda.md
index 1e26b21c1d..8da6c6955b 100644
--- a/src/real-numbers/sums-of-finite-sequences-of-real-numbers.lagda.md
+++ b/src/real-numbers/sums-of-finite-sequences-of-real-numbers.lagda.md
@@ -9,6 +9,7 @@ module real-numbers.sums-of-finite-sequences-of-real-numbers where
```agda
open import elementary-number-theory.natural-numbers
+open import foundation.function-types
open import foundation.universe-levels
open import group-theory.sums-of-finite-sequences-of-elements-abelian-groups
@@ -16,7 +17,14 @@ open import group-theory.sums-of-finite-sequences-of-elements-abelian-groups
open import lists.finite-sequences
open import real-numbers.dedekind-real-numbers
+open import real-numbers.inequalities-addition-and-subtraction-real-numbers
+open import real-numbers.inequality-real-numbers
open import real-numbers.large-additive-group-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
+
+open import univalent-combinatorics.standard-finite-types
```
@@ -35,3 +43,27 @@ the [real numbers](real-numbers.dedekind-real-numbers.md) to any
sum-fin-sequence-ℝ : {l : Level} (n : ℕ) → fin-sequence (ℝ l) n → ℝ l
sum-fin-sequence-ℝ {l} = sum-fin-sequence-type-Ab (ab-add-ℝ l)
```
+
+## Properties
+
+### If `aₙ ≤ bₙ` for all `n`, then `∑ aₙ ≤ ∑ bₙ`
+
+```agda
+abstract
+ leq-sum-fin-sequence-ℝ :
+ {l1 l2 : Level} (n : ℕ) →
+ (a : fin-sequence (ℝ l1) n) (b : fin-sequence (ℝ l2) n) →
+ ((k : Fin n) → leq-ℝ (a k) (b k)) →
+ leq-ℝ (sum-fin-sequence-ℝ n a) (sum-fin-sequence-ℝ n b)
+ leq-sum-fin-sequence-ℝ {l1} {l2} 0 _ _ _ =
+ leq-sim-ℝ
+ ( transitive-sim-ℝ _ _ _ (sim-raise-ℝ l2 zero-ℝ) (sim-raise-ℝ' l1 zero-ℝ))
+ leq-sum-fin-sequence-ℝ (succ-ℕ n) a b H =
+ preserves-leq-add-ℝ
+ ( leq-sum-fin-sequence-ℝ
+ ( n)
+ ( a ∘ inl-Fin n)
+ ( b ∘ inl-Fin n)
+ ( H ∘ inl-Fin n))
+ ( H (neg-one-Fin n))
+```