Methods and logics for proving programs
Handbook of theoretical computer science (vol. B)
Parametricity and local variables
Journal of the ACM (JACM)
ALGOL-like languages (v.2)
Solving the frame problem: a mathematical investigation of the common sense law of inertia
Solving the frame problem: a mathematical investigation of the common sense law of inertia
From Algol to polymorphic linear lambda-calculus
Journal of the ACM (JACM)
Semantic analysis of pointer aliasing, allocation and disposal in Hoare logic
Proceedings of the 2nd ACM SIGPLAN international conference on Principles and practice of declarative programming
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Syntactic control of interference
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
On the Frame Problem in Procedure Specifications
IEEE Transactions on Software Engineering
Resource Interpretations, Bunched Implications and the alpha lambda-Calculus
TLCA '99 Proceedings of the 4th International Conference on Typed Lambda Calculi and Applications
A Trace Model for Pointers and Objects
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Proving Pointer Programs in Hoare Logic
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
A category-theoretic approach to the semantics of programming languages
A category-theoretic approach to the semantics of programming languages
Local reasoning for stateful programs
Local reasoning for stateful programs
A Semantic Basis for Local Reasoning
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
CSL '02 Proceedings of the 16th International Workshop and 11th Annual Conference of the EACSL on Computer Science Logic
Scalable Specification and Reasoning: Challenges for Program Logic
Verified Software: Theories, Tools, Experiments
Implications of a Data Structure Consistency Checking System
Verified Software: Theories, Tools, Experiments
An Overview of Separation Logic
Verified Software: Theories, Tools, Experiments
Tutorial on Separation Logic (Invited Tutorial)
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Scalable Shape Analysis for Systems Code
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
A Simple Model of Separation Logic for Higher-Order Store
ICALP '08 Proceedings of the 35th international colloquium on Automata, Languages and Programming, Part II
Safe Modification of Pointer Programs in Refinement Calculus
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
A Theory of Pointers for the UTP
Proceedings of the 5th international colloquium on Theoretical Aspects of Computing
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Abductive Inference for Reasoning about Heaps
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
Logic-Based Program Synthesis and Transformation
Automatic Parallelization and Optimization of Programs by Proof Rewriting
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
A Formalisation of Smallfoot in HOL
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Attacking Large Industrial Code with Bi-abductive Inference
FMICS '09 Proceedings of the 14th International Workshop on Formal Methods for Industrial Critical Systems
Towards Algebraic Separation Logic
RelMiCS '09/AKA '09 Proceedings of the 11th International Conference on Relational Methods in Computer Science and 6th International Conference on Applications of Kleene Algebra: Relations and Kleene Algebra in Computer Science
Field-Sensitive Value Analysis by Field-Insensitive Analysis
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Reasoning about Memory Layouts
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Weak updates and separation logic
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
Reasoning about multiple related abstractions with MultiStar
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Small specifications for tree update
WS-FM'09 Proceedings of the 6th international conference on Web services and formal methods
A shape analysis for non-linear data structures
SAS'10 Proceedings of the 17th international conference on Static analysis
Interprocedural analysis with lazy propagation
SAS'10 Proceedings of the 17th international conference on Static analysis
Verifying executable object-oriented specifications with separation logic
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
The next 700 separation logics
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Local reasoning and dynamic framing for the composite pattern and its clients
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Abstraction and refinement for local reasoning
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Temporal logic verification of lock-freedom
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Abductive, inductive and deductive reasoning about resources
CSL'10/EACSL'10 Proceedings of the 24th international conference/19th annual conference on Computer science logic
Trace-based verification of imperative programs with I/O
Journal of Symbolic Computation
Expressive modular fine-grained concurrency specification
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Local actions for a curry-style operational semantics
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Reasoning about memory layouts
Formal Methods in System Design
A quick tour of the VeriFast program verifier
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Propositional Dynamic Logic with Storing, Recovering and Parallel Composition
Electronic Notes in Theoretical Computer Science (ENTCS)
Towards verification of SubCprograms with side effects
ICCOMP'06 Proceedings of the 10th WSEAS international conference on Computers
NFM'11 Proceedings of the Third international conference on NASA Formal methods
Typing copyless message passing
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
The relationship between separation logic and implicit dynamic frames
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Verification of the Schorr-Waite algorithm - from trees to graphs
LOPSTR'10 Proceedings of the 20th international conference on Logic-based program synthesis and transformation
Variable side conditions and greatest relations in algebraic separation logic
RAMICS'11 Proceedings of the 12th international conference on Relational and algebraic methods in computer science
Partiality, state and dependent types
TLCA'11 Proceedings of the 10th international conference on Typed lambda calculi and applications
Temporal property verification as a program analysis task
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Verifying multi-object invariants with relationships
Proceedings of the 25th European conference on Object-oriented programming
Verifying object-oriented programs with higher-order separation logic in Coq
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Characteristic formulae for the verification of imperative programs
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Bottom-up shape analysis using LISF
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract local reasoning for program modules
CALCO'11 Proceedings of the 4th international conference on Algebra and coalgebra in computer science
A Resource Analysis of the π-calculus
Electronic Notes in Theoretical Computer Science (ENTCS)
Compositional Shape Analysis by Means of Bi-Abduction
Journal of the ACM (JACM)
Mutation in linked data structures
ICFEM'11 Proceedings of the 13th international conference on Formal methods and software engineering
A machine-checked framework for relational separation logic
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
Smallfoot: modular automatic assertion checking with separation logic
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Interprocedural shape analysis with separated heap abstractions
SAS'06 Proceedings of the 13th international conference on Static Analysis
Expressivity properties of Boolean BI through relational models
FSTTCS'06 Proceedings of the 26th international conference on Foundations of Software Technology and Theoretical Computer Science
Symbolic execution with separation logic
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
A typed, compositional logic for a stack-based abstract machine
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Characterizing provability in BI's pointer logic through resource graphs
LPAR'05 Proceedings of the 12th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Towards a program logic for JavaScript
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursive proofs for inductive tree data-structures
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Syntactic control of interference for separation logic
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The VerCors project: setting up basecamp
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
About hoare logics for higher-order store
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
CSL'06 Proceedings of the 20th international conference on Computer Science Logic
Separation logic for higher-order store
CSL'06 Proceedings of the 20th international conference on Computer Science Logic
Memory leaks detection in java by bi-abductive inference
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
BI hyperdoctrines and higher-order separation logic
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Verifying low-level implementations of high-level datatypes
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Relational reasoning in a nominal semantics for storage
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
A decidable fragment of separation logic
FSTTCS'04 Proceedings of the 24th international conference on Foundations of Software Technology and Theoretical Computer Science
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamic frames: support for framing, dependencies and sharing without restrictions
FM'06 Proceedings of the 14th international conference on Formal Methods
Mechanical verification of recursive procedures manipulating pointers using separation logic
FM'06 Proceedings of the 14th international conference on Formal Methods
Compositional reasoning for pointer structures
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Algebra, logic, locality, concurrency
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Automatic verification of parameterized data structures
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
A local shape analysis based on separation logic
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
ILC: a foundation for automated reasoning about pointer programs
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Algebra, logic, locality, concurrency
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Virtualizing real-world objects in FRP
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Science of Computer Programming
Verification conditions for source-level imperative programs
Computer Science Review
Temporal property verification as a program analysis task
Formal Methods in System Design
LICS '12 Proceedings of the 2012 27th Annual IEEE/ACM Symposium on Logic in Computer Science
Static BiLog: a Unifying Language for Spatial Structures
Fundamenta Informaticae - Half a Century of Inspirational Research: Honoring the Scientific Influence of Antoni Mazurkiewicz
The laws of programming unify process calculi
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Reverse exchange for concurrency and local reasoning
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Uniqueness and reference immutability for safe parallelism
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Checking reachability using matching logic
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Footprint analysis: a shape analysis that discovers preconditions
SAS'07 Proceedings of the 14th international conference on Static Analysis
A marriage of rely/guarantee and separation logic
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Abstraction as a unifying link for formal approaches to concurrency
SEFM'12 Proceedings of the 10th international conference on Software Engineering and Formal Methods
Separation logic for non-local control flow and block scope variables
FOSSACS'13 Proceedings of the 16th international conference on Foundations of Software Science and Computation Structures
Natural proofs for structure, data, and separation
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Local Reasoning for Global Invariants, Part II: Dynamic Boundaries
Journal of the ACM (JACM)
Local Reasoning for Global Invariants, Part I: Region Logic
Journal of the ACM (JACM)
Hoare-style reasoning with (algebraic) continuations
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
LVars: lattice-based data structures for deterministic parallelism
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
A formal semantics for isorecursive and equirecursive state abstractions
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Automating separation logic using SMT
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hennessy-Milner logic with greatest fixed points as a complete behavioural specification theory
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
An epistemic perspective on consistency of concurrent computations
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
An operational and axiomatic semantics for non-determinism and sequence points in C
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
State based encapsulation for modular reasoning about behavior-preserving refactorings
Aliasing in Object-Oriented Programming
Separation logic for object-oriented programming
Aliasing in Object-Oriented Programming
Aliasing in Object-Oriented Programming
Software verification with VeriFast: Industrial case studies
Science of Computer Programming
Hi-index | 0.01 |
We describe an extension of Hoare's logic for reasoning about programs that alter data structures. We consider a low-level storage model based on a heap with associated lookup, update, allocation and deallocation operations, and unrestricted address arithmetic. The assertion language is based on a possible worlds model of the logic of bunched implications, and includes spatial conjunction and implication connectives alongside those of classical logic. Heap operations are axiomatized using what we call the "small axioms", each of which mentions only those cells accessed by a particular command. Through these and a number of examples we show that the formalism supports local reasoning: A specification and proof can concentrate on only those cells in memory that a program accesses. This paper builds on earlier work by Burstall, Reynolds, Ishtiaq and O'Hearn on reasoning about data structures.