
    Ed
]                     r   d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZ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!m"Z"m#Z#m$Z$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/ dd	l0m1Z1 dd
l2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF d ZG e=jH        eIe          d             ZJ e=jH        eeeeeeee          d             ZJ e=jK        e          d             ZJ e=jH        ee	          d             ZJ e=jK        e          d             ZJ e=jK        e           d             ZJ e=jH        e3e7e5          d             ZJ e>jK        e          d             ZJ e>jK        e          d             ZJ e>jH        eeeeeee          d             ZJ e>jK        e          d             ZJ e>jH        ee          d             ZJ e>jK        e	          d             ZJ e>jH        e#e$e%e+e,          d             ZJ e>jK        e'          d              ZJ e>jH        e"e&          d!             ZJ e>jH        e!e)          d"             ZJ e?jK        e          d#             ZJ e?jK        e          d$             ZJd% ZL e@jH        e eeee(eee*e	  	        d&             ZJ e@jH        eee          d'             ZJ e@jK        e          d(             ZJ e@jK        e          d)             ZJ e@jK        e          d*             ZJ e@jK        e	          d+             ZJ e@jH        e%e+          d,             ZJ e@jK        e'          d-             ZJ e@jK        e)          d.             ZJ e@jH        e3e7e5          d/             ZJ eAjK        eM          d0             ZJ eAjH        ee          d1             ZJ eAjH        eee	          d2             ZJ eBjK        eM          d3             ZJ eBjK        e          d4             ZJ eBjK        e          d5             ZJ eBjK        e	          d6             ZJ eBjH        e%e+          d7             ZJ eBjK        e'          d8             ZJ eBjK        e4          d9             ZJ eCjH        e e%e'e(ee)eee*e+
  
        d:             ZJ eCjH        ee          d;             ZJ eCjK        e          d<             ZJ eCjH        ee          d=             ZJ eCjK        e	          d>             ZJ eCjH        e3e7e5          d?             ZJ eCjK        e          d@             ZJdA ZN eDjK        e          dB             ZJ eDjK        e          dC             ZJ eDjK        e          dD             ZJ eDjK        e          dE             ZJ eDjK        e	          dF             ZJ eDjK        e)          dG             ZJ eDjK        e'          dH             ZJ eDjH        ee          dI             ZJ eDjK        e          dJ             ZJ eEjK        eM          dK             ZJ eEjK        e          dL             ZJ eEjK        e          dM             ZJ eEjK        e	          dN             ZJ eEjK        e4          dO             ZJ eFjH        eeeee          dP             ZJ eFjH        eeeee          dQ             ZJ eFjH        ee          dR             ZJ eFjK        e	          dS             ZJ eFjK        e          dT             ZJ eFjH        e#e$e%e+e,          dU             ZJ eFjK        e'          dV             ZJ eFjH        e"e&          dW             ZJ eFjH        e!e)          dX             ZJdYS )ZzL
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   )
IntegerPredicateRationalPredicateIrrationalPredicateRealPredicateExtendedRealPredicateHermitianPredicateComplexPredicateImaginaryPredicateAntihermitianPredicateAlgebraicPredicatec                     	 t          |                                           }| |z
                      d          st          dS # t          $ r Y dS w xY w)Nr   TF)introundequals	TypeErrorexprassumptionsis      ?lib/python3.11/site-packages/sympy/assumptions/handlers/sets.py_IntegerPredicate_numberrI      sb    	DJJLL!!A1H$$Q''  4 	 	 	55	s   A A 
AAc                     dS NT rE   rF   s     rH   _rN   (       4    c                     dS NFrL   rM   s     rH   rN   rN   ,   	     5rP   c                 &    | j         }|t          |S N)
is_integerr1   rE   rF   rets      rH   rN   rN   1       
/C
 $##JrP   c                 f    | j         rt          | |          S t          | |t          j                  S )zw
    * Integer + Integer       -> Integer
    * Integer + !Integer      -> !Integer
    * !Integer + !Integer -> ?
    )	is_numberrI   r3   r   integerrM   s     rH   rN   rN   8   s2     ~ ;'k:::T;	:::rP   c                 z   | j         rt          | |          S d}| j        D ]}t          t	          j        |          |          su|j        rA|j        dk    r't          t	          j        d| z            |          c S |j        dz   r dS lt          t	          j	        |          |          r|rd} dS  dS |S )z
    * Integer*Integer      -> Integer
    * Integer*Irrational   -> !Integer
    * Odd/Even             -> !Integer
    * Integer*Rational     -> ?
    Tr4   r2   NF)
