§
    OŠtjj  ã                   óZ   — d Z ddlmZ ddlmZ ddlmZ e G d„ de¦  «        ¦   «         ZdS )z2Implementation of :class:`CompositeDomain` class. é    )ÚDomain)ÚGeneratorsError)Úpublicc                   óv   — 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dS )ÚCompositeDomainz5Base class for composite domains, e.g. ZZ[x], ZZ(X). TNé   c                 óÐ   — t          | j        ¦  «        t          |¦  «        z  s)|                      | 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     úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/domains/compositedomain.pyÚinjectzCompositeDomain.inject   s`   € å�D”LÑ!Ô!¥C¨¡L¤LÑ0ð 	^Ø—>’> $¤+¨t¬|¸gÑ/EÀtÄzÑRÔRÐRå!�/ÀdÄlÀlÀlÐT[ÐT[Ð"\Ñ]Ô]Ð]ó    c                 óÀ   ‡— t          |¦  «        Št          ˆfd„| j        D ¦   «         ¦  «        } | j        j        |Ž }|s|S |                      ||| j        ¦  «        S )z"Drop generators from this domain. c              3   ó$   •K  — | ]
}|‰v¯|V — Œd S ©N© )Ú.0ÚsÚsymsets     €r   ú	<genexpr>z'CompositeDomain.drop.<locals>.<genexpr>   s'   øè è € ÐCÐC˜a°1¸F°?°?˜°?°?°?°?ÐCÐCr   )r
   Útupler   r   Údropr   r   )r   r   Únewsymsr   r   s       @r   r   zCompositeDomain.drop   sh   ø€ å�W‘”ˆÝÐCÐCÐCÐC 4¤<ÐCÑCÔCÑCÔCˆØ!�”Ô! 7Ð+ˆØð 	?ØˆMà—>’> &¨'°4´:Ñ>Ô>Ð>r   c                 óD   — |                       || 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°D´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                 óZ   — |                       | 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Ô6Ñ7Ô7Ð7r   c                 ó   — | j         j        S r   )r   Úhas_CharacteristicZeror"   s    r   r&   z&CompositeDomain.has_CharacteristicZero/   s   € àŒ{Ô1Ð1r   c                 ó4   — | 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   	   sº   € € € € € à?Ð?à€Là$( 6¨!¡8Ñ €Dˆ%�˜&ð^ð ^ð ^ð?ð ?ð ?ð@ð @ð @ð ð$ð $ñ „Xð$ð8ð 8ð 8ð ð2ð 2ñ „Xð2ð,ð ,ð ,ð ,ð ,r   r   N)r,   Úsympy.polys.domains.domainr   Úsympy.polys.polyerrorsr   Úsympy.utilitiesr   r   r   r   r   ú<module>r4      s�   ðØ 8Ð 8ð .Ð -Ð -Ð -Ð -Ð -Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à "Ð "Ð "Ð "Ð "Ð "àð*,ð *,ð *,ð *,ð *,�fñ *,ô *,ñ „ð*,ð *,ð *,r   