
    g1W              	       \   d Z ddlmZ ddl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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  dd	l!m"Z" dd
l#m$Z$ 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d Z7 e*jp                  e      d        Z9 e+jp                  e      d        Z9 e+jp                  e      d        Z9 e+jp                  e      d        Z9 e+jp                  e      d        Z9 e+jt                  ee      d        Z9 e+jt                  ee      d        Z9 e+jp                  e      d        Z9 e+jp                  e      d        Z9 e,jp                  e      d        Z9 e,jp                  e      d        Z9 e,jp                  e      d        Z9 e,jp                  e      d        Z9 e,jt                  ee      d        Z9 e,jp                  e      d        Z9 e,jp                  e      d        Z9 e,jp                  e      d         Z9 e,jp                  e      d!        Z9 e,jp                  e	      d"        Z9 e,jp                  e      d#        Z9 e,jp                  e      d$        Z9 e,jp                  e      d%        Z9 e-jp                  e      d&        Z9 e-jp                  e      d'        Z9 e-jp                  e      d(        Z9 e-jp                  e      d)        Z9 e-jp                  e      d*        Z9 e-jp                  e      d+        Z9 e-jt                  ee      d,        Z9 e-jp                  e      d-        Z9 e-jp                  e       d.        Z9 e.jp                  e      d/        Z9 e.jp                  e      d0        Z9 e.jp                  e      d1        Z9 e.jt                  ee      d2        Z9 e.jp                  e      d3        Z9 e.jt                  e"e      d4        Z9 e.jp                  e      d5        Z9 e.jp                  e       d6        Z9 e/jp                  e      d7        Z9 e/jp                  e      d8        Z9 e/jp                  e      d9        Z9 e/jp                  e      d:        Z9 e/jp                  e      d;        Z9 e/jt                  ee      d<        Z9 e/jp                  e      d=        Z9 e0jp                  e      d>        Z9 e0jp                  e      d?        Z9 e0jp                  e      d@        Z9 e0jp                  e      dA        Z9 e0jp                  e      dB        Z9 e0jp                  e      dC        Z9 e0jp                  e      dD        Z9 e0jt                  ee      dE        Z9 e0jp                  e      dF        Z9 e1jp                  e      dG        Z9 e1jp                  e      dH        Z9 e1jp                  e      dI        Z9 e1jp                  e      dJ        Z9 e1jt                  ee      dK        Z9 e1jp                  e      dL        Z9 e1jp                  e      dM        Z9 e1jp                  e      dN        Z9 e1jp                  e      dO        Z9 e1jp                  e       dP        Z9 e2jp                  e      dQ        Z9 e2jp                  e      dR        Z9 e2jp                  e      dS        Z9 e2jp                  e      dT        Z9 e2jt                  ee      dU        Z9 e2jp                  e      dV        Z9 e2jp                  e      dW        Z9 e2jp                  e      dX        Z9 e2jp                  e      dY        Z9 e2jp                  e       dZ        Z9d[ Z; e3jp                  e      d\        Z9 e3jp                  e      d]        Z9 e3jp                  e      d^        Z9 e3jp                  e      d_        Z9 e3jp                  e      d`        Z9 e3jt                  ee      da        Z9 e3jp                  e      db        Z9 e3jt                  eeee      dc        Z9 e3jp                  e       dd        Z9de Z<df Z=dg Z> e4jt                  eeeee      dh        Z9 e4jp                  e      di        Z9 e4jt                  eee      dj        Z9 e4jp                  e      dk        Z9 e4jp                  e      dl        Z9 e4jp                  e      dm        Z9 e5jt                  ee eeee      dn        Z9 e5jp                  e      do        Z9 e5jp                  e      dp        Z9 e5jp                  e      dq        Z9 e5jp                  e      dr        Z9 e6jt                  ee eeeee      ds        Z9 e6jp                  e      dt        Z9 e6jp                  e      du        Z9 e6jp                  e      dv        Z9 e6jp                  e      dw        Z9 e6jp                  e"      dx        Z9yy)zzj
This module contains query handlers responsible for Matrices queries:
Square, Symmetric, Invertible etc.
    )	conjuncts)Qask)test_closed_group)
