'Real*Real               -> Real
Real*Imaginary          -> !Real
Imaginary*Imaginary     -> Real'

@staticmethod
def Mul(expr, assumptions):

    if expr.is_number:
        return AskRealHandler._number(expr, assumptions)
    result = True
    for arg in expr.args:
        if ask(Q.real(arg), assumptions):
            pass
        elif ask(Q.imaginary(arg), assumptions):
            result = (result ^ True)
        else:
            break
    else:
        return result
