PDF e-Pub

## Section: New Results

### Calculi with Union and Intersection types

Participants : Luigi Liquori, Claude Stolze.

Union and intersection types are interesting to improve actual programming languages static disciplines with alternative form of polymorphism. Since type inference is undecidable, our research vein focus on finding suitable “type decorations” in term syntax permitting to make type checking decidable, i.e. $\lambda x.x:\left(\sigma \to \sigma \right)\cap \left(\tau \to \tau \right)$ becomes $〈\lambda x:\sigma .x,\lambda x:\tau .x〉:\left(\sigma \to \sigma \right)\cap \left(\tau \to \tau \right)$ in a fully-typed syntax. Those type systems uses intensively a subtyping relation stating e.g. that $\sigma \cap \tau \le \sigma$ or $\sigma \le \sigma \cup \tau$. Deciding whether $\sigma \le \tau$ can be extremely difficult in complexity (space and time): actually, there are few algorithms in the literature dealing with union and intersection types. Recently [45] we have proved and certified in Coq a subtype algorithm of a type theory with union and intersection types; we have also extracted a running functional code. Subtyping constraints could be easily interpreted as temporal constraints in a suitable temporal algebra, like those that could be specified in CCSL. Advances of typed-calculi featuring those type disciplines are presented in [42], [31] and [14].