MatrixBase)BlockMatrixBlockDiagMatrixDeterminant
DiagMatrixDiagonalMatrixHadamardProductIdentityInverseMatAddMatMulMatPow
MatrixExprMatrixSliceMatrixSymbol	OneMatrixTrace	Transpose
ZeroMatrix)reblock_2x2)Factorization)DFT)	fuzzy_and)sift)Basic   )SquarePredicateSymmetricPredicateInvertiblePredicateOrthogonalPredicateUnitaryPredicateFullRankPredicatePositiveDefinitePredicateUpperTriangularPredicateLowerTriangularPredicateDiagonalPredicateIntegerElementsPredicateRealElementsPredicateComplexElementsPredicatec                 "    | |j                   v ryy NT)
predicates	predicateexprassumptionss      X/var/www/openai/venv/lib/python3.12/site-packages/sympy/assumptions/handlers/matrices.py_Factorizationr6      s    DOO# $    c                 @    | j                   d   | j                   d   k(  S Nr      shaper3   r4   s     r5   _r>   #   s    ::a=DJJqM))r7   c           	         | j                         \  }}t        fd|j                  D              ryt        t	        j
                  |             ryt        |j                        dk\  ru|j                  d   |j                  d   j                  k(  rKt        |j                        dk(  ryt        t	        j                  t        |j                  dd              S y y )Nc              3   \   K   | ]#  }t        t        j                  |             % y wNr   r   	symmetric.0argr4   s     r5   	<genexpr>z_.<locals>.<genexpr>-   s"     
