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

For a nonnegative number of nodes minus one, a collection of real nodes indexed from zero through that number, and a nonnegative degree bound, the moment system of admissible weight vectors consists of precisely those real weight vectors whose weighted power sum at every nonnegative degree no greater than the bound is zero at degree zero and one at every positive degree.

Definition (Lean source)
k :
shared
p :
Fin (k + 1) → ℝ
β :
MomentSol p β :
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

For a nonnegative number of nodes minus one, a collection of real nodes indexed from zero through that number, and a nonnegative degree bound, the set of achievable primal norms consists of the sums of absolute weights over all weight vectors that satisfy the corresponding moment system.

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

For a nonnegative number of nodes minus one, a collection of real nodes indexed from zero through that number, and a nonnegative degree bound, the set of achievable dual values consists of the absolute differences between a real polynomial's values at one and zero, for every polynomial of degree at most the bound whose absolute value at every node is at most one.

Definition (Lean source)
k :
shared
p :
Fin (k + 1) → ℝ
β :
dualValSet p β :
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:71
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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:104 · 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

For a nonnegative degree bound and a real coefficient vector indexed from zero through that bound, the associated coefficient polynomial is the sum of each coefficient times the corresponding monomial. Its degree is at most the stated bound.

Definition (Lean source)
β :
shared
b :
Fin (β + 1) → ℝ
coeffPoly b :
∑ 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

For a nonnegative number of sampled coordinates minus one, a collection of real sampling nodes indexed from zero through that number, and a nonnegative degree bound, the node-evaluation linear map sends a coefficient vector to the values at all sampling nodes of its polynomial of degree at most that bound.

Definition (Lean source)
k :
shared
p :
Fin (k + 1) → ℝ
β :
Ev p β :
(Fin (β + 1) → ℝ) →ₗ[ℝ] (Fin (k + 1) → ℝ)
clause 1
toFun b := fun j => ∑ i, b i * p j ^ (i : ℕ)
clause 2
map_add' := by intro b c ext j simp [Pi.add_apply, add_mul, Finset.sum_add_distrib]
clause 3
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:67
def contrastL reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

For a nonnegative degree bound, the endpoint-contrast linear functional maps a coefficient vector to the value at one minus the value at zero of its associated polynomial.

Definition (Lean source)
β :
contrastL β :
(Fin (β + 1) → ℝ) →ₗ[ℝ] ℝ
clause 1
toFun b := ∑ i, b i * (if (i : ℕ) = 0 then (0 : ℝ) else 1)
clause 2
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]
clause 3
map_smul' := by intro c b simp [Finset.mul_sum]
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.contrastL · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:95
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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:129 · uses Ev
def ninf reviewed
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality

For a nonnegative number of coordinates minus one and a real vector indexed from zero through that number, the sup norm is the largest absolute coordinate value.

Definition (Lean source)
k :
shared
x :
Fin (k + 1) → ℝ
ninf x :
Finset.univ.sup' ⟨0, Finset.mem_univ 0⟩ (fun j => |x j|)
Causalean.Mathlib.Analysis.FiniteDimL1LinfDuality.ninf · Causalean/Mathlib/Analysis/FiniteDimL1LinfDuality/HahnBanachSetup.lean:197
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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:262 · 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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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
k :
shared
β :
shared
p :
Fin (k + 1) → ℝ
shared
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)