
    Ed                     T   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          Z G d de          Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z ej        e          d             Z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                   "     e Zd ZdZ fdZ xZS )
AskHandlerz.Base class that all Ask Handlers must inherit.c                 b    t          ddd            t                      j        | g|R i |S )Nz
            The AskHandler system is deprecated. The AskHandler class should
            be replaced with the multipledispatch handler of Predicate
            z1.8zdeprecated-askhandler)deprecated_since_versionactive_deprecations_target)r   super__new__)clsargskwargs	__class__s      Alib/python3.11/site-packages/sympy/assumptions/handlers/common.pyr   zAskHandler.__new__   sO    ! &+'>	
 	
 	
 	
 uwws4T444V444    )__name__
__module____qualname____doc__r   __classcell__)r!   s   @r"   r   r      s>        88	5 	5 	5 	5 	5 	5 	5 	5 	5r#   r   c                   X    e Zd ZdZed             Zed             Zed             ZeZdS )CommonHandlerz5Defines some useful methods common to most Handlers. c                     dS NT exprassumptionss     r"   
AlwaysTruezCommonHandler.AlwaysTrue#       tr#   c                     dS NFr-   r.   s     r"   AlwaysFalsezCommonHandler.AlwaysFalse'   s    ur#   c                     d S Nr-   r.   s     r"   
AlwaysNonezCommonHandler.AlwaysNone+   r2   r#   N)	r$   r%   r&   r'   staticmethodr1   r5   r8   r	   r-   r#   r"   r*   r*      sj        ??  \   \   \ CCCr#   r*   c                     t          |          }| j        | j        ot          j        |            |vS t          j        |           |v rdS t          j        |            |v rdS dS )z>Objects are expected to be commutative unless otherwise statedNTF)r   is_commutativer   commutative)r/   r0   assumpss      r"   _r>   4   s}     $$G K"JAM$,?,?+?7+JJ}Tg% t
-

		( u4r#   c                 d    | j         D ]'}t          t          j        |          |          s dS (dS )NFT)r   r   r   r<   )r/   r0   args      r"   r>   r>   @   s@    y  1=%%{33 	55	4r#   c                     dS r,   r-   r.   s     r"   r>   r>   G       4r#   c                     dS r,   r-   r.   s     r"   r>   r>   K   rB   r#   c                     | S r7   r-   r.   s     r"   r>   r>   R   s    Kr#   c                     dS r,   r-   r.   s     r"   r>   r>   V   rB   r#   c                     dS r4   r-   r.   s     r"   r>   r>   Z   s    5r#   c                 "    t          | |          S r7   r   r.   s     r"   r>   r>   ^   s    t[!!!r#   c                 b    | j         d         }|j        rd S t          ||          }|dv r| S d S )Nr   r0   )TF)r   	is_Symbolr   )r/   r0   r@   values       r"   r>   r>   b   sH    
)A,C
} t---E ytr#   c                 V    d}| j         D ]}t          ||          }|du r dS |d }|S )NFrJ   Tr   r   r/   r0   resultr@   ps        r"   r>   r>   n   sP    Fy  ---9 	44 	FMr#   c                 V    d}| j         D ]}t          ||          }|du r dS |d }|S )NTrJ   FrN   rO   s        r"   r>   r>   y   sP    Fy  ---: 	55 	FMr#   c                 @    | j         \  }}t          | |z  |          S NrJ   rN   )r/   r0   rQ   qs       r"   r>   r>      s&    9DAqrAv;////r#   c                 v    | j         \  }}t          ||          }|d S t          ||          }|d S ||k    S rT   rN   )r/   r0   rQ   rU   ptqts         r"   r>   r>      sT    9DAq	QK	(	(	(B	 t	QK	(	(	(B	 t8Or#   c                 L    t          fd| j        D             d          S )zS
    Test for membership in a group with respect
    to the current operation.
    c              3   J   K   | ]}t           |                    V  d S r7   rH   ).0ar0   keys     r"   	<genexpr>z$test_closed_group.<locals>.<genexpr>   s5      55aSSVV[	!	!555555r#   T)
quick_exit)r   r   )r/   r0   r]   s    ``r"   test_closed_groupr`      s?    
 5555549555$H H H Hr#   N)!r'   sympy.assumptionsr   r   r   
sympy.corer   r   sympy.core.logicr   sympy.core.numbersr	   r
   sympy.logic.boolalgr   r   r   r   r   r   r   r   sympy.utilities.exceptionsr   predicates.commonr   r   r   r*   registerr>   boolr`   r-   r#   r"   <module>rj      s   
 7 6 6 6 6 6 6 6 6 6 $ $ $ $ $ $ $ $ ) ) ) ) ) ) * * * * * * * *" " " " " " " " " " " " " " " " " " " " @ @ @ @ @ @ E E E E E E E E5 5 5 5 5 5 5 5    J   * v&&	 	 '&	 u%%  &% v&&  '& s##  $# $    +&&  '& ,''  (' *++" " ,+" #	 	 	 "   #   '""0 0 #"0 *%%  &%H H H H Hr#   