C#3q{{3-   ),Tr    r   r:   )
as_coeff_mmulallargsr   r   diagonallenTrC   r   r3   r4   factormmuls    `  r5   r>   r>   *   s    %%'LFD

C
CC 1::d[)
499~tyy|tyy}>tyy>Q1;;vtyy278+FF  ?r7   c                 0   | j                   \  }}t        t        j                  |      |      }|sy t        t        j                  |       |      }|s$|dk(  r>t        t        j
                  |      |      rt        t        j                  |      |      S y NF)rL   r   r   integernegative
invertiblerC   r3   r4   baseexpint_expnon_negatives         r5   r>   r>   8   sx     		ID#!))C.+.G

3'5L-T 2K@1;;t$k22r7   c                 @    t        fd| j                  D              S )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   rB   rD   s     r5   rG   z_.<locals>.<genexpr>G   s"     GYcs1;;s#[1YrH   rK   rL   r=   s    `r5   r>   r>   E   s    GTYYGGGr7   c                     | j                   syt        t        j                  |       |      ryt        j                  |       t        |      v ryy NFT)	is_squarer   r   rM   rC   r   r=   s     r5   r>   r>   I   sB    >> 1::d[){{4Ik22 3r7   c                 @    t        t        j                  |       |      S rA   )r   r   squarer=   s     r5   r>   r>   T   s    qxx~{++r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   rC   rF   r=   s     r5   r>   r>   X   s    q{{488$k22r7   c                     t        t        j                  |       |      ry| j                  sy t        t        j                  | j
                        |      S r/   )r   r   rM   on_diagrC   parentr=   s     r5   r>   r>   \   s>     1::d[)<<1;;t{{+[99r7   c                      yr/    r=   s     r5   r>   r>   g       r7   c                     | j                         \  }}t        fd|j                  D              ryt        fd|j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   r   rW   rD   s     r5   rG   z_.<locals>.<genexpr>q   s"     
D)33q||C +.)rH   Tc              3   `   K   | ]%  }t        t        j                  |            d u  ' ywFNrn   rD   s     r5   rG   z_.<locals>.<genexpr>s   .      "  q||C +.%7    +.FrJ   rK   rL   anyrP   s    `  r5   r>   r>   n   sK    %%'LFD

D$))
DD
 "yy" ""r7   c                     | j                   \  }}t        t        j                  |      |      }|sy |j                  dk(  rt        t        j
                  |      |      S y rT   )rL   r   r   rU   is_negativerW   r3   r4   rY   rZ   r[   s        r5   r>   r>   w   sP     		ID#!))C.+.G
%1<<%{33r7   c                      y rA   rj   r=   s     r5   r>   r>      rk   r7   c                 `    | j                   syt        j                  |       t        |      v ryy ra   )rb   r   rW   r   r=   s     r5   r>   r>      s*    >>||DY{33 4r7   c                      yr/   rj   r=   s     r5   r>   r>      rk   r7   c                      yrT   rj   r=   s     r5   r>   r>          r7   c                 N    | j                   d   dk(  xr | j                   d   dk(  S r9   r;   r=   s     r5   r>   r>      '    ::a=A4$**Q-1"44r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   rW   rF   r=   s     r5   r>   r>          q||DHH%{33r7   c                 n    | j                   sy t        t        j                  | j                        |      S rA   )rg   r   r   rW   rh   r=   s     r5   r>   r>      &    <<1<<,k::r7   c                 V    | j                   sy| j                         | j                  k(  S rT   )rb   rankrowsr=   s     r5   r>   r>      s!    >>99;$))##r7   c                     | j                   syy rT   )rb   r=   s     r5   r>   r>      s    >>r7   c                    | j                   sy| j                  dk(  r,t        t        j                  | j
                  d         |      S t        |       } | j                  dk(  r| j
                  j                         \  \  }}\  }}t        t        j                  |      |      dk(  r6t        t        j                  |||j                  z  |z  z
        |      }||S t        t        j                  |      |      dk(  r6t        t        j                  |||j                  z  |z  z
        |      }||S t        t        j                  |      |      dk(  r6t        t        j                  |||j                  z  |z  z
        |      }||S t        t        j                  |      |      dk(  r6t        t        j                  |||j                  z  |z  z
        |      }||S y )NFr:   r:   r   r   )r    r    T)	rb   
blockshaper   r   rW   blocksr   tolistI)r3   r4   ABCDrW   s          r5   r>   r>      s   >>& 1<<D 12K@@tD& ;;--/!Q!Qq||A,4Q\\!a!##gk/:KHJ%!!q||A,4Q\\!a!##gk/:KHJ%!!q||A,4Q\\!a!##gk/:KHJ%!!q||A,4Q\\!a!##gk/:KHJ%!!r7   c           
          | j                   | j                  k7  ry t        | j                  D cg c]!  }t	        t        j                  |      |      # c}      S c c}w rA   )rowblocksizescolblocksizesr   diagr   r   rW   )r3   r4   as      r5   r>   r>      sI    T///KAc!,,q/;7KLLKs   &Ac                     | j                         \  }}t        fd|j                  D              r|dk(  ryt        fd|j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   )r   r   
orthogonalrD   s     r5   rG   z_.<locals>.<genexpr>   s"     E9CCS!;/9rH   r:   Tc              3   `   K   | ]%  }t        t        j                  |            d u  ' ywrp   rn   rD   s     r5   rG   z_.<locals>.<genexpr>   rq   rr   Frs   rP   s    `  r5   r>   r>      sR    %%'LFDE499EEaK
 "yy" ""r7   c                     | j                   \  }}t        t        j                  |      |      }|rt        t        j                  |      |      S y rA   )rL   r   r   rU   r   rw   s        r5   r>   r>      sA     		ID#!))C.+.G1<<%{33r7   c                     t        | j                        dk(  r.t        t        j                  | j                  d         |      ryy y )Nr:   r   T)rN   rL   r   r   r   r=   s     r5   r>   r>      s:    DII!TYYq\*K8 9 	r7   c                     | j                   r!t        t        j                  |       |      du ryt        j                  |       t        |      v ryy ra   )rb   r   r   rW   r   r   r=   s     r5   r>   r>      sB    NNT*K8EA||DY{33 4r7   c                      yr/   rj   r=   s     r5   r>   r>      rk   r7   c                      yrT   rj   r=   s     r5   r>   r>      r|   r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   r   rF   r=   s     r5   r>   r>      r   r7   c                 n    | j                   sy t        t        j                  | j                        |      S rA   )rg   r   r   r   rh   r=   s     r5   r>   r>     r   r7   c                 8    t        t        j                  | |      S rA   )r6   r   r   r=   s     r5   r>   r>     s    !,,k::r7   c                     | j                         \  }}t        fd|j                  D              rt        |      dk(  ryt	        fd|j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   )r   r   unitaryrD   s     r5   rG   z_.<locals>.<genexpr>  s!     B	C		#,	rH   r:   Tc              3   `   K   | ]%  }t        t        j                  |            d u  ' ywrp   rn   rD   s     r5   rG   z_.<locals>.<genexpr>  rq   rr   F)rJ   rK   rL   absrt   rP   s    `  r5   r>   r>     sW    %%'LFDB		BBK1
 "yy" ""r7   c                     | j                   \  }}t        t        j                  |      |      }|rt        t        j                  |      |      S y rA   )rL   r   r   rU   r   rw   s        r5   r>   r>     s@     		ID#!))C.+.G199T?K00r7   c                     | j                   r!t        t        j                  |       |      du ryt        j                  |       t        |      v ryy ra   )rb   r   r   rW   r   r   r=   s     r5   r>   r>   "  sA    NNT*K8EAyy)K00 1r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   r   rF   r=   s     r5   r>   r>   *  s    qyy"K00r7   c                 n    | j                   sy t        t        j                  | j                        |      S rA   )rg   r   r   r   rh   r=   s     r5   r>   r>   .  s&    <<199T[[);77r7   c                      yr/   rj   r=   s     r5   r>   r>   5  rk   r7   c                      yrT   rj   r=   s     r5   r>   r>   9  r|   r7   c                 8    t        t        j                  | |      S rA   )r6   r   r   r=   s     r5   r>   r>   =  s    !))T;77r7   c                 D    t        fd| j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   )r   r   fullrankrD   s     r5   rG   z_.<locals>.<genexpr>F  !     
