§
    OŠtjÙ  ã                   ó¶   — d dl mZmZ d dlZ G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Z e¦   «         Z e¦   «         Z	dS )é    )ÚBasicÚIntegerNc                   ó\   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	S )
Ú
OmegaPowerzÙ
    Represents ordinal exponential and multiplication terms one of the
    building blocks of the :class:`Ordinal` class.
    In ``OmegaPower(a, b)``, ``a`` represents exponent and ``b`` represents multiplicity.
    c                 ó(  — t          |t          ¦  «        rt          |¦  «        }t          |t          ¦  «        r|dk    rt          d¦  «        ‚t          |t          ¦  «        st                               |¦  «        }t          j        | ||¦  «        S )Nr   z'multiplicity must be a positive integer)Ú
isinstanceÚintr   Ú	TypeErrorÚOrdinalÚconvertr   Ú__new__)ÚclsÚaÚbs      úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/sets/ordinals.pyr   zOmegaPower.__new__   s€   € Ý�a�ÑÔð 	Ý˜‘
”
ˆAÝ˜!�WÑ%Ô%ð 	G¨¨aª¨ÝÐEÑFÔFÐFå˜!�WÑ%Ô%ð 	#Ý—’ Ñ"Ô"ˆAåŒ}˜S ! QÑ'Ô'Ð'ó    c                 ó   — | j         d         S ©Nr   ©Úargs©Úselfs    r   ÚexpzOmegaPower.exp   ó   € àŒy˜Œ|Ðr   c                 ó   — | j         d         S ©Né   r   r   s    r   ÚmultzOmegaPower.mult   r   r   c                 óz   — | j         |j         k    r || j        |j        ¦  «        S  || j         |j         ¦  «        S ©N)r   r   )r   ÚotherÚops      r   Ú_compare_termzOmegaPower._compare_term   s=   € ØŒ8�u”yÒ Ð Ø�2�d”i ¤Ñ,Ô,Ð,à�2�d”h ¤	Ñ*Ô*Ð*r   c                 óž   — t          |t          ¦  «        s)	 t          d|¦  «        }n# t          $ r
 t          cY S w xY w| j        |j        k    S r   )r   r   r
   ÚNotImplementedr   ©r   r!   s     r   Ú__eq__zOmegaPower.__eq__$   s`   € Ý˜%¥Ñ,Ô,ð 	&ð&Ý" 1 eÑ,Ô,��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøàŒy˜EœJÒ&Ð&ó   —( ¨<»<c                 ó*   — t          j        | ¦  «        S r    )r   Ú__hash__r   s    r   r*   zOmegaPower.__hash__,   s   € ÝŒ~˜dÑ#Ô#Ð#r   c                 ó¾   — t          |t          ¦  «        s)	 t          d|¦  «        }n# t          $ r
 t          cY S w xY w|                      |t
          j        ¦  «        S r   )r   r   r
   r%   r#   ÚoperatorÚltr&   s     r   Ú__lt__zOmegaPower.__lt__/   si   € Ý˜%¥Ñ,Ô,ð 	&ð&Ý" 1 eÑ,Ô,��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøà×!Ò! %­¬Ñ5Ô5Ð5r(   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r   r#   r'   r*   r.   © r   r   r   r      sŸ   € € € € € ðð ð
	(ð 	(ð 	(ð ðð ñ „Xðð ðð ñ „Xðð+ð +ð +ð'ð 'ð 'ð$ð $ð $ð6ð 6ð 6ð 6ð 6r   r   c                   ó  ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   a  
    Represents ordinals in Cantor normal form.

    Internally, this class is just a list of instances of OmegaPower.

    Examples
    ========
    >>> from sympy import Ordinal, OmegaPower
    >>> from sympy.sets.ordinals import omega
    >>> w = omega
    >>> w.is_limit_ordinal
    True
    >>> Ordinal(OmegaPower(w + 1, 1), OmegaPower(3, 2))
    w**(w + 1) + w**3*2
    >>> 3 + w
    w
    >>> (w + 1) * w
    w**2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Ordinal_arithmetic
    c                 óî   •‡—  t          ¦   «         j        | g|¢R Ž }d„ |j        D ¦   «         Št          ˆfd„t	          t          ‰¦  «        dz
  ¦  «        D ¦   «         ¦  «        st          d¦  «        ‚|S )Nc                 ó   — g | ]	}|j         ‘Œ
S r4   )r   )Ú.0Úis     r   ú
<listcomp>z#Ordinal.__new__.<locals>.<listcomp>S   s   € Ð*Ð*Ð*˜A�!”%Ð*Ð*Ð*r   c              3   óB   •K  — | ]}‰|         ‰|d z            k    V — ŒdS )r   Nr4   )r8   r9   Úpowerss     €r   ú	<genexpr>z"Ordinal.__new__.<locals>.<genexpr>T   s4   øè è € ÐLÐL°�6˜!”9  q¨¡s¤Ò+ÐLÐLÐLÐLÐLÐLr   r   z"powers must be in decreasing order)Úsuperr   r   ÚallÚrangeÚlenÚ
ValueError)r   ÚtermsÚobjr<   Ú	__class__s      @€r   r   zOrdinal.__new__Q   s‚   øø€ Ø�e‰gŒgŒo˜cÐ* EÐ*Ð*Ð*ˆØ*Ð* ¤Ð*Ñ*Ô*ˆÝÐLÐLÐLÐLµU½3¸v¹;¼;È¹?Ñ5KÔ5KÐLÑLÔLÑLÔLð 	CÝÐAÑBÔBÐBØˆ
r   c                 ó   — | j         S r    r   r   s    r   rC   zOrdinal.termsX   s
   € àŒyÐr   c                 óP   — | t           k    rt          d¦  «        ‚| j        d         S )Nz ordinal zero has no leading termr   ©Úord0rB   rC   r   s    r   Úleading_termzOrdinal.leading_term\   s&   € à•4Š<ˆ<ÝÐ?Ñ@Ô@Ð@ØŒz˜!Œ}Ðr   c                 óP   — | t           k    rt          d¦  «        ‚| j        d         S )Nz!ordinal zero has no trailing terméÿÿÿÿrH   r   s    r   Útrailing_termzOrdinal.trailing_termb   s&   € à•4Š<ˆ<ÝÐ@ÑAÔAÐAØŒz˜"Œ~Ðr   c                 óP   — 	 | j         j        t          k    S # t          $ r Y dS w xY w©NF©rM   r   rI   rB   r   s    r   Úis_successor_ordinalzOrdinal.is_successor_ordinalh   s:   € ð	ØÔ%Ô)­TÒ1Ð1øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ —
%¤%c                 óR   — 	 | j         j        t          k     S # t          $ r Y dS w xY wrO   rP   r   s    r   Úis_limit_ordinalzOrdinal.is_limit_ordinalo   s=   € ð	ØÔ)Ô-µÒ5Ð5Ð5øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ˜
&¥&c                 ó   — | j         j        S r    )rJ   r   r   s    r   ÚdegreezOrdinal.degreev   s   € àÔ Ô$Ð$r   c                 óV   — |dk    rt           S t          t          d|¦  «        ¦  «        S r   )rI   r   r   )r   Úinteger_values     r   r   zOrdinal.convertz   s*   € à˜AÒÐÝˆKÝ•z ! ]Ñ3Ô3Ñ4Ô4Ð4r   c                 ó²   — t          |t          ¦  «        s3	 t                               |¦  «        }n# t          $ r
 t          cY S w xY w| j        |j        k    S r    )r   r   r   r
   r%   rC   r&   s     r   r'   zOrdinal.__eq__€   sb   € Ý˜%¥Ñ)Ô)ð 	&ð&ÝŸš¨Ñ.Ô.��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøàŒz˜Uœ[Ò(Ð(ó   —2 ²AÁAc                 ó*   — t          | j        ¦  «        S r    )Úhashr   r   s    r   r*   zOrdinal.__hash__ˆ   s   € Ý�D”I‰ŒÐr   c                 óB  — t          |t          ¦  «        s3	 t                               |¦  «        }n# t          $ r
 t          cY S w xY wt          | j        |j        ¦  «        D ]\  }}||k    r||k     c S Œt          | j        ¦  «        t          |j        ¦  «        k     S r    )r   r   r   r
   r%   ÚziprC   rA   )r   r!   Ú	term_selfÚ
term_others       r   r.   zOrdinal.__lt__‹   s³   € Ý˜%¥Ñ)Ô)ð 	&ð&ÝŸš¨Ñ.Ô.��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøå%(¨¬°U´[Ñ%AÔ%Að 	.ð 	.Ñ!ˆI�zØ˜JÒ&Ð&Ø  :Ò-Ð-Ð-Ð-ð 'å�4”:‰Œ¥ U¤[Ñ!1Ô!1Ò1Ð1rY   c                 ó   — | |k    p| |k     S r    r4   r&   s     r   Ú__le__zOrdinal.__le__–   s   € Ø˜’Ð- ¨¢Ð.r   c                 ó   — | |k     S r    r4   r&   s     r   Ú__gt__zOrdinal.__gt__™   s   € Ø˜5’=Ð Ð r   c                 ó   — | |k      S r    r4   r&   s     r   Ú__ge__zOrdinal.__ge__œ   s   € Ø˜%’<ÐÐr   c                 óž  — d}d}| t           k    rdS | j        D ]³}|r|dz  }|j        t           k    r|t          |j        ¦  «        z  }nU|j        dk    r|dz  }nDt          |j        j        ¦  «        dk    s|j        j        r|d|j        z  z  }n|d|j        z  z  }|j        dk    s|j        t           k    s|d	|j        z  z  }|dz  }Œ´|S )
NÚ r   rI   z + r   Úwzw**(%s)zw**%sz*%s)rI   rC   r   Ústrr   rA   rS   )r   Únet_strÚ
plus_countr9   s       r   Ú__str__zOrdinal.__str__Ÿ   sê   € ØˆØˆ
Ø•4Š<ˆ<Ø�6Ø”ð 	ð 	ˆAØð !Ø˜5Ñ �àŒu�Š}ˆ}Ø�3˜qœv™;œ;Ñ&��Ø”˜!’�Ø˜3‘��Ý�Q”U”[Ñ!Ô! AÒ%Ð%¨¬Ô)?Ð%Ø˜9 Q¤U™?Ñ*��à˜7 1¤5™=Ñ(�à”6˜Q’;�; q¤uµ¢} }Ø˜5 ¤™<Ñ'�à˜!‰OˆJˆJØˆr   c                 ó~  — t          |t          ¦  «        s3	 t                               |¦  «        }n# t          $ r
 t          cY S w xY w|t
          k    r| S t          | j        ¦  «        }t          |j        ¦  «        }t          |¦  «        dz
  }|j	        }|dk    r-||         j
        |k     r|dz  }|dk    r||         j
        |k     °|dk     r|}nc||         j
        |k    rBt          |||         j        |j        j        z   ¦  «        }|d |…         |gz   |dd …         z   }n|d |dz   …         |z   }t          |Ž S )Nr   r   )r   r   r   r
   r%   rI   ÚlistrC   rA   rU   r   r   r   rJ   )r   r!   Úa_termsÚb_termsÚrÚb_exprC   Úsum_terms           r   Ú__add__zOrdinal.__add__¹   sW  € Ý˜%¥Ñ)Ô)ð 	&ð&ÝŸš¨Ñ.Ô.��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøà•DŠ=ˆ=ØˆKÝ�t”zÑ"Ô"ˆÝ�u”{Ñ#Ô#ˆÝ�‰LŒL˜1ÑˆØ”ˆØ�1Šfˆf˜ œœ¨%Ò/Ð/Ø�‰FˆAð �1Šfˆf˜ œœ¨%Ò/Ð/àˆqŠ5ˆ5ØˆEˆEØ�QŒZŒ^˜uÒ$Ð$Ý! %¨°¬¬¸5Ô;MÔ;RÑ)RÑSÔSˆHØ˜B˜Q˜B”K 8 *Ñ,¨w°q°r°r¬{Ñ:ˆEˆEà˜D˜Q˜q™S˜D”M GÑ+ˆEÝ˜ˆÐrY   c                 óœ   — t          |t          ¦  «        s3	 t                               |¦  «        }n# t          $ r
 t          cY S w xY w|| z   S r    ©r   r   r   r
   r%   r&   s     r   Ú__radd__zOrdinal.__radd__Ð   ó]   € Ý˜%¥Ñ)Ô)ð 	&ð&ÝŸš¨Ñ.Ô.��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøà�t‰|ÐrY   c                 óœ  — t          |t          ¦  «        s3	 t                               |¦  «        }n# t          $ r
 t          cY S w xY wt
          | |fv rt
          S | j        }| j        j        }g }|j	        r;|j
        D ]2}|                     t          ||j        z   |j        ¦  «        ¦  «         Œ3n“|j
        d d…         D ]2}|                     t          ||j        z   |j        ¦  «        ¦  «         Œ3|j        j        }|                     t          |||z  ¦  «        ¦  «         |t          | j
        dd …         ¦  «        z  }t          |Ž S )NrL   r   )r   r   r   r
   r%   rI   rU   rJ   r   rS   rC   Úappendr   r   rM   rn   )r   r!   Úa_expÚa_multÚ	summationÚargÚb_mults          r   Ú__mul__zOrdinal.__mul__Ø   sf  € Ý˜%¥Ñ)Ô)ð 	&ð&ÝŸš¨Ñ.Ô.��øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøå�D˜%�=Ð Ð ÝˆKØ”ˆØÔ"Ô'ˆØˆ	ØÔ!ð 		.Ø”{ð Hð H�Ø× Ò ¥¨E°C´G©O¸S¼XÑ!FÔ!FÑGÔGÐGÐGðHð ”{ 3 B 3Ô'ð Hð H�Ø× Ò ¥¨E°C´G©O¸S¼XÑ!FÔ!FÑGÔGÐGÐGØÔ(Ô-ˆFØ×Ò�Z¨¨v°f©}Ñ=Ô=Ñ>Ô>Ð>Ø�˜dœj¨¨¨œnÑ-Ô-Ñ-ˆIÝ˜	Ð"Ð"rY   c                 óœ   — t          |t          ¦  «        s3	 t                               |¦  «        }n# t          $ r
 t          cY S w xY w|| z  S r    rv   r&   s     r   Ú__rmul__zOrdinal.__rmul__ï   rx   rY   c                 ó`   — | t           k    st          S t          t          |d¦  «        ¦  «        S r   )Úomegar%   r   r   r&   s     r   Ú__pow__zOrdinal.__pow__÷   s)   € Ø•uŠ}ˆ}Ý!Ð!Ý•z %¨Ñ+Ô+Ñ,Ô,Ð,r   )r/   r0   r1   r2   r   r3   rC   rJ   rM   rQ   rS   rU   Úclassmethodr   r'   r*   r.   ra   rc   re   rl   Ú__repr__rt   rw   r€   r‚   r…   Ú__classcell__)rE   s   @r   r   r   8   sº  ø€ € € € € ðð ð0ð ð ð ð ð ðð ñ „Xðð ðð ñ „Xðð
 ðð ñ „Xðð
 ðð ñ „Xðð ðð ñ „Xðð ð%ð %ñ „Xð%ð ð5ð 5ñ „[ð5ð
)ð )ð )ðð ð ð	2ð 	2ð 	2ð/ð /ð /ð!ð !ð !ð ð  ð  ðð ð ð0 €Hðð ð ð.ð ð ð#ð #ð #ð.ð ð ð-ð -ð -ð -ð -ð -ð -r   r   c                   ó   — e Zd ZdZdS )ÚOrdinalZerozDThe ordinal zero.

    OrdinalZero can be imported as ``ord0``.
    N)r/   r0   r1   r2   r4   r   r   rŠ   rŠ   ý   s   € € € € € ðð ð 	€Dr   rŠ   c                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )ÚOrdinalOmegazêThe ordinal omega which forms the base of all ordinals in cantor normal form.

    OrdinalOmega can be imported as ``omega``.

    Examples
    ========

    >>> from sympy.sets.ordinals import omega
    >>> omega + omega
    w*2
    c                 ó6   — t                                | ¦  «        S r    )r   r   )r   s    r   r   zOrdinalOmega.__new__  s   € Ý�Š˜sÑ#Ô#Ð#r   c                 ó$   — t          dd¦  «        fS r   )r   r   s    r   rC   zOrdinalOmega.terms  s   € å˜1˜aÑ Ô Ð"Ð"r   N)r/   r0   r1   r2   r   r3   rC   r4   r   r   rŒ   rŒ     sH   € € € € € ð
ð 
ð$ð $ð $ð ð#ð #ñ „Xð#ð #ð #r   rŒ   )
Ú
sympy.corer   r   r,   r   r   rŠ   rŒ   rI   r„   r4   r   r   ú<module>r�      sô   ðØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø €€€ð06ð 06ð 06ð 06ð 06�ñ 06ô 06ð 06ðfB-ð B-ð B-ð B-ð B-ˆeñ B-ô B-ð B-ðJ	ð 	ð 	ð 	ð 	�'ñ 	ô 	ð 	ð#ð #ð #ð #ð #�7ñ #ô #ð #ð( €{�}„}€Øˆ‰Œ€€€r   