  One of the fundamental goals of nanotechnology is to exploit selective and
directional interactions between molecules to design particles that
self-assemble into desired structures, from capsids, to nano-clusters, to fully
formed crystals with target properties (e.g. optical, mechanical, etc.). Here
we provide a general framework which transforms the inverse problem of
self-assembly of colloidal crystals into a Boolean satisfiability problem for
which solutions can be found numerically. Given a reference structure and the
desired number of components, our approach produces designs for which the
target structure is an energy minimum, and also allows to exclude solutions
that correspond to competing structures. We demonstrate the effectiveness of
our approach by designing model particles that spontaneously nucleate milestone
structures such as the cubic diamond, the pyrochlore and the clathrate
lattices.
