Typing Strictness (Extended Version)

📅 2025-10-17
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
In non-strict functional languages, source-level strictness analysis suffers from poor intuitiveness and imprecision, hindering compiler optimizations. This paper addresses the problem by introducing a fine-grained strictness definition that precisely characterizes variable usage patterns, thereby enhancing source-level strictness reasoning. We design a novel type-theoretic framework unifying call-by-name and call-by-push-value semantics, supporting structure-preserving translations with strictness annotations. Crucially, we model strictness behavior via effect and coeffect tracking, and establish type soundness through logical relations. All theoretical results—including a strictness-preserving translation between two computational models and its runtime behavioral characterization—are fully mechanized in Rocq. To our knowledge, this is the first work achieving a formal end-to-end strictness analysis pipeline: from rigorous definition and typed system design to complete mechanized verification.

Technology Category

Application Category

📝 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.
Problem

Research questions and friction points this paper is trying to address.

Refining strictness definition for precise variable usage
Establishing type-theoretic foundations for strictness analysis
Proving runtime accuracy of strictness attributes via logical relations
Innovation

Methods, ideas, or system contributions that make the work stand out.

Refined strictness definition with precise variable usage
Type-theoretic foundations for call-by-name and push-value
Logical relation proof for runtime variable usage accuracy
🔎 Similar Papers
No similar papers found.