Defining behaviorizeable relations to enable inference in semi-automatic program synthesis

Developing and using automatic program synthesis mechanisms within Domain Specific Languages (DSLs) requires transcribing empirical knowledge and specifications to formal models. Since the related expertise is time-consuming to build, software engineers are discouraged from adopting automated synthe...

Full description

Saved in:
Bibliographic Details
Published inJournal of logical and algebraic methods in programming Vol. 123; p. 100714
Main Authors Krasanakis, Emmanouil, Symeonidis, Andreas
Format Journal Article
LanguageEnglish
Published Elsevier Inc 01.11.2021
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:Developing and using automatic program synthesis mechanisms within Domain Specific Languages (DSLs) requires transcribing empirical knowledge and specifications to formal models. Since the related expertise is time-consuming to build, software engineers are discouraged from adopting automated synthesis as a development paradigm. New approaches promise a significant reduction of human training effort by synthesizing programs from lax specifications, such as unstructured or semi-structured natural language. However, they do not introduce semantics of logical inference that would help users interact with the synthesis mechanism, for example to treat misinterpreted specifications. To cover this shortcoming, in this work we introduce the concept of behaviorizeable relations, which can be less rigorous than behavioral equivalence –and therefore allow laxer specifications– but still perform inference under implicit logical interpretations of the synthesis domain. Using these relations, we develop a generalized greedy framework that iteratively replaces parts of specifications with equivalent implementations; any behaviorizeable relation can be plugged in this framework to synthesize programs while respecting inference under a corresponding logical system. We finally perform a case study, where we define an example predicate-based behaviorizeable relation that lets our framework linearly combine blocks of Python code based on their comment similarity to natural language specifications. We use the resulting mechanism to demonstrate that implicit inference pertains to understanding how to adjust or state new specifications when lax behaviorizeable relations are employed. •We investigate program synthesis with informal inputs but formal guarantees.•We introduce the family of behaviorizeable relations for lax specification matching.•These let substitution-based synthesis perform inference in an underlying logic.•We develop a greedy synthesis framework to use with any behaviorizeable relation.•A case study on combining Python methods demonstrates learnability and scalability.
ISSN:2352-2208
DOI:10.1016/j.jlamp.2021.100714