+
    id                        R t ^ RIHtHt ^ RIHtHtHtHtH	t	H
t
 ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t, ^ RIH-t- ^ RI.H/t/ ^ RI0H1t1 ^ R	I2H3t3H4t4H5t5 ^ R
I6H7t7 ^ RI8H9t9 ^RI:H;t;H<t<H=t= ^RI>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtH R tI]?P                  ! ]K]4      R 4       tL]?P                  ! ]]]]]]]]4      R 4       tL]?P                  ! ]4      R 4       tL]?P                  ! ]4      R 4       tL]?P                  ! ]	4      R 4       tL]?P                  ! ]4      R 4       tL]?P                  ! ] 4      R 4       tL]?P                  ! ]3]7]54      R 4       tL]@P                  ! ]4      R 4       tL]@P                  ! ]4      R 4       tL]@P                  ! ]]]]]]]4      R 4       tL]@P                  ! ]4      R 4       tL]@P                  ! ]]4      R 4       tL]@P                  ! ]	4      R 4       tL]@P                  ! ]#]$]%]+],4      R 4       tL]@P                  ! ]'4      R 4       tL]@P                  ! ]"]&4      R 4       tL]@P                  ! ]!])4      R  4       tL]AP                  ! ]4      R! 4       tL]AP                  ! ]4      R" 4       tLR# tN]BP                  ! ] ]]]](]]]*]4	      R$ 4       tL]BP                  ! ]]]4      R% 4       tL]BP                  ! ]4      R& 4       tL]BP                  ! ]4      R' 4       tL]BP                  ! ]4      R( 4       tL]BP                  ! ]	4      R) 4       tL]BP                  ! ]%]+4      R* 4       tL]BP                  ! ]'4      R+ 4       tL]BP                  ! ])4      R, 4       tL]BP                  ! ]3]7]54      R- 4       tL]CP                  ! ]O4      R. 4       tL]CP                  ! ]]4      R/ 4       tL]CP                  ! ]]]	4      R0 4       tL]DP                  ! ]O4      R1 4       tL]DP                  ! ]4      R2 4       tL]DP                  ! ]4      R3 4       tL]DP                  ! ]	4      R4 4       tL]DP                  ! ]%]+4      R5 4       tL]DP                  ! ]'4      R6 4       tL]DP                  ! ]44      R7 4       tL]EP                  ! ] ]%]'](]])]]]*]+4
      R8 4       tL]EP                  ! ]]4      R9 4       tL]EP                  ! ]4      R: 4       tL]EP                  ! ]]4      R; 4       tL]EP                  ! ]	4      R< 4       tL]EP                  ! ]3]7]54      R= 4       tL]EP                  ! ]4      R> 4       tLR? tP]FP                  ! ]4      R@ 4       tL]FP                  ! ]4      RA 4       tL]FP                  ! ]4      RB 4       tL]FP                  ! ]4      RC 4       tL]FP                  ! ]	4      RD 4       tL]FP                  ! ])4      RE 4       tL]FP                  ! ]'4      RF 4       tL]FP                  ! ]]4      RG 4       tL]FP                  ! ]4      RH 4       tL]GP                  ! ]O4      RI 4       tL]GP                  ! ]4      RJ 4       tL]GP                  ! ]4      RK 4       tL]GP                  ! ]	4      RL 4       tL]GP                  ! ]44      RM 4       tL]HP                  ! ]]]]]4      RN 4       tL]HP                  ! ]]]]]4      RO 4       tL]HP                  ! ]]4      RP 4       tL]HP                  ! ]	4      RQ 4       tL]HP                  ! ]4      RR 4       tL]HP                  ! ]#]$]%]+],4      RS 4       tL]HP                  ! ]'4      RT 4       tL]HP                  ! ]"]&4      RU 4       tL]HP                  ! ]!])4      RV 4       tLRW# )XzL
