(expr, assumptions)
Rational ** Integer      -> Rational
        Irrational ** Rational   -> Irrational
        Rational ** Irrational   -> ?
Rational ** Integer      -> Rational
        Irrational ** Rational   -> Irrational
        Rational ** Irrational   -> ?
Rational ** Integer - > Rational Irrational ** Rational - > Irrational Rational ** Irrational - > ?
def Pow(expr, assumptions):
        """
        Rational ** Integer      -> Rational
        Irrational ** Rational   -> Irrational
        Rational ** Irrational   -> ?
        """
        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
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