Ë
    7^(hÊ$  ã                   óÂ  — d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ d dlmZ d„ Zd	„ Zd
„ Z G d„ d«      Z e«       Z e
d«      Zej9                  e«      d„ «       Zej9                  e«      d„ «       Zej=                  e«      d„ «       Zej9                  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j9                  e«      d„ «       Zej>                  d„ ej@                  d„ ejB                  d„ ejD                  d„ ejF                  d„ ejH                  d„ ejJ                  d„ ejL                  d„ ejN                  d „ ejP                  d!„ i
Z)ej9                  ee	e«      d"„ «       Zy#)$é    )Údefaultdict)ÚQ)ÚAddÚMulÚPowÚNumberÚNumberSymbolÚSymbol)ÚImaginaryUnit)ÚAbs)Ú
EquivalentÚAndÚOrÚImplies)ÚMatMulc           	      ól   — t        |j                  D �cg c]  }|j                  | |«      ‘Œ c}Ž S c c}w )aú  
    Apply all arguments of the expression to the fact structure.

    Parameters
    ==========

    symbol : Symbol
        A placeholder symbol.

    fact : Boolean
        Resulting ``Boolean`` expression.

    expr : Expr

    Examples
    ========

    >>> from sympy import Q
    >>> from sympy.assumptions.sathandlers import allargs
    >>> from sympy.abc import x, y
    >>> allargs(x, Q.negative(x) | Q.positive(x), x*y)
    (Q.negative(x) | Q.positive(x)) & (Q.negative(y) | Q.positive(y))

    )r   ÚargsÚsubs©ÚsymbolÚfactÚexprÚargs       ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/assumptions/sathandlers.pyÚallargsr      s,   € ô2 °4·9±9Ö=¨C�—‘˜6 3Õ'Ò=Ð>Ð>ùÒ=ó   ”1c           	      ól   — t        |j                  D �cg c]  }|j                  | |«      ‘Œ c}Ž S c c}w )a÷  
    Apply any argument of the expression to the fact structure.

    Parameters
    ==========

    symbol : Symbol
        A placeholder symbol.

    fact : Boolean
        Resulting ``Boolean`` expression.

    expr : Expr

    Examples
    ========

    >>> from sympy import Q
    >>> from sympy.assumptions.sathandlers import anyarg
    >>> from sympy.abc import x, y
    >>> anyarg(x, Q.negative(x) & Q.positive(x), x*y)
    (Q.negative(x) & Q.positive(x)) | (Q.negative(y) & Q.positive(y))

    )r   r   r   r   s       r   Úanyargr   +   s,   € ô2 °$·)±)Ö<¨3�—	‘	˜& #Õ&Ò<Ð=Ð=ùÒ<r   c                 ó  — |j                   D �cg c]  }|j                  | |«      ‘Œ }}t        t        t	        |«      «      D ��cg c],  }t        ||   g|d| ||dz   d z   D �cg c]  }| ‘Œ c}¢­Ž ‘Œ. c}}Ž }|S c c}w c c}w c c}}w )aÿ  
    Apply exactly one argument of the expression to the fact structure.

    Parameters
    ==========

    symbol : Symbol
        A placeholder symbol.

    fact : Boolean
        Resulting ``Boolean`` expression.

    expr : Expr

    Examples
    ========

    >>> from sympy import Q
    >>> from sympy.assumptions.sathandlers import exactlyonearg
    >>> from sympy.abc import x, y
    >>> exactlyonearg(x, Q.positive(x), x*y)
    (Q.positive(x) & ~Q.positive(y)) | (Q.positive(y) & ~Q.positive(x))

    Né   )r   r   r   ÚrangeÚlenr   )r   r   r   r   Ú	pred_argsÚiÚlitÚress           r   Úexactlyoneargr'   G   sž   € ð2 48·9±9Ö=¨C�—‘˜6 3Õ'Ð=€IÐ=Ü
