
    \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      K/var/www/auris/envauris/lib/python3.13/site-packages/sympy/sets/powerset.pyr   PowerSet.__new__E   sP    &//Hsm#s##077<==ws((    c                      U R                   S   $ )Nr   )argsselfs    r   r   PowerSet.argP   s    yy|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#    hh<<>!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-    eX&&88%%eii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     jjAD!Ae	C   LL s   A8A:c                 @    [        U R                  R                  5      $ r"   )r   r   kindr   s    r   rC   PowerSet.kindu   s    txx}}%%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   