Specification-based program repair using SAT
Divya Gopinath,Muhammad Zubair Malik,Sarfraz Khurshid +2 more
- 26 Mar 2011
- pp 173-188
TL;DR: An automated approach for generating likely bug fixes using behavioral specifications to replace a faulty statement that has deterministic behavior with one that has nondeterministic behavior, and to use the specification constraints to prune the ensuing nondeterminism and repair the faulty statement.
read more
Abstract: Removing bugs in programs - even when location of faulty statements is known - is tedious and error-prone, particularly because of the increased likelihood of introducing new bugs as a result of fixing known bugs. We present an automated approach for generating likely bug fixes using behavioral specifications. Our key insight is to replace a faulty statement that has deterministic behavior with one that has nondeterministic behavior, and to use the specification constraints to prune the ensuing nondeterminism and repair the faulty statement. As an enabling technology, we use the SAT-based Alloy tool-set to describe specification constraints as well as for solving them. Initial experiments show the effectiveness of our approach in repairing programs that manipulate structurally complex data. We believe specification-based automated debugging using SAT holds much promise.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Angelix: scalable multiline program patch synthesis via symbolic analysis
Sergey Mechtaev,Jooyong Yi,Abhik Roychoudhury +2 more
- 14 May 2016
TL;DR: Angelix is a novel semantics- based repair method that scales up to programs of similar size as are handled by search-based repair tools such as GenProg and SPR, and is more scalable than previously proposed semantics based repair methods such as SemFix and DirectFix.
The ManyBugs and IntroClass Benchmarks for Automated Repair of C Programs
Claire Le Goues,Neal J. Holtschulte,Edward K. Smith,Yuriy Brun,Premkumar Devanbu,Stephanie Forrest,Westley Weimer +6 more
TL;DR: The need for a new set of benchmarks is outlined, requirements are outlined, and two datasets, ManyBugs and IntroClass, consisting between them of 1,183 defects in 15 C programs are presented, designed to support the comparative evaluation of automatic repair algorithms asking a variety of experimental questions.
371
Shaping program repair space with existing patches and similar code
Jiajun Jiang,Yingfei Xiong,Hongyu Zhang,Qing Gao,Xiangqun Chen +4 more
- 12 Jul 2018
TL;DR: This paper proposes a novel automatic program repair approach that utilizes both existing patches and similar code and obtains a concrete search space by differencing with similar code snippets and searches within the intersection of the two search spaces.
371
Automatic Software Repair: a Bibliography
TL;DR: This article considers behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle, and state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration.
361
Automated fixing of programs with contracts
Yi Wei,Yu Pei,Carlo A. Furia,Lucas Serpa Silva,Stefan Buchholz,Bertrand Meyer,Andreas Zeller +6 more
- 12 Jul 2010
TL;DR: In an extensive experimental evaluation, AutoFix was applied to over 200 faults in four code bases of different maturity and quality, demonstrating that the AutoFix approach is successfully applicable to reduce the debugging burden in real-world scenarios.
References
•Book
Software Abstractions: Logic, Language, and Analysis
Daniel Jackson
- 01 Jan 2006
TL;DR: This revised edition of Software Abstractions updates the text, examples, and appendixes to be fully compatible with the latest version of Alloy, a language that captures the essence of software abstractions simply and succinctly, using a minimal toolkit of mathematical notions.
The DaCapo benchmarks: java benchmarking development and analysis
Stephen M. Blackburn,Robin Garner,Chris Hoffmann,Asjad M. Khang,Kathryn S. McKinley,Rotem Bentzur,Amer Diwan,Daniel Feinberg,Daniel Frampton,Samuel Z. Guyer,Martin Hirzel,Antony L. Hosking,Maria Jump,Han Lee,J. Eliot B. Moss,Aashish Phansalkar,Darko Stefanovic,Thomas VanDrunen,Daniel von Dincklage,Ben Wiedermann +19 more
- 16 Oct 2006
TL;DR: This paper recommends benchmarking selection and evaluation methodologies, and introduces the DaCapo benchmarks, a set of open source, client-side Java benchmarks that improve over SPEC Java in a variety of ways, including more complex code, richer object behaviors, and more demanding memory system requirements.
Programmers use slices when debugging
TL;DR: The experiment reported here shows that programmers also routinely break programs into one kind of coherent piece which is not coniguous.
854
Automatically finding patches using genetic programming
Westley Weimer,ThanhVu Nguyen,Claire Le Goues,Stephanie Forrest +3 more
- 16 May 2009
TL;DR: A fully automated method for locating and repairing bugs in software that works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices is introduced.
Fault localization with nearest neighbor queries
M. Renieres,Steven P. Reiss +1 more
- 06 Oct 2003
TL;DR: A method for performing fault localization using similar program spectra and a generic method for establishing the quality of a report, based on the way an "ideal user" would navigate the program using the report to save effort during debugging.
762