Transforms#

conjugate#

class Conjugate(z, fun)[source]#

Transforms a function \(f(x)\) into its Legendre-Fenchel conjugate:

\[f^*(z) = \sup_{x} z^Tx - f(x)\]

perspective#

class Perspective(t, fun)[source]#

Transforms a function \(f(x)\) into its perspective:

\[\text{persp}_f(t,x) = tf(x/t)\]

epigraph#

class Epigraph(t, fun)[source]#

Transforms a function \(f(x)\) into its epigraph constraint:

\[(t, x)\in \text{epi}_f = \{{(t, x) \text{ s.t. } f(x)\leq t\}}\]

infconvolution#

class InfConvolution(fun1, fun2, indices=None)[source]#

Transforms two function \(f_1(x)\) and \(f_2(x)\) into their inf-convolution:

\[(f_1\square f_2)(x) = \inf_{x \text{ s.t. } x=y_1+y_2} f_1(y_1)+f_2(y_2)\]

If indices are provided, convolution is taken only over this set of indices.

partial_minimization#

class PartialMinimization(fun, indices)[source]#

Performs a partial minimization of function \(f(x)\) over some coordinates given by a set of indices:

\[\underline{f}(x) = \inf_{z_i \text{ if } i\in\texttt{indices}} f(z)\]

where \(x=(z_j)_{j\notin \texttt{indices}}\).