Don't exhaust, don't waste
By: Riccardo Bianchini , Francesco Dagnino , Paola Giannini and more
Potential Business Impact:
Prevents computer programs from wasting resources.
We extend the semantics and type system of a lambda calculus equipped with common constructs to be resource-aware. That is, the semantics keep tracks of the usage of resources, and is stuck, besides in case of type errors, if either a needed resource is exhausted, or a provided resource would be wasted. In such way, the type system guarantees, besides standard soundness, that for well-typed programs there is a computation where no resource gets either exhausted or wasted. The no-waste extension is parametric on an arbitrary grade algebra, modeling an arbitrary assortment of possible usages, and does not require ad-hoc changes to the underlying language. To this end, the semantics needs to be formalized in big-step style; as a consequence, expressing and proving (resource-aware) soundness is challenging, and is achieved by applying recent techniques based on coinductive reasoning.
Similar Papers
Lazy Linearity for a Core Functional Language
Programming Languages
Makes computer programs use resources correctly.
Lazy Linearity for a Core Functional Language
Programming Languages
Makes computer programs use resources correctly always.
Typing Strictness (Extended Version)
Programming Languages
Makes computer programs run faster by understanding how they use info.