Documentation

Tdaf.Analysis.Convex.Optimization.Fenchel

Fenchel's duality theorem #

Minimising a difference f - g, with f convex and g concave, is dual to maximising g* - f*, where g* is the concave conjugate. Weak duality g*(y) - f*(y) ≤ f x - g x is Fenchel's inequality used twice and needs no hypothesis at all; equality, and attainment on one of the two sides, needs f and -g to add exactly. A linear transformation may be interposed between the two functions; the Kuhn–Tucker conditions y ∈ ∂f x, -y ∈ ∂(-g) x characterise a jointly optimal pair; and the whole specialises to minimising over a convex cone K, where the dual problem is minimising f* over K* = -K°.

Main results #

Implementation notes #

The hypothesis throughout is IsExactSum B f (-g), not a constraint qualification. The book's condition (a) ri (dom f) ∩ ri (dom g) ≠ ∅, its condition (b) on the conjugates, and the two polyhedral weakenings of each are all ways of saying that f and -g add exactly, so the theorem is proved once and every variant is an instance; condition (b) is condition (a) read on the dual pair. The transformed statement likewise splits the book's transformed condition (a) into two interfaces, IsExactSum for the sum and IsExactImage for the pullback along A.

References #

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

theorem Tdaf.ConvexAnalysis.concaveConj_sub_conj_le_sub {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] (B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ) (f g : E → EReal) (x : E) (y : F) :
concaveConj B g y - conj B f y ≤ f x - g x

Weak duality, pointwise: every dual value is below every primal value, by Fenchel's inequality for f and for g added together. No hypothesis at all is needed — both ∞ - ∞ collisions send the left side to ⊥.

theorem Tdaf.ConvexAnalysis.fenchel_duality {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} (hex : IsExactSum B f (-g)) :
⨅ (x : E), f x - g x = ⨆ (y : F), concaveConj B g y - conj B f y

Fenchel's duality theorem: inf (f - g) = sup (g* - f*). This is inf h = -h*(0) applied to h = f + (-g), with exact addition splitting the conjugate of that sum at the origin.

theorem Tdaf.ConvexAnalysis.exists_concaveConj_sub_conj_eq {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} (hex : IsExactSum B f (-g)) :
∃ (y : F), concaveConj B g y - conj B f y = ⨅ (x : E), f x - g x

Attainment: under exact addition the supremum of g* - f* is attained.

theorem Tdaf.ConvexAnalysis.isGreatest_concaveConj_sub_conj {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} (hex : IsExactSum B f (-g)) :
IsGreatest (Set.range fun (y : F) => concaveConj B g y - conj B f y) (⨅ (x : E), f x - g x)

The two clauses packaged: the common value is the greatest dual value.

A linear transformation between the two functions #

theorem Tdaf.ConvexAnalysis.concaveConj_compLin {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {g : G → EReal} (hA : IsAdjointPair B B' A A') (himg : IsExactImage B B' A A' hA fun (w : G) => -g w) (y : F) :
concaveConj B (compLin g A) y = ⨆ (z : H), ⨆ (_ : A' z = y), concaveConj B' g z

The concave face of the image rule: the concave conjugate of an inverse image g A is the supremum of g* over the fibres of the transpose, where the convex statement has an infimum. Both reflections are at work, so the fibre A' z = -y becomes A' z = y.

theorem Tdaf.ConvexAnalysis.iSup_concaveConj_compLin_sub_conj {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} (hA : IsAdjointPair B B' A A') (himg : IsExactImage B B' A A' hA fun (w : G) => -g w) (hb : ∀ (y : F), conj B f y ≠ ⊥) :
⨆ (y : F), concaveConj B (compLin g A) y - conj B f y = ⨆ (z : H), concaveConj B' g z - conj B f (A' z)

The transformed dual program lives on H, not on F. Duality gives a supremum over F; the concave image rule rewrites each value as a supremum over a fibre of A', and the two suprema collapse into one over H. Besides the exact-image hypothesis only conj B f ≠ ⊥ is used, so both conditions (a) and (b) can call it.

theorem Tdaf.ConvexAnalysis.fenchel_duality_comp {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} (hA : IsAdjointPair B B' A A') (hex : IsExactSum B f fun (x : E) => -g (A x)) (himg : IsExactImage B B' A A' hA fun (w : G) => -g w) :
⨅ (x : E), f x - g (A x) = ⨆ (z : H), concaveConj B' g z - conj B f (A' z)