r[   rI   argsr   r   r\   is_Rationalqeven
irrational)rE   rF   _outputargs       rH   rN   rN   C   s     ~ ;'k:::Gy  19S>>;// 	 5A: <qvaf~~{;;;;;UQY<  44 Q\#&&44  #GGFF	 NrP   c                 \    t          t          j        | j        d                   |          S Nr   )r   r   r\   r^   rM   s     rH   rN   rN   _   s"    qy1&&444rP   c                 \    t          t          j        | j        d                   |          S rf   )r   r   integer_elementsr^   rM   s     rH   rN   rN   c   #    q!$)A,//===rP   c                     dS rK   rL   rM   s     rH   rN   rN   j   rO   rP   c                     d S rU   rL   rM   s     rH   rN   rN   n   rO   rP   c                     dS rR   rL   rM   s     rH   rN   rN   r   rS   rP   c                 &    | j         }|t          |S rU   )is_rationalr1   rW   s      rH   rN   rN   w   s    

C
 $##JrP   c                 ~    | j         r|                                 d         rdS t          | |t          j                  S )z}
    * Rational + Rational     -> Rational
    * Rational + !Rational    -> !Rational
    * !Rational + !Rational   -> ?
    r2   F)r[   as_real_imagr3   r   rationalrM   s     rH   rN   rN   ~   s@     ~ q! 	5T;
;;;rP   c                    | j         t          k    rN| j        }t          t	          j        |          |          r#t          t	          j        |           |          S dS t          t	          j        | j                  |          r't          t	          j        | j                   |          S t          t	          j        | j                  |          r)t          t	          j        | j                   |          rdS dS dS )z
    * Rational ** Integer      -> Rational
    * Irrational ** Rational   -> Irrational
    * Rational ** Irrational   -> ?
    NF)	baser   r$   r   r   rq   nonzeror\   primerE   rF   xs      rH   rN   rN      s     yA~ Hqz!}}k** 	3	!}k222
19TX,, 1:di((+666	QZ!!;	/	/ qwty!!;// 	5 	 	rP   c                     | j         d         }t          t          j        |          |          r#t          t          j        |           |          S d S rf   r^   r   r   rq   rt   rv   s      rH   rN   rN      sK    	!A
1:a==+&& /AIaLL=+.../ /rP   c                     | j         }t          t          j        |          |          r#t          t          j        |           |          S d S rU   )r$   r   r   rq   rt   rv   s      rH   rN   rN      sG    A
1:a==+&& /AIaLL=+.../ /rP   c                 h    | j         d         }t          t          j        |          |          rdS d S Nr   F)r^   r   r   rq   rv   s      rH   rN   rN      s6    	!A
1:a==+&& u rP   c                     | j         d         }t          t          j        |          |          r&t          t          j        |dz
             |          S d S Nr   r2   ry   rv   s      rH   rN   rN      sR    	!A
1:a==+&& 3AIa!e$$$k2223 3rP   c                 &    | j         }|t          |S rU   )is_irrationalr1   rW   s      rH   rN   rN      s    

C
 $##JrP   c                     t          t          j        |           |          }|r)t          t          j        |           |          }|d S | S |S rU   )r   r   realrq   )rE   rF   _real	_rationals       rH   rN   rN      sT    tk**E 
