Refinements of Futures Past: Higher-Order Specification with Implicit Refinement Types (Extended Version)

05/05/2021
by   Anish Tondwalkar, et al.
0

Refinement types decorate types with assertions that enable automatic verification. Like assertions, refinements are limited to binders that are in scope, and hence, cannot express higher-order specifications. Ghost variables circumvent this limitation but are prohibitively tedious to use as the programmer must divine and explicate their values at all call-sites. We introduce Implicit Refinement Types which turn ghost variables into implicit pair and function types, in a way that lets the refinement typechecker automatically synthesize their values at compile time. Implicit Refinement Types further take advantage of refinement type information, allowing them to be used as a lightweight verification tool, rather than merely as a technique to automate programming tasks. We evaluate the utility of Implicit Refinement Types by showing how they enable the modular specification and automatic verification of various higher-order examples including stateful protocols, access control, and resource usage.

READ FULL TEXT
POST COMMENT

Comments

There are no comments yet.

Authors

page 1

page 2

page 3

page 4

05/17/2017

Higher-Order Constrained Horn Clauses and Refinement Types

Motivated by applications in automated verification of higher-order func...
11/25/2017

Refinement Types for Ruby

Refinement types are a popular way to specify and reason about key progr...
05/20/2019

Desfuncionalizar para Provar

This paper explores the idea of using defunctionalization as a proof tec...
07/11/2018

Everybody's Got To Be Somewhere

The key to any nameless representation of syntax is how it indicates the...
03/03/2021

Functional Extensionality for Refinement Types

Refinement type checkers are a powerful way to reason about functional p...
06/24/2017

Local Refinement Typing

We introduce the Fusion algorithm for local refinement type inference, y...
05/16/2018

Omega: An Architecture for AI Unification

We introduce the open-ended, modular, self-improving Omega AI unificatio...
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.