## Finding and fixing faults (2005)

### Cached

### Download Links

- [mtc.epfl.ch]
- [www-verimag.imag.fr]
- [www-verimag.imag.fr]
- DBLP

### Other Repositories/Bibliography

Venue: | Paul (Eds.), 13th Conference on Correct Hardware Design and Verification Methods (CHARME ’05 |

Citations: | 26 - 5 self |

### BibTeX

@INPROCEEDINGS{Staber05findingand,

author = {Stefan Staber and Roderick Bloem},

title = {Finding and fixing faults},

booktitle = {Paul (Eds.), 13th Conference on Correct Hardware Design and Verification Methods (CHARME ’05},

year = {2005},

pages = {35--49},

publisher = {Springer-Verlag}

}

### Years of Citing Articles

### OpenURL

### Abstract

Knowing that a program has a bug is good, knowing its location is better, but a fix is best. We present a method to automatically locate and correct faults in a finite state system, either at the gate level or at the source level. We assume that the specification is given in Linear Temporal Logic, and state the correction problem as a game, in which the protagonist selects a faulty component and suggests alternative behavior. The basic approach is complete but as complex as synthesis. It also suffers from problems of readability: the correction may add state and logic to the system. We present two heuristics. The first avoids the doubly exponential blowup associated with synthesis by using nondeterministic automata. The second heuristic finds a memoryless strategy, which we show is an NP-complete problem. A memoryless strategy corresponds to a simple, local correction that does not add any state. The drawback of the two heuristics is that they are not complete unless the specification is an invariant. Our approach is general: the user can define what constitutes a component, and the suggested correction can be an arbitrary combinational function of the current state and the inputs. We show experimental results supporting the applicability of our approach.