Skip to main content
Log in

Refinement verification of the lazy caching algorithm

  • Original Article
  • Published:
Acta Informatica Aims and scope Submit manuscript

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Afek Y., Brown G., Merrit M. (1993). Lazy caching. ACM Trans. Program. Lang. Syst. 15: 182–206

    Article  Google Scholar 

  2. Abadi M., Lamport L. (1991). The existence of refinement mappings. Theor. Comput. Sci. 82: 253–284

    Article  MATH  MathSciNet  Google Scholar 

  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)

  4. Brinksma E. (1999). Cache consistency by design. Distrib. Comput. 12: 61–74

    Article  Google Scholar 

  5. Chandy K.M., Misra J. (1988). Parallel Program Design, A Foundation. Addison–Wesley, Reading

    MATH  Google Scholar 

  6. Gerth R. (1999). Sequential consistency and the lazy caching algorithm. Distrib. Comput. 12: 57–59

    Article  Google Scholar 

  7. Graf S. (1999). Characterization of a sequentially consistent memory and verification of a cache memory by abstraction. Distrib. Comput. 12: 75–90

    Article  Google Scholar 

  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)

  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)

  10. Hesselink W.H. (2004). Using eternity variables to specify and prove a serializable database interface. Sci. Comput. Program. 51: 47–85

    Article  MATH  MathSciNet  Google Scholar 

  11. Hesselink W.H. (2005). Eternity variables to prove simulation of specifications. ACM Trans. Comp. Logic 6: 175–201

    Article  MathSciNet  Google Scholar 

  12. Hesselink, W.H.: Universal extensions to simulate specifications. In preparation, see http: www.cs.rug.nl/~wim/pub/mans.html1, 2005

  13. Hesselink W.H. (2006). Splitting forward simulations to cope with liveness. Acta Inf. 42: 583–602

    Article  MATH  MathSciNet  Google Scholar 

  14. Janssen W., Poel M., Zwiers J. (1999). The compositional approach to sequential consistency and lazy caching. Distrib. Comput. 12: 105–127

    Article  Google Scholar 

  15. Jonsson B., Pnueli A., Rump C. (1999). Proving refinement using transduction. Distrib. Comput. 12: 129–149

    Article  Google Scholar 

  16. Ladkin P., Lamport L., Olivier B., Roegel D. (1999). Lazy caching in TLA. Distrib. Comput. 12: 151–174

    Article  Google Scholar 

  17. Lamport L. (1989). A simple approach to specifying concurrent systems. Commun. ACM 32: 32–45

    Article  MathSciNet  Google Scholar 

  18. Lamport L. (1994). The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16: 872–923

    Article  Google Scholar 

  19. Lowe G., Davies J. (1999). Using CSP to verify sequential consistency. Distrib. Comput. 12: 91–103

    Article  Google Scholar 

  20. Lynch N., Vaandrager F. (1995). Forward and backward simulations, part I: untimed systems. Inf. Comput. 121: 214–233

    Article  MATH  MathSciNet  Google Scholar 

  21. Manna Z., Pnueli A. (1992). The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Berlin Heidelberg New York

    Google Scholar 

  22. Meritt M. (1999). Introduction. Distrib. Comput. 12: 55–56

    Article  Google Scholar 

  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., 1971

  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.com

  25. Schneider F.B. (1992). Introduction. Distrib. Comput. 6: 1–3

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Wim H. Hesselink.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Hesselink, W.H. Refinement verification of the lazy caching algorithm. Acta Informatica 43, 195–222 (2006). https://doi.org/10.1007/s00236-006-0020-1

Download citation

  • Received:

  • Revised:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00236-006-0020-1

Keywords

Navigation