Make better use of s/pred to make error reports easier to read.
Use s/eq instead of our own is?.
Use s/if to check whether we have a set or not when validating
one-or-many semantics.