Fenchel's duality theorem with a linear transformation: inf (f - g A) = sup (g* - f* A').

The two hypotheses are the book's condition (a) split in two: hex makes f and -(g A) add exactly, himg makes g pull back exactly along A, and ri (dom f) ∩ A⁻¹ (ri (dom g)) ≠ ∅ delivers both.

theorem Tdaf.ConvexAnalysis.exists_concaveConj_sub_conj_comp_eq {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} (hA : IsAdjointPair B B' A A') (hex : IsExactSum B f fun (x : E) => -g (A x)) (himg : IsExactImage B B' A A' hA fun (w : G) => -g w) :
∃ (z : H), concaveConj B' g z - conj B f (A' z) = ⨅ (x : E), f x - g (A x)

Attainment: under exact addition and exact pullback the supremum of g* - f* A' is attained. Two attainment statements chain — duality over F, then the image rule over the fibre — with the degenerate common value -∞ taken separately.

Condition (b): the closed case, with the infimum attained #

theorem Tdaf.ConvexAnalysis.iInf_sub_eq_neg_iInf_conj_sub {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {f g : E → EReal} (hf : ClosedProperConvexFn f) (hg : ClosedProperConvexFn fun (x : E) => -g x) (hex : IsExactSum B.flip (conj B f) (-concaveConj B g)) :
⨅ (x : E), f x - g x = -⨅ (y : F), conj B f y - concaveConj B g y

The dual-side reading of the primal value: under condition (b), inf (f - g) is minus inf (f* - g*). This is fenchel_duality on the pair (f*, g*) over B.flip.

theorem Tdaf.ConvexAnalysis.fenchel_duality_of_closed {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {f g : E → EReal} (hf : ClosedProperConvexFn f) (hg : ClosedProperConvexFn fun (x : E) => -g x) (hex : IsExactSum B.flip (conj B f) (-concaveConj B g)) :
⨅ (x : E), f x - g x = ⨆ (y : F), concaveConj B g y - conj B f y

Duality under condition (b): f and g closed, with the conjugates adding exactly. The equality is the same; what (b) buys is attainment on the primal side.

theorem Tdaf.ConvexAnalysis.exists_sub_eq_iInf {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {f g : E → EReal} (hf : ClosedProperConvexFn f) (hg : ClosedProperConvexFn fun (x : E) => -g x) (hex : IsExactSum B.flip (conj B f) (-concaveConj B g)) :
∃ (x : E), f x - g x = ⨅ (z : E), f z - g z

Under condition (b) the infimum of f - g is attained.

The transformed pair under condition (b) #

theorem Tdaf.ConvexAnalysis.fenchel_duality_comp_of_closed {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} (hA : IsAdjointPair B B' A A') (hf : ClosedProperConvexFn f) (hgA : ClosedProperConvexFn fun (x : E) => -g (A x)) (hex : IsExactSum B.flip (conj B f) (-concaveConj B (compLin g A))) (himg : IsExactImage B B' A A' hA fun (w : G) => -g w) :
⨅ (x : E), f x - g (A x) = ⨆ (z : H), concaveConj B' g z - conj B f (A' z)

The transformed duality equality under condition (b): f and g closed with the conjugates adding exactly. Where condition (a) delivers attainment on the dual side, (b) delivers it on the primal side (exists_sub_comp_eq_iInf).

theorem Tdaf.ConvexAnalysis.exists_sub_comp_eq_iInf {E : Type u_1} {F : Type u_2} {G : Type u_3} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {A : E →ₗ[ℝ] G} {f : E → EReal} {g : G → EReal} (hf : ClosedProperConvexFn f) (hgA : ClosedProperConvexFn fun (x : E) => -g (A x)) (hex : IsExactSum B.flip (conj B f) (-concaveConj B (compLin g A))) :
∃ (x : E), f x - g (A x) = ⨅ (z : E), f z - g (A z)

Under condition (b) the infimum of f - g A is attained.

The Fenchel optimality conditions #

theorem Tdaf.ConvexAnalysis.neg_mem_subgradient_neg_iff_add_concaveConj_eq {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {g : E → EReal} {x : E} {y : F} (hpg : Proper fun (z : E) => -g z) :
-y ∈ subgradient B (fun (z : E) => -g z) x ↔ g x + concaveConj B g y = ↑((B x) y)

Equality in the concave Fenchel inequality: g x + g*(y) = ⟨x, y⟩ says -y ∈ ∂(-g) x. The book writes this as x ∈ ∂g*(y) with the superdifferential of a concave function, -∂(-g).

theorem Tdaf.ConvexAnalysis.sub_eq_concaveConj_sub_conj_iff {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} {x : E} {y : F} (hpf : Proper f) (hpg : Proper fun (z : E) => -g z) :
f x - g x = concaveConj B g y - conj B f y ↔ y ∈ subgradient B f x ∧ -y ∈ subgradient B (fun (z : E) => -g z) x

The optimality conditions at A = id: x and y are jointly optimal for the two problems of Fenchel's duality theorem exactly when y ∈ ∂f x and -y ∈ ∂(-g) x. Both are Fenchel's inequality holding with equality, and f x - g x = g*(y) - f*(y) squeezes the two inequalities ⟨x, y⟩ ≤ f x + f*(y) and g x + g*(y) ≤ ⟨x, y⟩ together.

theorem Tdaf.ConvexAnalysis.iInf_sub_eq_of_sub_eq {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} {x : E} {y : F} (h : f x - g x = concaveConj B g y - conj B f y) :
⨅ (z : E), f z - g z = f x - g x

A point where the primal and dual values agree already minimises f - g. Only weak duality is used.

theorem Tdaf.ConvexAnalysis.iSup_sub_eq_of_sub_eq {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} {x : E} {y : F} (h : f x - g x = concaveConj B g y - conj B f y) :
⨆ (w : F), concaveConj B g w - conj B f w = concaveConj B g y - conj B f y

The same point maximises g* - f*.

theorem Tdaf.ConvexAnalysis.iInf_sub_eq_iff_exists_kuhnTucker {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f g : E → EReal} (hex : IsExactSum B f (-g)) (x : E) :
⨅ (z : E), f z - g z = f x - g x ↔ ∃ y ∈ subgradient B f x, -y ∈ subgradient B (fun (z : E) => -g z) x

At A = id: under exact addition, x minimises f - g exactly when it carries a Kuhn–Tucker pair.

Optimality conditions for the transformed pair of problems #

A pair (x, z) is jointly optimal for inf (f - g A) and sup (g* - f* A') exactly when A' z ∈ ∂f x and A x lies in the superdifferential of g* at z. The superdifferential of a concave function is -∂ of its negative, so the second condition reads -z ∈ ∂(-g)(A x) and no new notion is needed.

These are the Kuhn–Tucker conditions for the transformed pair of programs.

theorem Tdaf.ConvexAnalysis.concaveConj_sub_conj_comp_le_sub {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} (hA : IsAdjointPair B B' A A') (x : E) (z : H) :
concaveConj B' g z - conj B f (A' z) ≤ f x - g (A x)

Weak duality for the transformed problem: every value of g* - f* A' is below every value of f - g A. Nothing is needed beyond the adjointness datum identifying ⟨A x, z⟩' with ⟨x, A' z⟩.

theorem Tdaf.ConvexAnalysis.sub_comp_eq_concaveConj_sub_conj_iff {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} {x : E} {z : H} (hA : IsAdjointPair B B' A A') (hpf : Proper f) (hpg : Proper fun (w : G) => -g w) :
f x - g (A x) = concaveConj B' g z - conj B f (A' z) ↔ A' z ∈ subgradient B f x ∧ -z ∈ subgradient B' (fun (w : G) => -g w) (A x)

x and z are jointly optimal for the two transformed programs exactly when A' z ∈ ∂f x and -z ∈ ∂(-g)(A x). The proof is the one at A = id, with the shared finite value ⟨x, A' z⟩ = ⟨A x, z⟩'.

theorem Tdaf.ConvexAnalysis.iInf_sub_comp_eq_of_sub_eq {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} {x : E} {z : H} (hA : IsAdjointPair B B' A A') (h : f x - g (A x) = concaveConj B' g z - conj B f (A' z)) :
⨅ (w : E), f w - g (A w) = f x - g (A x)

A point where the primal and dual values agree already minimises f - g A.

theorem Tdaf.ConvexAnalysis.iSup_sub_comp_eq_of_sub_eq {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} {x : E} {z : H} (hA : IsAdjointPair B B' A A') (h : f x - g (A x) = concaveConj B' g z - conj B f (A' z)) :
⨆ (w : H), concaveConj B' g w - conj B f (A' w) = concaveConj B' g z - conj B f (A' z)