B	3qzz#,	rH   Tr_   r=   s    `r5   r>   r>   D      

B		
BB Cr7   c                     | j                   \  }}t        t        j                  |      |      }|r?t        t        j                  |       |      rt        t        j
                  |      |      S y rA   )rL   r   r   rU   rV   r   rw   s        r5   r>   r>   I  sU     		ID#!))C.+.G3

3'51::d#[11r7   c                      yr/   rj   r=   s     r5   r>   r>   R  rk   r7   c                      yrT   rj   r=   s     r5   r>   r>   V  r|   r7   c                 N    | j                   d   dk(  xr | j                   d   dk(  S r9   r;   r=   s     r5   r>   r>   Z  r~   r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   r   rF   r=   s     r5   r>   r>   ^      qzz$((#[11r7   c                 X    t        t        j                  | j                        |      ryy r/   )r   r   r   rh   r=   s     r5   r>   r>   b  s!    
1<<$k2 3r7   c           	         | j                         \  }}t        fd|j                  D              r|dkD  ryt        |j                        dk\  r|j                  d   |j                  d   j                  k(  r_t        t        j                  |j                  d               r2t        t        j                  t        |j                  dd              S y y y )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   r   positive_definiterD   s     r5   rG   z_.<locals>.<genexpr>m  s+      "  ##C(+6 rH   r   Tr    rI   r:   )
rJ   rK   rL   rN   rO   r   r   r   r   r   rP   s    `  r5   r>   r>   j  s    %%'LFD "yy" 	"&,qjDII!		!		"/AJJtyy|,k:1&&DIIaO$&'24 	4 ; 0 	r7   c                 ^    t        t        j                  | j                  d         |      ryy )Nr   T)r   r   r   rL   r=   s     r5   r>   r>   v  s)     1tyy|,k: ;r7   c                 D    t        fd| j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   rD   s     r5   rG   z_.<locals>.<genexpr>~  s+      "  q""3'5 rH   Tr_   r=   s    `r5   r>   r>   |  s$    
 "yy" ""r7   c                 `    | j                   syt        j                  |       t        |      v ryy ra   )rb   r   r   r   r=   s     r5   r>   r>     s,    >>4 Ik$:: ;r7   c                      yr/   rj   r=   s     r5   r>   r>     rk   r7   c                      yrT   rj   r=   s     r5   r>   r>     r|   r7   c                 N    | j                   d   dk(  xr | j                   d   dk(  S r9   r;   r=   s     r5   r>   r>     r~   r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   r   rF   r=   s     r5   r>   r>     s    q""488,k::r7   c                 n    | j                   sy t        t        j                  | j                        |      S rA   )rg   r   r   r   rh   r=   s     r5   r>   r>     s(    <<1&&t{{3[AAr7   c                 V    | j                         \  }}t        fd|D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   r   upper_triangularrE   mr4   s     r5   rG   z_.<locals>.<genexpr>  $     
EHq3q!!!$k2HrH   Tas_coeff_matricesrK   r3   r4   rQ   matricess    `  r5   r>   r>     -    --/FH

