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
Local Reasoning about Programs that Alter Data Structures
CSL '01 Proceedings of the 15th International Workshop on Computer Science Logic
An algebraic treatment of procedure refinement to support mechanical verification
Formal Aspects of Computing
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Ynot: dependent types for imperative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Enhancing Program Verification with Lemmas
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Safe Modification of Pointer Programs in Refinement Calculus
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Higher-Order Separation Logic in Isabelle/HOLCF
Electronic Notes in Theoretical Computer Science (ENTCS)
Formal Verification of C Systems Code
Journal of Automated Reasoning
Frame rule for mutually recursive procedures manipulating pointers
Theoretical Computer Science
Hi-index | 0.00 |
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 consistent Hoare total correctness rules for pointer manipulating statements according to the predicate transformer semantics. We prove the frame rule in the context of a programming language with recursive procedures with value and result parameters and local variables, where program variables and addresses can store values of any type of the theorem prover. The theory, including the proofs, is implemented in the theorem prover PVS.