K ipddlmZddlmZddlmZddlmZmZddl m Z ddl m Z ddl mZddlmZdd lmZmZdd lmZmZmZdd lmZd d lmZd dlmZmZmZm Z edZ!GddeZ"y))S)Basic)Tuple)LambdaBadSignatureError) fuzzy_boolEq)Dummy)_sympify)And as_Boolean)siftflattenhas_dups)sympy_deprecation_warning)Contains)SetUnion FiniteSetSetKind conditionsetceZdZdZej fdZedZedZ edZ edZ edZ dZ d Zd Zd Zy ) ConditionSeta 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) cttg}t|r tdt|}t |t st d|ztt tr(}dD}t|td|dddd ttjur|StjurtjS|tjurtjS|D]}t|d d rt!d |z|j#tjurt d d|dd}t |tr7t%|fd} | drt| d}t| d}n t| dSt |r|j&\} } } fd} t)| | f\}}||k7r tdt+t-tgt| g}| k(rt| | }n| j.j.zsA|j1Dcic]\}}|| }}}t| j3|| }nGj.| j.zs.j3|tj3|| | }t t4rMj&dk(r;t j&dt rj&dj7|St9j:|}||St=||Scc}}w)NzDuplicate symbols detectedz'base set should be a Set object, not %sc34K|]}t|dyw)rNr ).0lhss ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/sets/conditionset.py z'ConditionSet.__new__..es43BsAJ4szq Using a set for the condition in ConditionSet is deprecated. Use a boolean instead. In this case, replace z with  z1.5zdeprecated-conditionset-set)deprecated_since_versionactive_deprecations_target _diff_wrtFz`%s` is not symbol-likezsym `z` is not in base_set ``c:tj|SN)rsubs)_ conditionsyms r z&ConditionSet.__new__..sJy~~c1/E$FTcb|ttdjjSNr)r adummyas_dummyr,)sclss r sigz!ConditionSet.__new__..sigs%1bm,557;;;r.z"sym does not match sym of base setrr)r rrr isinstancer TypeErrorrr rrrtruefalseEmptySetgetattr ValueErrorcontainsrargsmapdictzip free_symbolsitemsxreplacer intersectr__new__r)r4r,r+base_setflatcondition_origtempiknowsiftedr3cbr5sasbrepskvrvs``` r rFzConditionSet.__new__Xs"smu~ D>#$@A AH%(C(9HDF FY' i +&N4)4DT I % K */+H "y)  O  ::  qzz !::  @A1k51 !:Q!>?? @   S !QWW ,#xPQ Q h *FHFd| &,/$fTl3 &,// h $mmGAq! <sAh'FBRx'(LMMGSENGQCL9:DCx 1- ^^c&6&66)-6A166 1::d+;< ++ann<ll4( 2 24 8!<  i *y~~a7H0H)..+S1 ~~a(228<< ]]3Y 9\r6uT267s Mc |jdSr0r>selfs r r-zConditionSet.s ! r.c |jdS)NrrWrXs r r-zConditionSet.sdiilr.c |jdS)NrWrXs r r-zConditionSet.sTYYq\r.c|jj|jjz }||jjzSr()r+rBr,rG)rY cond_symss r rBzConditionSet.free_symbolss5NN//$((2G2GG 4==5555r.c.t|jgSr()rr,rXs r bound_symbolszConditionSet.bound_symbolssz""r.cNfd|j|stjSt||j}|tjurtjSt |jf|j } ||}t||S#t$rYywxYw)Nc||fDcgc]}t|t}}|jd}|dk(ry|dk(ryt|t|k(xrt fdt ||DScc}w)NTrFrc36K|]\}}||ywr()rrKjok_sigs r r!z9ConditionSet._contains..ok_sig..s ,4!%Aq! ,4s)r6rcountlenallrA)arOrKtuplesrNrfs r rfz&ConditionSet._contains..ok_sigs|56F;qjE*;F; T"AAvAvq6SV#4,4),Q,4)4 4 r)r1hasfuncr;) rYoldnewr,condbasedsyminsymnewbases r _eval_subszConditionSet._eval_subss))T4xxV$ ))C% d?yyc*99S$0 0   S+u -99S#&D yydD))r.c@t|jjSr()rr,kindrXs r _kindzConditionSet._kindstxx}}%%r.N)__name__ __module__ __qualname____doc__r UniversalSetrFpropertyr,r+rGrBr`rprsr~rrdr.r rrsvCH/0nnW7r , -C23I12H 66##/:5*$&r.rN)#sympy.core.singletonrsympy.core.basicrsympy.core.containersrsympy.core.functionrrsympy.core.logicrsympy.core.relationalr sympy.core.symbolr sympy.core.sympifyr sympy.logic.boolalgr rsympy.utilities.iterablesrrrsympy.utilities.exceptionsrr=rsetsrrrrr1rrdr.r rsL""'9'$#'/==@00 ~ c&3c&r.