3,983 research outputs found
Synthesizing Program Input Grammars
We present an algorithm for synthesizing a context-free grammar encoding the
language of valid program inputs from a set of input examples and blackbox
access to the program. Our algorithm addresses shortcomings of existing grammar
inference algorithms, which both severely overgeneralize and are prohibitively
slow. Our implementation, GLADE, leverages the grammar synthesized by our
algorithm to fuzz test programs with structured inputs. We show that GLADE
substantially increases the incremental coverage on valid inputs compared to
two baseline fuzzers
The Usability of Pragmatic Communication in Regular Expression Synthesis
Programming-by-example (PBE) systems aim to alleviate the burden of
programming. However, user-specified examples are often ambiguous, leaving
multiple programs to satisfy the specification. Consequently, in most prior
work, users have had to provide additional examples, particularly negative
ones, to further constrain the search over compatible programs. Recent work
resolves additional ambiguity by modeling program synthesis tasks as pragmatic
communication, showing promising results on a graphics domain using a
rudimentary user-study. We adapt pragmatic reasoning to a sub-domain of regular
expressions and rigorously study its usability as a means of communication both
with and without the ability to provide negative examples. Our user study
(N=30) demonstrates that, with a pragmatic synthesizer, end-users can more
successfully communicate a target regex using positive examples alone (95%)
compared to using a non-pragmatic synthesizer (51%). Further, users can
communicate more efficiently (57% fewer examples) with a pragmatic synthesizer
compared to a non-pragmatic one
trackr: A Framework for Enhancing Discoverability and Reproducibility of Data Visualizations and Other Artifacts in R
Research is an incremental, iterative process, with new results relying and
building upon previous ones. Scientists need to find, retrieve, understand, and
verify results in order to confidently extend them, even when the results are
their own. We present the trackr framework for organizing, automatically
annotating, discovering, and retrieving results. We identify sources of
automatically extractable metadata for computational results, and we define an
extensible system for organizing, annotating, and searching for results based
on these and other metadata. We present an open-source implementation of these
concepts for plots, computational artifacts, and woven dynamic reports
generated in the R statistical computing language
- …