Documentation

TdafSurface.Rockafellar.Part7.Section33

Rockafellar, §33: Saddle-Functions #

Concave-convex and convex-concave functions on ℝᵐ × ℝⁿ, the partial closures cl₁ and cl₂, and the correspondence — "at the heart of the theory of saddle-functions" — between saddle-functions and convex bifunctions from ℝᵐ to ℝⁿ. All eleven numbered results of §33 are formalized: Theorems 33.1–33.3 and Corollaries 33.1.1, 33.1.2, 33.1.3, 33.2.1, 33.2.2, 33.3.1, 33.3.2, 33.3.3.

Orientation. A concave-convex K (u, v) is concave in the first argument and convex in the second, and the two closures are named after the argument they close, not the sense in which they close it: cl₁ closes the first — concave — argument concavely, cl₂ the second — convex — argument convexly. So K is lower closed when cl₂ (cl₁ K) = K and upper closed when cl₁ (cl₂ K) = K. Reversing any of this silently swaps every statement of §§34–37. A convex-concave K is reached by negation; see convexConcave_lowerClosed_iff.

Implementation notes #

Rockafellar overloads ⟨·, ·⟩ for the conjugate of a convex f, of a concave f, and of a slice of a convex or a concave bifunction; these are separate names here. The bifunction brackets are uncurried, as functions of the pair (u, x*), the form every closedness predicate is stated against.

References #

The two partial closures #

@[reducible, inline]
noncomputable abbrev Rockafellar.cl₂ {m n : ℕ} (K : TdafSurface.Rn m × TdafSurface.Rn n → EReal) :

Rockafellar's cl₂ K = cl_v K, the convex closure: close K (u, ·) as a convex function of the second argument, for each fixed u. An abbrev for partialCl₂.

