Convexity properties of the Gamma function #
In this file, we prove that Gamma
and log ∘ Gamma
are convex functions on the positive real
line. We then prove the Bohr-Mollerup theorem, which characterises Gamma
as the unique
positive-real-valued, log-convex function on the positive reals satisfying f (x + 1) = x f x
and
f 1 = 1
.
The proof of the Bohr-Mollerup theorem is bound up with the proof of (a weak form of) the Euler
limit formula, Real.BohrMollerup.tendsto_logGammaSeq
, stating that for positive
real x
the sequence x * log n + log n! - ∑ (m : ℕ) in Finset.range (n + 1), log (x + m)
tends to log Γ(x)
as n → ∞
. We prove that any function satisfying the hypotheses of the
Bohr-Mollerup theorem must agree with the limit in the Euler limit formula, so there is at most one
such function; then we show that Γ
satisfies these conditions.
Since most of the auxiliary lemmas for the Bohr-Mollerup theorem are of no relevance outside the
context of this proof, we place them in a separate namespace Real.BohrMollerup
to avoid clutter.
(This includes the logarithmic form of the Euler limit formula, since later we will prove a more
general form of the Euler limit formula valid for any real or complex x
; see
Real.Gamma_seq_tendsto_Gamma
and Complex.Gamma_seq_tendsto_Gamma
in the file
Mathlib/Analysis/SpecialFunctions/Gamma/Beta.lean
.)
As an application of the Bohr-Mollerup theorem we prove the Legendre doubling formula for the
Gamma function for real positive s
(which will be upgraded to a proof for all complex s
in a
later file).
TODO: This argument can be extended to prove the general k
-multiplication formula (at least up
to a constant, and it should be possible to deduce the value of this constant using Stirling's
formula).
Log-convexity of the Gamma function on the positive reals (stated in multiplicative form), proved using the Hölder inequality applied to Euler's integral.
The function n ↦ x log n + log n! - (log x + ... + log (x + n))
, which we will show tends to
log (Gamma x)
as n → ∞
.
Equations
- Real.BohrMollerup.logGammaSeq x n = x * Real.log ↑n + Real.log ↑(Nat.factorial n) - Finset.sum (Finset.range (n + 1)) fun (m : ℕ) => Real.log (x + ↑m)
Instances For
The Bohr-Mollerup theorem: the Gamma function is the unique log-convex, positive-valued
function on the positive reals which satisfies f 1 = 1
and f (x + 1) = x * f x
for all x
.
The Gamma doubling formula #
As a fun application of the Bohr-Mollerup theorem, we prove the Gamma-function doubling formula
(for positive real s
). The idea is that 2 ^ s * Gamma (s / 2) * Gamma (s / 2 + 1 / 2)
is
log-convex and satisfies the Gamma functional equation, so it must actually be a constant
multiple of Gamma
, and we can compute the constant by specialising at s = 1
.
Auxiliary definition for the doubling formula (we'll show this is equal to Gamma s
)
Equations
- Real.doublingGamma s = Real.Gamma (s / 2) * Real.Gamma (s / 2 + 1 / 2) * 2 ^ (s - 1) / Real.sqrt Real.pi
Instances For
Legendre's doubling formula for the Gamma function, for positive real arguments. Note that
we shall later prove this for all s
as Real.Gamma_mul_Gamma_add_half
(superseding this result)
but this result is needed as an intermediate step.