Adjustable References

  • Viktor Vafeiadis
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7998)


Even when programming purely mathematical functions, mutable state is often necessary to achieve good performance, as it underlies important optimisations such as path compression in union-find algorithms and memoization. Nevertheless, verified programs rarely use mutable state because of its substantial verification cost: one must either commit to a deep embedding or follow a monadic style of programming. To avoid this cost, we propose using adjustable state instead. More concretely, we extend Coq with a type of adjustable references, which are like ML references, except that the stored values are only partially observable and updatable only to values that are observationally indistinguishable from the old ones.


Reference Cell Proof Obligation Observation Function Separation Logic Interactive Theorem Prover 
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.
    Appel, A.W., Blazy, S.: Separation logic for small-step Cminor. In: Schneider, K., Brandt, J. (eds.) TPHOLs 2007. LNCS, vol. 4732, pp. 5–21. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  2. 2.
    Aydemir, B.E., et al.: Mechanized Metatheory for the Masses: The PoplMark Challenge. In: Hurd, J., Melham, T. (eds.) TPHOLs 2005. LNCS, vol. 3603, pp. 50–65. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  3. 3.
    Bertot, Y.: A short presentation of Coq. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 12–16. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  4. 4.
    Chlipala, A.: Mostly-automated verification of low-level programs in computational separation logic. In: PLDI 2011, pp. 234–245. ACM (2011)Google Scholar
  5. 5.
    Conchon, S., Filliâtre, J.-C.: A persistent union-find data structure. In: Russo, C.V., Dreyer, D. (eds.) ML 2007, pp. 37–46. ACM (2007)Google Scholar
  6. 6.
    Hur, C., Dreyer, D., Neis, G., Vafeiadis, V.: The marriage of bisimulations and Kripke logical relations. In: POPL 2012, pp. 59–72. ACM (2012)Google Scholar
  7. 7.
    Letouzey, P.: A new extraction for Coq. In: Geuvers, H., Wiedijk, F. (eds.) TYPES 2002. LNCS, vol. 2646, pp. 200–219. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  8. 8.
    Nanevski, A., Morrisett, G., Birkedal, L.: Hoare type theory, polymorphism and separation. J. Functional Programming 18(5-6), 865–911 (2008)MathSciNetzbMATHCrossRefGoogle Scholar
  9. 9.
    Nanevski, A., Vafeiadis, V., Berdine, J.: Structuring the verification of heap-manipulating programs. In: POPL 2010, pp. 261–274. ACM (2010)Google Scholar
  10. 10.
    Pitts, A.M., Stark, I.D.B.: Operational Reasoning for Functions with Local State. In: Gordon, A.D., Pitts, A.M. (eds.) Higher Order Operational Techniques in Semantics, pp. 227–273. CUP (1998)Google Scholar
  11. 11.
    Slind, K., Norrish, M.: A brief overview of HOL4. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 28–32. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  12. 12.
    Tarjan, R.E., Van Leeuwen, J.: Worst-case analysis of set union algorithms. JACM 31(2), 245–281 (1984)zbMATHCrossRefGoogle Scholar
  13. 13.
    Wenzel, M., Paulson, L.C., Nipkow, T.: The Isabelle Framework. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 33–38. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  14. 14.
    Yu, D., Shao, Z.: Verification of safety properties for concurrent assembly code. In: ICFP 2004, pp. 175–188. ACM (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Viktor Vafeiadis
    • 1
  1. 1.Max Planck Institute for Software Systems (MPI-SWS)Germany

Personalised recommendations