{"title":"From Decision Procedures to Synthesis Procedures","authors":"R. Piskac","doi":"10.1109/SYNASC.2015.78","DOIUrl":null,"url":null,"abstract":"Software synthesis is a technique for automatically generating code from a given specification. The goal of software synthesis is to make software development easier while increasing both the productivity of the programmer and the correctness of the produced code. In this paper we present an approach to synthesis that relies on the use of automated reasoning and decision procedures. First we describe how to generalize decision procedures into predictable and complete synthesis procedures.Here completeness means that the procedure is guaranteed to find code that satisfies the given specification. We illustrate the process of turning a decision procedure into a synthesis procedure using linear integer arithmetic as an example.However, writing a complete specification can be a tedious task,sometimes even harder than writing the code itself. To over come this problem, ideally the user could provide a few input-output examples, and then the code should be automatically derived.We outline how to broaden usability and applications of current software synthesis techniques. We conclude with an outlook on possible future research directions and applications of synthesis procedures.","PeriodicalId":6488,"journal":{"name":"2015 17th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC)","volume":"91 1","pages":"3-10"},"PeriodicalIF":0.0000,"publicationDate":"2015-09-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2015 17th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/SYNASC.2015.78","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Software synthesis is a technique for automatically generating code from a given specification. The goal of software synthesis is to make software development easier while increasing both the productivity of the programmer and the correctness of the produced code. In this paper we present an approach to synthesis that relies on the use of automated reasoning and decision procedures. First we describe how to generalize decision procedures into predictable and complete synthesis procedures.Here completeness means that the procedure is guaranteed to find code that satisfies the given specification. We illustrate the process of turning a decision procedure into a synthesis procedure using linear integer arithmetic as an example.However, writing a complete specification can be a tedious task,sometimes even harder than writing the code itself. To over come this problem, ideally the user could provide a few input-output examples, and then the code should be automatically derived.We outline how to broaden usability and applications of current software synthesis techniques. We conclude with an outlook on possible future research directions and applications of synthesis procedures.