Ë
    täij  ã                   óL   — d Z ddlmZ ddlmZ ddlmZ e G d„ de«      «       Zy)z2Implementation of :class:`CompositeDomain` class. é    )ÚDomain)ÚGeneratorsError)Úpublicc                   óh   — e Zd ZdZdZdgdz  \  ZZZZd„ Z	d„ Z
d„ Zed„ «       Zd	„ Zed
„ «       Zd„ Zy)ÚCompositeDomainz5Base class for composite domains, e.g. ZZ[x], ZZ(X). TNé   c                 óâ   — t        | j                  «      t        |«      z  s4| j                  | j                  | j                  |z   | j                  «      S t        d| j                  ›d|›�«      ‚)z%Inject generators into this domain.  zcommon generators in z and )ÚsetÚsymbolsÚ	__class__ÚdomainÚorderr   )Úselfr   s     úr/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/polys/domains/compositedomain.pyÚinjectzCompositeDomain.inject   sP   € ä�D—L‘LÓ!¤C¨£LÒ0Ø—>‘> $§+¡+¨t¯|©|¸gÑ/EÀtÇzÁzÓRÐRå!ÀdÇlÃlÑT[Ð"\Ó]Ð]ó    c                 óÊ   ‡— t        |«      Št        ˆfd„| j                  D «       «      } | j                  j                  |Ž }|s|S | j                  ||| j                  «      S )z"Drop generators from this domain. c              3   ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­w©N© )Ú.0ÚsÚsymsets     €r   Ú	<genexpr>z'CompositeDomain.drop.<locals>.<genexpr>   s   øè ø€ ÐC¡<˜a°1¸F²?œ¡<ùs   ƒ	�)r
   Útupler   r   Údropr   r   )r   r   Únewsymsr   r   s       @r   r   zCompositeDomain.drop   sU   ø€ ä�W“ˆÜÓC 4§<¢<ÓCÓCˆØ!�—‘×!Ñ! 7Ð+ˆÙØˆMà—>‘> &¨'°4·:±:Ó>Ð>r   c                 óP   — | j                  || j                  | j                  «      S )z&Set the ground domain of this domain. )r   r   r   )r   r   s     r   Ú
set_domainzCompositeDomain.set_domain"   s   € à�~‰~˜f d§l¡l°D·J±JÓ?Ð?r   c                 ó.   — | j                   j                  S )z*Returns ``True`` if this domain is exact. )r   Úis_Exact©r   s    r   r!   zCompositeDomain.is_Exact&   s   € ð �{‰{×#Ñ#Ð#r   c                 óT   — | j                  | j                  j                  «       «      S )z)Returns an exact version of this domain. )r   r   Ú	get_exactr"   s    r   r$   zCompositeDomain.get_exact+   s   € à�‰˜tŸ{™{×4Ñ4Ó6Ó7Ð7r   c                 ó.   — | j                   j                  S r   )r   Úhas_CharacteristicZeror"   s    r   r&   z&CompositeDomain.has_CharacteristicZero/   s   € à�{‰{×1Ñ1Ð1r   c                 ó6   — | j                   j                  «       S r   )r   Úcharacteristicr"   s    r   r(   zCompositeDomain.characteristic3   s   € Ø�{‰{×)Ñ)Ó+Ð+r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_CompositeÚgensÚngensr   r   r   r   r   Úpropertyr!   r$   r&   r(   r   r   r   r   r   	   sa   „ á?à€Là$( 6¨!¡8Ñ €Dˆ%�˜&ò^ò?ò@ð ñ$ó ð$ò8ð ñ2ó ð2ó,r   r   N)r,   Úsympy.polys.domains.domainr   Úsympy.polys.polyerrorsr   Úsympy.utilitiesr   r   r   r   r   Ú<module>r4      s,   ðÙ 8õ .Ý 2å "àô*,�fó *,ó ñ*,r   