Documentation

Books.ConvexAnalysis_Rockafellar_1970.Chapters.Chap03.section14_part1

def polarCone {E : Type u_1} [AddCommGroup E] [Module E] (K : Set E) :

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
Instances For
    def Set.barrierCone {E : Type u_1} [AddCommGroup E] [Module E] (C : Set E) :

    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
    Instances For
      noncomputable def erealIndicator {E : Type u_1} (K : Set E) :
      EEReal

      An EReal-valued indicator function: 0 on a set and off it.

      Equations
      Instances For
        noncomputable def fenchelConjugateBilin {E : Type u_1} [AddCommGroup E] [Module E] {F : Type u_2} [AddCommGroup F] [Module F] (p : E →ₗ[] F →ₗ[] ) (f : EEReal) :
        FEReal

        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
        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.

          theorem mem_polarCone_iff {E : Type u_1} [AddCommGroup E] [Module E] (K : Set E) (φ : Module.Dual E) :
          φ polarCone K xK, φ x 0

          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}.

          def nonposCone {E : Type u_1} [AddCommGroup E] [Module E] (φ : Module.Dual E) :

          The convex cone of points where a linear functional is nonpositive.

          Equations
          Instances For
            @[simp]
            theorem mem_nonposCone_iff {E : Type u_1} [AddCommGroup E] [Module E] (φ : Module.Dual E) (x : E) :
            x nonposCone φ φ x 0
            theorem hull_le_nonposCone_of_forall_range {E : Type u_1} [AddCommGroup E] [Module E] {I : Type u_2} (a : IE) (φ : Module.Dual E) (h : ∀ (i : I), φ (a i) 0) :

            If a linear functional is nonpositive on a generating set, it is nonpositive on the cone hull.

            theorem le_zero_on_hull_of_le_zero_on_generators {E : Type u_1} [AddCommGroup E] [Module E] {I : Type u_2} (a : IE) (φ : Module.Dual E) (h : ∀ (i : I), φ (a i) 0) (x : E) :
            x (ConvexCone.hull (Set.range a))φ x 0

            If a linear functional is nonpositive on each generator a i, it is nonpositive on the hull.

            theorem polarCone_convexConeGenerated_range_eq {E : Type u_1} [AddCommGroup E] [Module E] {I : Type u_2} [Nonempty I] (a : IE) :
            polarCone (Set.insert 0 (ConvexCone.hull (Set.range a))) = {φ : Module.Dual E | ∀ (i : I), φ (a i) 0}

            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}.

            theorem mem_polarCone_polar_iff {E : Type u_1} [AddCommGroup E] [Module E] (K : Set E) (x : E) :
            x PointedCone.dual (-LinearMap.applyₗ).flip (polarCone K) ∀ (φ : Module.Dual E), (∀ yK, φ y 0)φ x 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.

            noncomputable def polar {E : Type u_1} [AddCommGroup E] [Module E] (C : Set E) :

            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
            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.

              theorem mem_polar_iff {E : Type u_1} [AddCommGroup E] [Module E] {C : Set E} {φ : Module.Dual E} :
              φ polar C xC, φ x 1

              Text 14.0.5 (membership form): x★ ∈ C^∘ iff ⟪x, x★⟫ ≤ 1 for all x ∈ C.

              theorem section14_le_one_of_mem_polar {E : Type u_1} [AddCommGroup E] [Module E] {C : Set E} {φ : Module.Dual E} ( : φ polar C) (x : E) :
              x Cφ x 1

              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.

              theorem section14_fenchelConjugate_gauge_eq_zero_of_mem_polar {E : Type u_1} [AddCommGroup E] [Module E] {C : Set E} (hCabs : Absorbent C) {φ : Module.Dual E} ( : φ polar C) :
              fenchelConjugateBilin LinearMap.applyₗ (fun (x : E) => (gauge C x)) φ = 0

              If φ ∈ polar C and C is absorbent, then fenchelConjugateBilin (eval) (gauge C) φ = 0.

              theorem section14_fenchelConjugate_gauge_eq_top_of_not_mem_polar {E : Type u_1} [AddCommGroup E] [Module E] {C : Set E} {φ : Module.Dual E} ( : φpolar C) :
              fenchelConjugateBilin LinearMap.applyₗ (fun (x : E) => (gauge C x)) φ =

              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.

              theorem section14_polarCone_eq_iInter {E : Type u_1} [AddCommGroup E] [Module E] (K : Set E) :
              polarCone K = xK, {φ : Module.Dual E | φ x 0}

              polarCone K is an intersection of pointwise half-spaces.

              polarCone is closed in the weak topology on Module.Dual.

              polarCone is convex (as a subset of the dual space).

              theorem section14_zero_mem_polarCone {E : Type u_1} [AddCommGroup E] [Module E] (K : Set E) :

              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.

              theorem section14_polarCone_antitone {E : Type u_1} [AddCommGroup E] [Module E] {A B : Set E} (hAB : A B) :

              polarCone is order-reversing: enlarging the set shrinks its polar cone.

              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.

              def normalConeAtOrigin {E : Type u_1} [AddCommGroup E] [Module E] (C : Set E) :

              The normal cone to a set C at the origin, modeled in the dual space: N(0 | C).

              Equations
              Instances For

                The normal cone to a set C in the dual space at the origin, modeled in the primal space: N(0 | C).

                Equations
                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.

                  theorem section14_mem_neg_nonnegOrthant_iff_coord_nonpos (n : ) (y : EuclideanSpace (Fin n)) :
                  y -{x : EuclideanSpace (Fin n) | ∀ (i : Fin n), 0 x.ofLp i} ∀ (i : Fin n), y.ofLp i 0

                  Membership in the negation of the nonnegative orthant is coordinatewise nonpositivity.

                  theorem section14_inner_nonpos_of_coords_nonneg_nonpos (n : ) (x y : EuclideanSpace (Fin n)) (hx : ∀ (i : Fin n), 0 x.ofLp i) (hy : ∀ (i : Fin n), y.ofLp i 0) :
                  inner x y 0

                  If x has nonnegative coordinates and y has nonpositive coordinates, then ⟪x, y⟫ ≤ 0.

                  theorem polarCone_nonnegOrthant_eq_neg (n : ) :
                  (PointedCone.dual (-innerₗ (EuclideanSpace (Fin n))) {x : EuclideanSpace (Fin n) | ∀ (i : Fin n), 0 x.ofLp i}) = -{x : EuclideanSpace (Fin n) | ∀ (i : Fin n), 0 x.ofLp i}

                  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.

                  theorem polar_antitone_of_subset {E : Type u_1} [AddCommGroup E] [Module E] [TopologicalSpace E] {C₁ C₂ : Set E} (hC : C₁ C₂) :
                  polar C₂ polar C₁

                  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.

                  theorem section14_single_one_mem_subprobabilitySimplex (n : ) (j : Fin n) :
                  EuclideanSpace.single j 1 {x : EuclideanSpace (Fin n) | (∀ (j : Fin n), 0 x.ofLp j) j : Fin n, x.ofLp j 1}

                  Each coordinate vector e_j belongs to the subprobability simplex {x | x ≥ 0, ∑ x ≤ 1}.

                  theorem section14_le_one_of_forall_single_le_one_and_mem_C₁ {n : } (φ : Module.Dual (EuclideanSpace (Fin n))) (x : EuclideanSpace (Fin n)) ( : ∀ (j : Fin n), φ (EuclideanSpace.single j 1) 1) (hxnonneg : ∀ (j : Fin n), 0 x.ofLp j) (hxsum : j : Fin n, x.ofLp j 1) :
                  φ x 1

                  If φ is bounded by 1 on all coordinate vectors, then it is bounded by 1 on C₁.

                  theorem polar_subprobabilitySimplex_eq (n : ) :
                  have C₁ := {x : EuclideanSpace (Fin n) | (∀ (j : Fin n), 0 x.ofLp j) j : Fin n, x.ofLp j 1}; polar C₁ = {φ : Module.Dual (EuclideanSpace (Fin n)) | ∀ (j : Fin n), φ (EuclideanSpace.single j 1) 1}

                  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.