Mathlib.Analysis.Finite­Dim­L1­Linf­Duality

Finite-dimensional l1-linfinity duality helpers: polynomial evaluation maps, moment systems, weak and strong duality, and Hahn-Banach setup.

Basic 4 core · 4 supporting Fix k + 1 nodes p : Fin (k+1) → ℝ and a degree bound β ≤ k. ★ momentSol_nonempty

Finite-dimensional ℓ¹/ℓ∞ duality for minimum-norm node representation — definitions

Fix k + 1 nodes p : Fin (k+1) → ℝ and a degree bound β ≤ k. We study the minimum ℓ¹ norm of a weight vector w : Fin (k+1) → ℝ that reproduces the endpoint contrast r ↦ r.eval 1 - r.eval 0 on every real polynomial r of degree ≤ β, sampled at the nodes.

The weight w reproduces the contrast on all degree-≤ β polynomials iff it solves the moment system ∑ j, w j * (p j) ^ ℓ = (if ℓ = 0 then 0 else 1) for every ℓ ≤ β (test against monomials X^ℓ; the RHS is 1^ℓ - 0^ℓ). That system is the set MomentSol p β.

The two extremal quantities are * the primal sInf (primalNormSet p β) — the least achievable ∑ j, |w j| over w ∈ MomentSol p β; * the dual sSup (dualValSet p β) — the largest achievable |r.eval 1 - r.eval 0| over polynomials r of degree ≤ β bounded by 1 at the nodes.

The main theorem l1_repr_eq_sup_dual (in Duality.lean) is the identity sInf (primalNormSet p β) = sSup (dualValSet p β): finite-dimensional ℓ¹/ℓ∞ Hahn–Banach / LP duality specialised to the node-sampling map.

This file only sets up the definitions and the basic well-posedness facts (nonemptiness / boundedness of the two real sets). Everything is stated for arbitrary distinct nodes and arbitrary β ≤ k, so it is reusable and not gerrymandered to any downstream schedule.

## Standard reference Finite-dimensional LP duality / ℓ¹–ℓ∞ Hahn–Banach duality (the ℓ¹/ℓ∞ pairing on ℝⁿ); the min-norm-representation = dual-sup identity is standard optimal-recovery / convex-analysis duality.

def MomentSol reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

The moment system of admissible weight vectors. w ∈ MomentSol p β means that for every degree ℓ ≤ β the sampled weighted sum ∑ j, w j * (p j) ^ ℓ equals 1^ℓ - 0^ℓ, i.e. 0 when ℓ = 0 and 1 otherwise. Equivalently, w reproduces the endpoint contrast r ↦ r.eval 1 - r.eval 0 on every real polynomial r of degree ≤ β via the node values (r.eval (p j))ⱼ.

Definition (Lean source)
def MomentSol (p : Fin (k + 1) → ℝ) (β : ℕ) : Set (Fin (k + 1) → ℝ) := {w | ∀ ℓ, ℓ ≤ β → ∑ j, w j * p j ^ ℓ = if ℓ = 0 then (0 : ℝ) else 1}
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.MomentSol · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/Basic.lean:51
def primalNormSet reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

The set of achievable ℓ¹ norms of admissible weights: primalNormSet p β = { ∑ j, |w j| : w ∈ MomentSol p β }. Its infimum is the primal (min-norm-representation) value.

Definition (Lean source)
def primalNormSet (p : Fin (k + 1) → ℝ) (β : ℕ) : Set ℝ := {s | ∃ w ∈ MomentSol p β, s = ∑ j, |w j|}
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.primalNormSet · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/Basic.lean:60
def dualValSet reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

The set of achievable endpoint contrasts of node-bounded polynomials: dualValSet p β = { |r.eval 1 - r.eval 0| : r.natDegree ≤ β, ∀ j, |r.eval (p j)| ≤ 1 }. Its supremum is the dual value.

Definition (Lean source)
def dualValSet (p : Fin (k + 1) → ℝ) (β : ℕ) : Set ℝ := {t | ∃ r : Polynomial ℝ, r.natDegree ≤ β ∧ (∀ j, |r.eval (p j)| ≤ 1) ∧ t = |r.eval 1 - r.eval 0|}
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.dualValSet · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/Basic.lean:66
theorem momentSol_nonempty reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Feasibility of the moment system (Vandermonde). For k + 1 pairwise distinct real interpolation nodes and a degree bound β at most k, the moment system — the set of weight vectors that reproduce the endpoint contrast of every degree-≤ β polynomial through the node values — has a solution.

