An axiomatic basis for computer programming
Communications of the ACM
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
A Semantic Basis for Local Reasoning
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
Hoare Logics for Recursive Procedures and Unbounded Nondeterminism
CSL '02 Proceedings of the 16th International Workshop and 11th Annual Conference of the EACSL on Computer Science Logic
Reasoning about recursive procedures with parameters
MERLIN '03 Proceedings of the 2003 ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
An algebraic treatment of procedure refinement to support mechanical verification
Formal Aspects of Computing
A proof outline logic for object-oriented programming
Theoretical Computer Science - Formal methods for components and objects
Higher-Order Separation Logic in Isabelle/HOLCF
Electronic Notes in Theoretical Computer Science (ENTCS)
Mechanical verification of recursive procedures manipulating pointers using separation logic
FM'06 Proceedings of the 14th international conference on Formal Methods
Abstraction of object graphs in program verification
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Verifying object-oriented programs with higher-order separation logic in Coq
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Algebra of monotonic boolean transformers
SBMF'11 Proceedings of the 14th Brazilian conference on Formal Methods: foundations and Applications
Hi-index | 5.23 |
Using a predicate transformer semantics of programs, we introduce statements for heap operations and separation logic operators for specifying programs that manipulate pointers. We prove a powerful Hoare total correctness rule for mutually recursive procedures manipulating pointers. The rule combines earlier proof rules for (mutually) recursive procedures with the frame rule for pointer programs. The theory, including the proofs, is implemented in the theorem prover PVS. In this implementation program variables and addresses can store values of almost any type of the theorem prover.