Documentation

Books.ConvexAnalysis_Rockafellar_1970.Chapters.Chap01.section05_part2

theorem exists_fiber_lt_of_sInf_lt {n : } {F : Set ((Fin n) × )} {x : Fin n} {α : } (h : sInf {μ : | (x, μ) F} < α) (hne : {μ : | (x, μ) F}.Nonempty) :
∃ (μ : ), (x, μ) F μ < α

From a strict upper bound on the infimum of a fiber, pick a point below it.

theorem convexOn_inf_section_of_convex_of_nonempty_bddBelow {n : } {F : Set ((Fin n) × )} (hF : Convex F) (hne : ∀ (x : Fin n), {μ : | (x, μ) F}.Nonempty) (hbdd : ∀ (x : Fin n), BddBelow {μ : | (x, μ) F}) :
ConvexOn Set.univ fun (x : Fin n) => sInf {μ : | (x, μ) F}

If every fiber is nonempty and bounded below, the inf-section is convex.

theorem exists_fiber_lt_of_sInf_lt_ereal {n : } {F : Set ((Fin n) × )} {x : Fin n} {α : } (h : sInf ((fun (μ : ) => μ) '' {μ : | (x, μ) F}) < α) :
∃ (μ : ), (x, μ) F μ < α

From a strict upper bound on the EReal-infimum of a fiber, pick a real point below it.

theorem convex_combo_mem_F {n : } {F : Set ((Fin n) × )} (hF : Convex F) {x y : Fin n} {μ ν a b : } (hx : (x, μ) F) (hy : (y, ν) F) (ha : 0 a) (hb : 0 b) (hab : a + b = 1) :
(a x + b y, a * μ + b * ν) F

Convexity of F gives closure under convex combinations.

theorem strict_ineq_inf_section_ereal {n : } {F : Set ((Fin n) × )} (hF : Convex F) {x y : Fin n} {α β t : } (hfx : sInf ((fun (μ : ) => μ) '' {μ : | (x, μ) F}) < α) (hfy : sInf ((fun (μ : ) => μ) '' {μ : | (y, μ) F}) < β) (ht0 : 0 < t) (ht1 : t < 1) :
sInf ((fun (μ : ) => μ) '' {μ : | ((1 - t) x + t y, μ) F}) < ↑(1 - t) * α + t * β

Strict inequality for the inf-section in the EReal setting.

theorem convexOn_inf_section_of_convex {n : } {F : Set ((Fin n) × )} (hF : Convex F) :
ConvexFunctionOn Set.univ fun (x : Fin n) => sInf ((fun (μ : ) => μ) '' {μ : | (x, μ) F})

Theorem 5.3: Let F be a convex set in R^{n+1}, and define f x = inf { μ | (x, μ) ∈ F }, interpreted in EReal so empty fibers give +∞. Then f is convex on R^n.

