Powerful techniques for the automatic generation of invariants

  • Saddek Bensalem
  • Yassine Lakhnech
  • Hassen Saidi
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1102)


When proving invariance properties of programs one is faced with two problems. The first problem is related to the necessity of proving tautologies of the considered assertion language, whereas the second manifests in the need of finding sufficiently strong invariants. This paper focuses on the second problem and describes techniques for the automatic generation of invariants. The first set of these techniques is applicable on sequential transition systems and allows to derive so-called local invariants, i.e. predicates which are invariant at some control location. The second is applicable on networks of transition systems and allows to combine local invariants of the sequential components to obtain local invariants of the global systems. Furthermore, a refined strengthening technique is presented that allows to avoid the problem of size-increase of the considered predicates which is the main drawback of the usual strengthening technique. The proposed techniques are illustrated by examples.


  1. 1.
    K.R. Apt. Ten years of Hoare's logic: a survey, part I. ACM Trans. on Prog. Lang. and Sys., 3(2):431–483, 1981.CrossRefGoogle Scholar
  2. 2.
    N. Bjøner, A. Browne; and Z. Manna. Automatic generation of invariants and intermediate assertions. In U. Montanari, editor, 1st Int. Conf. on Principles and Practice of Constraint Programming, 1995.Google Scholar
  3. 3.
    M. Caplain. Finding invariant assertions for proving programs. In Proc. Int. Conf. on Reliable Software, Los Angeles, CA, 1975.Google Scholar
  4. 4.
    E.M. Clarke, E.A. Emerson, and E. Sistla. Automatic verification of finite state concurrent systems using temporal logic specifications: A practical approach. In POPL'83. ACM, 1983.Google Scholar
  5. 5.
    P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In 4th ACM symp. of Prog. Lang., pages 238–252. ACM Press, 1977.Google Scholar
  6. 6.
    E. W. Dijkstra. Guarded commands, nondeterminacy, and formal derivation. Comm. ACM, 18(8):453–457, 1975.CrossRefGoogle Scholar
  7. 7.
    B. Elspas. The semiautomatic generation of inductive assertions for proving program correctness. Research report, SRI, Menlo Park, CA, 1974.Google Scholar
  8. 8.
    R. W. Floyd. Assigning meanings to programs. In In. Proc. Symp. on Appl. Math. 19, pages 19–32. American Mathematical Society, 1967.Google Scholar
  9. 9.
    S. M. German and B. Wegbreit. A synthesizer of inductive assertions. IEEE Trans. On Software Engineering, 1:68–75, March 1975.Google Scholar
  10. 10.
    S. Graf and H. Saidi. Verifying invariants using theorem proving. In In this volume, 1996.Google Scholar
  11. 11.
    S. Katz and Z. Manna. A heuristic approach to program verification. In Proc. 3rd Int. Joint Conf. on Artificial Intelligence, Stanford, CA, 1976.Google Scholar
  12. 12.
    L. Lamport. A new solution of Dijkstra's concurrent programming problem. Comm. ACM, 17(8):453–455, 1974.CrossRefGoogle Scholar
  13. 13.
    O. Lichtenstein and A. Pnueli. Checking that finite state concurrent programs satisfy their linear specification. In POPL, pages 97–107, 1985.Google Scholar
  14. 14.
    Z. Manna, A. Anuchitanukul, N. Bjøner, A. Browne, E. Chang, M. Colon, L. De Alfaro, H. Devarajan, H. Sipma, and T. Uribe. STeP: The Stanford Temporal Prover. Technical report, Stanford Univ., Stanford, CA, 1995.Google Scholar
  15. 15.
    Z. Manna and A. Pnueli. Temporal Verification of Reactive Systems: Safety. Springer-Verlag, 1995.Google Scholar
  16. 16.
    S. Owre, J. Rushby, N. Shankar, and F. von Henke. Formal verification for faulttolerant architectures: Prolegomena to the design of PVS. IEEE Transactions on Software Engineering, 1995.Google Scholar
  17. 17.
    J. P. Queille and J. Sifakis. Specification and verification of concurrent systems in CESAR. In Proc. 5th Int. Sym. on Programming, volume 137 of Lecture Notes in Computer Science, pages 337–351. Springer-Verlag, 1982.Google Scholar
  18. 18.
    B. K. Szymanski. A simple solution to Lamport's concurrent programming problem verification. In Proc. Intern. Conf. on Supercomputing Sys., pages 621–626, 1988.Google Scholar
  19. 19.
    B. K. Szymanski and J. M. Vidal. Automatic verfication of a class of symmetric parallel programs. In Proc. 13th IFIP World Computer Congress, 1994.Google Scholar
  20. 20.
    M.Y. Vardi and P. Wolper. An automata-theoretic approach to automatic program verification. In LICS'86. IEEE, 1986.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Saddek Bensalem
    • 1
  • Yassine Lakhnech
    • 2
  • Hassen Saidi
    • 1
  1. 1.VERIMAG, Miniparc-ZirstMontbonnot St-MartinFrance
  2. 2.Institut für Informatik und Praktische MathematikChristian-Albrechts-Universität zu KielKielGermany

Personalised recommendations