'Rational ** Integer      -> Rational
Irrational ** Rational   -> Irrational
Rational ** Irrational   -> ?'

@staticmethod
def Pow(expr, assumptions):

    if ask(Q.integer(expr.exp), assumptions):
        return ask(Q.rational(expr.base), assumptions)
    elif ask(Q.rational(expr.exp), assumptions):
        if ask(Q.prime(expr.base), assumptions):
            return False
