Gaunt 2016 - TerpreT: A Probabilistic Programming Language for Program Induction “The inference task is to observe a set of input-output examples and infer the underlying program… (we) automatically perform inference using four different back-ends that include machine learning and program synthesis approaches. These are based on gradient descent (thus each specification can be seen as a differentiable interpreter), linear program (LP) relaxations for graphical models, discrete satisfiability solving, and the Sketch program synthesis system.”