Logic programming in the LF logical framework
Logical frameworks
A framework for defining logics
Journal of the ACM (JACM)
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
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
Software reliability via run-time result-checking
Journal of the ACM (JACM)
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Java Virtual Machine Specification
Java Virtual Machine Specification
Certifying Compilation and Run-Time Code Generation
Higher-Order and Symbolic Computation
Stack-Based Typed Assembly Language
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Efficient Representation and Validation of Proofs
LICS '98 Proceedings of the 13th Annual IEEE Symposium on Logic in Computer Science
Compiling with proofs
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Proof linking: modular verification of mobile programs in the presence of lazy, dynamic linking
ACM Transactions on Software Engineering and Methodology (TOSEM)
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
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)
An expressive, scalable type theory for certified code
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A type theory for memory allocation and data layout
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Toward a foundational typed assembly language
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automated techniques for provably safe mobile code
Theoretical Computer Science - Dependable computing
A Scalable Architecture for Proof-Carrying Code
FLOPS '01 Proceedings of the 5th International Symposium on Functional and Logic Programming
Scalable Certification for Typed Assembly Language
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Safe and Flexible Dynamic Linking of Native Code
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
A provably sound TAL for back-end optimization
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Using Memory Errors to Attack a Virtual Machine
SP '03 Proceedings of the 2003 IEEE Symposium on Security and Privacy
Anomaly intrusion detection in dynamic execution environments
Proceedings of the 2002 workshop on New security paradigms
Proceedings of the 2002 workshop on New security paradigms
Completeness of a Bytecode Verifier and a Certifying Java-to-JVM Compiler
Journal of Automated Reasoning
Saving the world from bad beans: deployment-time confinement checking
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
A Syntactic Approach to Foundational Proof-Carrying Code
Journal of Automated Reasoning
Journal of Automated Reasoning
Lightweight Bytecode Verification
Journal of Automated Reasoning
The design and implementation of a certifying compiler
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Building certified libraries for PCC: dynamic storage allocation
Science of Computer Programming - Special issue on 12th European symposium on programming (ESOP 2003)
The open verifier framework for foundational verifiers
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Type-based verification of sssembly language for compiler debugging
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
A simple typed intermediate language for object-oriented languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for certified binaries
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interactive and Probabilistic Proof of Mobile Code Safety
Automated Software Engineering
Verifiable annotations for embedded java environments
Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems
Modular verification of concurrent assembly code with dynamic thread creation and termination
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Certified assembly programming with embedded code pointers
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A verifiable SSA program representation for aggressive compiler optimization
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular verification of assembly code with stack-based control abstractions
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Roadmap for enhanced languages and methods to aid verification
Proceedings of the 5th international conference on Generative programming and component engineering
Theoretical Computer Science
Detecting malicious java code using virtual machine auditing
SSYM'03 Proceedings of the 12th conference on USENIX Security Symposium - Volume 12
Proof linking: distributed verification of java classfiles in the presence of multiple classloaders
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Foundational certified code in the Twelf metalogical framework
ACM Transactions on Computational Logic (TOCL)
A Mechanical Analysis of Program Verification Strategies
Journal of Automated Reasoning
Proceedings of the 2008 ACM symposium on Applied computing
Type-preserving compilation for large-scale optimizing object-oriented compilers
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Speculative improvements to verifiable bounds check elimination
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Partial Translation Verification for Untrusted Code-Generators
ICFEM '08 Proceedings of the 10th International Conference on Formal Methods and Software Engineering
A typed intermediate language for supporting interfaces
Proceedings of the 11th International Workshop on Formal Techniques for Java-like Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
Semantic foundations for typed assembly languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
An information flow verifier for small embedded systems
WISTP'07 Proceedings of the 1st IFIP TC6 /WG8.8 /WG11.2 international conference on Information security theory and practices: smart cards, mobile and ubiquitous computing systems
Proof-carrying code with untrusted proof rules
ISSS'02 Proceedings of the 2002 Mext-NSF-JSPS international conference on Software security: theories and systems
Building certified libraries for PCC: dynamic storage allocation
ESOP'03 Proceedings of the 12th European conference on Programming
Precision in practice: a type-preserving java compiler
CC'03 Proceedings of the 12th international conference on Compiler construction
Enhancing Java security with history based access control
Foundations of security analysis and design IV
Inferable object-oriented typed assembly language
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Communications of the ACM
An extended proof-carrying code framework for security enforcement
Transactions on computational science XI
On the correctness of transformations in compiler back-ends
ISoLA'04 Proceedings of the First international conference on Leveraging Applications of Formal Methods
Analysis of low-level code using cooperating decompilers
SAS'06 Proceedings of the 13th international conference on Static Analysis
Verification condition generation via theorem proving
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Typed compilation against non-manifest base classes
CASSIS'05 Proceedings of the Second international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Self-certification: bootstrapping certified typecheckers in F* with Coq
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mobile resource guarantees for smart devices
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
A framework for certified program analysis and its applications to mobile-code safety
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Certifiable program generation
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Using dependent types to certify the safety of assembly code
SAS'05 Proceedings of the 12th international conference on Static Analysis
Firewall mechanism in a user centric smart card ownership model
CARDIS'10 Proceedings of the 9th IFIP WG 8.8/11.2 international conference on Smart Card Research and Advanced Application
Hardware-dependent proofs of numerical programs
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Hi-index | 0.02 |
This paper presents the initial results of a project to determine ifthe techniques of proof-carrying code and certifying compilers can be applied to programming languages of realistic size and complexity. The experiment shows that: (1) it is possible to implement a certifying native-code compiler for a large subset of the Java programming language; (2) the compiler is freely able to apply many standard local and global optimizations; and (3) the PCC binaries it produces are of reasonable size and can be rapidly checked for type safety by a small proof-checker. This paper also presents further evidence that PCC provides several advantages for compiler development. In particular, generating proofs of the target code helps to identify compiler bugs, many of which would have been difficult to discover by testing.