ó
    Š*£hp  ã                   óâ   • S SK Jr  S SKJr  S SKJr  S SKJr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  S S
KJrJrJr  S SKJr  SSKJr  SSKJrJrJrJ r   \" S5      r! " S S\5      r"g)é    )ÚS)ÚBasic)ÚTuple)ÚLambdaÚBadSignatureError)Ú
fuzzy_bool©ÚEq)ÚDummy)Ú_sympify)ÚAndÚ
as_Boolean)ÚsiftÚflattenÚhas_dups)Úsympy_deprecation_warningé   )ÚContains)ÚSetÚUnionÚ	FiniteSetÚSetKindÚconditionsetc                   ó¦   • \ rS rSrSr\R                  4S j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g)ÚConditionSeté   a  
Set of elements which satisfies a given condition.

.. math:: \{x \mid \textrm{condition}(x) = \texttt{True}, x \in S\}

Examples
========

>>> from sympy import Symbol, S, ConditionSet, pi, Eq, sin, Interval
>>> from sympy.abc import x, y, z

>>> sin_sols = ConditionSet(x, Eq(sin(x), 0), Interval(0, 2*pi))
>>> 2*pi in sin_sols
True
>>> pi/2 in sin_sols
False
>>> 3*pi in sin_sols
False
>>> 5 in ConditionSet(x, x**2 > 4, S.Reals)
True

If the value is not in the base set, the result is false:

>>> 5 in ConditionSet(x, x**2 > 4, Interval(2, 4))
False

Notes
=====

Symbols with assumptions should be avoided or else the
condition may evaluate without consideration of the set:

>>> n = Symbol('n', negative=True)
>>> cond = (n > 0); cond
False
>>> ConditionSet(n, cond, S.Integers)
EmptySet

Only free symbols can be changed by using `subs`:

>>> c = ConditionSet(x, x < 1, {x, z})
>>> c.subs(x, y)
ConditionSet(x, x < 1, {y, z})

To check if ``pi`` is in ``c`` use:

>>> pi in c
False

If no base set is specified, the universal set is implied:

>>> ConditionSet(x, x < 1).base_set
UniversalSet

Only symbols or symbol-like expressions can be used:

>>> ConditionSet(x + 1, x + 1 < 1, S.Integers)
Traceback (most recent call last):
...
ValueError: non-symbol dummy not recognized in condition

When the base set is a ConditionSet, the symbols will be
unified if possible with preference for the outermost symbols:

>>> ConditionSet(x, x < y, ConditionSet(z, z + y < 2, S.Integers))
ConditionSet(x, (x < y) & (x + y < 2), Integers)

