Summary - TerpreT: A Probabilistic Programming Language for Program Induction
Alexander L. Gaunt, Marc Brockschmidt, Rishabh Singh, Nate Kushman,, Pushmeet Kohli, Jonathan Taylor, Daniel Tarlow

TL;DR
This paper introduces TerpreT, a domain-specific language for inductive program synthesis that enables flexible modeling and comparison of various inference algorithms, revealing the dominance of constraint solvers over gradient-based methods.
Contribution
TerpreT provides a novel framework for expressing and comparing different inference methods in program synthesis, facilitating rapid domain exploration and systematic evaluation.
Findings
Constraint solvers outperform gradient descent in empirical tests
TerpreT enables flexible modeling of program synthesis problems
Systematic comparison of inference algorithms across domains
Abstract
We study machine learning formulations of inductive program synthesis; that is, given input-output examples, synthesize source code that maps inputs to corresponding outputs. Our key contribution is TerpreT, a domain-specific language for expressing program synthesis problems. A TerpreT model is composed of a specification of a program representation and an interpreter that describes how programs map inputs to outputs. The inference task is to observe a set of input-output examples and infer the underlying program. From a TerpreT model we automatically perform inference using four different back-ends: gradient descent (thus each TerpreT model can be seen as defining a differentiable interpreter), linear program (LP) relaxations for graphical models, discrete satisfiability solving, and the Sketch program synthesis system. TerpreT has two main benefits. First, it enables rapid…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Machine Learning and Algorithms
