Worst-case Analysis of Set Union Algorithms
Journal of the ACM (JACM)
Operational reasoning for functions with local state
Higher order operational techniques in semantics
Verification of safety properties for concurrent assembly code
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
A persistent union-find data structure
ML '07 Proceedings of the 2007 workshop on Workshop on ML
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Hoare type theory, polymorphism and separation1
Journal of Functional Programming
Structuring the verification of heap-manipulating programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Separation logic for small-step cminor
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
Mostly-automated verification of low-level programs in computational separation logic
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
The marriage of bisimulations and Kripke logical relations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mechanized metatheory for the masses: the PoplMark challenge
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Hi-index | 0.00 |
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.