The term "type constraint" tends to be overloaded for two very different concepts that should be distinguished:
It doesn’t seem reasonable to think of 2) as a kind of 1). i.e. that equivalence classes be regarded as a subset of the original set. i.e. that equivalence classes be regarded as specialisation by constraint by using a boolean valued expression to obtain a canonical form. It's obscure to think of the rationals as a subtype of Z⨯(Z\{0}). Indeed if this were the case then why are possreps needed at all? All we need do is specialise tuple-types using set comprehension.