The return value of rmc::nondet doesn't always respect the invariant of a type. This can be confusing for a user which may want to cover the search space for all valid values of a type or for all possible values (valid and invalid).
We should create two different functions for each use case and ideally a way for a user to specify invariant of their own types.