Documentation

Tdaf.Analysis.Convex.Bifunction.ProcessDuality

The two inner products of a convex process #

A convex process A carries two inner products,

⟨Au, x*⟩ = sup {⟨x, x*⟩ | x ∈ A u} and ⟨u, A* x*⟩ = inf {⟨u, u*⟩ | u* ∈ A* x*},

the first a maximisation over a value of A, the second a minimisation over a value of A*. They are the bracket and the concave bracket of the indicator bifunction of A and of its adjoint, so everything that separates them is a partial closure. Bifunction/Process.lean proves the clauses needing only the closure in u; this module adds those needing the closure in x* — where closedness of A enters — and those needing relative interiors.

Main results #

Implementation notes #

Rockafellar prefixes both halves of the last assertion with "if A is closed", but the u half needs only that a concave function agrees with its concave closure on the relative interior of its effective domain. Closedness is genuinely needed only on the x* side, where the closure in x* — which rests on F** = cl F — identifies cl_{x*} ⟨u, A* x*⟩ with ⟨Au, x*⟩; there it is Y, not U, that must be finite-dimensional.

A process is closed exactly when its indicator bifunction is, since cl δ(· | S) = δ(· | cl S). That is what lets the bifunction theorems be read for processes without a separate closedness argument. The correspondence is stated as a ∃! with closedness inside it: it is between closed convex processes and kernels, so uniqueness is uniqueness among closed processes.

References #

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

Closedness, and the effective domain of the adjoint #

A convex process is closed exactly when its indicator bifunction is a closed convex bifunction: ClosedBifun for an indicator bifunction is closure (graph A) = graph A.

Every value of a closed convex process is a closed set: A u is the preimage of the graph under the continuous map x ↦ (u, x).

@[simp]

The concave effective domain of the adjoint of an indicator bifunction is the effective domain of the adjoint process: ⟨u, A* x*⟩ is +∞ exactly where A* x* is empty.

The two inner products for a closed convex process #

For a closed convex process, ⟨Au, x*⟩ = cl_{x*} ⟨u, A* x*⟩.

This is the closure in x*, which is where closedness enters: it runs through F** = cl F = F, whereas the closure in u, ⟨u, A* x*⟩ = cl_u ⟨Au, x*⟩ (concaveBracket_adjointBifun_indicatorBifun_eq_partialCl₁), holds for every convex process.

Where the two brackets of a bifunction agree, on the dual side #

For a closed convex bifunction the two brackets ⟨Fu, y⟩ and ⟨u, F* y⟩ already agree at every relative interior point of dom F*.

The two differ by the convex closure in y; ⟨u, F*·⟩ is convex with effective domain dom F*, and a convex function agrees with its closure on the relative interior of its effective domain. It is Y, not U, that must be finite-dimensional.

Where the two inner products agree #

⟨Au, x*⟩ = ⟨u, A* x*⟩ at every relative interior point of dom A.

Rockafellar prefixes the assertion with "if A is closed"; no closedness is needed here, the statement being bracket_eq_concaveBracket_adjointBifun_of_mem_relint for the indicator bifunction.

For a closed convex process, ⟨Au, x*⟩ = ⟨u, A* x*⟩ at every relative interior point of dom A*, and for every u.

Unlike the u side, this one really does need A closed: it goes through the closure in x*.

Which saddle-functions are inner products of processes #

The lower closed concave-convex functions on U × Y match the closed convex bifunctions from U to X. Cutting that down to processes costs exactly two further conditions on K: it vanishes at the origin, and it is positively homogeneous in each variable separately.

The inner product of a convex process is concave-convex.

The inner product of a closed convex process is lower closed. This is the saddle-function correspondence read at the indicator bifunction.

A closed convex process is recovered from its inner product by A u = {x | ⟨x, x*⟩ ≤ K (u, x*) for every x*}.

This is the recovery of a closed convex set from its support function, at A u, whose support function is ⟨Au, ·⟩ (bracket_indicatorBifun).

K (u, x*) = ⟨Au, x*⟩ is a one-to-one correspondence between the closed convex processes from U to X and the lower closed concave-convex functions on U × Y that vanish at the origin and are positively homogeneous in each variable separately. The inverse map is A u = {x | ⟨x, x*⟩ ≤ K (u, x*) for every x*} (ConvexProcess.eval_eq_supportSet_bracket_indicatorBifun).

The saddle-function correspondence does all the work on the bifunction side; what remains is that the closed convex bifunction it produces is an indicator bifunction. K (0, 0) = 0 bounds F 0 below by 0 and makes it finite somewhere, so the closed convex graphFn F cannot take -∞, and no slice K (u, ·) is identically +∞. The conjugate of a positively homogeneous function that is not identically +∞ is an indicator function, so each F u is one; positive homogeneity in u makes the resulting set a cone, its convexity coming from convexity of F.

The image under a closed convex process #

For a closed convex process A and a closed proper convex f, the image Af is closed.

This is closedFn_imageBifun at the indicator bifunction of A, the closedness hypothesis passing through closedBifun_indicatorBifun_iff and the "finite somewhere" side condition being 0 ∈ A 0. Rockafellar's hypothesis ri (dom f*) ∩ ri (dom A*⁻¹) ≠ ∅ is the IsExactSum there, one instance per x; dom A*⁻¹ is range A*.

The infimum defining (Af)(x) is attained, in the raw form ∃ u, f u + δ(x | A u) = (Af)(x).

Wherever Af is finite, the infimum inf {f u | x ∈ A u} is attained at an actual u with x ∈ A u.

The raw form exists_imageBifun_indicatorBifun_eq produces a u with f u + δ(x | A u) = (Af)(x); the indicator is 0 or ⊤, and ⊤ is excluded because f u ≠ ⊥ would then force (Af)(x) = ⊤.