We show that the problem of designing a quantum information error correcting
procedure can be cast as a bi-convex optimization problem, iterating between
encoding and recovery, each being a semidefinite program. For a given encoding
operator the problem is convex in the recovery operator. For a given method of
recovery, the problem is convex in the encoding scheme. This allows us to
derive new codes that are locally optimal. We present examples of such codes
that can handle errors which are too strong for codes derived by analogy to
classical error correction techniques.Comment: 16 page