PulseExploreJournal ClubDebatesTrendingResearchersJournals
Instagram
HomeExploreJournal ClubTrending
Synapse
⌘+K
Synapse
April 12, 2026Proceedings of the ACM on Programming Languages0 citationsOpen Access

PLEX: Normalization for Refinement Types

View Full Paper
AFAlessio FerrariniNVNiki VazouWSWouter Swierstra

Key Points

  • To advance symbolic evaluation in refinement types by introducing PLEX, addressing limitations of current algorithms.
  • Introduced PLEX as an extension to Proof by Logical Evaluation (PLE) for higher-order reasoning.
  • Proved soundness and termination of PLEX.
  • Implemented PLEX in Liquid Haskell and evaluated it on complex higher-order examples.
  • Demonstrated that PLEX supports η-expansions and β-reductions.
  • Showed that PLEX can handle examples beyond the capabilities of PLE.
  • Confirmed the effectiveness of PLEX in bridging higher-order languages with first-order SMT solvers.

Abstract

Refinement types often use SMT solvers to automate program verification. However, since SMT solvers are first-order, verification of properties that requires higher-order reasoning is not possible. Proof by Logical Evaluation (PLE) is an algorithm that provides a layer between refinement types and SMT solvers that permits symbolic evaluation of functions, but it lacks support for higher-order reasoning. We introduce PLEX, an extension to PLE, that supports η-expansions, β-reductions, and dependent pattern matching. We prove that PLEX is sound and terminating, describe its implementation in Liquid Haskell, and evaluate it on examples that make essential use of higher-order data, and as such they cannot be handled by PLE. The new PLEX algorithm bridges the gap between higher-order languages and first-order SMT solvers via refinement types.

Ask AI
Helpful
Bookmark
Share
View Full Paper

Cite This Study

Ferrarini et al. (2026) studied this question.

synapsesocial.com/papers/69db37774fe01fead37c57achttps://doi.org/10.1145/3798248
Ask AI
Helpful
Bookmark
Share
View Full Paper