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.
Similar content being viewed by others
References
Afek Y., Brown G., Merrit M. (1993). Lazy caching. ACM Trans. Program. Lang. Syst. 15: 182–206
Abadi M., Lamport L. (1991). The existence of refinement mappings. Theor. Comput. Sci. 82: 253–284
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)
Brinksma E. (1999). Cache consistency by design. Distrib. Comput. 12: 61–74
Chandy K.M., Misra J. (1988). Parallel Program Design, A Foundation. Addison–Wesley, Reading
Gerth R. (1999). Sequential consistency and the lazy caching algorithm. Distrib. Comput. 12: 57–59
Graf S. (1999). Characterization of a sequentially consistent memory and verification of a cache memory by abstraction. Distrib. Comput. 12: 75–90
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)
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)
Hesselink W.H. (2004). Using eternity variables to specify and prove a serializable database interface. Sci. Comput. Program. 51: 47–85
Hesselink W.H. (2005). Eternity variables to prove simulation of specifications. ACM Trans. Comp. Logic 6: 175–201
Hesselink, W.H.: Universal extensions to simulate specifications. In preparation, see http: www.cs.rug.nl/~wim/pub/mans.html1, 2005
Hesselink W.H. (2006). Splitting forward simulations to cope with liveness. Acta Inf. 42: 583–602
Janssen W., Poel M., Zwiers J. (1999). The compositional approach to sequential consistency and lazy caching. Distrib. Comput. 12: 105–127
Jonsson B., Pnueli A., Rump C. (1999). Proving refinement using transduction. Distrib. Comput. 12: 129–149
Ladkin P., Lamport L., Olivier B., Roegel D. (1999). Lazy caching in TLA. Distrib. Comput. 12: 151–174
Lamport L. (1989). A simple approach to specifying concurrent systems. Commun. ACM 32: 32–45
Lamport L. (1994). The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16: 872–923
Lowe G., Davies J. (1999). Using CSP to verify sequential consistency. Distrib. Comput. 12: 91–103
Lynch N., Vaandrager F. (1995). Forward and backward simulations, part I: untimed systems. Inf. Comput. 121: 214–233
Manna Z., Pnueli A. (1992). The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Berlin Heidelberg New York
Meritt M. (1999). Introduction. Distrib. Comput. 12: 55–56
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
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
Schneider F.B. (1992). Introduction. Distrib. Comput. 6: 1–3
Author information
Authors and Affiliations
Corresponding author
Rights 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
Received:
Revised:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00236-006-0020-1