Intersection and union types - Syntax and semantics