Also, isn't it a bug to return `Pow(a, b)`? When can this happen? When `b` is Rational? But if `a` is a number, then these two should be combined. So the assert statement will raise an exception in `Pow`, wouldn't it?