make sure exactness happens in some places, and is-integer
Merge branch 'master' into datatype
well-formed checks for datatype variants