The same pair maximises g* - f* A'.

theorem Tdaf.ConvexAnalysis.iInf_sub_comp_eq_iff_exists_kuhnTucker {E : Type u_1} {F : Type u_2} {G : Type u_3} {H : Type u_4} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [AddCommGroup G] [Module ℝ G] [AddCommGroup H] [Module ℝ H] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {B' : G →ₗ[ℝ] H →ₗ[ℝ] ℝ} {A : E →ₗ[ℝ] G} {A' : H →ₗ[ℝ] F} {f : E → EReal} {g : G → EReal} (hA : IsAdjointPair B B' A A') (hex : IsExactSum B f fun (w : E) => -g (A w)) (himg : IsExactImage B B' A A' hA fun (w : G) => -g w) (x : E) :
⨅ (w : E), f w - g (A w) = f x - g (A x) ↔ ∃ (z : H), A' z ∈ subgradient B f x ∧ -z ∈ subgradient B' (fun (w : G) => -g w) (A x)

Under the two exactness hypotheses, x minimises f - g A exactly when it carries a Kuhn–Tucker pair. The forward direction needs the attainment clause to produce the multiplier; the backward one is weak duality alone.

Minimising over a convex cone #

theorem Tdaf.ConvexAnalysis.mem_neg_polarCone {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {K : Set E} {y : F} :
y ∈ -polarCone B K ↔ ∀ z ∈ K, 0 ≤ (B z) y

The book's K* is the negative of the polar cone K°. Set negation is a preimage, so y ∈ -K° unfolds to -y ∈ K°.

theorem Tdaf.ConvexAnalysis.iInf_mem_eq_iInf_add_indicatorFn {α : Type u_3} (φ : α → EReal) (S : Set α) (hb : ∀ (z : α), φ z ≠ ⊥) :
⨅ z ∈ S, φ z = ⨅ (z : α), (φ + indicatorFn S) z

A constrained infimum is an unconstrained infimum of the function plus an indicator, provided the function never takes ⊥.

theorem Tdaf.ConvexAnalysis.iInf_add_indicatorFn_eq_neg_iInf_conj_add_indicatorFn {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} (hex : IsExactSum B f (indicatorFn K)) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) :
⨅ (z : E), (f + indicatorFn K) z = -⨅ (w : F), (conj B f + indicatorFn (-polarCone B K)) w

