+
    i$                        ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	H
t
 ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RIHt R tR	 tR
 t ! R R4      t]! 4       t]
! R4      t]P9                  ]4      R 4       t]P9                  ]4      R 4       t]P=                  ]4      R 4       t]P9                  ]4      R 4       t]P=                  ]4      R 4       t]P=                  ]4      R 4       t]P=                  ]4      R 4       t]P=                  ]4      R 4       t]P=                  ]4      R 4       t]P9                  ]4      R 4       t]P>                  R ]P@                  R ]PB                  R ]PD                  R ]PF                  R ]PH                  R ]PJ                  R ]PL                  R ]PN                  R  ]PP                  R! /
t)]P9                  ]]	]4      R" 4       tR## )$    )defaultdict)Q)AddMulPowNumberNumberSymbolSymbol)ImaginaryUnit)Abs)
EquivalentAndOrImplies)MatMulc           	     n    \        VP                   Uu. uF  q1P                  W4      NK  	  up!  # u upi )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   &&& }/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/assumptions/sathandlers.pyallargsr      s,    2 499=9C6'9=>>=   2c           	     n    \        VP                   Uu. uF  q1P                  W4      NK  	  up!  # u upi )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                :   VP                    Uu. uF  q1P                  W4      NK  	  pp\        \        \	        V4      4       UUu. uF9  p\        WE,          .VRV WE^,           R ,            Uu. uF  qf( NK  	  upO5!  NK;  	  upp!  pV# u upi u upi u uppi )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 4899=9C6'9I=
#(Y#8:#8a 9< 9Ra=A#$4 # 4C4 4 # #8: ;CJ ># :s   B)B
/B:B
B
c                   B   a  ] tR t^ht o RtR tR tR tR tR t	Rt
V tR# )	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                V    \        \        4      V n        \        \        4      V n        R # N)r   	frozensetsinglefacts
multifacts)selfs   &r   __init__ClassFactRegistry.__init__   s    &y1%i0    c                   a a VV 3R  lpV# )c                 H   < SP                   S;;,          V 0,          uu&   V # r*   )r,   )funcclsr.   s   &r   _%ClassFactRegistry.register.<locals>._   s     S!dV+!Kr1    )r.   r5   r6   s   ff r   registerClassFactRegistry.register   s    	 r1   c                   a a VV 3R  lpV# )c                 Z   < S F#  pSP                   V;;,          V 0,          uu&   K%  	  V # r*   )r-   )r4   r5   classesr.   s   & r   r6   *ClassFactRegistry.multiregister.<locals>._   s(    $.$ Kr1   r8   )r.   r=   r6   s   fj r   multiregisterClassFactRegistry.multiregister   s    	 r1   c                P   V P                   V,          pV P                    F/  p\        W4      '       g   K  W P                   V,          ,          pK1  	  V P                  V,          pV P                   F/  p\        W4      '       g   K  W@P                  V,          ,          pK1  	  W$3# r*   )r,   
issubclassr-   )r.   keyret1kret2s   &&   r   __getitem__ClassFactRegistry.__getitem__   s    $!!A#!!((++ " s#A#!!** ! zr1   c                   a \        4       pV \        S4      ,          w  r4VP                  V3R  lV 4       4       V F  pVP                  V! S4      4       K  	  V# )c              3   2   <"   T F  q! S4      x  K  	  R # 5ir*   r8   ).0hr   s   & r   	<genexpr>-ClassFactRegistry.__call__.<locals>.<genexpr>   s     .Iq1T77Is   )settypeupdate)r.   r   ret	handlers1	handlers2rL   s   &f    r   __call__ClassFactRegistry.__call__   sL    e#DJ/	

