Documentation

Tdaf.Analysis.Convex.Recession.Function

Recession functions #

The recession function f0⁺ of f : E → EReal has as its epigraph the recession cone of the epigraph of f: epi (f0⁺) = 0⁺(epi f) (epi_recessionFn, for every f). It says how fast f can grow in each direction: (f0⁺) y ≤ ν means f (x + a • y) ≤ f x + a * ν for all x, a ≥ 0. The directions with (f0⁺) y ≤ 0 form the recession cone of f, those with (f0⁺) (±y) ≤ 0 its constancy space, and those with (f0⁺) (-y) = -(f0⁺) y its lineality space.

Most of the theory needs only a real vector space with no topology; closedness of epi f enters exactly where the answer must not depend on the base point x, and is always carried as IsClosed (epi f), never as ClosedFn f, which also collapses improper functions to ⊥.

Main definitions #

Main results #

References #

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

The recession function #

noncomputable def Tdaf.ConvexAnalysis.recessionFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] (f : E → EReal) :
E → EReal

The recession function f0⁺ of f: the function whose epigraph is the recession cone of the epigraph of f. It is defined as ofEpi of that cone, which is all one can write down before knowing the cone is an epigraph; epi_recessionFn then proves epi (f0⁺) = 0⁺(epi f).

Equations
Instances For
    theorem Tdaf.ConvexAnalysis.mk_mem_recessionCone_epi {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} :
    (y, ν) ∈ recessionCone (epi f) ↔ ∀ (x : E) (μ : ℝ), f x ≤ ↑μ → ∀ (a : ℝ), 0 ≤ a → f (x + a • y) ≤ ↑(μ + a * ν)

    The recession condition on (y, ν), unfolded against the epigraph: (y, ν) recedes from epi f exactly when f (x + a • y) ≤ μ + a * ν whenever f x ≤ μ and a ≥ 0.

    theorem Tdaf.ConvexAnalysis.mk_mem_recessionCone_epi_iff {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} :
    (y, ν) ∈ recessionCone (epi f) ↔ ∀ (x : E) (a : ℝ), 0 ≤ a → f (x + a • y) ≤ f x + ↑(a * ν)

    The recession condition on (y, ν), in EReal arithmetic: f (x + a • y) ≤ f x + a * ν for every x and every a ≥ 0. Equivalent to the epigraph form even at improper values, because ⊥ + (r : ℝ) = ⊥ matches "f x ≤ μ for every real μ".

    theorem Tdaf.ConvexAnalysis.mk_mem_recessionCone_epi_of_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} (h : (y, ν) ∈ recessionCone (epi f)) {ρ : ℝ} (hνρ : ν ≤ ρ) :

    A vertical section of 0⁺(epi f) is upward closed: this is one of the two halves of IsEpiLike.

    The recession cone of an epigraph is an epigraph, with no hypothesis on f whatsoever.

    Vertical sections are upward closed because μ + a * ν grows with ν, and they are closed from below because f (x + a • y) ≤ μ + a * ρ for every ρ > ν forces f (x + a • y) ≤ μ + a * ν. Neither half needs epi f to be closed or convex.

    @[simp]

    The defining property of the recession function: its epigraph is the recession cone of the epigraph. Rockafellar takes this as the definition; here it is a theorem, and it carries no hypothesis on f.

    theorem Tdaf.ConvexAnalysis.recessionFn_le_coe_iff {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} :

    The ≤-characterisation of f0⁺ against a real bound, in epigraph form.

    The ≤-characterisation of f0⁺ against an arbitrary function: f0⁺ is the greatest function whose epigraph contains 0⁺(epi f).

    theorem Tdaf.ConvexAnalysis.recessionFn_le_coe_iff_forall {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} :
    recessionFn f y ≤ ↑ν ↔ ∀ (x : E) (a : ℝ), 0 ≤ a → f (x + a • y) ≤ f x + ↑(a * ν)

    The pointwise ≤-characterisation in EReal arithmetic.

    theorem Tdaf.ConvexAnalysis.recessionFn_le_coe_iff_of_convexFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} (hf : ConvexFn f) :
    recessionFn f y ≤ ↑ν ↔ ∀ (x : E), f (x + y) ≤ f x + ↑ν

    For a convex f it is enough to test the recession inequality at a = 1: a convex set recedes in a direction as soon as it is stable under one step in it.

    f0⁺ is a positively homogeneous convex function #

    theorem Tdaf.ConvexAnalysis.smul_recessionCone {E : Type u_1} [AddCommGroup E] [Module ℝ E] {a : ℝ} (ha : 0 < a) (C : Set E) :

    A positive multiple of a recession cone is that recession cone: 0⁺C is a cone. This is the scaling half of recessionPointedCone, in the a • s = s form that posHomogeneous_iff_isCone_epi asks for.

    The recession function is positively homogeneous. No hypothesis on f is needed, because 0⁺(epi f) is a cone for every f.

    The recession function is convex. Again no hypothesis on f is needed: 0⁺C is convex for every C, convex or not.

    @[simp]

    epi (f0⁺) bundled as a cone. The two theorems above would give it as a ConvexCone ℝ (E × ℝ) via PosHomogeneous.epiCone, but recessionPointedCone already carries the same set as a PointedCone ℝ (E × ℝ), with no hypothesis, so that is the bundling recorded here.

    f0⁺ is nonpositive at the origin, because 0 recedes from every set.

    theorem Tdaf.ConvexAnalysis.recessionFn_ne_bot {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hp : Proper f) (y : E) :

    f0⁺ never takes the value -∞ when f is proper.

    Properness is needed on both counts: for f ≡ +∞ the epigraph is empty, 0⁺∅ is everything and f0⁺ ≡ -∞; and if f takes the value -∞ somewhere, a vertical section of 0⁺(epi f) can be all of ℝ.

    @[simp]
    theorem Tdaf.ConvexAnalysis.recessionFn_apply_zero {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hp : Proper f) :

    The recession function of a proper convex function is proper.

    The difference formula and the least-function property #

    theorem Tdaf.ConvexAnalysis.forall_le_add_coe_iff {E : Type u_1} [AddCommGroup E] {f : E → EReal} {y : E} (hbot : ∀ (x : E), f x ≠ ⊥) {r : ℝ} :
    (∀ (x : E), f (x + y) ≤ f x + ↑r) ↔ ∀ x ∈ dom f, f (x + y) - f x ≤ ↑r

    Rearranging f (x + y) ≤ f x + r as a difference quotient. The ⊥-freeness hypothesis is what makes f x real on dom f, and the restriction to dom f is what keeps ⊤ + r = ⊤ from being read as a constraint.

    theorem Tdaf.ConvexAnalysis.recessionFn_apply_eq_iSup_sub {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hf : ConvexFn f) (hbot : ∀ (x : E), f x ≠ ⊥) (y : E) :
    recessionFn f y = ⨆ x ∈ dom f, f (x + y) - f x

    The difference formula

    (f0⁺) y = sup {f (x + y) - f x | x ∈ dom f}.

    Convexity enters by letting the recession condition be tested at a = 1 only, and ∀ x, f x ≠ ⊥ is what makes the difference meaningful. Properness is not needed: for f ≡ +∞ both sides are -∞, the supremum because dom f = ∅.

    theorem Tdaf.ConvexAnalysis.le_add_recessionFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hf : ConvexFn f) (hp : Proper f) (x y : E) :
    f (x + y) ≤ f x + recessionFn f y

    The inequality f (x + y) ≤ f x + (f0⁺) y: f0⁺ is one such bounding function.

    theorem Tdaf.ConvexAnalysis.recessionFn_isLeast {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hf : ConvexFn f) (hp : Proper f) :
    IsLeast {h : E → EReal | ∀ (x z : E), f z ≤ f x + h (z - x)} (recessionFn f)

    f0⁺ is the least function h for which f satisfies the global inequality f z ≤ f x + h (z - x) at every pair of points.

    Directions of recession #

    theorem Tdaf.ConvexAnalysis.add_smul_le_of_recessionFn_nonpos {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} (h : recessionFn f y ≤ 0) (x : E) {a : ℝ} (ha : 0 ≤ a) :
    f (x + a • y) ≤ f x

    The recession inequality at ν = 0: (f0⁺) y ≤ 0 means that moving in the direction y never increases f.

    theorem Tdaf.ConvexAnalysis.recessionFn_nonpos_iff {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} :
    recessionFn f y ≤ 0 ↔ ∀ (x : E) (a : ℝ), 0 ≤ a → f (x + a • y) ≤ f x
    theorem Tdaf.ConvexAnalysis.forall_antitone_iff_recessionFn_nonpos {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} :
    (∀ (x : E), Antitone fun (a : ℝ) => f (x + a • y)) ↔ recessionFn f y ≤ 0

    f (x + a • y) is a nonincreasing function of a for every x exactly when (f0⁺) y ≤ 0.

    This half needs no hypothesis on f at all, neither convexity nor properness; the usual statement carries "proper convex" because it is packaged with the two implications below.

    theorem Tdaf.ConvexAnalysis.antitone_along_of_liminf_lt_top {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hf : ConvexFn f) (x y : E) (h : Filter.liminf (fun (a : ℝ) => f (x + a • y)) Filter.atTop < ⊤) :
    Antitone fun (a : ℝ) => f (x + a • y)

    A convex function that fails to blow up along one half-line is nonincreasing along the whole line: a finite liminf of f (x + a • y) as a → ∞ makes a ↦ f (x + a • y) antitone.

    The proof is elementary, and in particular needs no closure, no relative interiors and no finite dimension: for λ₁ < λ₂ and a real bound μ on f (x + λ₁ • y), write x + λ₂ • y as a convex combination of x + λ₁ • y and x + λ • y for a very large λ with f (x + λ • y) < α; the weight on the second point tends to 0, so convexity gives f (x + λ₂ • y) ≤ μ in the limit.

    theorem Tdaf.ConvexAnalysis.forall_eq_iff_recessionFn_nonpos {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} :
    (∀ (x : E) (a : ℝ), f (x + a • y) = f x) ↔ recessionFn f y ≤ 0 ∧ recessionFn f (-y) ≤ 0

    f is constant along every line in the direction y exactly when both (f0⁺) y ≤ 0 and (f0⁺) (-y) ≤ 0.

    theorem Tdaf.ConvexAnalysis.ConvexFn.eq_of_forall_le_along_line {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hf : ConvexFn f) {x z : E} {α : ℝ} (h : ∀ (a : ℝ), f (x + a • (z - x)) ≤ ↑α) :
    f z = f x

    Along a single line: a convex function bounded above on a whole line is constant on it.

    theorem Tdaf.ConvexAnalysis.ConvexFn.eq_of_le_on_affineSubspace {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} (hf : ConvexFn f) {M : AffineSubspace ℝ E} {α : ℝ} (hM : ∀ w ∈ M, f w ≤ ↑α) {x z : E} (hx : x ∈ M) (hz : z ∈ M) :
    f z = f x

    A convex function is constant on any affine set on which it is bounded above.

    It follows from the line version above, applied along the line through any two points of M, so no closure and no relative interiors are needed. Finiteness of f on M is not needed either, since the two inequalities hold whatever value f takes.

    The recession cone, constancy space and lineality space of a function #

    The recession cone of f — not to be confused with the recession cone of epi f. It is the horizontal slice {y | (y, 0) ∈ 0⁺(epi f)} of the latter, and it collects the directions in which f recedes.

    Equations
    Instances For
      @[simp]

      The recession cone of f is the horizontal slice of the recession cone of epi f.

      The recession cone of f is a convex cone containing the origin, bundled as a PointedCone ℝ E. No hypothesis on f is needed.

      Equations
      Instances For

        The constancy space of f: the largest subspace inside the recession cone of f, which collects the directions in which f is constant.

        Equations
        Instances For
          theorem Tdaf.ConvexAnalysis.mem_constancySpace_iff_forall_eq {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} :
          y ∈ constancySpace f ↔ ∀ (x : E) (a : ℝ), f (x + a • y) = f x

          The constancy space is exactly the set of directions along which f is constant.

          noncomputable def Tdaf.ConvexAnalysis.constancySubmodule {E : Type u_1} [AddCommGroup E] [Module ℝ E] (f : E → EReal) :

          The constancy space is the lineality space of the recession cone of f, hence a subspace, bundled as a Submodule ℝ E.

          Equations
          Instances For

            The constancy space is the largest subspace inside the recession cone of f.

            Directions in which f is affine #

            theorem Tdaf.ConvexAnalysis.zero_le_add_of_recessionFn_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} (hp : Proper f) {ν ρ : ℝ} (h1 : recessionFn f y ≤ ↑ν) (h2 : recessionFn f (-y) ≤ ↑ρ) :
            0 ≤ ν + ρ

            Two opposite directions of recession of a proper f have nonnegative total slope: adding the two recession directions gives (0, ν + ρ) ∈ 0⁺(epi f), and (f0⁺) 0 = 0.

            theorem Tdaf.ConvexAnalysis.le_recessionFn_of_neg_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} (hp : Proper f) {ν : ℝ} (h : recessionFn f (-y) ≤ ↑(-ν)) :
            ↑ν ≤ recessionFn f y

            A bound on (f0⁺) (-y) is a lower bound on (f0⁺) y.

            theorem Tdaf.ConvexAnalysis.mk_mem_linealitySpace_epi_iff {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} (hp : Proper f) {ν : ℝ} :
            (y, ν) ∈ linealitySpace (epi f) ↔ recessionFn f y = ↑ν ∧ recessionFn f (-y) = ↑(-ν)

            (y, ν) lies in the lineality space of epi f exactly when (f0⁺) y = ν and (f0⁺) (-y) = -ν. Properness is what upgrades the inequalities (f0⁺) y ≤ ν, (f0⁺) (-y) ≤ -ν to equalities.

            theorem Tdaf.ConvexAnalysis.eq_add_of_mk_mem_linealitySpace_epi {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} (h : (y, ν) ∈ linealitySpace (epi f)) (x : E) {a : ℝ} (ha : 0 ≤ a) :
            f (x + a • y) = f x + ↑(a * ν)

            If (y, ν) lies in the lineality space of epi f, then f (x + a • y) = f x + a * ν on the forward half-line a ≥ 0.

            theorem Tdaf.ConvexAnalysis.forall_eq_add_iff_mk_mem_linealitySpace_epi {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} :
            (∀ (x : E) (a : ℝ), f (x + a • y) = f x + ↑(a * ν)) ↔ (y, ν) ∈ linealitySpace (epi f)

            f is affine with slope ν along the whole line through every x in the direction y exactly when (y, ν) lies in the lineality space of epi f. No hypothesis on f is needed for this half.

            theorem Tdaf.ConvexAnalysis.forall_eq_add_iff_recessionFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} {ν : ℝ} (hp : Proper f) :
            (∀ (x : E) (a : ℝ), f (x + a • y) = f x + ↑(a * ν)) ↔ recessionFn f y = ↑ν ∧ recessionFn f (-y) = ↑(-ν)

            For proper f, being affine along y with slope ν is (f0⁺) y = ν together with (f0⁺) (-y) = -ν.

            The lineality space of f: the directions in which f is affine, that is the y with (f0⁺) (-y) = -(f0⁺) y.

            Equations
            Instances For

              The lineality space of f is the image of the lineality space of epi f under the projection (y, ν) ↦ y.

              noncomputable def Tdaf.ConvexAnalysis.linealitySubmoduleFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] (f : E → EReal) :

              The lineality space of f is a subspace, bundled as a Submodule ℝ E. It is defined as the image of linealitySubmodule (epi f) under the projection, so the subspace structure is free, and coe_linealitySubmoduleFn identifies its carrier with linealitySpaceFn.

              Equations
              Instances For

                The carrier of linealitySubmoduleFn is the lineality space of f.

                noncomputable def Tdaf.ConvexAnalysis.linealityFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] (f : E → EReal) :

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

                Equations
                Instances For
                  theorem Tdaf.ConvexAnalysis.mem_constancySpace_of_mem_linealitySpaceFn {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} (hp : Proper f) (hy : y ∈ recessionConeFn f) (hlin : y ∈ linealitySpaceFn f) {x : E} (hx : x ∈ dom f) {β : ℝ} (hbdd : ∀ (a : ℝ), 0 ≤ a → ↑β ≤ f (x + a • y)) :

                  An affine direction of recession along which f is bounded below is a direction of constancy. If y is a direction of recession of a proper f in which f is affine (y ∈ linealitySpaceFn f) and f is bounded below on the half-line x + a • y, a ≥ 0, issuing from some x ∈ dom f, then y ∈ constancySpace f. Affineness turns the hypotheses on y into f (x + a • y) = f x + a * ν with ν = (f0⁺) y ≤ 0, and the lower bound forces ν = 0.

                  Difference quotients #

                  theorem Tdaf.ConvexAnalysis.coe_inv_mul_sub_le_coe_iff {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {x y : E} (hbot : ∀ (z : E), f z ≠ ⊥) (hx : x ∈ dom f) {a ν : ℝ} (ha : 0 < a) :
                  ↑a⁻¹ * (f (x + a • y) - f x) ≤ ↑ν ↔ f (x + a • y) ≤ f x + ↑(a * ν)

                  The difference quotient (f (x + a • y) - f x) / a is below ν exactly when the point (x, f x) + a • (y, ν) lies in epi f. This is the translation that turns the difference formula into a statement about a single half-line.

                  theorem Tdaf.ConvexAnalysis.monotone_coe_inv_mul_sub {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {x : E} (hf : ConvexFn f) (hbot : ∀ (z : E), f z ≠ ⊥) (hx : x ∈ dom f) (y : E) {a₁ a₂ : ℝ} (h1 : 0 < a₁) (h12 : a₁ ≤ a₂) :
                  ↑a₁⁻¹ * (f (x + a₁ • y) - f x) ≤ ↑a₂⁻¹ * (f (x + a₂ • y) - f x)

                  The difference quotient is nondecreasing in a. Convexity is the whole content: x + a₁ • y is a convex combination of x and x + a₂ • y.

                  The recession function of an indicator #

                  The recession cone of C ×ˢ [0, ∞) — that is, of epi δ(· | C) — is 0⁺C ×ˢ [0, ∞).

                  The recession function of an indicator function is the indicator function of the recession cone. Nonemptiness of C is needed: for C = ∅ the left-hand side is the constant -∞, since epi δ(· | ∅) = ∅ and 0⁺∅ is everything, while the right-hand side is the constant 0.

                  The recession cone of an indicator function is the recession cone of the set.

                  Closed functions: the limit formula, and testing at a single base point #

                  f0⁺ is closed as soon as f is. Only closedness of epi f is used; neither convexity nor nonemptiness enters.

                  f0⁺ is a closed function when f is a closed proper function.

                  theorem Tdaf.ConvexAnalysis.mk_mem_recessionCone_epi_of_ray {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {y : E} (hf : ConvexFn f) (hc : IsClosed (epi f)) (x : E) (μ : ℝ) {ν : ℝ} (h : ∀ (a : ℝ), 0 ≤ a → f (x + a • y) ≤ ↑(μ + a * ν)) :

                  One half-line is enough, on epigraphs: for a closed convex f, a single half-line inside epi f already witnesses a direction of recession.

                  theorem Tdaf.ConvexAnalysis.recessionFn_le_coe_iff_of_isClosed {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {x y : E} (hf : ConvexFn f) (hc : IsClosed (epi f)) (hbot : ∀ (z : E), f z ≠ ⊥) (hx : x ∈ dom f) {ν : ℝ} :
                  recessionFn f y ≤ ↑ν ↔ ∀ (a : ℝ), 0 < a → f (x + a • y) ≤ f x + ↑(a * ν)

                  For a closed convex f the recession condition may be tested at a single point of dom f. This is the sharpening that the difference-quotient formula rests on.

                  theorem Tdaf.ConvexAnalysis.recessionFn_apply_eq_iSup_inv_mul {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {x : E} (hf : ConvexFn f) (hc : IsClosed (epi f)) (hbot : ∀ (z : E), f z ≠ ⊥) (hx : x ∈ dom f) (y : E) :
                  recessionFn f y = ⨆ (a : ℝ), ⨆ (_ : 0 < a), ↑a⁻¹ * (f (x + a • y) - f x)

                  The difference-quotient formula: for a closed convex f and any one x ∈ dom f,

                  (f0⁺) y = sup {(f (x + a • y) - f x) / a | a > 0}. Closedness is what makes the answer independent of x.

                  theorem Tdaf.ConvexAnalysis.tendsto_coe_inv_mul_sub_atTop {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {x : E} (hf : ConvexFn f) (hc : IsClosed (epi f)) (hbot : ∀ (z : E), f z ≠ ⊥) (hx : x ∈ dom f) (y : E) :
                  Filter.Tendsto (fun (a : ℝ) => ↑a⁻¹ * (f (x + a • y) - f x)) Filter.atTop (nhds (recessionFn f y))

                  The limit formula: the difference quotient increases to (f0⁺) y as a → ∞. Monotonicity of the quotient (monotone_coe_inv_mul_sub) is what turns the supremum into a limit.

                  theorem Tdaf.ConvexAnalysis.recessionFn_nonpos_of_antitone {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {x y : E} (hf : ClosedProperConvexFn f) (hx : x ∈ dom f) (h : Antitone fun (a : ℝ) => f (x + a • y)) :

                  When f is closed, a single x ∈ dom f along which f is nonincreasing already forces (f0⁺) y ≤ 0.

                  theorem Tdaf.ConvexAnalysis.recessionFn_eq_of_affine_along {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {x y : E} (hf : ClosedProperConvexFn f) (hx : x ∈ dom f) {ν : ℝ} (h : ∀ (a : ℝ), f (x + a • y) = f x + ↑(a * ν)) :
                  recessionFn f y = ↑ν ∧ recessionFn f (-y) = ↑(-ν)

                  For a closed f, a single x ∈ dom f along which f is affine with slope ν already forces (f0⁺) y = ν and (f0⁺) (-y) = -ν.

                  theorem Tdaf.ConvexAnalysis.recessionCone_setOf_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} (hf : ConvexFn f) (hc : IsClosed (epi f)) {α : ℝ} (hne : {z : E | f z ≤ ↑α}.Nonempty) :

                  For a closed convex f, every nonempty level set {x | f x ≤ α} has the same recession cone, namely the recession cone of f.

                  theorem Tdaf.ConvexAnalysis.linealitySpace_setOf_le {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} (hf : ConvexFn f) (hc : IsClosed (epi f)) {α : ℝ} (hne : {z : E | f z ≤ ↑α}.Nonempty) :

                  The lineality half: every nonempty level set of a closed convex f has the constancy space of f as its lineality space.

                  The limit of the right scalar multiples #

                  (f0⁺) y = lim_{a ↓ 0} (fa) y is proved here directly from the recession calculus, rather than through the homogenisation hom f: the latter route would need cl (hom f), since hom f (0, ·) = δ(· | 0) and not f0⁺. The proof splits into the two halves of tendsto_order, and only the upper half needs a point of dom f on the ray through y.

                  theorem Tdaf.ConvexAnalysis.eventually_lt_smulRight {E : Type u_1} [AddCommGroup E] [Module ℝ E] [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] {f : E → EReal} {y : E} (hf : ConvexFn f) (hc : IsClosed (epi f)) {b : EReal} (hb : b < recessionFn f y) :
                  ∀ᶠ (a : ℝ) in nhdsWithin 0 (Set.Ioi 0), b < smulRight f a y

                  The lower half, and the half that carries the closedness hypothesis: no fa can dip below (f0⁺) y in the limit. It is the sequential criterion for a direction of recession applied to aₙ⁻¹ • (y, β) in epi f.

                  theorem Tdaf.ConvexAnalysis.eventually_smulRight_lt {E : Type u_1} [AddCommGroup E] [Module ℝ E] {f : E → EReal} {y : E} (hp : Proper f) {θ : ℝ} (hθ : θ • y ∈ dom f) {b : EReal} (hb : recessionFn f y < b) :
                  ∀ᶠ (a : ℝ) in nhdsWithin 0 (Set.Ioi 0), smulRight f a y < b

                  The upper half, from a point θ • y ∈ dom f on the line through y: (fa) y eventually stays below any bound exceeding (f0⁺) y. θ = 1 is the case y ∈ dom f and θ = 0 the case 0 ∈ dom f; no other point of dom f helps, because the endpoint of the half-line must lie on the line through y. This half needs no topology on E: it is the one-step recession test plus one limit in ℝ.

                  For a closed proper convex f, the recession function is the limit of the right scalar multiples fa as a ↓ 0, at every y ∈ dom f — and, by tendsto_smulRight_recessionFn_of_zero_mem_dom, at every y when 0 ∈ dom f.

                  Global form: when 0 ∈ dom f the limit formula holds at every y, with no condition on y at all.

                  Slices of a function of two variables #

                  A closed convex function of two variables has the same recession function on every slice x ↦ G (u, x) with non-empty effective domain: it is "one half-line is enough", read on the epigraph.

                  theorem Tdaf.ConvexAnalysis.recessionFn_le_coe_of_slice {U : Type u_1} {X : Type u_2} [AddCommGroup U] [Module ℝ U] [TopologicalSpace U] [IsTopologicalAddGroup U] [ContinuousSMul ℝ U] [AddCommGroup X] [Module ℝ X] [TopologicalSpace X] [IsTopologicalAddGroup X] [ContinuousSMul ℝ X] {G : U × X → EReal} {u₀ : U} {x₀ y : X} {ν : ℝ} (hG : ConvexFn G) (hc : IsClosed (epi G)) (hx₀ : G (u₀, x₀) ≠ ⊤) (h : recessionFn (fun (x : X) => G (u₀, x)) y ≤ ↑ν) (u : U) :
                  recessionFn (fun (x : X) => G (u, x)) y ≤ ↑ν

                  A recession direction of one slice of a closed convex G is a recession direction of every slice, with the same bound. The slice inequality at a single point exhibits a half-line of epi G in the direction ((0, y), ν), and for a closed convex set one half-line is enough. No hypothesis is placed on u: when G (u, ·) ≡ ⊤ the conclusion holds vacuously.

                  theorem Tdaf.ConvexAnalysis.recessionFn_slice_eq {U : Type u_1} {X : Type u_2} [AddCommGroup U] [Module ℝ U] [TopologicalSpace U] [IsTopologicalAddGroup U] [ContinuousSMul ℝ U] [AddCommGroup X] [Module ℝ X] [TopologicalSpace X] [IsTopologicalAddGroup X] [ContinuousSMul ℝ X] {G : U × X → EReal} {u₀ : U} (hG : ConvexFn G) (hc : IsClosed (epi G)) {u₁ : U} (h₀ : ∃ (x : X), G (u₀, x) ≠ ⊤) (h₁ : ∃ (x : X), G (u₁, x) ≠ ⊤) :
                  (recessionFn fun (x : X) => G (u₀, x)) = recessionFn fun (x : X) => G (u₁, x)

                  One recession function for all slices: a closed convex function of two variables has the same recession function on any two slices with non-empty effective domain.

                  Bounded level sets #

                  theorem Tdaf.ConvexAnalysis.isBounded_setOf_le {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {f : E → EReal} (hf : ConvexFn f) (hc : IsClosed (epi f)) {α β : ℝ} (hneα : {z : E | f z ≤ ↑α}.Nonempty) (hbd : Bornology.IsBounded {z : E | f z ≤ ↑α}) (hneβ : {z : E | f z ≤ ↑β}.Nonempty) :

                  For a closed convex f, if one nonempty level set is bounded then every nonempty level set is. Finite-dimensionality enters only through the criterion for boundedness.