Preprocessing for invariant validation

  • E. Pascal Gribomont
Conference Session 4: Program Verification
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1101)


Hoare's logic and Dijkstra's predicate transformer calculus have proved adequate for reducing the correctness problem for programs to the validity problem for logical formulas. However, the size of the logical formulas to be validated grows faster than the size of the program, and, even in the propositional case, the validation problem is NP-complete and becomes practically intractable for large programs. We introduce a strategy for dealing with this problem. The principle is to write the formulas in the form (h1 ∧ ⋯ ∧ hn) ⇒ c, and to use efficiently computable criteria to select a small subset I ⊂{1,..., n} such that c remains a logical consequence of H I ={h i : i ∈ I}. These criteria are motivated and the efficiency of the method is investigated.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    K.R. Apt and D.C. Kozen, Limits for Automatic Program Verification, Inform. Process. Letters 22 (1986) 307–309.Google Scholar
  2. 2.
    S. Bensalem, Y. Lakhnech and H. Saidi, Powerful techniques for the automatic generation of invariants, Proc. 8th Int. Conf. on Computer-Aided Verification, to appear in Lect. Notes in Comput. Sci. (1996).Google Scholar
  3. 3.
    N. Bjorner, A. Browne and Z. Manna, Automatic Generation of Invariants and Intermediate Assertions, Lect. N. in Comp. Sc. 976 (1995) 589–623.Google Scholar
  4. 4.
    J.R. Burch et al., Symbolic Model Checking: 1020 States and Beyond, Proc. 5th. Symp. on Logic in Computer Science (1990) 428–439.Google Scholar
  5. 5.
    E. Clarke, Program invariants as fixed points, Proc. 18th IEEE Symp. on Foundations of Comput. Sci. (1977) 18–29.Google Scholar
  6. 6.
    E. Clarke, E. Emerson and A. Sistla, Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications, ACM Trans. Programming Languages Syst. 8 (1986) 244–263.Google Scholar
  7. 7.
    K.M. Chandy and J. Misra, Parallel Program Design: A Foundation (Addison-Wesley, Reading, MA, 1988).Google Scholar
  8. 8.
    C.C. Chang and H.J. Keisler, Model Theory (North-Holland, Amsterdam, 1973).Google Scholar
  9. 9.
    P. Cousot and N. Halbwachs, Automatic Discovery of Linear Restraints Among Variables of a Program, Proc. 5th ACM Symp. on Principles of Programming Languages (1978) 84–96.Google Scholar
  10. 10.
    E.W. Dijkstra, A discipline of programming (Prentice Hall, New Jersey, 1976)Google Scholar
  11. 11.
    M. Fitting, First-order logic and automated theorem proving (Springer, 1990).Google Scholar
  12. 12.
    J.-Y. Girard, Proof theory and logical complexity (Bibliopolis, Napoli, 1966).Google Scholar
  13. 13.
    D.M. Goldschlag, Mechanically Verifying Concurrent programs with the Boyer-Moore prover, IEEE Trans. on Software Engineering 16 (1990) 1005–1023.Google Scholar
  14. 14.
    S. Graf and H. Saidi, Verifying invariants using theorem proving, Proc. 8th Int. Conf. on Computer-Aided Verification, to appear in Lect. Notes in Comput. Sci. (1996).Google Scholar
  15. 15.
    E.P. Gribomont, A Programming Logic for Formal Concurrent Systems, Lect. Notes in Comput. Sci. 458 (1990) 298–313.Google Scholar
  16. 16.
    E.P. Gribomont, Concurrency without toil: a systematic method for parallel program design, Sci. Comput. Programming 21 (1993) 1–56.Google Scholar
  17. 17.
    E.P. Gribomont and D. Rossetto, CAVEAT: technique and tool for Computer Aided VErification And Transformation, Lect. N. in Comp. Sc. 939 (1995) 70–83.Google Scholar
  18. 18.
    B. Jonsson and L. Kempe, Verifying safety properties of a class of infinite-state distributed algorithms, Lect. N. in Comp. Sc. 939 (1995) 42–53.Google Scholar
  19. 19.
    R.P. Kurshan and L. Lamport, Verification of a Multiplier: 64 Bits and Beyond, Lect. Notes in Comput. Sci. 697 (1993) 166–179.Google Scholar
  20. 20.
    L. Lamport, An Assertional Correctness Proof of a Distributed Algorithm, Sci. Comput. Programming 2 (1983) 175–206.Google Scholar
  21. 21.
    K. Larsen, B. Steffen and C. Weise, A constraint oriented proof methodology based on modal transitions systems, Lect. Notes in Comput. Sci. 129 (1995) 17–40.Google Scholar
  22. 22.
    K. Larsen, B. Steffen and C. Weise, Fisher's protocol revisited: a simple proof using modal constraints, Proc. 4th DIMACS Workshop on Verification and Control of Hybrid Systems. New Brunswick, New Jersey, 22–24 October, 1995.Google Scholar
  23. 23.
    Z. Manna et al., STeP: the Stanford Temporal Prover (Draft), June 1994.Google Scholar
  24. 24.
    G. Ricart and A.K. Agrawala, An optimal algorithm for mutual exclusion, Comm. ACM 24 (1981) 9–17 (corrigendum: Comm. ACM 24 (1981) 578).Google Scholar
  25. 25.
    D.M. Russinoff, A Verification System for Concurrent Programs Based on the Boyer-Moore Prover, Formal Aspects of Computing 4 (1992) 597–611.Google Scholar
  26. 26.
    D.M. Russinoff, A Mechanically Verified Incremental Garbage Collector, Formal Aspects of Computing 6 (1994) 359–390.Google Scholar
  27. 27.
    P. Wolper and V. Lovinfosse, Verifying Properties of large Sets of Processes with Network Invariants, CAV'89, Lect. Notes in Comput. Sci. 407 (1990) 68–80.Google Scholar
  28. 28.
    L. Wallen, Automated Deduction in Nonclassical Logics (MIT Press, 1990).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  1. 1.University of LiègeBelgium

Personalised recommendations