Refinement Type Refutations

Robin Webbers*, Klaus von Gleissenthall, Ranjit Jhala

*Corresponding author for this work

Research output: Contribution to JournalArticleAcademicpeer-review

Abstract

Refinement types combine SMT decidable constraints with a compositional, syntax-directed type system to provide a convenient way to statically and automatically check properties of programs. However, when type checking fails, programmers must use cryptic error messages that, at best, point out the code location where a subtyping constraint failed to determine the root cause of the failure. In this paper, we introduce refinement type refutations, a new approach to explaining why refinement type checking fails, which mirrors the compositional way in which refinement type checking is carried out. First, we show how to systematically transform standard bidirectional type checking rules to obtain refutations. Second, we extend the approach to account for global constraint-based refinement inference via the notion of a must-instantiation: a set of concrete inhabitants of the types of subterms that suffice to demonstrate why typing fails. Third, we implement our method in HayStack—an extension to LiqidHaskell which automatically finds type-refutations when refinement type checking fails, and helps users understand refutations via an interactive user-interface. Finally, we present an empirical evaluation of HayStack using the regression benchmark-set of LiqidHaskell, and the benchmark set of G2, a previous method that searches for (non-compositional) counterexample traces by symbolically executing Haskell source. We show that HayStack can find refutations for 99.7% of benchmarks, including those with complex typing constructs (e.g., abstract and bounded refinements, and reflection), and does so, an order of magnitude faster than G2.

Original languageEnglish
Article number305
Pages (from-to)962-987
Number of pages26
JournalProceedings of the ACM on Programming Languages
Volume8
Issue numberOOPSLA2
Early online date8 Oct 2024
DOIs
Publication statusPublished - Oct 2024

Bibliographical note

Publisher Copyright:
© 2024 Copyright held by the owner/author(s).

Funding

FundersFunder number
European Research Council
HORIZON EUROPE European Innovation Council
National Science FoundationCNS-2327336, CCF-1911213, CNS-2155235, CCF-1918573, CNS-2120642
National Science Foundation
SecuStack101115046

    Keywords

    • Counterexamples
    • Refinement Types
    • Type Refutations

    Fingerprint

    Dive into the research topics of 'Refinement Type Refutations'. Together they form a unique fingerprint.

    Cite this