Accelerating Verified-Compiler Development with a Verified Rewriting Engine

05/02/2022
by   Jason Gross, et al.
0

Compilers are a prime target for formal verification, since compiler bugs invalidate higher-level correctness guarantees, but compiler changes may become more labor-intensive to implement, if they must come with proof patches. One appealing approach is to present compilers as sets of algebraic rewrite rules, which a generic engine can apply efficiently. Now each rewrite rule can be proved separately, with no need to revisit past proofs for other parts of the compiler. We present the first realization of this idea, in the form of a framework for the Coq proof assistant. Our new Coq command takes normal proved theorems and combines them automatically into fast compilers with proofs. We applied our framework to improve the Fiat Cryptography toolchain for generating cryptographic arithmetic, producing an extracted command-line compiler that is about 1000× faster while actually featuring simpler compiler-specific proofs.

READ FULL TEXT

page 3

page 5

page 11

page 13

page 27

page 31

page 33

page 38

research
05/04/2023

Towards a Scalable Proof Engine: A Performant Prototype Rewriting Primitive for Coq

We address the challenges of scaling verification efforts to match the i...
research
07/17/2019

Generating Correctness Proofs with Neural Networks

Foundational verification allows programmers to build software which has...
research
02/25/2023

A Bottom-Up Approach to a Unified Semantic Interface for Verified Compositional Compilation

Verified compositional compilation (VCC) is a notion of modular verifica...
research
11/06/2020

Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework

Many modern virtual machines, such as JVMs, .NET Framework, and V8, empl...
research
05/02/2022

Giallar: Push-Button Verification for the Qiskit Quantum Compiler

This paper presents Giallar, a fully-automated verification toolkit for ...
research
04/09/2019

The Last Mile: High-Assurance and High-Speed Cryptographic Implementations

We develop a new approach for building cryptographic implementations. Ou...
research
10/10/2022

The Foil: Capture-Avoiding Substitution With No Sharp Edges

Correctly manipulating program terms in a compiler is surprisingly diffi...

Please sign up or login with your details

Forgot password? Click here to reset