Path-Based Program Repair

Heinz Riener
Rüdiger Ehlers
Görschwin Fey

We propose a path-based approach to program repair for imperative programs. Our repair framework takes as input a faulty program, a logic specification that is refuted, and a hint where the fault may be located. An iterative abstraction refinement loop is then used to repair the program: in each iteration, the faulty program part is re-synthesized considering a symbolic counterexample, where the control-flow is kept concrete but the data-flow is symbolic. The appeal of the idea is two-fold: 1) the approach lazily considers candidate repairs and 2) the repairs are directly derived from the logic specification. In contrast to prior work, our approach is complete for programs with finitely many control-flow paths, i.e., the program is repaired if and only if it can be repaired at the specified fault location. Initial results for small programs indicate that the approach is useful for debugging programs in practice.

In Bara Buhnova, Lucia Happe and Jan Kofroň: Proceedings 12th International Workshop on Formal Engineering approaches to Software Components and Architectures (FESCA 2015), London, United Kingdom, April 12th, 2015, Electronic Proceedings in Theoretical Computer Science 178, pp. 22–32.
Published: 17th March 2015.

ArXived at: http://dx.doi.org/10.4204/EPTCS.178.3 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org