
    \h                     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
  S SKJr  SSKJr   " S	 S
\	5      rg)    )check_assumptions)	fuzzy_and)_sympify)
MatrixKind)SetSetKind)
NumberKind   )
MatrixExprc                   ^    \ rS rSrSrSrS r\S 5       r\S 5       r	S r
\S 5       rS	 rS
rg)	MatrixSet
   a?  
MatrixSet represents the set of matrices with ``shape = (n, m)`` over the
given set.

Examples
========

>>> from sympy.matrices import MatrixSet
>>> from sympy import S, I, Matrix
>>> M = MatrixSet(2, 2, set=S.Reals)
>>> X = Matrix([[1, 2], [3, 4]])
>>> X in M
True
>>> X = Matrix([[1, 2], [I, 4]])
>>> X in M
False

Fc                    [        U5      [        U5      [        U5      p2nU R                  U5        U R                  U5        [        U[        5      (       d  [	        SR                  U5      5      e[        R                  " XX#5      $ )Nz {} should be an instance of Set.)r   
_check_dim
isinstancer   	TypeErrorformat__new__)clsnmsets       W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/sets.pyr   MatrixSet.__new__   sf    QK!hsmcqq#s##>EEcJKK{{31**    c                      U R                   S S $ N   argsselfs    r   shapeMatrixSet.shape'   s    yy!}r   c                      U R                   S   $ r   r   r!   s    r   r   MatrixSet.set+   s    yy|r   c                 $  ^  [        U[        5      (       d  [        SR                  U5      5      eUR                  T R                  :w  a2  [        S UR                  T R                  -    5       5      nU(       a  g g[        U 4S jU 5       5      $ )Nz'{} should be an instance of MatrixExpr.c              3   L   #    U  H  n[        U5      R                  v   M     g 7fN)r   	is_Symbol).0xs     r   	<genexpr>&MatrixSet._contains.<locals>.<genexpr>3   s     W>Vx{44>Vs   "$Fc              3   Z   >#    U  H   nTR                   R                  U5      v   M"     g 7fr)   )r   contains)r+   r,   r"   s     r   r-   r.   7   s#     =u!**1--us   (+)r   r   r   r   r#   anyr   )r"   otherare_symbolics   `  r   	_containsMatrixSet._contains/   sn    %,,ELLUSTT;;$**$WekkDJJ>VWWL=u===r   c                     UR                   (       + =(       a    [        USSS9nUSL a  [        SR                  U5      5      eg)z2Helper function to check invalid matrix dimensionsT)integernonnegativeFz?The dimension specification {} should be a nonnegative integer.N)is_Floatr   
ValueErrorr   )r   dimoks      r   r   MatrixSet._check_dim9   sK      1"34#1;))/6 6 r   c                 2    [        [        [        5      5      $ r)   )r   r   r	   r!   s    r   _kindMatrixSet._kindC   s    z*-..r    N)__name__
__module____qualname____firstlineno____doc__is_emptyr   propertyr#   r   r4   classmethodr   r?   __static_attributes__rA   r   r   r   r   
   sY    $ H+    > 6 6/r   r   N)sympy.core.assumptionsr   sympy.core.logicr   sympy.core.sympifyr   sympy.matrices.kindr   sympy.sets.setsr   r   sympy.core.kindr	   matexprr   r   rA   r   r   <module>rR      s&    4 & ' * ( & :/ :/r   