WARNING #
This repo contains AI generated proofs which may contain errors. To trust the claimed main result, and for it to be meaningful to have Lean check the actual proofs you must read, understand, and validate the content of this file.
Weak Compositions and Symmetric Log-Concave Functions #
This file defines weak compositions of an integer d into n parts, along with
symmetric log-concave functions on the space of weak compositions.
Main definitions #
WeakComposition n d: A vectore : Fin n → ℤwith∑ eᵢ = dand all entries non-negative.SymmetricLogConcaveFunction n d: A functionD : WeakComposition n d → ℚthat is Sₙ-symmetric, log-concave, and strictly positive.IsBalanced: A vector where all entries differ by at most 1.IsConcentrated: A vector with all mass at a single position.
Implementation notes #
We use ℤ for entries rather than ℕ to simplify arithmetic in proofs, particularly
when dealing with the modify operation that transfers units between positions.
A weak composition of d into n parts is a vector e : Fin n → ℤ with
∑ eᵢ = d and all entries non-negative.
The underlying function from indices to integer values.
The entries sum to
d.All entries are non-negative.
Instances For
Equations
Modify a composition by transferring one unit from position i to position j.
Equations
Instances For
A function on weak compositions that is symmetric under the Sₙ action.
Equations
- IsSymmetric D = ∀ (σ : Equiv.Perm (Fin n)) (e : WeakComposition n d), D { toFun := e.toFun ∘ ⇑(Equiv.symm σ), sum_eq := ⋯, nonneg := ⋯ } = D e
Instances For
The log-concavity condition for D.
Equations
Instances For
D is strictly positive.
Equations
- IsStrictlyPositive D = ∀ (e : WeakComposition n d), 0 < D e
Instances For
A function D on weak compositions satisfying the three conditions:
Sₙ-symmetry, log-concavity, and strict positivity.
- D : WeakComposition n d → ℚ
The function D : E(n,d) → ℚ
- symmetric : IsSymmetric self.D
D(e ∘ σ⁻¹) = D(e) for all permutations σ
- logConcave : SatisfiesLogConcavity self.D
D(e)² ≥ D(e - δᵢ + δⱼ) · D(e + δᵢ - δⱼ) when eᵢ, eⱼ ≥ 1
- strictlyPositive : IsStrictlyPositive self.D
D(e) > 0 for all e