On the power of coercion abstraction

Julien Cretin, Didier Rémy
2012 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '12  
Erasable coercions in System F η , also known as retyping functions, are well-typed η-expansions of the identity. They may change the type of terms without changing their behavior and can thus be erased before reduction. Coercions in F η can model subtyping of known types and some displacement of quantiers, but not subtyping assumptions nor certain forms of delayed type instantiation. We generalize F η by allowing abstraction over retyping functions. We follow a general approach where computing
more » ... with coercions can be seen as computing in the λ-calculus but keeping track of which parts of terms are coercions. We obtain a language where coercions do not contribute to the reduction but may block it and are thus not erasable. We recover erasable coercions by choosing a weak reduction strategy and restricting coercion abstraction to value-forms or by restricting abstraction to coercions that are polymorphic in their domain or codomain. The latter variant subsumes F η , F <: , and MLF in a unied framework. Résumé : Les coercions eaçables dans le Système F η , aussi connues sous le nom de fonctions de retypage, sont des η-expansions de l'identité. Elles peuvent changer le type des termes sans en changer leur comportement et peuvent donc être eacées avant la réduction. Les coercions de F η peuvent modéliser le sous-typage entre types connus ou le déplacement de quanticateurs, mais elles ne permettent pas certaines formes d'instanciation retardée ni de raisonner sous des hypothèses de sous-typage. Nous généralisons F η en introduisant l'abstraction des fonctions de retypage. Nous suivons une approche générale où le calcul avec des coercions peut être vu comme une réduction dans le λ-calcul gardant trace de la partie des termes qui sont des coercions. Nous obtenons un langage où les coercions ne contribuent pas au calcul, mais peuvent le bloquer et ne sont donc pas eaçables. Nous retrouvons des coercions eaçables en choisissant une stratégie de réduction faible et en restreignant l'abstraction de coercions aux valeurs ou bien en restreignant l'abstraction aux coercions qui sont polymorphes en leur domaine ou en leur codomaine. Cette seconde variante généralise F η , MLF et F <: dans un cadre unié.
doi:10.1145/2103656.2103699 dblp:conf/popl/CretinR12 fatcat:gtd47sxwefgsrkmnpr6a4llt4q