Validity checking for combinations of theories with equality

  • Clark Barrett
  • David Dill
  • Jeremy Levitt
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1166)


An essential component in many verification methods is a fast decision procedure for validating logical expressions. This paper presents the algorithm used in the Stanford Validity Checker (SVC) which has been used to aid several realistic hardware verification efforts. The logic for this decision procedure includes Boolean and uninterpreted functions and linear arithmetic. We have also successfully incorporated other interpreted functions, such as array operations and linear inequalities. The primary techniques which allow a complete and efficient implementation are expression sharing, heuristic rewriting, and congruence closure with interpreted functions. We discuss these techniques and present the results of initial experiments in which SVC is used as a decision procedure in PVS, resulting in dramatic speed-ups.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    J. R. Burch and D. L. Dill, “Automatic Verification of Microprocessor Control”, In Computer Aided Verification, 6th International Conference, 1994.Google Scholar
  2. 2.
    D. Cyrluk, P. Lincoln and N. Shankar, “On Shostak's Decision Procedure for Combinations of Theories”, Proceedings of the 13th International Conference on Automated Deduction, New Brunswick, NJ, July 1996, 463–477.Google Scholar
  3. 3.
    A. J. J. Dick, “An Introduction to Knuth-Bendix Completion”, The Computer Journal 34(1):2–15, 1991.Google Scholar
  4. 4.
    P. J. Downey, R. Sethi and R. E. Tarjan, “Variations on the Common Subexpression Problem”, Journal of the ACM, 27(4):758–771, 1980.Google Scholar
  5. 5.
    K. Havelund and N. Shankar, “Experiments in Theorem Proving and Model Checking for Protocol Verification”, In Proceedings of Formal Methods Europe, March 1996, 662–681.Google Scholar
  6. 6.
    R. B. Jones, D. L. Dill and J. R. Burch, “Efficient Validity Checking for Processor Verification”, IEEE/ACM International Conference on Computer Aided Design, 1995.Google Scholar
  7. 7.
    D. E. Knuth and P. B. Bendix, “Simple Word Problems in Universal Algebras”, In Computational Problems in Abstract Algebra, ed. J. Leech, 263–297, Pergamon Press, 1970.Google Scholar
  8. 8.
    Z. Manna, et al., “STeP: the Stanford Temporal Prover”, Technique Report STAN-CS-TR-94, Computer Science Department, Stanford, 1994.Google Scholar
  9. 9.
    G. Nelson and D. C. Oppen, “Simplification by Cooperating Decision Procedures”, ACM Transactions on Programming Languages and Systems, 1(2):245–257, 1979.Google Scholar
  10. 10.
    G. Nelson, D. Detlefs, K. R. M. Leino and J. Saxe, “Extended Static Checking Home page”, 〈URL:〉, 1996.Google Scholar
  11. 11.
    S. Owre, et al., “Formal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS”, IEEE Transactions of Software Engineering, 21(2):107–125, 1995.Google Scholar
  12. 12.
    R. E. Shostak, “An Algorithm for Reasoning About Equality”, Communications of the ACM, 21(7):583–585, 1978.Google Scholar
  13. 13.
    R. E. Shostak, “Deciding Combinations of Theories”, Journal of the ACM, 31(1):1–12, 1984.Google Scholar
  14. 14.
    R. E. Tarjan, “Efficiency of a Good but not Linear Set Union Algorithm”, Journal of the ACM, 22(2):215–225, 1975.Google Scholar

Copyright information

© Springer-Verlag 1996

Authors and Affiliations

  • Clark Barrett
    • 1
  • David Dill
    • 1
  • Jeremy Levitt
    • 1
  1. 1.Computer Systems LaboratoryStanford UniversityStanfordUSA

Personalised recommendations