The CRETE Project* ( ERC Starting Grant )
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.
*Partially funded by the European Union (GA 101039196). Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council. Neither the European Union nor the European Research Council can be held responsible for them.
People
- Niki Vazou, Research Associate Proffesor, PI.
- Afonso Rafael, Research Intern.
- Lykourgos Mastorou, Research Intern.
- Antonio Zegarelli, Research Intern, co-supervised by Marco Guarnieri.
- Lisa Vasilenko, PhD Student, co-supervised by Gilles Barthe.
Open Positions
If you want to join CRETE as a Postdoc, Ph.D., or intern, email Niki Vazou (niki . vazou @ imdea . org) and submit an application at IMDEA.
Publications
Safe Couplings: Coupled Refinement Types by Lisa Vasilenko, Niki Vazou, and Gilles Barthe. ICFP 2022 [.pdf, artifact]
Coinduction Inductively: Mechanizing Coinductive Proofs in Liquid Haskell by Lykourgos Mastorou, Nikolaos Papaspyrou, and Niki Vazou. Haskell 2022. [.pdf, artifact]
How to Safely Use Extensionality in Liquid Haskell by Niki Vazou and Michael Greenberg. Haskell 2022. [.pdf, artifact]
Liquid Proof Macros by Henry Blanchette, Niki Vazou, and Leonidas Lampropoulos. Haskell 2022. [.pdf, artifact]
ANOSY: Approximated Knowledge Synthesis with Refinement Types for Declassification by Sankha Guria, Niki Vazou, Marco Guarnieri, and James Parker. PLDI 2022. [.pdf, artifact]
REST: Integrating Term Rewriting with Program Verification by Zachary Grannan, Niki Vazou, Eva Darulova, and Alexander J. Summers. ECOOP 2022. [.pdf, artifact]