Local Refinement Typing

06/24/2017
by   Benjamin Cosman, et al.
0

We introduce the Fusion algorithm for local refinement type inference, yielding a new SMT-based method for verifying programs with polymorphic data types and higher-order functions. Fusion is concise as the programmer need only write signatures for (externally exported) top-level functions and places with cyclic (recursive) dependencies, after which Fusion can predictably synthesize the most precise refinement types for all intermediate terms (expressible in the decidable refinement logic), thereby checking the program without false alarms. We have implemented Fusion and evaluated it on the benchmarks from the LiquidHaskell suite totalling about 12KLOC. Fusion checks an existing safety benchmark suite using about half as many templates as previously required and nearly 2x faster. In a new set of theorem proving benchmarks Fusion is both 10 - 50x faster and, by synthesizing the most precise types, avoids false alarms to make verification possible.

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
04/06/2019

System FR as Foundations for Stainless

We present the design, implementation, and foundation of a verifier for ...
research
02/18/2021

Refinement Type Directed Search for Meta-Interpretive-Learning of Higher-Order Logic Programs

The program synthesis problem within the Inductive Logic Programming (IL...
research
05/05/2021

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

Refinement types decorate types with assertions that enable automatic ve...
research
10/12/2021

Toward SMT-Based Refinement Types in Agda

Dependent types offer great versatility and power, but developing proofs...
research
11/09/2017

Refinement Reflection: Complete Verification with SMT

We introduce Refinement Reflection, a new framework for building SMT-bas...
research
10/24/2018

Type-directed Bounding of Collections in Reactive Programs

Our aim is to statically verify that in a given reactive program, the le...

Please sign up or login with your details

Forgot password? Click here to reset