Equations
Instances For
    @[reducible, inline]
    noncomputable abbrev Rockafellar.cl₁ {m n : ℕ} (K : TdafSurface.Rn m × TdafSurface.Rn n → EReal) :

    Rockafellar's cl₁ K = cl_u K, the concave closure: close K (·, v) as a concave function of the first argument. An abbrev for partialCl₁; it is cl₂ conjugated by negation, not cl₂ with the arguments exchanged.

    Equations
    Instances For

      The three brackets #

      @[reducible, inline]
      noncomputable abbrev Rockafellar.conjBracket {n : ℕ} (f : TdafSurface.Rn n → EReal) :

      Rockafellar's ⟨f, x*⟩ = f*(x*) for a convex f: the conjugate, as an inner product.

      Equations
      Instances For
        @[reducible, inline]
        noncomputable abbrev Rockafellar.concaveConjBracket {n : ℕ} (f : TdafSurface.Rn n → EReal) :

        Rockafellar's ⟨f, x*⟩ for a concave f: the concave conjugate.

        Equations
        Instances For
          @[reducible, inline]

          Rockafellar's ⟨Fu, x*⟩ = (Fu)*(x*) for a convex bifunction F, as a function of the pair (u, x*). This is the K̲ of Corollary 33.3.1.

          Equations
          Instances For
            @[reducible, inline]

            Rockafellar's ⟨u, Gx*⟩ = (Gx*)*(u) for a concave bifunction G from ℝⁿ to ℝᵐ.

            Equations
            Instances For
              @[reducible, inline]

              Rockafellar's ⟨u, F*x*⟩, the concave bracket of the adjoint F* (§30, dualProgram); the K̄ of Corollary 33.3.1.

              Equations
              Instances For
                @[reducible, inline]

                The convex bifunction attached to a saddle-function, Fu = K (u, ·)*: the inverse map of Corollaries 33.1.2 and 33.3.2.

                Equations
                Instances For

                  The book's defining formula: ⟨Fu, x*⟩ = sup_x {⟨x, x*⟩ - (Fu)(x)}.

                  The book's defining formula: ⟨u, Gx*⟩ = inf_v {⟨u, v⟩ - (Gx*)(v)}.

                  The book's defining formula for Fu = K (u, ·)*.

                  ⟨f, x*⟩ = ⟨x, x*⟩ when f is the indicator of x: the notation extends the ordinary inner product along the embedding of ℝⁿ into the convex functions.

                  Theorem 33.1 #

                  Theorem 33.1, first clause: for a convex bifunction F, ⟨Fu, x*⟩ is concave-convex in (u, x*). Concavity in u is Theorem 5.7 for the image of the graph function.

                  Theorem 33.1, second clause: ⟨Fu, x*⟩ is convex-closed, with no hypothesis on F whatever — each slice is a conjugate.

                  Theorem 33.1, the inversion formula: Fenchel–Moreau (Theorem 12.2) uniformly in u.

                  Theorem 33.1, converse: for a concave-convex K, the bifunction Fu = K (u, ·)* is convex.

                  Theorem 33.1, converse: that bifunction is image-closed, each Fu being a conjugate.

                  Theorem 33.1, converse, the identity that closes the loop: ⟨Fu, x*⟩ = (cl₂ K)(u, x*), with cl₂ the closure in the convex — second — argument.

                  Corollary 33.1.1 #

                  Corollary 33.1.1: cl₁ K is concave-closed; the concave closure is idempotent.

                  Corollary 33.1.2 #

                  A closed bifunction is image-closed: a slice of a closed function is closed.

                  Corollary 33.1.2. The relations K (u, x*) = ⟨Fu, x*⟩ and Fu = K (u, ·)* are a one-to-one correspondence between the convex-closed concave-convex functions on ℝᵐ × ℝⁿ and the image-closed convex bifunctions from ℝᵐ to ℝⁿ.

                  Equations
                  Instances For

                    Corollary 33.1.3 #

                    Corollary 33.1.3: for a polyhedral convex bifunction F, ⟨Fu, x*⟩ is polyhedral convex in x* for each u.

                    Corollary 33.1.3: ⟨Fu, x*⟩ is polyhedral concave in u for each x*.

                    Corollary 33.1.3: a proper polyhedral convex bifunction is recovered from its bracket with no closure operation, being already closed.

                    The adjoint bracket #

                    ⟨u, F*x*⟩ is concave-convex in (u, x*), with no hypothesis on F: the adjoint of any bifunction is concave.

                    ⟨u, F*x*⟩ is concave-closed: it is a cl₁ by Theorem 33.2, and every cl₁ is concave-closed by Corollary 33.1.1.

                    Theorem 33.2 #

                    Theorem 33.2, first equation: ⟨u, F*x*⟩ = cl₁ ⟨Fu, x*⟩, the closure in the concave — first — argument. It is concave Fenchel–Moreau in u.

                    Theorem 33.2, second equation: cl₂ ⟨u, F*x*⟩ = ⟨(cl F)u, x*⟩, the closure in the convex — second — argument. It is the first equation at F* composed with Theorem 30.1's F** = cl F.

                    Corollary 33.2.1 #

                    Corollary 33.2.1, first assertion: if u ∈ ri (dom F) then ⟨Fu, x*⟩ = ⟨u, F*x*⟩ for every x*. The two differ by cl₁, which Theorem 7.4 removes on ri (dom).

                    Corollary 33.2.1, second assertion: if F is closed and x* ∈ ri (dom F*) then ⟨Fu, x*⟩ = ⟨u, F*x*⟩ for every u. The book's "apply the first fact to F*" is not literally available, F* being concave; the route here spends the closedness hypothesis, and it is spent nowhere else in the corollary.

                    Corollary 33.2.2 #

                    Corollary 33.2.2. For a proper polyhedral convex bifunction F, ⟨Fu, x*⟩ = ⟨u, F*x*⟩ except when both u ∉ dom F and x* ∉ dom F*: polyhedrality drops Corollary 33.2.1's ri.

                    Corollary 33.2.2, the parenthetical: in the exceptional case one quantity is +∞, the other -∞. Neither polyhedrality nor properness is used.

                    Full, lower and upper closedness #

                    A saddle-function finite everywhere is convex-closed: Corollary 10.1.1, slice by slice.

                    A saddle-function finite everywhere is fully closed.

                    The convex-concave convention. For a convex-concave K the book's cl₁ closes convexly in the first argument and its cl₂ concavely in the second, so both are the operators of this module conjugated by negation, and the book's "K is lower closed" says UpperClosedFn (-K).

                    The other half: "K upper closed" for a convex-concave K is LowerClosedFn (-K).

                    Theorem 33.3 #

                    Theorem 33.3, one direction: the bracket of a closed convex bifunction is a lower closed concave-convex function. Both closure steps are Theorem 33.2.

                    Theorem 33.3. The same relations are a one-to-one correspondence between the lower closed concave-convex functions on ℝᵐ × ℝⁿ and the closed convex bifunctions from ℝᵐ to ℝⁿ.

                    Corollary 33.3.1 #

                    Corollary 33.3.1. For concave-convex K̲ and K̄, a closed convex bifunction F with K̲ (u, x*) = ⟨Fu, x*⟩ and K̄ (u, x*) = ⟨u, F*x*⟩ exists — and is then unique — if and only if cl₁ K̲ = K̄ and cl₂ K̄ = K̲. This is the sufficiency.

                    Corollary 33.3.1, necessity: cl₁ ⟨Fu, x*⟩ = ⟨u, F*x*⟩, needing no closedness.

                    Corollary 33.3.1, necessity: cl₂ ⟨u, F*x*⟩ = ⟨Fu, x*⟩ for a closed F.

                    theorem Rockafellar.corollary_33_3_1_lowerClosed {m n : ℕ} {Klow Kup : TdafSurface.Rn m × TdafSurface.Rn n → EReal} (h1 : cl₁ Klow = Kup) (h2 : cl₂ Kup = Klow) :

                    Corollary 33.3.1: the closure relations make K̲ lower closed.

                    theorem Rockafellar.corollary_33_3_1_upperClosed {m n : ℕ} {Klow Kup : TdafSurface.Rn m × TdafSurface.Rn n → EReal} (h1 : cl₁ Klow = Kup) (h2 : cl₂ Kup = Klow) :

                    Corollary 33.3.1: the closure relations make K̄ upper closed.

                    theorem Rockafellar.corollary_33_3_1_le {m n : ℕ} {Klow Kup : TdafSurface.Rn m × TdafSurface.Rn n → EReal} (h2 : cl₂ Kup = Klow) :
                    Klow ≤ Kup

                    Corollary 33.3.1: K̲ ≤ K̄. Only the cl₂ relation is used, because cl₂ lowers.

                    Corollary 33.3.2 #

                    Corollary 33.3.2. K̄ = cl₁ K̲ and K̲ = cl₂ K̄ are a one-to-one correspondence between the lower closed and the upper closed concave-convex functions on ℝᵐ × ℝⁿ.

                    Equations
                    Instances For

                      Corollary 33.3.3 #

                      Where the book asks for K "finite continuous" on C × D, meaning jointly, the hypotheses below ask only for convexity, concavity and continuity of each one-variable section on its own set.

                      theorem Rockafellar.corollary_33_3_3_lowerClosed {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hCcl : IsClosed C) (hDcl : IsClosed D) (hCne : C.Nonempty) (hDne : D.Nonempty) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) (hcontC : ∀ x ∈ D, ContinuousOn (fun (u : TdafSurface.Rn m) => K (u, x)) C) :

                      Corollary 33.3.3: the lower simple extension K̲ of such a K is lower closed.

                      theorem Rockafellar.corollary_33_3_3_upperClosed {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hCcl : IsClosed C) (hDcl : IsClosed D) (hCne : C.Nonempty) (hDne : D.Nonempty) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) (hcontC : ∀ x ∈ D, ContinuousOn (fun (u : TdafSurface.Rn m) => K (u, x)) C) :

                      Corollary 33.3.3: the upper simple extension K̄ is upper closed.

                      theorem Rockafellar.corollary_33_3_3 {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hCcl : IsClosed C) (hDcl : IsClosed D) (hCne : C.Nonempty) (hDne : D.Nonempty) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) (hcontC : ∀ x ∈ D, ContinuousOn (fun (u : TdafSurface.Rn m) => K (u, x)) C) :

                      Corollary 33.3.3, main clause: there is a unique closed convex bifunction F whose two brackets are the lower and the upper simple extension of K.

                      theorem Rockafellar.corollary_33_3_3_bracket {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hDcl : IsClosed D) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) :

                      That bifunction is K̲ (u, ·)*, and its bracket is K̲ again.

                      theorem Rockafellar.corollary_33_3_3_adjointBracket {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hCcl : IsClosed C) (hDcl : IsClosed D) (hCne : C.Nonempty) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) (hcontC : ∀ x ∈ D, ContinuousOn (fun (u : TdafSurface.Rn m) => K (u, x)) C) :

                      Its adjoint bracket is K̄.

                      theorem Rockafellar.corollary_33_3_3_dom {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hDcl : IsClosed D) (hDne : D.Nonempty) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) :

                      Corollary 33.3.3: dom F = C.

                      theorem Rockafellar.corollary_33_3_3_domAdjoint {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hCcl : IsClosed C) (hDcl : IsClosed D) (hCne : C.Nonempty) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) (hcontC : ∀ x ∈ D, ContinuousOn (fun (u : TdafSurface.Rn m) => K (u, x)) C) :

                      Corollary 33.3.3: dom F* = D.

                      Corollary 33.3.3, the formula for F off C: (Fu)(x) = +∞.

                      theorem Rockafellar.corollary_33_3_3_bifun_of_mem {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} {u : TdafSurface.Rn m} (hu : u ∈ C) (x : TdafSurface.Rn n) :
                      bifunOfSaddleFn (Tdaf.ConvexAnalysis.lowerSimpleExt C D K) u x = ⨆ y ∈ D, ↑(((TdafSurface.pairing n) x) y) - ↑(K (u, y))

                      Corollary 33.3.3, the formula for F on C: (Fu)(x) = sup {⟨x, x*⟩ - K (u, x*) | x* ∈ D}.

                      theorem Rockafellar.corollary_33_3_3_adjoint_of_mem {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hDcl : IsClosed D) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) {y : TdafSurface.Rn n} (hy : y ∈ D) (v : TdafSurface.Rn m) :
                      dualProgram (bifunOfSaddleFn (Tdaf.ConvexAnalysis.lowerSimpleExt C D K)) y v = ⨅ u ∈ C, ↑(((TdafSurface.pairing m) u) v) - ↑(K (u, y))

                      Corollary 33.3.3, the formula for F* on D: (F*x*)(u*) = inf {⟨u, u*⟩ - K (u, x*) | u ∈ C}.

                      theorem Rockafellar.corollary_33_3_3_adjoint_of_notMem {m n : ℕ} {C : Set (TdafSurface.Rn m)} {D : Set (TdafSurface.Rn n)} {K : TdafSurface.Rn m × TdafSurface.Rn n → ℝ} (hC : Convex ℝ C) (hDcl : IsClosed D) (hCne : C.Nonempty) (hconv : ∀ u ∈ C, ConvexOn ℝ D fun (x : TdafSurface.Rn n) => K (u, x)) (hconc : ∀ x ∈ D, ConcaveOn ℝ C fun (u : TdafSurface.Rn m) => K (u, x)) (hcontD : ∀ u ∈ C, ContinuousOn (fun (x : TdafSurface.Rn n) => K (u, x)) D) {y : TdafSurface.Rn n} (hy : y ∉ D) (v : TdafSurface.Rn m) :

                      Corollary 33.3.3, the formula for F* off D: (F*x*)(u*) = -∞.