ó
    Š*£ha  ã                   ój   • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  SSK
JrJrJr   " S S	\5      rg
)é    )Ú
_sympifyit)Úglobal_parameters)Ú
fuzzy_bool)ÚS)Ú_sympifyé   )ÚSetÚ	FiniteSetÚSetKindc                   ó†   ^ • \ rS rSrSrSU 4S jjr\S 5       rS r\	" S\
5      S 5       rS rS	 rS
 r\S 5       rSrU =r$ )ÚPowerSeté
   a±  A symbolic object representing a power set.

Parameters
==========

arg : Set
    The set to take power of.

evaluate : bool
    The flag to control evaluation.

    If the evaluation is disabled for finite sets, it can take
    advantage of using subset test as a membership test.

Notes
=====

Power set `\mathcal{P}(S)` is defined as a set containing all the
subsets of `S`.

If the set `S` is a finite set, its power set would have
`2^{\left| S \right|}` elements, where `\left| S \right|` denotes
the cardinality of `S`.

Examples
========

>>> from sympy import PowerSet, S, FiniteSet

A power set of a finite set:

>>> PowerSet(FiniteSet(1, 2, 3))
PowerSet({1, 2, 3})

A power set of an empty set:

>>> PowerSet(S.EmptySet)
PowerSet(EmptySet)
>>> PowerSet(PowerSet(S.EmptySet))
PowerSet(PowerSet(EmptySet))

A power set of an infinite set:

>>> PowerSet(S.Reals)
PowerSet(Reals)

Evaluating the power set of a finite set to its explicit form:

>>> PowerSet(FiniteSet(1, 2, 3)).rewrite(FiniteSet)
FiniteSet(EmptySet, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3})

References
==========

.. [1] https://en.wikipedia.org/wiki/Power_set

.. [2] https://en.wikipedia.org/wiki/Axiom_of_power_set
c                 ó¼   >• Uc  [         R                  n[        U5      n[        U[        5      (       d  [        SR                  U5      5      e[        TU ]!  X5      $ )Nz{} must be a set.)	r   Úevaluater   Ú
isinstancer	   Ú
ValueErrorÚformatÚsuperÚ__new__)ÚclsÚargr   Ú	__class__s      €ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/sets/powerset.pyr   ÚPowerSet.__new__E   sP   ø€ ØÑÜ&×/Ñ/ˆHä�s‹mˆä˜#œs×#Ñ#ÜÐ0×7Ñ7¸Ó<Ó=Ð=ä‰w‰˜sÓ(Ð(ó    c                 ó    • U R                   S   $ )Nr   )Úargs©Úselfs    r   r   ÚPowerSet.argP   s   € à�y‰y˜‰|Ðr   c                 ó^   • U R                   nUR                  (       a  UR                  5       $ g ©N)r   Úis_FiniteSetÚpowerset)r   r   Úkwargsr   s       r   Ú_eval_rewrite_as_FiniteSetÚ#PowerSet._eval_rewrite_as_FiniteSetT   s#   € Ø�h‰hˆØ××Ø—<‘<“>Ð!Ør   Úotherc                 óv   • [        U[        5      (       d  g [        U R                  R	                  U5      5      $ r"   )r   r	   r   r   Úis_superset©r   r(   s     r   Ú	_containsÚPowerSet._containsZ   s,   € ä˜%¤×%Ñ%Øä˜$Ÿ(™(×.Ñ.¨uÓ5Ó6Ð6r   c                 óx   • [        U[        5      (       a%  U R                  R                  UR                  5      $ g r"   )r   r   r   Ú	is_subsetr+   s     r   Ú_eval_is_subsetÚPowerSet._eval_is_subseta   s-   € Ü�eœX×&Ñ&Ø—8‘8×%Ñ% e§i¡iÓ0Ð0ð 'r   c                 ó2   • S[        U R                  5      -  $ )Né   )Úlenr   r   s    r   Ú__len__ÚPowerSet.__len__e   s   € Ø”C˜Ÿ™“MÑ!Ð!r   c              #   óø   #   • [         R                  /n[         R                  v •  U R                   HC  n/ n[        U5      nU H  nX$-   nUv •  UR	                  U5        M     UR                  U5        ME     g 7fr"   )r   ÚEmptySetr   r
   ÚappendÚextend)r   ÚfoundÚxÚtempÚyÚnews         r   Ú__iter__ÚPowerSet.__iter__h   sf   é € Ü—‘�ˆÜ�j‰jÒà—”ˆAØˆDÜ˜!“ˆAÛ�Ø‘e�Ø’	Ø—‘˜CÖ ñ ð �L‰L˜Öò ùs   ‚A8A:c                 ó@   • [        U R                  R                  5      $ r"   )r   r   Úkindr   s    r   rC   ÚPowerSet.kindu   s   € ä�t—x‘x—}‘}Ó%Ð%r   © r"   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úpropertyr   r&   r   ÚNotImplementedr,   r0   r5   r@   rC   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   
   se   ø† ñ9÷t	)ð ñó ðòñ �˜Ó(ñ7ó )ð7ò1ò"òð ñ&ó ö&r   r   N)Úsympy.core.decoratorsr   Úsympy.core.parametersr   Úsympy.core.logicr   Úsympy.core.singletonr   Úsympy.core.sympifyr   Úsetsr	   r
   r   r   rE   r   r   Ú<module>rU      s(   ðÝ ,Ý 3Ý 'Ý "Ý 'ç )Ñ )ôm&ˆsõ m&r   