English

Path-Based Program Repair

Programming Languages 2015-03-18 v1 Software Engineering

Abstract

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.

Keywords

Cite

@article{arxiv.1503.04914,
  title  = {Path-Based Program Repair},
  author = {Heinz Riener and Rüdiger Ehlers and Görschwin Fey},
  journal= {arXiv preprint arXiv:1503.04914},
  year   = {2015}
}

Comments

In Proceedings FESCA 2015, arXiv:1503.04378

R2 v1 2026-06-22T08:54:50.282Z