Learning to Represent Programs with Property Signatures

preprint2020arXivOpen access

Abstract

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τ_{in} and output type τoutτ_{out}, a property is a function of type: (τin,τout)→Bool(τ_{in}, τ_{out}) \rightarrow \texttt{Bool} that (informally) describes some simple property of the function under consideration. For instance, if τinτ_{in} and τoutτ_{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.

Explore this paper’s authors, topics and related work.

Building this map preview

BZPEER is loading the nearby papers, people, topics and institutions for this page.

Reviews 0

Write a reviewWrite

No reviews yet.

Discussion 0

Add a commentWrite

No comments yet.