EH
EE Fr7   c                 D    t        fd| j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   rD   s     r5   rG   z_.<locals>.<genexpr>  $     
J	3q!!#&4	rH   Tr_   r=   s    `r5   r>   r>         

J		
JJ Kr7   c                 0   | j                   \  }}t        t        j                  |      |      }|sy t        t        j                  |       |      }|s$|dk(  r>t        t        j
                  |      |      rt        t        j                  |      |      S y rT   )rL   r   r   rU   rV   rW   r   rX   s         r5   r>   r>     z     		ID#!))C.+.G

3'5L-T 2K@1%%d+[99r7   c                 F    t        j                  |       t        |      v ryy r/   )r   r   r   r=   s     r5   r>   r>     "    $9[#99 :r7   c                      yr/   rj   r=   s     r5   r>   r>     rk   r7   c                 N    | j                   d   dk(  xr | j                   d   dk(  S r9   r;   r=   s     r5   r>   r>     r~   r7   c                 T    t        t        j                  | j                        |      S rA   r   r   lower_triangularrF   r=   s     r5   r>   r>         q!!$((+[99r7   c                 T    t        t        j                  | j                        |      S rA   r   r   r   rF   r=   s     r5   r>   r>     r   r7   c                 n    | j                   sy t        t        j                  | j                        |      S rA   )rg   r   r   r   rh   r=   s     r5   r>   r>     (    <<1%%dkk2K@@r7   c                 8    t        t        j                  | |      S rA   )r6   r   r   r=   s     r5   r>   r>         !,,dK@@r7   c                 V    | j                         \  }}t        fd|D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   r   r   r   s     r5   rG   z_.<locals>.<genexpr>  r   rH   Tr   r   s    `  r5   r>   r>     r   r7   c                 D    t        fd| j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   rD   s     r5   rG   z_.<locals>.<genexpr>  r   rH   Tr_   r=   s    `r5   r>   r>     r   r7   c                 0   | j                   \  }}t        t        j                  |      |      }|sy t        t        j                  |       |      }|s$|dk(  r>t        t        j
                  |      |      rt        t        j                  |      |      S y rT   )rL   r   r   rU   rV   rW   r   rX   s         r5   r>   r>     r   r7   c                 F    t        j                  |       t        |      v ryy r/   )r   r   r   r=   s     r5   r>   r>     r   r7   c                      yr/   rj   r=   s     r5   r>   r>     rk   r7   c                 N    | j                   d   dk(  xr | j                   d   dk(  S r9   r;   r=   s     r5   r>   r>     r~   r7   c                 T    t        t        j                  | j                        |      S rA   r   r=   s     r5   r>   r>     r   r7   c                 T    t        t        j                  | j                        |      S rA   r   r=   s     r5   r>   r>     r   r7   c                 n    | j                   sy t        t        j                  | j                        |      S rA   )rg   r   r   r   rh   r=   s     r5   r>   r>   
  r   r7   c                 8    t        t        j                  | |      S rA   )r6   r   r   r=   s     r5   r>   r>     r   r7   c                     | j                   dv S )N)r   r   r;   )r3   s    r5   _is_empty_or_1x1r     s    ::)))r7   c                 n    t        |       ry| j                         \  }}t        fd|D              ryy )NTc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   r   rM   r   s     r5   rG   z_.<locals>.<genexpr>   s!     