c                 ó  ^ ^^• [        T5      m[        T/5      n[        U5      (       a  [        S5      e[        U5      n[	        U[
        5      (       d  [        SU-  5      e[        T5      m[	        T[        5      (       a%  TnS T 5       n[        U6 m[        SU ST S3SSS	9  [        T5      mT[        R                  L a  U$ T[        R                  L a  [        R                  $ U[        R                  L a  [        R                  $ U H#  n[        US
S5      (       a  M  [!        SU-  5      e   UR#                  T5      [        R                  L a  [        ST< SU< S35      eS n[	        U[        5      (       a=  [%        UUU4S j5      n	U	S    (       a  [        U	S   6 n[        U	S    6 nO[        U	S   6 $ [	        UT 5      (       Ga!  UR&                  u  p«nU 4S jn[)        UTU
45      u  pïXï:w  a  [        S5      e[+        [-        [        T/5      [        U
/5      5      5      nU
T:X  a  [        TU5      mUnO®UR.                  TR.                  -  (       dD  UR1                  5        VVs0 s H	  u  nnUU_M     nnn[        TUR3                  U5      5      mUnOLTR.                  U
R.                  -  (       d.  TR3                  U5      m[        TR3                  U5      U5      mUn[	        T[4        5      (       aS  TTR&                  S   :X  a@  [	        TR&                  S   [
        5      (       a  TR&                  S   R7                  U5      $ [8        R:                  " T TTU5      nUc  U$ [=        UU5      $ s  snnf )NzDuplicate symbols detectedz'base set should be a Set object, not %sc              3   ó:   #   • U  H  n[        US 5      v •  M     g7f)r   Nr	   )Ú.0Úlhss     ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/sets/conditionset.pyÚ	<genexpr>Ú'ConditionSet.__new__.<locals>.<genexpr>e   s   é € Ð4ª) 3”B�s˜A—J�Jª)ùs   ‚zq
Using a set for the condition in ConditionSet is deprecated. Use a boolean
instead.

In this case, replace

    z

with

    Ú
z1.5zdeprecated-conditionset-set)Údeprecated_since_versionÚactive_deprecations_targetÚ	_diff_wrtFz`%s` is not symbol-likezsym `z` is not in base_set `Ú`c                 ó:   >• [        TR                  TU 5      5      $ ©N)r   Úsubs)Ú_Ú	conditionÚsyms    €€r!   Ú<lambda>Ú&ConditionSet.__new__.<locals>.<lambda>Ž   s   ø€ ¤J¨y¯~©~¸cÀ1Ó/EÔ$Fó    Tc                 ób   >• T" U [        [        S5      5      R                  5       R                  $ ©Nr   )r
   ÚadummyÚas_dummyr.   )ÚsÚclss    €r!   ÚsigÚ!ConditionSet.__new__.<locals>.sig—   s%   ø€ Ù˜1œb¤¨›mÓ,×5Ñ5Ó7×;Ñ;Ð;r1   z"sym does not match sym of base setr   r   )r   r   r   r   Ú
isinstancer   Ú	TypeErrorr   r   r   r   r   ÚtrueÚfalseÚEmptySetÚgetattrÚ
ValueErrorÚcontainsr   ÚargsÚmapÚdictÚzipÚfree_symbolsÚitemsÚxreplacer   Ú	intersectr   Ú__new__r   )r7   r.   r-   Úbase_setÚflatÚcondition_origÚtempÚiÚknowÚsiftedr6   ÚcÚbr8   ÚsaÚsbÚrepsÚkÚvÚrvs   ```                 r!   rJ   ÚConditionSet.__new__X   s-  ú€ Ü�s‹mˆÜ˜�u‹~ˆÜ�D�>‰>Ü#Ð$@ÓAÐAÜ˜HÓ%ˆÜ˜(¤C×(Ñ(ÜØ9¸HÑDóFð Fä˜YÓ'ˆ	ä�i¤×+Ñ+Ø&ˆNÙ4©)Ó4ˆDÜ˜T˜
ˆIÜ%ðð Ðð ð €Kð ðð */Ø+Hòô" ˜yÓ)ˆ	àœŸ™ÒØˆOàœŸ™ÒÜ—:‘:Ðà”q—z‘zÒ!Ü—:‘:Ðó ˆAÜ˜1˜k¨5×1Ó1Ü Ð!:¸QÑ!>Ó?Ð?ñ ð ×Ñ˜SÓ!¤Q§W¡WÒ,ÝÃ#ÃxÐPÓQÐQàˆÜ�h¤	×*Ñ*ÜØÕFóHˆFà�d�|Ü  &¨¡,Ð/�Ü$ f¨T¡lÐ3‘ä  &¨¡,Ð/Ð/ä�h ×$Ò$Ø—m‘m‰GˆA�!õ<ä˜˜s A˜hÓ'‰FˆBØ‹xÜ'Ð(LÓMÐMÜœœG S E›N¬G°Q°C«LÓ9Ó:ˆDØ�C‹xÜ 	¨1Ó-�	Ø‘Ø—^‘^ c×&6Ñ&6×6Ø)-¯©¬Ô6ª¡  A˜˜1š©�Ñ6Ü 	¨1¯:©:°dÓ+;Ó<�	Ø‘Ø×+Ñ+¨a¯n©n×<Ø—l‘l 4Ó(�Ü 	× 2Ñ 2°4Ó 8¸!Ó<�	Ø�ô �i¤×*Ñ*°°y·~±~ÀaÑ7HÓ0HÜ˜)Ÿ.™.¨Ñ+¬S×1Ñ1Ø —~‘~ aÑ(×2Ñ2°8Ó<Ð<ä�]Š]˜3  Y°Ó9ˆØ‘\ˆrÐ6¤u¨T°2£Ð6ùó 7s   É8Nc                 ó    • U R                   S   $ r3   ©rB   ©Úselfs    r!   r/   ÚConditionSet.<lambda>±   s   €  §	¡	¨!¢r1   c                 ó    • U R                   S   $ )Nr   r\   r]   s    r!   r/   r_   ²   s   €  d§i¡i°¢lr1   c                 ó    • U R                   S   $ )Né   r\   r]   s    r!   r/   r_   ³   s   €  T§Y¡Y¨q¢\r1   c                 óŒ   • U R                   R                  U R                  R                  -
  nXR                  R                  -  $ r*   )r-   rF   r.   rK   )r^   Ú	cond_symss     r!   rF   ÚConditionSet.free_symbolsµ   s3   € à—N‘N×/Ñ/°$·(±(×2GÑ2GÑGˆ	ØŸ=™=×5Ñ5Ñ5Ð5r1   c                 ó.   • [        U R                  /5      $ r*   )r   r.   r]   s    r!   Úbound_symbolsÚConditionSet.bound_symbolsº   s   € ä˜Ÿ™�zÓ"Ð"r1   c                 óZ  ^• U4S jmT" U R                   U5      (       d  [        R                  $ [        XR                  5      nU[        R                  L a  [        R                  $ [        U R                   4U R                  5      n U" U5      n[        X$5      $ ! [         a     g f = f)Nc                 ó  >• X4 Vs/ s H  n[        U[        5      PM     nnUR                  S5      nUS:X  a  gUS:X  a  g[        U 5      [        U5      :H  =(       a    [	        U4S j[        X5       5       5      $ s  snf )NTr   Fr   c              3   ó8   >#   • U  H  u  pT" X5      v •  M     g 7fr*   © )r   rO   ÚjÚok_sigs      €r!   r"   Ú9ConditionSet._contains.<locals>.ok_sig.<locals>.<genexpr>Æ   s   øé € ð ,4Ú)2¡ ‘�q—�ªùs   ƒ)r:   r   ÚcountÚlenÚallrE   )ÚarS   rO   ÚtuplesrR   rn   s        €r!   rn   Ú&ConditionSet._contains.<locals>.ok_sig¿   sy   ø€ Ø56±FÓ;²F¨q”j ¤EÖ*±FˆFÐ;Ø—‘˜TÓ"ˆAØ�A‹vØØ�A‹vØÜ�q“6œS ›VÑ#÷ 4¬ô ,4Ü),¨Q¬ó,4ó )4ð 4ùò <s   ‡A>)	r.   r   r=   r   rK   r   r-   r   r;   )r^   ÚotherÚ	base_condÚlamdaÚlambda_condrn   s        @r!   Ú	_containsÚConditionSet._contains¾   s�   ø€ õ	4ñ �d—h‘h ×&Ñ&Ü—7‘7ˆNô ˜U§M¡MÓ2ˆ	ØœŸ™ÒÜ—7‘7ˆNô ˜Ÿ™�{ D§N¡NÓ3ˆð	/Ù ›,ˆKô �yÓ.Ð.øô ó 	Ùð	ús   Â
B Â
B*Â)B*c                 óä   • [        U R                  U R                  5      n[        U R                  [        5      (       a  U" U6 nOU" U5      n[        X R                  R                  U5      5      $ r*   )r   r.   r-   r:   r   r   rK   rA   )r^   rv   Úfs      r!   Úas_relationalÚConditionSet.as_relationalÛ   sS   € Ü�4—8‘8˜TŸ^™^Ó,ˆÜ�d—h‘h¤×&Ñ&Ù�5�	‰Aá�%“ˆAÜ�1—m‘m×,Ñ,¨UÓ3Ó4Ð4r1   c                 ót  • U R                   u  p4nUR                  U[        5      nUR                  [        5      nUR                  X5      nX…:w  a*  U(       d  UR                  X5      nU R	                  X4U5      $ U(       a  O%[        USS5      (       a  UR                  X5      nO U R	                  X4U5      $ )Nr'   F)rB   r+   r4   ÚhasÚfuncr?   )	r^   ÚoldÚnewr.   ÚcondÚbaseÚdsymÚinsymÚnewbases	            r!   Ú
_eval_subsÚConditionSet._eval_subsã   s™   € ØŸ)™)‰ˆ�4Ø�x‰x˜œVÓ$ˆØ—‘œÓ ˆà—)‘)˜CÓ%ˆØ‹?ÞØ—y‘y Ó*�Ø—9‘9˜S¨Ó0Ð0ÞØÜ�S˜+ u×-Ñ-Ø—9‘9˜SÓ&‰DàØ�y‰y˜ DÓ)Ð)r1   c                 ó@   • [        U R                  R                  5      $ r*   )r   r.   Úkindr]   s    r!   Ú_kindÚConditionSet._kindõ   s   € Ü�t—x‘x—}‘}Ó%Ð%r1   rl   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚUniversalSetrJ   Úpropertyr.   r-   rK   rF   rg   rz   r~   rŠ   rŽ   Ú__static_attributes__rl   r1   r!   r   r      sv   † ñCðH /0¯n©nô W7ñr Ñ,Ó
-€CÙÑ2Ó3€IÙÑ1Ó2€Hàñ6ó ð6ð ñ#ó ð#ò/ò:5ò*õ$&r1   r   N)#Úsympy.core.singletonr   Úsympy.core.basicr   Úsympy.core.containersr   Úsympy.core.functionr   r   Úsympy.core.logicr   Úsympy.core.relationalr
   Úsympy.core.symbolr   Úsympy.core.sympifyr   Úsympy.logic.boolalgr   r   Úsympy.utilities.iterablesr   r   r   Úsympy.utilities.exceptionsr   rA   r   Úsetsr   r   r   r   r4   r   rl   r1   r!   Ú<module>r¤      sL   ðÝ "Ý "Ý 'ß 9Ý 'Ý $Ý #Ý 'ß /ß =Ñ =Ý @Ý ß 0Ó 0ñ 
ˆ~Ó	€ôc&�3õ c&r1   