Every superlevel set of a positive log-concave function is convex
AutoSamplingTheory.TechnicalLemmas.Geometry.LogConcavity.LogConcaveOn.convex_superlevel · theorem · Teaching coverage
Statement
Let E be a real module, f:E→ℝ positive log-concave on s⊆E, and c∈ℝ. Then S_c={x∈s:c≤f(x)} is convex. No positivity assumption on c is needed.
All objects and hypotheses
- E : Type* with [AddCommMonoid E] and [Module ℝ E]. These are the exact algebraic ambient structures; no topology, norm, measure or finite-dimensionality is assumed.
- s : Set E, f : E → ℝ, hf : LogConcaveOn s f.
- c : ℝ arbitrary. In the proof x,y∈S_c and a,b≥0 with a+b=1; set z=ax+by.
- {'term': 'Positive log-concavity', 'text': 'LC_s(f) means strict positivity of f at every point of s and concavity of log f on the convex domain s. No zero-valued points are included in this convention.', 'formula': '\\operatorname{LC}_s(f)\\iff(\\forall x\\in s,\\ f(x)>0)\\land\\operatorname{Concave}_s(\\log f).'}
- {'term': 'Convex combinations and Jensen inequalities', 'text': 'Throughout, x,y lie in the stated domain; λ,θ are nonnegative real weights with λ+θ=1. The Lean code often names these weights a,b, independently of the a,b coefficients in specialized potentials.', 'formula': 'z=\\lambda x+\\theta y,\\quad \\lambda,\\theta\\ge0,\\quad\\lambda+\\theta=1;\\qquad V(z)\\le\\lambda V(x)+\\theta V(y)\\text{ for convex }V.'}
- {'term': 'Geometry, not probability normalization', 'text': 'The module proves shapes and convexity properties of real-valued functions. It has no reference measure in its declarations. In particular, names containing normalized_density do not themselves prove normalization, and the quadratic prefactor is not certified as the integral of an arbitrary norm-based shape.', 'formula': '\\operatorname{LC}(Z^{-1}e^{-V})\\quad\\text{does not assert}\\quad Z=\\int e^{-V}\\,d\\mu\\quad\\text{or}\\quad \\int Z^{-1}e^{-V}\\,d\\mu=1.'}
Mathematical proof
1. Handle nonpositive thresholds directly
If c≤0, every point of s belongs to S_c because f is strictly positive there. For x,y∈S_c, convexity of s puts z in s and hence f(z)>0≥c. This proves the case c≤0 without taking log c.
Corresponding Lean step
by_cases hc : c ≤ 0
· intro x hx y hy a b ha hb hab
have hmid_s := hf.convex_domain hx.1 hy.1 ha hb hab
exact ⟨hmid_s, le_of_lt (lt_of_le_of_lt hc (hf.pos (x := a • x + b • y) hmid_s))⟩hmid records domain membership of the convex combination, permitting the same positivity assumptions at that point.
2. For c>0, compare endpoint logarithms
In the remaining case c is positive. Both endpoints satisfy c≤f(x),f(y), so monotonicity of log gives log c≤log f(x),log f(y). The midpoint z lies in s by domain convexity and f(z)>0.
Corresponding Lean step
have hcpos : 0 < c := lt_of_not_ge hc
have hmid_s := hf.convex_domain hx.1 hy.1 ha hb hab
have hlogx := Real.log_le_log hcpos hx.2
have hlogy := Real.log_le_log hcpos hy.2hmid records domain membership of the convex combination, permitting the same positivity assumptions at that point.
3. Form the weighted lower bound
Multiply the two endpoint inequalities by the nonnegative weights and add. Since a+b=1, the weighted sum of the two copies of log c is log c itself.
Corresponding Lean step
have hweighted := add_le_add (mul_le_mul_of_nonneg_left hlogx ha) (mul_le_mul_of_nonneg_left hlogy hb)
-- hconst uses a+b=1; hfloor rewrites this weighted bound.The identifiers refer to the assumptions or previously proved facts described in this step; the full original proof below supplies their exact context.
4. Apply log concavity
The defining concavity inequality bounds the weighted endpoint logarithms by log f(z). Combining the bounds yields log c≤log f(z).
Corresponding Lean step
have hconc : a * Real.log (f x) + b * Real.log (f y) ≤ Real.log (f (a • x + b • y)) := by
simpa [smul_eq_mul] using hf.concaveOn_log.2 hx.1 hy.1 ha hb habThe identifiers refer to the assumptions or previously proved facts described in this step; the full original proof below supplies their exact context.
5. Return from logarithms to the function values
Both c and f(z) are positive, so log is order-reflecting on these values. Thus c≤f(z); together with z∈s, this shows z∈S_c and proves convexity.
Corresponding Lean step
exact (Real.log_le_log_iff hcpos (hf.pos (x := a • x + b • y) hmid_s)).mp (hfloor.trans hconc)
The two positivity proofs allow logarithms to reflect order; .mp selects the required implication.
Lean statement · convex_superlevel
Braces name inputs Lean can infer, and bracketed classes state the ambient structures listed above. The assumptions before the final colon are inputs; the expression after it is the exact property this declaration establishes. The proof splits on c≤0 to avoid using logarithms outside their positive domain. Membership hx contains two facts: hx.1 is x∈s, and hx.2 is c≤f x. The final .mp takes the forward implication of the log-order equivalence.
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
theorem LogConcaveOn.convex_superlevel {E : Type*} [AddCommMonoid E] [Module ℝ E]
{s : Set E} {f : E → ℝ}
(hf : LogConcaveOn s f) (c : ℝ) :
Convex ℝ {x ∈ s | c ≤ f x}Lean proof · convex_superlevel
The proof splits on c≤0 to avoid using logarithms outside their positive domain. Membership hx contains two facts: hx.1 is x∈s, and hx.2 is c≤f x. The final .mp takes the forward implication of the log-order equivalence.
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
theorem LogConcaveOn.convex_superlevel {E : Type*} [AddCommMonoid E] [Module ℝ E]
{s : Set E} {f : E → ℝ}
(hf : LogConcaveOn s f) (c : ℝ) :
Convex ℝ {x ∈ s | c ≤ f x} := by
by_cases hc : c ≤ 0
· intro x hx y hy a b ha hb hab
have hmid_s := hf.convex_domain hx.1 hy.1 ha hb hab
exact ⟨hmid_s, le_of_lt (lt_of_le_of_lt hc (hf.pos (x := a • x + b • y) hmid_s))⟩
· have hcpos : 0 < c := lt_of_not_ge hc
intro x hx y hy a b ha hb hab
have hmid_s := hf.convex_domain hx.1 hy.1 ha hb hab
refine ⟨hmid_s, ?_⟩
have hlogx : Real.log c ≤ Real.log (f x) :=
Real.log_le_log hcpos hx.2
have hlogy : Real.log c ≤ Real.log (f y) :=
Real.log_le_log hcpos hy.2
have hweighted :
a * Real.log c + b * Real.log c ≤
a * Real.log (f x) + b * Real.log (f y) :=
add_le_add (mul_le_mul_of_nonneg_left hlogx ha) (mul_le_mul_of_nonneg_left hlogy hb)
have hconst : a * Real.log c + b * Real.log c = Real.log c := by
calc
a * Real.log c + b * Real.log c = (a + b) * Real.log c := by ring
_ = Real.log c := by rw [hab]; ring
have hfloor : Real.log c ≤ a * Real.log (f x) + b * Real.log (f y) := by
simpa [hconst] using hweighted
have hconc :
a * Real.log (f x) + b * Real.log (f y) ≤
Real.log (f (a • x + b • y)) := by
simpa [smul_eq_mul] using hf.concaveOn_log.2 hx.1 hy.1 ha hb hab
exact (Real.log_le_log_iff hcpos (hf.pos (x := a • x + b • y) hmid_s)).mp
(hfloor.trans hconc)
/-- Positive log-concave functions are quasiconcave: all superlevel sets are convex. -/Scope and omitted-condition boundaries
- This is non-strict convexity of domain-restricted superlevels; no strict concavity, boundedness or compactness is asserted.
- This documentation adds no Lean theorem, compilation evidence, source-equivalence verdict, or new source-fidelity certification.
Source and reuse
ASTIS parents called
AutoSamplingTheory.TechnicalLemmas.Geometry.LogConcavity.LogConcaveOn.convex_domainAutoSamplingTheory.TechnicalLemmas.Geometry.LogConcavity.LogConcaveOn.posAutoSamplingTheory.TechnicalLemmas.Geometry.LogConcavity.LogConcaveOn.concaveOn_log
Mathlib API called (external library)
- Real.log_le_log
- Real.log_le_log_iff
- add_le_add
- mul_le_mul_of_nonneg_left
- lt_of_not_ge
- le_of_lt
- lt_of_le_of_lt
- smul_eq_mul
Mathematical sources
- Existing ASTIS declaration and exact proof — Directly read current local source; no Lean edit or fresh build.
- Existing curated module card — Local API/source-boundary memory; not independent primary textbook verification.
- Real.log_le_log — Exact inspected Mathlib definition or theorem used by this exposition.
- Real.log_le_log_iff — Exact inspected Mathlib definition or theorem used by this exposition.
- Existing usage in Tests.Basic — Read-only source example; no test was run.
ASTIS prose is not a quotation or a source-equivalence certificate. Definitions and aliases are explained as constructions, not counted as new mathematical proofs.