theorem convexFunctionOn_inf_sum_of_proper {n m : } {f : Fin m(Fin n)EReal} (hf : ∀ (i : Fin m), ProperConvexFunctionOn Set.univ (f i)) :
ConvexFunctionOn Set.univ fun (x : Fin n) => sInf {z : EReal | ∃ (x' : Fin mFin n), i : Fin m, x' i = x z = i : Fin m, f i (x' i)}

Theorem 5.4: Let f_1, ..., f_m be proper convex functions on R^n, and define f x = inf { f_1 x_1 + ... + f_m x_m | x_i ∈ R^n, x_1 + ... + x_m = x }. Then f is a convex function on R^n.

noncomputable def infimalConvolution {n : } (f g : (Fin n)EReal) :
(Fin n)EReal

Text 5.4.0 (Infimal convolution of two functions): Let f, g : R^n -> R union {+infty} be proper convex functions. Their infimal convolution f square g is the function (f square g)(x) = inf { f x1 + g x2 | x1, x2 in R^n, x1 + x2 = x }, equivalently (f square g)(x) = inf_{y in R^n} { f y + g (x - y) }.

Equations
Instances For
    noncomputable def infimalConvolutionFamily {n m : } (f : Fin m(Fin n)EReal) :
    (Fin n)EReal

    Text 5.4.1: Let f_1, ..., f_m be proper convex functions on R^n, and let f x = inf { f_1 x_1 + ... + f_m x_m | x_i ∈ R^n, x_1 + ... + x_m = x }. The function f is denoted by f_1 square f_2 square ... square f_m; the operation square is called infimal convolution.

    Equations
    Instances For

      The two-function infimal convolution matches the family version on Fin 2.

      The indicator of a singleton is 0 at the point and elsewhere.

      theorem infimalConvolution_indicator_singleton_le {n : } (f : (Fin n)EReal) (a x : Fin n) :

      The infimal convolution is bounded above by the translate f (x - a).

      theorem infimalConvolution_indicator_singleton_ge {n : } (f : (Fin n)EReal) (a : Fin n) (hf : ∀ (x : Fin n), f x ) (x : Fin n) :

      The translate f (x - a) is a lower bound when f never takes the value .

      theorem infimalConvolution_indicator_singleton {n : } (f : (Fin n)EReal) (a : Fin n) (hf : ∀ (x : Fin n), f x ) :
      infimalConvolution f (indicatorFunction {a}) = fun (x : Fin n) => f (x - a)

      Text 5.4.1.1: If g = δ(· | a) for a point a ∈ R^n (where δ(x | a) = +infty for x ≠ a and δ(a | a) = 0), then (f square g)(x) = f (x - a).

      theorem infimalConvolution_eq_sInf_param {n : } (f g : (Fin n)EReal) (x : Fin n) :
      infimalConvolution f g x = sInf {r : EReal | ∃ (z : Fin n), r = g z + f (x - z)}

      Reparametrize the defining set in infimalConvolution.

      theorem infimalConvolution_reflection_indicator_inner {n : } (f : (Fin n)EReal) (x z : Fin n) (hf : ∀ (y : Fin n), f y ) :
      infimalConvolution (fun (y : Fin n) => f (-y)) (indicatorFunction {x}) z = f (x - z)

      The singleton indicator collapses the reflected infimal convolution.

      theorem infimalConvolution_reflection_indicator_finalize {n : } (f g : (Fin n)EReal) (hf : ∀ (y : Fin n), f y ) (x : Fin n) :
      sInf {r : EReal | ∃ (z : Fin n), r = g z + infimalConvolution (fun (y : Fin n) => f (-y)) (indicatorFunction {x}) z} = sInf {r : EReal | ∃ (z : Fin n), r = g z + f (x - z)}

      Replace the inner infimal convolution using the singleton indicator formula.

      theorem infimalConvolution_reflection_indicator {n : } (f g : (Fin n)EReal) (hf : ∀ (y : Fin n), f y ) (x : Fin n) :
      infimalConvolution f g x = sInf {r : EReal | ∃ (z : Fin n), r = g z + infimalConvolution (fun (y : Fin n) => f (-y)) (indicatorFunction {x}) z}

      Text 5.4.1.2: Let f, g : ℝ^n → ℝ ∪ {+∞} and define the reflection h(y) = f(-y). Then for every x ∈ ℝ^n, (f □ g)(x) = inf_{z ∈ ℝ^n} { g(z) + (h □ δ(· | x))(z) }.

      theorem effectiveDomain_infimalConvolution_subset_sum {n : } (f g : (Fin n)EReal) (hf : ∀ (x : Fin n), f x ) (hg : ∀ (x : Fin n), g x ) (x : Fin n) :

      Points in the effective domain of the infimal convolution decompose into points in each effective domain, assuming no values.

      Any sum of points from the effective domains lies in the effective domain of f □ g.

      theorem effectiveDomain_infimalConvolution_eq_sum {n : } (f g : (Fin n)EReal) (hf : ∀ (x : Fin n), f x ) (hg : ∀ (x : Fin n), g x ) :

      Text 5.4.1.3: The effective domain of f □ g is the sum of dom f and dom g.

      theorem indicator_add_norm_eq_if {n : } {C : Set (Fin n)} (x z : Fin n) :

      Adding the indicator yields the norm on C and outside.

      theorem infimalConvolution_norm_indicator_eq_sInf_range {n : } {C : Set (Fin n)} (x : Fin n) :
      infimalConvolution (fun (y : Fin n) => y) (indicatorFunction C) x = sInf (Set.range fun (z : C) => x - z)

      Rewriting the infimal convolution with an indicator as an infimum over C.

      theorem sInf_range_norm_eq_infDist {n : } {C : Set (Fin n)} (hCne : C.Nonempty) (x : Fin n) :
      sInf (Set.range fun (z : C) => x - z) = (Metric.infDist x C)

      The infimum of norms over a nonempty set gives the distance.

      theorem infimalConvolution_norm_indicator_eq_infDist {n : } {C : Set (Fin n)} (hCne : C.Nonempty) (x : Fin n) :
      infimalConvolution (fun (y : Fin n) => y) (indicatorFunction C) x = (Metric.infDist x C)

      Text 5.4.1.4: Taking f to be the Euclidean norm and g to be the indicator function of a convex set C, we get (f □ g)(x) = d(x, C), where d(x, C) denotes the distance between x and C.

      The Euclidean norm is a proper convex function on Set.univ.

      The indicator of a nonempty convex set is a proper convex function.

      The infimal convolution of two proper convex functions is convex.

      theorem convexOn_infDist_of_convex {n : } {C : Set (Fin n)} (hC : Convex C) :
      ConvexOn Set.univ fun (x : Fin n) => Metric.infDist x C

      Text 5.4.1.5: For a convex set C, let d(x, C) denote the distance between x and C. Then the function d(·, C) is convex on ℝ^n.