Intersection types
Type systems, especially when used in programming languages, often benefit from having a notion of intersection amongst their primitive operators.
Thus, we can postulate a binary operator
\frac{
\Gamma \vdash M : A
\quad
\Gamma \vdash M : B
}{
\Gamma \vdash M : A \land B
}
That is: if
Conversely, we can eliminate the intersection by 'forgetting' it:
\frac{
\Gamma \vdash M : A \land B
}{
\Gamma \vdash M : A
}
\quad
\frac{
\Gamma \vdash M : A \land B
}{
\Gamma \vdash M : B
}
Such type systems have many uses:
- They can be used to exactly characterise the strong normalizing terms of the untyped
\lambda -calculus. - They can be used in type systems for the
\pi -calculus.
...
References
- A recent survey of intersection types was presented as an invited talk at LICS 2020:
@inproceedings{bono_2020,
address = {Saarbrücken Germany},
title = {A tale of intersection types},
doi = {10.1145/3373718.3394733},
booktitle = {Proceedings of the 35th {Annual} {ACM}/{IEEE} {Symposium} on {Logic} in {Computer} {Science}},
publisher = {ACM},
author = {Bono, Viviana and Dezani-Ciancaglini, Mariangiola},
month = jul,
year = {2020},
pages = {7--20}
}