.I..AJJqw 
r1   )r-   r,   N)__name__
__module____qualname____firstlineno____doc__r/   r9   r?   rG   rU   __static_attributes____classdictcell__)__classdict__s   @r   r(   r(   h   s)     .^1 r1   r(   xc                    V P                   ^ ,          p\        P                  ! V 4      \        \        P                  ! V4      ( \        P                  ! V 4      ( 4      \        P
                  ! V4      \        P
                  ! V 4      ,	          \        P                  ! V4      \        P                  ! V 4      ,	          \        P                  ! V4      \        P                  ! V 4      ,	          .# )r   )r   r   nonnegativer   zeroevenoddinteger)r   r   s   & r   r6   r6      s    
))A,CMM$s|affTl]3FF3K166$<'EE#J!%%+%IIcNaiio-	 r1   c                 .   \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P
                  ! \        4      V 4      \        P
                  ! V 4      ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      ( V 4      \        P                  ! V 4      ( ,	          .# r*   )	r   r_   r   positivenegativerealrationalre   r&   r   s   &r   r6   r6      s    Aqzz!}d+qzz$/??Aqzz!}d+qzz$/??Aqvvay$'166$<7Aqzz!}d+qzz$/??Aqyy|T*aiio=!aiil]D1aiio5EE r1   c           	          \        \        \        P                  ! \        4      V 4      p\	        \        \        P
                  ! \        4      V 4      p\        V\        V\        P
                  ! V 4      4      4      # r*   r   r_   r   ri   r&   
irrationalr   r   allargs_realonearg_irrationals   &  r   r6   r6      M    1affQi.L%aa$?<):ALL<N!OPPr1   c                    \        \        P                  ! V 4      \        \        \        P                  ! \        4      V 4      4      \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          \        \        \        P                  ! \        4      ( V 4      \        P                  ! V 4      ( ,	          \        \        \        P                  ! \        4      V 4      \        P                  ! V 4      ,	          .# r*   )r   r   rb   r   r_   r   rg   ri   rj   re   r&   commutativerk   s   &r   r6   r6      s    qvvd|VAqvvay$%?@Aqzz!}d+qzz$/??Aqvvay$'166$<7Aqzz!}d+qzz$/??Aqyy|T*aiio=!ajjm^T2qyy6FFAq}}Q'.!--2EE r1   c                     \        \        \        P                  ! \        4      V 4      p\	        V\        P                  ! V 4      ( 4      # r*   )r   r_   r   primer   )r   allargs_primes   & r   r6   r6      s1     Aqwwqz40M=1774=.11r1   c           	      8   \        \        \        P                  ! \        4      \        P                  ! \        4      ,          V 4      p\        \        \        P                  ! \        4      V 4      p\        V\        V\        P                  ! V 4      4      4      # r*   )r   r_   r   	imaginaryri   r&   r   )r   allargs_imag_or_realonearg_imaginarys   &  r   r6   r6      s^     #1akk!nqvvay&@$G$QA='1A1;;tCT)UVVr1   c           	          \        \        \        P                  ! \        4      V 4      p\	        \        \        P
                  ! \        4      V 4      p\        V\        V\        P
                  ! V 4      4      4      # r*   rm   ro   s   &  r   r6   r6     rr   r1   c           	          \        \        \        P                  ! \        4      V 4      p\	        \        \        P
                  ! \        4      V 4      p\        V\        V\        P
                  ! V 4      4      4      # r*   )r   r_   r   re   r   rc   r   r   )r   allargs_integeranyarg_evens   &  r   r6   r6     sL    
 a1t4OAFF1It,K?J{AFF4L$IJJr1   c                     \        \        \        P                  ! \        4      V 4      p\        \        \        P                  ! \        4      V 4      p\        V\        \        P                  ! V 4      V4      4      # r*   )r   r_   r   square
invertibler   r   )r   allargs_squareallargs_invertibles   &  r   r6   r6     sM    QT2N ALLOT:>:all4.@BT#UVVr1   c           
      4   V P                   V P                  r!\        P                  ! V4      \        P                  ! V4      ,          \        P
                  ! V4      ,          \        P
                  ! V 4      ,	          \        P
                  ! V4      \        P                  ! V4      ,          \        P
                  ! V4      ,          \        P
                  ! V 4      ,	          \        P                  ! V4      \        P                  ! V4      ,          \        P
                  ! V4      ,          \        P                  ! V 4      ,	          \        \        P                  ! V 4      \        P                  ! V4      \        P                  ! V4      ,          4      .# r*   )baseexpr   ri   rc   ra   rd   nonpositiver   rb   rg   )r   r   r   s   &  r   r6   r6      s    		488#	
s	#ammC&8	8Q]]4=PP	
t	quuSz	)AMM#,>	>1==QUCVV	
t	quuSz	)AMM#,>	>1==QUCVV166$<

3!?@	 r1   c                     V P                   # r*   )is_positiveos   &r   <lambda>r   .      !--r1   c                     V P                   # r*   )is_zeror   s   &r   r   r   /      aiir1   c                     V P                   # r*   )is_negativer   s   &r   r   r   0  r   r1   c                     V P                   # r*   )is_rationalr   s   &r   r   r   1  r   r1   c                     V P                   # r*   )is_irrationalr   s   &r   r   r   2  s    AOOr1   c                     V P                   # r*   )is_evenr   s   &r   r   r   3  r   r1   c                     V P                   # r*   )is_oddr   s   &r   r   r   4  s    QXXr1   c                     V P                   # r*   )is_imaginaryr   s   &r   r   r   5      1>>r1   c                     V P                   # r*   )is_primer   s   &r   r   r   6  s    qzzr1   c                     V P                   # r*   )is_compositer   s   &r   r   r   7  r   r1   c                     . p\         P                  4        F5  w  r#V! V 4      pV! V 4      pVf   K  VP                  \        WE4      4       K7  	  V# r*   )_old_assump_gettersitemsappendr   )r   rR   pgetterpredprops   &     r   r6   r6   :  sL    
C(..0	wd|JJz$-.	 1
 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_registryr_   r?   r6   r9   rg   rb   rh   rj   rn   rc   rd   ry   rv   	compositer   r8   r1   r   <module>r      s%   # # D D , 4 > > -?8>8BV Vp ()  3K ""3' ( ""3' ( c"Q #Q ""3' ( c"2 #2 c"W #W c"Q #Q
 c"K #K f%W &W ""3' ( JJ'FFJJ'JJ'LL+FFEEKK)GG!KK)  ""6<G Hr1   