How to safely use extensionality in Liquid Haskell

Niki Vazou, Michael Greenberg · 2022

Refinement type checkers are a powerful way to reason about functional programs. For example, one can prove properties of a slow, specification implementation and port the proofs to an optimized pure implementation that behaves the same. But to reason about higher-order programs, we must reason about equalities between functions: we need a consistent encoding of functional extensionality.

Read the paper · More papers on PaperTik