Ë
    7^(hÙ  ã                   ó�   — 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	y)é    )ÚBasicÚIntegerNc                   óN   — e Zd ZdZd„ Zed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zy	)
Ú
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        j                  |«      }t        j                  | ||«      S )Nr   z'multiplicity must be a positive integer)Ú
isinstanceÚintr   Ú	TypeErrorÚOrdinalÚconvertr   Ú__new__)ÚclsÚaÚbs      úQ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/sets/ordinals.pyr   zOmegaPower.__new__   s\   € Ü�aœÔÜ˜“
ˆAÜ˜!œWÔ%¨¨aªÜÐEÓFÐFä˜!œWÔ%Ü—‘ Ó"ˆAä�}‰}˜S ! QÓ'Ð'ó    c                 ó    — | j                   d   S ©Nr   ©Úargs©Úselfs    r   ÚexpzOmegaPower.exp   ó   € à�y‰y˜‰|Ðr   c                 ó    — | j                   d   S ©Né   r   r   s    r   ÚmultzOmegaPower.mult   r   r   c                 ó¨   — | j                   |j                   k(  r || j                  |j                  «      S  || j                   |j                   «      S ©N)r   r   )r   ÚotherÚops      r   Ú_compare_termzOmegaPower._compare_term   s<   € Ø�8‰8�u—y‘yÒ Ù�d—i‘i §¡Ó,Ð,á�d—h‘h §	¡	Ó*Ð*r   c                 ó˜   — t        |t        «      s	 t        d|«      }| j                  |j                  k(  S # t        $ r	 t        cY S w xY wr   )r   r   r
   ÚNotImplementedr   ©r   r!   s     r   Ú__eq__zOmegaPower.__eq__$   sI   € Ü˜%¤Ô,ð&Ü" 1 eÓ,�ð �y‰y˜EŸJ™JÑ&Ð&øô ò &Ü%Ò%ð&ús   ’7 ·A	ÁA	c                 ó,   — t        j                  | «      S r    )r   Ú__hash__r   s    r   r)   zOmegaPower.__hash__,   s   € Ü�~‰~˜dÓ#Ð#r   c                 ó¦   — t        |t        «      s	 t        d|«      }| j	                  |t
        j                  «      S # t        $ r	 t        cY S w xY wr   )r   r   r
   r%   r#   ÚoperatorÚltr&   s     r   Ú__lt__zOmegaPower.__lt__/   sM   € Ü˜%¤Ô,ð&Ü" 1 eÓ,�ð ×!Ñ! %¬¯©Ó5Ð5øô ò &Ü%Ò%ð&ús   ’> ¾AÁAN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r   r#   r'   r)   r-   © r   r   r   r      sH   „ ñò
	(ð ñó ðð ñó ðò+ò'ò$ó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        ‰| �  | g|¢­Ž }|j                  D �cg c]  }|j                  ‘Œ c}Št	        ˆfd„t        t        ‰«      dz
  «      D «       «      st        d«      ‚|S c c}w )Nc              3   ó:   •K  — | ]  }‰|   ‰|d z      k\  –— Œ y­w)r   Nr3   )Ú.0ÚiÚpowerss     €r   ú	<genexpr>z"Ordinal.__new__.<locals>.<genexpr>T   s"   øè ø€ ÒL°�6˜!‘9  q¨¡s¡Õ+ÑLùs   ƒr   z"powers must be in decreasing order)Úsuperr   r   r   ÚallÚrangeÚlenÚ
