Making a type difference_ Subtraction on intersection types as generalized record operations