Overall Objectives
Application Domains
Bilateral Contracts and Grants with Industry
Partnerships and Cooperations
Bibliography
 PDF e-Pub

## Section: New Results

### Computing with global environments

The call-by-need evaluation strategy for the $\lambda$-calculus is an evaluation strategy that lazily evaluates arguments only if needed, and if so, shares computations across all places where it is needed. To implement this evaluation strategy, abstract machines require some form of global environment. While abstract machines usually lead to a better understanding of the flow of control during the execution, easing in particular the definition of continuation-passing style translations, the case of machines with global environments turns out to be much more subtle.

In collaboration with Hugo Herbelin, Étienne Miquey introduced ${F}_{\Upsilon }$, a calculus featuring a data type for typed stores and a mechanism of explicit coercions witnessing store extensions. This calculus defines a generic target of typed continuationand-environment-passing style translations for several calculi with global environment: it is compatible with different evaluation strategy (call-by-need, call-by-name, call-by-value) and different type systems (simple types, system F). On the logical side, these translations broadly amounts to a Kripke forcing-like translation mixed with a negative translation (for the continuation-passing part).