4((+66	 	4}rP   c                 |    |                                  d                             d          }|j        dk    r| S d S )Nr2   r4   rp   evalf_precrD   s      rH   _RealPredicate_numberr      G     	A$$Q''Aw!| u rP   c                     dS rK   rL   rM   s     rH   rN   rN      	     4rP   c                     dS rR   rL   rM   s     rH   rN   rN          5rP   c                 &    | j         }|t          |S rU   )is_realr1   rW   s      rH   rN   rN      s    
,C
 $##JrP   c                 f    | j         rt          | |          S t          | |t          j                  S )zT
    * Real + Real              -> Real
    * Real + (Complex & !Real) -> !Real
    )r[   r   r3   r   r   rM   s     rH   rN   rN      s2     ~ 8$T;777T;777rP   c                     | j         rt          | |          S d}| j        D ]O}t          t	          j        |          |          r%t          t	          j        |          |          r|dz  }M dS |S )zx
    * Real*Real               -> Real
    * Real*Imaginary          -> !Real
    * Imaginary*Imaginary     -> Real
    TN)r[   r   r^   r   r   r   	imaginary)rE   rF   resultrd   s       rH   rN   rN      s     ~ 8$T;777Fy  qvc{{K(( 	S!!;// 	d]FFEErP   c                    | j         rt          | |          S | j        t          k    rQt	          t          j        | j        t          z  t          z            t          j
        | j                  z  |          S | j        j        t          k    s!| j        j        r| j        j        t          k    rt	          t          j        | j        j                  |          r)t	          t          j        | j                  |          rdS | j        j        t          z  t          z  }t	          t          j        d|z            |          r7t	          t          j
        t          j        |z  | j        z            |          S dS t	          t          j        | j                  |          rUt	          t          j        | j                  |          r.t	          t          j        | j                  |          }|| S dS t	          t          j        | j                  |          r8t	          t          j        t#          | j                            |          }||S t	          t          j
        | j                  |          rt	          t          j
        | j                  |          r| j        j        rSt	          t          j        | j        j                  |          r't	          t          j        | j                  |          S t	          t          j        | j                  |          rdS t	          t          j        | j                  |          rdS t	          t          j        | j                  |          rdS dS dS dS )a  
    * Real**Integer              -> Real
    * Positive**Real             -> 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
    Tr4   NF)r[   r   rs   r   r   r   r\   r$   r*   r   r   funcis_Powr   r
   NegativeOneoddr&   r_   ra   r`   positivenegative)rE   rF   rG   r   imlogs        rH   rN   rN     s   " ~ 8$T;777yA~ 
Idhqjm$$qvdh'7'77
 
 	
 y~ !1 din6I q{49=));77 	1;tx((+66 t
 IM!OBqy1~~{++ 	Jqvq}a/$(:;;[III
1;ty!!;// qy""K00 	aeDHoo{33C wF
1;tx  +.. AKDI//== 	 L
16$)k** 
qvdh-- 		x# txz**K881:di00+>>>QYtx((+66 tQZ	**K88 tQZ	**K88 u
 
		 		 rP   c                 d    t          t          j        | j        d                   |          rdS d S Nr   T)r   r   r   r^   rM   s     rH   rN   rN   D  s3    
16$)A,-- 4 rP   c                     t          t          j        | j        t          z  t
          z            t          j        | j                  z  |          S rU   )r   r   r\   r$   r*   r   r   rM   s     rH   rN   rN   I  s>    		$(1*R-  16$(#3#33[  rP   c                 \    t          t          j        | j        d                   |          S rf   )r   r   r   r^   rM   s     rH   rN   rN   O  s"    qz$)A,''555rP   c                 \    t          t          j        | j        d                   |          S rf   )r   r   real_elementsr^   rM   s     rH   rN   rN   S  s"    qty|,,k:::rP   c                     t          t          j        |           t          j        |           z  t          j        |           z  t          j        |           z  t          j        |           z  |          S rU   )r   r   negative_infiniter   zeror   positive_infiniterM   s     rH   rN   rN   Z  sq    q"4((D!!" D!!" $T**	+
   rP   c                     dS rK   rL   rM   s     rH   rN   rN   c  rO   rP   c                 8    t          | |t          j                  S rU   )r3   r   extended_realrM   s     rH   rN   rN   g  s    T;@@@rP   c                 t    t          | t                    rd S t          t          j        |           |          S rU   )
isinstancer.   r   r   r   rM   s     rH   rN   rN   n  s1    $
## tqvd||[)))rP   c                 T    | j         rt          t          | |t          j                  S )zZ
    * Hermitian + Hermitian  -> Hermitian
    * Hermitian + !Hermitian -> !Hermitian
    )r[   r1   r3   r   	hermitianrM   s     rH   rN   rN   t  s(     ~ $##T;<<<rP   c                 :   | j         rt          d}d}| j        D ]}t          t	          j        |          |          r|dz  }n%t          t	          j        |          |          s dS t          t	          j        |           |          r|dz  }|dk    r dS |S )z
    As long as there is at most only one noncommutative term:

    * Hermitian*Hermitian         -> Hermitian
    * Hermitian*Antihermitian     -> !Hermitian
    * Antihermitian*Antihermitian -> Hermitian
    r   Tr2   Nr[   r1   r^   r   r   antihermitianr   commutativerE   rF   nccountr   rd   s        rH   rN   rN   ~  s     ~ $##GFy 
 
qs##[11 	d]FFQ[%%{33 	EEc"""K00 	qLG{ rP   c                 L   | j         rt          | j        t          k    r0t	          t          j        | j                  |          rdS t          t	          t          j        | j                  |          r)t	          t          j        | j                  |          rdS t          )z+
    * Hermitian**Integer -> Hermitian
    T)	r[   r1   rs   r   r   r   r   r$   r\   rM   s     rH   rN   rN     s    
 ~ $##yA~ $q{48$$k22 	4##
1;ty!!;// qy""K00 	4
rP   c                 n    t          t          j        | j        d                   |          rdS t          r   )r   r   r   r^   r1   rM   s     rH   rN   rN     s/    
1;ty|$$k22 t
rP   c                 b    t          t          j        | j                  |          rdS t          rK   )r   r   r   r$   r1   rM   s     rH   rN   rN     s+    
1;tx  +.. t
rP   c                 
   | j         \  }}d}t          |          D ]]}t          ||          D ]J}t          t          | ||f         t	          | ||f                                       }|d }|dk    r  dS K^|t
          |S NTFshaperanger   r+   r,   r1   matrF   rowscolsret_valrG   jconds           rH   rN   rN     s    JD$G4[[  q$ 	 	AbQTIc!Q$i,@,@AABBD u} uuu		  $##NrP   c                     dS rK   rL   rM   s     rH   rN   rN     r   rP   c                     dS rR   rL   rM   s     rH   rN   rN     r   rP   c                 &    | j         }|t          |S rU   )
is_complexr1   rW   s      rH   rN   rN     rY   rP   c                 8    t          | |t          j                  S rU   )r3   r   complexrM   s     rH   rN   rN     s    T;	:::rP   c                 \    | j         t          k    rdS t          | |t          j                  S rK   )rs   r   r3   r   r   rM   s     rH   rN   rN     s)    yA~ tT;	:::rP   c                 \    t          t          j        | j        d                   |          S rf   )r   r   complex_elementsr^   rM   s     rH   rN   rN     ri   rP   c                     d S rU   rL   rM   s     rH   rN   rN     rO   rP   c                 |    |                                  d                             d          }|j        dk    r| S d S )Nr   r4   r2   r   )rE   rF   rs      rH   _Imaginary_numberr     r   rP   c                     dS rK   rL   rM   s     rH   rN   rN     rO   rP   c                 &    | j         }|t          |S rU   )is_imaginaryr1   rW   s      rH   rN   rN     s    

C
 $##JrP   c                 *   | j         rt          | |          S d}| j        D ]O}t          t	          j        |          |          r%t          t	          j        |          |          r|dz  }M dS |dk    rdS |dt          | j                  fv rdS dS )zy
    * Imaginary + Imaginary -> Imaginary
    * Imaginary + Complex   -> ?
    * Imaginary + Real      -> !Imaginary
    r   r2   TFNr[   r   r^   r   r   r   r   len)rE   rF   realsrd   s       rH   rN   rN     s     ~ 4 {333Ey  q{3-- 	k** 	QJEEEEA: 	4QDI'' 	5	 	rP   c                    | j         rt          | |          S d}d}| j        D ]O}t          t	          j        |          |          r|dz  }*t          t	          j        |          |          s dS P|t          | j                  k    rdS |S )zN
    * Real*Imaginary      -> Imaginary
    * Imaginary*Imaginary -> Real
    Fr   TNr   )rE   rF   r   r   rd   s        rH   rN   rN     s     ~ 4 {333FEy  q{3-- 	d]FFQVC[[+.. 	EE	 C	NN" 	5rP   c                    | j         rt          | |          S | j        t          k    rR| j        t
          z  t          z  }t          t          j	        d|z            t          j	        |           z  |          S | j        j
        t          k    s!| j        j        r| j        j        t          k    rt          t          j        | j        j                  |          rt          t          j        | j                  |          rdS | j        j        t
          z  t          z  }t          t          j	        d|z            |          r7t          t          j        t          j        |z  | j        z            |          S t          t          j        | j                  |          rTt          t          j	        | j                  |          r-t          t          j        | j                  |          }||S dS t          t          j        | j                  |          r8t          t          j        t!          | j                            |          }|dS t          t          j        | j                  t          j        | j                  z  |          rt          t          j        | j                  |          rdS t          t          j        | j                  |          }|s|S t          t          j	        | j                  |          rdS t          t          j	        d| j        z            |          }|r't          t          j        | j                  |          S |S dS )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
    r4   FN)r[   r   rs   r   r$   r*   r   r   r   r\   r   r   r   r
   r   r   r&   r   r   rq   r   )rE   rF   arG   r   r   rathalfs           rH   rN   rN   +  s    ~ 4 {333yA~ @HQJrM19QqS>>QYq\\M1;???y~ S!1 Sdin6I Sq{49=));77 	S1;tx((+66 u	a"A19QqS>>;// S1;q(848'CDDkRRR
1;ty!!;// qy""K00 	aeDHoo{33C 
F
1;tx  +.. AKDI//== 	5
16$)qvdh///== qz$)$$k22 	5aj**K88C 
19TX&&44 u19QtxZ00+>> Cqz$)44kBBB rP   c                    t          t          j        | j        d                   |          r1t          t          j        | j        d                   |          rdS d S | j        d         j        t          k    s-| j        d         j        r>| j        d         j        t          k    r#| j        d         j        t          t           fv rdS t          t          j        | j        d                   |          }|du rdS d S )Nr   FT)r   r   r   r^   r   r   r$   r   rs   r   r*   r   )rE   rF   r%   s      rH   rN   rN   c  s    
16$)A,-- qz$)A,''55 	5
 y|C DIaL$7 DIaL<MQR<R 9Q<A2w& 	4	Q[1&&	4	4B	U{ u rP   c                     | j         t          z  t          z  }t          t	          j        d|z            t	          j        |           z  |          S )Nr4   )r$   r*   r   r   r   r\   )rE   rF   r   s      rH   rN   rN   t  s<    
2Aqy1~~1-{;;;rP   c                 @    |                                  d         dk     S )Nr2   r   )rp   rM   s     rH   rN   rN   y  s!    !!##A&!+,,rP   c                     d S rU   rL   rM   s     rH   rN   rN   }  rO   rP   c                     t          | t                    rd S t          t          j        |           |          rdS t          t          j        |           |          S rK   )r   r.   r   r   r   r   rM   s     rH   rN   rN     sR    $
## t
16$<<%% tq{4  +...rP   c                 T    | j         rt          t          | |t          j                  S )zr
    * Antihermitian + Antihermitian  -> Antihermitian
    * Antihermitian + !Antihermitian -> !Antihermitian
    )r[   r1   r3   r   r   rM   s     rH   rN   rN     s(     ~ $##T;@@@rP   c                 :   | j         rt          d}d}| j        D ]}t          t	          j        |          |          r|dz  }n%t          t	          j        |          |          s dS t          t	          j        |           |          r|dz  }|dk    r dS |S )z
    As long as there is at most only one noncommutative term:

    * Hermitian*Hermitian         -> !Antihermitian
    * Hermitian*Antihermitian     -> Antihermitian
    * Antihermitian*Antihermitian -> !Antihermitian
    r   FTr2   Nr   r   s        rH   rN   rN     s     ~ $##GFy 
 
qs##[11 	d]FFQ[%%{33 	EEc"""K00 	qLG{ rP   c                    | j         rt          t          t          j        | j                  |          r*t          t          j        | j                  |          rdS nyt          t          j        | j                  |          rRt          t          j	        | j                  |          rdS t          t          j
        | j                  |          rdS t          )z
    * Hermitian**Integer  -> !Antihermitian
    * Antihermitian**Even -> !Antihermitian
    * Antihermitian**Odd  -> Antihermitian
    FT)r[   r1   r   r   r   rs   r\   r$   r   ra   r   rM   s     rH   rN   rN     s     ~ $##
1;ty!!;// qy""K00 	5		Q_TY''	5	5 qvdh-- 	5tx+.. 	4
rP   c                    | j         \  }}d}t          |          D ]^}t          ||          D ]K}t          t          | ||f         t	          | ||f                                        }|d }|dk    r  dS L_|t
          |S r   r   r   s           rH   rN   rN     s    JD$G4[[  q$ 	 	AbQTYs1a4y-A-A,ABBCCD u} uuu		  $##NrP   c                     dS rK   rL   rM   s     rH   rN   rN     r   rP   c                     dS rR   rL   rM   s     rH   rN   rN     rS   rP   c                 8    t          | |t          j                  S rU   )r3   r   	algebraicrM   s     rH   rN   rN     s    T;<<<rP   c                 *   | j         t          k    rQt          t          j        | j                  |          r(t          t          j        | j                   |          S d S | j        j        o&t          t          j        | j                   |          S rU   )rs   r   r   r   r   r$   rt   r_   rM   s     rH   rN   rN     sx    yA~ q{48$$k22 	:	$(+++[9998LCDI(>(>$L$LLrP   c                     | j         dk    S rf   )r`   rM   s     rH   rN   rN     s    6Q;rP   c                     | j         d         }t          t          j        |          |          r#t          t          j        |           |          S d S rf   r^   r   r   r   rt   rv   s      rH   rN   rN     sK    	!A
