Documentation

Books.ConvexAnalysis_Rockafellar_1970.Chapters.Chap03.section12_part6

theorem dotProduct_self_nonneg {n : } (v : Fin n) :
0 v ⬝ᵥ v

Nonnegativity of the dot product of a vector with itself.

theorem range_term_quadraticHalfInner_le (n : ) (x xStar : Fin n) :

The key inequality for the conjugate of quadraticHalfInner: ⟪x, x*⟫ - (1/2)⟪x, x⟫ ≤ (1/2)⟪x*, x*⟫.

The Fenchel conjugate of w(x) = (1/2)⟪x,x⟫ is itself.

The quadratic function w(x) = (1/2)⟪x,x⟫ is convex on ℝ^n.

theorem quadraticHalfInner_le_of_fenchelConjugate_eq_self (n : ) (f : (Fin n)EReal) (hf : fenchelConjugate n f = f) (x : Fin n) :

If f* = f, then f is pointwise bounded below by w(x) = (1/2)⟪x,x⟫.

Text 12.2.9: The fixed-point identity f* = f for Fenchel conjugation has a unique solution in the class of convex functions on ℝ^n, namely f = w where w(x) = (1/2) * ⟪x, x⟫. Here f* is fenchelConjugate n f.

def constNegInf (n : ) :
(Fin n)EReal

Text 12.1.3: Let f_{-∞} and f_{+∞} denote the constant functions on ℝ^n taking values -∞ and +∞ respectively. Then they are conjugate to each other (with conjugation given here by fenchelConjugate), i.e. (f_{-∞})^* = f_{+∞} and (f_{+∞})^* = f_{-∞}.

