English

Typing Strictness (Extended Version)

Programming Languages 2026-01-12 v2

Abstract

Strictness analysis is critical to efficient implementation of languages with non-strict evaluation, mitigating much of the performance overhead of laziness. However, reasoning about strictness at the source level can be challenging and unintuitive. We propose a new definition of strictness that refines the traditional one by describing variable usage more precisely. We lay type-theoretic foundations for this definition in both call-by-name and call-by-push-value settings, drawing inspiration from the literature on type systems tracking effects and coeffects. We prove via a logical relation that the strictness attributes computed by our type systems accurately describe the use of variables at runtime, and we offer a strictness-annotation-preserving translation from the call-by-name system to the call-by-push-value one. All our results are mechanized in Rocq.

Keywords

Cite

@article{arxiv.2510.16133,
  title  = {Typing Strictness (Extended Version)},
  author = {Daniel Sainati and Joseph W. Cutler and Benjamin C. Pierce and Stephanie Weirich},
  journal= {arXiv preprint arXiv:2510.16133},
  year   = {2026}
}

Comments

30 pages, 22 figures, extended version of a paper at POPL 2026

R2 v1 2026-07-01T06:44:11.952Z