Effects and Coeffects in Call-By-Push-Value
summary
Presents a type system for call-by-push-value that statically bounds both observable effects and environmental demands and proves effect-and-coeffect soundness for two runtime models: a generic semantics and a resource-aware semantics that discards unused pure work but always runs effectful code. Translations from source examples into CBPV preserve effects and coeffects, dead‑code elimination for pure unused computations is validated, and all results are fully Coq mechanization with reusable artifacts and reproduced experiments.
AI-written summary · about
chapters (13)
- 0:00Effects and coeffects intro
- 0:23Dead code elimination example
- 1:45Effects in type systems
- 2:46Coeffects on inputs
- 4:36Call-by-push-value overview
- 6:23Splitting expressions
- 8:09Translating programs to call-by-push-value
- 10:36Annotating call-by-push-value with effects and coeffects
- 11:59Semantics of computations
- 13:02Separating effects and coeffects
- 13:43Summary and future work
- 14:04Q&A: equational theory
- 17:55Q&A: practical apps
