ó
~9­\c           @  s^  d  Z  d d l m Z m Z d d l m Z m Z d d l m Z m	 Z	 d d l
 m Z d d l m Z m Z d d l m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   sL   
Handlers for predicates related to set membership: integer, rational, etc.
iÿÿÿÿ(   t   print_functiont   division(   t   Qt   ask(   t   CommonHandlert   test_closed_group(   t   pi(   t   expt   log(   t   It   AskIntegerHandlerc           B  sÎ   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e Z e e	 j
 ƒ g d \ Z Z e e	 j ƒ g d \ Z Z Z Z Z Z Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z e Z Z RS(
   sc   
    Handler for Q.integer
    Test that an expression belongs to the field of integer numbers
    c         C  s   |  j  S(   N(   t
   is_integer(   t   exprt   assumptions(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   Expr   s    c         C  sO   y6 t  |  j ƒ  ƒ } |  | j d ƒ s1 t ‚ n  t SWn t k
 rJ t SXd  S(   Ni    (   t   intt   roundt   equalst	   TypeErrort   Truet   False(   R   R   t   i(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   _number   s    	c         C  s,   |  j  r t j |  | ƒ St |  | t j ƒ S(   s   
        Integer + Integer       -> Integer
        Integer + !Integer      -> !Integer
        !Integer + !Integer -> ?
        (   t	   is_numberR
   R   R   R   t   integer(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   Add"   s    	c         C  sÏ   |  j  r t j |  | ƒ St } x© |  j D]š } t t j | ƒ | ƒ s) | j rŽ | j	 d k ry t t j
 d |  ƒ | ƒ S| j	 d @rÀ d SqÃ t t j | ƒ | ƒ r¼ | rµ t } qÀ d SqÃ d Sq) q) W| Sd S(   s¥   
        Integer*Integer      -> Integer
        Integer*Irrational   -> !Integer
        Odd/Even             -> !Integer
        Integer*Rational     -> ?
        i   i   N(   R   R
   R   R   t   argsR   R   R   t   is_Rationalt   qt   event   Nonet
   irrationalR   (   R   R   t   _outputt   arg(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   Mul-   s     			i   i   c         C  s   t  S(   N(   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   RationalP   s    c         C  s   t  t j |  j d ƒ | ƒ S(   Ni    (   R   R   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   AbsV   s    c         C  s   t  t j |  j d ƒ | ƒ S(   Ni    (   R   R   t   integer_elementsR   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   MatrixElementZ   s    (   t   __name__t
   __module__t   __doc__t   staticmethodR   R   R   R"   t   PowR   t
   AlwaysTrueR   t   Integert   AlwaysFalset   Pit   Exp1t   GoldenRatiot   TribonacciConstantt   Infinityt   NegativeInfinityt   ImaginaryUnitR#   R$   R&   t   Determinantt   Trace(    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR
      s   +t   AskRationalHandlerc           B  sà   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e Z e d „  ƒ Z e e j	 ƒ Z
 e e j ƒ Z e e j ƒ g d \ Z Z Z Z Z Z Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e g d \ Z Z Z Z Z e e Z Z RS(	   se   
    Handler for Q.rational
    Test that an expression belongs to the field of rational numbers
    c         C  s   |  j  S(   N(   t   is_rational(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   h   s    c         C  s3   |  j  r  |  j ƒ  d r  t Sn  t |  | t j ƒ S(   s‡   
        Rational + Rational     -> Rational
        Rational + !Rational    -> !Rational
        !Rational + !Rational   -> ?
        i   (   R   t   as_real_imagR   R   R   t   rational(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   l   s    	c         C  su   t  t j |  j ƒ | ƒ r4 t  t j |  j ƒ | ƒ St  t j |  j ƒ | ƒ rq t  t j |  j ƒ | ƒ rq t Sn  d S(   s‹   
        Rational ** Integer      -> Rational
        Irrational ** Rational   -> Irrational
        Rational ** Irrational   -> ?
        N(   R   R   R   R   R;   t   baset   primeR   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR+   z   s
    i   c         C  s@   |  j  d } t t j | ƒ | ƒ r< t t j | ƒ | ƒ Sd  S(   Ni    (   R   R   R   R;   t   nonzero(   R   R   t   x(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR      s    c         C  s-   |  j  d } t t j | ƒ | ƒ r) t Sd  S(   Ni    (   R   R   R   R;   R   (   R   R   R?   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   cot•   s    c         C  sD   |  j  d } t t j | ƒ | ƒ r@ t t j | d ƒ | ƒ Sd  S(   Ni    i   (   R   R   R   R;   R>   (   R   R   R?   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ›   s    i   (   R'   R(   R)   R*   R   R   R"   R+   R   R,   R#   t
   AlwaysNonet   FloatR.   R5   R3   R4   R/   R0   R1   R2   R   R@   R   t   sint   cost   tant   asint   atant   acost   acot(    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR8   a   s   +t   AskIrrationalHandlerc           B  s&   e  Z e d  „  ƒ Z e d „  ƒ Z RS(   c         C  s   |  j  S(   N(   t   is_irrational(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ¨   s    c         C  sS   t  t j |  ƒ | ƒ } | rK t  t j |  ƒ | ƒ } | d  k rF d  S| S| Sd  S(   N(   R   R   t   realR;   R   (   R   R   t   _realt	   _rational(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   Basic¬   s    (   R'   R(   R*   R   RO   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRJ   ¥   s   t   AskRealHandlerc        	   B  sõ   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e e	 j
 ƒ g d \	 Z Z Z Z Z Z Z Z Z e e	 j ƒ g d \ Z Z Z e d „  ƒ Z e Z e d	 „  ƒ Z e d
 „  ƒ Z e d „  ƒ Z e Z Z RS(   s]   
    Handler for Q.real
    Test that an expression belongs to the field of real numbers
    c         C  s   |  j  S(   N(   t   is_real(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ¾   s    c         C  s1   |  j  ƒ  d j d ƒ } | j d k r- | Sd  S(   Ni   i   (   R:   t   evalft   _prec(   R   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   Â   s    c         C  s,   |  j  r t j |  | ƒ St |  | t j ƒ S(   s\   
        Real + Real              -> Real
        Real + (Complex & !Real) -> !Real
        (   R   RP   R   R   R   RL   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   Ì   s    	c         C  s|   |  j  r t j |  | ƒ St } xV |  j D]G } t t j | ƒ | ƒ rJ q) t t j | ƒ | ƒ ro | t A} q) Pq) W| Sd S(   s‚   
        Real*Real               -> Real
        Real*Imaginary          -> !Real
        Imaginary*Imaginary     -> Real
        N(	   R   RP   R   R   R   R   R   RL   t	   imaginary(   R   R   t   resultR!   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR"   Ö   s    	c         C  s`  |  j  r t j |  | ƒ S|  j j t k rÈ t t j |  j j	 d ƒ | ƒ ro t t j |  j ƒ | ƒ ro t
 Sn  |  j j	 d t t } t t j d | ƒ | ƒ rÄ t t j d | |  j ƒ | ƒ Sd St t j |  j ƒ | ƒ r1t t j |  j ƒ | ƒ r1t t j |  j ƒ | ƒ } | d k	 r*| Sd Sn  t t j |  j ƒ | ƒ r€t t j t |  j ƒ ƒ | ƒ } | d k	 r€| Sn  t t j |  j ƒ | ƒ r\t t j |  j ƒ | ƒ r\|  j j rùt t j |  j j ƒ | ƒ rùt t j |  j ƒ | ƒ St t j |  j ƒ | ƒ rt
 St t j |  j ƒ | ƒ r7t
 St t j |  j ƒ | ƒ rYt Sq\n  d S(   s]  
        Real**Integer              -> Real
        Positive**Real             -> Real
        Real**(Integer/Even)       -> Real if base is nonnegative
        Real**(Integer/Odd)        -> Real
        Imaginary**(Integer/Even)  -> Real
        Imaginary**(Integer/Odd)   -> not Real
        Imaginary**Real            -> ? since Real could be 0 (giving real) or 1 (giving imaginary)
        b**Imaginary               -> Real if log(b) is imaginary and b != 0 and exponent != integer multiple of I*pi/log(b)
        Real**Real                 -> ? e.g. sqrt(-1) is imaginary and sqrt(2) is not
        i    i   iÿÿÿÿN(   R   RP   R   R<   t   funcR   R   R   RT   R   R   R	   R   R   RL   t   oddR   R   R   R   R   t   positivet   negativeR   (   R   R   R   RW   t   imlog(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR+   ê   s>    	"!!i	   i   c         C  s'   t  t j |  j d ƒ | ƒ r# t Sd  S(   Ni    (   R   R   RL   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRC   '  s    c         C  s9   t  t j |  j d t t ƒ t j |  j d ƒ B| ƒ S(   Ni    (   R   R   R   R   R	   R   RL   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   .  s    c         C  s   t  t j |  j d ƒ | ƒ S(   Ni    (   R   R   RX   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   2  s    c         C  s   t  t j |  j d ƒ | ƒ S(   Ni    (   R   R   t   real_elementsR   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR&   6  s    (   R'   R(   R)   R*   R   R   R   R"   R+   R   R,   R#   RB   R/   R0   R1   R2   R$   t   ret   imR.   R5   R3   R4   RC   RD   R   R   R&   R6   R7   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRP   ¸   s   

81t   AskExtendedRealHandlerc           B  sL   e  Z d  Z e d „  ƒ Z e g d \ Z Z e e j ƒ g d \ Z	 Z
 RS(   s¥   
    Handler for Q.extended_real
    Test that an expression belongs to the field of extended real numbers,
    that is real numbers union {Infinity, -Infinity}
    c         C  s   t  |  | t j ƒ S(   N(   R   R   t   extended_real(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   D  s    i   (   R'   R(   R)   R*   R   R"   R+   R   R,   R3   R4   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR^   =  s   t   AskHermitianHandlerc           B  s]   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e g d \ Z Z	 RS(   si   
    Handler for Q.hermitian
    Test that an expression belongs to the field of Hermitian operators
    c         C  s,   |  j  r t j |  | ƒ St |  | t j ƒ S(   sb   
        Hermitian + Hermitian  -> Hermitian
        Hermitian + !Hermitian -> !Hermitian
        (   R   RP   R   R   R   t	   hermitian(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   S  s    	c         C  s¸   |  j  r t j |  | ƒ Sd } t } xŒ |  j D]} } t t j | ƒ | ƒ rZ | t A} n t t j | ƒ | ƒ sv Pn  t t j	 | ƒ | ƒ r/ | d 7} | d k r¬ Pq¬ q/ q/ W| Sd S(   sß   
        As long as there is at most only one noncommutative term:
        Hermitian*Hermitian         -> Hermitian
        Hermitian*Antihermitian     -> !Hermitian
        Antihermitian*Antihermitian -> Hermitian
        i    i   N(
   R   RP   R   R   R   R   R   t   antihermitianRa   t   commutative(   R   R   t   nccountRU   R!   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR"   ]  s    	
c         C  sZ   |  j  r t j |  | ƒ St t j |  j ƒ | ƒ rV t t j |  j ƒ | ƒ rV t	 Sn  d S(   s1   
        Hermitian**Integer -> Hermitian
        N(
   R   RP   R   R   R   Ra   R<   R   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR+   u  s
    	c         C  s'   t  t j |  j d ƒ | ƒ r# t Sd  S(   Ni    (   R   R   Ra   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRC   €  s    i   (
   R'   R(   R)   R*   R   R"   R+   RC   RD   R   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR`   M  s   
t   AskComplexHandlerc        
   B  s¨   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e g d \ Z Z e e j	 ƒ g d \
 Z
 Z Z Z Z Z Z Z Z Z e e j ƒ g d \ Z Z e d „  ƒ Z e Z Z RS(   sc   
    Handler for Q.complex
    Test that an expression belongs to the field of complex numbers
    c         C  s   |  j  S(   N(   t
   is_complex(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   Ž  s    c         C  s   t  |  | t j ƒ S(   N(   R   R   t   complex(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ’  s    i   i
   c         C  s   t  t j |  j d ƒ | ƒ S(   Ni    (   R   R   t   complex_elementsR   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR&     s    (   R'   R(   R)   R*   R   R   R"   R+   R   R,   t   NumberRC   RD   R   R   R\   R]   t   NumberSymbolR$   R5   R.   R3   R4   R&   R6   R7   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRe   ˆ  s   4t   AskImaginaryHandlerc           B  s›   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e Z e e j ƒ Z RS(	   sž   
    Handler for Q.imaginary
    Test that an expression belongs to the field of imaginary numbers,
    that is, numbers in the form x*I, where x is real
    c         C  s   |  j  S(   N(   t   is_imaginary(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   «  s    c         C  s1   |  j  ƒ  d j d ƒ } | j d k r- | Sd  S(   Ni    i   i   (   R:   RR   RS   (   R   R   t   r(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ¯  s    c         C  s­   |  j  r t j |  | ƒ Sd } x‡ |  j D]G } t t j | ƒ | ƒ rJ q) t t j | ƒ | ƒ ro | d 7} q) Pq) W| d k r„ t S| d k s¥ t	 |  j ƒ | k r© t
 Sd S(   sƒ   
        Imaginary + Imaginary -> Imaginary
        Imaginary + Complex   -> ?
        Imaginary + Real      -> !Imaginary
        i    i   N(   R   Rk   R   R   R   R   RT   RL   R   t   lenR   (   R   R   t   realsR!   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ¹  s    	!c         C  s›   |  j  r t j |  | ƒ St } d } xo |  j D]G } t t j | ƒ | ƒ rZ | t A} q/ t t j	 | ƒ | ƒ s/ Pq/ q/ W| t
 |  j ƒ k r“ t S| Sd S(   sV   
        Real*Imaginary      -> Imaginary
        Imaginary*Imaginary -> Real
        i    N(   R   Rk   R   R   R   R   R   RT   R   RL   Rn   (   R   R   RU   Ro   R!   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR"   Ò  s    	c         C  sU  |  j  r t j |  | ƒ S|  j j t k rÇ t t j |  j j	 d ƒ | ƒ rÇ t t j |  j ƒ | ƒ rl t
 S|  j j	 d t t } t t j d | ƒ | ƒ rÄ t t j d | |  j ƒ | ƒ SqÇ n  t t j |  j ƒ | ƒ r/t t j |  j ƒ | ƒ r/t t j |  j ƒ | ƒ } | d k	 r(| Sd Sn  t t j |  j ƒ | ƒ r~t t j t |  j ƒ ƒ | ƒ } | d k	 r~t
 Sn  t t j |  j ƒ t j |  j ƒ @| ƒ rQt t j |  j ƒ | ƒ rÈt
 St t j |  j ƒ | ƒ } | sí| St t j |  j ƒ | ƒ rt
 St t j d |  j ƒ | ƒ } | rJt t j |  j ƒ | ƒ S| Sn  d S(   s  
        Imaginary**Odd        -> Imaginary
        Imaginary**Even       -> Real
        b**Imaginary          -> !Imaginary if exponent is an integer multiple of I*pi/log(b)
        Imaginary**Real       -> ?
        Positive**Real        -> Real
        Negative**Integer     -> Real
        Negative**(Integer/2) -> Imaginary
        Negative**Real        -> not Imaginary if exponent is not Rational
        i    i   iÿÿÿÿN(   R   Rk   R   R<   RV   R   R   R   RT   R   R   R	   R   R   RW   R   R   RL   RX   R;   RY   (   R   R   R   RW   RZ   t   ratt   half(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR+   æ  s>    	"'!+c         C  s·   t  t j |  j d ƒ | ƒ rF t  t j |  j d ƒ | ƒ rB t Sd  S|  j d j t k r„ |  j d j d t t g k r„ t	 Sn  t  t j
 |  j d ƒ | ƒ } | t k r³ t Sd  S(   Ni    (   R   R   RL   R   RX   R   RV   R   R	   R   RT   (   R   R   R]   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR     s    !c         C  s=   |  j  d t t } t t j d | ƒ t j | ƒ @| ƒ S(   Ni    i   (   R   R	   R   R   R   R   (   R   R   t   a(    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   *  s    c         C  s   |  j  ƒ  d d k S(   Ni   i    (   R:   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRi   /  s    (   R'   R(   R)   R*   R   R   R   R"   R+   R   R   Ri   Rj   R   R,   R5   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRk   ¤  s   
3t   AskAntiHermitianHandlerc           B  s;   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   s°   
    Handler for Q.antihermitian
    Test that an expression belongs to the field of anti-Hermitian operators,
    that is, operators in the form x*I, where x is Hermitian
    c         C  s,   |  j  r t j |  | ƒ St |  | t j ƒ S(   sz   
        Antihermitian + Antihermitian  -> Antihermitian
        Antihermitian + !Antihermitian -> !Antihermitian
        (   R   Rk   R   R   R   Rb   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   ?  s    	c         C  s¸   |  j  r t j |  | ƒ Sd } t } xŒ |  j D]} } t t j | ƒ | ƒ rZ | t A} n t t j	 | ƒ | ƒ sv Pn  t t j
 | ƒ | ƒ r/ | d 7} | d k r¬ Pq¬ q/ q/ W| Sd S(   sì   
        As long as there is at most only one noncommutative term:
        Hermitian*Hermitian         -> !Antihermitian
        Hermitian*Antihermitian     -> Antihermitian
        Antihermitian*Antihermitian -> !Antihermitian
        i    i   N(   R   Rk   R   R   R   R   R   Rb   R   Ra   Rc   (   R   R   Rd   RU   R!   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR"   I  s    	
c         C  s¶   |  j  r t j |  | ƒ St t j |  j ƒ | ƒ rV t t j |  j ƒ | ƒ r² t	 Sn\ t t j
 |  j ƒ | ƒ r² t t j |  j ƒ | ƒ r t	 St t j |  j ƒ | ƒ r² t Sn  d S(   s’   
        Hermitian**Integer  -> !Antihermitian
        Antihermitian**Even -> !Antihermitian
        Antihermitian**Odd  -> Antihermitian
        N(   R   Rk   R   R   R   Ra   R<   R   R   R   Rb   R   RW   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR+   a  s    	(   R'   R(   R)   R*   R   R"   R+   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRs   8  s   
t   AskAlgebraicHandlerc           B  sê   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e e j	 ƒ g d \ Z
 Z Z Z Z e e j ƒ g d \ Z Z Z Z Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e g d \ Z Z Z Z Z e e Z Z RS(	   s   Handler for Q.algebraic key. c         C  s   t  |  | t j ƒ S(   N(   R   R   t	   algebraic(   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   w  s    c         C  s   t  |  | t j ƒ S(   N(   R   R   Ru   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR"   {  s    c         C  s%   |  j  j o$ t t j |  j ƒ | ƒ S(   N(   R   R   R   R   Ru   R<   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR+     s    c         C  s   |  j  d k S(   Ni    (   R   (   R   R   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR#   „  s    i   c         C  s@   |  j  d } t t j | ƒ | ƒ r< t t j | ƒ | ƒ Sd  S(   Ni    (   R   R   R   Ru   R>   (   R   R   R?   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   Ž  s    c         C  s-   |  j  d } t t j | ƒ | ƒ r) t Sd  S(   Ni    (   R   R   R   Ru   R   (   R   R   R?   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR@   ”  s    c         C  sD   |  j  d } t t j | ƒ | ƒ r@ t t j | d ƒ | ƒ Sd  S(   Ni    i   (   R   R   R   Ru   R>   (   R   R   R?   (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyR   š  s    (   R'   R(   R)   R*   R   R"   R+   R#   R   R,   RB   R1   R2   R5   t   AlgebraicNumberR.   R3   R4   t   ComplexInfinityR/   R0   R   R@   R   RC   RD   RE   RF   RG   RH   RI   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyRt   t  s   %%N(   R)   t
   __future__R    R   t   sympy.assumptionsR   R   t   sympy.assumptions.handlersR   R   t   sympy.core.numbersR   t&   sympy.functions.elementary.exponentialR   R   t   sympyR	   R
   R8   RJ   RP   R^   R`   Re   Rk   Rs   Rt   (    (    (    s>   lib/python2.7/site-packages/sympy/assumptions/handlers/sets.pyt   <module>   s    TD…;”<