arrow
Return

PLEX: Normalization for Refinement Types

delete2026-04-01
delete0
PRE
AI
F
Ferrarini, Alessio *
V
Vazou, Niki
S
Swierstra, Wouter
DOI:10.1145/3798248delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
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 q-expansions, f3-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.
Keywords:
refinement types
SMT-based verification
higher-order reasoning

Journal

P
Proceedings of the ACM on Programming Languages-PACMPL
IF:
2.8
Papers:
308
Citations:
4.7K

Organization

U
Utrecht University
Scholars:
5.9W
Papers: 5.1W
Citations: 5.8W
I
imdea software institute
Scholars:
63
Papers: 45
Citations: 0