Litcius/Paper detail

Refinement Types: A Tutorial

Ranjit Jhala, Niki Vazou

2021Foundations and Trends® in Programming Languages26 citationsDOIOpen Access PDF

Abstract

Refinement types enrich a language’s type system with logical predicates that circumscribe the set of values described by the type. These refinement predicates provide software developers a tunable knob with which to inform the type system about what invariants and correctness properties should be checked on their code, and give the type checker a way to enforce those properties at compile time. In this article, we distill the ideas developed in the substantial literature on refinement types into a unified tutorial that explains the key ingredients of modern refinement type systems. In particular, we show how to implement a refinement type checker via a progression of languages that incrementally add features to the language or type system.

Topics & Concepts

Computer scienceProgramming languageSoftware Engineering ResearchLogic, programming, and type systemsModel-Driven Software Engineering Techniques
Refinement Types: A Tutorial | Litcius