ó
    ‰*£hö  ã                   óÀ   • S SK Jr  S SKJ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  S\
S	\4S
 jrS\\
\4   S	\4S jrS\
S	\4S jrS\
S	S4S jrS\
S	S4S jrg)é    ©ÚEq)ÚExpr)ÚInteger)ÚBooleanÚAnd)Ú
MatrixExpr)Ú
ShapeError)ÚUnionÚargsÚreturnc            
      óš   • [        S U  5       6 u  p[        / S [        USS USS 5       5       QS [        USS USS 5       5       Q76 $ )a¹  Return the symbolic condition how ``MatAdd``, ``HadamardProduct``
makes sense.

Parameters
==========

args
    The list of arguments of matrices to be tested for.

Examples
========

>>> from sympy import MatrixSymbol, symbols
>>> from sympy.matrices.expressions._shape import is_matadd_valid

>>> m, n, p, q = symbols('m n p q')
>>> A = MatrixSymbol('A', m, n)
>>> B = MatrixSymbol('B', p, q)
>>> is_matadd_valid(A, B)
Eq(m, p) & Eq(n, q)
c              3   ó8   #   • U  H  oR                   v •  M     g 7f©N©Úshape©Ú.0Úargs     Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/_shape.pyÚ	<genexpr>Ú"is_matadd_valid.<locals>.<genexpr>    s   é € Ð1ªD S—y–yªDùó   ‚c              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   r   ©r   ÚiÚjs      r   r   r   "   ó   é € Ð	8Ò7‘t�qŒ"ˆQ�(ˆ(Ò7ùó   ‚Néÿÿÿÿé   c              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   r   r   s      r   r   r   #   r   r   ©Úzipr   ©r   ÚrowsÚcolss      r   Úis_matadd_validr(   
   sc   € ô, Ñ1©DÓ1Ð2�J€DÜð Ù	8œs 4¨¨ 9¨d°1°2¨hÔ7Ó	8ðá	8œs 4¨¨ 9¨d°1°2¨hÔ7Ó	8òð ó    c            	      ób   • [        S U  5       6 u  p[        S [        USS USS 5       5       6 $ )a³  Return the symbolic condition how ``MatMul`` makes sense

Parameters
==========

args
    The list of arguments of matrices and scalar expressions to be tested
    for.

Examples
========

>>> from sympy import MatrixSymbol, symbols
>>> from sympy.matrices.expressions._shape import is_matmul_valid

>>> m, n, p, q = symbols('m n p q')
>>> A = MatrixSymbol('A', m, n)
>>> B = MatrixSymbol('B', p, q)
>>> is_matmul_valid(A, B)
Eq(n, p)
c              3   óh   #   • U  H(  n[        U[        5      (       d  M  UR                  v •  M*     g 7fr   )Ú
isinstancer	   r   r   s     r   r   Ú"is_matmul_valid.<locals>.<genexpr>=   s   é € ÐPªD S´J¸sÄJ×4O“y�s—y–yªDùs   ‚2Ÿ2c              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   r   r   s      r   r   r-   >   s   é € Ð?Ò&>™d˜a”�A—�Ò&>ùr   Nr    r!   r#   r%   s      r   Úis_matmul_validr/   '   s:   € ô, ÑP©DÓPÐQ�J€DÜÑ?¤c¨$¨s°¨)°T¸!¸"°XÔ&>Ó?Ð@Ð@r)   r   c                óB   • [        U R                  U R                  5      $ )aS  Return the symbolic condition how the matrix is assumed to be square

Parameters
==========

arg
    The matrix to be tested for.

Examples
========

>>> from sympy import MatrixSymbol, symbols
>>> from sympy.matrices.expressions._shape import is_square

>>> m, n = symbols('m n')
>>> A = MatrixSymbol('A', m, n)
>>> is_square(A)
Eq(m, n)
)r   r&   r'   )r   s    r   Ú	is_squarer1   A   s   € ô( ˆc�h‰h˜Ÿ™Ó!Ð!r)   Nc                  óê   • [        S U  5       6 u  p[        [        [        S U5      5      5      S:”  a  [	        SU 35      e[        [        [        S U5      5      5      S:”  a  [	        SU 35      eg)z:Validate matrix shape for addition only for integer valuesc              3   ó8   #   • U  H  oR                   v •  M     g 7fr   r   )r   Úxs     r   r   Ú*validate_matadd_integer.<locals>.<genexpr>Z   s   é € Ð-ª 1—w–wªùr   c                 ó.   • [        U [        [        45      $ r   ©r,   Úintr   ©r4   s    r   Ú<lambda>Ú)validate_matadd_integer.<locals>.<lambda>[   ó   € ¤
¨1¬s´G¨nÔ =r)   r!   z!Matrices have mismatching shape: c                 ó.   • [        U [        [        45      $ r   r7   r9   s    r   r:   r;   ]   r<   r)   N)r$   ÚlenÚsetÚfilterr
   r%   s      r   Úvalidate_matadd_integerrA   X   st   € äÑ-©Ó-Ð.�J€DÜ
Œ3ŒvÑ=¸tÓDÓEÓFÈÓJÜÐ<¸T¸FÐCÓDÐDÜ
Œ3ŒvÑ=¸tÓDÓEÓFÈÓJÜÐ<¸T¸FÐCÓDÐDð Kr)   c                  óþ   • [        U SS U SS 5       Hg  u  pUR                  UR                  pC[        U[        [
        45      (       d  M9  [        U[        [
        45      (       d  MV  X4:w  d  M]  [        SX45      e   g)z@Validate matrix shape for multiplication only for integer valuesNr    r!   zMatrices are not aligned)r$   r'   r&   r,   r8   r   r
   )r   ÚAÚBr   r   s        r   Úvalidate_matmul_integerrE   a   sc   € ä�D˜˜"�I˜t A B˜xÖ(‰ˆØ�v‰v�q—v‘vˆ1Ü�aœ#œw˜×(Ó(¬Z¸¼CÄ¸>×-JÓ-JÈqÍvÜÐ7¸Ó>Ð>ò )r)   )Úsympy.core.relationalr   Úsympy.core.exprr   Úsympy.core.numbersr   Úsympy.logic.boolalgr   r   Ú"sympy.matrices.expressions.matexprr	   Úsympy.matrices.exceptionsr
   Útypingr   r(   r/   r1   rA   rE   © r)   r   Ú<module>rN      s‰   ðÝ $Ý  Ý &ß ,Ý 9Ý 0Ý ð˜:ð ¨'ô ð:A˜5 ¨TÐ!1Ñ2ð A°wô Að4"�:ð " Wô "ð.E :ð E°$ô Eð? :ð ?°$õ ?r)   