1;q>>;'' /AIaLL=+.../ /rP   c                     | j         }t          t          j        |          |          r#t          t          j        |           |          S d S rU   )r$   r   r   r   rt   rv   s      rH   rN   rN     sG    A
1;q>>;'' /AIaLL=+.../ /rP   c                 h    | j         d         }t          t          j        |          |          rdS d S r|   )r^   r   r   r   rv   s      rH   rN   rN     s6    	!A
1;q>>;'' u rP   c                     | j         d         }t          t          j        |          |          r&t          t          j        |dz
             |          S d S r~   r   rv   s      rH   rN   rN      sR    	!A
1;q>>;'' 3AIa!e$$$k2223 3rP   N)O__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.matexprr0   sympy.multipledispatchr1   commonr3   predicates.setsr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   rI   register_manyr@   rN   registerr   objectr   rL   rP   rH   <module>r      s5    % $ $ $ $ $ $ $ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C ( ' ' ' ' '                                          $ $ $ $ $ $ : : : : : : 9 9 9 9 9 9 9 9 9 9 < < < < < < 8 8 8 8 8 8 % % % % % %0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0    W--  .-  k=("h(:< < < < 4    !   S)); ; *); 3   6 35 5  5  ]EBB> > CB> H%%  &% E""  #" ! {M8b,. . . . D!!  "! ! c**	< 	< +*	< C    ! $ ! tS#s;;/ / <;/
 C  / / ! /
 ! s++  ,+
 ! s++3 3 ,+3 d##  $# e$$  %$   S${BH    ]H6FGG  HG    8 8 8   & = = =~ S#&&  '&   
 6 6 6 [-??; ; @?;  ''  (' %$X/?@@  A@ %$S#s33A A 43A V$$* * %$*
 S!!= = "!= S!!  "!0 S!!    "!  "!#s++    ,+ 
 S!!    "! 
 Z((  )("  S#r=#v"c     *:;;  <; 4    !   S)); ; *); 3; ;  ;
  ]EBB> > CB> 3      ]++  ,+ T""  #" S!!  "!0 S!!  "!& S!!5 5 "!5n S!!  "!  S!!< < "!< "!&,77- - 87- S!!  "! ! ((/ / )(/ ! %%A A &%A ! %%  &%0 ! %%    &% $ ! ,,  -," "!/5+%' ' ' ' "!/4b    "!#s++= = ,+= S!!M M "!M X&&  '& "!$c3<</ / =</
 S!!/ / "!/
 "!$,,  -,
 "!$,,3 3 -,3 3 3rP   