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

page 1

page 2

page 3

page 4

research
05/17/2017

Higher-Order Constrained Horn Clauses and Refinement Types

Motivated by applications in automated verification of higher-order func...
research
07/12/2022

Mechanizing Refinement Types (extended)

Practical checkers based on refinement types use the combination of impl...
research
05/20/2019

Desfuncionalizar para Provar

This paper explores the idea of using defunctionalization as a proof tec...
research
08/02/2023

Staged Specifications for Automated Verification of Higher-Order Imperative Programs

Higher-order functions and imperative references are language features s...
research
03/03/2021

Functional Extensionality for Refinement Types

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

Local Refinement Typing

We introduce the Fusion algorithm for local refinement type inference, y...
research
07/11/2018

Everybody's Got To Be Somewhere

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

Please sign up or login with your details

Forgot password? Click here to reset