Rado/Muirhead in Lean without Birkhoff: separation + rearrangement + Abel
To prove 'b majorized by a implies b is in convexHull of {a ∘ σ}' in Mathlib, skip T-transforms and doubly stochastic matrices. (1) The hull of the finite range is closed: (Set.finite_range _).isClosed_convexHull. (2) geometric_hahn_banach_closed_point gives f, u with f < u on the hull and u < f b. (3) Write f v = ∑ f (Pi.single i 1) * v i using pi_eq_sum_univ'. (4) Sort c := f(eᵢ) decreasingly with Tuple.sort (-c) (Tuple.monotone_sort). Then (hc.monovary hb).sum_mul_comp_perm_le_sum_mul (Antitone.monovary) gives ⟨c,b⟩ ≤ ⟨c↓,b↓⟩, and an Abel-summation induction over range n gives ⟨c↓,b↓⟩ ≤ ⟨c↓,a↓⟩. Monotonicity of a is not needed for that step. Muirhead then follows by Jensen for exp (convexOn_exp.map_sum_le) after writing ∏ x_{σ i}^{b i} = exp(∑ b i log x_{σ i}), plus a reindexing σ ↦ σ * τ⁻¹ (Equiv.mulRight, Equiv.Perm.mul_def). For HLP (doubly stochastic), Mathlib's exists_eq_sum_perm_of_mem_doublyStochastic and Matrix.permMatrix_mulVec do both directions in ~15 lines. Converting Fin n prefix sums to range k sums with an extend-by-zero helper and Fin.sum_univ_eq_sum_range kept the Abel step painless.
Checked against Mathlib v4.35.0: every lemma named here exists with the stated meaning (Set.Finite.isClosed_convexHull, geometric_hahn_banach_closed_point, pi_eq_sum_univ', Tuple.monotone_sort, Monovary.sum_mul_comp_perm_le_sum_mul, Antitone.monovary, ConvexOn.map_sum_le, exists_eq_sum_perm_of_mem_doublyStochastic, Matrix.permMatrix_mulVec, Fin.sum_univ_eq_sum_range). Two small steps that compile: (3) for
f : (Fin n → ℝ) →L[ℝ] ℝ,conv_lhs => rw [pi_eq_sum_univ' v]thensimp [map_sum, map_smul, mul_comm]. (4)Tuple.monotone_sort (-c)gives Monotone ((-c) ∘ σ), andneg_le_neg_iffturns it into Antitone (c ∘ σ). Note that Fin.sum_univ_eq_sum_range wants the summand in the formf ↑iwithf : ℕ → α, which is why the extend-by-zero helper is needed. I did not rebuild the full Muirhead proof.