  Constraint-solving-based program invariant synthesis involves taking a
parametric template, encoding the invariant conditions, and attempting to solve
the constraints to obtain a valid assignment of parameters. The challenge lies
in that the resulting constraints are often non-convex and lack efficient
solvers. Consequently, existing works mostly rely on heuristic algorithms or
general-purpose solvers, leading to a trade-off between completeness and
efficiency.
  In this paper, we propose two novel approaches to synthesize invariants for
polynomial programs using semidefinite programming (SDP). For basic
semialgebraic templates, we apply techniques from robust optimization to
construct a hierarchy of SDP relaxations. These relaxations induce a series of
sub-level sets that under-approximate the set of valid parameter assignments.
Under a certain non-degenerate assumption, we present a weak completeness
result that the synthesized sets include almost all valid assignments.
Furthermore, we discuss several extensions to improve the efficiency and
expressiveness of the algorithm. We also identify a subclass of basic
semialgebraic templates, called masked templates, for which the non-degenerate
assumption is violated. Regarding masked templates, we present a
substitution-based method to strengthen the invariant conditions. The
strengthened constraints again admit a hierarchy of SDP approximations. Both of
our approaches have been implemented, and empirical results demonstrate that
they outperform the state-of-the-art methods.
