Partial sums of geometric series in a ring #
This file determines the values of the geometric series $\sum_{i=0}^{n-1} x^i$ and $\sum_{i=0}^{n-1} x^i y^{n-1-i}$ and variants thereof.
Several variants are recorded, generalising in particular to the case of a noncommutative ring in
which x and y commute. Even versions not using division or subtraction, valid in each semiring,
are recorded.
theorem
geom_sum_succ
{R : Type u_1}
[Semiring R]
{x : R}
{n : ℕ}
:
∑ i ∈ Finset.range (n + 1), x ^ i = x * ∑ i ∈ Finset.range n, x ^ i + 1
theorem
geom_sum_succ'
{R : Type u_1}
[Semiring R]
{x : R}
{n : ℕ}
:
∑ i ∈ Finset.range (n + 1), x ^ i = x ^ n + ∑ i ∈ Finset.range n, x ^ i
@[simp]
@[simp]
theorem
zero_geom_sum
{R : Type u_1}
[Semiring R]
{n : ℕ}
:
∑ i ∈ Finset.range n, 0 ^ i = if n = 0 then 0 else 1
theorem
op_geom_sum
{R : Type u_1}
[Semiring R]
(x : R)
(n : ℕ)
:
MulOpposite.op (∑ i ∈ Finset.range n, x ^ i) = ∑ i ∈ Finset.range n, MulOpposite.op x ^ i
@[simp]
theorem
op_geom_sum₂
{R : Type u_1}
[Semiring R]
(x y : R)
(n : ℕ)
:
∑ i ∈ Finset.range n, MulOpposite.op y ^ (n - 1 - i) * MulOpposite.op x ^ i = ∑ i ∈ Finset.range n, MulOpposite.op y ^ i * MulOpposite.op x ^ (n - 1 - i)
theorem
geom_sum₂_with_one
{R : Type u_1}
[Semiring R]
(x : R)
(n : ℕ)
:
∑ i ∈ Finset.range n, x ^ i * 1 ^ (n - 1 - i) = ∑ i ∈ Finset.range n, x ^ i
theorem
Commute.geom_sum₂_mul_add
{R : Type u_1}
[Semiring R]
{x y : R}
(h : Commute x y)
(n : ℕ)
:
(∑ i ∈ Finset.range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
$x^n-y^n = (x-y) \sum x^ky^{n-1-k}$ reformulated without - signs.
theorem
geom_sum₂_self
{R : Type u_1}
[Semiring R]
(x : R)
(n : ℕ)
:
∑ i ∈ Finset.range n, x ^ i * x ^ (n - 1 - i) = ↑n * x ^ (n - 1)
theorem
geom_sum_mul_add
{R : Type u_1}
[Semiring R]
(x : R)
(n : ℕ)
:
(∑ i ∈ Finset.range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
theorem
Commute.geom_sum₂_comm
{R : Type u_1}
[Semiring R]
{x y : R}
(n : ℕ)
(h : Commute x y)
:
∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i) = ∑ i ∈ Finset.range n, y ^ i * x ^ (n - 1 - i)
theorem
RingHom.map_geom_sum
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
(x : R)
(n : ℕ)
(f : R →+* S)
:
f (∑ i ∈ Finset.range n, x ^ i) = ∑ i ∈ Finset.range n, f x ^ i
theorem
RingHom.map_geom_sum₂
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
(x y : R)
(n : ℕ)
(f : R →+* S)
:
f (∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)) = ∑ i ∈ Finset.range n, f x ^ i * f y ^ (n - 1 - i)
theorem
geom_sum₂_mul_add
{R : Type u_1}
[CommSemiring R]
(x y : R)
(n : ℕ)
:
(∑ i ∈ Finset.range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
$x^n-y^n = (x-y) \sum x^ky^{n-1-k}$ reformulated without - signs.
theorem
geom_sum₂_comm
{R : Type u_1}
[CommSemiring R]
(x y : R)
(n : ℕ)
:
∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i) = ∑ i ∈ Finset.range n, y ^ i * x ^ (n - 1 - i)
theorem
geom_sum₂_mul_of_ge
{R : Type u_1}
[CommSemiring R]
[PartialOrder R]
[AddLeftReflectLE R]
[AddLeftMono R]
[ExistsAddOfLE R]
[Sub R]
[OrderedSub R]
{x y : R}
(hxy : y ≤ x)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)) * (x - y) = x ^ n - y ^ n
theorem
geom_sum₂_mul_of_le
{R : Type u_1}
[CommSemiring R]
[PartialOrder R]
[AddLeftReflectLE R]
[AddLeftMono R]
[ExistsAddOfLE R]
[Sub R]
[OrderedSub R]
{x y : R}
(hxy : x ≤ y)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)) * (y - x) = y ^ n - x ^ n
theorem
geom_sum_mul_of_one_le
{R : Type u_1}
[CommSemiring R]
[PartialOrder R]
[AddLeftReflectLE R]
[AddLeftMono R]
[ExistsAddOfLE R]
[Sub R]
[OrderedSub R]
{x : R}
(hx : 1 ≤ x)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i) * (x - 1) = x ^ n - 1
theorem
geom_sum_mul_of_le_one
{R : Type u_1}
[CommSemiring R]
[PartialOrder R]
[AddLeftReflectLE R]
[AddLeftMono R]
[ExistsAddOfLE R]
[Sub R]
[OrderedSub R]
{x : R}
(hx : x ≤ 1)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i) * (1 - x) = 1 - x ^ n
@[simp]
theorem
neg_one_geom_sum
{R : Type u_1}
[Ring R]
{n : ℕ}
:
∑ i ∈ Finset.range n, (-1) ^ i = if Even n then 0 else 1
theorem
Commute.geom_sum₂_mul
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)) * (x - y) = x ^ n - y ^ n
theorem
Commute.mul_neg_geom_sum₂
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
(n : ℕ)
:
(y - x) * ∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i) = y ^ n - x ^ n
theorem
Commute.mul_geom_sum₂
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
(n : ℕ)
:
(x - y) * ∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i) = x ^ n - y ^ n
theorem
Commute.sub_dvd_pow_sub_pow
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
(n : ℕ)
:
x - y ∣ x ^ n - y ^ n
theorem
pow_one_sub_dvd_pow_mul_sub_one
{R : Type u_1}
[Ring R]
(x : R)
(m n : ℕ)
:
x ^ m - 1 ∣ x ^ (m * n) - 1
theorem
dvd_pow_sub_one_of_dvd
{R : Type u_1}
[Ring R]
{r : R}
{a b : ℕ}
(h : a ∣ b)
:
r ^ a - 1 ∣ r ^ b - 1
theorem
dvd_pow_pow_sub_self_of_dvd
{R : Type u_1}
[Ring R]
{r : R}
{p a b : ℕ}
(h : a ∣ b)
:
r ^ p ^ a - r ∣ r ^ p ^ b - r
theorem
geom_sum_mul
{R : Type u_1}
[Ring R]
(x : R)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i) * (x - 1) = x ^ n - 1
theorem
mul_geom_sum
{R : Type u_1}
[Ring R]
(x : R)
(n : ℕ)
:
(x - 1) * ∑ i ∈ Finset.range n, x ^ i = x ^ n - 1
theorem
geom_sum_mul_neg
{R : Type u_1}
[Ring R]
(x : R)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i) * (1 - x) = 1 - x ^ n
theorem
mul_neg_geom_sum
{R : Type u_1}
[Ring R]
(x : R)
(n : ℕ)
:
(1 - x) * ∑ i ∈ Finset.range n, x ^ i = 1 - x ^ n
theorem
Commute.mul_geom_sum₂_Ico
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
{m n : ℕ}
(hmn : m ≤ n)
:
(x - y) * ∑ i ∈ Finset.Ico m n, x ^ i * y ^ (n - 1 - i) = x ^ n - x ^ m * y ^ (n - m)
theorem
Commute.geom_sum₂_succ_eq
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
{n : ℕ}
:
∑ i ∈ Finset.range (n + 1), x ^ i * y ^ (n - i) = x ^ n + y * ∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)
theorem
Commute.geom_sum₂_Ico_mul
{R : Type u_1}
[Ring R]
{x y : R}
(h : Commute x y)
{m n : ℕ}
(hmn : m ≤ n)
:
(∑ i ∈ Finset.Ico m n, x ^ i * y ^ (n - 1 - i)) * (x - y) = x ^ n - y ^ (n - m) * x ^ m
theorem
geom_sum_Ico_mul
{R : Type u_1}
[Ring R]
(x : R)
{m n : ℕ}
(hmn : m ≤ n)
:
(∑ i ∈ Finset.Ico m n, x ^ i) * (x - 1) = x ^ n - x ^ m
theorem
geom_sum_Ico_mul_neg
{R : Type u_1}
[Ring R]
(x : R)
{m n : ℕ}
(hmn : m ≤ n)
:
(∑ i ∈ Finset.Ico m n, x ^ i) * (1 - x) = x ^ m - x ^ n
theorem
pow_sub_one_mul_geom_sum_eq_pow_sub_one_mul_geom_sum
{R : Type u_1}
[CommRing R]
{x : R}
{m n : ℕ}
:
(x ^ m - 1) * ∑ k ∈ Finset.range n, x ^ k = (x ^ n - 1) * ∑ k ∈ Finset.range m, x ^ k
@[deprecated pow_sub_one_mul_geom_sum_eq_pow_sub_one_mul_geom_sum (since := "2025-10-31")]
theorem
IsPrimitiveRoot.pow_sub_one_mul_geom_sum_eq_pow_sub_one_mul_geom_sum
{R : Type u_1}
[CommRing R]
{x : R}
{m n : ℕ}
:
(x ^ m - 1) * ∑ k ∈ Finset.range n, x ^ k = (x ^ n - 1) * ∑ k ∈ Finset.range m, x ^ k
Alias of pow_sub_one_mul_geom_sum_eq_pow_sub_one_mul_geom_sum.
theorem
geom_sum₂_mul
{R : Type u_1}
[CommRing R]
(x y : R)
(n : ℕ)
:
(∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)) * (x - y) = x ^ n - y ^ n
theorem
Odd.add_dvd_pow_add_pow
{R : Type u_1}
[CommRing R]
(x y : R)
{n : ℕ}
(h : Odd n)
:
x + y ∣ x ^ n + y ^ n
theorem
geom_sum₂_succ_eq
{R : Type u_1}
[CommRing R]
(x y : R)
{n : ℕ}
:
∑ i ∈ Finset.range (n + 1), x ^ i * y ^ (n - i) = x ^ n + y * ∑ i ∈ Finset.range n, x ^ i * y ^ (n - 1 - i)
theorem
mul_geom_sum₂_Ico
{R : Type u_1}
[CommRing R]
(x y : R)
{m n : ℕ}
(hmn : m ≤ n)
:
(x - y) * ∑ i ∈ Finset.Ico m n, x ^ i * y ^ (n - 1 - i) = x ^ n - x ^ m * y ^ (n - m)
theorem
Nat.pow_sub_pow_dvd_pow_sub_pow
{m k : ℕ}
(x y : ℕ)
(hmk : m ∣ k)
:
x ^ m - y ^ m ∣ x ^ k - y ^ k
theorem
Nat.geomSum_eq
{m : ℕ}
(hm : 2 ≤ m)
(n : ℕ)
:
∑ k ∈ Finset.range n, m ^ k = (m ^ n - 1) / (m - 1)
Value of a geometric sum over the naturals. Note: see geom_sum_mul_add for a formulation
that avoids division and subtraction.