Documentation

Tdaf.Analysis.Convex.Optimization.ConeDuality

Duality between a co-finite function and a closed convex cone #

Let h be convex, finite everywhere and co-finite, let K be a nonempty closed convex cone and let K* = -K°. Then for every z and z*

inf_{x ∈ K} {h (z + x) - ⟨z*, x⟩} + inf_{x* ∈ K*} {h* (z* + x*) - ⟨z, x*⟩} = ⟨z, z*⟩,

with both infima finite and attained: a duality between h and h* parametrised by a point of each space.

The proof runs through the auxiliary function f = h (z + ·) - ⟨·, z*⟩, whose conjugate is the dual objective shifted down by the constant ⟨z, z*⟩. Finiteness of h gives dom f = E and co-finiteness of h gives dom f* = F; those are the two constraint qualifications for duality between a convex function and a cone, each in its strongest form.

Main results #

Implementation notes #

Closedness of K is used only for attainment of the primal infimum, whose proof runs through the bipolar K** = K; the identity, finiteness of both infima and attainment of the dual infimum need only that K is a nonempty convex cone. Finite-dimensionality enters only through continuity of a convex function that is finite everywhere, and the everywhere-finite conjugate of a co-finite one.

References #

[^1]: R. T. Rockafellar, Convex Analysis, Princeton University Press, 1970, §§12, 13, 31.

The translated, tilted function #

