(expr, assumptions)
Even + Odd  -> Odd
        Even + Even -> Even
        Odd  + Odd  -> Even
Even + Odd  -> Odd
        Even + Even -> Even
        Odd  + Odd  -> Even
Even + Odd - > Odd Even + Even - > Even Odd + Odd - > Even
def Add(expr, assumptions):
        """
        Even + Odd  -> Odd
        Even + Even -> Even
        Odd  + Odd  -> Even

        """
        if expr.is_number:
            return AskEvenHandler._number(expr, assumptions)
        _result = True
        for arg in expr.args:
            if ask(Q.even(arg), assumptions):
                pass
            elif ask(Q.odd(arg), assumptions):
                _result = not _result
            else:
                break
        else:
            return _result
def Add ( expr , assumptions ) : if expr . is_number : return AskEvenHandler . _number ( expr , assumptions ) _result = True for arg in expr . args : if ask ( Q . even ( arg ) , assumptions ) : pass elif ask ( Q . odd ( arg ) , assumptions ) : _result = not _result else : break else : return _result