Documentation

Tdaf.Analysis.Convex.Recession.Cone

Recession cones and lineality spaces #

The recession cone 0⁺C of a set C collects the directions in which C recedes: the y such that every half-line {x + a • y | a ≥ 0} issuing from a point of C stays inside C. The lineality space is the largest subspace it contains, 0⁺C ∩ (-0⁺C), the directions in which C is linear. Most of the theory is algebraic; closedness of 0⁺C and the limit descriptions need only a real topological vector space, and finite dimensionality enters only for boundedness.

Main definitions #

Main results #

Implementation notes #

Mathlib's asymptoticCone ℝ C is not 0⁺C: it is always closed and is empty for C = ∅, and what it computes is 0⁺(cl C) (recessionCone_closure_eq_asymptoticCone; the two agree for nonempty closed convex sets). 0⁺C itself is algebraic, and is used where there is no topology.

References #

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

The definitions and their algebraic structure #

The recession cone 0⁺C: the directions in which C recedes.

y ∈ 0⁺C when every half-line {x + a • y | a ≥ 0} issuing from a point x of C is contained in C. The classical definition excludes y = 0, which has no direction; including it is what makes 0⁺C a cone.

Equations
Instances For
    theorem Tdaf.ConvexAnalysis.mem_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {y : E} :
    y ∈ recessionCone C ↔ ∀ x ∈ C, ∀ (a : ℝ), 0 ≤ a → x + a • y ∈ C

    Membership in the recession cone, unfolded.

    theorem Tdaf.ConvexAnalysis.add_smul_mem_of_mem_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {x y : E} {a : ℝ} (hy : y ∈ recessionCone C) (hx : x ∈ C) (ha : 0 ≤ a) :
    x + a • y ∈ C

    The defining property of a direction of recession.

    theorem Tdaf.ConvexAnalysis.add_mem_of_mem_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {x y : E} (hy : y ∈ recessionCone C) (hx : x ∈ C) :
    x + y ∈ C

    A direction of recession may be added to any point of C.

    theorem Tdaf.ConvexAnalysis.smul_mem_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {y : E} {a : ℝ} (ha : 0 ≤ a) (hy : y ∈ recessionCone C) :
    theorem Tdaf.ConvexAnalysis.add_mem_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {y z : E} (hy : y ∈ recessionCone C) (hz : z ∈ recessionCone C) :

    0⁺C is a convex cone containing the origin, bundled as a Mathlib PointedCone. No hypothesis on C is needed; convexity enters only in recessionCone_eq_add_subset, the description of 0⁺C by a single step.

    Equations
    Instances For
      @[simp]

      Every direction recedes from the empty set, vacuously.

      theorem Tdaf.ConvexAnalysis.recessionCone_eq_iInter {E : Type u_1} [AddCommGroup E] [Module ℝ E] (C : Set E) :
      recessionCone C = ⋂ x ∈ C, ⋂ a ∈ Set.Ici 0, (fun (y : E) => x + a • y) ⁻¹' C

      The recession cone as an intersection of preimages of C. This is what makes it closed whenever C is; see isClosed_recessionCone. For a > 0 the a-th preimage is a⁻¹ • (C - x), which is the form Rockafellar's argument uses.

      theorem Tdaf.ConvexAnalysis.iInter_recessionCone_subset {E : Type u_1} [AddCommGroup E] [Module ℝ E] {ι : Sort u_2} (C : ι → Set E) :
      ⋂ (i : ι), recessionCone (C i) ⊆ recessionCone (⋂ (i : ι), C i)

      Directions of recession of every member of a family recede from the intersection. The reverse inclusion needs closedness and convexity; it is recessionCone_iInter.

      theorem Tdaf.ConvexAnalysis.mem_recessionCone_iff_forall_add_mem {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {y : E} (hC : Convex ℝ C) :
      y ∈ recessionCone C ↔ ∀ x ∈ C, x + y ∈ C

      For a convex set it is enough to test the recession condition at a = 1.

      theorem Tdaf.ConvexAnalysis.add_singleton_subset_iff_forall {E : Type u_1} [AddCommGroup E] (C : Set E) (y : E) :
      C + {y} ⊆ C ↔ ∀ x ∈ C, x + y ∈ C

      The condition C + y ⊆ C, spelled out.

      theorem Tdaf.ConvexAnalysis.recessionCone_eq_add_subset {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} (hC : Convex ℝ C) :
      recessionCone C = {y : E | C + {y} ⊆ C}

      The recession cone of a convex set is the set of y with C + y ⊆ C.

      The lineality space of C: the directions in which C is linear.

      Equations
      Instances For
        noncomputable def Tdaf.ConvexAnalysis.linealitySubmodule {E : Type u_1} [AddCommGroup E] [Module ℝ E] (C : Set E) :

        The lineality space is a subspace, bundled as a Submodule ℝ E. It is Mathlib's PointedCone.lineal of recessionPointedCone.

        Equations
        Instances For

          The lineality space is the largest subspace inside 0⁺C.

          The lineality space of a convex set consists of the y with C + y = C, in contrast with C + y ⊆ C for the recession cone.

          theorem Tdaf.ConvexAnalysis.eq_add_inter_of_isCompl_of_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {N M : Submodule ℝ E} (hN : ↑N ⊆ linealitySpace C) (h : IsCompl N M) :
          C = ↑N + C ∩ ↑M

          The direct-sum decomposition, for an arbitrary subspace N of the lineality space: if M is a complement of N, then C = N + (C ∩ M). Only N ⊆ lin C is used, and that extra room is what the closed-image theorem needs, where the relevant subspace is lin C ∩ ker A.

          The direct-sum decomposition: if L' is any complement of the lineality space L of C, then C = L + (C ∩ L'). The classical statement takes L' = Lᗮ in an inner-product space; that is the special case.

          theorem Tdaf.ConvexAnalysis.convex_preimage_affine_smul {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} (hC : Convex ℝ C) (x : E) (c : ℝ) :
          Convex ℝ {z : E | x + c • z ∈ C}

          Convexity is preserved by the change of variables z ↦ x + c • z.

          theorem Tdaf.ConvexAnalysis.recessionCone_preimage_affine {E : Type u_1} [AddCommGroup E] [Module ℝ E] {c : ℝ} (hc : 0 < c) (x : E) (C : Set E) :

          The recession cone is invariant under z ↦ x + c • z for c > 0. Directions of recession do not see translations, and positive rescaling permutes the rays of a cone. This is the change of variables that turns "C recedes in the direction v" into a decreasing family of sets.

          noncomputable def Tdaf.ConvexAnalysis.lineality {E : Type u_1} [AddCommGroup E] [Module ℝ E] (C : Set E) :

          The lineality of C: the dimension of its lineality space.

          Equations
          Instances For

            Affine sets and systems of weak linear inequalities #

            @[simp]

            A subspace is its own recession cone.

            @[simp]

            A pointed convex cone is its own recession cone. This is what makes the sum rule for cones a special case of the sum rule for sets: for cones the recession hypothesis is a hypothesis about the cones themselves.

            The recession cone of a nonempty affine set is the subspace parallel to it.

            The lineality space of a nonempty affine set is the subspace parallel to it.

            theorem Tdaf.ConvexAnalysis.recessionCone_setOf_forall_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] {ι : Type u_2} (b : ι → E →ₗ[ℝ] ℝ) (β : ι → ℝ) (h : {x : E | ∀ (i : ι), β i ≤ (b i) x}.Nonempty) :
            recessionCone {x : E | ∀ (i : ι), β i ≤ (b i) x} = {y : E | ∀ (i : ι), 0 ≤ (b i) y}

            The recession cone of the solution set of a system of weak linear inequalities is the solution set of the corresponding homogeneous system.

            theorem Tdaf.ConvexAnalysis.linealitySpace_setOf_forall_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] {ι : Type u_2} (b : ι → E →ₗ[ℝ] ℝ) (β : ι → ℝ) (h : {x : E | ∀ (i : ι), β i ≤ (b i) x}.Nonempty) :
            linealitySpace {x : E | ∀ (i : ι), β i ≤ (b i) x} = {y : E | ∀ (i : ι), (b i) y = 0}

            The lineality space of the solution set of a system of weak linear inequalities is given by the corresponding system of equations.

            Products, and preimages under a linear map #

            theorem Tdaf.ConvexAnalysis.recessionCone_prod {E : Type u_1} {F : Type u_2} [AddCommGroup E] [Module ℝ E] [AddCommGroup F] [Module ℝ F] {C : Set E} {D : Set F} (hC : C.Nonempty) (hD : D.Nonempty) :

            The recession cone of a product is the product of the recession cones. Both factors must be nonempty: 0⁺(C ×ˢ ∅) = 0⁺ ∅ = univ, which is not 0⁺C ×ˢ univ unless 0⁺C is everything.

            The lineality space of a product is the product of the lineality spaces.

            theorem Tdaf.ConvexAnalysis.pi_recessionCone_subset {ι : Type u_1} {E : ι → Type u_2} [(i : ι) → AddCommGroup (E i)] [(i : ι) → Module ℝ (E i)] (s : Set ι) (C : (i : ι) → Set (E i)) :
            (s.pi fun (i : ι) => recessionCone (C i)) ⊆ recessionCone (s.pi C)

            A family of recession directions is a recession direction of the product set. Unconditional, and the Set.pi form of prod_recessionCone_subset.

            theorem Tdaf.ConvexAnalysis.recessionCone_pi {ι : Type u_1} {E : ι → Type u_2} [(i : ι) → AddCommGroup (E i)] [(i : ι) → Module ℝ (E i)] {s : Set ι} {C : (i : ι) → Set (E i)} (hC : (s.pi C).Nonempty) :
            recessionCone (s.pi C) = s.pi fun (i : ι) => recessionCone (C i)

            The recession cone of a product set is the product of the recession cones. The Set.pi form of recessionCone_prod; the nonemptiness hypothesis is there for the same reason, that testing one coordinate needs a witness in all the others.

            theorem Tdaf.ConvexAnalysis.linealitySpace_pi {ι : Type u_1} {E : ι → Type u_2} [(i : ι) → AddCommGroup (E i)] [(i : ι) → Module ℝ (E i)] {s : Set ι} {C : (i : ι) → Set (E i)} (hC : (s.pi C).Nonempty) :
            linealitySpace (s.pi C) = s.pi fun (i : ι) => linealitySpace (C i)

            The lineality space of a product set is the product of the lineality spaces.

            One inclusion of the preimage rule, valid with no hypothesis at all.

            Closedness, limits, and one-half-line criteria #

            The sequence (n+1)⁻¹ tends to 0. Mathlib states this as 1 / (n + 1).

            The closure of a pointed convex cone is its own recession cone. PointedCone.closure supplies the cone structure on cl K; recessionCone_coe_pointedCone then applies verbatim.

            The recession cone of a closed set is closed. No convexity, no nonemptiness and no local compactness are needed: by recessionCone_eq_iInter, 0⁺C is an intersection of preimages of C under the continuous maps y ↦ x + a • y.

            Directions of recession survive taking the closure. The reverse inclusion is false: for C = {(s, t) | s > 0, t > 0} ∪ {0} in ℝ², 0⁺(cl C) is the closed quadrant while 0⁺C is C itself.

            The sequence (n+1)⁻¹ • (x + (n+1) • y) converges to y: the witness for the easy half of the sequential description, and what makes one half-line enough.

            theorem Tdaf.ConvexAnalysis.mem_recessionCone_of_tendsto {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {C : Set E} {y : E} (hC : Convex ℝ C) (hC' : IsClosed C) {l : ℕ → ℝ} {u : ℕ → E} (hu : ∀ (n : ℕ), u n ∈ C) (hl : ∀ (n : ℕ), 0 < l n) (hl0 : Filter.Tendsto l Filter.atTop (nhds 0)) (hly : Filter.Tendsto (fun (n : ℕ) => l n • u n) Filter.atTop (nhds y)) :

            The hard half of the sequential description: a limit of lᵢ • xᵢ with xᵢ ∈ C and lᵢ ↓ 0 is a direction of recession of a closed convex C. Finite-dimensionality is not needed: (1 - a lᵢ) • x + (a lᵢ) • xᵢ lies in C once a lᵢ ≤ 1, and converges to x + a • y.

            theorem Tdaf.ConvexAnalysis.exists_tendsto_of_mem_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {C : Set E} {y : E} (hne : C.Nonempty) (hy : y ∈ recessionCone C) :
            ∃ (l : ℕ → ℝ) (u : ℕ → E), (∀ (n : ℕ), u n ∈ C) ∧ (∀ (n : ℕ), 0 < l n) ∧ Filter.Tendsto l Filter.atTop (nhds 0) ∧ Filter.Tendsto (fun (n : ℕ) => l n • u n) Filter.atTop (nhds y)

            The easy half: every direction of recession of a nonempty set is a limit of lᵢ • xᵢ with xᵢ ∈ C and lᵢ ↓ 0.

            theorem Tdaf.ConvexAnalysis.mem_recessionCone_iff_exists_tendsto {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {C : Set E} {y : E} (hC : Convex ℝ C) (hC' : IsClosed C) (hne : C.Nonempty) :
            y ∈ recessionCone C ↔ ∃ (l : ℕ → ℝ) (u : ℕ → E), (∀ (n : ℕ), u n ∈ C) ∧ (∀ (n : ℕ), 0 < l n) ∧ Filter.Tendsto l Filter.atTop (nhds 0) ∧ Filter.Tendsto (fun (n : ℕ) => l n • u n) Filter.atTop (nhds y)

            For a nonempty closed convex set, 0⁺C is exactly the set of limits of sequences lᵢ • xᵢ with xᵢ ∈ C and lᵢ ↓ 0.

            theorem Tdaf.ConvexAnalysis.mem_recessionCone_of_exists_ray {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {C : Set E} {y : E} (hC : Convex ℝ C) (hC' : IsClosed C) (h : ∃ (x : E), ∀ (a : ℝ), 0 ≤ a → x + a • y ∈ C) :

            One half-line is enough: if a closed convex set C contains even one half-line in the direction y, it contains every half-line in that direction issuing from a point of C.

            For a closed convex set containing the origin, 0⁺C = ⋂_{ε > 0} ε • C.

            theorem Tdaf.ConvexAnalysis.recessionCone_iInter {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {ι : Sort u_2} {C : ι → Set E} (hconv : ∀ (i : ι), Convex ℝ (C i)) (hclosed : ∀ (i : ι), IsClosed (C i)) (hne : (⋂ (i : ι), C i).Nonempty) :
            recessionCone (⋂ (i : ι), C i) = ⋂ (i : ι), recessionCone (C i)

            The recession cone of an intersection of closed convex sets with a common point is the intersection of the recession cones.

            theorem Tdaf.ConvexAnalysis.recessionCone_iInter₂ {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {ι : Sort u_2} {p : ι → Prop} {C : (i : ι) → p i → Set E} (hconv : ∀ (i : ι) (h : p i), Convex ℝ (C i h)) (hclosed : ∀ (i : ι) (h : p i), IsClosed (C i h)) (hne : (⋂ (i : ι), ⋂ (h : p i), C i h).Nonempty) :
            recessionCone (⋂ (i : ι), ⋂ (h : p i), C i h) = ⋂ (i : ι), ⋂ (h : p i), recessionCone (C i h)

            The same over a subfamily: the recession cone of ⋂ i ∈ s, C i is ⋂ i ∈ s, 0⁺Cᵢ. Stated with a bare predicate rather than a Set or a Finset, so that it applies to either spelling of the bounded intersection.

            The binary form: 0⁺(C ∩ D) = 0⁺C ∩ 0⁺D for closed convex sets that meet.

            A convex set with nonempty interior has the same directions of recession as its interior and as its closure. The classical statement uses the relative interior in place of interior.

            The bridge to Mathlib's asymptoticCone #

            Every direction of recession of a nonempty set lies in Mathlib's asymptoticCone.

            For a closed convex set, Mathlib's asymptoticCone is contained in the recession cone.

            For a nonempty closed convex set, 0⁺C is Mathlib's asymptoticCone ℝ C.

            In general Mathlib's asymptoticCone ℝ C is the recession cone of the closure of C — the "asymptotic cone" of the older literature.

            Preimages under a linear map #

            0⁺(A⁻¹ D) = A⁻¹ (0⁺D) for a closed convex D with nonempty preimage. Continuity of A is not needed — one half-line is enough inside D, not inside A ⁻¹' D — so the domain E carries no topology.

            Bounded sets and balls #

            A nonempty bounded set recedes in no direction. Neither closedness, nor convexity, nor finite-dimensionality is needed.

            The recession cone of a closed ball is trivial.

            theorem Tdaf.ConvexAnalysis.recessionCone_preimage_closedBall {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {G : Type u_2} [AddCommGroup G] [Module ℝ G] (A : G →ₗ[ℝ] E) (x : E) {ε : ℝ} (hε : 0 ≤ ε) (hne : (⇑A ⁻¹' Metric.closedBall x ε).Nonempty) :

            The recession cone of A ⁻¹' (closedBall x ε) is the kernel of A. This is the computation the closed-image theorem runs on, and it needs no topology on the domain.

            Boundedness #

            A nonempty closed convex set is bounded exactly when it recedes in no direction. This is the one place in this file where finite-dimensionality is used, and it enters through Mathlib's isBounded_iff_asymptoticCone_subset_singleton.

            Contrapositive form: an unbounded closed convex set recedes in some nonzero direction.

            A nonempty closed convex set is compact exactly when it recedes in no direction.

            If M ∩ C is nonempty and bounded for a closed convex C and an affine set M, then N ∩ C is bounded for every affine set N parallel to M.

            theorem Tdaf.ConvexAnalysis.exists_finset_iInter₂_recessionCone_eq_zero {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {ι : Type u_2} {C : ι → Set E} (hcl : ∀ (i : ι), IsClosed (C i)) (h : ⋂ (i : ι), recessionCone (C i) = {0}) :
            ∃ (S : Finset ι), ⋂ i ∈ S, recessionCone (C i) = {0}

            A family of closed sets whose recession cones meet only at the origin has a finite subfamily whose recession cones already meet only at the origin. Convexity is not used: 0⁺C is a closed cone, so the unit sphere is covered by the complements of finitely many of them.

            theorem Tdaf.ConvexAnalysis.iInter_recessionCone_eq_zero_iff_exists_isBounded {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {ι : Type u_2} {C : ι → Set E} (hconv : ∀ (i : ι), Convex ℝ (C i)) (hcl : ∀ (i : ι), IsClosed (C i)) (hne : ∀ (S : Finset ι), (⋂ i ∈ S, C i).Nonempty) :
            ⋂ (i : ι), recessionCone (C i) = {0} ↔ ∃ (S : Finset ι), Bornology.IsBounded (⋂ i ∈ S, C i)

            The recession hypothesis of Helly's theorem: for a family of closed convex sets every finite subfamily of which has a common point, having no common direction of recession holds if and only if some finite subfamily has a bounded intersection. Neither direction needs the recession cone of the whole intersection: ⇒ applies the boundedness criterion to a finite subfamily produced by compactness of the unit sphere, and ⇐ reads it backwards through the recession cone of an intersection.