Skip to content
Back to the collection

Neural Guided Constraint Logic Programming for Program Synthesis

Lisa Zhang, Gregory Rosenblatt, Ethan Fetaya

Show all 8 authors

Renjie Liao, William E. Byrd, Matthew Might, Raquel Urtasun, Richard Zemel

2018 · arXiv

Read the paper
HN score
0
Mentions
3
Readers
3
Months
3
What’s in a score?

From the abstract

Synthesizing programs using example input/outputs is a classic problem in artificial intelligence. We present a method for solving Programming By Example (PBE) problems by using a neural model to guide the search of a constraint logic programming system called miniKanren. Crucially, the neural model uses miniKanren's internal representation as input; miniKanren represents a PBE problem as recursive constraints imposed by the provided examples. We explore Recurrent Neural Network and Graph Neural Network models. We contribute a modified miniKanren, drivable by an external agent, available at https://github.com/xuexue/neuralkanren. We show that our neural-guided approach using constraints can synthesize programs faster in many cases, and importantly, can generalize to larger problems.

Metadata: arXiv. Abstracts retain their original authors’ rights.

In the conversation

Original HN comments, with labels from simple text rules. A label describes the whole comment and may miss context or irony. Read the discussion to make up your own mind. About the labels

3 selected excerpts · 3 total mentions

eihli
Neutral mention · rule
Hey! Thanks for all of the work you do. I love reading your stuff. Lately, I've been playing a lot with the code from Neural Guided Constraint Logic Programming for Program Synthesis [1]. I want to apply it to searching for neural network architectures. Something like: (define-relation (layero layer in out) ;; [2] (conde ((== layer `(Linear ,in ,out))) ((== layer `(Relu ,in ,out)) (== in out)) ((fresh (percent) (== layer `(Dropout ,in ,out ,percent)) (== in out) (countero percent) (<o '(1) percent) (<o percent '(0 0 1 0 0 1 1)))))) And a `layerso` that is just a sequence of `layers`. And then use some metric that captures how effective the training run was and use that…
Read the full comment
metric for teaching the search network. I'm sure there's better ways to do it than the way I'm going about it. But it's a fun way to learn a bunch of cool new stuff. Thanks for getting me started down this path! [1] https://arxiv.org/abs/1809.02840 [2] https://github.com/eihli/reason/blob/523920773b7040325c8098a...
abeppu
Neutral mention · rule
> I call it program synthesis. In ChatGPT you can get ChatGPT to generate code, so this kind of already exists. This is cool, but to be clear work on program synthesis predates ChatGPT by _decades_. For a long time the work was searching for a program which met some behavioral specification. Emphasis shifted later towards inductive "programming-by-example" where we synthesize a program based on a small set of inputs and outputs, in part because providing those examples is often easier than thinking through an exact "specification" of what you want. Some work from the '70s https://dl.acm.org/doi/10.1145/362566.362568 https://dl.acm.org/doi/10.5555/1624626.1624666 Some 21st century work on inductive synthesis https://link.springer.com/chapter/10.1007/978-3-319-21690-4_... ML + symbolic inductive synthesis: https://arxiv.org/pdf/1809.02840v1.pdf

Keep following the thread.

More in Programming languages

More from the same topics.

2018arXiv

Talent vs Luck: the role of randomness in success and failure

A. Pluchino. A. E. Biondo, A. Rapisarda

The largely dominant meritocratic paradigm of highly competitive Western cultures is rooted on the belief that success is due mainly, if not exclusively, to personal qualities such as talent, intelligence, skills, efforts or risk taking.

16 mentions14 months
2.5HN score