Acta Informatica

, Volume 43, Issue 3, pp 195–222 | Cite as

Refinement verification of the lazy caching algorithm

  • Wim H. HesselinkEmail author
Original Article


The lazy caching algorithm of Afek et al. (ACM Trans. Program. Lang. Syst. 15, 182–206, 1993) is a protocol that allows the use of local caches with delayed updates. It results in a memory model that is not atomic (linearizable) but only sequentially consistent as defined by Lamport. In Distributed Computing 12 (1999), specifying and proving sequential consistency for the lazy caching algorithm was made into a benchmark for verification models. The present note contains such a specification and proof. It provides a simulation from the implementation to the abstract specification. The concrete verification only relies on the state space and the next-state relation. All behavioural aspects are treated in theories independent of the specific algorithm. The proofs of the underlying theories and of the concrete algorithm have been verified with the proof assistant PVS.


Auxiliary Variable History Variable Forward Simulation Local Cache Sequential Consistency 
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.
    Afek Y., Brown G., Merrit M. (1993). Lazy caching. ACM Trans. Program. Lang. Syst. 15: 182–206CrossRefGoogle Scholar
  2. 2.
    Abadi M., Lamport L. (1991). The existence of refinement mappings. Theor. Comput. Sci. 82: 253–284zbMATHCrossRefMathSciNetGoogle Scholar
  3. 3.
    Arons, T.: Using timestamping and history variables to verify sequential consistency. In Berry, G., Comon, H., Finkel, A. (eds.) Computer Aided Verification, 13th International Conference, CAV 2001, Paris, LNCS, vol. 2102 pp. 223–235 Springer, Berlin Heidelberg New York (2001)Google Scholar
  4. 4.
    Brinksma E. (1999). Cache consistency by design. Distrib. Comput. 12: 61–74CrossRefGoogle Scholar
  5. 5.
    Chandy K.M., Misra J. (1988). Parallel Program Design, A Foundation. Addison–Wesley, ReadingzbMATHGoogle Scholar
  6. 6.
    Gerth R. (1999). Sequential consistency and the lazy caching algorithm. Distrib. Comput. 12: 57–59CrossRefGoogle Scholar
  7. 7.
    Graf S. (1999). Characterization of a sequentially consistent memory and verification of a cache memory by abstraction. Distrib. Comput. 12: 75–90CrossRefGoogle Scholar
  8. 8.
    He, J. Hoare, C.A.R., Sanders, J.W.: Data refinement refined. In: Robinet, B., Wilhelm, R. (eds.) ESOP 86, LNCS, vol. 213 pp. 187–196. Springer Berlin Heidelberg New York (1986)Google Scholar
  9. 9.
    Hesselink, W.H.: Eternity variables to simulate specifications. In: Boiten, E.A., Moeller, B. (eds.) MPC 2002, LNCS, vol. 2386 pages 117–130. Springer Berlin Heidelberg New York (2002)Google Scholar
  10. 10.
    Hesselink W.H. (2004). Using eternity variables to specify and prove a serializable database interface. Sci. Comput. Program. 51: 47–85zbMATHCrossRefMathSciNetGoogle Scholar
  11. 11.
    Hesselink W.H. (2005). Eternity variables to prove simulation of specifications. ACM Trans. Comp. Logic 6: 175–201CrossRefMathSciNetGoogle Scholar
  12. 12.
    Hesselink, W.H.: Universal extensions to simulate specifications. In preparation, see http:, 2005Google Scholar
  13. 13.
    Hesselink W.H. (2006). Splitting forward simulations to cope with liveness. Acta Inf. 42: 583–602zbMATHCrossRefMathSciNetGoogle Scholar
  14. 14.
    Janssen W., Poel M., Zwiers J. (1999). The compositional approach to sequential consistency and lazy caching. Distrib. Comput. 12: 105–127CrossRefGoogle Scholar
  15. 15.
    Jonsson B., Pnueli A., Rump C. (1999). Proving refinement using transduction. Distrib. Comput. 12: 129–149CrossRefGoogle Scholar
  16. 16.
    Ladkin P., Lamport L., Olivier B., Roegel D. (1999). Lazy caching in TLA. Distrib. Comput. 12: 151–174CrossRefGoogle Scholar
  17. 17.
    Lamport L. (1989). A simple approach to specifying concurrent systems. Commun. ACM 32: 32–45CrossRefMathSciNetGoogle Scholar
  18. 18.
    Lamport L. (1994). The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16: 872–923CrossRefGoogle Scholar
  19. 19.
    Lowe G., Davies J. (1999). Using CSP to verify sequential consistency. Distrib. Comput. 12: 91–103CrossRefGoogle Scholar
  20. 20.
    Lynch N., Vaandrager F. (1995). Forward and backward simulations, part I: untimed systems. Inf. Comput. 121: 214–233zbMATHCrossRefMathSciNetGoogle Scholar
  21. 21.
    Manna Z., Pnueli A. (1992). The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Berlin Heidelberg New YorkGoogle Scholar
  22. 22.
    Meritt M. (1999). Introduction. Distrib. Comput. 12: 55–56CrossRefGoogle Scholar
  23. 23.
    Milner, R.: An algebraic definition of simulation between programs. In: Proceedings of 2nd International Joint Conference on Artificial Intelligence, pp. 481–489. British Comp. Soc., 1971Google Scholar
  24. 24.
    Owre, S., Shankar, N., Rushby, J.M., Stringer-Calvert, D.W.J.: PVS Version 2.4, System Guide, Prover Guide, PVS Language Reference, 2001. http://pvs.csl.sri.comGoogle Scholar
  25. 25.
    Schneider F.B. (1992). Introduction. Distrib. Comput. 6: 1–3CrossRefGoogle Scholar

Copyright information

© Springer-Verlag 2006

Authors and Affiliations

  1. 1.Department of Mathematics and Computing ScienceRijksuniversiteit GroningenGroningenThe Netherlands

Personalised recommendations