The cone form: minimising a convex function over a convex cone K is dual to minimising its conjugate over K* = -K°. Rather than through duality with g = -δ(· | K), this goes to the source both proofs share: inf h = -h*(0) applied to h = f + δ(· | K), with the sum's conjugate split at the origin and the conjugate of an indicator evaluating the second factor. The 0 - y produced by the splitting is the sign flip turning K° into K*.

theorem Tdaf.ConvexAnalysis.iInf_mem_eq_neg_iInf_mem_neg_polarCone {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} (hex : IsExactSum B f (indicatorFn K)) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) :
⨅ z ∈ K, f z = -⨅ w ∈ -polarCone B K, conj B f w

The same in constrained notation: inf {f x | x ∈ K} = -inf {f*(y) | y ∈ K*}.

theorem Tdaf.ConvexAnalysis.neg_conj_le_of_mem_neg_polarCone {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} {x : E} (hxK : x ∈ K) {w : F} (hwK : w ∈ -polarCone B K) :
-conj B f w ≤ f x

Weak duality for the cone program: every dual value is below every primal value.

theorem Tdaf.ConvexAnalysis.add_conj_eq_zero_iff_mem_subgradient_and_pairing_eq_zero {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} {x : E} {y : F} (hp : Proper f) (hxK : x ∈ K) (hyK : y ∈ -polarCone B K) :
f x + conj B f y = 0 ↔ y ∈ subgradient B f x ∧ (B x) y = 0

Optimality conditions for the cone program: for x ∈ K and y ∈ K* the primal and dual values agree exactly when y ∈ ∂f x and ⟨x, y⟩ = 0. These are the Fenchel conditions for g = -δ(· | K).

theorem Tdaf.ConvexAnalysis.forall_le_of_mem_subgradient_of_pairing_eq_zero {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} {x : E} {y : F} (hyK : y ∈ -polarCone B K) (hy : y ∈ subgradient B f x) (hxy : (B x) y = 0) {z : E} (hz : z ∈ K) :
f x ≤ f z

The optimality conditions make x optimal for the primal cone program. Only ⟨x, y⟩ = 0 and y ∈ K* are used.

