
    Xh                     h   d Z ddlmZmZmZ ddlmZmZ ddlm	Z	m
Z
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 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	fuzzy_andfuzzy_or)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      s/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/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/   r0   s     r$   AlwaysFalsezCommonHandler.AlwaysFalse'   s    ur%   c                     d S Nr/   r0   s     r$   
AlwaysNonezCommonHandler.AlwaysNone+   r4   r%   N)	r&   r'   r(   r)   staticmethodr3   r7   r:   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)r1   r2   assumpss      r$   _r@   4   sv     $$G&"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>   )r1   r2   args      r$   r@   r@   @   s@    y  1=%%{33 	55	4r%   c                     dS r.   r/   r0   s     r$   r@   r@   G       4r%   c                     dS r.   r/   r0   s     r$   r@   r@   K   rD   r%   c                     | S r9   r/   r0   s     r$   r@   r@   R   s    Kr%   c                     dS r.   r/   r0   s     r$   r@   r@   V   rD   r%   c                     dS r6   r/   r0   s     r$   r@   r@   Z   s    5r%   c                 "    t          | |          S r9   r   r0   s     r$   r@   r@   ^   s    t[!!!r%   c                 b    | j         d         }|j        rd S t          ||          }|dv r| S d S )Nr   r2   )TF)r!   	is_Symbolr   )r1   r2   rB   values       r$   r@   r@   b   sF    
)A,C
} t---Eytr%   c                 V    d}| j         D ]}t          ||          }|du r dS |d }|S )NFrL   Tr!   r   r1   r2   resultrB   ps        r$   r@   r@   n   sJ    Fy  ---99449FMr%   c                 V    d}| j         D ]}t          ||          }|du r dS |d }|S )NTrL   FrP   rQ   s        r$   r@   r@   y   sJ    Fy  ---::559FMr%   c                 @    | j         \  }}t          | |z  |          S NrL   rP   )r1   r2   rS   qs       r$   r@   r@      s&    9DAqrAv;////r%   c                 v    | j         \  }}t          ||          }|d S t          ||          }|d S ||k    S rV   rP   )r1   r2   rS   rW   ptqts         r$   r@   r@      sN    9DAq	QK	(	(	(B	zt	QK	(	(	(B	z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 r9   rJ   ).0ar2   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!   )r1   r2   r_   s    ``r$   test_closed_grouprb      s?    
 5555549555$H H H Hr%   c                 :     t           fd|D                       S )Nc              3   8   K   | ]}t          |          V  d S r9   rJ   r]   queryr2   s     r$   r`   zask_all.<locals>.<genexpr>   -      66UUK	 	 666666r%   )r	   r2   queriess   ` r$   ask_allrj      s,    6666g6668 8 8r%   c                 :     t           fd|D                       S )Nc              3   8   K   | ]}t          |          V  d S r9   rJ   re   s     r$   r`   zask_any.<locals>.<genexpr>   rg   r%   )r
   rh   s   ` r$   ask_anyrm      s,    6666g6668 8 8r%   N)%r)   sympy.assumptionsr   r   r   
sympy.corer   r   sympy.core.logicr   r	   r
   sympy.core.numbersr   r   sympy.logic.boolalgr   r   r   r   r   r   r   r   sympy.utilities.exceptionsr   predicates.commonr   r   r   r,   registerr@   boolrb   rj   rm   r/   r%   r$   <module>rw      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8 8 88 8 8 8 8r%   