Experiments in applying evolutionary algorithms to software verification

Complex concurrent systems present a significant challenge for software verification. If those systems are safety-critical, the need for software verification becomes particularly pressing, given the serious consequences of unforeseen defects. Complex concurrent systems are characterised by extremely large state spaces. The use of testing techniques for verification means that very little of the state space is explored. On the other hand, model-checking techniques exhaustively examine the state space, but will be stymied by the actual size. In this paper, we discuss some preliminary experiments on the application of evolutionary algorithms to software verification. This approach does not explore the whole state space, but does use heuristics to guide the search through the most promising parts of the state space for locating errors.

[1]  Thierry Jéron,et al.  Bounded-memory Algorithms for Verification On-the-fly , 1991, CAV.

[2]  Roope Kaivola,et al.  Formal Verification of Pentium® 4 Components with Symbolic Simulation and Inductive Invariants , 2005, CAV.

[3]  Enrique Alba,et al.  Finding safety errors with ACO , 2007, GECCO '07.

[4]  Gerard J. Holzmann,et al.  The SPIN Model Checker , 2003 .

[5]  Stefan Edelkamp,et al.  Partial Order Reduction in Directed Model Checking , 2002, SPIN.

[6]  Alain Pétrowski,et al.  A clearing procedure as a niching method for genetic algorithms , 1996, Proceedings of IEEE International Conference on Evolutionary Computation.

[7]  Kalyanmoy Deb,et al.  Simulated Binary Crossover for Continuous Search Space , 1995, Complex Syst..

[8]  Gerard J. Holzmann Formal methods and software reliability , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[9]  Xiaodong Yin,et al.  A Fast Genetic Algorithm with Sharing Scheme Using Cluster Analysis Methods in Multimodal Function Optimization , 1993 .

[10]  Marcus Hutter,et al.  Fitness uniform selection to preserve genetic diversity , 2001, Proceedings of the 2002 Congress on Evolutionary Computation. CEC'02 (Cat. No.02TH8600).

[11]  Gerard J. Holzmann,et al.  An Analysis of Bitstate Hashing , 1995, Formal Methods Syst. Des..

[12]  Armin Biere,et al.  Symbolic Model Checking without BDDs , 1999, TACAS.

[13]  David E. Goldberg,et al.  Genetic Algorithms with Sharing for Multimodalfunction Optimization , 1987, ICGA.

[14]  John J. Grefenstette,et al.  Genetic Algorithms for the Traveling Salesman Problem , 1985, ICGA.

[15]  Stefan Edelkamp,et al.  Directed explicit model checking with HSF-SPIN , 2001, SPIN '01.

[16]  Sarfraz Khurshid,et al.  Exploring very large state spaces using genetic algorithms , 2004, International Journal on Software Tools for Technology Transfer.

[17]  Dai Qiao-yan Genetic Algorithm for TSP , 2004 .

[18]  Helmut Veith,et al.  Counterexample-guided abstraction refinement for symbolic model checking , 2003, JACM.