Conjugates of concave functions #
The concave conjugate of g : E → EReal is g*(y) = inf_x (⟨x, y⟩ - g x), the mirror of the
convex conjugate with inf, ≥ and -∞ in place of sup, ≤ and +∞. Convex and concave
duality are used together throughout — the dual objective of a convex program is the concave
conjugate of -inf F, and Fenchel's duality theorem pairs a convex f against a concave g — so
the concave conjugate needs a name of its own rather than being spelled through -g at every use.
The sign trap. g* ≠ -(-g)*. What is true is g*(y) = -(-g)*(-y): there is a reflection on
the dual side as well. neg_concaveConj is the dictionary, and every result below is derived
through it.
Main definitions #
concaveConj B g,biconcaveConj B g— the concave conjugateg*and biconjugateg**.clConcave g,ClosedConcaveFn g— the concave closure-(cl (-g)), the upper semicontinuous hull that Rockafellar also writescl g, and the functions fixed by it.
Main results #
neg_concaveConj,concaveConj_eq_neg_conj_neg,conj_eq_neg_concaveConj_neg— the sign dictionary, in both directions, with no side condition.add_concaveConj_le— Fenchel's inequalityg x + g*(y) ≤ ⟨x, y⟩. Unconditional, unlike the convexle_add_conj: the collapsing sum⊤ + ⊥ = ⊥falls on the smaller side here.coe_le_concaveConj_iff,le_concaveConj_iff—c ≤ g*(y)says exactly that the affine functionx ↦ ⟨x, y⟩ - clies aboveg; andconcaveConj Bis adjoint toconcaveConj B.flip. Every concave conjugate is concave (concaveFn_concaveConj).biconcaveConj_eq_clConcave— Fenchel–Moreau for concave functions: the concave biconjugate is the concave closure. The double reflection cancels on the way (biconcaveConj_eq_neg_biconj_neg:g** = -(-g)**, with no sign on the argument).
References #
- R. T. Rockafellar, Convex Analysis, Princeton University Press, 1970, §12, §30, §31.
The concave conjugate #
The concave conjugate of g with respect to the pairing B:
g*(y) = inf_x (⟨x, y⟩ - g x). This is not -(conj B (-g)); the dictionary
g*(y) = -(-g)*(-y) is concaveConj_eq_neg_conj_neg.
Equations
- Tdaf.ConvexAnalysis.concaveConj B g y = ⨅ (x : E), ↑((B x) y) - g x
Instances For
The sign dictionary #
The dictionary between the two conjugates: -g*(y) = (-g)*(-y). Both the values and the
arguments are reflected; only one of the two reflections is visible in the informal statement
g*(y) = -(-g)*(-y).
The dictionary in the other direction: f*(y) = -(-f)*(-y), where the starred operation on the
right is the concave conjugate.
Order-theoretic API #
c ≤ g*(y) says exactly that the affine function x ↦ ⟨x, y⟩ - c lies above g. The
mirror of conj_le_coe_iff, and like it unconditional.
The adjunction. h ≤ g* and g ≤ h* say the same thing, namely that
g x + h y ≤ ⟨x, y⟩ for all x and y in the ∞ - ∞-free reading.
The improper cases #
g* never takes the value ⊤ when g has nonempty effective domain.
Fenchel's inequality for concave functions: g x + g*(y) ≤ ⟨x, y⟩.
Needs no properness, unlike its convex mirror le_add_conj: the collapse ⊤ + ⊥ = ⊥ happens here
on the smaller side of the inequality, where ⊥ is harmless.
Concavity of the concave conjugate #
The concave conjugate of an arbitrary function is concave, with no hypothesis on g.
The biconjugate #
The double reflection cancels: g** = -(-g)**, with no sign on the argument, the
reflection introduced on the dual side by the first conjugation being undone by the second.
The concave closure #
The concave closure: the counterpart of clFn obtained by conjugating it with negation.
Rockafellar writes cl g for it too; here it needs a name of its own.
Equations
- Tdaf.ConvexAnalysis.clConcave g x = -Tdaf.ConvexAnalysis.clFn (fun (z : E) => -g z) x
Instances For
g is concave-closed when it equals its concave closure.
Equations
Instances For
Fenchel–Moreau for concave functions #
Fenchel–Moreau for concave functions. The concave biconjugate of a concave function is
its concave closure, spelled out as -(cl (-g)).
Fenchel–Moreau for concave functions, stated against clConcave: g** = cl g.
A closed concave function — one whose negative is a closed convex function — is its own concave biconjugate.