# What algorithm does CVXPY actually use to solve semidefinite programs with the constraints of the form $\sum\limits_i E_iXE_i^T \succ B$?

Crossposted on Mathematics SE

CVXPY is a famous software as a solver for optimization problems. Nowadays, I use it to run a program presented in a paper, the Example 7.1, and the program runs as follows (I haven't found out how to insert my codes here, otherwise I would post them) all matrices are $$4 \times 4$$: $$O_0$$ and $$O_3$$ are varibles, the target function is $$\min\text{tr}(O_0+O_3)$$ and the constraints are

$$O_0 \succeq 0, \qquad O_3 \succeq 0, \qquad O_0 \preceq I, \qquad O_3 \preceq I$$

$$\left( \begin{matrix}0&0.707&0&0.707\\0&0&0&0\\0&0.707&0&-0.707\\0&0&0&0 \end{matrix}\right)O_0\left( \begin{matrix}0&0&0&0\\0.707&0&0.707&0\\0&0&0&0\\0.707&0&-0.707&0 \end{matrix}\right)+\left(\begin{matrix}0&0&0&0\\0&1&0&0\\0&0&0&0\\0&0&0&1 \end{matrix}\right)O_3\left(\begin{matrix}0&0&0&0\\0&1&0&0\\0&0&0&0\\0&0&0&1 \end{matrix}\right)\succeq\left(\begin{matrix}1&0&0&0\\0&0&0&0\\0&0&0&0\\0&0&0&0 \end{matrix}\right)\\ \left( \begin{matrix}0&0.707&0&0.707\\0&0&0&0\\0&0.707&0&-0.707\\0&0&0&0 \end{matrix}\right)O_0\left( \begin{matrix}0&0&0&0\\0.707&0&0.707&0\\0&0&0&0\\0.707&0&-0.707&0 \end{matrix}\right)-O_0+\left(\begin{matrix}0&0&0&0\\0&1&0&0\\0&0&0&0\\0&0&0&1 \end{matrix}\right)O_3\left(\begin{matrix}0&0&0&0\\0&1&0&0\\0&0&0&0\\0&0&0&1 \end{matrix}\right)\succeq 0$$

The output of the program is: the optimal value is $$1.9999988116689815$$, and

$$O_0=O_3=\left(\begin{matrix}0&0&0&0\\0&0.5&0&0.5\\0&0&0&0\\0&0.5&0&0.5 \end{matrix}\right)$$

It is not hard to see that the constraints are all in the form of $$\sum\limits_i\sum\limits_j A_{ij} X_i A_{ij}^T \preceq \text{(or} \succeq\text{)} B$$ where $$X_i$$ are variables. However, for SDP algorithms(such as interior point method and cutting plane method) what we are dealing with are SDP is in the form of the standard or the dual form.However the above CVXPY solver can directly give the output without converting to standard form or dual form, so I wonder what algorithm does CVXPY actually take. I have read the guidebook of CVXPY but haven't found out where it is mentioned.I am interested in this problem because I once studied such semidefinite programs.

• No need to use \left( \begin{matrix}. Just use \begin{pmatrix}. Jun 14 at 14:56