Information and Computation - Semantics of Data Types
A syntactic approach to type soundness
Information and Computation
Safe kernel extensions without run-time checking
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From system F to typed assembly language
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A semantic model of types and machine instructions for proof-carrying code
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A certifying compiler for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Fully reflexive intensional type analysis
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
A type system for certified binaries
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An indexed model of recursive types for foundational proof-carrying code
ACM Transactions on Programming Languages and Systems (TOPLAS)
A dependently typed assembly language
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
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
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Stack-Based Typed Assembly Language
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Machine Instruction Syntax and Semantics in Higher Order Logic
CADE-17 Proceedings of the 17th International Conference on Automated Deduction
Foundational Proof-Carrying Code
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Compiling with proofs
Precision in practice: a type-preserving java compiler
CC'03 Proceedings of the 12th international conference on Compiler construction
Certified memory management for proof-carrying code: a region-based type system and runtime library
Proceedings of the 43rd annual Southeast regional conference - Volume 2
Integrating a certified memory management runtime with proof-carrying code
Proceedings of the 2007 ACM symposium on Applied computing
A theory of platform-dependent low-level software
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tutorial Examples of the Semantic Approach to Foundational Proof-Carrying Code
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2005, Selected Papers
Modular development of certified program verifiers with a proof assistant1,2
Journal of Functional Programming
Social processes, program verification and all that
Mathematical Structures in Computer Science
Singleton: a general-purpose dependently-typed assembly language
Proceedings of the 7th ACM SIGPLAN workshop on Types in language design and implementation
Formal verification of a memory model for C-like imperative languages
ICFEM'05 Proceedings of the 7th international conference on Formal Methods and Software Engineering
CSL'06 Proceedings of the 20th international conference on Computer Science Logic
A tutorial example of the semantic approach to foundational proof-carrying code
RTA'05 Proceedings of the 16th international conference on Term Rewriting and Applications
Tutorial Examples of the Semantic Approach to Foundational Proof-Carrying Code
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2005, Selected Papers
Hi-index | 0.00 |
Proof-carrying code (PCC) is a general framework for verifying the safety properties of machine-language programs. PCC proofs are usually written in a logic extended with language-specific typing rules; they certify safety but only if there is no bug in the typing rules. In foundational proof-carrying code (FPCC), on the other hand, proofs are constructed and verified by using strictly the foundations of mathematical logic, with no type-specific axioms. FPCC is more flexible and secure because it is not tied to any particular type system and it has a smaller trusted base. Foundational proofs, however, are much harder to construct. Previous efforts on FPCC all required building sophisticated semantic models for types. Furthermore, none of them can be easily extended to support mutable fields and recursive types. In this article, we present a syntactic approach to FPCC that avoids all of these difficulties. Under our new scheme, the foundational proof for a typed machine program simply consists of the typing derivation plus the formalized syntactic soundness proof for the underlying type system. The former can be readily obtained from a type-checker, while the latter is known to be much easier to construct than the semantic soundness proofs. We give a translation from a typed assembly language into FPCC and demonstrate the advantages of our new system through an implementation in the Coq proof assistant.