  We develop operators for construction of proposals in probabilistic programs,
which we refer to as inference combinators. Inference combinators define a
grammar over importance samplers that compose primitive operations such as
application of a transition kernel and importance resampling. Proposals in
these samplers can be parameterized using neural networks, which in turn can be
trained by optimizing variational objectives. The result is a framework for
user-programmable variational methods that are correct by construction and can
be tailored to specific models. We demonstrate the flexibility of this
framework by implementing advanced variational methods based on amortized Gibbs
sampling and annealing.
