PLLGFeb 13, 2020

Learning to Represent Programs with Property Signatures

arXiv:2002.09030v134 citations
AI Analysis

This addresses the challenge of program synthesis for developers by providing a more efficient representation, though it appears incremental as it builds on existing synthesizer methods.

The paper tackles the problem of representing programs for machine learning by introducing property signatures, which capture simple properties of functions from input/output pairs, and demonstrates that using these signatures improves a baseline synthesizer to emit twice as many programs in less than one-tenth of the time.

We introduce the notion of property signatures, a representation for programs and program specifications meant for consumption by machine learning algorithms. Given a function with input type $τ_{in}$ and output type $τ_{out}$, a property is a function of type: $(τ_{in}, τ_{out}) \rightarrow \texttt{Bool}$ that (informally) describes some simple property of the function under consideration. For instance, if $τ_{in}$ and $τ_{out}$ are both lists of the same type, one property might ask `is the input list the same length as the output list?'. If we have a list of such properties, we can evaluate them all for our function to get a list of outputs that we will call the property signature. Crucially, we can `guess' the property signature for a function given only a set of input/output pairs meant to specify that function. We discuss several potential applications of property signatures and show experimentally that they can be used to improve over a baseline synthesizer so that it emits twice as many programs in less than one-tenth of the time.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes