Academia.eduAcademia.edu

Program Synthesis

description376 papers
group18 followers
lightbulbAbout this topic
Program synthesis is the process of automatically generating computer programs from high-level specifications or examples. It combines techniques from formal methods, artificial intelligence, and programming languages to create software that meets specified requirements, often enhancing productivity and reducing errors in software development.
lightbulbAbout this topic
Program synthesis is the process of automatically generating computer programs from high-level specifications or examples. It combines techniques from formal methods, artificial intelligence, and programming languages to create software that meets specified requirements, often enhancing productivity and reducing errors in software development.

Key research themes

1. How can syntax and reinforcement learning be leveraged to improve neural program synthesis under incomplete specifications?

This research theme addresses the limitations of neural program synthesis methods that rely on supervised maximum likelihood training with single reference programs. Specifically, it focuses on mitigating the program aliasing problem—where multiple programs satisfy the same input-output specification—and on incorporating syntactic constraints to efficiently prune the search space. These improvements matter because they enhance synthesis accuracy and generalization in domains with few input-output examples and enable the generation of syntactically valid programs without explicit grammar definitions.

Key finding: This paper demonstrates that incorporating reinforcement learning with a policy gradient objective that optimizes for generating any consistent program significantly outperforms pure maximum likelihood training, effectively... Read more

2. How can program synthesis be unified and scaled for diverse static program analysis tasks using logical specifications and domain-specific synthesis?

This theme explores the integration of program synthesis techniques into static program analysis for tasks such as safety proving, bug finding, and termination analysis. It centers on defining an expressive yet decidable fragment of second-order logic (the synthesis fragment) that can model these analyses, enabling a unified declarative framework. The importance lies in reducing the complexity and specialization of static analysis tools, fostering synergy between analyses, and facilitating automatic synthesizer construction for multiple verification tasks, particularly focusing on bit-vector programs over finite domains.

Key finding: The authors formulate a synthesis fragment of second-order logic expressive enough to represent varied static analysis problems and develop a specialized program synthesizer for loop-free bit-vector programs that operates... Read more

3. What abstraction and counterexample-guided refinement techniques can improve search scalability in example-based program synthesis?

This theme investigates how leveraging abstract semantics over concrete semantics can reduce the search space in program synthesis from input-output examples. By grouping programs that behave equivalently on abstract values, the approach shrinks the space of candidate programs and addresses scalability issues inherent in enumerative and concrete-semantics-based synthesis. The key insight involves integrating a counterexample-guided abstraction refinement loop to iteratively refine abstractions and eliminate spurious synthesized programs, thus converging efficiently to correct concrete solutions.

Key finding: The authors introduce SYNGAR, a synthesis algorithm that operates on abstract finite tree automata (AFTA) representing sets of programs equivalent under abstract semantics. The approach begins with coarse program abstractions... Read more

4. How can interactive and mixed-initiative program synthesis enhance program correctness, generalization, and scalability in educational settings?

This theme focuses on leveraging user interactivity, domain expert knowledge, and program transformations in program synthesis to improve the correctness and usability of synthesized programs. Mixed-initiative approaches combine synthesis algorithms with teacher expertise to refine bug fixes, generate reusable feedback, and cluster student submissions for scalable education. Interactive synthesis frameworks model incremental, step-based, and feedback-driven specification refinement, reducing ambiguity and cognitive load, which is vital for non-programmer users and large-scale instructional environments.

Key finding: This work presents two systems, MISTAKEBROWSER and FIXPROPAGATOR, which integrate data-driven program synthesis with teacher input to learn bug-fixing code transformations from student-written or teacher-written fixes. By... Read more
Key finding: The authors propose a formal model of interactivity in program synthesis along three dimensions: incremental constraint specification, step-wise problem decomposition, and feedback-driven refinement. This interactive... Read more

5. How can neural and generator-based program synthesis frameworks handle large, complex APIs to synthesize domain-specific programs from input-output examples?

