Data Flow Refinement Type Inference

11/10/2020
by   Zvonimir Pavlinovic, et al.
0

Refinement types enable lightweight verification of functional programs. Algorithms for statically inferring refinement types typically work by reduction to solving systems of constrained Horn clauses extracted from typing derivations. An example is Liquid type inference, which solves the extracted constraints using predicate abstraction. However, the reduction to constraint solving in itself already signifies an abstraction of the program semantics that affects the precision of the overall static analysis. To better understand this issue, we study the type inference problem in its entirety through the lens of abstract interpretation. We propose a new refinement type system that is parametric with the choice of the abstract domain of type refinements as well as the degree to which it tracks context-sensitive control flow information. We then derive an accompanying parametric inference algorithm as an abstract interpretation of a novel data flow semantics of functional programs. We further show that the type system is sound and complete with respect to the constructed abstract semantics. Our theoretical development reveals the key abstraction steps inherent in refinement type inference algorithms. The trade-off between precision and efficiency of these abstraction steps is controlled by the parameters of the type system. Existing refinement type systems and their respective inference algorithms, such as Liquid types, are captured by concrete parameter instantiations. We have implemented our framework in a prototype tool and evaluated it for a range of new parameter instantiations (e.g., using octagons and polyhedra for expressing type refinements). The tool compares favorably against other existing tools. Our evaluation indicates that our approach can be used to systematically construct new refinement type inference algorithms that are both robust and precise.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/21/2017

Program Synthesis using Abstraction Refinement

We present a new approach to example-guided program synthesis based on c...
research
02/18/2020

ConSORT: Context- and Flow-Sensitive Ownership Refinement Types for Imperative Programs

We present ConSORT, a type system for safety verification in the presenc...
research
09/26/2022

Focusing on Liquid Refinement Typing

We present a foundation systematizing, in a way that works for any evalu...
research
08/04/2020

Intensional Datatype Refinement

The pattern-match safety problem is to verify that a given functional pr...
research
10/14/2021

A Functional Abstraction of Typed Invocation Contexts

In their paper "A Functional Abstraction of Typed Contexts", Danvy and F...
research
09/29/2020

Isomorphic Data Type Transformations

In stepwise derivations of programs from specifications, data type refin...
research
08/29/2022

How to Extend the Abstraction Refinement Model for Systems with Emergent Behavior ?

The Abstraction Refinement Model has been widely adopted since it was fi...

Please sign up or login with your details

Forgot password? Click here to reset