Handlers for predicates related to set membership: integer, rational, etc.
)Qask)AddBasicExprMulPowS)AlgebraicNumberComplexInfinityExp1FloatGoldenRatioImaginaryUnitInfinityIntegerNaNNegativeInfinityNumberNumberSymbolPipiRationalTribonacciConstantE)
fuzzy_bool)Absacosacotasinatancoscotexpimlogresintan)I)Eq)	conjugate)Determinant
MatrixBaseTrace)MatrixElement)MDNotImplementedError)test_closed_groupask_allask_any)
IntegerPredicateRationalPredicateIrrationalPredicateRealPredicateExtendedRealPredicateHermitianPredicateComplexPredicateImaginaryPredicateAntihermitianPredicateAlgebraicPredicatec                      \        V P                  4       4      pW,
          P                  ^ 4      '       g   \        hR#   \         d     R# i ; i)    TF)introundequals	TypeErrorexprassumptionsis   && /Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/assumptions/handlers/sets.py_IntegerPredicate_numberrI      sD    	DJJL!AH$$Q'' 		s   <A   AAc                     R # T rE   rF   s   &&rH   _rN   (           c                     R # FrL   rM   s   &&rH   rN   rN   ,        rP   c                 2    V P                   pVf   \        hV# N)
is_integerr0   rE   rF   rets   && rH   rN   rN   1       
//C
{##JrP   c                p    V P                   '       d   \        W4      # \        W\        P                  4      # )zg
* Integer + Integer       -> Integer
* Integer + !Integer      -> !Integer
* !Integer + !Integer -> ?
)	is_numberrI   r1   r   integerrM   s   &&rH   rN   rN   8   s)     ~~~'::T		::rP   c           	      P   V P                   '       d   \        W4      # \        \        P                  ! V P
                  4      ( \        P                  ! V P
                  4      \        P                  ! V P                  4      VR 7      '       d   R# \        \        P                  ! V P
                  4      \        P                  ! V P                  4      VR 7      '       d   \        \        P                  ! V P                  4      \        P                  ! V P                  4      \        P                  ! V P
                  4      ( ,          \        P                  ! V P
                  ^,
          4      \        P                  ! V P
                  ^,           4      VR 7      '       d   R# R# R# ))rF   TN)r[   rI   r2   r   zerobasefiniter#   r\   r3   positivenonnegativerM   s   &&rH   rN   rN   C   s   ~~~'::tyy!!188DII#6txx8HVabbqyy#QYYtxx%8kRR1::dhh'txx)@AFF499DUCU)UWXW]W]^b^g^ghi^iWjlmlrlrsws|s|}~s~l  NY  Z  Z Z SrP   c                   V P                   '       d   \        W4      # RpV P                   F  p\        \        P
                  ! V4      V4      '       d   K+  VP                  '       dZ   VP                  ^8X  d*   \        \        P                  ! ^V ,          4      V4      u # VP                  ^,          ( '       d    R# K  \        \        P                  ! V4      V4      '       d   V'       d   RpK   R#  R# 	  V# )z
* Integer*Integer      -> Integer
* Integer*Irrational   -> !Integer
* Odd/Even             -> !Integer
* Integer*Rational     -> ?
TNF)
r[   rI   argsr   r   r\   is_Rationalqeven
irrational)rE   rF   _outputargs   &&  rH   rN   rN   M   s     ~~~'::Gyy199S>;//55A:qvvaf~{;;UUQY<  Q\\#&44#G  NrP   c                 x    \        \        P                  ! V P                  ^ ,          4      V4      '       d   R# R# r?   TN)r   r   r\   rd   rM   s   &&rH   rN   rN   i   s(    
199TYYq\"K00 1rP   c                 d    \        \        P                  ! V P                  ^ ,          4      V4      # r?   )r   r   integer_elementsrd   rM   s   &&rH   rN   rN   n   "    q!!$))A,/==rP   c                     R # rK   rL   rM   s   &&rH   rN   rN   u   rO   rP   c                     R # rU   rL   rM   s   &&rH   rN   rN   y   rO   rP   c                     R # rR   rL   rM   s   &&rH   rN   rN   }   rS   rP   c                 2    V P                   pVf   \        hV# rU   )is_rationalr0   rW   s   && rH   rN   rN      s    


