Equations
Instances For
Text 14.0.1: The polar of a non-empty convex cone K is the set
Kᵒ = {x★ | ∀ x ∈ K, ⟪x, x★⟫ ≤ 0}.
In this formalization, we interpret x★ as a linear functional Module.Dual ℝ E
and the pairing ⟪x, x★⟫ as evaluation x★ x.
Equations
- polarCone K = ↑(PointedCone.dual (-LinearMap.applyₗ) K)
Instances For
The barrier cone of a set C is the set of all linear functionals φ that are bounded above
on C, i.e. there exists β with φ x ≤ β for every x ∈ C.
Equations
- C.barrierCone = {φ : Module.Dual ℝ E | ∃ (β : ℝ), ∀ x ∈ C, φ x ≤ β}
Instances For
The (Fenchel–Legendre) conjugate of an EReal-valued function with respect to a bilinear
pairing p, defined as sup_x (p x y - f x).
Equations
- fenchelConjugateBilin p f y = sSup (Set.range fun (x : E) => ↑((p x) y) - f x)
Instances For
Membership in the dual cone ProperCone.dual (-p) K is exactly the inequality
p x y ≤ 0 for all x ∈ K.
The Fenchel conjugate of the EReal-indicator of a cone is 0 at points in the dual cone.
The Fenchel conjugate of the EReal-indicator of a cone is ⊤ at points outside the dual
cone.
The Fenchel conjugate of the EReal-indicator of a proper cone is the indicator of the dual
cone.
Theorem 14.1: If K is a non-empty closed convex cone, then its polar Kᵒ is also a non-empty
closed convex cone and the bipolar identity Kᵒᵒ = K holds. Moreover, the indicator functions of
K and Kᵒ are Fenchel–Legendre conjugates of each other.
Membership in polarCone is exactly the pointwise inequality φ x ≤ 0 on the set.
For a submodule K, the polar cone coincides with the dual annihilator.
Text 14.0.2: If K is a subspace of ℝ^n, then its polar equals its orthogonal complement:
Kᵒ = Kᗮ = {x★ ∈ ℝ^n | ∀ x ∈ K, ⟪x, x★⟫ = 0}.
In this file we interpret Kᵒ as polarCone (K : Set E) (a subset of the dual space
Module.Dual ℝ E), and the orthogonal complement as the dual annihilator
K.dualAnnihilator = {x★ | ∀ x ∈ K, x★ x = 0}.
The convex cone of points where a linear functional is nonpositive.
Instances For
If a linear functional is nonpositive on a generating set, it is nonpositive on the cone hull.
If a linear functional is nonpositive on each generator a i, it is nonpositive on the hull.
Text 14.0.3: If K is the convex cone generated by a non-empty vector collection
{a_i | i ∈ I}, then K consists of all non-negative linear combinations of the a_i.
Consequently, the polar cone satisfies
Kᵒ = {x★ | ∀ x ∈ K, x★ x ≤ 0} = {x★ | ∀ i ∈ I, x★ (a i) ≤ 0}.
Membership in the polar of polarCone K, expressed as a pointwise inequality.
If a functional is nonpositive on K, then it is nonpositive on closure K.
The polar of polarCone K is contained in closure K for a nonempty convex cone K.
Text 14.0.4: The polar of Kᵒ is the closure of K, i.e. (Kᵒ)ᵒ = cl K.
Text 14.0.5: The polar of a non-empty convex set C is
C^∘ = {x★ | δ*(x★ | C) - 1 ≤ 0} = {x★ | ∀ x ∈ C, ⟪x, x★⟫ ≤ 1}.
Here we model δ*(x★ | C) as the Fenchel–Legendre conjugate of the EReal-indicator of C
with respect to the evaluation pairing.
Equations
- polar C = {φ : Module.Dual ℝ E | fenchelConjugateBilin LinearMap.applyₗ (erealIndicator C) φ ≤ 1}
Instances For
If fenchelConjugateBilin (eval) (erealIndicator C) φ ≤ 1, then φ is bounded above by 1 on C.
If φ is bounded above by 1 on C, then fenchelConjugateBilin (eval) (erealIndicator C) φ ≤ 1.
Text 14.0.5 (membership form): x★ ∈ C^∘ iff ⟪x, x★⟫ ≤ 1 for all x ∈ C.
If φ ∈ polar C, then φ is bounded above by 1 on C.
This is a convenient lemma for Text 14.0.6 that avoids unfolding mem_polar_iff.
If φ ∈ polar C and C is absorbent, then fenchelConjugateBilin (eval) (gauge C) φ = 0.
If φ ∉ polar C, then fenchelConjugateBilin (eval) (gauge C) φ = ⊤.
The Fenchel conjugate of the (real-valued) gauge is the EReal indicator of polar C,
assuming C is absorbent.
Text 14.0.6: Let C be a non-empty convex set. Then the closure cl γ(·|C) of the gauge
equals the support function δ*(·|C^∘) of the polar set.
In this file we model γ(·|C) as mathlib's gauge C, and we model the closure operation cl
as the Fenchel–Legendre biconjugate with respect to the evaluation pairing. We model
δ*(·|C^∘) as the Fenchel–Legendre conjugate of the EReal-indicator of polar C
with respect to the flipped evaluation pairing.
Note: mathlib's gauge C is real-valued, so to match the intended convex-analytic gauge (which
may take the value ⊤ when C does not absorb directions), we explicitly assume C is
absorbent.
polarCone is closed in the weak topology on Module.Dual.
The zero functional always belongs to the polar cone.
Text 14.0.7. Let K be a non-empty convex cone in ℝ^n. Then the polar cone Kᵒ defined in
Text 14.0.1 is a closed convex cone containing the origin.
In this file, Kᵒ is modeled as polarCone (E := E) (K : Set E), a subset of the dual space
Module.Dual ℝ E.
If every linear functional is continuous (e.g. in finite dimension), then polar membership extends from a set to its topological closure.
Text 14.0.8. Let K be a non-empty convex cone in ℝ^n. Then the polar of cl K
coincides with the polar of K, i.e. (cl K)^∘ = K^∘. In this file, we express this using the
polar cone polarCone (Text 14.0.1): polarCone (closure K) = polarCone K.
The normal cone to a set C at the origin, modeled in the dual space: N(0 | C).
Equations
- normalConeAtOrigin C = {φ : Module.Dual ℝ E | ∀ x ∈ C, φ x ≤ 0}
Instances For
The normal cone to a set C in the dual space at the origin, modeled in the primal space:
N(0 | C).
Instances For
The polar cone agrees with the normal cone to the set at the origin (in the dual space).
The normal cone at the origin in the primal agrees with the dual cone defined via evaluation.
Text 14.0.9. Let K be a non-empty closed convex cone in ℝ^n. Then the polar cone K^∘
consists of all vectors normal to K at the origin, and conversely K consists of all vectors
normal to K^∘ at the origin. Equivalently, writing N(0 | C) for the normal cone of C at 0,
one has K^∘ = N(0 | K) and K = N(0 | K^∘).
In this file, K^∘ is modeled by polarCone (E := E) (K : Set E). The normal cone at 0 is
modeled by normalConeAtOrigin (in the dual) and normalConeAtOriginDual (in the primal).
Unpack membership in the dual cone w.r.t. the pairing -(innerₗ _).
A vector in the dual cone of the nonnegative orthant has all coordinates nonpositive.
Text 14.0.10. Let K ⊆ ℝ^n be the non-negative orthant
K = {x = (ξ₁, …, ξₙ) | ξⱼ ≥ 0 for j = 1, …, n}. Then the polar cone of K is the non-positive
orthant, i.e. K^∘ = -K.
In Lean, we model ℝ^n as EuclideanSpace ℝ (Fin n) and the polar cone as the dual cone with
respect to the pairing -(innerₗ _), so that y is in the polar cone of K iff ⟪x, y⟫ ≤ 0 for
all x ∈ K.
Text 14.0.11. Polarity is order-inverting: if C₁ ⊆ C₂ are closed convex sets containing the
origin, then their polars satisfy C₁^∘ ⊇ C₂^∘.
In this file, C^∘ is modeled as polar (E := E) C.
A linear functional on ℝ^n is determined by its values on the coordinate vectors.
If φ is bounded by 1 on all coordinate vectors, then it is bounded by 1 on C₁.
Text 14.0.12 (Example). Define
C₁ = {x = (ξ₁, …, ξₙ) | ξⱼ ≥ 0, ξ₁ + ⋯ + ξₙ ≤ 1}.
Then its polar is
C₁^∘ = {x★ = (ξ₁★, …, ξₙ★) | ξⱼ★ ≤ 1 for j = 1, …, n}.
In this file, C^∘ is modeled as polar (E := E) C : Set (Module.Dual ℝ E). For ℝ^n we use
E = EuclideanSpace ℝ (Fin n), and we express the coordinate inequalities as
φ (Pi.single j 1) ≤ 1.