Leveraging Constraint Logic Programming for Neural Guided Program Synthesis

We present a method for solving Programming by Example (PBE) problems that tightly integrates a neural network with a constraint logic programming system called miniKanren. Internally, miniKanren searches for a program that satisfies the recursive constraints imposed by the provided examples. Our Recurrent Neural Network (RNN) model uses these constraints as input to score candidate programs. We show evidence that using our method to guide miniKanren’s search is a promising approach to solving PBE problems.

[1]  M.N. Sastry,et al.  Structure and interpretation of computer programs , 1986, Proceedings of the IEEE.

[2]  Jürgen Schmidhuber,et al.  Long Short-Term Memory , 1997, Neural Computation.

[3]  D. Friedman,et al.  From Variadic Functions to Variadic Relations A miniKanren Perspective , 2006 .

[4]  William E. Byrd,et al.  miniKanren, live and untagged: quine generation via relational interpreters (programming pearl) , 2012, Scheme '12.

[5]  Sumit Gulwani,et al.  Recursive Program Synthesis , 2013, CAV.

[6]  Peter-Michael Osera,et al.  Type-and-example-directed program synthesis , 2015, PLDI.

[7]  Isil Dillig,et al.  Synthesizing data structure transformations from input-output examples , 2015, PLDI.

[8]  Samy Bengio,et al.  Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks , 2015, NIPS.

[9]  Quoc V. Le,et al.  Neural Programmer: Inducing Latent Programs with Gradient Descent , 2015, ICLR.

[10]  Tom Schaul,et al.  Prioritized Experience Replay , 2015, ICLR.

[11]  William E. Byrd,et al.  A unified approach to solving seven programming problems (functional pearl) , 2017, Proc. ACM Program. Lang..

[12]  Pushmeet Kohli,et al.  RobustFill: Neural Program Learning under Noisy I/O , 2017, ICML.

[13]  Lihong Li,et al.  Neuro-Symbolic Program Synthesis , 2016, ICLR.

[14]  Sebastian Nowozin,et al.  DeepCoder: Learning to Write Programs , 2016, ICLR.

[15]  Sumit Gulwani,et al.  Neural-Guided Deductive Search for Real-Time Program Synthesis from Examples , 2018, ICLR.