Ë
    7^(hñ  ã                   ór   — 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
 d dlmZ ddlmZ  G d	„ d
e	«      Zy)é    )Úcheck_assumptions)Ú	fuzzy_and)Ú_sympify)Ú
MatrixKind)ÚSetÚSetKind)Ú
NumberKindé   )Ú
MatrixExprc                   óV   — e Zd ZdZdZd„ Zed„ «       Zed„ «       Zd„ Z	e
d„ «       Zd„ Zy	)
Ú	MatrixSetaw  
    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                 ó  — t        |«      t        |«      t        |«      }}}| j                  |«       | j                  |«       t        |t        «      st	        dj                  |«      «      ‚t        j                  | |||«      S )Nz {} should be an instance of Set.)r   Ú
_check_dimÚ
isinstancer   Ú	TypeErrorÚformatÚ__new__)ÚclsÚnÚmÚsets       ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/matrices/expressions/sets.pyr   zMatrixSet.__new__   si   € Ü˜Q“K¤¨!£¬h°s«mˆcˆ1ˆØ�‰�qÔØ�‰�qÔÜ˜#œsÔ#ÜÐ>×EÑEÀcÓJÓKÐKÜ�{‰{˜3  1 cÓ*Ð*ó    c                 ó    — | j                   d d S ©Né   ©Úargs©Úselfs    r   ÚshapezMatrixSet.shape'   s   € à�y‰y˜˜!ˆ}Ðr   c                 ó    — | j                   d   S r   r   r   s    r   r   zMatrixSet.set+   s   € à�y‰y˜‰|Ðr   c                 ó  ‡ — t        |t        «      st        dj                  |«      «      ‚|j                  ‰ j                  k7  r-t        d„ |j                  ‰ j                  z   D «       «      }|ry yt        ˆ fd„|D «       «      S )Nz'{} should be an instance of MatrixExpr.c              3   óF   K  — | ]  }t        |«      j                  –— Œ y ­w©N)r   Ú	is_Symbol)Ú.0Úxs     r   ú	<genexpr>z&MatrixSet._contains.<locals>.<genexpr>3   s   è ø€ ÒW¸œx¨›{×4Õ4ÑWùs   ‚!Fc              3   óT   •K  — | ]  }‰j                   j                  |«      –— Œ! y ­wr%   )r   Úcontains)r'   r(   r    s     €r   r)   z&MatrixSet._contains.<locals>.<genexpr>7   s    øè ø€ Ò=°!˜Ÿ™×*Ñ*¨1×-Ñ=ùs   ƒ%()r   r   r   r   r!   Úanyr   )r    ÚotherÚare_symbolics   `  r   Ú	_containszMatrixSet._contains/   sk   ø€ Ü˜%¤Ô,ÜÐE×LÑLÈUÓSÓTÐTØ�;‰;˜$Ÿ*™*Ò$ÜÑW¸e¿k¹kÈDÏJÉJÑ>VÔWÓWˆLÙØØÜÓ=°uÔ=Ó=Ð=r   c                 óz   — |j                    xr t        |dd¬«      }|du rt        dj                  |«      «      ‚y)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   zMatrixSet._check_dim9   sK   € ð —‘Ðò 1Ô"3Ø˜¨4ô#1ˆà�‰;Üð)ß)/©°«ó6ð 6ð r   c                 ó2   — t        t        t        «      «      S r%   )r   r   r	   r   s    r   Ú_kindzMatrixSet._kindC   s   € Ü”z¤*Ó-Ó.Ð.r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_emptyr   Úpropertyr!   r   r/   Úclassmethodr   r8   © 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   r@   r   r   ú<module>rH      s&   ðÝ 4Ý &Ý 'Ý *ß (Ý &Ý ô:/�õ :/r   