U
    ZÊ¹jà  ã                   @   sœ  d Z ddlmZ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mZmZmZmZmZmZmZ ddlmZ dd	lmZmZ G d
d„ dƒZG dd„ deƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZe e¡dd„ ƒZdd„ Z dS )zj
This module defines base class for handlers and some core handlers:
``Q.commutative`` and ``Q.is_true``.
é    )ÚQÚaskÚAppliedPredicate)ÚBasicÚSymbol)Ú_fuzzy_group)ÚNaNÚNumber)ÚAndÚBooleanTrueÚBooleanFalseÚ	conjunctsÚ
EquivalentÚImpliesÚNotÚOr)Úsympy_deprecation_warningé   )ÚCommutativePredicateÚIsTruePredicatec                       s    e Zd ZdZ‡ fdd„Z‡  ZS )Ú
AskHandlerz.Base class that all Ask Handlers must inherit.c                    s"   t dddd� tƒ j| f|ž|ŽS )Nz¡
            The AskHandler system is deprecated. The AskHandler class should
            be replaced with the multipledispatch handler of Predicate
            z1.8zdeprecated-askhandler)Zdeprecated_since_versionZactive_deprecations_target)r   ÚsuperÚ__new__)ÚclsÚargsÚkwargs©Ú	__class__© ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/assumptions/handlers/common.pyr      s    úzAskHandler.__new__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__r   r   r   r   r      s   r   c                   @   s8   e Zd ZdZedd„ ƒZedd„ ƒZedd„ ƒZeZdS )	ÚCommonHandlerz5Defines some useful methods common to most Handlers. c                 C   s   dS ©NTr   ©ÚexprÚassumptionsr   r   r   Ú
AlwaysTrue#   s    zCommonHandler.AlwaysTruec                 C   s   dS ©NFr   r'   r   r   r   ÚAlwaysFalse'   s    zCommonHandler.AlwaysFalsec                 C   s   d S ©Nr   r'   r   r   r   Ú
AlwaysNone+   s    zCommonHandler.AlwaysNoneN)	r    r!   r"   r#   Ústaticmethodr*   r,   r.   r   r   r   r   r   r%      s   


r%   c                 C   sR   t |ƒ}| jdk	r(| jo&t | ¡ |kS t | ¡|kr:dS t | ¡ |krNdS dS )z>Objects are expected to be commutative unless otherwise statedNTF)r   Zis_commutativer   Úcommutative)r(   r)   Zassumpsr   r   r   Ú_4   s    
r1   c                 C   s&   | j D ]}tt |¡|ƒs dS qdS )NFT)r   r   r   r0   )r(   r)   Úargr   r   r   r1   @   s    
c                 C   s   dS r&   r   r'   r   r   r   r1   G   s    c                 C   s   dS r&   r   r'   r   r   r   r1   K   s    c                 C   s   | S r-   r   r'   r   r   r   r1   R   s    c                 C   s   dS r&   r   r'   r   r   r   r1   V   s    c                 C   s   dS r+   r   r'   r   r   r   r1   Z   s    c                 C   s
   t | |ƒS r-   ©r   r'   r   r   r   r1   ^   s    c                 C   s6   | j d }|jrd S t||d�}|dkr.| S d S d S )Nr   ©r)   )TF)r   Z	is_Symbolr   )r(   r)   r2   Úvaluer   r   r   r1   b   s    
c                 C   s:   d}| j D ]*}t||d�}|dkr( dS |d kr
d }q
|S )NFr4   T©r   r   ©r(   r)   Úresultr2   Úpr   r   r   r1   n   s    
c                 C   s:   d}| j D ]*}t||d�}|dkr( dS |d kr
d }q
|S )NTr4   Fr6   r7   r   r   r   r1   y   s    
c                 C   s   | j \}}t| |B |d�S ©Nr4   r6   )r(   r)   r9   Úqr   r   r   r1   „   s    
c                 C   sB   | j \}}t||d�}|d kr"d S t||d�}|d kr:d S ||kS r:   r6   )r(   r)   r9   r;   ÚptZqtr   r   r   r1   ‰   s    
c                    s   t ‡ ‡fdd„| jD ƒdd�S )zS
    Test for membership in a group with respect
    to the current operation.
    c                 3   s   | ]}t ˆ|ƒˆ ƒV  qd S r-   r3   )Ú.0Úa©r)   Úkeyr   r   Ú	<genexpr>œ   s     z$test_closed_group.<locals>.<genexpr>T)Z
quick_exit)r   r   )r(   r)   r@   r   r?   r   Útest_closed_group–   s     ÿrB   N)!r#   Zsympy.assumptionsr   r   r   Z
sympy.corer   r   Zsympy.core.logicr   Zsympy.core.numbersr   r	   Zsympy.logic.boolalgr
   r   r   r   r   r   r   r   Zsympy.utilities.exceptionsr   Zpredicates.commonr   r   r   r%   Úregisterr1   ÚboolrB   r   r   r   r   Ú<module>   sH   (