=Hq3qzz!}k*HrH   )r   r   rK   r   s    `  r5   r>   r>     s7    --/FH

=H
== >r7   c                 0   | j                   \  }}t        t        j                  |      |      }|sy t        t        j                  |       |      }|s$|dk(  r>t        t        j
                  |      |      rt        t        j                  |      |      S y rT   )rL   r   r   rU   rV   rW   rM   rX   s         r5   r>   r>   #  sx     		ID#!))C.+.G

3'5L-T 2K@1::d#[11r7   c                 D    t        fd| j                  D              ryy )Nc              3   \   K   | ]#  }t        t        j                  |             % y wrA   r   rD   s     r5   rG   z_.<locals>.<genexpr>2  r   rH   Tr_   r=   s    `r5   r>   r>   0  r   r7   c                 ^    t        |       ryt        j                  |       t        |      v ryy r/   )r   r   rM   r   r=   s     r5   r>   r>   5  s+    zz$9[11 2r7   c                 N    | j                   d   dk(  xr | j                   d   dk(  S r9   r;   r=   s     r5   r>   r>   <  r~   r7   c                 T    t        t        j                  | j                        |      S rA   )r   r   rM   rF   r=   s     r5   r>   r>   @  r   r7   c                     t        |       ry| j                  sy t        t        j                  | j
                        |      S r/   )r   rg   r   r   rM   rh   r=   s     r5   r>   r>   D  s1    <<1::dkk*K88r7   c                      yr/   rj   r=   s     r5   r>   r>   M  rk   r7   c                 8    t        t        j                  | |      S rA   )r6   r   rM   r=   s     r5   r>   r>   Q  s    !**dK88r7   c                 D     t         fd|j                  D              S )z Block Matrix elements. c              3   B   K   | ]  }t         |              y wrA   )r   )rE   br4   r2   s     r5   rG   zBM_elements.<locals>.<genexpr>Z  s     C{!s9Q<-{s   )rK   r   r1   s   ` `r5   BM_elementsr  X  s    Ct{{CCCr7   c                 :    t         | |j                        |      S )z Matrix Slice elements. )r   rh   r1   s      r5   MS_elementsr  \  s    y%{33r7   c                     t        |j                  d       }|d   |d   }}t        t        t	        | ||      t        t	        | ||       g      S )Nc                 "    t        | t              S rA   )
isinstancer   )xs    r5   <lambda>z!MatMul_elements.<locals>.<lambda>a  s    *Q
";r7   FT)r   rL   r   r   r   )matrix_predicatescalar_predicater3   r4   dfactorsr   s          r5   MatMul_elementsr  `  s\    TYY;<A%!D'XG%/;8HI%*K9IJL M Mr7   c                 8    t        | |t        j                        S rA   )r   r   integer_elementsr=   s     r5   r>   r>   h       T;0B0BCCr7   c                     | j                   \  }}t        t        j                  |      |      }|sy |j                  dk(  rt        t        j
                  |      |      S y rT   )rL   r   r   rU   rv   r  rw   s        r5   r>   r>   m  sR     		ID#!))C.+.G
