Representing Tuple types as products