This theme investigates challenges and solutions in applying programming-by-example synthesis techniques to rich, complex APIs with hundreds of functions and intricate argument semantics, such as data transformation libraries. To address the combinatorial explosion in the candidate program space and argument constraints, the research introduces generator-based synthesis engines that incorporate expert domain knowledge and neural-backed heuristic operators. The key insight is combining deterministic candidate generation with learned models to prioritize promising program candidates, thus balancing correctness, scalability, and usability for novice API users.

Key finding: This work presents a synthesis approach targeting large, real-world data transformation APIs, exemplified by pandas, by encoding domain-specific constraints within a candidate program generator to produce only well-formed API... Read more

All papers in Program Synthesis

The unification algorithm has long been a target for program synthesis research, but a fully automatic derivation remains a research goal. In deductive program synthesis, computer programming is phrased as a task in theorem proving; a... more
Achieving ultra-high reliability in AI-generated code demands a systematic, multi-layered filtration framework that spans syntactic enforcement, semantic analysis, dynamic testing, and formal verification. This paper surveys existing... more
We propose the use of the logic S1S as a mathematical framework for studying the synthesis of sequential designs. We will show that this leads to simple and mathematically elegant solutions to problems arising in the synthesis and... more
To help make logic programming more suitable for writing large systems, we develop linguistic mechanisms that permit the organization of logic programs around abstractions. In particular, we present the design of Denali, an equational... more
Recent developments in natural language processing (NLP) have highlighted the need for substantial amounts of data for models to capture textual information accurately. This raises concerns regarding the computational resources and time... more
This paper provides an overview of a program synthesis system for a class of quantum chemistry computations. These computations are expressible as a set of tensor contractions and arise in electronic structure modeling. The input to the... more
Virtual integration techniques focus on building architectural models of systems that can be analyzed early in the design cycle to try to lower cost, reduce risk, and improve quality of complex embedded systems. Given appropriate... more
Recently the field of theory update has seen some improvement, in what concerns model updating, by allowing updates to be specified by so-called revision programs. The updating of theory models is governed by their update rules and also... more
Software engineering, automated reasoning, rule-based programming or specifications often use rewriting systems for which termination, among other properties, may have to be ensured. This paper presents the approach developed in Project... more
This article describes a new project to study the memory performance of three new implementation strategies for closures coined bytecode closures. The project proposes to compare the new implementation strategies to the classical strategy... more
Currently, Web services give place to active research and this is due both to industrial and theoretical factors. On one hand, Web services are essential as the design model of applications dedicated to the electronic business. On the... more
Syntax-guided synthesis (SyGuS) is the computational problem of finding an implementation f that meets both a semantic constraint given by a logical formula ϕ in a background theory T , and a syntactic constraint given by a grammar G,... more
Logic has proven to be of prime importance in many areas of Science and, in particular, in AI and Computer Science. Many logics have been developed to contend with the various kinds of reasoning required by a vast number of research... more
In program synthesis, we transform a specification into a program that is guaranteed to satisfy the specification. In synthesis of reactive systems, the environment in which the program operates may behave nondeterministically, e.g., by... more
While editing code, it is common for developers to make multiple related repeated edits that are all instances of a more general program transformation. Since this process can be tedious and error-prone, we study the problem of... more
In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation... more
We present a novel approach to automatic synthesis of loopfree programs. The approach is based on a combination of oracle-guided learning from examples, and constraint-based synthesis from components using satisfiability modulo theories... more
Formal Methods has been proven to improve software quality and provide a method of systematic software construction. However, it has yet to gain widespread acceptance in the software industry. In this paper we look at the benefits to be... more
With help of a compact Prolog-based theorem prover for Intuitionistic Propositional Logic, we synthesize minimal assumptions under which a given formula formula becomes a theorem. After applying our synthesis algorithm to cover basic... more
There has been developed and implemented an algorithm for the automatic synthesis of therapy plans for complex dynamic systems. This algorithm is the core of some control synthesis module which is embedded in a larger knowledge-based... more
Context: Recent advancements in the applicability of neural networks across a variety of fields, such as computer vision, natural language processing and others, have re-sparked an interest in program induction methods. (Kitzelman [1] ,... more
Automated synthesis of reactive systems from specifications has been a topic of research for decades. Recently, a variety of approaches have been proposed to extend synthesis of reactive systems from propositional specifications towards... more
Benchmarks are heavily used in different areas of computer science to evaluate algorithms and tools. In program analysis and testing, open-source and commercial programs are routinely used as benchmarks to evaluate different aspects of... more
This paper contains some case studies on the systematic exploration of Tuple Theory. This Tuple Theory is explored in literature, but we choose to formalize it in the Theorema system. A tuple is described like an element added to a... more
The advice and concern of Melba Crawford. For the military guidance and technical issues Lt Col Brigantic and LTC Seise provided. Support, encouragement and occasional kick in the pants from Wes Barnes. I could never ask for a better... more
The advice and concern of Melba Crawford. For the military guidance and technical issues Lt Col Brigantic and LTC Seise provided. Support, encouragement and occasional kick in the pants from Wes Barnes. I could never ask for a better... more
In program synthesis, we transform a specification into a program that is guaranteed to satisfy the specification. In synthesis of reactive systems, the environment in which the program operates may behave nondeterministically, e.g., by... more
Automated theorem proving based upon a tableau-method with unification under restrictions
We present a method for the synthesis of polynomial lasso programs. These programs consist of a program stem, a set of transitions, and an exit condition, all in the form of algebraic assertions (conjunctions of polynomial equalities).... more
The automatic programming and automatic software synthesis systems are relevant software engineering research objects. This article presents the prospects of induction as a component-based software synthesis method. The usage of induction... more
We outline the progress we have made in connection with the Alvey Grant "Proving Properties of Logic Programs" (SERC GRjDj44270 and Alvey IKBS 137).
Building program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an... more
Currently, Web services give place to active research and this is due both to industrial and theoretical factors. On one hand, Web services are essential as the design model of applications dedicated to the electronic business. On the... more
There is a growing interest in adopting Deep Learning (DL) given its superior performance in many domains. However, modern DL frameworks such as TensorFlow often come with a steep learning curve. In this work, we propose INTENT, an... more
With help of a compact Prolog-based theorem prover for Intuitionistic Propositional Logic, we synthesize minimal assumptions under which a given formula formula becomes a theorem. After applying our synthesis algorithm to cover basic... more
Over the last few years, the automata-theoretic approach to realizability checking and synthesis of reactive modules, developed by Pnueli and Rosner, by Abadi, Lamport, and Wolper, and by Dill and Wong-Toi, has been quite successful,... more
One of the outstanding problems of software engineering is the development of a program specification system which is rigorous, unambiguous, and powerful; yet one which is flexible, easy to use, and natural. This paper takes a step in... more
Program synthesis techniques offer the potential to allow nonprogrammers to create computer programs. Approaches based on evolutionary algorithms are known for their performance in program synthesis. Since 2015, the general program... more
The classical formulation of the program-synthesis problem is to find a program that meets a correctness specification given as a logical formula. Recent work on program synthesis and program optimization illustrates many potential... more
The standard technique for LTL model checking (M |= ¬ϕ) consists on translating the negation of the LTL specification, ϕ, into a Büchi automaton Aϕ, and then on checking if the product M × Aϕ has an empty language. The efforts to maximize... more
The past study of program synthesis has mainly concentrated on attempting to synthesise programs by duplicating human methods for constructing programs, such as top-down design. Here we do not attempt this process but instead use a simple... more
Software Product Lines (SPLs) seek to achieve gains in productivity and time to market. Many companies in several domains are constantly adopting SPLs. Dealing with SPLs begin after companies find themselves with successful variants of a... more
We discuss the question of whether the central result of algorithmic Gröbner bases theory, namely the notion of S-polynomials together with the algorithm for constructing Gröbner bases using S-polynomials, can be obtained by "artificial... more
Download research papers for free!