Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Stratified Semantics of General References Embeddable in Higher-Order Logic
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
A provably sound TAL for back-end optimization
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Foundational Proof-Carrying Code
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Foundational proof checkers with small witnesses
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Journal of Automated Reasoning
Semantics of types for mutable state
Semantics of types for mutable state
Permission accounting in separation logic
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Threads cannot be implemented as a library
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Formal certification of a compiler back-end or: programming a compiler with a proof assistant
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
A very modal model of a modern, major, general type system
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An open framework for foundational proof-carrying code
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
Resources, concurrency, and local reasoning
Theoretical Computer Science
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Foundational certified code in the Twelf metalogical framework
ACM Transactions on Computational Logic (TOCL)
Formal Verification of a C-like Memory Model and Its Uses for Verifying Program Transformations
Journal of Automated Reasoning
Relaxed memory models: an operational approach
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Oracle semantics
A Fresh Look at Separation Algebras and Share Accounting
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
A theory of indirection via approximation
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantic foundations for typed assembly languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Local reasoning for storable locks and threads
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
x86-TSO: a rigorous and usable programmer's model for x86 multiprocessors
Communications of the ACM
Oracle semantics for concurrent separation logic
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Formal verification of a c compiler front-end
FM'06 Proceedings of the 14th international conference on Formal Methods
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Formalizing the LLVM intermediate representation for verified program transformations
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
VeriSmall: verified smallfoot shape analysis
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
A certificate infrastructure for machine-checked proofs of conditional information flow
POST'12 Proceedings of the First international conference on Principles of Security and Trust
Towards a unified theory of operational and axiomatic semantics
ICALP'12 Proceedings of the 39th international colloquium conference on Automata, Languages, and Programming - Volume Part II
Verified heap theorem prover by paramodulation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Checking reachability using matching logic
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Machine-verified network controllers
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Translation validation for a verified OS kernel
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Concurrent typed intermediate language
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security
CakeML: a verified implementation of ML
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
A trusted mechanised JavaScript specification
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
LICS '13 Proceedings of the 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science
Hi-index | 0.00 |
The software toolchain includes static analyzers to check assertions about programs; optimizing compilers to translate programs tomachine language; operating systems and libraries to supply context for programs. Our Verified Software Toolchain verifies with machine-checked proofs that the assertions claimed at the top of the toolchain really hold in the machine-language program, running in the operating-system context, on a weakly-consistent-shared-memory machine. Our verification approach is modular, in that proofs about operating systems or concurrency libraries are oblivious of the programming language or machine language, proofs about compilers are oblivious of the program logic used to verify static analyzers, and so on. The approach is scalable, in that each component is verified in the semantic idiom most natural for that component. Finally, the verification is foundational: the trusted base for proofs of observable properties of the machine-language program includes only the operational semantics of the machine language, not the source language, the compiler, the program logic, or any other part of the toolchain--even when these proofs are carried out by source-level static analyzers. In this paper I explain some semantic techniques for building a verified toolchain.