TL;DR
This paper introduces gradual liquid type inference, combining liquid typing with gradual refinement types to improve modular inference, error explanation, and applicability to library code in static analysis.
Contribution
It proposes a novel inference approach that handles imprecise predicates, enabling modular inference and better error diagnostics in liquid type systems.
Findings
Addresses global inference limitations for modular code
Supports imprecise predicates for flexible type inference
Enables enumeration of safe concretizations for error explanation
Abstract
Liquid typing provides a decidable refinement inference mechanism that is convenient but subject to two major issues: (1) inference is global and requires top-level annotations, making it unsuitable for inference of modular code components and prohibiting its applicability to library code, and (2) inference failure results in obscure error messages. These difficulties seriously hamper the migration of existing code to use refinements. This paper shows that gradual liquid type inference---a novel combination of liquid inference and gradual refinement types---addresses both issues. Gradual refinement types, which support imprecise predicates that are optimistically interpreted, can be used in argument positions to constrain liquid inference so that the global inference process e effectively infers modular specifications usable for library components. Dually, when gradual refinements…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
