§
    OŠtja  ã                   ór   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZmZmZ  G d„ d	e¦  «        Zd
S )é    )Ú
_sympifyit)Úglobal_parameters)Ú
fuzzy_bool)ÚS)Ú_sympifyé   )ÚSetÚ	FiniteSetÚSetKindc                   ó’   ‡ — e Zd ZdZdˆ fd„	Zed„ ¦   «         Zd„ Z ede	¦  «        d„ ¦   «         Z
d„ Zd	„ Zd
„ Zed„ ¦   «         Zˆ xZS )Ú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      €úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/sets/powerset.pyr   zPowerSet.__new__E   sc   ø€ ØÐÝ&Ô/ˆHå�s‰mŒmˆå˜#�sÑ#Ô#ð 	>ÝÐ0×7Ò7¸Ñ<Ô<Ñ=Ô=Ð=å‰wŒw�Š˜s CÑ(Ô(Ð(ó    c                 ó   — | j         d         S )Nr   )Úargs©Úselfs    r   r   zPowerSet.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'   € ØŒhˆØÔð 	"Ø—<’<‘>”>Ð!Øˆtr   Úotherc                 ó~   — t          |t          ¦  «        sd S t          | j                             |¦  «        ¦  «        S r   )r   r	   r   r   Úis_superset©r   r$   s     r   Ú	_containszPowerSet._containsZ   s7   € å˜%¥Ñ%Ô%ð 	Ø�4å˜$œ(×.Ò.¨uÑ5Ô5Ñ6Ô6Ð6r   c                 ón   — t          |t          ¦  «        r| j                             |j        ¦  «        S d S r   )r   r   r   Ú	is_subsetr'   s     r   Ú_eval_is_subsetzPowerSet._eval_is_subseta   s6   € Ý�e�XÑ&Ô&ð 	1Ø”8×%Ò% e¤iÑ0Ô0Ð0ð	1ð 	1r   c                 ó0   — dt          | j        ¦  «        z  S )Né   )Úlenr   r   s    r   Ú__len__zPowerSet.__len__e   s   € Ø•C˜œ‘M”MÑ!Ð!r   c              #   óæ   K  — t           j        g}t           j        V — | j        D ]K}g }t          |¦  «        }|D ] }||z   }|V — |                     |¦  «         Œ!|                     |¦  «         ŒLd S r   )r   ÚEmptySetr   r
   ÚappendÚextend)r   ÚfoundÚxÚtempÚyÚnews         r   Ú__iter__zPowerSet.__iter__h   s“   è è € Ý”�ˆÝŒjÐÐÐà”ð 	ð 	ˆAØˆDÝ˜!‘”ˆAØð !ð !�Ø˜!‘e�Ø�	�	�	Ø—’˜CÑ Ô Ð Ð Ø�LŠL˜ÑÔÐÐð	ð 	r   c                 ó4   — t          | j        j        ¦  «        S r   )r   r   Úkindr   s    r   r;   zPowerSet.kindu   s   € å�t”x”}Ñ%Ô%Ð%r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r#   r   ÚNotImplementedr(   r+   r/   r9   r;   Ú__classcell__)r   s   @r   r   r   
   sâ   ø€ € € € € ð9ð 9ðt	)ð 	)ð 	)ð 	)ð 	)ð 	)ð ðð ñ „Xððð ð ð €Z�˜Ñ(Ô(ð7ð 7ñ )Ô(ð7ð1ð 1ð 1ð"ð "ð "ðð ð ð ð&ð &ñ „Xð&ð &ð &ð &ð &r   r   N)Úsympy.core.decoratorsr   Úsympy.core.parametersr   Úsympy.core.logicr   Úsympy.core.singletonr   Úsympy.core.sympifyr   Úsetsr	   r
   r   r   © r   r   ú<module>rJ      s»   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )ðm&ð m&ð m&ð m&ð m&ˆsñ m&ô m&ð m&ð m&ð m&r   