
    \h1W              	       \   S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKJ r   SS	K!J"r"  SS
K#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6  S r7\*Rp                  " \5      S 5       r9\+Rp                  " \5      S 5       r9\+Rp                  " \5      S 5       r9\+Rp                  " \5      S 5       r9\+Rp                  " \5      S 5       r9\+Rt                  " \\5      S 5       r9\+Rt                  " \\5      S 5       r9\+Rp                  " \5      S 5       r9\+Rp                  " \5      S 5       r9\,Rp                  " \5      S 5       r9\,Rp                  " \5      S 5       r9\,Rp                  " \5      S 5       r9\,Rp                  " \5      S 5       r9\,Rt                  " \\5      S 5       r9\,Rp                  " \5      S 5       r9\,Rp                  " \5      S 5       r9\,Rp                  " \5      S  5       r9\,Rp                  " \5      S! 5       r9\,Rp                  " \	5      S" 5       r9\,Rp                  " \5      S# 5       r9\,Rp                  " \5      S$ 5       r9\,Rp                  " \5      S% 5       r9\-Rp                  " \5      S& 5       r9\-Rp                  " \5      S' 5       r9\-Rp                  " \5      S( 5       r9\-Rp                  " \5      S) 5       r9\-Rp                  " \5      S* 5       r9\-Rp                  " \5      S+ 5       r9\-Rt                  " \\5      S, 5       r9\-Rp                  " \5      S- 5       r9\-Rp                  " \ 5      S. 5       r9\.Rp                  " \5      S/ 5       r9\.Rp                  " \5      S0 5       r9\.Rp                  " \5      S1 5       r9\.Rt                  " \\5      S2 5       r9\.Rp                  " \5      S3 5       r9\.Rt                  " \"\5      S4 5       r9\.Rp                  " \5      S5 5       r9\.Rp                  " \ 5      S6 5       r9\/Rp                  " \5      S7 5       r9\/Rp                  " \5      S8 5       r9\/Rp                  " \5      S9 5       r9\/Rp                  " \5      S: 5       r9\/Rp                  " \5      S; 5       r9\/Rt                  " \\5      S< 5       r9\/Rp                  " \5      S= 5       r9\0Rp                  " \5      S> 5       r9\0Rp                  " \5      S? 5       r9\0Rp                  " \5      S@ 5       r9\0Rp                  " \5      SA 5       r9\0Rp                  " \5      SB 5       r9\0Rp                  " \5      SC 5       r9\0Rp                  " \5      SD 5       r9\0Rt                  " \\5      SE 5       r9\0Rp                  " \5      SF 5       r9\1Rp                  " \5      SG 5       r9\1Rp                  " \5      SH 5       r9\1Rp                  " \5      SI 5       r9\1Rp                  " \5      SJ 5       r9\1Rt                  " \\5      SK 5       r9\1Rp                  " \5      SL 5       r9\1Rp                  " \5      SM 5       r9\1Rp                  " \5      SN 5       r9\1Rp                  " \5      SO 5       r9\1Rp                  " \ 5      SP 5       r9\2Rp                  " \5      SQ 5       r9\2Rp                  " \5      SR 5       r9\2Rp                  " \5      SS 5       r9\2Rp                  " \5      ST 5       r9\2Rt                  " \\5      SU 5       r9\2Rp                  " \5      SV 5       r9\2Rp                  " \5      SW 5       r9\2Rp                  " \5      SX 5       r9\2Rp                  " \5      SY 5       r9\2Rp                  " \ 5      SZ 5       r9S[ r;\3Rp                  " \5      S\ 5       r9\3Rp                  " \5      S] 5       r9\3Rp                  " \5      S^ 5       r9\3Rp                  " \5      S_ 5       r9\3Rp                  " \5      S` 5       r9\3Rt                  " \\5      Sa 5       r9\3Rp                  " \5      Sb 5       r9\3Rt                  " \\\\5      Sc 5       r9\3Rp                  " \ 5      Sd 5       r9Se r<Sf r=Sg r>\4Rt                  " \\\\\5      Sh 5       r9\4Rp                  " \5      Si 5       r9\4Rt                  " \\\5      Sj 5       r9\4Rp                  " \5      Sk 5       r9\4Rp                  " \5      Sl 5       r9\4Rp                  " \5      Sm 5       r9\5Rt                  " \\ \\\\5      Sn 5       r9\5Rp                  " \5      So 5       r9\5Rp                  " \5      Sp 5       r9\5Rp                  " \5      Sq 5       r9\5Rp                  " \5      Sr 5       r9\6Rt                  " \\ \\\\\5      Ss 5       r9\6Rp                  " \5      St 5       r9\6Rp                  " \5      Su 5       r9\6Rp                  " \5      Sv 5       r9\6Rp                  " \5      Sw 5       r9\6Rp                  " \"5      Sx 5       r9gy)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                 $    XR                   ;   a  gg NT)
predicates	predicateexprassumptionss      [/var/www/auris/envauris/lib/python3.13/site-packages/sympy/assumptions/handlers/matrices.py_Factorizationr6      s    OO# $    c                 @    U R                   S   U R                   S   :H  $ Nr      shaper3   r4   s     r5   _r>   #   s    ::a=DJJqM))r7   c           	        ^ U R                  5       u  p#[        U4S jUR                   5       5      (       a  g[        [        R
                  " U 5      T5      (       a  g[        UR                  5      S:  ax  UR                  S   UR                  S   R                  :X  aM  [        UR                  5      S:X  a  g[        [        R                  " [        UR                  SS 6 5      T5      $ g g )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7fNr   r   	symmetric.0argr4   s     r5   	<genexpr>_.<locals>.<genexpr>-   s$     
C#3q{{3--   -0Tr    r   r:   )
as_coeff_mmulallargsr   r   diagonallenTrC   r   r3   r4   factormmuls    `  r5   r>   r>   *   s    %%'LF

C
CCC 1::d[))
499~tyy|tyy}>tyy>Q1;;vtyy278+FF  ?r7   c                 V   U R                   u  p#[        [        R                  " U5      U5      nU(       d  g [        [        R                  " U5      ) U5      nU(       d+  US:X  aE  [        [        R
                  " U5      U5      (       a   [        [        R                  " U5      U5      $ g NF)rM   r   r   integernegative
invertiblerC   r3   r4   baseexpint_expnon_negatives         r5   r>   r>   8   sy     		ID!))C.+.G

3'5L-T 2K@@1;;t$k22r7   c                 B   ^ [        U4S jU R                   5       5      $ )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   rB   rD   s     r5   rG   rH   G   s$     GYcs1;;s#[11YrI   rL   rM   r=   s    `r5   r>   r>   E   s    GTYYGGGr7   c                     U R                   (       d  g[        [        R                  " U 5      U5      (       a  g[        R                  " U 5      [        U5      ;   a  gg NFT)	is_squarer   r   rN   rC   r   r=   s     r5   r>   r>   I   sE    >> 1::d[)){{4Ik22 3r7   c                 B    [        [        R                  " U 5      U5      $ rA   )r   r   squarer=   s     r5   r>   r>   T   s    qxx~{++r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   rC   rF   r=   s     r5   r>   r>   X   s    q{{488$k22r7   c                     [        [        R                  " U 5      U5      (       a  gU R                  (       d  g [        [        R                  " U R
                  5      U5      $ r/   )r   r   rN   on_diagrC   parentr=   s     r5   r>   r>   \   sA     1::d[))<<1;;t{{+[99r7   c                     gr/    r=   s     r5   r>   r>   g       r7   c                    ^ U R                  5       u  p#[        U4S jUR                   5       5      (       a  g[        U4S jUR                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   r   rX   rD   s     r5   rG   rH   q   s$     
D)33q||C +..)rI   Tc              3   h   >#    U  H'  n[        [        R                  " U5      T5      S L v   M)     g7fFNro   rD   s     r5   rG   rH   s   -      "  q||C +.%7    /2FrK   rL   rM   anyrQ   s    `  r5   r>   r>   n   sQ    %%'LF

D$))
DDD
 "yy" " ""r7   c                     U R                   u  p#[        [        R                  " U5      U5      nU(       d  g UR                  S:X  a   [        [        R
                  " U5      U5      $ g rU   )rM   r   r   rV   is_negativerX   r3   r4   rZ   r[   r\   s        r5   r>   r>   w   sN     		ID!))C.+.G
%1<<%{33r7   c                     g rA   rk   r=   s     r5   r>   r>      rl   r7   c                 p    U R                   (       d  g[        R                  " U 5      [        U5      ;   a  gg rb   )rc   r   rX   r   r=   s     r5   r>   r>      s*    >>||DY{33 4r7   c                     gr/   rk   r=   s     r5   r>   r>      rl   r7   c                     grU   rk   r=   s     r5   r>   r>          r7   c                 X    U R                   S   S:H  =(       a    U R                   S   S:H  $ r9   r;   r=   s     r5   r>   r>      '    ::a=A4$**Q-1"44r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   rX   rF   r=   s     r5   r>   r>          q||DHH%{33r7   c                 z    U R                   (       d  g [        [        R                  " U R                  5      U5      $ rA   )rh   r   r   rX   ri   r=   s     r5   r>   r>      &    <<1<<,k::r7   c                 `    U R                   (       d  gU R                  5       U R                  :H  $ rU   )rc   rankrowsr=   s     r5   r>   r>      s!    >>99;$))##r7   c                 (    U R                   (       d  gg rU   )rc   r=   s     r5   r>   r>      s    >>r7   c                    U R                   (       d  gU R                  S:X  a-  [        [        R                  " U R
                  S   5      U5      $ [        U 5      n U R                  S:X  Ga  U R
                  R                  5       u  u  p#u  pE[        [        R                  " U5      U5      S:X  a7  [        [        R                  " XTUR                  -  U-  -
  5      U5      nUb  U$ [        [        R                  " U5      U5      S:X  a7  [        [        R                  " XEUR                  -  U-  -
  5      U5      nUb  U$ [        [        R                  " U5      U5      S:X  a7  [        [        R                  " X2UR                  -  U-  -
  5      U5      nUb  U$ [        [        R                  " U5      U5      S:X  a7  [        [        R                  " X#UR                  -  U-  -
  5      U5      nUb  U$ g )NFr:   r:   r   r   )r    r    T)	rc   
blockshaper   r   rX   blocksr   tolistI)r3   r4   ABCDrX   s          r5   r>   r>      s   >>& 1<<D 12K@@tD& ;;--/!!q||A,4Q\\!!##gk/:KHJ%!!q||A,4Q\\!!##gk/:KHJ%!!q||A,4Q\\!!##gk/:KHJ%!!q||A,4Q\\!!##gk/:KHJ%!!r7   c           
          U R                   U R                  :w  a  g [        U R                   Vs/ s H#  n[	        [
        R                  " U5      U5      PM%     sn5      $ s  snf rA   )rowblocksizescolblocksizesr   diagr   r   rX   )r3   r4   as      r5   r>   r>      sI    T///KAc!,,q/;7KLLKs   *A c                    ^ U R                  5       u  p#[        U4S jUR                   5       5      (       a  US:X  a  g[        U4S jUR                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   )r   r   
orthogonalrD   s     r5   rG   rH      s$     E9CCS!;//9rI   r:   Tc              3   h   >#    U  H'  n[        [        R                  " U5      T5      S L v   M)     g7frq   ro   rD   s     r5   rG   rH      rr   rs   Frt   rQ   s    `  r5   r>   r>      sX    %%'LFE499EEEaK
 "yy" " ""r7   c                     U R                   u  p#[        [        R                  " U5      U5      nU(       a   [        [        R                  " U5      U5      $ g rA   )rM   r   r   rV   r   rx   s        r5   r>   r>      s?     		ID!))C.+.G1<<%{33r7   c                     [        U R                  5      S:X  a4  [        [        R                  " U R                  S   5      U5      (       a  gg g )Nr:   r   T)rO   rM   r   r   r   r=   s     r5   r>   r>      s=    DII!TYYq\*K88 9 	r7   c                     U R                   (       a#  [        [        R                  " U 5      U5      SL a  g[        R                  " U 5      [        U5      ;   a  gg rb   )rc   r   r   rX   r   r   r=   s     r5   r>   r>      sB    NNT*K8EA||DY{33 4r7   c                     gr/   rk   r=   s     r5   r>   r>      rl   r7   c                     grU   rk   r=   s     r5   r>   r>      r}   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   r   rF   r=   s     r5   r>   r>      r   r7   c                 z    U R                   (       d  g [        [        R                  " U R                  5      U5      $ rA   )rh   r   r   r   ri   r=   s     r5   r>   r>     r   r7   c                 6    [        [        R                  X5      $ rA   )r6   r   r   r=   s     r5   r>   r>     s    !,,::r7   c                    ^ U R                  5       u  p#[        U4S jUR                   5       5      (       a  [        U5      S:X  a  g[	        U4S jUR                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   )r   r   unitaryrD   s     r5   rG   rH     s#     B	C		#,,	rI   r:   Tc              3   h   >#    U  H'  n[        [        R                  " U5      T5      S L v   M)     g7frq   ro   rD   s     r5   rG   rH     rr   rs   F)rK   rL   rM   absru   rQ   s    `  r5   r>   r>     s]    %%'LFB		BBBK1
 "yy" " ""r7   c                     U R                   u  p#[        [        R                  " U5      U5      nU(       a   [        [        R                  " U5      U5      $ g rA   )rM   r   r   rV   r   rx   s        r5   r>   r>     s>     		ID!))C.+.G199T?K00r7   c                     U R                   (       a#  [        [        R                  " U 5      U5      SL a  g[        R                  " U 5      [        U5      ;   a  gg rb   )rc   r   r   rX   r   r   r=   s     r5   r>   r>   "  sA    NNT*K8EAyy)K00 1r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   r   rF   r=   s     r5   r>   r>   *  s    qyy"K00r7   c                 z    U R                   (       d  g [        [        R                  " U R                  5      U5      $ rA   )rh   r   r   r   ri   r=   s     r5   r>   r>   .  s&    <<199T[[);77r7   c                     gr/   rk   r=   s     r5   r>   r>   5  rl   r7   c                     grU   rk   r=   s     r5   r>   r>   9  r}   r7   c                 6    [        [        R                  X5      $ rA   )r6   r   r   r=   s     r5   r>   r>   =  s    !))T77r7   c                 P   ^ [        U4S jU R                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   )r   r   fullrankrD   s     r5   rG   rH   F  #     
B	3qzz#,,	rI   Tr`   r=   s    `r5   r>   r>   D  !    

B		
BBB Cr7   c                     U R                   u  p#[        [        R                  " U5      U5      nU(       aF  [        [        R                  " U5      ) U5      (       a   [        [        R
                  " U5      U5      $ g rA   )rM   r   r   rV   rW   r   rx   s        r5   r>   r>   I  sV     		ID!))C.+.G3

3'551::d#[11r7   c                     gr/   rk   r=   s     r5   r>   r>   R  rl   r7   c                     grU   rk   r=   s     r5   r>   r>   V  r}   r7   c                 X    U R                   S   S:H  =(       a    U R                   S   S:H  $ r9   r;   r=   s     r5   r>   r>   Z  r   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   r   rF   r=   s     r5   r>   r>   ^      qzz$((#[11r7   c                 d    [        [        R                  " U R                  5      U5      (       a  gg r/   )r   r   r   ri   r=   s     r5   r>   r>   b  s$    
1<<$k22 3r7   c           	        ^ U R                  5       u  p#[        U4S jUR                   5       5      (       a  US:  a  g[        UR                  5      S:  a  UR                  S   UR                  S   R                  :X  af  [        [        R                  " UR                  S   5      T5      (       a3  [        [        R                  " [        UR                  SS 6 5      T5      $ g g g )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   r   positive_definiterD   s     r5   rG   rH   m  s-      "  ##C(+66 rI   r   Tr    rJ   r:   )
rK   rL   rM   rO   rP   r   r   r   r   r   rQ   s    `  r5   r>   r>   j  s    %%'LF "yy" 	" 	"&,qjDII!		!		"/AJJtyy|,k::1&&DIIaO$&'24 	4 ; 0 	r7   c                 j    [        [        R                  " U R                  S   5      U5      (       a  gg )Nr   T)r   r   r   rM   r=   s     r5   r>   r>   v  s,     1tyy|,k:: ;r7   c                 P   ^ [        U4S jU R                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   rD   s     r5   rG   rH   ~  s-      "  q""3'55 rI   Tr`   r=   s    `r5   r>   r>   |  s)    
 "yy" " ""r7   c                 p    U R                   (       d  g[        R                  " U 5      [        U5      ;   a  gg rb   )rc   r   r   r   r=   s     r5   r>   r>     s,    >>4 Ik$:: ;r7   c                     gr/   rk   r=   s     r5   r>   r>     rl   r7   c                     grU   rk   r=   s     r5   r>   r>     r}   r7   c                 X    U R                   S   S:H  =(       a    U R                   S   S:H  $ r9   r;   r=   s     r5   r>   r>     r   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   r   rF   r=   s     r5   r>   r>     s    q""488,k::r7   c                 z    U R                   (       d  g [        [        R                  " U R                  5      U5      $ rA   )rh   r   r   r   ri   r=   s     r5   r>   r>     s(    <<1&&t{{3[AAr7   c                 `   ^ U R                  5       u  p#[        U4S jU 5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   r   upper_triangularrE   mr4   s     r5   rG   rH     &     
EHq3q!!!$k22HrI   Tas_coeff_matricesrL   r3   r4   rR   matricess    `  r5   r>   r>     .    --/F

EH
EEE Fr7   c                 P   ^ [        U4S jU R                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   rD   s     r5   rG   rH     &     
J	3q!!#&44	rI   Tr`   r=   s    `r5   r>   r>     !    

J		
JJJ Kr7   c                 V   U R                   u  p#[        [        R                  " U5      U5      nU(       d  g [        [        R                  " U5      ) U5      nU(       d+  US:X  aE  [        [        R
                  " U5      U5      (       a   [        [        R                  " U5      U5      $ g rU   )rM   r   r   rV   rW   rX   r   rY   s         r5   r>   r>     {     		ID!))C.+.G

3'5L-T 2K@@1%%d+[99r7   c                 L    [         R                  " U 5      [        U5      ;   a  gg r/   )r   r   r   r=   s     r5   r>   r>     "    $9[#99 :r7   c                     gr/   rk   r=   s     r5   r>   r>     rl   r7   c                 X    U R                   S   S:H  =(       a    U R                   S   S:H  $ r9   r;   r=   s     r5   r>   r>     r   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   r   r   lower_triangularrF   r=   s     r5   r>   r>         q!!$((+[99r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   r   r   r   rF   r=   s     r5   r>   r>     r   r7   c                 z    U R                   (       d  g [        [        R                  " U R                  5      U5      $ rA   )rh   r   r   r   ri   r=   s     r5   r>   r>     (    <<1%%dkk2K@@r7   c                 6    [        [        R                  X5      $ rA   )r6   r   r   r=   s     r5   r>   r>         !,,d@@r7   c                 `   ^ U R                  5       u  p#[        U4S jU 5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   r   r   r   s     r5   rG   rH     r   rI   Tr   r   s    `  r5   r>   r>     r   r7   c                 P   ^ [        U4S jU R                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   rD   s     r5   rG   rH     r   rI   Tr`   r=   s    `r5   r>   r>     r   r7   c                 V   U R                   u  p#[        [        R                  " U5      U5      nU(       d  g [        [        R                  " U5      ) U5      nU(       d+  US:X  aE  [        [        R
                  " U5      U5      (       a   [        [        R                  " U5      U5      $ g rU   )rM   r   r   rV   rW   rX   r   rY   s         r5   r>   r>     r   r7   c                 L    [         R                  " U 5      [        U5      ;   a  gg r/   )r   r   r   r=   s     r5   r>   r>     r   r7   c                     gr/   rk   r=   s     r5   r>   r>     rl   r7   c                 X    U R                   S   S:H  =(       a    U R                   S   S:H  $ r9   r;   r=   s     r5   r>   r>     r   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   r   r=   s     r5   r>   r>     r   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   r   r=   s     r5   r>   r>     r   r7   c                 z    U R                   (       d  g [        [        R                  " U R                  5      U5      $ rA   )rh   r   r   r   ri   r=   s     r5   r>   r>   
  r   r7   c                 6    [        [        R                  X5      $ rA   )r6   r   r   r=   s     r5   r>   r>     r   r7   c                      U R                   S;   $ )N)r   r   r;   )r3   s    r5   _is_empty_or_1x1r     s    ::)))r7   c                    ^ [        U 5      (       a  gU R                  5       u  p#[        U4S jU 5       5      (       a  gg )NTc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   r   rN   r   s     r5   rG   rH      s#     
=Hq3qzz!}k**HrI   )r   r   rL   r   s    `  r5   r>   r>     s;    --/F

=H
=== >r7   c                 V   U R                   u  p#[        [        R                  " U5      U5      nU(       d  g [        [        R                  " U5      ) U5      nU(       d+  US:X  aE  [        [        R
                  " U5      U5      (       a   [        [        R                  " U5      U5      $ g rU   )rM   r   r   rV   rW   rX   rN   rY   s         r5   r>   r>   #  sy     		ID!))C.+.G

3'5L-T 2K@@1::d#[11r7   c                 P   ^ [        U4S jU R                   5       5      (       a  gg )Nc              3   d   >#    U  H%  n[        [        R                  " U5      T5      v   M'     g 7frA   r   rD   s     r5   rG   rH   2  r   rI   Tr`   r=   s    `r5   r>   r>   0  r   r7   c                 n    [        U 5      (       a  g[        R                  " U 5      [        U5      ;   a  gg r/   )r   r   rN   r   r=   s     r5   r>   r>   5  s.    zz$9[11 2r7   c                 X    U R                   S   S:H  =(       a    U R                   S   S:H  $ r9   r;   r=   s     r5   r>   r>   <  r   r7   c                 V    [        [        R                  " U R                  5      U5      $ rA   )r   r   rN   rF   r=   s     r5   r>   r>   @  r   r7   c                     [        U 5      (       a  gU R                  (       d  g [        [        R                  " U R
                  5      U5      $ r/   )r   rh   r   r   rN   ri   r=   s     r5   r>   r>   D  s4    <<1::dkk*K88r7   c                     gr/   rk   r=   s     r5   r>   r>   M  rl   r7   c                 6    [        [        R                  X5      $ rA   )r6   r   rN   r=   s     r5   r>   r>   Q  s    !**d88r7   c                 F   ^ ^ [        UU 4S jUR                   5       5      $ )zBlock Matrix elements. c              3   H   >#    U  H  n[        T" U5      T5      v   M     g 7frA   )r   )rE   br4   r2   s     r5   rG   BM_elements.<locals>.<genexpr>Z  s     C{!s9Q<--{s   ")rL   r   r1   s   ` `r5   BM_elementsr  X  s    Ct{{CCCr7   c                 :    [        U " UR                  5      U5      $ )zMatrix Slice elements. )r   ri   r1   s      r5   MS_elementsr
  \  s    y%{33r7   c                     [        UR                  S 5      nUS   US   pe[        [        [	        U6 X15      [        [	        U6 X05      /5      $ )Nc                 "    [        U [        5      $ rA   )
isinstancer   )xs    r5   <lambda>!MatMul_elements.<locals>.<lambda>a  s    *Q
";r7   FT)r   rM   r   r   r   )matrix_predicatescalar_predicater3   r4   dfactorsr   s          r5   MatMul_elementsr  `  sT    TYY;<A%!D'X%/;I%*KJL M Mr7   c                 6    [        X[        R                  5      $ rA   )r   r   integer_elementsr=   s     r5   r>   r>   h       T0B0BCCr7   c                     U R                   u  p#[        [        R                  " U5      U5      nU(       d  g UR                  S:X  a   [        [        R
                  " U5      U5      $ g rU   )rM   r   r   rV   rw   r  rx   s        r5   r>   r>   m  sP     		ID!))C.+.G
%1%%d+[99r7   c                     gr/   rk   r=   s     r5   r>   r>   x  rl   r7   c                 T    [        [        R                  [        R                  X5      $ rA   )r  r   r  rV   r=   s     r5   r>   r>   |      1--qyy$LLr7   c                 6    [        [        R                  X5      $ rA   )r
  r   r  r=   s     r5   r>   r>         q))4==r7   c                 6    [        [        R                  X5      $ rA   )r  r   r  r=   s     r5   r>   r>     r  r7   c                 6    [        X[        R                  5      $ rA   )r   r   real_elementsr=   s     r5   r>   r>     s     T@@r7   c                 V   U R                   u  p#[        [        R                  " U5      U5      nU(       d  g [        [        R                  " U5      ) U5      nU(       d+  US:X  aE  [        [        R
                  " U5      U5      (       a   [        [        R                  " U5      U5      $ g rU   )rM   r   r   rV   rW   rX   r!  rY   s         r5   r>   r>     sy     		ID!))C.+.G

3'5L-T 2K@@1??4(+66r7   c                 T    [        [        R                  [        R                  X5      $ rA   )r  r   r!  realr=   s     r5   r>   r>     s    1??AFFDFFr7   c                 6    [        [        R                  X5      $ rA   )r
  r   r!  r=   s     r5   r>   r>         q::r7   c                 6    [        [        R                  X5      $ rA   )r  r   r!  r=   s     r5   r>   r>     r&  r7   c                 6    [        X[        R                  5      $ rA   )r   r   complex_elementsr=   s     r5   r>   r>     r  r7   c                 V   U R                   u  p#[        [        R                  " U5      U5      nU(       d  g [        [        R                  " U5      ) U5      nU(       d+  US:X  aE  [        [        R
                  " U5      U5      (       a   [        [        R                  " U5      U5      $ g rU   )rM   r   r   rV   rW   rX   r)  rY   s         r5   r>   r>     r   r7   c                 T    [        [        R                  [        R                  X5      $ rA   )r  r   r)  complexr=   s     r5   r>   r>     r  r7   c                 6    [        [        R                  X5      $ rA   )r
  r   r)  r=   s     r5   r>   r>     r  r7   c                 6    [        [        R                  X5      $ rA   )r  r   r)  r=   s     r5   r>   r>     r  r7   c                     gr/   rk   r=   s     r5   r>   r>     rl   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  rk   r7   r5   <module>r?     s  
 * $ 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   