ValueError)r   ÚtermsÚobjr8   r9   Ú	__class__s       @€r   r   zOrdinal.__new__Q   s_   ù€ Ü‰g‰o˜cÐ* EÒ*ˆØ!$§¡Ö*˜A�!—%“%Ò*ˆÜÓL´U¼3¸v»;È¹?Ó5KÔLÔLÜÐAÓBÐBØˆ
ùò +s   ¡A-c                 ó   — | j                   S r    r   r   s    r   r@   zOrdinal.termsX   s   € à�y‰yÐr   c                 óH   — | t         k(  rt        d«      ‚| j                  d   S )Nz ordinal zero has no leading termr   ©Úord0r?   r@   r   s    r   Úleading_termzOrdinal.leading_term\   s#   € à”4Š<ÜÐ?Ó@Ð@Ø�z‰z˜!‰}Ðr   c                 óH   — | t         k(  rt        d«      ‚| j                  d   S )Nz!ordinal zero has no trailing terméÿÿÿÿrE   r   s    r   Útrailing_termzOrdinal.trailing_termb   s#   € à”4Š<ÜÐ@ÓAÐAØ�z‰z˜"‰~Ðr   c                 ó\   — 	 | j                   j                  t        k(  S # t        $ r Y yw xY w©NF©rJ   r   rF   r?   r   s    r   Úis_successor_ordinalzOrdinal.is_successor_ordinalh   s0   € ð	Ø×%Ñ%×)Ñ)¬TÑ1Ð1øÜò 	Ùð	ús   ‚ Ÿ	+ª+c                 ó^   — 	 | j                   j                  t        k(   S # t        $ r Y yw xY wrL   rM   r   s    r   Úis_limit_ordinalzOrdinal.is_limit_ordinalo   s3   € ð	Ø×)Ñ)×-Ñ-´Ñ5Ð5Ð5øÜò 	Ùð	ús   ‚   	,«,c                 ó.   — | j                   j                  S r    )rG   r   r   s    r   ÚdegreezOrdinal.degreev   s   € à× Ñ ×$Ñ$Ð$r   c                 óB   — |dk(  rt         S t        t        d|«      «      S r   )rF   r   r   )r   Úinteger_values     r   r   zOrdinal.convertz   s!   € à˜AÒÜˆKÜ”z ! ]Ó3Ó4Ð4r   c                 óª   — t        |t        «      s	 t        j                  |«      }| j
                  |j
                  k(  S # t        $ r	 t        cY S w xY wr    )r   r   r   r
   r%   r@   r&   s     r   r'   zOrdinal.__eq__€   sK   € Ü˜%¤Ô)ð&ÜŸ™¨Ó.�ð �z‰z˜UŸ[™[Ñ(Ð(øô ò &Ü%Ò%ð&ús   ’A  Á AÁAc                 ó,   — t        | j                  «      S r    )Úhashr   r   s    r   r)   zOrdinal.__hash__ˆ   s   € Ü�D—I‘I‹Ðr   c                 ó6  — t        |t        «      s	 t        j                  |«      }t        | j                  |j                  «      D ]  \  }}||k7  sŒ||k  c S  t        | j                  «      t        |j                  «      k  S # t        $ r	 t        cY S w xY wr    )r   r   r   r
   r%   Úzipr@   r>   )r   r!   Ú	term_selfÚ
