a symbolic approach towards constraint based software verification

Verification and validation (V&V) are two components of the software engineering process that are critical to achieve reliability that can account for up to 50% of the cost of software development [24]. Numerous techniques ranging from formal proofs to testing methods exist to verify whether programs conform to their specifications. Recently, constraint programming techniques for V&V have emerged [18, 24]: they use the idea of proof by contradiction. They typically aim at proving that the code is inconsistent with the negation of the specification, which means that the software conforms to its specifications. Although the framework seems straightforward, the number of generated constraints can be high and the solving process tedious. In this work, we propose ideas for improvement based on symbolic manipulation of the constraints to be solved. Our approach differs from the current approach in its way to determine the compliance of the code with respect to its specification. Instead of using numeric solvers, we designed symbolic techniques to check compliance between the code and its specification. We analyzed how much practical the approach is if the program is correct and if the program is incorrect: can we make the verification process faster by applying our rules? CPBPV: a Constraint-Programming Framework for Bounded Program Verification [25], the work done by H. Collavizza, M. Rueher, and P. Hentenryck is the inspiration for our work. We established that our approach is feasible, and our experimental results prove that our proposed method is a promising addition to the existing framework to eliminate some of the basic challenges associated with constraint-based software verification.

[1]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[2]  Roland Carl Backhouse,et al.  Program construction and verification , 1986, PHI Series in computer science.

[3]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[4]  R. Baker Kearfott,et al.  Introduction to Interval Analysis , 2009 .

[5]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[6]  Hélène Collavizza,et al.  Exploration of the Capabilities of Constraint Programming for Software Verification , 2006, TACAS.

[7]  Pascal Van Hentenryck,et al.  CLP(Intervals) Revisited , 1994, ILPS.

[8]  Sigrid Eldh Software Testing Techniques , 2007 .

[9]  R. B. Whitner,et al.  Guidelines for selecting and using simulation model verification techniques , 1989, WSC '89.

[10]  Edmund M. Clarke,et al.  Model checking and theorem proving: a unified framework , 2002 .

[11]  Arnaud Gotlieb,et al.  Symbolic execution of floating-point computations: Research Articles , 2006 .

[12]  John Cocke,et al.  A program data flow analysis procedure , 1976, CACM.

[13]  Frédéric Benhamou,et al.  Algorithm 852: RealPaver: an interval solver using constraint satisfaction techniques , 2006, TOMS.

[14]  Pascal Van Hentenryck,et al.  CPBPV: a constraint-programming framework for bounded program verification , 2009, Constraints.

[15]  Richard C. Waters System validation via constraint modeling , 1991, SIGP.

[16]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[17]  L. Granvilliers,et al.  Realpaver User's Manual , 2022 .

[18]  Osman Balci Validation, verification, and testing techniques throughout the life cycle of a simulation study , 1994, WSC '94.

[19]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

[20]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[21]  Enver Yücesan,et al.  Building correct simulation models is difficult , 1992, WSC '92.

[22]  Enver Yücesan,et al.  Computational issues for accessibility in discrete event simulation , 1996, TOMC.

[23]  Edward Yourdon,et al.  Structured walkthroughs , 1978 .

[24]  Andrew W. Appel,et al.  Modern Compiler Implementation in Java , 1997 .

[25]  Arnaud Gotlieb,et al.  Automatic test data generation using constraint solving techniques , 1998, ISSTA '98.

[26]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[27]  C. M. Holloway Why engineers should consider formal methods , 1997, 16th DASC. AIAA/IEEE Digital Avionics Systems Conference. Reflections to the Future. Proceedings.

[28]  Allan M. Stavely Toward Zero Defect Programming , 1998 .

[29]  Arnaud Gotlieb,et al.  Symbolic execution of floating‐point computations , 2006, Softw. Test. Verification Reliab..

[30]  W. T. Harwood,et al.  The specification of complex systems , 1986 .

[31]  Dennis de Champeaux,et al.  Bidirectional Heuristic Search Again , 1983, JACM.

[32]  Sanjeev Khanna,et al.  Logic Programming for Software Verification and Testing , 1991, Comput. J..

[33]  Bruno Marre,et al.  Improving the Floating Point Addition and Subtraction Constraints , 2010, CP.

[34]  Kern W. Dickman Principles of computer programming , 1964 .

[35]  Roman Barták,et al.  Modelling Soft Constraints: A Survey , 2002 .

[36]  Bernard Sufrin,et al.  Principles of Computer Programming: A Mathematical Approach , 1989 .

[37]  Martine Ceberio,et al.  A Constraint-Based Approach to Verification of Programs with Floating-Point Numbers , 2008, Software Engineering Research and Practice.

[38]  Glenford J. Myers,et al.  A controlled experiment in program testing and code walkthroughs/inspections , 1978, CACM.

[39]  Bruno Legeard,et al.  The V3F project , 2006 .

[40]  Gary T. Leavens,et al.  Integrating Random Testing with Constraints for Improved Efficiency and Diversity , 2008, SEKE.

[41]  Benjamin Weiß Predicate Abstraction in a Program Logic Calculus , 2009, IFM.

[42]  Richard Statman,et al.  Lambda Calculus with Types , 2013, Perspectives in logic.

[43]  A. K. Chandra,et al.  Constraint solving for test case generation: a technique for high-level design verification , 1992, Proceedings 1992 IEEE International Conference on Computer Design: VLSI in Computers & Processors.

[44]  Michael S. Deutsch Software Verification and Validation: Realistic Project Approaches , 1981 .

[45]  Cormac Flanagan,et al.  Predicate abstraction for software verification , 2002, POPL '02.

[46]  Krzysztof R. Apt,et al.  Constraint Logic Programming Using ECL i PS e : Constraint propagation in ECL i ps e , 2006 .

[47]  John C. Cherniavsky,et al.  Validation, Verification, and Testing of Computer Software , 1982, CSUR.

[48]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[49]  Claude Michel Exact Projection Functions for Floating Point Number Constraints , 2002, ISAIM.

[50]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[51]  Toby Walsh,et al.  Handbook of Constraint Programming (Foundations of Artificial Intelligence) , 2006 .

[52]  Ivar Jacobson,et al.  Object-Oriented Software Engineering , 1991, TOOLS.