Documentation

Tdaf.Analysis.Convex.Saddle.Closure

The lower and upper closures of a saddle-function #

Applying the two partial closures of a concave-convex function in the two possible orders gives the lower closure lowerCl K = cl₂ (cl₁ K) and the upper closure upperCl K = cl₁ (cl₂ K). These do not agree in general — the discrepancy is what forces saddle-functions to be grouped into equivalence classes — but each is idempotent.

Both halves run the correspondence between saddle-functions and convex bifunctions twice; the iteration stops because the adjoint does not see the closure, (cl F)* = F*.

Main definitions #

Main results #

References #

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

The two closures #

noncomputable def Tdaf.ConvexAnalysis.lowerCl {U : Type u_1} {X : Type u_2} [TopologicalSpace U] [TopologicalSpace X] (K : U × X → EReal) :
U × X → EReal

The lower closure cl₂ cl₁ K of a concave-convex function.

Equations
Instances For
    noncomputable def Tdaf.ConvexAnalysis.upperCl {U : Type u_1} {X : Type u_2} [TopologicalSpace U] [TopologicalSpace X] (K : U × X → EReal) :
    U × X → EReal

    The upper closure cl₁ cl₂ K of a concave-convex function.

    Equations
    Instances For

      K is lower closed when it is its own lower closure.

      Equations
      Instances For

        K is upper closed when it is its own upper closure.

        Equations
        Instances For

          K is fully closed when it is closed in each variable separately.

          Equations
          Instances For

            Fully closed is exactly lower closed and upper closed.

            The swap involution #

            noncomputable def Tdaf.ConvexAnalysis.saddleSwap {U : Type u_1} {X : Type u_2} (K : U × X → EReal) :
            X × U → EReal

            Negate a saddle-function and exchange its arguments: an involution of saddle-functions that exchanges cl₁ with cl₂.

            Equations
            Instances For
              theorem Tdaf.ConvexAnalysis.saddleSwap_apply {U : Type u_1} {X : Type u_2} (K : U × X → EReal) (q : X × U) :
              saddleSwap K q = -K (q.2, q.1)
              @[simp]
              theorem Tdaf.ConvexAnalysis.saddleSwap_saddleSwap {U : Type u_1} {X : Type u_2} (K : U × X → EReal) :
              theorem Tdaf.ConvexAnalysis.saddleSwap_le_saddleSwap {U : Type u_1} {X : Type u_2} {K L : U × X → EReal} (h : K ≤ L) :
              noncomputable def Tdaf.ConvexAnalysis.saddleSwapOrderIso {U : Type u_1} {X : Type u_2} :
              (U × X → EReal) ≃o (X × U → EReal)ᵒᵈ

              saddleSwap bundled as an order isomorphism onto the order dual. It is not an endomorphism — the two factors are exchanged — so its two-sided inverse has to be recorded as an Equiv.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Concave-convexity of the first partial closure #

                Mirroring concaveConvexFn_partialCl₂: cl₁ K is again concave-convex. The pairing needed is the one on the concave variable.

                Idempotence of the two closures #

                The upper closure is idempotent: cl₁ cl₂ cl₁ cl₂ K = cl₁ cl₂ K.

                Bu pairs the concave variable and Bx the convex one; Bx must be compatible on both sides, because Fenchel–Moreau is applied once on Y and once on U × X.

                The lower closure is idempotent: cl₂ cl₁ cl₂ cl₁ K = cl₂ cl₁ K. This is upperClosedFn_upperCl at saddleSwap K, which is why the pairings are needed on both sides.