It sounds strange, but I think it's helpful to provide a set representing "all objects" and then make subsets from that for classes. For example
objects like { length ∈ natural numbers }
Should be a set that is seemingly enumerable.
However, at runtime if someone actually enumerates that set we might be in trouble - we don't really want to provide an implementation of that. So that's where the whole "strategies" idea comes in.