C
{##JrP   c                    V P                   '       d    V P                  4       ^,          '       d   R# \        W\        P                  4      # )zm
* Rational + Rational     -> Rational
* Rational + !Rational    -> !Rational
* !Rational + !Rational   -> ?
F)r[   as_real_imagr1   r   rationalrM   s   &&rH   rN   rN      s5     ~~~q!!T

;;rP   c                   V P                   \        8X  dU   V P                  p\        \        P
                  ! V4      V4      '       d!   \        \        P                  ! V4      V4      # R# \        \        P                  ! V P                  4      V4      pV'       EdZ   \        \        P
                  ! V P                   4      V4      pV'       dl   \        \        P                  ! V P                   4      V4      pVRJ d   R# V'       d2   \        \        P                  ! V P                  4      4      '       d   R# \        \        P                  ! V P                   4      V4      RJ d+   \        \        P                  ! V P                  4      V4      # \        \        P                  ! V P                   4      V4      '       d3   \        \        P                  ! V P                  R4      4      '       d   R# R# \        \        P
                  ! V P                  4      V4      '       d   \        \        P                  ! V P                   4      V4      '       d	   VRJ d   R# \        \        P                  ! V P                   4      4      '       d2   \        \        P                  ! V P                  4      4      '       d   R# \        \        P                  ! V P                   ^4      4      '       d   R# R# R# )zq
* Rational ** Integer      -> Rational
* Irrational ** Rational   -> Irrational
* Rational ** Irrational   -> ?
NFT)r_   r   r#   r   r   rx   r^   r\   ra   	algebraicrh   eqprime)rE   rF   xis_exp_integeris_base_rationalis_base_zeros   &&    rH   rN   rN      s    yyA~HHqzz!}k**qvvay+..488,k:N~qzz$))4[Aqvvdii0=Lu$AJJtxx$8 9 9q{{499%k2e;qvvdhh'55q||DII&{33ADD"<M8N8N	QZZ!;	/	/qwwtyy!;//Ne4Kqvvdii !!c!**TXX*>&?&?qttDIIa !! " 
0rP   c                     V P                   ^ ,          p\        \        P                  ! V4      V4      '       d"   \        \        P                  ! V4      ( V4      # R# r?   Nrd   r   r   rx   nonzerorE   rF   r~   s   && rH   rN   rN      s@    		!A
1::a=+&&AIIaL=+.. 'rP   c                     V P                   p\        \        P                  ! V4      V4      '       d"   \        \        P                  ! V4      ( V4      # R # rU   )r#   r   r   rx   r   r   s   && rH   rN   rN      s<    A
1::a=+&&AIIaL=+.. 'rP   c                 |    V P                   ^ ,          p\        \        P                  ! V4      V4      '       d   R# R# r?   FN)rd   r   r   rx   r   s   && rH   rN   rN      s,    		!A
1::a=+&& 'rP   c                     V P                   ^ ,          p\        \        P                  ! V4      V4      '       d)   \        \        P                  ! V^,
          4      ( V4      # R# r   r   r   s   && rH   rN   rN      sF    		!A
1::a=+&&AIIa!e$$k22 'rP   c                 2    V P                   pVf   \        hV# rU   )is_irrationalr0   rW   s   && rH   rN   rN      s    


C
{##JrP   c                     \        \        P                  ! V 4      V4      pV'       d.   \        \        P                  ! V 4      V4      pVf   R # V'       * # V# rU   )r   r   realrx   )rE   rF   _real	_rationals   &&  rH   rN   rN      sD    tk*E

4(+6	}rP   c                     V P                  4       ^,          P                  ^4      pVP                  ^8w  d   V'       * # R# )   Nrw   evalf_precrD   s   && rH   _RealPredicate_numberr      9     	A$$Q'Aww!|u rP   c                     R # rK   rL   rM   s   &&rH   rN   rN           rP   c                     R # rR   rL   rM   s   &&rH   rN   rN          rP   c                 2    V P                   pVf   \        hV# rU   )is_realr0   rW   s   && rH   rN   rN      s    
,,C
{##JrP   c                p    V P                   '       d   \        W4      # \        W\        P                  4      # )zH
* Real + Real              -> Real
* Real + (Complex & !Real) -> !Real
)r[   r   r1   r   r   rM   s   &&rH   rN   rN     s)     ~~~$T77T77rP   c                   V P                   '       d   \        W4      # RpV P                   F]  p\        \        P
                  ! V4      V4      '       d   K+  \        \        P                  ! V4      V4      '       d   VR,          pK\   R# 	  V# )zh
* Real*Real               -> Real
* Real*Imaginary          -> !Real
* Imaginary*Imaginary     -> Real
TN)r[   r   rd   r   r   r   	imaginary)rE   rF   resultrj   s   &&  rH   rN   rN     sl     ~~~$T77Fyyqvvc{K((S!;//d]F  rP   c                ^	   V P                   '       d   \        W4      # V P                  \        8X  df   \	        \
        P                  ! V P                  \        ,          \        ,          4      \
        P                  ! V P                  4      ,          V4      # V P                  P                  \        8X  g>   V P                  P                  '       Ed.   V P                  P                  \        8X  Ed   \	        \
        P                  ! V P                  P                  4      V4      '       d3   \	        \
        P                  ! V P                  4      V4      '       d   R# V P                  P                  \        ,          \        ,          p\	        \
        P                  ! ^V,          4      V4      '       dG   \	        \
        P                  ! \        P                  V,          V P                  ,          4      V4      # R# \	        \
        P                  ! V P                  4      V4      '       dh   \	        \
        P                  ! V P                  4      V4      '       d8   \	        \
        P                   ! V P                  4      V4      pVe   V'       * # R# \	        \
        P                  ! V P                  4      V4      '       d:   \	        \
        P                  ! \#        V P                  4      4      V4      pVe   V# \	        \
        P                  ! V P                  4      V4      '       Ed|   \	        \
        P                  ! V P                  4      V4      '       EdI   \	        \
        P$                  ! V P                  4      V4      RJd5   \	        \
        P&                  ! V P                  4      V4      '       d   R# R# V P                  P(                  '       de   \	        \
        P*                  ! V P                  P,                  4      V4      '       d+   \	        \
        P&                  ! V P                  4      V4      # \	        \
        P                  ! V P                  4      V4      '       d   R# \	        \
        P&                  ! V P                  4      V4      '       d   R# R# R# R# )a  
* Real**Integer              -> Real
* Positive**Real             -> Real
* Negative**Real             -> ?
* Real**(Integer/Even)       -> Real if base is nonnegative
* Real**(Integer/Odd)        -> Real
* Imaginary**(Integer/Even)  -> Real
* Imaginary**(Integer/Odd)   -> not Real
* Imaginary**Real            -> ? since Real could be 0 (giving real)
                                or 1 (giving imaginary)
* b**Imaginary               -> Real if log(b) is imaginary and b != 0
                                and exponent != integer multiple of
                                I*pi/log(b)
* Real**Real                 -> ? e.g. sqrt(-1) is imaginary and
                                sqrt(2) is not
TNF)r[   r   r_   r   r   r   r\   r#   r)   r   r   funcis_Powr   r	   NegativeOneoddr%   r^   ra   re   rg   rf   )rE   rF   rG   r   imlogs   &&   rH   rN   rN     s   $ ~~~$T77yyA~IIdhhqjm$qvvdhh'77
 	
 yy~~!1!1!1diinn6Iq{{499==);771;;txx(+66
 IIMM!OBqyy1~{++qvvq}}a/$((:;[II
1;;tyy!;//qyy"K00aeeDHHo{3Cw
1;;txx +..AKKDII/= L
166$))k**qvvdhh--166$))$k2%?qzz$((+[99xx###txxzz*K881::dii0+>>QYYtxx(+66QZZ		*K88 9 . +rP   c                 x    \        \        P                  ! V P                  ^ ,          4      V4      '       d   R# R# rl   )r   r   r   rd   rM   s   &&rH   rN   rN   b  s(    
166$))A,-- .rP   c                     \        \        P                  ! V P                  \        ,          \
        ,          4      \        P                  ! V P                  4      ,          V4      # rU   )r   r   r\   r#   r)   r   r   rM   s   &&rH   rN   rN   g  s;    			$((1*R- 166$((#33[ rP   c                 d    \        \        P                  ! V P                  ^ ,          4      V4      # rn   )r   r   ra   rd   rM   s   &&rH   rN   rN   m  s     qzz$))A,'55rP   c                 d    \        \        P                  ! V P                  ^ ,          4      V4      # rn   )r   r   real_elementsrd   rM   s   &&rH   rN   rN   q  s     qtyy|,k::rP   c                    \        \        P                  ! V 4      \        P                  ! V 4      ,          \        P                  ! V 4      ,          \        P
                  ! V 4      ,          \        P                  ! V 4      ,          V4      # rU   )r   r   negative_infinitenegativer^   ra   positive_infiniterM   s   &&rH   rN   rN   x  sj    q""4(D!" D!" $$T*	+
  rP   c                     R # rK   rL   rM   s   &&rH   rN   rN     rO   rP   c                 6    \        W\        P                  4      # rU   )r1   r   extended_realrM   s   &&rH   rN   rN     s    T@@rP   c                 r    \        V \        4      '       d   R # \        \        P                  ! V 4      V4      # rU   )
isinstancer-   r   r   r   rM   s   &&rH   rN   rN     s'    $
##qvvd|[))rP   c                f    V P                   '       d   \        h\        W\        P                  4      # )zN
* Hermitian + Hermitian  -> Hermitian
* Hermitian + !Hermitian -> !Hermitian
)r[   r0   r1   r   	hermitianrM   s   &&rH   rN   rN     s$     ~~~##T<<rP   c                   V P                   '       d   \        h^ pRpV P                   F  p\        \        P
                  ! V4      V4      '       d   VR,          pM)\        \        P                  ! V4      V4      '       g    R# \        \        P                  ! V4      ( V4      '       g   K  V^,          pV^8  g   K   R# 	  V# )z
As long as there is at most only one noncommutative term:

* Hermitian*Hermitian         -> Hermitian
* Hermitian*Antihermitian     -> !Hermitian
* Antihermitian*Antihermitian -> Hermitian
TNr[   r0   rd   r   r   antihermitianr   commutativerE   rF   nccountr   rj   s   &&   rH   rN   rN     s     ~~~##GFyyqs#[11d]FQ[[%{33c""K00qLG{  rP   c                   V P                   '       d   \        hV P                  \        8X  d9   \	        \
        P                  ! V P                  4      V4      '       d   R# \        h\	        \
        P                  ! V P                  4      V4      '       d3   \	        \
        P                  ! V P                  4      V4      '       d   R# \        h)z#
* Hermitian**Integer -> Hermitian
T)	r[   r0   r_   r   r   r   r   r#   r\   rM   s   &&rH   rN   rN     s~    
 ~~~##yyA~q{{488$k22##
1;;tyy!;//qyy"K00
rP   c                     \        \        P                  ! V P                  ^ ,          4      V4      '       d   R# \        h)r?   T)r   r   r   rd   r0   rM   s   &&rH   rN   rN     s)    
1;;tyy|$k22
rP   c                 r    \        \        P                  ! V P                  4      V4      '       d   R # \        hrK   )r   r   r   r#   r0   rM   s   &&rH   rN   rN     s%    
1;;txx +..
rP   c                     V P                   w  r#R p\        V4       FT  p\        WS4       FB  p\        \        WV3,          \	        WV3,          4      4      4      pVf   RpVR8X  g   K@    R# 	  KV  	  Vf   \
        hV# TNFshaperanger   r*   r+   r0   matrF   rowscolsret_valrG   jconds   &&      rH   rN   rN     sv    JDG4[qAbTIcQ$i,@ABD|u}    ##NrP   c                     R # rK   rL   rM   s   &&rH   rN   rN     r   rP   c                     R # rR   rL   rM   s   &&rH   rN   rN     r   rP   c                 2    V P                   pVf   \        hV# rU   )
is_complexr0   rW   s   && rH   rN   rN     rY   rP   c                 6    \        W\        P                  4      # rU   )r1   r   complexrM   s   &&rH   rN   rN     s    T		::rP   c                 d    V P                   \        8X  d   R # \        W\        P                  4      # rK   )r_   r   r1   r   r   rM   s   &&rH   rN   rN     s!    yyA~T		::rP   c                 d    \        \        P                  ! V P                  ^ ,          4      V4      # rn   )r   r   complex_elementsrd   rM   s   &&rH   rN   rN     rp   rP   c                     R # rU   rL   rM   s   &&rH   rN   rN     rO   rP   c                     V P                  4       ^ ,          P                  ^4      pVP                  ^8w  d   V'       * # R# r   r   )rE   rF   rs   && rH   _Imaginary_numberr     r   rP   c                     R # rK   rL   rM   s   &&rH   rN   rN     rO   rP   c                 2    V P                   pVf   \        hV# rU   )is_imaginaryr0   rW   s   && rH   rN   rN     s    


C
{##JrP   c                l   V P                   '       d   \        W4      # ^ pV P                   F]  p\        \        P
                  ! V4      V4      '       d   K+  \        \        P                  ! V4      V4      '       d   V^,          pK\   R# 	  V^ 8X  d   R# V^\        V P                  4      39   d   R# R# )zi
* Imaginary + Imaginary -> Imaginary
* Imaginary + Complex   -> ?
* Imaginary + Real      -> !Imaginary
TFNr[   r   rd   r   r   r   r   len)rE   rF   realsrj   s   &&  rH   rN   rN     s     ~~~ 33Eyyq{{3--k**QJE  A:QDII'' (rP   c                Z   V P                   '       d   \        W4      # Rp^ pV P                   F]  p\        \        P
                  ! V4      V4      '       d   VR,          pK4  \        \        P                  ! V4      V4      '       d   K\   R# 	  V\        V P                  4      8X  d   R# V# )zB
* Real*Imaginary      -> Imaginary
* Imaginary*Imaginary -> Real
FTNr   )rE   rF   r   r   rj   s   &&   rH   rN   rN   5  s     ~~~ 33FEyyq{{3--d]FQVVC[+..	  C		N"rP   c                   V P                   '       d   \        W4      # V P                  \        8X  df   V P                  \
        ,          \        ,          p\        \        P                  ! ^V,          4      \        P                  ! V4      ( ,          V4      # V P                  P                  \        8X  g>   V P                  P                  '       Ed,   V P                  P                  \        8X  Ed   \        \        P                  ! V P                  P                  4      V4      '       d   \        \        P                  ! V P                  4      V4      '       d   R# V P                  P                  \
        ,          \        ,          p\        \        P                  ! ^V,          4      V4      '       dG   \        \        P                  ! \        P                  V,          V P                  ,          4      V4      # \        \        P                  ! V P                  4      V4      '       dc   \        \        P                  ! V P                  4      V4      '       d3   \        \        P                  ! V P                  4      V4      pVe   V# R# \        \        P                  ! V P                  4      V4      '       d:   \        \        P                  ! \!        V P                  4      4      V4      pVe   R# \        \        P"                  ! V P                  4      \        P"                  ! V P                  4      ,          V4      '       d   \        \        P$                  ! V P                  4      V4      '       d   R# \        \        P&                  ! V P                  4      V4      pV'       g   V# \        \        P                  ! V P                  4      V4      '       d   R# \        \        P                  ! ^V P                  ,          4      V4      pV'       d+   \        \        P(                  ! V P                  4      V4      # V# R# )a  
* Imaginary**Odd        -> Imaginary
* Imaginary**Even       -> Real
* b**Imaginary          -> !Imaginary if exponent is an integer
                           multiple of I*pi/log(b)
* Imaginary**Real       -> ?
* Positive**Real        -> Real
* Negative**Integer     -> Real
* Negative**(Integer/2) -> Imaginary
* Negative**Real        -> not Imaginary if exponent is not Rational
FN)r[   r   r_   r   r#   r)   r   r   r   r\   r   r   r   r	   r   r   r%   r   ra   rx   r   )rE   rF   arG   r   r   rathalfs   &&      rH   rN   rN   I  s    ~~~ 33yyA~HHQJrM199QqS>QYYq\M1;??yy~~!1!1!1diinn6Iq{{499==);771;;txx(+66		a"A199QqS>;//1;;q(8488'CDkRR
1;;tyy!;//qyy"K00aeeDHHo{3C

1;;txx +..AKKDII/=
166$))qvvdhh//==qzz$))$k22ajj*K8C
199TXX&44199QtxxZ0+>qzz$))4kBB >rP   c                    \        \        P                  ! V P                  ^ ,          4      V4      '       d<   \        \        P                  ! V P                  ^ ,          4      V4      '       d   R# R# V P                  ^ ,          P
                  \        8X  gJ   V P                  ^ ,          P                  '       dV   V P                  ^ ,          P                  \        8X  d0   V P                  ^ ,          P                  \        \        ) 39   d   R# \        \        P                  ! V P                  ^ ,          4      V4      pVRJ d   R# R# )r?   FNT)r   r   r   rd   ra   r   r#   r   r_   r   r)   r   )rE   rF   r$   s   && rH   rN   rN     s    
166$))A,--qzz$))A,'55
 yy|CDIIaL$7$7$7DIIaL<M<MQR<R99Q<A2w&	Q[[1&	4B	U{ rP   c                     V P                   \        ,          \        ,          p\        \        P
                  ! ^V,          4      \        P
                  ! V4      ( ,          V4      # )   )r#   r)   r   r   r   r\   )rE   rF   r   s   && rH   rN   rN     s;    
2Aqyy1~1-{;;rP   c                 8    V P                  4       ^,          ^ 8X  * # )r   )rw   rM   s   &&rH   rN   rN     s    !!#A&!,,rP   c                     R # rU   rL   rM   s   &&rH   rN   rN     rO   rP   c                     \        V \        4      '       d   R # \        \        P                  ! V 4      V4      '       d   R# \        \        P
                  ! V 4      V4      # )NT)r   r-   r   r   r^   r   rM   s   &&rH   rN   rN     s@    $
##
166$<%%q{{4 +..rP   c                f    V P                   '       d   \        h\        W\        P                  4      # )zf
* Antihermitian + Antihermitian  -> Antihermitian
* Antihermitian + !Antihermitian -> !Antihermitian
)r[   r0   r1   r   r   rM   s   &&rH   rN   rN     s$     ~~~##T@@rP   c                   V P                   '       d   \        h^ pRpV P                   F  p\        \        P
                  ! V4      V4      '       d   VR,          pM)\        \        P                  ! V4      V4      '       g    R# \        \        P                  ! V4      ( V4      '       g   K  V^,          pV^8  g   K   R# 	  V# )z
As long as there is at most only one noncommutative term:

* Hermitian*Hermitian         -> !Antihermitian
* Hermitian*Antihermitian     -> Antihermitian
* Antihermitian*Antihermitian -> !Antihermitian
FTNr   r   s   &&   rH   rN   rN     s     ~~~##GFyyqs#[11d]FQ[[%{33c""K00qLG{  rP   c                8   V P                   '       d   \        h\        \        P                  ! V P
                  4      V4      '       d:   \        \        P                  ! V P                  4      V4      '       d   R#  \        h\        \        P                  ! V P
                  4      V4      '       de   \        \        P                  ! V P                  4      V4      '       d   R# \        \        P                  ! V P                  4      V4      '       d   R# \        h)zx
* Hermitian**Integer  -> !Antihermitian
* Antihermitian**Even -> !Antihermitian
* Antihermitian**Odd  -> Antihermitian
FT)r[   r0   r   r   r   r_   r\   r#   r   rg   r   rM   s   &&rH   rN   rN     s     ~~~##
1;;tyy!;//qyy"K00 1   
Q__TYY'	5	5qvvdhh--txx+..
rP   c                    V P                   w  r#R p\        V4       FU  p\        WS4       FC  p\        \        WV3,          \	        WV3,          4      ) 4      4      pVf   RpVR8X  g   KA    R# 	  KW  	  Vf   \
        hV# r   r   r   s   &&      rH   rN   rN     sy    JDG4[qAbTYsa4y-A,ABCD|u}    ##NrP   c                     R # rK   rL   rM   s   &&rH   rN   rN     r   rP   c                     R # rR   rL   rM   s   &&rH   rN   rN     rS   rP   c                 6    \        W\        P                  4      # rU   )r1   r   r{   rM   s   &&rH   rN   rN     s    T<<rP   c                    V P                   \        8X  d^   \        \        P                  ! V P
                  4      V4      '       d,   \        \        P                  ! V P
                  4      ( V4      # R # V P                   \        8X  de   \        \        P                  ! V P
                  4      V4      '       d3   \        \        P                  ! V P
                  4      V4      '       d   R# R # \        \        P                  ! V P
                  4      V4      p\        \        P                  ! V P                   4      V4      p\        \        P                  ! V P
                  4      V4      pV'       dw   V'       dm   V'       d   R# \        \        P                  ! V P                   ^ 4      \        P                  ! V P                   ^4      ,          4      '       d   VRJ d   R# R # R # R # R # )NFT)r_   r   r   r   r{   r#   r   r   r\   ra   rx   ne)rE   rF   exp_rationalbase_algebraicexp_algebraics   &&   rH   rN   rN      s+   yyA~q{{488$k22		$((++[99yyBqyy"K00SDHH9M{5[5[qzz$((+[9LTYY/=NDHH-k:M- qttDIIa 144		!#4455,%:O ;P5 (~rP   c                      V P                   ^ 8g  # rn   )rf   rM   s   &&rH   rN   rN     s    66Q;rP   c                     V P                   ^ ,          p\        \        P                  ! V4      V4      '       d"   \        \        P                  ! V4      ( V4      # R# r   rd   r   r   r{   r   r   s   && rH   rN   rN     s@    		!A
1;;q>;''AIIaL=+.. (rP   c                     V P                   p\        \        P                  ! V4      V4      '       d"   \        \        P                  ! V4      ( V4      # R # rU   )r#   r   r   r{   r   r   s   && rH   rN   rN      s<    A
1;;q>;''AIIaL=+.. (rP   c                 |    V P                   ^ ,          p\        \        P                  ! V4      V4      '       d   R# R# r   )rd   r   r   r{   r   s   && rH   rN   rN   &  s,    		!A
1;;q>;'' (rP   c                     V P                   ^ ,          p\        \        P                  ! V4      V4      '       d)   \        \        P                  ! V^,
          4      ( V4      # R# r   r   r   s   && rH   rN   rN   ,  sF    		!A
1;;q>;''AIIa!e$$k22 (rP   N)Q__doc__sympy.assumptionsr   r   
sympy.corer   r   r   r   r   r	   sympy.core.numbersr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.core.logicr   sympy.functionsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   sympy.core.relationalr*   $sympy.functions.elementary.complexesr+   sympy.matricesr,   r-   r.   "sympy.matrices.expressions.matexprr/   sympy.multipledispatchr0   commonr1   r2   r3   predicates.setsr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   rI   register_manyr@   rN   registerr   objectr   rL   rP   rH   <module>r     s	   % 4 4C C C C C (      $ : 9 9 < 8 7 70 0 0 W- . k=("h(:<< 4  ! 3;  ; 3   3  6 3   ]EB> C> H% & E" #   {M8b,.. D! "   c*	< +	< C   ! D   tS#s;/ </
 C / !/
   s+ ,
   s+3 ,3 d# $ e$ % S${BH ]H6FG H   8 8  & @ @D S#& '  
 6 6 [-?; @; ' ( $$X/?@ A $$S#s3A 4A V$* %*
 S!= "= S! "0 S!  "  !!#s+  , 
 S!  " 
 Z( )" S#r=#v"c *:; < 4  ! S); *; 3;  ;
 ]EB> C> 3   ]+ , T" # S! "0 S! "& S!5 "5n S! "  S!< "< !!&,7- 8- S! "   (/ )/   %A &A   % &0   %  & $   , -" !!/5+%'' !!/4b !!#s+= ,= S! "* X& ' !!$c3</ =/
 S!/ "/
 !!$, -
 !!$,3 -3rP   