theorem Tdaf.ConvexAnalysis.conj_le_conj_of_mem_subgradient_of_pairing_eq_zero {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} {x : E} {y : F} (hp : Proper f) (hxK : x ∈ K) (hy : y ∈ subgradient B f x) (hxy : (B x) y = 0) {w : F} (hwK : w ∈ -polarCone B K) :
conj B f y ≤ conj B f w

The optimality conditions make y optimal for the dual cone program.

Attainment of the two infima #

theorem Tdaf.ConvexAnalysis.conj_add_indicatorFn_zero_eq_iInf_mem_neg_polarCone {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} (hex : IsExactSum B f (indicatorFn K)) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) :
conj B (f + indicatorFn K) 0 = ⨅ w ∈ -polarCone B K, conj B f w

The dual value read at the origin: (f + δ(·|K))* 0 is the dual infimum inf {f*(y) | y ∈ K*}. This is what turns exactness of the sum into attainment.

theorem Tdaf.ConvexAnalysis.exists_mem_neg_polarCone_conj_eq_iInf {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} (hex : IsExactSum B f (indicatorFn K)) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) :
∃ y ∈ -polarCone B K, conj B f y = ⨅ w ∈ -polarCone B K, conj B f w

Attainment under condition (a): as soon as f and δ(·|K) add exactly, the dual infimum is attained. It is read straight off IsExactSum: the splitting 0 = y₁ + y₂ at the origin already is a minimising y₁ ∈ K*, since the second conjugate factor is the indicator of K°. The degenerate branch y₂ ∉ K° forces the dual infimum to ⊤, attained at the origin.

theorem Tdaf.ConvexAnalysis.iInf_mem_add_iInf_mem_neg_polarCone_eq_zero {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {K : Set E} (hex : IsExactSum B f (indicatorFn K)) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (hbot : ⨅ w ∈ -polarCone B K, conj B f w ≠ ⊥) (htop : ⨅ w ∈ -polarCone B K, conj B f w ≠ ⊤) :
(⨅ z ∈ K, f z) + ⨅ w ∈ -polarCone B K, conj B f w = 0

The two infima added rather than negated: when the dual infimum is finite the duality equation says the two values sum to zero.

Minimising over a subspace #

The polar cone of a subspace is closed under negation, so K* and K° coincide there: both are the annihilator L^⊥ = {y | ∀ x ∈ L, ⟨x, y⟩ = 0}.

theorem Tdaf.ConvexAnalysis.iInf_mem_submodule_eq_neg_iInf_mem_polarCone {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {M : Submodule ℝ E} (hex : IsExactSum B f (indicatorFn ↑M)) :
⨅ z ∈ ↑M, f z = -⨅ w ∈ polarCone B ↑M, conj B f w

inf {f x | x ∈ L} = -inf {f*(y) | y ∈ L^⊥} for a subspace L, where K* = -K° collapses to K° itself.

theorem Tdaf.ConvexAnalysis.add_conj_eq_zero_iff_mem_subgradient_of_mem_submodule {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} {f : E → EReal} {x : E} {y : F} {M : Submodule ℝ E} (hp : Proper f) (hxM : x ∈ M) (hyM : y ∈ polarCone B ↑M) :
f x + conj B f y = 0 ↔ y ∈ subgradient B f x

Over a subspace the orthogonality ⟨x, y⟩ = 0 is automatic, so the primal and dual values agree exactly when y ∈ ∂f x.

Attainment of the primal infimum #

Attainment of the primal infimum is Rockafellar's condition (b), which is condition (a) read on the dual pair. It is the previous section's statement applied to f* and K*, with K** = K (neg_polarCone_neg_polarCone) and f** = f (Fenchel–Moreau) closing the circle; the bipolar is what makes this section layer C rather than layer A.

theorem Tdaf.ConvexAnalysis.exists_mem_eq_iInf_of_isExactSum_conj {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] {B : E →ₗ[ℝ] F →ₗ[ℝ] ℝ} [IsCompatiblePairing B] {f : E → EReal} {K : Set E} (hbi : biconj B f = f) (hex : IsExactSum B.flip (conj B f) (indicatorFn (-polarCone B K))) (hconv : Convex ℝ K) (hK : ∀ (a : ℝ), 0 < a → a • K = K) (hne : K.Nonempty) (hcl : IsClosed K) :
∃ x ∈ K, f x = ⨅ z ∈ K, f z

Attainment under condition (b): when f* and δ(·|K*) add exactly, the primal infimum is attained. biconj B f = f is taken as a hypothesis rather than derived, so that the statement stays free of a compatibility assumption on the F side.