Shouldn't we check `arg` to be `Symbol` in `is_canonical`  alongside checking all `x` are `Symbol` ?