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
TerpreT is a domain-specific language that facilitates expressing and comparing different machine learning-based approaches to program synthesis from input-output examples, enabling rapid experimentation and analysis.
Contribution
It introduces TerpreT, a probabilistic programming language for program induction, allowing flexible modeling and comparison of inference methods in program synthesis.
Findings
Constraint solvers outperform gradient descent and LP relaxations
TerpreT enables rapid exploration of program representations
Empirical comparison of inference algorithms
Abstract
We study machine learning formulations of inductive program synthesis; given input-output examples, we try to synthesize source code that maps inputs to corresponding outputs. Our aims are to develop new machine learning approaches based on neural networks and graphical models, and to understand the capabilities of machine learning techniques relative to traditional alternatives, such as those based on constraint solving from the programming languages community. Our key contribution is the proposal of TerpreT, a domain-specific language for expressing program synthesis problems. TerpreT is similar to a probabilistic programming language: a model is composed of a specification of a program representation (declarations of random variables) and an interpreter describing how programs map inputs to outputs (a model connecting unknowns to observations). The inference task is to observe a…
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 · Software Reliability and Analysis Research
