§
    OŠtjñ  ã                   ó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
 d dlmZ ddlmZ  G d	„ d
e	¦  «        ZdS )é    )Úcheck_assumptions)Ú	fuzzy_and)Ú_sympify)Ú
MatrixKind)ÚSetÚSetKind)Ú
NumberKindé   )Ú
MatrixExprc                   ój   — e Zd ZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	e
d„ ¦   «         Zd„ Zd	S )
Ú	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                 óL  — t          |¦  «        t          |¦  «        t          |¦  «        }}}|                      |¦  «         |                      |¦  «         t          |t          ¦  «        s"t	          d                     |¦  «        ¦  «        ‚t          j        | |||¦  «        S )Nz {} should be an instance of Set.)r   Ú
_check_dimÚ
isinstancer   Ú	TypeErrorÚformatÚ__new__)ÚclsÚnÚmÚsets       ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/sets.pyr   zMatrixSet.__new__   s‹   € Ý˜Q‘K”K¥¨!¡¤­h°s©m¬mˆcˆ1ˆØ�Š�qÑÔÐØ�Š�qÑÔÐÝ˜#�sÑ#Ô#ð 	LÝÐ>×EÒEÀcÑJÔJÑKÔKÐKÝŒ{˜3  1 cÑ*Ô*Ð*ó    c                 ó    — | j         d d…         S ©Né   ©Úargs©Úselfs    r   ÚshapezMatrixSet.shape'   s   € àŒy˜˜!˜Œ}Ðr   c                 ó   — | j         d         S r   r   r   s    r   r   zMatrixSet.set+   s   € àŒy˜Œ|Ðr   c                 ó   ‡ — t          |t          ¦  «        s"t          d                     |¦  «        ¦  «        ‚|j        ‰ j        k    r,t          d„ |j        ‰ j        z   D ¦   «         ¦  «        }|rd S dS t          ˆ fd„|D ¦   «         ¦  «        S )Nz'{} should be an instance of MatrixExpr.c              3   ó>   K  — | ]}t          |¦  «        j        V — Œd S ©N)r   Ú	is_Symbol)Ú.0Úxs     r   ú	<genexpr>z&MatrixSet._contains.<locals>.<genexpr>3   s+   è è € ÐWÐW¸�x¨™{œ{Ô4ÐWÐWÐWÐWÐWÐWr   Fc              3   óL   •K  — | ]}‰j                              |¦  «        V — Œd S r%   )r   Úcontains)r'   r(   r    s     €r   r)   z&MatrixSet._contains.<locals>.<genexpr>7   s3   øè è € Ð=Ð=°!˜œ×*Ò*¨1Ñ-Ô-Ð=Ð=Ð=Ð=Ð=Ð=r   )r   r   r   r   r!   Úanyr   )r    ÚotherÚare_symbolics   `  r   Ú	_containszMatrixSet._contains/   sœ   ø€ Ý˜%¥Ñ,Ô,ð 	UÝÐE×LÒLÈUÑSÔSÑTÔTÐTØŒ;˜$œ*Ò$Ð$ÝÐWÐW¸e¼kÈDÌJÑ>VÐWÑWÔWÑWÔWˆLØð Ø�tØ�5ÝÐ=Ð=Ð=Ð=°uÐ=Ñ=Ô=Ñ=Ô=Ð=r   c                 ó†   — |j          ot          |dd¬¦  «        }|du r"t          d                     |¦  «        ¦  «        ‚dS )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   s^   € ð ”Ðð 1Õ"3Ø˜¨4ð#1ñ #1ô #1ˆà�ˆ;ˆ;Ýð)ß)/ª°©¬ñ6ô 6ð 6ð ˆ;r   c                 óD   — 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   
   s£   € € € € € ðð ð$ €Hð+ð +ð +ð ðð ñ „Xðð ðð ñ „Xðð>ð >ð >ð ð6ð 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Ð 4Ð 4Ð 4Ð 4Ð 4Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð ð:/ð :/ð :/ð :/ð :/�ñ :/ô :/ð :/ð :/ð :/r   