Should we consider the empty tuple to be both a valid symbolic batch and a valid numerical batch? (Much as a set can be both closed an open) If so, maybe we should put a comment in the docstring warning that "not is_symbolic_batch(batch)" does not imply is_numeric_batch(batch)