Equations
Instances For
    def constPosInf (n : ) :
    (Fin n)EReal

    The constant function on ℝ^n with value +∞.

    Equations
    Instances For
      theorem fenchelConjugate_constNegInf_apply (n : ) (xStar : Fin n) :

      The Fenchel conjugate of the constant -∞ function is pointwise +∞.

      theorem fenchelConjugate_constPosInf_apply (n : ) (xStar : Fin n) :

      The Fenchel conjugate of the constant +∞ function is pointwise -∞.

      For f_{-∞} the constant function x ↦ -∞ on ℝ^n, its Fenchel conjugate is f_{+∞}.

      For f_{+∞} the constant function x ↦ +∞ on ℝ^n, its Fenchel conjugate is f_{-∞}.

      theorem dotProduct_linearEquiv_symm_eq (n : ) (A AStar : (Fin n) ≃ₗ[] Fin n) (hAStar : ∀ (x y : Fin n), A x ⬝ᵥ y = x ⬝ᵥ AStar y) (y v : Fin n) :
      A.symm y ⬝ᵥ v = y ⬝ᵥ AStar.symm v

      Rewriting a dot product after applying the inverse linear equivalence, using the assumed adjoint relation.

      theorem ereal_add_coe_le_coe_iff_cancel (t : EReal) (c μ : ) :
      t + c μ t ↑(μ - c)

      Cancel a finite real constant on the right in an EReal inequality.

      theorem affineTransform_pointwise_inequality_iff (n : ) (h : (Fin n)EReal) (A AStar : (Fin n) ≃ₗ[] Fin n) (hAStar : ∀ (x y : Fin n), A x ⬝ᵥ y = x ⬝ᵥ AStar y) (a aStar : Fin n) (α : ) (xStar : Fin n) (μ : ) :
      have b' := AStar.symm (xStar - aStar); have μ' := μ + α - a ⬝ᵥ (xStar - aStar); (∀ (x : Fin n), ↑(x ⬝ᵥ xStar - μ) h (A (x - a)) + ↑(x ⬝ᵥ aStar) + α) ∀ (y : Fin n), ↑(y ⬝ᵥ b' - μ') h y

      Change-of-variables lemma for the affine-minorant characterization used in Theorem 12.3.

      theorem fenchelConjugate_affineTransform_le_coe_iff (n : ) (h : (Fin n)EReal) (A AStar : (Fin n) ≃ₗ[] Fin n) (hAStar : ∀ (x y : Fin n), A x ⬝ᵥ y = x ⬝ᵥ AStar y) (a aStar : Fin n) (α : ) (xStar : Fin n) (μ : ) :
      have f := fun (x : Fin n) => h (A (x - a)) + ↑(x ⬝ᵥ aStar) + α; have b' := AStar.symm (xStar - aStar); have μ' := μ + α - a ⬝ᵥ (xStar - aStar); fenchelConjugate n f xStar μ fenchelConjugate n h b' μ'

      Upper-bound equivalence for the Fenchel conjugate under the affine transformation in Theorem 12.3.

      theorem fenchelConjugate_affineTransform (n : ) (h : (Fin n)EReal) (A AStar : (Fin n) ≃ₗ[] Fin n) (hAStar : ∀ (x y : Fin n), A x ⬝ᵥ y = x ⬝ᵥ AStar y) (a aStar : Fin n) (α : ) :
      have f := fun (x : Fin n) => h (A (x - a)) + ↑(x ⬝ᵥ aStar) + α; have αStar := -α - a ⬝ᵥ aStar; fenchelConjugate n f = fun (xStar : Fin n) => fenchelConjugate n h (AStar.symm (xStar - aStar)) + ↑(xStar ⬝ᵥ a) + αStar

      Theorem 12.3. Let h be a convex function on ℝ^n, and define f(x) = h(A(x - a)) + ⟪x, a^*⟫ + α, where A is a one-to-one linear transformation of ℝ^n, a and a^* are vectors in ℝ^n, and α ∈ ℝ. Then f^*(x^*) = h^*(A^{*-1}(x^* - a^*)) + ⟪x^*, a⟫ + α^*, where A^* is the adjoint of A and α^* = -α - ⟪a, a^*⟫. Here f^* and h^* are represented by fenchelConjugate.

      theorem range_term_partialAffine_tucker_simp (n m : ) (α00 : ) (α0 : Fin n) (αi0 : Fin m) (α : Fin mFin n) (x xStar : Fin (n + m)) :
      have f := fun (y : Fin (n + m)) => if x : ∀ (i : Fin m), y (Fin.natAdd n i) = j : Fin n, α i j * y (Fin.castAdd m j) - αi0 i then ↑(j : Fin n, α0 j * y (Fin.castAdd m j) - α00) else ; ↑(x ⬝ᵥ xStar) - f x = if x_1 : ∀ (i : Fin m), x (Fin.natAdd n i) = j : Fin n, α i j * x (Fin.castAdd m j) - αi0 i then ↑(x ⬝ᵥ xStar - (j : Fin n, α0 j * x (Fin.castAdd m j) - α00)) else

      Simplify the Fenchel-conjugate range term for a Tucker-type partial affine function.

      Outside the primal constraint set, the function value is and the range term is .

      theorem range_term_partialAffine_tucker_real_formula (n m : ) (α00 : ) (α0 : Fin n) (αi0 : Fin m) (α : Fin mFin n) (x xStar : Fin (n + m)) (hx : ∀ (i : Fin m), x (Fin.natAdd n i) = j : Fin n, α i j * x (Fin.castAdd m j) - αi0 i) :
      have xHead := fun (j : Fin n) => x (Fin.castAdd m j); have coeff := fun (j : Fin n) => xStar (Fin.castAdd m j) + i : Fin m, α i j * xStar (Fin.natAdd n i) - α0 j; have const := α00 - i : Fin m, αi0 i * xStar (Fin.natAdd n i); x ⬝ᵥ xStar - (j : Fin n, α0 j * xHead j - α00) = j : Fin n, xHead j * coeff j + const

      Expand the real expression ⟪x,x*⟫ - f(x) for a Tucker-type partial affine function under the primal feasibility constraint, grouping the free coordinates x (Fin.castAdd m ·).

      theorem tucker_dualConstraint_iff_coeff_eq_zero (n m : ) (α0 : Fin n) (α : Fin mFin n) (xStar : Fin (n + m)) :
      have coeff := fun (j : Fin n) => xStar (Fin.castAdd m j) + i : Fin m, α i j * xStar (Fin.natAdd n i) - α0 j; (∀ (j : Fin n), xStar (Fin.castAdd m j) = i : Fin m, -α i j * xStar (Fin.natAdd n i) + α0 j) ∀ (j : Fin n), coeff j = 0

      The dual feasibility constraint in Tucker form is equivalent to vanishing of the coefficients of the free primal variables in the conjugate range term.

      theorem exists_head_makes_linear_combo_arbitrarily_large {n : } (coeff : Fin n) (const : ) (hcoeff : ∃ (j : Fin n), coeff j 0) (μ : ) :
      ∃ (xHead : Fin n), μ j : Fin n, xHead j * coeff j + const

      If some coefficient in a linear form is nonzero, we can choose the variables to make the form arbitrarily large (even achieving any prescribed value up to a constant shift).