ó
¡¼™\c           @   s›   d  d l  m Z d  d l m Z d  d l m Z m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d e	 f d	 „  ƒ  YZ
 d
 e f d „  ƒ  YZ d „  Z d S(   iÿÿÿÿ(   t   _fuzzy_group(   t	   conjuncts(   t   Qt   askt
   AskHandlerc           B   s   e  Z d  Z RS(   s-   Base class that all Ask Handlers must inherit(   t   __name__t
   __module__t   __doc__(    (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyR      s   t   CommonHandlerc           B   sA   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e Z RS(   s4   Defines some useful methods common to most Handlers c         C   s   t  S(   N(   t   True(   t   exprt   assumptions(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt
   AlwaysTrue   s    c         C   s   t  S(   N(   t   False(   R
   R   (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   AlwaysFalse   s    c         C   s   d  S(   N(   t   None(   R
   R   (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt
   AlwaysNone   s    (   R   R   R   t   staticmethodR   R   R   t   NaN(    (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyR      s
   t   AskCommutativeHandlerc           B   sH   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e e j ƒ g d \ Z Z	 RS(   s'   
    Handler for key 'commutative'
    c         C   so   t  | ƒ } |  j d k	 r8 |  j o7 t j |  ƒ | k St j |  ƒ | k rQ t St j |  ƒ | k rk t St S(   s>   Objects are expected to be commutative unless otherwise statedN(   R   t   is_commutativeR   R   t   commutativeR	   R   (   R
   R   t   assumps(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   Symbol"   s    c         C   s4   x- |  j  D]" } t t j | ƒ | ƒ s
 t Sq
 Wt S(   N(   t   argsR   R   R   R   R	   (   R
   R   t   arg(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   Basic.   s    i   (
   R   R   R   R   R   R   R   R   t   NumberR   (    (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyR      s   t   TautologicalHandlerc           B   s•   e  Z d  Z e d „  ƒ Z e e j ƒ Z e e j ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   sB   Wrapper allowing to query the truth value of a boolean expression.c         C   s   |  S(   N(    (   R
   R   (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   bool;   s    c         C   s   t  |  | ƒ S(   N(   R   (   R
   R   (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   AppliedPredicateB   s    c         C   s8   t  |  j d d | ƒ} | t t f k r0 | Sd  Sd  S(   Ni    R   (   R   R   R	   R   R   (   R
   R   t   value(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   NotF   s    c         C   sU   t  } xH |  j D]= } t | d | ƒ} | t k r8 t S| d  k r d  } q q W| S(   NR   (   R   R   R   R	   R   (   R
   R   t   resultR   t   p(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   OrN   s    c         C   sU   t  } xH |  j D]= } t | d | ƒ} | t k r8 t S| d  k r d  } q q W| S(   NR   (   R	   R   R   R   R   (   R
   R   R!   R   R"   (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   AndY   s    c         C   s$   |  j  \ } } t | | Bd | ƒS(   NR   (   R   R   (   R
   R   R"   t   q(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   Impliesd   s    c         C   s]   |  j  \ } } t | d | ƒ} | d  k r1 d  St | d | ƒ} | d  k rS d  S| | k S(   NR   (   R   R   R   (   R
   R   R"   R%   t   ptt   qt(    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt
   Equivalenti   s    (   R   R   R   R   R   R   R   t   BooleanTrueR   t   BooleanFalseR   R    R#   R$   R&   R)   (    (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyR   8   s   c            s&   t  ‡  ‡ f d †  |  j Dƒ d t ƒS(   sR   
    Test for membership in a group with respect
    to the current operation
    c         3   s$   |  ] } t  ˆ | ƒ ˆ  ƒ Vq d  S(   N(   R   (   t   .0t   a(   R   t   key(    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pys	   <genexpr>|   s    t
   quick_exit(   R    R   R	   (   R
   R   R.   (    (   R   R.   s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   test_closed_groupv   s    N(   t   sympy.core.logicR    t   sympy.logic.boolalgR   t   sympy.assumptionsR   R   t   objectR   R   R   R   R0   (    (    (    s@   lib/python2.7/site-packages/sympy/assumptions/handlers/common.pyt   <module>   s   >