An Incremental Heap Canonicalization Algorithm

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3639)


The most expensive operation in explicit state model checking is the hash computation required to store the explored states in a hash table. One way to reduce this computation is to compute the hash incrementally by only processing those portions of the state that are modified in a transition. This paper presents an incremental heap canonicalization algorithm that aids in such an incremental hash computation. Like existing heap canonicalization algorithms, the incremental algorithm reduces the state space explored by detecting heap symmetries. On the other hand, the algorithm ensures that for small changes in the heap the resulting canonical representations differ only by relatively small amounts. This reduces the amount of hash computation a model checker has to perform after every transition, resulting in significant speedup of state space exploration. This paper describes the algorithm and its implementation in two explicit state model checkers, CMC and Zing.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Holzmann, G.J.: From code to models. Newcastle upon Tyne, U.K., pp. 3–10 (2001)Google Scholar
  2. 2.
    Corbett, J., Dwyer, M., Hatcliff, J., Laubach, S., Pasareanu, C., Robby, Z.H.: Bandera: Extracting finite-state models from java source code. In: ICSE 2000 (2000)Google Scholar
  3. 3.
    Brat, G., Havelund, K., Park, S., Visser, W.: Model checking programs. In: IEEE International Conference on Automated Software Engineering, ASE (2000)Google Scholar
  4. 4.
    Musuvathi, M., Park, D., Chou, A., Engler, D.R., Dill, D.L.: CMC: A Pragmatic Approach to Model Checking Real Code. In: Proceedings of the Fifth Symposium on Operating Systems Design and Implementation (2002)Google Scholar
  5. 5.
    Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Addison-Wesley, Boston (2003)Google Scholar
  6. 6.
    Lerda, F., Visser, W.: Addressing dynamic issues of program model checking. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol. 2057, pp. 80–102. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  7. 7.
    Iosif, R.: Exploiting Heap Symmetries in Explicit-State Model Checking of Software. In: Proceedings of 16th IEEE Conference on Automated Software Engineering (2001)Google Scholar
  8. 8.
    Frigioni, D., Marchetti-Spaccamela, A., Nanni, U.: Incremental algorithms for single-source shortest path trees. In: Proceedings of Foundations of Software Technology and Theoretical Computer Science, pp. 112–224 (1994)Google Scholar
  9. 9.
    Narvaez, P., Siu, K.Y., Tzeng, H.Y.: New dynamic SPT algorithm based on a ball-and-string model. In: INFOCOM, vol. (2), pp. 973–981 (1999)Google Scholar
  10. 10.
    Andrews, T., Qadeer, S., Rehof, J., Rajamani, S.K., Xie, Y.: Zing: Exploiting program structure for model checking concurrent software. In: Proceedings of the 15th International Conference on Concurrency Theory (2004)Google Scholar
  11. 11.
    Gary, M.R., Johnson, D.S.: Computers and Intractability. Freeman, New York (1979)Google Scholar
  12. 12.
    Musuvathi, M., Park, D., Chou, A., Engler, D., Dill, D.: CMC: A pragmatic approach to model checking real code. In: Proceedings of Operating Systems Design and Implementation, OSDI (2002)Google Scholar
  13. 13.
    Ramalingam, G., Reps, T.W.: An incremental algorithm for a generalization of the shortest-path problem. J. Algorithms 21, 267–305 (1996)zbMATHCrossRefMathSciNetGoogle Scholar
  14. 14.
    Robby, Dwyer, M.B., Hatcliff, J., Iosif, R.: Space-reduction strategies for model checking dynamic software. In: SoftMC 2003 Workshop on Software Model Checking. Electronic Notes in Theoretical Computer Science, vol. 89 (2003)Google Scholar
  15. 15.
    Dillinger, P.C., Manolios, P.: Bloom filters in probabilistic verification. In: Hu, A.J., Martin, A.K. (eds.) FMCAD 2004. LNCS, vol. 3312, pp. 367–381. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  16. 16.
    Carter, J.L., Wegman, M.N.: Universal classes of hash functions. Journal of Computing and System Sciences, 143–154 (1979)Google Scholar
  17. 17.
    Cormen, T.H., Leiserson, C.L., Rivest, R.L.: Introduction to Algorithms. MIT Press, Cambridge (1990)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  1. 1.Microsoft ResearchRedmond
  2. 2.Computer Systems LaboratoryStanford University 

Personalised recommendations