�
��ga � �r � d dl mZ d dlmZ d dlmZ d dlmZ d dlm Z ddl
mZmZm
Z
G d� d e� � Zd
S )� )�
_sympifyit)�global_parameters)�
fuzzy_bool)�S)�_sympify� )�Set� FiniteSet�SetKindc � � � e Zd ZdZd� fd� Zed� � � Zd� Z ede � � d� � � Z
d� Zd � Zd
� Z
ed� � � Z� xZS )
�PowerSetaE 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
Nc �� �� |�t j }t |� � }t |t � � s"t d� |� � � � �t � � � | |� � S )Nz{} must be a set.) r �evaluater �
isinstancer �
ValueError�format�super�__new__)�cls�argr � __class__s ��c/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/sets/powerset.pyr zPowerSet.__new__E sc �� ���&�/�H��s�m�m���#�s�#�#� >��0�7�7��<�<�=�=�=��w�w���s�C�(�(�(� c � � | j d S )Nr )�args��selfs r r zPowerSet.argP s � ��y��|�r c �J � | j }|j r|� � � S d S �N)r �is_FiniteSet�powerset)r r �kwargsr s r �_eval_rewrite_as_FiniteSetz#PowerSet._eval_rewrite_as_FiniteSetT s'