term_others       r   r-   zOrdinal.__lt__‹   sŒ   € Ü˜%¤Ô)ð&ÜŸ™¨Ó.�ô &)¨¯©°U·[±[Ó%Aò 	.Ñ!ˆI�zØ˜JÓ&Ø  :Ñ-Ò-ð	.ô �4—:‘:‹¤ U§[¡[Ó!1Ñ1Ð1øô ò &Ü%Ò%ð&ús   ’B ÂBÂBc                 ó   — | |k(  xs | |k  S r    r3   r&   s     r   Ú__le__zOrdinal.__le__–   s   € Ø˜‘Ò- ¨¡Ð.r   c                 ó   — | |k   S r    r3   r&   s     r   Ú__gt__zOrdinal.__gt__™   s   € Ø˜5‘=Ð Ð r   c                 ó   — | |k   S r    r3   r&   s     r   Ú__ge__zOrdinal.__ge__œ   s   € Ø˜%‘<ÐÐr   c                 ó   — d}d}| t         k(  ry| j                  D ]à  }|r|dz  }|j                  t         k(  r|t        |j                  «      z  }nr|j                  dk(  r|dz  }n]t        |j                  j                  «      dkD  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   rF   z + r   Úwzw**(%s)zw**%sz*%s)rF   r@   r   Ústrr   r>   rP   )r   Únet_strÚ
plus_countr8   s       r   Ú__str__zOrdinal.__str__Ÿ   sã   € ØˆØˆ
Ø”4Š<ØØ—‘ò 	ˆAÙØ˜5Ñ �à�u‰uœŠ}Øœ3˜qŸv™v›;Ñ&‘Ø—‘˜!’Ø˜3‘‘Ü�Q—U‘U—[‘[Ó! AÒ%¨¯©×)?Ò)?Ø˜9 Q§U¡U™?Ñ*‘à˜7 1§5¡5™=Ñ(�à—6‘6˜Q’; q§u¡u´¢}Ø˜5 §¡™<Ñ'�à˜!‰O‰Jð!	ð" ˆr   c                 ót  — t        |t        «      s	 t        j                  |«      }|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  rŒ|dk  r
|}t        |Ž S ||   j                  |k(  rGt        |||   j                  |j                  j                  z   «      }|d | |gz   |dd  z   }t        |Ž S |d |dz    |z   }t        |Ž S # t        $ r	 t        cY S w xY w)Nr   r   )r   r   r   r
   r%   rF   Úlistr@   r>   rR   r   r   r   rG   )r   r!   Úa_termsÚb_termsÚrÚb_expr@   Úsum_terms           r   Ú__add__zOrdinal.__add__¹   sF  € Ü˜%¤Ô)ð&ÜŸ™¨Ó.�ð ”DŠ=ØˆKÜ�t—z‘zÓ"ˆÜ�u—{‘{Ó#ˆÜ�‹L˜1ÑˆØ—‘ˆØ�1Šf˜ ™Ÿ™¨%Ò/Ø�‰FˆAð �1Šf˜ ™Ÿ™¨%Ó/àˆqŠ5ØˆEô ˜ˆÐð �Q‰Z�^‰^˜uÒ$Ü! %¨°©¯©¸5×;MÑ;M×;RÑ;RÑ)RÓSˆHØ˜B˜Q�K 8 *Ñ,¨w°q°r¨{Ñ:ˆEô ˜ˆÐð ˜D˜Q˜q™S�M GÑ+ˆEÜ˜ˆÐøô# ò &Ü%Ò%ð&ús   ’D% Ä%D7Ä6D7c                 óŒ   — t        |t        «      s	 t        j                  |«      }|| z   S || z   S # t        $ r	 t        cY S w xY wr    ©r   r   r   r
   r%   r&   s     r   Ú__radd__zOrdinal.__radd__Ð   óK   € Ü˜%¤Ô)ð&ÜŸ™¨Ó.�ð �t‰|Ðˆu�t‰|Ðøô ò &Ü%Ò%ð&úó   ’1 ±AÁAc                 óÈ  — t        |t        «      s	 t        j                  |«      }t
        | |fv rt
        S | j                  }| j                  j                  }g }|j                  rK|j                  D ]4  }|j                  t        ||j                  z   |j                  «      «       Œ6 t        |Ž S |j                  d d D ]4  }|j                  t        ||j                  z   |j                  «      «       Œ6 |j                  j                  }|j                  t        |||z  «      «       |t        | j                  dd  «      z  }t        |Ž S # t        $ r	 t        cY S w xY w)NrI   r   )r   r   r   r
   r%   rF   rR   rG   r   rP   r@   Úappendr   r   rJ   rj   )r   r!   Úa_expÚa_multÚ	summationÚargÚb_mults          r   Ú__mul__zOrdinal.__mul__Ø   sA  € Ü˜%¤Ô)ð&ÜŸ™¨Ó.�ô �D˜%�=Ñ ÜˆKØ—‘ˆØ×"Ñ"×'Ñ'ˆØˆ	Ø×!Ò!Ø—{‘{ò H�Ø× Ñ ¤¨E°C·G±G©O¸S¿X¹XÓ!FÕGðHô ˜	Ð"Ð"ð —{‘{ 3 BÐ'ò H�Ø× Ñ ¤¨E°C·G±G©O¸S¿X¹XÓ!FÕGðHà×(Ñ(×-Ñ-ˆFØ×ÑœZ¨¨v°f©}Ó=Ô>Øœ˜dŸj™j¨¨˜nÓ-Ñ-ˆIÜ˜	Ð"Ð"øô# ò &Ü%Ò%ð&ús   ’E ÅE!Å E!c                 óŒ   — t        |t        «      s	 t        j                  |«      }|| z  S || z  S # t        $ r	 t        cY S w xY wr    rr   r&   s     r   Ú__rmul__zOrdinal.__rmul__ï   rt   ru   c                 óJ   — | 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.   r/   r0   r1   r   r2   r@   rG   rJ   rN   rP   rR   Úclassmethodr   r'   r)   r-   r]   r_   ra   rh   Ú__repr__rp   rs   r}   r   r‚   Ú__classcell__)rB   s   @r   r   r   8   sÜ   ø„ ñô0ð ñó ðð ñó ðð
 ñó ðð
 ñó ðð ñó ðð ñ%ó ð%ð ñ5ó ð5ò
)òò	2ò/ò!ò òð0 €Hòò.ò#ò.ö-r   r   c                   ó   — e Zd ZdZy)ÚOrdinalZerozDThe ordinal zero.

    OrdinalZero can be imported as ``ord0``.
    N)r.   r/   r0   r1   r3   r   r   r‡   r‡   ý   s   „ ñð 	r   r‡   c                   ó&   — e Zd ZdZd„ Zed„ «       Zy)Ú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                 ó,   — t         j                  | «      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   r@   zOrdinalOmega.terms  s   € ä˜1˜aÓ Ð"Ð"r   N)r.   r/   r0   r1   r   r2   r@   r3   r   r   r‰   r‰     s    „ ñ
ò$ð ñ#ó ñ#r   r‰   )
Ú
sympy.corer   r   r+   r   r   r‡   r‰   rF   r�   r3   r   r   ú<module>r�      sO   ðß %Û ô06�ô 06ôfB-ˆeô B-ôJ	�'ô 	ô#�7ô #ñ( ƒ}€Ù‹�r   