Refinement and dependent types: Programming Language Design course | Zoonk
27. Refinement and dependent types
Use refinements, dependent function types, propositions as types, and proof terms to express stronger guarantees. Work through decidability, annotation burden, and the boundary between checking and proving.