ó
    Š*£hÙ  ã                   ó�   • S SK JrJr  S SKr " S S\5      r " S S\5      r " S S\5      r " S	 S
\5      r\" 5       r\" 5       r	g)é    )ÚBasicÚIntegerNc                   óV   • \ rS rSrSrS r\S 5       r\S 5       rS r	S r
S rS	 rS
rg)Ú
OmegaPoweré   zÉ
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                 ó  • [        U[        5      (       a  [        U5      n[        U[        5      (       a  US::  a  [        S5      e[        U[        5      (       d  [        R                  U5      n[        R                  " XU5      $ )Nr   z'multiplicity must be a positive integer)Ú
isinstanceÚintr   Ú	TypeErrorÚOrdinalÚconvertr   Ú__new__)ÚclsÚaÚbs      ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/sets/ordinals.pyr   ÚOmegaPower.__new__   sc   € Ü�aœ×ÑÜ˜“
ˆAÜ˜!œW×%Ñ%¨¨a«ÜÐEÓFÐFä˜!œW×%Ñ%Ü—‘ Ó"ˆAä�}Š}˜S QÓ'Ð'ó    c                 ó    • U R                   S   $ ©Nr   ©Úargs©Úselfs    r   ÚexpÚOmegaPower.exp   ó   € à�y‰y˜‰|Ðr   c                 ó    • U R                   S   $ ©Né   r   r   s    r   ÚmultÚOmegaPower.mult   r   r   c                 óª   • U R                   UR                   :X  a  U" U R                  UR                  5      $ U" U R                   UR                   5      $ ©N)r   r!   )r   ÚotherÚops      r   Ú_compare_termÚOmegaPower._compare_term   s<   € Ø�8‰8�u—y‘yÓ Ù�d—i‘i §¡Ó,Ð,á�d—h‘h §	¡	Ó*Ð*r   c                 ó¤   • [        U[        5      (       d   [        SU5      nU R                  UR                  :H  $ ! [         a	    [        s $ f = fr   )r	   r   r   ÚNotImplementedr   ©r   r%   s     r   Ú__eq__ÚOmegaPower.__eq__$   sL   € Ü˜%¤×,Ñ,ð&Ü" 1 eÓ,�ð �y‰y˜EŸJ™JÑ&Ð&øô ó &Ü%Ò%ð&ús   —< ¼AÁAc                 ó.   • [         R                  " U 5      $ r$   )r   Ú__hash__r   s    r   r/   ÚOmegaPower.__hash__,   s   € Ü�~Š~˜dÓ#Ð#r   c                 ó²   • [        U[        5      (       d   [        SU5      nU R	                  U[
        R                  5      $ ! [         a	    [        s $ f = fr   )r	   r   r   r*   r'   ÚoperatorÚltr+   s     r   Ú__lt__ÚOmegaPower.__lt__/   sP   € Ü˜%¤×,Ñ,ð&Ü" 1 eÓ,�ð ×!Ñ! %¬¯©Ó5Ð5øô ó &Ü%Ò%ð&ús   —A ÁAÁA© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úpropertyr   r!   r'   r,   r/   r4   Ú__static_attributes__r6   r   r   r   r      sH   † ñò
	(ð ñó ðð ñó ðò+ò'ò$õ6r   r   c                   óè   ^ • \ rS rSrSrU 4S jr\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       rS rS rS rS rS rS rS r\rS rS rS rS rS rSrU =r$ )r   é8   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U ]  " U /UQ76 nUR                   Vs/ s H  o3R                  PM     snm[	        U4S j[        [        T5      S-
  5       5       5      (       d  [        S5      eU$ s  snf )Nc              3   ó@   >#   • U  H  nTU   TUS -      :¬  v •  M     g7f)r    Nr6   )Ú.0ÚiÚpowerss     €r   Ú	<genexpr>Ú"Ordinal.__new__.<locals>.<genexpr>T   s$   øé € ÐLÒ5K°�6˜!‘9  q¨¡s¡Ö+Ò5Kùs   ƒr    z"powers must be in decreasing order)Úsuperr   r   r   ÚallÚrangeÚlenÚ
ValueError)r   ÚtermsÚobjrC   rD   Ú	__class__s       @€r   r   ÚOrdinal.__new__Q   sd   ù€ Ü‰gŠo˜cÐ* EÒ*ˆØ!$§¢Ó*¢˜A—%”%¡Ñ*ˆÜÔL´U¼3¸v»;È¹?Ô5KÓL×LÑLÜÐAÓBÐBØˆ
ùò +s   ¢A6c                 ó   • U R                   $ r$   r   r   s    r   rL   ÚOrdinal.termsX   s   € à�y‰yÐr   c                 óJ   • U [         :X  a  [        S5      eU R                  S   $ )Nz ordinal zero has no leading termr   ©Úord0rK   rL   r   s    r   Úleading_termÚOrdinal.leading_term\   s#   € à”4‹<ÜÐ?Ó@Ð@Ø�z‰z˜!‰}Ðr   c                 óJ   • U [         :X  a  [        S5      eU R                  S   $ )Nz!ordinal zero has no trailing terméÿÿÿÿrS   r   s    r   Útrailing_termÚOrdinal.trailing_termb   s#   € à”4‹<ÜÐ@ÓAÐAØ�z‰z˜"‰~Ðr   c                 ó^   •  U R                   R                  [        :H  $ ! [         a     gf = f©NF©rY   r   rT   rK   r   s    r   Úis_successor_ordinalÚOrdinal.is_successor_ordinalh   s0   € ð	Ø×%Ñ%×)Ñ)¬TÑ1Ð1øÜó 	Ùð	ús   ‚ Ÿ
,«,c                 ó`   •  U R                   R                  [        :X  + $ ! [         a     gf = fr\   r]   r   s    r   Úis_limit_ordinalÚOrdinal.is_limit_ordinalo   s0   € ð	Ø×)Ñ)×-Ñ-´Ò5Ð5øÜó 	Ùð	ús   ‚   
-¬-c                 ó.   • U R                   R                  $ r$   )rU   r   r   s    r   ÚdegreeÚOrdinal.degreev   s   € à× Ñ ×$Ñ$Ð$r   c                 óD   • US:X  a  [         $ [        [        SU5      5      $ r   )rT   r   r   )r   Úinteger_values     r   r   ÚOrdinal.convertz   s!   € à˜AÓÜˆKÜ”z ! ]Ó3Ó4Ð4r   c                 ó¶   • [        U[        5      (       d   [        R                  U5      nU R
                  UR
                  :H  $ ! [         a	    [        s $ f = fr$   )r	   r   r   r   r*   rL   r+   s     r   r,   ÚOrdinal.__eq__€   sN   € Ü˜%¤×)Ñ)ð&ÜŸ™¨Ó.�ð �z‰z˜UŸ[™[Ñ(Ð(øô ó &Ü%Ò%ð&ús   —A ÁAÁAc                 ó,   • [        U R                  5      $ r$   )Úhashr   r   s    r   r/   ÚOrdinal.__hash__ˆ   s   € Ü�D—I‘I‹Ðr   c                 óB  • [        U[        5      (       d   [        R                  U5      n[        U R                  UR                  5       H  u  p#X#:w  d  M  X#:  s  $    [        U R                  5      [        UR                  5      :  $ ! [         a	    [        s $ f = fr$   )r	   r   r   r   r*   ÚziprL   rJ   )r   r%   Ú	term_selfÚ
term_others       r   r4   ÚOrdinal.__lt__‹   s…   € Ü˜%¤×)Ñ)ð&ÜŸ™¨Ó.�ô &)¨¯©°U·[±[Ö%AÑ!ˆIØÕ&Ø Ñ-Ò-ñ &Bô �4—:‘:‹¤ U§[¡[Ó!1Ñ1Ð1øô ó &Ü%Ò%ð&ús   —B ÂBÂBc                 ó    • X:H  =(       d    X:  $ r$   r6   r+   s     r   Ú__le__ÚOrdinal.__le__–   s   € Ø‘×- ¡Ð.r   c                 ó   • X::  + $ r$   r6   r+   s     r   Ú__gt__ÚOrdinal.__gt__™   s   € ØÒ Ð r   c                 ó   • X:  + $ r$   r6   r+   s     r   Ú__ge__ÚOrdinal.__ge__œ   s   € ØÒÐr   c                 ó$  • SnSnU [         :X  a  gU R                   Hð  nU(       a  US-  nUR                  [         :X  a  U[        UR                  5      -  nOyUR                  S:X  a  US-  nOc[        UR                  R                  5      S:”  d  UR                  R                  (       a  USUR                  -  -  nOUSUR                  -  -  nUR                  S:X  d&  UR                  [         :X  d  US	UR                  -  -  nUS-  nMò     U$ )
NÚ r   rT   z + r    Úwzw**(%s)zw**%sz*%s)rT   rL   r   Ústrr!   rJ   ra   )r   Únet_strÚ
plus_countrC   s       r   Ú__str__Ú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                 ól  • [        U[        5      (       d   [        R                  U5      nU[
        :X  a  U $ [        U R                  5      n[        UR                  5      n[        U5      S-
  nUR                  nUS:¼  a1  X$   R                  U:  a  US-  nUS:¼  a  X$   R                  U:  a  M  US:  a  UnO\X$   R                  U:X  a?  [        XRU   R                  UR                  R                  -   5      nUS U U/-   USS  -   nOUS US-    U-   n[        U6 $ ! [         a	    [        s $ f = f)Nr    r   )r	   r   r   r   r*   rT   ÚlistrL   rJ   rd   r   r   r!   rU   )r   r%   Úa_termsÚb_termsÚrÚb_exprL   Úsum_terms           r   Ú__add__ÚOrdinal.__add__¹   s%  € Ü˜%¤×)Ñ)ð&ÜŸ™¨Ó.�ð ”D‹=ØˆKÜ�t—z‘zÓ"ˆÜ�u—{‘{Ó#ˆÜ�‹L˜1ÑˆØ—‘ˆØ�1‹f˜™Ÿ™¨%Ó/Ø�‰FˆAð �1‹f˜™Ÿ™¨%Õ/àˆq‹5Ø‰EØ‰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  Ä D3Ä2D3c                 ó”   • [        U[        5      (       d   [        R                  U5      nX-   $ X-   $ ! [         a	    [        s $ f = fr$   ©r	   r   r   r   r*   r+   s     r   Ú__radd__ÚOrdinal.__radd__Ð   óJ   € Ü˜%¤×)Ñ)ð&ÜŸ™¨Ó.�ð ‰|Ðˆu‰|Ðøô ó &Ü%Ò%ð&úó   —4 ´AÁAc                 óÔ  • [        U[        5      (       d   [        R                  U5      n[
        X4;   a  [
        $ U R                  nU R                  R                  n/ nUR                  (       aE  UR                   H4  nUR                  [        X%R                  -   UR                  5      5        M6     O•UR                  S S  H4  nUR                  [        X%R                  -   UR                  5      5        M6     UR                  R                  nUR                  [        X#U-  5      5        U[        U R                  SS  5      -  n[        U6 $ ! [         a	    [        s $ f = f)NrX   r    )r	   r   r   r   r*   rT   rd   rU   r!   ra   rL   Úappendr   r   rY   r…   )r   r%   Úa_expÚa_multÚ	summationÚargÚb_mults          r   Ú__mul__ÚOrdinal.__mul__Ø   s!  € Ü˜%¤×)Ñ)ð&ÜŸ™¨Ó.�ô �D�=Ó ÜˆKØ—‘ˆØ×"Ñ"×'Ñ'ˆØˆ	Ø×!×!Ø—{”{�Ø× Ñ ¤¨E·G±G©O¸S¿X¹XÓ!FÖGò #ð —{‘{ 3 BÓ'�Ø× Ñ ¤¨E·G±G©O¸S¿X¹XÓ!FÖGñ (à×(Ñ(×-Ñ-ˆFØ×ÑœZ¨°f©}Ó=Ô>Øœ˜dŸj™j¨¨˜nÓ-Ñ-ˆIÜ˜	Ð"Ð"øô# ó &Ü%Ò%ð&ús   —E ÅE'Å&E'c                 ó”   • [        U[        5      (       d   [        R                  U5      nX-  $ X-  $ ! [         a	    [        s $ f = fr$   rŽ   r+   s     r   Ú__rmul__ÚOrdinal.__rmul__ï   r‘   r’   c                 óL   • U [         :X  d  [        $ [        [        US5      5      $ r   )Úomegar*   r   r   r+   s     r   Ú__pow__ÚOrdinal.__pow__÷   s!   € Ø”u‹}Ü!Ð!Ü”z %¨Ó+Ó,Ð,r   r6   )r7   r8   r9   r:   r;   r   r<   rL   rU   rY   r^   ra   rd   Úclassmethodr   r,   r/   r4   rt   rw   rz   r‚   Ú__repr__r‹   r�   rš   r�   r¡   r=   Ú__classcell__)rN   s   @r   r   r   8   sá   ø† ñõ0ð ñó ðð ñó ðð
 ñó ðð
 ñó ðð ñó ðð ñ%ó ð%ð ñ5ó ð5ò
)òò	2ò/ò!ò òð0 €Hòò.ò#ò.÷-ð -r   r   c                   ó   • \ rS rSrSrSrg)ÚOrdinalZeroéý   z<The ordinal zero.

OrdinalZero can be imported as ``ord0``.
r6   N)r7   r8   r9   r:   r;   r=   r6   r   r   r§   r§   ý   s   † ñò 	r   r§   c                   ó.   • \ rS rSrSrS r\S 5       rSrg)ÚOrdinalOmegai  zÎ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                 ó,   • [         R                  U 5      $ r$   )r   r   )r   s    r   r   ÚOrdinalOmega.__new__  s   € Ü�‰˜sÓ#Ð#r   c                 ó   • [        SS5      4$ r   )r   r   s    r   rL   ÚOrdinalOmega.terms  s   € ä˜1˜aÓ Ð"Ð"r   r6   N)	r7   r8   r9   r:   r;   r   r<   rL   r=   r6   r   r   rª   rª     s    † ñ
ò$ð ñ#ó ó#r   rª   )
Ú
sympy.corer   r   r2   r   r   r§   rª   rT   r    r6   r   r   Ú<module>r°      sO   ðß %Û ô06�ô 06ôfB-ˆeô B-ôJ	�'ô 	ô#�7ô #ñ( ƒ}€Ù‹�r   