{"title":"Schematic Program Proofs with Abstract Execution","authors":"","doi":"10.1007/s10817-023-09692-0","DOIUrl":null,"url":null,"abstract":"<h3>Abstract</h3> <p>We propose <em>Abstract Execution</em>, a static verification framework based on symbolic execution and dynamic frames for proving properties of <em>schematic</em> programs. Since a schematic program may potentially represent infinitely many concrete programs, Abstract Execution can analyze infinitely many programs at once. Trading off expressiveness and automation, the framework allows proving many interesting (universal, behavioral) properties <em>fully automatically</em>. Its main application are correctness proofs of <em>program transformations</em> represented as pairs of schematic programs. We implemented Abstract Execution in a deductive verification framework and designed a graphical workbench supporting the modeling process. Abstract Execution has been applied to correct code refactoring, analysis of the cost impact of transformation rules, and parallelization of sequential code. Using our framework, we found and reported several bugs in the refactoring engines of the <span>Java</span> IDEs IntelliJ IDEA and Eclipse, which were acknowledged and fixed.</p>","PeriodicalId":15082,"journal":{"name":"Journal of Automated Reasoning","volume":"53 1","pages":""},"PeriodicalIF":0.9000,"publicationDate":"2024-03-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Journal of Automated Reasoning","FirstCategoryId":"94","ListUrlMain":"https://doi.org/10.1007/s10817-023-09692-0","RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q4","JCRName":"COMPUTER SCIENCE, ARTIFICIAL INTELLIGENCE","Score":null,"Total":0}
引用次数: 0
Abstract
We propose Abstract Execution, a static verification framework based on symbolic execution and dynamic frames for proving properties of schematic programs. Since a schematic program may potentially represent infinitely many concrete programs, Abstract Execution can analyze infinitely many programs at once. Trading off expressiveness and automation, the framework allows proving many interesting (universal, behavioral) properties fully automatically. Its main application are correctness proofs of program transformations represented as pairs of schematic programs. We implemented Abstract Execution in a deductive verification framework and designed a graphical workbench supporting the modeling process. Abstract Execution has been applied to correct code refactoring, analysis of the cost impact of transformation rules, and parallelization of sequential code. Using our framework, we found and reported several bugs in the refactoring engines of the Java IDEs IntelliJ IDEA and Eclipse, which were acknowledged and fixed.
摘要 我们提出的抽象执行是一个基于符号执行和动态框架的静态验证框架,用于证明示意图程序的属性。由于一个模式程序可能代表无限多的具体程序,因此抽象执行可以同时分析无限多的程序。在表现力和自动化之间权衡,该框架允许全自动证明许多有趣的(通用的、行为的)属性。抽象执行的主要应用是对以模式程序对表示的程序转换进行正确性证明。我们在一个演绎验证框架中实现了抽象执行,并设计了一个支持建模过程的图形工作台。抽象执行已被应用于正确的代码重构、转换规则的成本影响分析以及顺序代码的并行化。利用我们的框架,我们发现并报告了 Java IDE IntelliJ IDEA 和 Eclipse 重构引擎中的几个错误,这些错误得到了确认和修复。
期刊介绍:
The Journal of Automated Reasoning is an interdisciplinary journal that maintains a balance between theory, implementation and application. The spectrum of material published ranges from the presentation of a new inference rule with proof of its logical properties to a detailed account of a computer program designed to solve various problems in industry. The main fields covered are automated theorem proving, logic programming, expert systems, program synthesis and validation, artificial intelligence, computational logic, robotics, and various industrial applications. The papers share the common feature of focusing on several aspects of automated reasoning, a field whose objective is the design and implementation of a computer program that serves as an assistant in solving problems and in answering questions that require reasoning.
The Journal of Automated Reasoning provides a forum and a means for exchanging information for those interested purely in theory, those interested primarily in implementation, and those interested in specific research and industrial applications.