English

Intersection types for unbind and rebind

Logic in Computer Science 2011-01-25 v1 Programming Languages

Abstract

We define a type system with intersection types for an extension of lambda-calculus with unbind and rebind operators. In this calculus, a term with free variables, representing open code, can be packed into an "unbound" term, and passed around as a value. In order to execute inside code, an unbound term should be explicitly rebound at the point where it is used. Unbinding and rebinding are hierarchical, that is, the term can contain arbitrarily nested unbound terms, whose inside code can only be executed after a sequence of rebinds has been applied. Correspondingly, types are decorated with levels, and a term has type decorated with k if it needs k rebinds in order to reduce to a value. With intersection types we model the fact that a term can be used differently in contexts providing different numbers of unbinds. In particular, top-level terms, that is, terms not requiring unbinds to reduce to values, should have a value type, that is, an intersection type where at least one element has level 0. With the proposed intersection type system we get soundness under the call-by-value strategy, an issue which was not resolved by previous type systems.

Keywords

Cite

@article{arxiv.1101.4426,
  title  = {Intersection types for unbind and rebind},
  author = {Mariangiola Dezani-Ciancaglini and Paola Giannini and Elena Zucca},
  journal= {arXiv preprint arXiv:1101.4426},
  year   = {2011}
}

Comments

In Proceedings ITRS 2010, arXiv:1101.4104

R2 v1 2026-06-21T17:15:45.084Z