This paper introduces λdB, a blame calculus with dependent types. It supports dependent functions, predicate refinement at all types, the dynamic type, and full blame tracking. It is inspired by and extends previous work on hybrid types and Sage, by Flanagan and others; manifest contracts, by Greenberg, Pierce, and Weirich; and blame calculus by Wadler and Findler. While previous work only allows refinement over base types, λdB supports refinement over any type. We introduce novel techniques in order to prove blame safety for this language, including a careful analysis that reduces open judgments on terms to closed ones on values, and the idea of ‘subtyping with a witness’, which fix flaws in the previous work of Wadler and Findler. These technical contributions mean that we can achieve a completely operational account of the metatheory of our language, and thereby avoid the need to intertwine operational and semantic models which bedevils the work on hybrid types and manifest contracts.
|Publication status||Published - 2020|
|Event||First ACM SIGPLAN Workshop on Gradual Typing 2020 - New Orleans, United States|
Duration: 19 Jan 2020 → 25 Jan 2020
|Conference||First ACM SIGPLAN Workshop on Gradual Typing 2020|
|Abbreviated title||WGT 2020|
|Period||19/01/20 → 25/01/20|