Binomial Theorem
Statement
For any commutative ring elements and , and any natural number :
where is the binomial coefficient, counting the number of ways to choose items from without repetition.
Visualization
Pascal's Triangle (rows 0–6) organises the binomial coefficients. Each entry is the sum of the two entries above it — the Pascal recurrence :
Row 0: 1
Row 1: 1 1
Row 2: 1 2 1
Row 3: 1 3 3 1
Row 4: 1 4 6 4 1
Row 5: 1 5 10 10 5 1
Row 6: 1 6 15 20 15 6 1
Each row gives the coefficients for . For example, row 4 yields:
Row sum identity: every row sums to (set ):
| Row sum | ||
|---|---|---|
| 0 | ||
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 |
Proof Sketch
Combinatorial argument: expanding ( factors), we pick either or from each factor. The term arises from exactly selections (choose which of the factors contribute an ). Summing over accounts for all terms.
Inductive step: the Pascal recurrence drives the induction:
which corresponds to distributing the extra factor of :
Connections
- Quadratic FormulaQuadratic FormulaSolve any quadratic equation using the discriminantRead more → — is the special case
- AM–GM InequalityAM–GM InequalityThe arithmetic mean is always at least as large as the geometric meanRead more → — AM–GM applied to the terms yields useful norm bounds
- Cauchy–Schwarz — the square of a sum bound uses the binomial expansion
- Geometric SeriesGeometric SeriesPartial sums and convergence of the geometric progressionRead more → — setting and letting connects to sums of powers
- Vieta Formulas — the coefficients of are elementary symmetric polynomials, relatives of binomial coefficients
Lean4 Proof
Mathlib's add_pow in Mathlib.Data.Nat.Choose.Sum provides the binomial theorem directly for
CommSemiring. The non-commutative version is Commute.add_pow.
Lean4 Proof
import Mathlib.Data.Nat.Choose.Sum
/-- The Binomial Theorem: (x+y)^n = Σ_{k=0}^{n} x^k · y^{n-k} · C(n,k)
for commutative semirings. This is `add_pow` in Mathlib. -/
theorem binomial_theorem {R : Type*} [CommSemiring R] (x y : R) (n : ℕ) :
(x + y) ^ n = ∑ k ∈ Finset.range (n + 1), x ^ k * y ^ (n - k) * (n.choose k : R) :=
add_pow x y n
/-- The row-sum identity: setting x=y=1 gives 2^n = Σ C(n,k). -/
theorem binomial_row_sum (n : ℕ) :
2 ^ n = ∑ k ∈ Finset.range (n + 1), n.choose k := by
have h := binomial_theorem (R := ℕ) 1 1 n
simp at h
exact_mod_cast h
/-- Non-commutative version: Commute.add_pow handles semirings where x·y ≠ y·x. -/
theorem binomial_noncomm {R : Type*} [Semiring R] (x y : R) (h : Commute x y) (n : ℕ) :
(x + y) ^ n = ∑ k ∈ Finset.range (n + 1), x ^ k * y ^ (n - k) * (n.choose k : R) :=
h.add_pow nReferenced by
- Merkle TreeCryptography
- Handshake LemmaGraph Theory
- Cauchy–Schwarz InequalityAlgebra
- AM–GM InequalityAlgebra
- Geometric SeriesAlgebra
- Vieta's FormulasAlgebra
- Chebyshev's Bounds for π(n)Number Theory
- Vandermonde's IdentityCombinatorics
- Catalan NumbersCombinatorics
- Pascal's IdentityCombinatorics
- Stirling NumbersCombinatorics
- Chu-Vandermonde IdentityCombinatorics
- Pigeonhole PrincipleCombinatorics
- Bell NumbersCombinatorics
- Singleton BoundInformation Theory