theorem Tdaf.ConvexAnalysis.comp_add_sub_pairing_eq_add_coe {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (h : E → EReal) (z : E) (z' : F) :
(fun (x : E) => h (z + x) - ↑((B x) z')) = fun (x : E) => h (z + x) + ↑(-(B x) z')

f = h (z + ·) - ⟨·, z*⟩ rewritten as h (z + ·) plus a real-valued linear term.

theorem Tdaf.ConvexAnalysis.convexFn_comp_add_sub_pairing {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {h : E → EReal} (hh : ConvexFn h) (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (z : E) (z' : F) :
ConvexFn fun (x : E) => h (z + x) - ↑((B x) z')

f is convex: a translate of h plus a linear term.

theorem Tdaf.ConvexAnalysis.exists_comp_add_sub_pairing_eq_coe {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {h : E → EReal} (hp : Proper h) (hdom : dom h = Set.univ) (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (z : E) (z' : F) (x : E) :
∃ (r : ℝ), h (z + x) - ↑((B x) z') = ↑r

When h is finite everywhere so is f: the tilt is real.

theorem Tdaf.ConvexAnalysis.proper_comp_add_sub_pairing {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {h : E → EReal} (hp : Proper h) (hdom : dom h = Set.univ) (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (z : E) (z' : F) :
Proper fun (x : E) => h (z + x) - ↑((B x) z')

f is proper whenever h is finite everywhere.

theorem Tdaf.ConvexAnalysis.dom_comp_add_sub_pairing_eq_univ {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {h : E → EReal} (hp : Proper h) (hdom : dom h = Set.univ) (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (z : E) (z' : F) :
(dom fun (x : E) => h (z + x) - ↑((B x) z')) = Set.univ

f is finite everywhere whenever h is.

theorem Tdaf.ConvexAnalysis.conj_comp_add_sub_pairing_eq_add_coe {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (h : E → EReal) (z : E) (z' w : F) :
conj B (fun (x : E) => h (z + x) - ↑((B x) z')) w = conj B h (z' + w) - ↑((B z) w) + ↑(-(B z) z')

f* is the dual objective shifted down by the constant ⟨z, z*⟩, with the two subtractions collected into a single real summand.

theorem Tdaf.ConvexAnalysis.iInf_mem_neg_polarCone_conj_eq {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (h : E → EReal) (K : Set E) (z : E) (z' : F) :
⨅ w ∈ -polarCone B K, conj B (fun (x : E) => h (z + x) - ↑((B x) z')) w = (⨅ w ∈ -polarCone B K, conj B h (z' + w) - ↑((B z) w)) + ↑(-(B z) z')

The infimum of f* over K* is the dual infimum for h shifted down by ⟨z, z*⟩; the shift is a real constant, so it slides out of the infimum.

The cone duality identity #

A co-finite h has an everywhere-finite conjugate.

theorem Tdaf.ConvexAnalysis.exists_conj_comp_add_sub_pairing_eq_coe {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} (hcof : Cofinite h) (z : E) (z' w : F) :
∃ (r : ℝ), conj B h (z' + w) - ↑((B z) w) = ↑r

The dual objective is finite at every point: h* is finite everywhere, and the tilt is real.

theorem Tdaf.ConvexAnalysis.dom_conj_comp_add_sub_pairing_eq_univ {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} (hcof : Cofinite h) (z : E) (z' : F) :
dom (conj B fun (x : E) => h (z + x) - ↑((B x) z')) = Set.univ

f* is finite everywhere, because the conjugate of a co-finite function is.

theorem Tdaf.ConvexAnalysis.isExactSum_comp_add_sub_pairing_indicatorFn {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hne : K.Nonempty) (z : E) (z' : F) :
IsExactSum B (fun (x : E) => h (z + x) - ↑((B x) z')) (indicatorFn K)

f is finite everywhere, hence continuous, so it adds exactly to δ(·|K): the constraint qualification on the primal side.

theorem Tdaf.ConvexAnalysis.isExactSum_conj_comp_add_sub_pairing_indicatorFn {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (z : E) (z' : F) :
IsExactSum B.flip (conj B fun (x : E) => h (z + x) - ↑((B x) z')) (indicatorFn (-polarCone B K))

f* is finite everywhere too, so it adds exactly to δ(·|K*): the constraint qualification on the dual side, which is what co-finiteness of h supplies.

theorem Tdaf.ConvexAnalysis.iInf_mem_neg_polarCone_conj_ne_top {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (z : E) (z' : F) :
⨅ w ∈ -polarCone B K, conj B (fun (x : E) => h (z + x) - ↑((B x) z')) w ≠ ⊤

The dual infimum is not ⊤: the origin lies in K*, where the value is finite.

theorem Tdaf.ConvexAnalysis.iInf_mem_neg_polarCone_conj_ne_bot {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (z : E) (z' : F) :
⨅ w ∈ -polarCone B K, conj B (fun (x : E) => h (z + x) - ↑((B x) z')) w ≠ ⊥

The dual infimum is not ⊥: its negative is the primal infimum, which is bounded above by a finite value.

theorem Tdaf.ConvexAnalysis.iInf_mem_add_iInf_mem_neg_polarCone_eq_pairing {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (z : E) (z' : F) :
(⨅ x ∈ K, h (z + x) - ↑((B x) z')) + ⨅ w ∈ -polarCone B K, conj B h (z' + w) - ↑((B z) w) = ↑((B z) z')

Cone duality. For h convex, finite everywhere and co-finite and K a nonempty convex cone, the primal infimum over K and the dual infimum over K* = -K° add to ⟨z, z*⟩. Closedness of K is not needed for the identity.

theorem Tdaf.ConvexAnalysis.exists_iInf_mem_neg_polarCone_eq_of_cofinite {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (z : E) (z' : F) :
∃ w ∈ -polarCone B K, conj B h (z' + w) - ↑((B z) w) = ⨅ v ∈ -polarCone B K, conj B h (z' + v) - ↑((B z) v)

The dual infimum is attained. Only finiteness of h is used here, not co-finiteness.

theorem Tdaf.ConvexAnalysis.exists_iInf_mem_neg_polarCone_eq_coe_of_cofinite {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (z : E) (z' : F) :
∃ (r : ℝ), ⨅ w ∈ -polarCone B K, conj B h (z' + w) - ↑((B z) w) = ↑r

The dual infimum is finite, being attained where the objective is.

theorem Tdaf.ConvexAnalysis.exists_iInf_mem_eq_coe_of_cofinite {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (z : E) (z' : F) :
∃ (s : ℝ), ⨅ x ∈ K, h (z + x) - ↑((B x) z') = ↑s

The primal infimum is finite, being the negative of the dual infimum up to the constant ⟨z, z*⟩.

theorem Tdaf.ConvexAnalysis.exists_iInf_mem_eq_of_cofinite {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] [IsCompatiblePairing B.flip] {h : E → EReal} {K : Set E} (hcof : Cofinite h) (hdom : dom h = Set.univ) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (hcl : IsClosed K) (z : E) (z' : F) :
∃ x ∈ K, h (z + x) - ↑((B x) z') = ⨅ u ∈ K, h (z + u) - ↑((B u) z')

The primal infimum is attained; this is where co-finiteness of h and closedness of K are used.