  We consider convex-concave saddle point problems, and more generally convex
optimization problems we refer to as $\textit{saddle problems}$, which include
the partial supremum or infimum of convex-concave saddle functions. Saddle
problems arise in a wide range of applications, including game theory, machine
learning, and finance. It is well known that a saddle problem can be reduced to
a single convex optimization problem by dualizing either the convex (min) or
concave (max) objectives, reducing a min-max problem into a min-min (or
max-max) problem. Carrying out this conversion by hand can be tedious and error
prone. In this paper we introduce $\textit{disciplined saddle programming}$
(DSP), a domain specific language (DSL) for specifying saddle problems, for
which the dualizing trick can be automated. The language and methods are based
on recent work by Juditsky and Nemirovski arXiv:2102.01002 [math.OC], who
developed the idea of conic-representable saddle point programs, and showed how
to carry out the required dualization automatically using conic duality.
Juditsky and Nemirovski's conic representation of saddle problems extends
Nesterov and Nemirovski's earlier development of conic representable convex
problems; DSP can be thought of as extending disciplined convex programming
(DCP) to saddle problems. Just as DCP makes it easy for users to formulate and
solve complex convex problems, DSP allows users to easily formulate and solve
saddle problems. Our method is implemented in an open-source package, also
called DSP.
