Refinement Types: A Tutorial

10/15/2020
by   Ranjit Jhala, et al.
0

Refinement types enrich a language's type system with logical predicates that circumscribe the set of values described by the type, thereby providing software developers a tunable knob with which to inform the type system about what invariants and correctness properties should be checked on their code. 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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/25/2017

Refinement Types for Ruby

Refinement types are a popular way to specify and reason about key progr...
research
10/16/2020

General Semantic Construction of Dependent Refinement Type Systems, Categorically

Refinement types are types equipped with predicates that specify precond...
research
08/01/2019

Refinement Kinds: Type-safe Programming with Practical Type-level Computation (Extended Version)

This work introduces the novel concept of kind refinement, which we deve...
research
07/05/2018

Gradual Liquid Type Inference

Liquid typing provides a decidable refinement inference mechanism that i...
research
09/26/2022

Focusing on Liquid Refinement Typing

We present a foundation systematizing, in a way that works for any evalu...
research
07/12/2022

Mechanizing Refinement Types (extended)

Practical checkers based on refinement types use the combination of impl...
research
02/25/2020

A Type Checker for a Logical Framework with Union and Intersection Types

We present the syntax, semantics, and typing rules of Bull, a prototype ...

Please sign up or login with your details

Forgot password? Click here to reset