Bulldog: a compiler for VLSI architectures
Bulldog: a compiler for VLSI architectures
Toward compiler implementation correctness proofs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A mechanically verified language implementation
Journal of Automated Reasoning
Optimal code motion: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
The VLISP verified Scheme system
Lisp and Symbolic Computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Piton: a mechanically verified assembly-level language
Piton: a mechanically verified assembly-level language
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Advanced compiler design and implementation
Advanced compiler design and implementation
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Oracle-based checking of untrusted software
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Proving correctness of compiler optimizations by temporal logic
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Accurate garbage collection in an uncooperative environment
Proceedings of the 3rd international symposium on Memory management
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Modern Compiler Implementation: In ML
Modern Compiler Implementation: In ML
Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction
Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction
Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom
Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom
C--: A Portable Assembly Language that Supports Garbage Collection
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Tool-Assisted Specification and Verification of the JavaCard Platform
AMAST '02 Proceedings of the 9th International Conference on Algebraic Methodology and Software Technology
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Basic-Block Graphs: Living Dinosaurs?
CC '98 Proceedings of the 7th International Conference on Compiler Construction
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Formal Verification of a Java Compiler in Isabelle
CADE-18 Proceedings of the 18th International Conference on Automated Deduction
Formal specification and development of an ada compiler - a vdm case study
ICSE '84 Proceedings of the 7th international conference on Software engineering
Register allocation & spilling via graph coloring
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Foundational Proof-Carrying Code
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Java Bytecode Verification: Algorithms and Formalizations
Journal of Automated Reasoning
Symbolic transfer function-based approaches to certified compilation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiler verification: a bibliography
ACM SIGSOFT Software Engineering Notes
Stack-based typed assembly language
Journal of Functional Programming
Journal of Functional Programming
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Automated soundness proofs for dataflow analyses and transformations via local rules
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)
Threads cannot be implemented as a library
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Random testing of C calling conventions
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Towards the Formal Verification of a C0 Compiler: Code Generation and Implementation Correctnes
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
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)
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
Extracting a data flow analyser in constructive logic
Theoretical Computer Science - Applied semantics: Selected topics
Putting it all together – Formal verification of the VAMP
International Journal on Software Tools for Technology Transfer (STTT) - A View from Formal Methods 2003 (pp 301-354); Special Section on Recent Advances in Hardware Verification (pp 355-447)
Resources, concurrency, and local reasoning
Theoretical Computer Science
A certified type-preserving compiler from lambda calculus to assembly language
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Functional Elimination of Φ-instructions
Electronic Notes in Theoretical Computer Science (ENTCS)
Formal verification of translation validators: a case study on instruction scheduling optimizations
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tilting at Windmills with Coq: Formal Verification of a Compilation Algorithm for Parallel Moves
Journal of Automated Reasoning
Type-preserving compilation for large-scale optimizing object-oriented compilers
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Formal Verification of a C-like Memory Model and Its Uses for Verifying Program Transformations
Journal of Automated Reasoning
Fixed point semantics and partial recursion in Coq
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Pervasive Compiler Verification -- From Verified Programs to Verified Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Volatiles are miscompiled, and what to do about it
EMSOFT '08 Proceedings of the 8th ACM international conference on Embedded software
Coinductive big-step operational semantics
Information and Computation
Verified validation of lazy code motion
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Biorthogonality, step-indexing and compiler correctness
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Electronic Notes in Theoretical Computer Science (ENTCS)
Structure of a proof-producing compiler for a subset of higher order logic
ESOP'07 Proceedings of the 16th European conference on Programming
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Separation logic for small-step cminor
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
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
Certificate translation in abstract interpretation
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Catching and identifying bugs in register allocation
SAS'06 Proceedings of the 13th international conference on Static Analysis
Certificate translation for optimizing compilers
SAS'06 Proceedings of the 13th international conference on Static Analysis
Defining and reasoning about recursive functions: a practical tool for the coq proof assistant
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
A structured approach to proving compiler optimizations based on dataflow analysis
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
A uniform and certified approach for two static analyses
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
TVOC: a translation validator for optimizing compilers
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Formal verification of a c compiler front-end
FM'06 Proceedings of the 14th international conference on Formal Methods
A simple, verified validator for software pipelining
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A certified framework for compiling and executing garbage-collected languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Perspectives in certificate translation
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
Verified squared: does critical software deserve verified tools?
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Relaxed-memory concurrency and verified compilation
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A kripke logical relation between ML and assembly
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying security properties of internet protocol stacks: The split verification approach
Journal of Systems Architecture: the EUROMICRO Journal
Programming inductive proofs: a new approach based on contextual types
Verification, induction termination analysis
Programming inductive proofs: a new approach based on contextual types
Verification, induction termination analysis
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Animating the formalised semantics of a Java-like language
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Past time LTL runtime verification for microcontroller binary code
FMICS'11 Proceedings of the 16th international conference on Formal methods for industrial critical systems
A formal programming model of Orléans skeleton library
PaCT'11 Proceedings of the 11th international conference on Parallel computing technologies
Verifying fence elimination optimisations
SAS'11 Proceedings of the 18th international conference on Static analysis
Verification of PLC properties based on formal semantics in Coq
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
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
A rely-guarantee-based simulation for verifying concurrent program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Clarifying and compiling C/C++ concurrency: from C++11 to POWER
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Validating register allocation and spilling
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
Verifying a compiler for java threads
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
An efficient coq tactic for deciding kleene algebras
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
A framework for formal verification of compiler optimizations
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
VeriSmall: verified smallfoot shape analysis
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Coquet: a coq library for verifying hardware
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
A certified multi-prover verification condition generator
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
On construction of a library of formally verified low-level arithmetic functions
Proceedings of the 27th Annual ACM Symposium on Applied Computing
A formally verified SSA-Based middle-end: Static single assignment meets compcert
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Verification of a heat diffusion simulation written with orléans skeleton library
PPAM'11 Proceedings of the 9th international conference on Parallel Processing and Applied Mathematics - Volume Part II
Verified heap theorem prover by paramodulation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Proof-producing synthesis of ML from higher-order logic
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-Lite: the convergence of compiler technology and program verification
Proceedings of the 2012 ACM conference on High integrity language technology
Mechanized semantics for compiler verification
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
A formally-verified alias analysis
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
Mechanized verification of computing dominators for formalizing compilers
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
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
Plan B: a buffered memory model for Java
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Formal verification of SSA-based optimizations for LLVM
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
CompCertTSO: A Verified Compiler for Relaxed-Memory Concurrency
Journal of the ACM (JACM)
On construction of a library of formally verified low-level arithmetic functions
Innovations in Systems and Software Engineering
CADE'13 Proceedings of the 24th international conference on Automated Deduction
Formal verification of hardware synthesis
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
A fully verified executable LTL model checker
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
A verified information-flow architecture
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
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
Verified programs with binders
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Runtime verification of microcontroller binary code
Science of Computer Programming
Rely-Guarantee-Based Simulation for Compositional Verification of Concurrent Program Transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Formal Verification of an SSA-Based Middle-End for CompCert
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
This article describes the development and formal verification (proof of semantic preservation) of a compiler back-end from Cminor (a simple imperative intermediate language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its soundness. Such a verified compiler is useful in the context of formal methods applied to the certification of critical software: the verification of the compiler guarantees that the safety properties proved on the source code hold for the executable compiled code as well.