%1%%d+[99r7   c                      yr/   rj   r=   s     r5   r>   r>   x  rk   r7   c                 V    t        t        j                  t        j                  | |      S rA   )r  r   r  rU   r=   s     r5   r>   r>   |      1--qyy$LLr7   c                 8    t        t        j                  | |      S rA   )r  r   r  r=   s     r5   r>   r>         q))4==r7   c                 8    t        t        j                  | |      S rA   )r  r   r  r=   s     r5   r>   r>     r  r7   c                 8    t        | |t        j                        S rA   )r   r   real_elementsr=   s     r5   r>   r>     s     T;@@r7   c                 0   | j                   \  }}t        t        j                  |      |      }|sy t        t        j                  |       |      }|s$|dk(  r>t        t        j
                  |      |      rt        t        j                  |      |      S y rT   )rL   r   r   rU   rV   rW   r  rX   s         r5   r>   r>     sx     		ID#!))C.+.G

3'5L-T 2K@1??4(+66r7   c                 V    t        t        j                  t        j                  | |      S rA   )r  r   r  realr=   s     r5   r>   r>     s    1??AFFD+FFr7   c                 8    t        t        j                  | |      S rA   )r  r   r  r=   s     r5   r>   r>         qk::r7   c                 8    t        t        j                  | |      S rA   )r  r   r  r=   s     r5   r>   r>     r#  r7   c                 8    t        | |t        j                        S rA   )r   r   complex_elementsr=   s     r5   r>   r>     r  r7   c                 0   | j                   \  }}t        t        j                  |      |      }|sy t        t        j                  |       |      }|s$|dk(  r>t        t        j
                  |      |      rt        t        j                  |      |      S y rT   )rL   r   r   rU   rV   rW   r&  rX   s         r5   r>   r>     r   r7   c                 V    t        t        j                  t        j                  | |      S rA   )r  r   r&  complexr=   s     r5   r>   r>     r  r7   c                 8    t        t        j                  | |      S rA   )r  r   r&  r=   s     r5   r>   r>     r  r7   c                 8    t        t        j                  | |      S rA   )r  r   r&  r=   s     r5   r>   r>     r  r7   c                      yr/   rj   r=   s     r5   r>   r>     rk   r7   N)?__doc__sympy.logic.boolalgr   sympy.assumptionsr   r   sympy.assumptions.handlersr   sympy.matricesr   sympy.matrices.expressionsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   &sympy.matrices.expressions.blockmatrixr   )sympy.matrices.expressions.factorizationsr   "sympy.matrices.expressions.fourierr   sympy.core.logicr   sympy.utilities.iterablesr   
sympy.corer   predicates.matricesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r6   registerr>   register_manyr   r  r  r  rj   r7   r5   <module>r<     sB  
 * $ 8 %     ? C 2 & * 5 5 5 5 *%* &* V$G %G V$
 %
 V$H %H \* + "!!)Z8, 9, "!!'953 63 [): *: X& ' f% & f% & f% & l+ , #""8W5 6 j) * i(5 )5 i(4 )4 k*; +; j)$ *$
 j) *
 k* +4 o.M /M f% & f% & f% &
 l+ , h' ( j) * #""7I64 74 k*; +; m,; -; 6" # 6" # <( )  31 41 ;'8 (8  X. / :& ' =)8 *8 F# $ F# $ H% & J' ( I&5 '5 !  )42 52 K( ) $##F+	4 ,	4 $##F+ ,
 $##F+ ,
 $##L1 2 $##H- . $##J/ 0 $##I.5 /5 )(()<; =; $##K0B 1B #""6* +
 #""6* + #""6*
 +
 #""<0 1 (''*= > #""9-5 .5 #""9-: .: #""7+: ,: #"";/A 0A #""=1A 2A
 #""6* +
 #""6* + #""6*
 +
 #""<0 1 (''*= > #""9-5 .5 #""9-: .: #""7+: ,: #"";/A 0A #""=1A 2A* F# $ F#
 $
 F# $ L) * I&5 '5 !  )42 52 K(9 )9 !  XzR S M*9 +9D4M (''_f	9DD #""6* + ('')ZH I #""6*M +M #"";/> 0> #"";/> 0> %$$[-
E9AA  '
 (
  'G (G  ,; -;  ,; -; ('']OVUI'D'D #""6*
 +
 #""6*M +M #"";/> 0> #"";/> 0> #""3' (r7   