Ü#(¬¨Y«Ó#8÷:Øô �9˜Q‘<ð °9¸R¸a°=Ø�!�A‘#�$ˆñ4ö #¨C C¢4ò #ô ó :ð ;€Cà€Jùò >ùò#ùó :s   �A>ÁB
Á%
BÁ/B
ÂB
c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚClassFactRegistrya¦  
    Register handlers against classes.

    Explanation
    ===========

    ``register`` method registers the handler function for a class. Here,
    handler function should return a single fact. ``multiregister`` method
    registers the handler function for multiple classes. Here, handler function
    should return a container of multiple facts.

    ``registry(expr)`` returns a set of facts for *expr*.

    Examples
    ========

    Here, we register the facts for ``Abs``.

    >>> from sympy import Abs, Equivalent, Q
    >>> from sympy.assumptions.sathandlers import ClassFactRegistry
    >>> reg = ClassFactRegistry()
    >>> @reg.register(Abs)
    ... def f1(expr):
    ...     return Q.nonnegative(expr)
    >>> @reg.register(Abs)
    ... def f2(expr):
    ...     arg = expr.args[0]
    ...     return Equivalent(~Q.zero(arg), ~Q.zero(expr))

    Calling the registry with expression returns the defined facts for the
    expression.

    >>> from sympy.abc import x
    >>> reg(Abs(x))
    {Q.nonnegative(Abs(x)), Equivalent(~Q.zero(x), ~Q.zero(Abs(x)))}

    Multiple facts can be registered at once by ``multiregister`` method.

    >>> reg2 = ClassFactRegistry()
    >>> @reg2.multiregister(Abs)
    ... def _(expr):
    ...     arg = expr.args[0]
    ...     return [Q.even(arg) >> Q.even(expr), Q.odd(arg) >> Q.odd(expr)]
    >>> reg2(Abs(x))
    {Implies(Q.even(x), Q.even(Abs(x))), Implies(Q.odd(x), Q.odd(Abs(x)))}

    c                 óT   — t        t        «      | _        t        t        «      | _        y ©N)r   Ú	frozensetÚsinglefactsÚ
multifacts)Úselfs    r   Ú__init__zClassFactRegistry.__init__˜   s   € Ü&¤yÓ1ˆÔÜ%¤iÓ0ˆ�ó    c                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                 ó8   •— ‰j                   ‰xx   | hz  cc<   | S r+   )r-   )ÚfuncÚclsr/   s    €€r   Ú_z%ClassFactRegistry.register.<locals>._�   s    ø€ Ø×Ñ˜SÓ! d VÑ+Ó!ØˆKr1   © )r/   r5   r6   s   `` r   ÚregisterzClassFactRegistry.registerœ   s   ù€ õ	ð ˆr1   c                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                 óF   •— ‰D ]  }‰j                   |xx   | hz  cc<   Œ | S r+   )r.   )r4   r5   Úclassesr/   s     €€r   r6   z*ClassFactRegistry.multiregister.<locals>._£   s-   ø€ Øò /�Ø—‘ Ó$¨¨Ñ.Ô$ð/àˆKr1   r7   )r/   r;   r6   s   `` r   ÚmultiregisterzClassFactRegistry.multiregister¢   s   ù€ õ	ð ˆr1   c                 ó  — | j                   |   }| j                   D ]!  }t        ||«      sŒ|| j                   |   z  }Œ# | j                  |   }| j                  D ]!  }t        ||«      sŒ|| j                  |   z  }Œ# ||fS r+   )r-   Ú
issubclassr.   )r/   ÚkeyÚret1ÚkÚret2s        r   Ú__getitem__zClassFactRegistry.__getitem__©   s’   € Ø×Ñ Ñ$ˆØ×!Ñ!ò 	,ˆAÜ˜#˜qÕ!Ø˜×(Ñ(¨Ñ+Ñ+‘ð	,ð �‰˜sÑ#ˆØ—‘ò 	+ˆAÜ˜#˜qÕ!Ø˜Ÿ™¨Ñ*Ñ*‘ð	+ð �TˆzÐr1   c                 ó®   ‡— t        «       }| t        ‰«         \  }}|j                  ˆfd„|D «       «       |D ]  }|j                   |‰«      «       Œ |S )Nc              3   ó.   •K  — | ]  } |‰«      –— Œ y ­wr+   r7   )Ú.0Úhr   s     €r   ú	<genexpr>z-ClassFactRegistry.__call__.<locals>.<genexpr>»   s   øè ø€ Ò.˜q‘1�T—7Ñ.ùs   ƒ)ÚsetÚtypeÚupdate)r/   r   ÚretÚ	handlers1Ú	handlers2rG   s    `    r   Ú__call__zClassFactRegistry.__call__¶   sS   ø€ Ü‹eˆà#¤D¨£JÑ/Ñˆ	�9à�
‰
Ó. IÔ.Ô.Øò 	 ˆAØ�J‰J‘q˜“wÕð	 àˆ
r1   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r8   r<   rC   rO   r7   r1   r   r)   r)   h   s!   „ ñ.ò^1òòòór1   r)   Úxc                 ó®  — | j                   d   }t        j                  | «      t        t        j                  |«       t        j                  | «       «      t        j
                  |«      t        j
                  | «      z	  t        j                  |«      t        j                  | «      z	  t        j                  |«      t        j                  | «      z	  gS )Nr   )r   r   Únonnegativer   ÚzeroÚevenÚoddÚinteger)r   r   s     r   r6   r6   Ê   s‹   € à
