Mechanizing Refinement Types
summary
Introduces λRF, a core calculus that actually combines semantic subtyping with parametric polymorphism and proves soundness; develops two mechanizations: one in LiquidHaskell (adds a positivity checker and uses the equations library workaround) and one in Coq (full denotational mechanization); introduces data propositions to encode derivation trees; proves standard type safety and denotational soundness; artifacts and proofs are available and the LiquidHaskell path required a concrete patch to avoid unsoundness.
AI-written summary · about
chapters (11)
- 0:00Refinement types intro
- 1:05Challenges in refinement types
- 3:11Arrays as functions example
- 7:59Circularity in subtyping
- 9:50Stratifying the calculus
- 10:53Refinement implication formalized
- 11:35Polymorphism with refinements
- 13:21Type safety mechanized
- 14:45Lessons from LiquidHaskell
- 15:29Conclusion and future
- 15:50Q&A
