Kit: A Study in Operating System Verification
IEEE Transactions on Software Engineering
Parametric shape analysis via 3-valued logic
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Specification and verification of the UCLA Unix security kernel
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
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Type Classes and Overloading in Higher-Order Logic
TPHOLs '97 Proceedings of the 10th International Conference on Theorem Proving in Higher Order Logics
A Semantic Basis for Local Reasoning
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
Proving Pointer Programs in Hoare Logic
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
CCured: type-safe retrofitting of legacy software
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proving pointer programs in higher-order logic
Information and Computation - Special issue: 19th international conference on automated deduction (CADE-19)
Software verification with BLAST
SPIN'03 Proceedings of the 10th international conference on Model checking software
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Beyond reachability: shape abstraction in the presence of pointer arithmetic
SAS'06 Proceedings of the 13th international conference on Static Analysis
Integration of a software model checker into isabelle
LPAR'05 Proceedings of the 12th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
A unified memory model for pointers
LPAR'05 Proceedings of the 12th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Checking memory safety with blast
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
On the correctness of operating system kernels
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Cogent: accurate theorem proving for program verification
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
A decidable fragment of separation logic
FSTTCS'04 Proceedings of the 24th international conference on Foundations of Software Technology and Theoretical Computer Science
Towards trustworthy computing systems: taking microkernels to the next level
ACM SIGOPS Operating Systems Review
Cooperative reasoning for automatic software verification
Proceedings of the second workshop on Automated formal methods
Towards a practical, verified kernel
HOTOS'07 Proceedings of the 11th USENIX workshop on Hot topics in operating systems
Formal Verification of a C-like Memory Model and Its Uses for Verifying Program Transformations
Journal of Automated Reasoning
Structured Types and Separation Logic
Electronic Notes in Theoretical Computer Science (ENTCS)
Electronic Notes in Theoretical Computer Science (ENTCS)
A Formal Model of Memory Peculiarities for the Verification of Low-Level Operating-System Code
Electronic Notes in Theoretical Computer Science (ENTCS)
CVM -- A Verified Framework for Microkernel Programmers
Electronic Notes in Theoretical Computer Science (ENTCS)
Scalable Specification and Reasoning: Challenges for Program Logic
Verified Software: Theories, Tools, Experiments
Tutorial on Separation Logic (Invited Tutorial)
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Vx86: x86 Assembler Simulated in C Powered by Automated Theorem Proving
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
The Verisoft Approach to Systems Verification
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Imperative Functional Programming with Isabelle/HOL
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Secure Microkernels, State Monads and Scalable Refinement
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
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
Implementing polymorphism in SMT solvers
SMT '08/BPR '08 Proceedings of the Joint Workshops of the 6th International Workshop on Satisfiability Modulo Theories and 1st International Workshop on Bit-Precise Reasoning
Formal Verification of C Systems Code
Journal of Automated Reasoning
Formal Memory Models for the Verification of Low-Level Operating-System Code
Journal of Automated Reasoning
Experience report: seL4: formally verifying a high-performance microkernel
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Types, Maps and Separation Logic
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Practical Tactics for Separation Logic
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
A Formalisation of Smallfoot in HOL
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
seL4: formal verification of an OS kernel
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Separation Logic Verification of C Programs with an SMT Solver
Electronic Notes in Theoretical Computer Science (ENTCS)
A Precise Yet Efficient Memory Model For C
Electronic Notes in Theoretical Computer Science (ENTCS)
HOL-Boogie--An Interactive Prover-Backend for the Verifying C Compiler
Journal of Automated Reasoning
Hoare logic for realistically modelled machine code
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
Hoare logic for ARM machine code
FSEN'07 Proceedings of the 2007 international conference on Fundamentals of software engineering
Sufficient preconditions for modular assertion checking
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
Separation logic for small-step cminor
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
Formal pervasive verification of a paging mechanism
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Verified squared: does critical software deserve verified tools?
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lyrebird: assigning meanings to machines
SSV'10 Proceedings of the 5th international conference on Systems software verification
A precise memory model for low-level bounded model checking
SSV'10 Proceedings of the 5th international conference on Systems software verification
From a verified kernel towards verified systems
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
From a proven correct microkernel to trustworthy large systems
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
A machine-checked framework for relational separation logic
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
Science of Computer Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Separation logic adapted for proofs by rewriting
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Large-scale formal verification in practice: a process perspective
Proceedings of the 34th International Conference on Software Engineering
On the correctness of an optimising assembler for the intel MCS-51 microprocessor
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
Verifying security invariants in ExpressOS
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Translation validation for a verified OS kernel
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Coq: the world's best macro assembler?
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
File systems deserve verification too!
Proceedings of the Seventh Workshop on Programming Languages and Operating Systems
Towards a verified component platform
Proceedings of the Seventh Workshop on Programming Languages and Operating Systems
Proof search for propositional abstract separation logics via labelled sequents
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Aliasing in Object-Oriented Programming
Comprehensive formal verification of an OS microkernel
ACM Transactions on Computer Systems (TOCS)
Hi-index | 0.00 |
We present a formal model of memory that both captures the low-level features of C's pointers and memory, and that forms the basis for an expressive implementation of separation logic. At the low level, we do not commit common oversimplifications, but correctly deal with C's model of programming language values and the heap. At the level of separation logic, we are still able to reason abstractly and efficiently. We implement this framework in the theorem prover Isabelle/HOL and demonstrate it on two case studies. We show that the divide between detailed and abstract does not impose undue verification overhead, and that simple programs remain easy to verify. We also show that the framework is applicable to real, security- and safety-critical code by formally verifying the memory allocator of the L4 microkernel.