�)‰)�A‰,€CÜ�M‰M˜$ÓÜœŸ™˜s›�|¤a§f¡f¨T£l ]Ó3Ü�F‰F�3‹Kœ1Ÿ6™6 $›<Ñ'Ü�E‰E�#‹Jœ!Ÿ%™% ›+Ñ%Ü�I‰I�c‹NœaŸi™i¨›oÑ-ð	ð r1   c                 óæ  — t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j
                  t        «      | «      t        j
                  | «      z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «       | «      t        j                  | «       z	  gS r+   )	r   rT   r   ÚpositiveÚnegativeÚrealÚrationalrZ   r'   ©r   s    r   r6   r6   ×   sÚ   € ä”A”q—z‘z¤!“} dÓ+¬q¯z©z¸$Ó/?Ñ?Ü”A”q—z‘z¤!“} dÓ+¬q¯z©z¸$Ó/?Ñ?Ü”A”q—v‘vœa“y $Ó'¬1¯6©6°$«<Ñ7Ü”A”q—z‘z¤!“} dÓ+¬q¯z©z¸$Ó/?Ñ?Ü”A”q—y‘y¤“| TÓ*¬a¯i©i¸«oÑ=Üœ!œaŸi™i¬›l˜]¨DÓ1´a·i±iÀ³oÐ5EÑEðð r1   c           	      óô   — t        t        t        j                  t        «      | «      }t	        t        t        j
                  t        «      | «      }t        |t        |t        j
                  | «      «      «      S r+   ©r   rT   r   r^   r'   Ú
