Reference. Formally Verified Cloud-Scale Authorization
Cite
Cited by (1)
Cazamariposas: Automated Instability Debugging in SMT-Based Program Verification zhou-2025-cazamariposas
Program verification languages such as Dafny and F often rely heavily on Satisfiability Modulo Theories (SMT) solvers for proof automation. However, SMT-based verification suffers from instability, where semantically irrelevant changes in the source program can cause spurious proof failures. While existing mitigation techniques emphasize preemptive measures, we propose a complementary approach that focuses on diagnosing and repairing specific instances of instability-induced failures. Our key technique is a novel differential analysis to pinpoint problematic quantified formulas in an unstable query. We implement this technique in Cazamariposas, a tool that automatically identifies such quantified formulas and suggests fixes. We evaluate Cazamariposas on multiple large-scale systems verification projects written in three different program verification languages. Our results demonstrate Cazamariposas’ effectiveness as an instability debugger. In the majority of cases, Cazamariposas successfully isolates the issue to a single problematic quantifier, while providing a stabilizing fix.
Cites 71 works (2 here)
With notes (2)
Verus: Verifying Rust Programs using Linear Ghost Types lattuada-2023-verus
The Rust programming language provides a powerful type system that checks linearity and borrowing, allowing code to safely manipulate memory without garbage collection and making Rust ideal for developing low-level, high-assurance systems. For such systems, formal verification can be useful to prove functional correctness properties beyond type safety. This paper presents Verus, an SMT-based tool for formally verifying Rust programs. With Verus, programmers express proofs and specifications using the Rust language, allowing proofs to take advantage of Rust’s linear types and borrow checking. We show how this allows proofs to manipulate linearly typed permissions that let Rust code safely manipulate memory, pointers, and concurrent resources. Verus organizes proofs and specifications using a novel mode system that distinguishes specifications, which are not checked for linearity and borrowing, from executable code and proofs, which are checked for linearity and borrowing. We formalize Verus’ linearity, borrowing, and modes in a small lambda calculus, for which we prove type safety and termination of specifications and proofs. We demonstrate Verus on a series of examples, including pointer-manipulating code (an xor-based doubly linked list), code with interior mutability, and concurrent code.
CakeML: A verified implementation of ML kumar_cakeml_2014
We have developed and mechanically verified an ML system called CakeML, which supports a substantial subset of Standard ML. CakeML is implemented as an interactive read-eval-print loop (REPL) in x86-64 machine code. Our correctness theorem ensures that this REPL implementation prints only those results permitted by the semantics of CakeML. Our verification effort touches on a breadth of topics including lexing, parsing, type checking, incremental and dynamic compilation, garbage collection, arbitraryprecision arithmetic, and compiler bootstrapping.
External (69)
- AWS Encryption SDK for Dafny (2024)
- Co-Developing Programs and Their Proof of Correctness (2024)
- Java Modeling Language (JML) reference manual (2024)
- The Coq Development Team. The Coq proof assistant (2024)
- Cedar: A New Language for Expressive, Fast, Safe, and Analyzable Authorization (2024)
- The Dafny Community (2024)
- How We Built Cedar: A Verification-Guided Approach (2024)
- The F* Development Team. Fstarlang/karamel: KaRaMeL is a tool for extracting low-level F* programs to readable C code (2024)
- Enhancing proof stability (2024)
- Microsoft. Shadow testing (2024)
- Protocols to code: Formal verification of a next-generation Internet router (2024)
- Amazon Web Services (2024)
- Context Pruning for More Robust SMT-based Program Verification (2024)
- Mariposa: Measuring SMT Instability in Automated Program Verification (2023)
- The Prusti Project: Formal Verification for Rust (2022)
- Creusot: A Foundry for the Deductive Verification of Rust Programs (2022)
- Testing Dafny (experience paper (2022)
- Hardening attack surfaces with formally proven binary format parsers (2022)
- The dogged pursuit of bug-free C programs (2021)
- Formally verifying FreeRTOS’ interprocess communication mechanism (2021)
- The Lean 4 theorem prover and programming language (2021)
- A security model and fully verified implementation for the IETF QUIC record layer (2021)
- Is-abelle/HOL: A proof assistant for higher-order logic (2021)
- Gobra: Modular Specification and Verification of Go Programs (2021)
- The Last Mile: High-Assurance and High-Speed Cryptographic Implementations (2020)
- Simple High-Level Code For Cryptographic Arithmetic (2020)
- seL4 in Australia: From research to real-world trustworthy systems (2020)
- EverCrypt: A fast, verified, cross-platform cryptographic provider (2020)
- Towards making formal methods normal: Meeting developers where they are (2020)
- Ev-erParse: Verified secure zero-copy parsers for authenticated message formats (2019)
- Formally verified software in the real world (2018)
- Shadow Testing for Business Process Improvement (2018)
- Continuous Experimentation: Challenges, Implementation Techniques, and Current Research (2018)
- IronFleet: proving safety and liveness of practical distributed systems (2017)
- Verified low-level programming embedded in F* (2017)
- Case studies (2017)
- Deductive Software Verification – The KeY Book (2016)
- The spirit of ghost code (2016)
- CompCert - a formally verified optimizing compiler (2016)
- Preventing signedness errors in numerical computations in Java (2016)
- Verified correctness and security of OpenSSL HMAC (2015)
- Are we there yet? 20 years of industrial theorem proving with SPARK (2014)
- Ironclad apps: End-to-end security via automated full-system verification (2014)
- Challenges and experiences in managing large-scale proofs (2012)
- Industrial-strength formal methods in practice (2012)
- Reim & ReImInfer (2012)
- Building and using pluggable type-checkers (2011)
- seL4: formal verification of an operating-system kernel (2010)
- Dafny: An automatic program verifier for functional correctness (2010)
- junit-quickcheck: Property-based testing, junit-style (2010)
- VCC: A Practical System for Verifying Concurrent C (2009)
- Applying a formal method in industry: A 15-year trajectory (2009)
- The VeriFast program verifier (2008)
- An overview of JML tools and applications (2005)
- QuickCheck: A lightweight tool for random testing of Haskell programs (2000)
- Differential testing for software (1998)
- Seven more myths of formal methods (1995)
- Larch: Languages and Tools for Formal Specification (1993)
- Seven myths of formal methods (1990)
- Program verification: the very idea (1988)
- Object-oriented Software Construction. Series in Computer Science (1988)
- The mathematics of programming (1985)
- An Early Program Proof by Alan Turing (1984)
- A Computational Logic (1979)
- Social processes and proofs of theorems and programs (1979)
- Stanford Pascal Verifier: User manual (1979)
- Assigning meanings to programs (1967)
- Checker Framework. The checker framework
- The F* Development Team. F*: A proof-oriented programming language