Union and intersection types