Typing Strictness (Extended Version)

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Sainati, Daniel, Cutler, Joseph W., Pierce, Benjamin C., Weirich, Stephanie
Format: Preprint
Published: 2025
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866915717736038400
author Sainati, Daniel
Cutler, Joseph W.
Pierce, Benjamin C.
Weirich, Stephanie
author_facet Sainati, Daniel
Cutler, Joseph W.
Pierce, Benjamin C.
Weirich, Stephanie
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2510_16133
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Typing Strictness (Extended Version)
Sainati, Daniel
Cutler, Joseph W.
Pierce, Benjamin C.
Weirich, Stephanie
Programming Languages
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.
title Typing Strictness (Extended Version)
topic Programming Languages
url https://arxiv.org/abs/2510.16133