Overview of Formal Verification



Formal verification of a computing system entails a mathematical proof showing that the system satisfies its desired property or specification. To do this, we must use some mathematical structure to model the system of interest and derive the desired properties of the system as theorems about the structure. The principal distinction between the different formal verification approaches stems from the choice of the mathematical formalism used in the reasoning process. We survey some of the key formal verification techniques and understand their strengths and limitation.


Model Check Program Logic Inference Rule Decision Procedure Theorem Prover 


  1. 11.
    T. Ball and S. K. Rajamani. Automatically Validating Temporal Safety Properties of Interfaces. In M. B. Dwyer, editor, Proceedings of the 8th International SPIN Workshop on Model Checking of Software, volume 2057 of LNCS, pages 103–122, Toronta, ON, 2001. Springer-Verlag.Google Scholar
  2. 16.
    W. W. Bledsoe. Non-Resolution Theorem Proving. Artificial Intelligence, 9(1):1–35, 1977.MathSciNetMATHCrossRefGoogle Scholar
  3. 21.
    R. S. Boyer and J. S. Moore. A Computational Logic. Academic Press, New York, NY, 1979.MATHGoogle Scholar
  4. 24.
    R. S. Boyer and J. S. Moore. Integrating Decision Procedures into Heuristic Theorem Provers: A Case Study for Linear Arithmetic. In Machine Intelligence, volume 11, pages 83–124. Oxford University Press, 1988.Google Scholar
  5. 28.
    R. K. Brayton, G. D. Hachtel, A. L. Sangiovanni-Vincentelli, F. Somenzi, A. Aziz, S. Cheng, S. A. Edwards, S. P. Khatri, Y. Kukimoto, A. Pardo, S. Qadeer, R. K. Ranjan, S. Sarwary, T. R. Shiple, G. Swamy, and T. Villa. VIS: A System for Verification and Synthesis. In R. Alur and T. Henzinger, editors, Proceedings of the 8th International Conference on Computer-Aided Verification (CAV 1996), volume 1102 of LNCS, pages 428–432, New Brunswick, NJ, July 1996. Springer-Verlag.CrossRefGoogle Scholar
  6. 29.
    B. Brock and W. A. Hunt, Jr. Formally Specifying and Mechanically Verifying Programs for the Motorola Complex Arithmetic Processor DSP. In Proceedings of the 1997 International Conference on Computer Design: VLSI in Computers & Processors (ICCD 1997), pages 31–36, Austin, TX, 1997. IEEE Computer Society Press.Google Scholar
  7. 31.
    B. Brock and W. A. Hunt, Jr. Formal Analysis of the Motorola CAP DSP. In Industrial-Strength Formal Methods in Practice. Springer, 1999.Google Scholar
  8. 35.
    R. E. Bryant. Graph-Based Algorithms for Boolean Function Manipulation. IEEE Transactions on Computers, C-35(8):677–691, August 1986.CrossRefGoogle Scholar
  9. 44.
    C. Chou. The Mathematical Foundation of Symbolic Trajectory Evaluation. In N. Halbwacha and D. Peled, editors, Proceedings of the 11th International Conference on Computer-Aided Verification (CAV 1999), volume 1633 of LNCS, pages 196–207, Trendo, Italy, 1999. Springer-Verlag.CrossRefGoogle Scholar
  10. 47.
    A. Cimatti, E. M. Clarke, F. Giunchiglia, and M. Roveri. NuSMV: A New Symbolic Model Verifier. In N. Halbwacha and D. Peled, editors, Proceedings of the 11th International Conference on Computer-Aided Verification (CAV 1999), volume 1633 of LNCS, pages 495–499, Trendo, Italy, 1999. Springer-Verlag.CrossRefGoogle Scholar
  11. 49.
    E. M. Clarke and E. A. Emerson. Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic. In D. C. Kozen, editor, Logic of Programs, Workshop, volume 131 of LNCS, pages 52–71, Yorktown Heights, NY, May 1981. Springer-Verlag.Google Scholar
  12. 50.
    E. M. Clarke, E. A. Emerson, S. Jha, and A. P. Sistla. Symmetry Reductions in Model Checking. In A. J. Hu and M. Y. Vardi, editors, Proceedings of the 11th International Conference on Computer-Aided Verification (CAV 1998), volume 1427 of LNCS, pages 147–158, Vancover, BC, 1998. Springer-Verlag.CrossRefGoogle Scholar
  13. 51.
    E. M. Clarke, E. A. Emerson, and A. P. Sistla. Automatic Verification of Finite State Concurrent Systems Using Temporal Logic. ACM Transactions on Programming Languages and Systems (ACM TOPLAS), 8(2):244–263, April 1986.MATHCrossRefGoogle Scholar
  14. 52.
    E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-Guided Abstraction Refinement. In E. A. Emerson and A. P. Sistla, editors, Proceedings of the 12th International Conference on Computer-Aided Verification (CAV 2000), volume 1855 of LNCS, pages 154–169, Chicago, IL, 2000. Springer-Verlag.CrossRefGoogle Scholar
  15. 53.
    E. M. Clarke, O. Grumberg, and D. A. Peled. Model-Checking. The MIT Press, Cambridge, MA, January 2000.Google Scholar
  16. 59.
    R. L. Constable, S. F. Allen, H. M. Bromley, W. R. Cleveland, J. F. Cremer, R. W. Harper, D. J. Howe, T. B. Knoblock, N. P. Mendler, P. Panangaden, J. T. Sasaki, and S. S. Smith. Implementing Mathematics with the Nuprl Development System. Prentice-Hall, NJ, 1986.Google Scholar
  17. 66.
    D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended Static Checking for Java. Technical Report 159, Compaq Systems Research Center, December 1998.Google Scholar
  18. 67.
    E. W. Dijkstra. Guarded Commands, Non-determinacy and a Calculus for Derivation of Programs. Language Hierarchies and Interfaces, pages 111–124, 1975.Google Scholar
  19. 69.
    D. L. Dill. The Murϕ Verification System. In R. Alur and T. Henzinger, editors, Proceedings of the 8th International Conference on Computer-Aided Verification (CAV 1996), volume 1102 of LNCS, pages 390–393, New Brunswick, NJ, July 1996. Springer-Verlag.CrossRefGoogle Scholar
  20. 70.
    G. Dowek, A. Felty, G. Huet, C. Paulin, and B. Werner. The Coq Proof Assistant User Guide Version 5. 6. Technical Report TR 134, INRIA, December 1991.Google Scholar
  21. 71.
    E. A. Emerson and V. Kahlon. Reducing Model Checking of the Many to the Few. In D. A. McAllester, editor, Proceedings of the 17th International Conference on Automated Deduction (CADE 2000), volume 1831 of LNCS, pages 236–254, Pittsburg, PA, July 2000. Springer-Verlag.Google Scholar
  22. 77.
    R. Floyd. Assigning Meanings to Programs. In Mathematical Aspects of Computer Science, Proceedings of Symposia in Applied Mathematcs, volume XIX, pages 19–32, Providence, Rhode Island, 1967. American Mathematical Society.Google Scholar
  23. 80.
    P. Y. Gloess. Imperative Program Verification in PVS. Technical Report, École Nationale Supérieure Électronique, Informatique et Radiocommunications de bordeaux, 1999. See URL http://dept-info.labri.-u.bordeaux.fr/imperative/index.html.Google Scholar
  24. 81.
    K. Gödel. Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I. Monatshefte für Mathematic und Physik, 38:173–198, 1931.CrossRefGoogle Scholar
  25. 84.
    H. H. Goldstein and J. von Neumann. Planning and Coding Problems for an Electronic Computing Instrument. In John von Neumann, Collected Works, Volume V. Pergamon Press, Oxford, 1961.Google Scholar
  26. 88.
    M. J. C. Gordon and T. F. Melham, editors. Introduction to HOL: A Theorem-Proving Environment for Higher-Order Logic. Cambridge University Press, 1993.Google Scholar
  27. 94.
    A. Gupta. Formal Hardware Verification Methods: A Survey. Formal Methods in Systems Design, 2(3):151–238, October 1992.CrossRefGoogle Scholar
  28. 100.
    J. Harrison. The HOL Light Manual Version 1.1. Technical Report, University of Cambridge Computer Laboratory, New Museums Site, Pembroke Street, Cambridge CB2 3Qg, England, April 2000. See URL http://www.cl.cam.ac.uk/users/jrh/hol-light/.
  29. 101.
    T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy Abstraction. In Proceedings of the 29th ACM-SIGPLAN Conference on Principles of Programming Languages (POPL 2002), pages 58–70, Portland, OR, 2002. ACM Press.Google Scholar
  30. 103.
    C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Communications of the ACM, 12(10):576–583, 1969.MATHCrossRefGoogle Scholar
  31. 105.
    G. J. Holzmann. The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley, November 2003.Google Scholar
  32. 106.
    P. Homeier and D. Martin. A Mechanically Verified Verification Condition Generator. The Computer Journal, 38(2):131–141, July 1995.CrossRefGoogle Scholar
  33. 111.
    W. A. Hunt, Jr., R. B. Krug, and J. S. Moore. Linear and Nonlinear Arithmetic in ACL2. In D. Geist, editor, Proceedings of the 12th International Conference on Correct Hardware Design and Verification Methods (CHARME 2003), volume 2860 of LNCS, pages 319–333, L’Aquila, Italy, July 2003. Springer-Verlag.Google Scholar
  34. 119.
    S. Katz and D. Peled. An Efficient Verification Method for Parallel and Distributed Programs. In J. W. de Bakker and W. P. de Roever, editors, Workshop on Linear time, Branching time and Partial Order Logics and Models of Concurrency, volume 354 of LNCS, pages 489–507. Springer-Verlag, 1988.Google Scholar
  35. 122.
    M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, Boston, MA, June 2000.Google Scholar
  36. 125.
    M. Kaufmann and J. S. Moore. How to Prove Theorems Formally. See URL: http://www.cs.utexas.edu/users/moore/publications/how-to-prove-thms/main.ps.
  37. 133.
    C. Kern and M. Greenstreet. Formal Verification in Hardware Design: A Survey. ACM Transactions on Design Automation of Electronic Systems, 4(2):123–193, 1999.CrossRefGoogle Scholar
  38. 134.
    J. C. King. A Program Verifier. PhD thesis, Carnegie-Melon University, 1969.Google Scholar
  39. 149.
    Z. Manna. The Correctness of Programs. Journal of Computer and Systems Sciences, 3(2):119–127, 1969.MathSciNetCrossRefGoogle Scholar
  40. 161.
    J. McCarthy. Towards a Mathematical Science of Computation. In Proceedings of the Information Processing Congress, volume 62, pages 21–28. North-Holland, August 1962.Google Scholar
  41. 162.
    W. McCune. 33 Basic Test Problems: A Practical Evaluation of Some Paramodulation Strategies. In R. Veroff, editor, Automated Reasoning and Its Applications: Essays in Honor of Larry Wos, Chapter 5, pages 71–114. MIT Press, 1997.Google Scholar
  42. 163.
    W. McCune. Solution to the Robbins Problem. Journal of Automated Reasoning, 19(3): 263–276, 1997.MathSciNetMATHCrossRefGoogle Scholar
  43. 165.
    K. McMillan. Symbolic Model Checking. Kluwer Academic Publishers, 1993.Google Scholar
  44. 185.
    G. Necula. Compiling with Proofs. PhD thesis, Carnegie-Melon University, September 1998.Google Scholar
  45. 187.
    G. Nelson and D. C. Oppen. Simplification by Cooperating Decision Procedures. ACM Transactions on Programming Languages and Systems, 1(2), October 1979.Google Scholar
  46. 188.
    A. Newell, J. C. Shaw, and H. A. Simon. Report on a General Problemn-Solving Program. In IFIP Congress, pages 256–264, 1959.Google Scholar
  47. 189.
    T. Nipkow, L. Paulson, and M. Wenzel. Isabelle/HOL: A Proof Assistant for Higher Order Logics, volume 2283 of LNCS. Springer-Verlag, 2002.Google Scholar
  48. 193.
    S. S. Owicki and D. Gries. Verifying Properties of Parallel Programs: An Axiomatic Approach. Communications of the ACM, 19(5):279–285, 1976.MathSciNetMATHCrossRefGoogle Scholar
  49. 194.
    S. Owre, J. M. Rushby, and N. Shankar. PVS: A Prototype Verification System. In D. Kapoor, editor, 11th International Conference on Automated Deduction (CADE), volume 607 of LNAI, pages 748–752. Springer-Verlag, June 1992.Google Scholar
  50. 196.
    L. Paulson. The Isabelle Reference Manual. See URL http://www.-cl.-cam.-ac.-uk/Research/HVG/Isabelle/dist/% Isabelle2003/doc/ref.pdf.Google Scholar
  51. 197.
    L. Paulson. Set Theory for Verification: I. From Foundations to Functions. Journal of Automated Reasoning, 11:353–389, 1993.Google Scholar
  52. 198.
    L. Paulson. Set Theory for Verification: II. Induction and Recursion. Journal of Automated Reasoning, 15:167–215, 1995.Google Scholar
  53. 200.
    L. Paulson. A Simple Formalization and Proof for the Mutilated Chess Board. Logic Journal of the IGPL, 9(3):499–509, 2001.MathSciNetCrossRefGoogle Scholar
  54. 201.
    G. D. Plotkin. A Structural Approach to Operational Semantics. Technical Report DAIMI FN-19, University of Aarhus, 1981.Google Scholar
  55. 202.
    A. Pnueli. The Temporal Logic of Programs. In Proceedings of the 18th Annual IEEE Symposium of Foundations of Computer Science, pages 46–57, Providence, RI, October 1977. IEEE Computer Society Press.Google Scholar
  56. 203.
    A. Pnueli. In Transition for Global to Modular Temporal Reasoning About Programs. In K. R. Apt, editor, Logics and Models of Concurrent Systems, pages 123–144. Springer-Verlag, 1984.Google Scholar
  57. 207.
    J. P. Queille and J. Sifakis. Specification and Verification of Concurrent Systems in CESAR. In Proceedings of the 5th International Symposimum on Programming, volume 137 of LNCS, pages 337–351, Colloquium is ter instead of symposium, Torino, Italy, 1982. Springer-Verlag.Google Scholar
  58. 216.
    J. C. Reynolds. Intuitionist Reasoning About Shared Mutable Data Structures. In J. Davies, B. Roscoe, and J. Woodcock, editors, Millennial Perspectives in Computer Science, pages 303–321, Houndsmill, Hampshire, 2000. Palgrave.Google Scholar
  59. 217.
    J. C. Reynolds. Separation Logic: A Logic for Shared Mutable Data Structures. In Proceedings of the 17th IEEE Symposium on Logic in Computer Science (LICS 2002), pages 55–74, Copenhagen, Denmark, July 2002. IEEE Computer Society.Google Scholar
  60. 218.
    J. A. Robinson. A Machine-Oriented Logic Based on the Resolution Principle. Journal of the ACM, 12(1):23–41, 1965.MATHCrossRefGoogle Scholar
  61. 220.
    D. Russinoff. A Mechanical Proof of Quadratic Reciprocity. Journal of Automated Reasoning, 8:3–21, 1992.MathSciNetMATHCrossRefGoogle Scholar
  62. 233.
    R. Sebastini, E. Singerman, S. Tonetta, and M. Y. Vardi. GSTE Is Partitioned Model Checking. In R. Alur and D. A. Peled, editors, Proceedings of the 16th International Conference on Computer-Aided Verification (CAV 2004), volume 3117 of LNCS, pages 229–241, Boston, MA, July 2004. Springer-Verlag.CrossRefGoogle Scholar
  63. 234.
    N. Shankar. Metamathematics, Machines, and Gödel’s Proof. Cambridge University Press, 1994.Google Scholar
  64. 237.
    R. E. Shostak. A Practical Decision Procedure for Arithmetic with Function Symbols. Journal of the ACM, 26(2):351–360, April 1979.MathSciNetMATHCrossRefGoogle Scholar
  65. 250.
    A. M. Turing. On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 2(42):230–265, 1937.MathSciNetCrossRefGoogle Scholar
  66. 251.
    A. M. Turing. Checking a Large Routine. In Report of a Conference on High Speed Automatic Calculating Machine, pages 67–69, University Mathematical Laboratory, Cambridge, England, June 1949.Google Scholar
  67. 255.
    H. Wang. Mechanical Mathematics and Inferential Analysis. In P. Braffort and D. Hershberg, editors, Computer Programming and Formal Systems. North-Holland, 1963.Google Scholar
  68. 259.
    J. Yang and C. H. Seger. Generalized Symbolic Trajectory Evaluation – Abstraction in Action. In M. Aagaard and J. W. O’Leary, editors, Proceedings of the 4th International Conference on Formal Methods in Computer-Aided Design (FMCAD 2002), volume 2517 of LNCS, pages 70–87, Portland, OR, 2002. Springer-Verlag.Google Scholar

Copyright information

© Springer Science+Business Media, LLC 2010

Authors and Affiliations

  1. 1.Department of Computer SciencesUniversity of Texas, AustinAustinUSA

Personalised recommendations