irrationalr   ©r   Úallargs_realÚonearg_irrationals      r   r6   r6   á   óM   € äœ1œaŸf™f¤Q›i¨Ó.€LÜ%¤a¬¯©´a«¸$Ó?ÐÜ�<¤Ð):¼A¿L¹LÈÓ<NÓ!OÓPÐPr1   c                 ón  — t        t        j                  | «      t        t        t        j                  t        «      | «      «      t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  t        t        t        j                  t        «       | «      t        j                  | «       z	  t        t        t        j                  t        «      | «      t        j                  | «      z	  gS r+   )r   r   rW   r   rT   r   r\   r^   r_   rZ   r'   Úcommutativer`   s    r   r6   r6   ê   sþ   € ä”q—v‘v˜d“|¤V¬A¬q¯v©v´a«y¸$Ó%?Ó@Ü”A”q—z‘z¤!“} dÓ+¬q¯z©z¸$Ó/?Ñ?Ü”A”q—v‘vœa“y $Ó'¬1¯6©6°$«<Ñ7Ü”A”q—z‘z¤!“} dÓ+¬q¯z©z¸$Ó/?Ñ?Ü”A”q—y‘y¤“| TÓ*¬a¯i©i¸«oÑ=Üœ!œaŸj™j¬›m˜^¨TÓ2´q·y±yÀ³Ð6FÑFÜ”A”q—}‘}¤QÓ'¨Ó.´!·-±-ÀÓ2EÑEðð r1   c                 ó’   — t        t        t        j                  t        «      | «      }t	        |t        j                  | «       «      S r+   )r   rT   r   Úprimer   )r   Úallargs_primes     r   r6   r6   õ   s1   € ô œAœqŸw™w¤q›z¨4Ó0€MÜ�=¤1§7¡7¨4£= .Ó1Ð1r1   c           	      ó(  — t        t        t        j                  t        «      t        j                  t        «      z  | «      }t        t        t        j                  t        «      | «      }t        |t        |t        j                  | «      «      «      S r+   )r   rT   r   Ú	imaginaryr^   r'   r   )r   Úallargs_imag_or_realÚonearg_imaginarys      r   r6   r6   þ   s^   € ô #¤1¤a§k¡k´!£n´q·v±v¼a³yÑ&@À$ÓGÐÜ$¤Q¬¯©´A«¸Ó=ÐÜÐ'¬Ð1AÄ1Ç;Á;ÈtÓCTÓ)UÓVÐVr1   c           	      óô   — t        t        t        j                  t        «      | «      }t	        t        t        j
                  t        «      | «      }t        |t        |t        j
                  | «      «      «      S r+   rb   rd   s      r   r6   r6     rg   r1   c           	      óô   — t        t        t        j                  t        «      | «      }t	        t        t        j
                  t        «      | «      }t        |t        |t        j
                  | «      «      «      S r+   )r   rT   r   rZ   r   rX   r   r   )r   Úallargs_integerÚanyarg_evens      r   r6   r6     sL   € ô
 œa¤§¡¬1£¨tÓ4€OÜœœAŸF™F¤1›I tÓ,€KÜ�?¤J¨{¼A¿F¹FÀ4»LÓ$IÓJÐJr1   c                 óô   — t        t        t        j                  t        «      | «      }t        t        t        j                  t        «      | «      }t        |t        t        j                  | «      |«      «      S r+   )r   rT   r   ÚsquareÚ
