Abstract refinement types

  • Authors:
  • Niki Vazou;Patrick M. Rondon;Ranjit Jhala

  • Affiliations:
  • UC San Diego;Google;UC San Diego

  • Venue:
  • ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present abstract refinement types which enable quantification over the refinements of data- and function-types. Our key insight is that we can avail of quantification while preserving SMT-based decidability, simply by encoding refinement parameters as uninterpreted propositions within the refinement logic. We illustrate how this mechanism yields a variety of sophisticated means for reasoning about programs, including: parametric refinements for reasoning with type classes, index-dependent refinements for reasoning about key-value maps, recursive refinements for reasoning about recursive data types, and inductive refinements for reasoning about higher-order traversal routines. We have implemented our approach in a refinement type checker for Haskell and present experiments using our tool to verify correctness invariants of various programs.