precise = false returns the constraint itself as output type (which is not sound when it is a variable).