Many programs are dedicated to converting data from one form into another. Domain specific languages allow for implementations of these data transformers, while guaranteeing desired properties, but these languages can be difficult to learn and program in. In this project, we take in a specification of the data formats, as well as a suite of examples, and synthesize a program in a data conversion DSL.
Boomerang is a language for transforming string data. A boomerang program is a "lens": it can convert from a source data format to a target data format, and back from the target to the source. These pairs of functions satisfy useful invertibility properties. In this project, we take as input two format descriptors, in the form of regular expressions, and a suite of input-output examples, and synthesize a boomerang program that converts back-and-forth between those format descriptors.
Solomon Maina, Anders Miltner, Kathleen Fisher, Benjamin Pierce, David Walker, and Steve Zdancewic. Synthesizing Quotient Lenses. In ACM SIGPLAN International Conference on Functional Programming (ICFP), St. Louis, MO, September 2018. [ conference version ]
Anders Miltner, Kathleen Fisher, Benjamin Pierce, David Walker, and Steve Zdancewic. Synthesizing Bijective Lenses. In ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), Los Angeles, CA, January 2018. [ conference version ]
This project is supported in part by DARPA grant FA8750-17-2-0028 entitled Synthesizing Data Wranglers and the Office of Naval Research grant 568751 entitled SynCrypt. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of DARPA or ONR.