  This paper develops a new storage-optimal algorithm that provably solves
generic semidefinite programs (SDPs) in standard form. This method is
particularly effective for weakly constrained SDPs. The key idea is to
formulate an approximate complementarity principle: Given an approximate
solution to the dual SDP, the primal SDP has an approximate solution whose
range is contained in the eigenspace with small eigenvalues of the dual slack
matrix. For weakly constrained SDPs, this eigenspace has very low dimension, so
this observation significantly reduces the search space for the primal
solution.
  This result suggests an algorithmic strategy that can be implemented with
minimal storage:
  (1) Solve the dual SDP approximately;
  (2) compress the primal SDP to the eigenspace with small eigenvalues of the
dual slack matrix;
  (3) solve the compressed primal SDP.
  The paper also provides numerical experiments showing that this approach is
successful for a range of interesting large-scale SDPs.
