10 research outputs found

    Relational program synthesis with numerical reasoning

    Full text link
    Program synthesis approaches struggle to learn programs with numerical values. An especially difficult problem is learning continuous values over multiple examples, such as intervals. To overcome this limitation, we introduce an inductive logic programming approach which combines relational learning with numerical reasoning. Our approach, which we call NUMSYNTH, uses satisfiability modulo theories solvers to efficiently learn programs with numerical values. Our approach can identify numerical values in linear arithmetic fragments, such as real difference logic, and from infinite domains, such as real numbers or integers. Our experiments on four diverse domains, including game playing and program synthesis, show that our approach can (i) learn programs with numerical values from linear arithmetical reasoning, and (ii) outperform existing approaches in terms of predictive accuracies and learning times

    Learning-Based Automatic Synthesis of Software Code and Configuration

    Full text link
    Increasing demands in software industry and scarcity of software engineers motivates researchers and practitioners to automate the process of software generation and configuration. Large scale automatic software generation and configuration is a very complex and challenging task. In this proposal, we set out to investigate this problem by breaking down automatic software generation and configuration into two different tasks. In first task, we propose to synthesize software automatically with input output specifications. This task is further broken down into two sub-tasks. The first sub-task is about synthesizing programs with a genetic algorithm which is driven by a neural network based fitness function trained with program traces and specifications. For the second sub-task, we formulate program synthesis as a continuous optimization problem and synthesize programs with covariance matrix adaption evolutionary strategy (a state-of-the-art continuous optimization method). Finally, for the second task, we propose to synthesize configurations of large scale software from different input files (e.g. software manuals, configurations files, online blogs, etc.) using a sequence-to-sequence deep learning mechanism.Comment: arXiv admin note: text overlap with arXiv:2211.0082

    Middle-out reasoning for synthesis and induction

    Get PDF
    We develop two applications of middle-out reasoning in inductive proofs: Logic program synthesis and the selection of induction schemes. Middle-out reasoning as part of proof planning was first suggested by Bundy et al [Bundy et al 90a]. Middle-out reasoning uses variables to represent unknown terms and formulae. Unification instantiates the variables in the subsequent planning, while proof planning provides the necessary search control. Middle-out reasoning is used for synthesis by planning the verification of an unknown logic program: The program body is represented with a meta-variable. The planning results both in an instantiation of the program body and a plan for the verification of that program. If the plan executes successfully, the synthesized program is partially correct and complete. Middle-out reasoning is also used to select induction schemes. Finding an appropriate induction scheme during synthesis is difficult, because the recursion of the program, which is un..

    Computer Aided Verification

    Get PDF
    The open access two-volume set LNCS 12224 and 12225 constitutes the refereed proceedings of the 32st International Conference on Computer Aided Verification, CAV 2020, held in Los Angeles, CA, USA, in July 2020.* The 43 full papers presented together with 18 tool papers and 4 case studies, were carefully reviewed and selected from 240 submissions. The papers were organized in the following topical sections: Part I: AI verification; blockchain and Security; Concurrency; hardware verification and decision procedures; and hybrid and dynamic systems. Part II: model checking; software verification; stochastic systems; and synthesis. *The conference was held virtually due to the COVID-19 pandemic

    Learning-Based Automated Software Creation

    Get PDF
    Increasing demands in software industry and scarcity of software engineers motivates researchers and practitioners to explore avenues for automating various aspects of software engineering. Automated software generation and the development of tools to streamline the software generation process are significant components among the various processes of software engineering. Therefore, we set out to investigate two major tasks of software engineering to make the process more easier and convenient for the software engineer. Our first task is automated software generation. Automated software generation, which is also known as program synthesis, is a complex and challenging task. We investigate two different sub-tasks for automatically synthesizing programs using provided specifications. In our research, we utilize input-output examples as the specification for both methods. The first sub-task involves the use of a genetic algorithm (GA) to synthesize programs. In this approach, we train a neural network-based fitness function with input-output specifications and program traces. For the second sub-task, we formulate the program synthesis process as a continuous optimization problem and leverage covariance matrix adaption evolutionary strategy (CMA-ES) to solve it. The second task of our study focuses on exploring the synthesis process of software configuration specifications from natural language text. Configurations for large software systems are typically configured by human, and due to the vast number of configurations involved, their specifications are often described in software manuals written in natural language specifically in English. Our research seeks to investigate the process of synthesizing specifications from natural language-based sources. To achieve this, we formulate the specification synthesis process as an end-to-end sequence-to-sequence learning process and integrate large language models to improve the understanding and extraction of specification from the text

    Relational program synthesis

    No full text

    Relational program synthesis with numerical reasoning

    No full text
    Learning programs with numerical values is fundamental to many AI applications, including bio-informatics and drug design. However, current program synthesis approaches struggle to learn programs with numerical values. An especially difficult problem is learning continuous values from multiple examples, such as intervals. To overcome this limitation, we introduce an inductive logic programming approach which combines relational learning with numerical reasoning. Our approach, which we call NumSynth, uses satisfiability modulo theories solvers to efficiently learn programs with numerical values. Our approach can identify numerical values in linear arithmetic fragments, such as real difference logic, and from infinite domains, such as real numbers or integers. Our experiments on four diverse domains, including game playing and program synthesis, show that our approach can (i) learn programs with numerical values from linear arithmetical reasoning, and (ii) outperform existing approaches in terms of predictive accuracies and learning times
    corecore