Effects and Coeffects in Call-by-Push-Value

Effect and coeffect tracking integrate many types of compile-time analysis, such as cost, liveness, or dataflow, directly into a language’s type system. In this paper, we investigate the addition of effect and coeffect tracking to the type system of call-by-push-value (CBPV), a computational model useful in compilation for its isolation of effects and for its ability to cleanly express both call-by-name and call-by-value computations. Our main result is effect-and-coeffect soundness , which asserts that the type system accurately bounds the effects that the program may trigger during execution and accurately tracks the demands that the program may make on its environment. This result holds for two different dynamic semantics: a generic one that can be adapted for different coeffects and one that is adapted for reasoning about resource usage. In particular, the second semantics discards the evaluation of unused values and pure computations while ensuring that effectful computations are always evaluated, even if their results are not required. Our results have been mechanized using the Coq proof assistant.

Authors

Institutions

Publication Details

Journal
Proceedings of the ACM on Programming Languages
Published
2024-10-08
DOI
https://doi.org/10.1145/3689750
Citations
3
Primary Topic
Logic, programming, and type systems
Type
article
Field-Weighted Citation Impact
1.04
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Effects and Coeffects in Call-by-Push-Value

Joey Velez‐Ginorio, Stephanie Weirich, Emmanuel Suárez Acevedo, Cassia Torczon et al.
3 citations
Proceedings of the ACM on Programming Languages
Logic, programming, and type systems
1.04
article

Effects and Coeffects in Call-by-Push-Value

Joey Velez‐Ginorio, Stephanie Weirich, Emmanuel Suárez Acevedo, Cassia Torczon, Shubh Agrawal
article en
3 citations

Abstract

Effect and coeffect tracking integrate many types of compile-time analysis, such as cost, liveness, or dataflow, directly into a language’s type system. In this paper, we investigate the addition of effect and coeffect tracking to the type system of call-by-push-value (CBPV), a computational model useful in compilation for its isolation of effects and for its ability to cleanly express both call-by-name and call-by-value computations. Our main result is effect-and-coeffect soundness , which asserts that the type system accurately bounds the effects that the program may trigger during execution and accurately tracks the demands that the program may make on its environment. This result holds for two different dynamic semantics: a generic one that can be adapted for different coeffects and one that is adapted for reasoning about resource usage. In particular, the second semantics discards the evaluation of unused values and pure computations while ensuring that effectful computations are always evaluated, even if their results are not required. Our results have been mechanized using the Coq proof assistant.

Proceedings of the ACM on Programming LanguagesVol. 8(OOPSLA2)
University of Michigan (US), University of Pennsylvania (US), Philadelphia University (US)
Decent work and economic growth
Openalex Percentile: Top 19%
Logic, programming, and type systems
1.04
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Effects and Coeffects in Call-by-Push-Value — Joey Velez‐Ginorio, Stephanie Weirich, et al. · Proceedings of the ACM on Programming Languages (2024) | TGRS Research Map | TGRS