invertibler   r   )r   Úallargs_squareÚallargs_invertibles      r   r6   r6     sM   € äœQ¤§¡¬£¨TÓ2€NÜ ¤¤A§L¡L´£O°TÓ:ÐÜ�>¤:¬a¯l©l¸4Ó.@ÐBTÓ#UÓVÐVr1   c           
      óÈ  — | j                   | j                  }}t        j                  |«      t        j                  |«      z  t        j
                  |«      z  t        j
                  | «      z	  t        j
                  |«      t        j                  |«      z  t        j
                  |«      z  t        j
                  | «      z	  t        j                  |«      t        j                  |«      z  t        j
                  |«      z  t        j                  | «      z	  t        t        j                  | «      t        j                  |«      t        j                  |«      z  «      gS r+   )ÚbaseÚexpr   r^   rX   rV   rY   Únonpositiver   rW   r\   )r   r{   r|   s      r   r6   r6      sä   € à—	‘	˜4Ÿ8™8ˆ#€Dä	
�‰�‹œŸ™˜s›Ñ	#¤a§m¡m°CÓ&8Ñ	8¼Q¿]¹]È4Ó=PÑPÜ	
�‰�tÓ	œqŸu™u S›zÑ	)¬A¯M©M¸#Ó,>Ñ	>Ä1Ç=Á=ÐQUÓCVÑVÜ	
�‰�tÓ	œqŸu™u S›zÑ	)¬A¯M©M¸#Ó,>Ñ	>Ä1Ç=Á=ÐQUÓCVÑVÜ”1—6‘6˜$“<¤§¡¨£´·
±
¸3³Ñ!?Ó@ð	ð r1   c                 ó   — | j                   S r+   )Úis_positive©Úos    r   ú<lambda>r‚   .  ó
   € ˜!Ÿ-™-€ r1   c                 ó   — | j                   S r+   )Úis_zeror€   s    r   r‚   r‚   /  ó
   € �a—i‘i€ r1   c                 ó   — | j                   S r+   )Úis_negativer€   s    r   r‚   r‚   0  rƒ   r1   c                 ó   — | j                   S r+   )Úis_rationalr€   s    r   r‚   r‚   1  rƒ   r1   c                 ó   — | j                   S r+   )Úis_irrationalr€   s    r   r‚   r‚   2  s
   € ˜AŸO™O€ r1   c                 ó   — | j                   S r+   )Úis_evenr€   s    r   r‚   r‚   3  r†   r1   c                 ó   — | j                   S r+   )Úis_oddr€   s    r   r‚   r‚   4  s
   € �Q—X‘X€ r1   c                 ó   — | j                   S r+   )Úis_imaginaryr€   s    r   r‚   r‚   5  ó
   € ˜1Ÿ>™>€ r1   c                 ó   — | j                   S r+   )Úis_primer€   s    r   r‚   r‚   6  s
   € �q—z‘z€ r1   c                 ó   — | j                   S r+   )Úis_compositer€   s    r   r‚   r‚   7  r“   r1   c                 óž   — g }t         j                  «       D ]3  \  }} || «      } || «      }|€Œ|j                  t        ||«      «       Œ5 |S r+   )Ú_old_assump_gettersÚitemsÚappendr   )r   rL   ÚpÚgetterÚpredÚprops         r   r6   r6   :  sU   € à
€CÜ(×.Ñ.Ó0ò /‰	ˆˆ6Ù�‹wˆÙ�d‹|ˆØÑØ�J‰J”z $¨Ó-Õ.ð	/ð
 €Jr1   N)*Úcollectionsr   Úsympy.assumptions.askr   Ú
sympy.corer   r   r   r   r	   r
   Úsympy.core.numbersr   Ú$sympy.functions.elementary.complexesr   Úsympy.logic.boolalgr   r   r   r   Úsympy.matrices.expressionsr   r   r   r'   r)   Úclass_fact_registryrT   r<   r6   r8   r\   rW   r]   r_   rc   rX   rY   rn   rk   Ú	compositer™   r7   r1   r   ú<module>r©      s%  ðÝ #å #ß D× DÝ ,Ý 4ß >Ó >Ý -ò?ò8>ò8÷BVñ Vñp (Ó)Ð ñ ˆ3ƒK€ð ×"Ñ" 3Ó'ñó (ðð ×"Ñ" 3Ó'ñó (ðð ×Ñ˜cÓ"ñQó #ðQð ×"Ñ" 3Ó'ñó (ðð ×Ñ˜cÓ"ñ2ó #ð2ð ×Ñ˜cÓ"ñWó #ðWð ×Ñ˜cÓ"ñQó #ðQð
 ×Ñ˜cÓ"ñKó #ðKð ×Ñ˜fÓ%ñWó &ðWð ×"Ñ" 3Ó'ñó (ðð ‡J�JÑ'Ø‡F�FÑØ‡J�JÑ'Ø‡J�JÑ'Ø‡L�LÑ+Ø‡F�FÑØ‡E�EÑØ‡K�KÑ)Ø‡G�GÑ!Ø‡K�KÑ)ðÐ ð ×"Ñ" 6¨<¸ÓGñó Hñr1   