Constraint Solving and Symbolic Execution

For many decades, the correctness of programs has been a concern for computer scientists and software engineers. At present, it is still not easy to ensure the correctness of nontrivial programs, although many researchers have made various attempts in this direction. Recently, the Verifying Compiler is proposed as a grand challenge in computing research [7]. But its goal can be achieved incrementally. The following is quoted from Hoare (page 68 of [7]): The progress of the project can be assessed by the number of lines of code that have been verified, and the level of annotation and verification that has been achieved. The relevant levels of annotations are: structural integrity, partial functional specification, total specification. The relevant levels of verification are: by testing, by human proof, by machine assistance, and fully automatic.

[1]  Jian Zhang Symbolic execution of program paths involving pointer structure variables , 2004 .

[2]  Karl N. Levitt,et al.  SELECT—a formal system for testing and debugging programs by symbolic execution , 1975 .

[3]  William R. Bush,et al.  A static analyzer for finding dynamic programming errors , 2000 .

[4]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[5]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[6]  Alan K. Mackworth Constraint Satisfaction , 1985 .

[7]  C. A. R. Hoare The Verifying Compiler, a Grand Challenge for Computing Research , 2005, VMCAI.

[8]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[9]  Patrick Cousot,et al.  The ASTR ´ EE Analyzer , 2005 .

[10]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[11]  Jian Zhang,et al.  A Constraint Solver and Its Application to Path Feasibility Analysis , 2001, Int. J. Softw. Eng. Knowl. Eng..

[12]  Jian Zhang,et al.  Path-oriented test data generation using symbolic execution and constraint solving techniques , 2004, Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004. SEFM 2004..

[13]  Stuart C. Shapiro,et al.  Encyclopedia of artificial intelligence, vols. 1 and 2 (2nd ed.) , 1992 .

[14]  William R. Bush,et al.  A static analyzer for finding dynamic programming errors , 2000, Softw. Pract. Exp..

[15]  Barr and Feigenbaum Edward A. Avron,et al.  The Handbook of Artificial Intelligence , 1981 .

[16]  C. A. R. Hoare Assertions in modern software engineering practice , 2002, Proceedings 26th Annual International Computer Software and Applications.

[17]  Richard Lippmann,et al.  Testing static analysis tools using exploitable buffer overflows from open source code , 2004, SIGSOFT '04/FSE-12.