Formal statement
hp :
:
β ≤ k
(MomentSol p β).Nonempty
Proof (Lean source)
theorem momentSol_nonempty (hp : Injective p) (hβ : β ≤ k) : (MomentSol p β).Nonempty := by classical let e : Fin (β + 1) → Fin (k + 1) := fun i => ⟨i, Nat.lt_succ_of_le ((Nat.le_of_lt_succ i.isLt).trans hβ)⟩ let q : Fin (β + 1) → ℝ := fun i => p (e i) let y : Fin (β + 1) → ℝ := fun ℓ => if (ℓ : ℕ) = 0 then 0 else 1 have hq : Injective q := by intro i j hij apply Fin.ext have heq : e i = e j := hp hij simpa [e] using congrArg Fin.val heq have hAunit : IsUnit (Matrix.vandermonde q) := by refine (Matrix.isUnit_iff_isUnit_det _).mpr ?_ exact isUnit_iff_ne_zero.mpr ((Matrix.det_vandermonde_ne_zero_iff).mpr hq) obtain ⟨a, ha⟩ := (Matrix.vecMul_surjective_iff_isUnit.mpr hAunit) y refine ⟨fun j => ∑ i : Fin (β + 1), if e i = j then a i else 0, ?_⟩ intro ℓ hℓ let ℓ' : Fin (β + 1) := ⟨ℓ, Nat.lt_succ_of_le hℓ⟩ have hcoord : vecMul a (Matrix.vandermonde q) ℓ' = y ℓ' := by simpa using congr_fun ha ℓ' calc ∑ j : Fin (k + 1), (∑ i : Fin (β + 1), if e i = j then a i else 0) * p j ^ ℓ = vecMul a (Matrix.vandermonde q) ℓ' := by simp only [vecMul, dotProduct, Matrix.vandermonde_apply, q, ℓ'] simp_rw [Finset.sum_mul] rw [Finset.sum_comm] refine Finset.sum_congr rfl (fun i _ => ?_) rw [Finset.sum_eq_single (e i)] · simp · intro j _ hj simp [hj.symm] · intro he exact (he (Finset.mem_univ (e i))).elim _ = if ℓ = 0 then (0 : ℝ) else 1 := by simpa [y, ℓ']
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.momentSol_nonempty · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/Basic.lean:95 · uses MomentSol
4 supporting declarations (lemmas, instances)
Hahn­Banach­Setup 6 core · 14 supporting The hard (primal ≤ dual) direction is proved with the *sublinear* Hahn–Banach theorem exists_extension_of_le_sublinear, which works on a plain real vector space (Fin (k+1) → ℝ) and needs no normed-space / PiLp / operator ★ Ev_injective★ contrastL_le_dual_mul_ninf

Setup for strong duality: the algebraic Hahn–Banach route

The hard (primal ≤ dual) direction is proved with the sublinear Hahn–Banach theorem exists_extension_of_le_sublinear, which works on a plain real vector space (Fin (k+1) → ℝ) and needs no normed-space / PiLp / operator-norm development. This file collects the algebraic objects it consumes:

* coeffPoly b — the degree-≤ β polynomial ∑ i, b i * X^i with coefficient vector b : Fin (β+1) → ℝ; * Ev p β : (Fin (β+1) → ℝ) →ₗ[ℝ] (Fin (k+1) → ℝ) — node evaluation b ↦ (∑ i, b i * (p j)^i)_j (the transpose of the moment map); * contrastL β : (Fin (β+1) → ℝ) →ₗ[ℝ] ℝ — the endpoint contrast b ↦ ∑ i, b i * (1^i - 0^i) of the coefficient vector; * ninf x — the sup norm maxⱼ |x j| on Fin (k+1) → ℝ; * Ev_injective — node evaluation is injective for distinct nodes and β ≤ k (Vandermonde), so the contrast is a well-defined linear functional on the node-value subspace range (Ev p β); * contrastL_le_dual_mul_ninf — the boundedness estimate contrastL β b ≤ (sSup (dualValSet p β)) * ninf (Ev p β b), i.e. the contrast functional is dominated by M · ‖·‖_∞ on the subspace, which is exactly the hypothesis of the sublinear Hahn–Banach theorem.

StrongDuality.lean assembles these into the extension g, reads off the ℓ¹ representing vector w j = g (Pi.single j 1), and derives admissibility and the norm bound.

def coeffPoly reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

The degree-≤ β polynomial ∑ i, b i * X^i associated to a coefficient vector b : Fin (β+1) → ℝ. Its node values are Ev p β b and its endpoint contrast is contrastL β b.

Definition (Lean source)
noncomputable def coeffPoly (b : Fin (β + 1) → ℝ) : Polynomial ℝ := ∑ i, Polynomial.C (b i) * Polynomial.X ^ (i : ℕ)
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.coeffPoly · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:43
def Ev reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Node evaluation as a linear map: Ev p β b is the vector of values of the degree-≤ β polynomial with coefficients b, sampled at the nodes, (Ev p β b) j = ∑ i, b i * (p j)^i. This is the transpose of the moment map.

Definition (Lean source)
def Ev (p : Fin (k + 1) → ℝ) (β : ℕ) : (Fin (β + 1) → ℝ) →ₗ[ℝ] (Fin (k + 1) → ℝ) where toFun b := fun j => ∑ i, b i * p j ^ (i : ℕ) map_add' := by intro b c ext j simp [Pi.add_apply, add_mul, Finset.sum_add_distrib] map_smul' := by intro c b ext j simp [Finset.mul_sum, mul_assoc]
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.Ev · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:65
def contrastL reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Endpoint-contrast functional on coefficient vectors: contrastL β b = ∑ i, b i * (if i = 0 then 0 else 1) = r.eval 1 - r.eval 0 for r = coeffPoly b.

Definition (Lean source)
def contrastL (β : ℕ) : (Fin (β + 1) → ℝ) →ₗ[ℝ] ℝ where toFun b := ∑ i, b i * (if (i : ℕ) = 0 then (0 : ℝ) else 1) map_add' := by intro b c simp only [Pi.add_apply] rw [← Finset.sum_add_distrib] refine Finset.sum_congr rfl ?_ intro i hi by_cases h : (i : ℕ) = 0 <;> simp [h] map_smul' := by intro c b simp [Finset.mul_sum]
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.contrastL · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:90
theorem Ev_injective reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Node evaluation is injective. For k + 1 pairwise distinct real nodes and a degree bound β at most k, the linear map sending a degree-≤ β coefficient vector to its values at the nodes is injective.

Formal statement
hp :
:
β ≤ k
Injective (Ev p β)
Proof (Lean source)
theorem Ev_injective (hp : Injective p) (hβ : β ≤ k) : Injective (Ev p β) := by classical let e : Fin (β + 1) → Fin (k + 1) := fun i => ⟨i, Nat.lt_succ_of_le ((Nat.le_of_lt_succ i.isLt).trans hβ)⟩ let q : Fin (β + 1) → ℝ := fun i => p (e i) have hq : Injective q := by intro i j hij apply Fin.ext have heq : e i = e j := hp hij simpa [e] using congrArg Fin.val heq have hAunit : IsUnit (Matrix.vandermonde q) := by refine (Matrix.isUnit_iff_isUnit_det _).mpr ?_ exact isUnit_iff_ne_zero.mpr ((Matrix.det_vandermonde_ne_zero_iff).mpr hq) have hmul_inj : Injective (Matrix.vandermonde q).mulVec := (Matrix.mulVec_injective_iff_isUnit).mpr hAunit intro b c hbc have hsubEv : Ev p β (b - c) = 0 := by rw [map_sub, hbc, sub_self] have hsub : b - c = 0 := by apply hmul_inj ext i have hev : Ev p β (b - c) (e i) = 0 := by simpa using congr_fun hsubEv (e i) calc (Matrix.vandermonde q).mulVec (b - c) i = ∑ j : Fin (β + 1), q i ^ (j : ℕ) * (b - c) j := by simp [mulVec, dotProduct, Matrix.vandermonde_apply] _ = ∑ j : Fin (β + 1), (b - c) j * p (e i) ^ (j : ℕ) := by refine Finset.sum_congr rfl ?_ intro j hj simp [q, mul_comm] _ = 0 := by simpa [Ev_apply] using hev _ = (Matrix.vandermonde q).mulVec 0 i := by simp [mulVec, dotProduct] exact sub_eq_zero.mp hsub
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.Ev_injective · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:122 · uses Ev
def ninf reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

The sup norm maxⱼ |x j| on Fin (k+1) → ℝ (a Finset.sup' over the nonempty index set). Used as the majorant M · ninf in Hahn–Banach.

Definition (Lean source)
def ninf (x : Fin (k + 1) → ℝ) : ℝ := Finset.univ.sup' ⟨0, Finset.mem_univ 0⟩ (fun j => |x j|)
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.ninf · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:190
theorem contrastL_le_dual_mul_ninf reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Boundedness estimate (the Hahn–Banach hypothesis). For k + 1 pairwise distinct real nodes, a degree bound β at most k, and any coefficient vector b, the endpoint-contrast functional evaluated at b is bounded above by the dual supremum times the sup-norm of b's node values.

Formal statement
hp :
:
β ≤ k
b :
Fin (β + 1) → ℝ
contrastL β b ≤ sSup (dualValSet p β) * ninf (Ev p β b)
Proof (Lean source)
theorem contrastL_le_dual_mul_ninf (hp : Injective p) (hβ : β ≤ k) (b : Fin (β + 1) → ℝ) : contrastL β b ≤ sSup (dualValSet p β) * ninf (Ev p β b) := by let M := sSup (dualValSet p β) let s := ninf (Ev p β b) by_cases hs0 : s = 0 · have hEvzero : Ev p β b = 0 := by ext j have hle : |Ev p β b j| ≤ 0 := by simpa [s, hs0] using le_ninf (Ev p β b) j exact abs_eq_zero.mp (le_antisymm hle (abs_nonneg (Ev p β b j))) have hszero : ninf (Ev p β b) = 0 := by simpa [s] using hs0 have hb : b = 0 := (Ev_injective hp hβ) (by simpa using hEvzero) simp only [hb, map_zero] exact mul_nonneg (dual_nonneg (dualValSet_bddAbove (primalNormSet_nonempty hp hβ))) (ninf_nonneg 0) · have hspos : 0 < s := by exact lt_of_le_of_ne (by simpa [s] using ninf_nonneg (Ev p β b)) (Ne.symm hs0) let r' : Polynomial ℝ := s⁻¹ • coeffPoly b have hmem : |r'.eval 1 - r'.eval 0| ∈ dualValSet p β := by refine ⟨r', ?_, ?_, rfl⟩ · exact (Polynomial.natDegree_smul_le s⁻¹ (coeffPoly b)).trans (coeffPoly_natDegree_le b) · intro j have hle : |Ev p β b j| ≤ s := by simpa [s] using le_ninf (Ev p β b) j calc |r'.eval (p j)| = |s⁻¹ * Ev p β b j| := by rw [show r'.eval (p j) = s⁻¹ * Ev p β b j by simp [r', Polynomial.eval_smul, coeffPoly_eval_node]] _ = s⁻¹ * |Ev p β b j| := by rw [abs_mul, abs_inv, abs_of_pos hspos] _ ≤ s⁻¹ * s := by exact mul_le_mul_of_nonneg_left hle (inv_nonneg.mpr hspos.le) _ = 1 := by exact inv_mul_cancel₀ hspos.ne' have hdual : |r'.eval 1 - r'.eval 0| ≤ M := by exact le_csSup (dualValSet_bddAbove (primalNormSet_nonempty hp hβ)) hmem have hscaled : r'.eval 1 - r'.eval 0 = s⁻¹ * contrastL β b := by calc r'.eval 1 - r'.eval 0 = s⁻¹ * (coeffPoly b).eval 1 - s⁻¹ * (coeffPoly b).eval 0 := by simp [r', Polynomial.eval_smul] _ = s⁻¹ * ((coeffPoly b).eval 1 - (coeffPoly b).eval 0) := by ring _ = s⁻¹ * contrastL β b := by rw [coeffPoly_contrast] have habs_le : |contrastL β b| ≤ M * s := by calc |contrastL β b| = s * |s⁻¹ * contrastL β b| := by rw [abs_mul, abs_inv, abs_of_pos hspos, ← mul_assoc, mul_inv_cancel₀ hspos.ne', one_mul] _ ≤ s * M := by exact mul_le_mul_of_nonneg_left (by simpa [hscaled] using hdual) hspos.le _ = M * s := by rw [mul_comm] exact (le_abs_self (contrastL β b)).trans (by simpa [M, s] using habs_le)
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.contrastL_le_dual_mul_ninf · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:253 · uses Ev , contrastL , dualValSet , ninf
14 supporting declarations (lemmas, instances)
Duality 2 core · 0 supporting Assembles weak duality (sSup_dual_le_sInf_primal) and strong duality (sInf_primal_le_sSup_dual) into the min-norm-representation = dual-sup identity for the node-sampling map, plus the squared corollary used downstream. ★ l1_repr_eq_sup_dual★ l1_repr_sq_eq_sup_dual_sq

Finite-dimensional ℓ¹/ℓ∞ duality — the main identity

Assembles weak duality (sSup_dual_le_sInf_primal) and strong duality (sInf_primal_le_sSup_dual) into the min-norm-representation = dual-sup identity for the node-sampling map, plus the squared corollary used downstream.

theorem l1_repr_eq_sup_dual reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Finite-dimensional ℓ¹/ℓ∞ duality. For k + 1 pairwise distinct real interpolation nodes and a degree bound β at most k, the least ℓ¹ norm of a weight vector that reproduces the endpoint contrast r ↦ r.eval 1 - r.eval 0 of every degree-≤ β polynomial through its node values equals the largest such contrast attained by a degree-≤ β polynomial bounded by 1 at every node.

Formal statement
hp :
:
β ≤ k
Proof (Lean source)
theorem l1_repr_eq_sup_dual (hp : Injective p) (hβ : β ≤ k) : sInf (primalNormSet p β) = sSup (dualValSet p β) := le_antisymm (sInf_primal_le_sSup_dual hp hβ) (sSup_dual_le_sInf_primal (primalNormSet_nonempty hp hβ))
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.l1_repr_eq_sup_dual · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/Duality.lean:22 · uses dualValSet , primalNormSet
theorem l1_repr_sq_eq_sup_dual_sq reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Squared form. Under the same hypotheses as l1_repr_eq_sup_dualk + 1 pairwise distinct real interpolation nodes and a degree bound β at most kthe square of the min-norm-representation value equals the square of the dual sup.

Formal statement
hp :
:
β ≤ k
(sInf (primalNormSet p β)) ^ 2 = (sSup (dualValSet p β)) ^ 2
Proof (Lean source)
theorem l1_repr_sq_eq_sup_dual_sq (hp : Injective p) (hβ : β ≤ k) : (sInf (primalNormSet p β)) ^ 2 = (sSup (dualValSet p β)) ^ 2 := by rw [l1_repr_eq_sup_dual hp hβ]
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.l1_repr_sq_eq_sup_dual_sq · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/Duality.lean:36 · uses dualValSet , primalNormSet
Nonempty­Duality 2 core · 7 supporting The generic theorem l1_repr_eq_sup_dual assumes distinct nodes and β ≤ k to get injectivity of the node-evaluation map and hence feasibility of the moment system. ★ exists_moment_le_dual_of_momentSol_nonempty★ l1_repr_eq_sup_dual_of_momentSol_nonempty

Finite-dimensional ℓ¹/ℓ∞ duality from moment-system feasibility

The generic theorem l1_repr_eq_sup_dual assumes distinct nodes and β ≤ k to get injectivity of the node-evaluation map and hence feasibility of the moment system. Downstream formalizations sometimes already carry feasibility as a hypothesis. This file packages the same Hahn-Banach proof under the weaker and more intrinsic assumption (MomentSol p β).Nonempty.

Main declarations:

* primalNormSet_nonempty_of_momentSol_nonempty and dualValSet_bddAbove_of_momentSol_nonempty establish that the primal infimum and dual supremum are well posed from feasibility alone. * momentSol_contrast_eq_sum_eval identifies a feasible moment vector with a representation of the coefficient contrast on node-value vectors. * contrastL_le_dual_mul_ninf_of_momentSol_nonempty is the Hahn-Banach domination estimate without a Vandermonde injectivity assumption. * exists_moment_le_dual_of_momentSol_nonempty produces a feasible weight with ℓ¹ norm bounded by the dual value. * l1_repr_eq_sup_dual_of_momentSol_nonempty is the resulting ℓ¹/ℓ∞ duality identity assuming only moment-system feasibility.

theorem exists_moment_le_dual_of_momentSol_nonempty reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Strong duality from moment-system feasibility. If the moment system for the given nodes and degree bound is feasible, i.e. it has at least one solution, then there exists a feasible weight vector whose ℓ¹ norm is at most the dual supremum.

Formal statement
hne :
(MomentSol p β).Nonempty
∃ w ∈ MomentSol p β, ∑ j, |w j| ≤ sSup (dualValSet p β)
Proof (Lean source)
theorem exists_moment_le_dual_of_momentSol_nonempty (hne : (MomentSol p β).Nonempty) : ∃ w ∈ MomentSol p β, ∑ j, |w j| ≤ sSup (dualValSet p β) := by classical rcases hne with ⟨w0, hw0⟩ let E := Fin (k + 1) → ℝ let M : ℝ := sSup (dualValSet p β) let N : E → ℝ := fun x => M * ninf x have hM : 0 ≤ M := dual_nonneg_of_momentSol_nonempty (p := p) (β := β) ⟨w0, hw0⟩ let g0 : E →ₗ[ℝ] ℝ := { toFun := fun x => ∑ j, w0 j * x j map_add' := by intro x y calc ∑ j, w0 j * (x + y) j = ∑ j, (w0 j * x j + w0 j * y j) := by refine Finset.sum_congr rfl ?_ intro j _ change w0 j * (x j + y j) = w0 j * x j + w0 j * y j ring _ = ∑ j, w0 j * x j + ∑ j, w0 j * y j := by rw [Finset.sum_add_distrib] map_smul' := by intro c x calc ∑ j, w0 j * (c • x) j = ∑ j, c * (w0 j * x j) := by refine Finset.sum_congr rfl ?_ intro j _ change w0 j * (c * x j) = c * (w0 j * x j) ring _ = c * ∑ j, w0 j * x j := by rw [Finset.mul_sum] } let φ : range (Ev p β) →ₗ[ℝ] ℝ := g0.comp (range (Ev p β)).subtype let f : E →ₗ.[ℝ] ℝ := ⟨LinearMap.range (Ev p β), φ⟩ have hφ (b : Fin (β + 1) → ℝ) : φ ⟨Ev p β b, LinearMap.mem_range_self (Ev p β) b⟩ = contrastL β b := by change g0 (Ev p β b) = contrastL β b exact (momentSol_contrast_eq_sum_eval (p := p) (β := β) hw0 b).symm have N_hom : ∀ c : ℝ, 0 < c → ∀ x, N (c • x) = c * N x := by intro c hc x dsimp [N] rw [ninf_smul, abs_of_pos hc] ring have N_add : ∀ x y, N (x + y) ≤ N x + N y := by intro x y dsimp [N] calc M * ninf (x + y) ≤ M * (ninf x + ninf y) := mul_le_mul_of_nonneg_left (ninf_add_le x y) hM _ = M * ninf x + M * ninf y := by ring have hf : ∀ x : f.domain, f x ≤ N x := by rintro ⟨_, ⟨b, rfl⟩⟩ calc f ⟨Ev p β b, LinearMap.mem_range_self (Ev p β) b⟩ = contrastL β b := hφ b _ ≤ M * ninf (Ev p β b) := contrastL_le_dual_mul_ninf_of_momentSol_nonempty (p := p) (β := β) ⟨w0, hw0⟩ b _ = N (Ev p β b) := rfl obtain ⟨g, hg_ext, hg_le⟩ := exists_extension_of_le_sublinear f N N_hom N_add hf let w : Fin (k + 1) → ℝ := fun j => g (single j (1 : ℝ)) have hg_expand (x : E) : g x = ∑ j, x j * w j := by have hxsum : (∑ j, single j (x j) : E) = x := by simpa using (Finset.univ_sum_single x) calc g x = g (∑ j, single j (x j)) := by rw [hxsum] _ = ∑ j, g (single j (x j)) := by rw [map_sum] _ = ∑ j, x j * w j := by refine Finset.sum_congr rfl ?_ intro j _ have hsingle : single j (x j) = (x j) • (single j (1 : ℝ) : E) := by ext i by_cases hij : i = j · subst i simp · simp [hij] rw [hsingle, map_smul] simp [w] refine ⟨w, ?_, ?_⟩ · intro ℓ hℓ let ℓ' : Fin (β + 1) := ⟨ℓ, Nat.lt_succ_of_le hℓ⟩ have hg_monomial : g (Ev p β (single ℓ' (1 : ℝ))) = contrastL β (single ℓ' (1 : ℝ)) := by let x : range (Ev p β) := ⟨Ev p β (single ℓ' (1 : ℝ)), LinearMap.mem_range_self (Ev p β) (single ℓ' (1 : ℝ))⟩ calc g (Ev p β (single ℓ' (1 : ℝ))) = f x := hg_ext x _ = contrastL β (single ℓ' (1 : ℝ)) := hφ (single ℓ' (1 : ℝ)) calc ∑ j, w j * p j ^ ℓ = ∑ j, (Ev p β (single ℓ' (1 : ℝ)) j) * w j := by refine Finset.sum_congr rfl ?_ intro j _ rw [Ev_single] simp [ℓ'] ring _ = g (Ev p β (single ℓ' (1 : ℝ))) := (hg_expand _).symm _ = contrastL β (single ℓ' (1 : ℝ)) := hg_monomial _ = if ℓ = 0 then (0 : ℝ) else 1 := by simpa [ℓ'] using (contrastL_single (β := β) (ℓ := ℓ')) · let σ : E := fun j => if 0 ≤ w j then (1 : ℝ) else -1 have hσ_abs : ∀ j, |σ j| = 1 := by intro j by_cases hj : 0 ≤ w j <;> simp [σ, hj] have hNσ : N σ = M := by simp [N, ninf_sign σ hσ_abs] have h_abs_sum : ∑ j, |w j| = ∑ j, σ j * w j := by refine Finset.sum_congr rfl ?_ intro j _ by_cases hj : 0 ≤ w j · simp [σ, hj, abs_of_nonneg hj] · have hjlt : w j < 0 := lt_of_not_ge hj simp [σ, hj, abs_of_neg hjlt] calc ∑ j, |w j| = ∑ j, σ j * w j := h_abs_sum _ = g σ := (hg_expand σ).symm _ ≤ N σ := hg_le σ _ = M := hNσ
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.exists_moment_le_dual_of_momentSol_nonempty · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/NonemptyDuality.lean:152 · uses MomentSol , dualValSet
theorem l1_repr_eq_sup_dual_of_momentSol_nonempty reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Finite-dimensional ℓ¹/ℓ∞ duality under feasibility alone. If the moment system for the given nodes and degree bound has at least one solution, then the least ℓ¹ norm among feasible weight vectors equals the largest endpoint contrast attained by a degree-bounded polynomial bounded by 1 at every node.

Formal statement
hne :
(MomentSol p β).Nonempty
Proof (Lean source)
theorem l1_repr_eq_sup_dual_of_momentSol_nonempty (hne : (MomentSol p β).Nonempty) : sInf (primalNormSet p β) = sSup (dualValSet p β) := le_antisymm (sInf_primal_le_sSup_dual_of_momentSol_nonempty (p := p) (β := β) hne) (sSup_dual_le_sInf_primal_of_momentSol_nonempty (p := p) (β := β) hne)
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.l1_repr_eq_sup_dual_of_momentSol_nonempty · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/NonemptyDuality.lean:303 · uses MomentSol , dualValSet , primalNormSet
7 supporting declarations (lemmas, instances)
Strong­Duality 2 core · 0 supporting This file specializes the feasibility-based finite-dimensional ℓ¹/ℓ∞ duality API to distinct nodes with degree bound β ≤ k. ★ exists_moment_le_dual★ sInf_primal_le_sSup_dual

Strong duality from distinct interpolation nodes

This file specializes the feasibility-based finite-dimensional ℓ¹/ℓ∞ duality API to distinct nodes with degree bound β ≤ k. Vandermonde feasibility is provided by momentSol_nonempty, while the Hahn–Banach certificate is supplied by exists_moment_le_dual_of_momentSol_nonempty.

theorem exists_moment_le_dual reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Strong duality (existence of an optimal weight). For k + 1 pairwise distinct real nodes and a degree bound β at most k, there exists a feasible weight vector — one solving the moment system — whose ℓ¹ norm does not exceed the dual supremum.

Formal statement
hp :
:
β ≤ k
∃ w ∈ MomentSol p β, ∑ j, |w j| ≤ sSup (dualValSet p β)
Proof (Lean source)
theorem exists_moment_le_dual (hp : Injective p) (hβ : β ≤ k) : ∃ w ∈ MomentSol p β, ∑ j, |w j| ≤ sSup (dualValSet p β) := exists_moment_le_dual_of_momentSol_nonempty (momentSol_nonempty hp hβ)
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.exists_moment_le_dual · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/StrongDuality.lean:21 · uses MomentSol , dualValSet
theorem sInf_primal_le_sSup_dual reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Strong duality (inequality form). For k + 1 pairwise distinct real nodes and a degree bound β at most k, the least ℓ¹ norm among feasible weight vectors is at most the dual supremum.

Formal statement
hp :
:
β ≤ k
sInf (primalNormSet p β) ≤ sSup (dualValSet p β)
Proof (Lean source)
theorem sInf_primal_le_sSup_dual (hp : Injective p) (hβ : β ≤ k) : sInf (primalNormSet p β) ≤ sSup (dualValSet p β) := by obtain ⟨w, hw, hw_norm⟩ := exists_moment_le_dual hp hβ exact le_trans (csInf_le primalNormSet_bddBelow ⟨w, hw, rfl⟩) hw_norm
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.sInf_primal_le_sSup_dual · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/StrongDuality.lean:29 · uses dualValSet , primalNormSet
Weak­Duality 3 core · 1 supporting The analytic core is the representation identity: an admissible weight w reproduces the endpoint contrast of every degree-≤ β polynomial through its node values, r.eval 1 - r.eval 0 = ∑ j, w j * r.eval (p j). ★ repr_identity★ dual_le_primal★ sSup_dual_le_sInf_primal

Weak duality: the representation identity and dual ≤ primal

The analytic core is the representation identity: an admissible weight w reproduces the endpoint contrast of every degree-≤ β polynomial through its node values, r.eval 1 - r.eval 0 = ∑ j, w j * r.eval (p j).

From it, weak duality is immediate: `|r.eval 1 - r.eval 0| = |∑ j, w j * r.eval (p j)| ≤ ∑ j, |w j| * |r.eval (p j)| ≤ ∑ j, |w j|` whenever |r.eval (p j)| ≤ 1 at every node. Thus every dual value is every primal value, i.e. dual_le_primal, giving sSup (dualValSet) ≤ sInf (primalNormSet).

theorem repr_identity reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Representation identity. If a weight vector solves the moment system for the given nodes and degree bound and a real polynomial has degree at most β, then the polynomial's endpoint contrast, r.eval 1 - r.eval 0, is reproduced exactly by the weighted sum of its values at the nodes.

Formal statement
w :
Fin (k + 1) → ℝ
hw :
w ∈ MomentSol p β
r :
hr :
r.natDegree ≤ β
r.eval 1 - r.eval 0 = ∑ j, w j * r.eval (p j)
Proof (Lean source)
theorem repr_identity {w : Fin (k + 1) → ℝ} (hw : w ∈ MomentSol p β) {r : Polynomial ℝ} (hr : r.natDegree ≤ β) : r.eval 1 - r.eval 0 = ∑ j, w j * r.eval (p j) := by classical let n := r.natDegree + 1 have h_moment : ∀ ℓ ∈ range n, ∑ j, w j * p j ^ ℓ = if ℓ = 0 then (0 : ℝ) else 1 := by intro ℓ hℓ exact hw ℓ ((Nat.le_of_lt_succ (by simpa [n] using hℓ)).trans hr) have h_lhs : r.eval 1 - r.eval 0 = ∑ ℓ ∈ range n, r.coeff ℓ * (if ℓ = 0 then (0 : ℝ) else 1) := by calc r.eval 1 - r.eval 0 = (∑ ℓ ∈ range n, r.coeff ℓ * (1 : ℝ) ^ ℓ) - (∑ ℓ ∈ range n, r.coeff ℓ * (0 : ℝ) ^ ℓ) := by rw [Polynomial.eval_eq_sum_range, Polynomial.eval_eq_sum_range] _ = ∑ ℓ ∈ range n, (r.coeff ℓ * (1 : ℝ) ^ ℓ - r.coeff ℓ * (0 : ℝ) ^ ℓ) := by rw [Finset.sum_sub_distrib] _ = ∑ ℓ ∈ range n, r.coeff ℓ * ((1 : ℝ) ^ ℓ - (0 : ℝ) ^ ℓ) := by refine Finset.sum_congr rfl ?_ intro ℓ hℓ exact (mul_sub (r.coeff ℓ) ((1 : ℝ) ^ ℓ) ((0 : ℝ) ^ ℓ)).symm _ = ∑ ℓ ∈ range n, r.coeff ℓ * (if ℓ = 0 then (0 : ℝ) else 1) := by refine Finset.sum_congr rfl ?_ intro ℓ hℓ by_cases hℓ0 : ℓ = 0 · simp [hℓ0] · simp [hℓ0] have h_rhs : ∑ j, w j * r.eval (p j) = ∑ ℓ ∈ range n, r.coeff ℓ * (if ℓ = 0 then (0 : ℝ) else 1) := by calc ∑ j, w j * r.eval (p j) = ∑ j, w j * (∑ ℓ ∈ range n, r.coeff ℓ * p j ^ ℓ) := by refine Finset.sum_congr rfl ?_ intro j hj rw [Polynomial.eval_eq_sum_range] _ = ∑ j, ∑ ℓ ∈ range n, w j * (r.coeff ℓ * p j ^ ℓ) := by simp [Finset.mul_sum] _ = ∑ ℓ ∈ range n, ∑ j, w j * (r.coeff ℓ * p j ^ ℓ) := by rw [Finset.sum_comm] _ = ∑ ℓ ∈ range n, r.coeff ℓ * (∑ j, w j * p j ^ ℓ) := by refine Finset.sum_congr rfl ?_ intro ℓ hℓ rw [Finset.mul_sum] refine Finset.sum_congr rfl ?_ intro j hj ac_rfl _ = ∑ ℓ ∈ range n, r.coeff ℓ * (if ℓ = 0 then (0 : ℝ) else 1) := by refine Finset.sum_congr rfl ?_ intro ℓ hℓ rw [h_moment ℓ hℓ] rw [h_lhs, h_rhs]
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.repr_identity · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/WeakDuality.lean:29 · uses MomentSol
theorem dual_le_primal reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Weak duality. If a real number is the ℓ¹ norm of some feasible weight vector and another real number is the endpoint contrast attained by some node-bounded degree-≤ β polynomial, then the second number is no larger than the first: every dual value is bounded by every primal value.

Formal statement
s t :
hs :
s ∈ primalNormSet p β
ht :
t ∈ dualValSet p β
t ≤ s
Proof (Lean source)
theorem dual_le_primal {s t : ℝ} (hs : s ∈ primalNormSet p β) (ht : t ∈ dualValSet p β) : t ≤ s := by rcases hs with ⟨w, hw, rfl⟩ rcases ht with ⟨r, hr_degree, hr_bound, rfl⟩ rw [repr_identity hw hr_degree] calc |∑ j, w j * r.eval (p j)| ≤ ∑ j, |w j * r.eval (p j)| := by simpa using (Finset.abs_sum_le_sum_abs (fun j : Fin (k + 1) => w j * r.eval (p j)) univ) _ = ∑ j, |w j| * |r.eval (p j)| := by simp [abs_mul] _ ≤ ∑ j, |w j| * 1 := by refine Finset.sum_le_sum ?_ intro j hj exact mul_le_mul_of_nonneg_left (hr_bound j) (abs_nonneg (w j)) _ = ∑ j, |w j| := by simp
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.dual_le_primal · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/WeakDuality.lean:97 · uses dualValSet , primalNormSet
theorem sSup_dual_le_sInf_primal reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

Weak duality (inequality form). If the primal set of achievable ℓ¹ norms is nonempty, then the dual supremum is at most the primal infimum: every dual value is bounded by every primal value, hence so is the supremum of dual values by the infimum of primal values.

Formal statement
hne :
(primalNormSet p β).Nonempty
sSup (dualValSet p β) ≤ sInf (primalNormSet p β)
Proof (Lean source)
theorem sSup_dual_le_sInf_primal (hne : (primalNormSet p β).Nonempty) : sSup (dualValSet p β) ≤ sInf (primalNormSet p β) := by exact csSup_le dualValSet_nonempty fun t ht => le_csInf hne fun s hs => dual_le_primal hs ht
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.sSup_dual_le_sInf_primal · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/WeakDuality.lean:131 · uses dualValSet , primalNormSet
1 supporting declaration (lemmas, instances)