Certified Refinement Types

ERC (European Research Council)HORIZON-ERCID: 101039196
EC Contribution
€15,000
Consortium Size
1 orgs
Start Year
2022
Summary

Refinement types are a type-based, static verification technique designed to be practical. They enrich the types of an existing programming language with logical predicates to specify program properties and automatically validate these specifications using SMT solvers. Refinement types are a promising verification technology that in the last decade has spread to mainstream languages (e.g., Haskell, C, Ruby, Scala, and the ML-family) to verify sophisticated properties of real world applications, e.g., safety of cryptographic protocols, memory and resource usage, and web security. The weakness of refinement types is that they do not meet the soundness standards set by theorem provers. A sound verification system accepts as safe only those programs that never violate their specifications. Refinement type checkers (e.g., Liquid Haskell, F*, and Stainless) approximately report five unsoundness bugs per year, as opposed to only one reported by the Coq theorem prover. This rarity of unsoundness bugs in Coq is unsurprising since Coq is designed to soundly machine check mathematical proofs. Coq's soundness design recipe though cannot be directly applied to refinement type checkers that aim to practically verify real world programs. The goal of CRETE is to design a sound and practical refinement type system.This is an ambitious goal that entails the development of a verification system that is as practical as refinement types and constructs machine-checked mathematical proofs. The system will be implemented on refinement type systems for mainstream languages (i.e., Haskell and Rust) and will be evaluated on real-world code, such as web applications and cryptographic protocols. CRETE is high-risk since it aims to develop a novel program logic in which SMT automation co-exists with real world programming. Yet, CRETE is high-gain since it proposes a low-cost, high-profit approach to formal verification that aims to be integrated in mainstream software development.

Consortium (1)

Project Results (12)

Source: CORDIS, the EU research results database.

Publications (10)
Mechanizing Refinement Types
POPL· 2024DOI
Michael H. Borkowski; Niki Vazou; Ranjit Jhala
Modular Implementation and Formalization of Dynamic Policies Work In Progress
FCS· 2024
Antonio Zegarelli, Niki Vazou, and Marco Guarnieri
OBRA: Oracle-Based, Relational, Algorithmic Type Verification
Lecture Notes in Computer Science, Programming Languages and Systems· 2024DOI
Elizaveta Vasilenko, Niki Vazou, Gilles Barthe
Flux: Liquid Types for Rust
PLDI· 2023DOI
Nico Lehmann; Adam T. Geller; Niki Vazou; Ranjit Jhala
ANOSY: approximated knowledge synthesis with refinement types for declassification
PLDI· 2022DOI
Guria, Sankha Narayan; Vazou, Niki; Guarnieri, Marco; Parker, James
Coinduction inductively: mechanizing coinductive proofs in Liquid Haskell
Haskell Symposium· 2022DOI
Lykourgos Mastorou; Nikolaos Papaspyrou; Niki Vazou
How to Safely Use Extensionality in Liquid Haskell
Haskell Symposium· 2022DOI
Niki Vazou and Michael Greenberg
Liquid Proof Macros
Haskell Symposium· 2022DOI
Henry Blanchette, Niki Vazou, and Leonidas Lampropoulos
REST : Integrating Term Rewriting with Program Verification
ECOOP· 2022DOI
Grannan, Zachary; Vazou, Niki; Darulova, Eva; Summers, Alexander J.
Safe couplings: coupled refinement types
ICFP· 2022DOI
Elizaveta Vasilenko; Niki Vazou; Gilles Barthe
Deliverables (1)
Data Management Plan
Other Results (1)
Periodic Reporting for period 1 - CRETE (Certified Refinement Types)