Naturality is more general than `Natural`, `Whole`, etc., and should be an interface supporting type-safe `Zero` and `NonZero` for all proper subtypes.