A CLP Method for Compositional and Intermittent Predicate Abstraction

  • Joxan Jaffar
  • Andrew E. Santosa
  • Răzvan Voicu
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3855)


We present an implementation of symbolic reachability analysis with the features of compositionality, and intermittent abstraction, in the sense of pefrorming approximation only at selected program points, if at all. The key advantages of compositionality are well known, while those of intermittent abstraction are that the abstract domain required to ensure convergence of the algorithm can be minimized, and that the cost of performing abstractions, now being intermittent, is reduced.

We start by formulating the problem in CLP, and first obtain compositionality. We then address two key efficiency challenges. The first is that reasoning is required about the strongest-postcondition operator associated with an arbitrarily long program fragment. This essentially means dealing with constraints over an unbounded number of variables describing the states between the start and end of the program fragment at hand. This is addressed by using the variable elimination or projection mechanism that is implicit in CLP systems. The second challenge is termination, that is, to determine which subgoals are redundant. We address this by a novel formulation of memoization called coinductive tabling.

We finally evaluate the method experimentally. At one extreme, where abstraction is performed at every step, we compare against a model checker. At the other extreme, where no abstraction is performed, we compare against a program verifier. Of course, our method provides for the middle ground, with a flexible combination of abstraction and Hoare-style reasoning with predicate transformers and loop-invariants.


Model Checker Proof Obligation Abstract Domain Java Modelling Language Program Point 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Ball, T., Majumdar, R., Millstein, T., Rajamani, S.K.: Automatic predicate abstraction of C programs. In: 15th PLDI, May 2001. SIGPLAN Notices, vol. 36(5), pp. 203–213 (2001)Google Scholar
  2. 2.
    Ball, T., Millstein, T., Rajamani, S.K.: Polymorphic predicate abstraction. ACM Transactions on Programming Languages and Systems 27(2), 314–343 (2005)CrossRefGoogle Scholar
  3. 3.
    Barras, B., Boutin, S., Cornes, C., Courant, J., Filliatre, J., Giménez, E., Herbelin, H., Huet, G., Noz, C.M., Murthy, C., Parent, C., Paulin, C., Saïbi, A., Werner, B.: The Coq proof assistant reference manual—version v6.1. Technical Report 0203, INRIA (1997)Google Scholar
  4. 4.
    Bossi, A. (ed.): LOPSTR 1999. LNCS, vol. 1817. Springer, Heidelberg (2000)zbMATHGoogle Scholar
  5. 5.
    Chaki, S., Clarke, E., Groce, A., Jha, S., Veith, H.: Modular verification of software components in C. IEEE Transactions on Software Engineering 30(6), 388–402 (2004)CrossRefGoogle Scholar
  6. 6.
    Cok, D.R., Kiniry, J.: ESC/Java2: Uniting ESC/Java and JML. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 108–128. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  7. 7.
    Cousot, P., Cousot, R.: Comparing the Galois connection and widening/narrowing approaches to abstract interpretation. In: Bruynooghe, M., Wirsing, M. (eds.) PLILP 1992. LNCS, vol. 631. Springer, Heidelberg (1992)CrossRefGoogle Scholar
  8. 8.
    Das, S., Dill, D.L., Park, S.: Experience with predicate abstraction. In: Halbwachs, N., Peled, D.A. (eds.) CAV 1999. LNCS, vol. 1633, pp. 160–171. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  9. 9.
    Delzanno, G., Podelski, A.: Model checking in CLP. In: Cleaveland, W.R. (ed.) TACAS 1999. LNCS, vol. 1579, pp. 223–239. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  10. 10.
    Du, X., Ramakrishnan, C.R., Smolka, S.A.: Tabled resolution + constraints: A recipe for model checking real-time systems. In: 21st RTSS. IEEE Computer Society Press, Los Alamitos (2000)Google Scholar
  11. 11.
    Burdy, L., et al.: Java applet correctness: A developer-oriented approach. In: Araki, K., Gnesi, S., Mandrioli, D. (eds.) FME 2003. LNCS, vol. 2805. Springer, Heidelberg (2003)Google Scholar
  12. 12.
    Ramakrishna, Y.S., et al.: Efficient model checking using tabled resolution. In: Grumberg [16]Google Scholar
  13. 13.
    Fioravanti, F., Pettorossi, A., Proietti, M.: Verifying CTL properties of infinite-state systems by specializing constraint logic programs. In: Leuschel, M., Podelski, A., Ramakrishnan, C.R., Ultes-Nitsche, U. (eds.) 2nd VCL, pp. 85–96 (2001)Google Scholar
  14. 14.
    Fribourg, L.: Constraint logic programming applied to model checking. In: Bossi [4], pp. 30–41Google Scholar
  15. 15.
    Graf, S., Saïdi, H.: Construction of abstract state graphs of infinite systems with PVS. In: Grumberg [16], pp. 72–83Google Scholar
  16. 16.
    Grumberg, O. (ed.): CAV 1997. LNCS, vol. 1254. Springer, Heidelberg (1997)Google Scholar
  17. 17.
    Gupta, G., Pontelli, E.: A constraint-based approach for specification and verification of real-time systems. In: 18th RTSS, pp. 230–239. IEEE Computer Society Press, Los Alamitos (1997)Google Scholar
  18. 18.
    Harrison, J.: HOL light: A tutorial introduction. In: Srivas, M., Camilleri, A. (eds.) FMCAD 1996. LNCS, vol. 1166, pp. 265–269. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  19. 19.
    Henzinger, T.A., Jhala, R., Majumdar, R.: Lazy abstraction. In: 29th POPL. SIGPLAN Notices, vol. 37(1), pp. 58–70. ACM Press, New York (2002)Google Scholar
  20. 20.
    Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Add.-Wesley, Reading (2003)Google Scholar
  21. 21.
    Jaffar, J., Maher, M., Stuckey, P., Yap, R.: Projecting CLP(\(\cal R\)) constraints. In: New Generation Computing, vol. 11, pp. 449–469. Ohmsha and Springer, Heidelberg (1993)Google Scholar
  22. 22.
    Jaffar, J., Michaylov, S., Stuckey, P.J., Yap, R.H.C.: The CLP(\(\cal R\)) language and system. ACM TOPLAS 14(3), 339–395 (1992)CrossRefGoogle Scholar
  23. 23.
    Leuschel, M., Massart, T.: Infinite-state model checking by abstract interpretation and program specialization. In: Bossi [4]Google Scholar
  24. 24.
    Marché, C., Paulin-Mohring, C., Urbain, X.: The KRAKATOA tool for certification of JAVA/JAVACARD programs annotated in JML. J. Log. and Alg. Prog. 58(1–2), 89–106 (2004)zbMATHCrossRefGoogle Scholar
  25. 25.
    Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer, Heidelberg (1999)zbMATHGoogle Scholar
  26. 26.
    Nilsson, U., Lübcke, J.: Constraint logic programming for local and symbolic model checking. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, pp. 384–398. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  27. 27.
    Owre, S., Shankar, N., Rushby, J.: PVS: A prototype verification system. In: Kapur, D. (ed.) CADE 1992. LNCS, vol. 607, pp. 748–752. Springer, Heidelberg (1992)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Joxan Jaffar
    • 1
  • Andrew E. Santosa
    • 1
  • Răzvan Voicu
    • 1
  1. 1.School of ComputingNational University of SingaporeSingaporeRepublic of Singapore

Personalised recommendations