K id dZddlmZmZddlmZmZmZmZm Z m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,ddl m-Z-ddl.m/Z/dd l0m1Z1dd l2m3Z3m4Z4m5Z5dd l6m7Z7dd l8m9Z9d dl:m;Z;mm?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHdZIe?jeKedZLe?jeeeeeeeedZLe?jedZLe?jedZLe?je dZLe?jedZLe?je dZLe?je3e7e5dZLe@jedZLe@jedZLe@jeeeeeeedZLe@jedZLe@jeedZLe@je dZLe@je#e$e%e+e,d ZLe@je'd!ZLe@je"e&d"ZLe@je!e)d#ZLeAjed$ZLeAjed%ZLd&ZNeBje eeee(eee*e d'ZLeBjeeed(ZLeBjed)ZLeBjed*ZLeBjed+ZLeBje d,ZLeBje%e+d-ZLeBje'd.ZLeBje)d/ZLeBje3e7e5d0ZLeCjeOd1ZLeCjeed2ZLeCjeee d3ZLeDjeOd4ZLeDjed5ZLeDjed6ZLeDje d7ZLeDje%e+d8ZLeDje'd9ZLeDje4d:ZLeEje e%e'e(ee)eee*e+ d;ZLeEjeed<ZLeEjed=ZLeEjeed>ZLeEje d?ZLeEje3e7e5d@ZLeEjedAZLdBZPeFjedCZLeFjedDZLeFjedEZLeFjedFZLeFje dGZLeFje)dHZLeFje'dIZLeFjeedJZLeFjedKZLeGjeOdLZLeGjedMZLeGjedNZLeGje dOZLeGje4dPZLeHje eeeedQZLeHje eeeedRZLeHjeedSZLeHje dTZLeHjedUZLeHje#e$e%e+e,dVZLeHje'dWZLeHje"e&dXZLeHje!e)dYZLyZ)[zL Handlers for predicates related to set membership: integer, rational, etc. )Qask)AddBasicExprMulPowS)AlgebraicNumberComplexInfinityExp1Float GoldenRatio ImaginaryUnitInfinityIntegerNaNNegativeInfinityNumber NumberSymbolPipiRationalTribonacciConstantE) fuzzy_bool) Absacosacotasinatancoscotexpimlogresintan)I)Eq) conjugate) Determinant MatrixBaseTrace) MatrixElement)MDNotImplementedError)test_closed_groupask_allask_any) IntegerPredicateRationalPredicateIrrationalPredicate RealPredicateExtendedRealPredicateHermitianPredicateComplexPredicateImaginaryPredicateAntihermitianPredicateAlgebraicPredicatec t|j}||z jdsty#t$rYywxYw)NrTF)introundequals TypeErrorexpr assumptionsis e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/assumptions/handlers/sets.py_IntegerPredicate_numberrKsC DJJL!A1H$$Q'  s36 AAcyNTrGrHs rJ_rP( cyNFrNrOs rJrPrP, rRc.|j}|t|SN) is_integerr1rGrHrets rJrPrP1 //C {## JrRch|jr t||St||tjS)zw * Integer + Integer -> Integer * Integer + !Integer -> !Integer * !Integer + !Integer -> ? ) is_numberrKr3rintegerrOs rJrPrP8s+ ~~'k:: T; ::rRc |jr t||Sttj|j tj |j tj|j|ryttj|j tj|j|rttj|jtj|jtj|j ztj|j dz tj|j dz|ryyy)N)rHTr2) r]rKr4rzerobasefiniter$r^r5positive nonnegativerOs rJrPrPCs ~~'k::tyy!!188DII#6txx8HVabqyy#QYYtxx%8kR 1::dhh'txx)@AFF499DUCU)UWXW]W]^b^g^ghi^iWjlmlrlrsws|s|}~s~lNY Z ZSrRc|jr t||Sd}|jD]}tt j ||r#|j rF|jdk(r$tt jd|z|cS|jdzssytt j||r|rd}yy|S)z * Integer*Integer -> Integer * Integer*Irrational -> !Integer * Odd/Even -> !Integer * Integer*Rational -> ? Tr6r2NF) r]rKargsrrr^ is_Rationalqeven irrational)rGrH_outputargs rJrPrPMs ~~'k::Gyy 199S>;/55A:qvvaf~{;;UUQY<Q\\#& 4#G  NrRc^ttj|jd|ryyNrT)rrr^rfrOs rJrPrPis% 199TYYq\ "K01rRcZttj|jd|SNr)rrinteger_elementsrfrOs rJrPrPn" q!!$))A,/ ==rRcyrMrNrOs rJrPrPurQrRcyrWrNrOs rJrPrPyrQrRcyrTrNrOs rJrPrP}rUrRc.|j}|t|SrW) is_rationalr1rYs rJrPrPs   C {## JrRcx|jr|jdryt||tjS)z} * Rational + Rational -> Rational * Rational + !Rational -> !Rational * !Rational + !Rational -> ? r2F)r] as_real_imagr3rrationalrOs rJrPrPs2 ~~    q ! T; ;;rRc|jtk(rK|j}tt j ||rtt j ||Sytt j|j|}|r,tt j |j|}|rYtt j |j|}|dury|r)tt j|jrytt j|j|dur)tt j |j|Stt j|j|r*tt j|jdryytt j |j|rtt j|j|r|durytt j |jr)tt j|jrytt j|jdryyy)z * Rational ** Integer -> Rational * Irrational ** Rational -> Irrational * Rational ** Irrational -> ? NFTr2) rarr$rrrzr`r^rc algebraicrjeqprime)rGrHxis_exp_integeris_base_rational is_base_zeros rJrPrPs yyA~ HH qzz!}k *qvvay+. .488,k:Nqzz$))4[A qvvdii0=Lu$AJJtxx$8 9 q{{499%k 2e ;qvvdhh'5 5 q||DII&{ 3ADD"&? qttDIIa ! " 0rRc|jd}ttj||r ttj||SyrprfrrrznonzerorGrHrs rJrPrPs= ! A 1::a=+&AIIaL=+..'rRc|j}ttj||r ttj||SyrW)r$rrrzrrs rJrPrPs9 A 1::a=+&AIIaL=+..'rRcb|jd}ttj||ryyNrF)rfrrrzrs rJrPrPs) ! A 1::a=+&'rRc|jd}ttj||r#ttj|dz |SyNrr2rrs rJrPrPsC ! A 1::a=+&AIIa!e$$k22'rRc.|j}|t|SrW) is_irrationalr1rYs rJrPrPs   C {## JrRcttj||}|r%ttj||}|y| S|SrW)rrrealrz)rGrH_real _rationals rJrPrPsD t k *E  4(+6  } rRcl|jdjd}|jdk7r| Sy)Nr2r6ryevalf_precrFs rJ_RealPredicate_numberr9 A$$Q'Aww!|u rRcyrMrNrOs rJrPrP rRcyrTrNrOs rJrPrP rRc.|j}|t|SrW)is_realr1rYs rJrPrPs ,,C {## JrRch|jr t||St||tjS)zT * Real + Real -> Real * Real + (Complex & !Real) -> !Real )r]rr3rrrOs rJrPrPs+  ~~$T;77 T; 77rRc|jr t||Sd}|jD]H}tt j ||r#tt j ||r|dz }Hy|S)zx * Real*Real -> Real * Real*Imaginary -> !Real * Imaginary*Imaginary -> Real TN)r]rrfrrr imaginary)rGrHresultrls rJrPrP sk ~~$T;77 Fyy qvvc{K (  S!; /d]F   rRc|jr t||S|jtk(rWt t j |jtz tz t j|jz|S|jjtk(s3|jjr|jjtk(rt t j|jj|r*t t j|j|ry|jjtz tz }t t j d|z|r=t t jtj|z|jz|Syt t j|j|rXt t j |j|r/t t j |j|}|| Syt t j|j|r6t t jt#|j|}||St t j|j|rHt t j|j|rt t j$|j|dur+t t j&|j|ryy|jj(r\t t j*|jj,|r)t t j&|j|St t j |j|ryt t j&|j|ryyyy)a * Real**Integer -> Real * Positive**Real -> Real * Negative**Real -> ? * Real**(Integer/Even) -> Real if base is nonnegative * Real**(Integer/Odd) -> Real * Imaginary**(Integer/Even) -> Real * Imaginary**(Integer/Odd) -> not Real * Imaginary**Real -> ? since Real could be 0 (giving real) or 1 (giving imaginary) * b**Imaginary -> Real if log(b) is imaginary and b != 0 and exponent != integer multiple of I*pi/log(b) * Real**Real -> ? e.g. sqrt(-1) is imaginary and sqrt(2) is not Tr6NF)r]rrarrrr^r$r*rrfuncis_Powrr NegativeOneoddr&r`rcrgrirh)rGrHrIrimlogs rJrPrPs$ ~~$T;77 yyA~ IIdhhqjm $qvvdhh'7 7   yy~~!1!1diinn6I q{{499==); 71;;txx(+6 IIMM!OB  qyy1~{ +qvvq}}a/$((:;[I I 1;;tyy !;/ qyy"K 0aeeDHHo{3Cw  1;;txx +.AKKDII/=  L 166$)) k* qvvdhh -166$))$k2%?qzz$((+[9xx##txxzz*K81::dii0+>>QYYtxx(+6QZZ *K89 .+rRc^ttj|jd|ryyrn)rrrrfrOs rJrPrPbs% 166$))A, -.rRcttj|jtz t z tj |jz|SrW)rrr^r$r*rrrOs rJrPrPgs;  $((1*R- 166$((#33[ rRcZttj|jd|Srp)rrrcrfrOs rJrPrPms qzz$))A,' 55rRcZttj|jd|Srp)rr real_elementsrfrOs rJrPrPqs qtyy|,k ::rRcttj|tj|ztj|ztj |ztj |z|SrW)rrnegative_infinitenegativer`rcpositive_infiniterOs rJrPrPxsj q""4(D!"D!"$$T* +   rRcyrMrNrOs rJrPrPrQrRc8t||tjSrW)r3r extended_realrOs rJrPrPs T; @@rRcbt|tryttj||SrW) isinstancer.rrrrOs rJrPrPs$$ # qvvd|[ ))rRc\|jrtt||tjS)zZ * Hermitian + Hermitian -> Hermitian * Hermitian + !Hermitian -> !Hermitian )r]r1r3r hermitianrOs rJrPrPs$  ~~## T; < Hermitian * Hermitian*Antihermitian -> !Hermitian * Antihermitian*Antihermitian -> Hermitian rTr2Nr]r1rfrr antihermitianr commutativerGrHnccountrrls rJrPrPs ~~##G Fyy  qs#[ 1d]FQ[[%{3   c""K 0 qLG{  rRc^|jrt|jtk(r0t t j |j|rytt t j |j|r*t t j|j|ryt)z+ * Hermitian**Integer -> Hermitian T) r]r1rarrrrr$r^rOs rJrPrPss  ~~## yyA~ q{{488$k 2## 1;;tyy !;/ qyy"K 0 rRchttj|jd|rytrn)rrrrfr1rOs rJrPrPs& 1;;tyy| $k2 rRcbttj|j|rytrM)rrrr$r1rOs rJrPrPs" 1;;txx +. rRc |j\}}d}t|D]G}t||D]6}tt|||ft |||f}|d}|dk(s5yI|t |SNTFshaperangerr+r,r1matrHrowscolsret_valrIjconds rJrPrPsJD$G 4[q$ AbQTIc!Q$i,@ABD|u}  ## NrRcyrMrNrOs rJrPrPrrRcyrTrNrOs rJrPrPrrRc.|j}|t|SrW) is_complexr1rYs rJrPrPr[rRc8t||tjSrW)r3rcomplexrOs rJrPrPs T; ::rRc`|jtk(ryt||tjSrM)rarr3rrrOs rJrPrPs# yyA~ T; ::rRcZttj|jd|Srp)rrcomplex_elementsrfrOs rJrPrPrrrRcyrWrNrOs rJrPrPrQrRcl|jdjd}|jdk7r| Sy)Nrr6r2r)rGrHrs rJ_Imaginary_numberrrrRcyrMrNrOs rJrPrPrQrRc.|j}|t|SrW) is_imaginaryr1rYs rJrPrPs   C {## JrRc&|jr t||Sd}|jD]H}tt j ||r#tt j ||r|dz }Hy|dk(ry|dt|jfvryy)zy * Imaginary + Imaginary -> Imaginary * Imaginary + Complex -> ? * Imaginary + Real -> !Imaginary rr2TFNr]rrfrrrrlen)rGrHrealsrls rJrPrPs ~~ {33 Eyy  q{{3 -  k * QJE   A: QDII' ' (rRc|jr t||Sd}d}|jD]H}tt j ||r|dz }(tt j ||rHy|t|jk(ry|S)zN * Real*Imaginary -> Imaginary * Imaginary*Imaginary -> Real FrTNr)rGrHrrrls rJrPrP5s  ~~ {33 F Eyy q{{3 -d]FQVVC[+.   C N " rRcb|jr t||S|jtk(rS|jt z t z }ttjd|ztj|z|S|jjtk(s3|jjr|jjtk(rttj|jj|rttj|j|ry|jjt z t z }ttjd|z|r=ttjtj|z|jz|Sttj|j|rWttj|j|r.ttj|j|}||Syttj|j|r5ttjt!|j|}|yttj"|jtj"|jz|rttj$|j|ryttj&|j|}|s|Sttj|j|ryttjd|jz|}|r)ttj(|j|S|Sy)a * Imaginary**Odd -> Imaginary * Imaginary**Even -> Real * b**Imaginary -> !Imaginary if exponent is an integer multiple of I*pi/log(b) * Imaginary**Real -> ? * Positive**Real -> Real * Negative**Integer -> Real * Negative**(Integer/2) -> Imaginary * Negative**Real -> not Imaginary if exponent is not Rational r6FN)r]rrarr$r*rrrr^rrrr rrr&rrcrzr)rGrHarIrrrathalfs rJrPrPIsb ~~ {33 yyA~ HHQJrM199QqS>QYYq\M1;?? yy~~!1!1diinn6I q{{499==); 71;;txx(+6 a"A199QqS>;/1;; q(8488'CDkRR 1;;tyy !;/ qyy"K 0aeeDHHo{3C  1;;txx +.AKKDII/=   166$)) qvvdhh/ /= qzz$))$k 2ajj*K8C 199TXX& 4199QtxxZ0+>qzz$))4kBB >rRcttj|jd|r.ttj|jd|ryy|jdj t k(s9|jdjrG|jdjtk(r'|jdj tt fvryttj|jd|}|duryy)NrFT) rrrrfrcrr$rrarr*r)rGrHr%s rJrPrPs 166$))A, - qzz$))A,' 5  yy|CDIIaL$7$7DIIaL Antihermitian * Antihermitian + !Antihermitian -> !Antihermitian )r]r1r3rrrOs rJrPrPs$  ~~## T; @@rRc:|jrtd}d}|jD]u}tt j ||r|dz }n!tt j ||sytt j||sj|dz }|dkDsuy|S)z As long as there is at most only one noncommutative term: * Hermitian*Hermitian -> !Antihermitian * Hermitian*Antihermitian -> Antihermitian * Antihermitian*Antihermitian -> !Antihermitian rFTr2Nrrs rJrPrPs ~~##G Fyy  qs#[ 1d]FQ[[%{3   c""K 0 qLG{  rRc|jrtttj|j |r0ttj |j|rytttj|j |rTttj|j|ryttj|j|ryt)z * Hermitian**Integer -> !Antihermitian * Antihermitian**Even -> !Antihermitian * Antihermitian**Odd -> Antihermitian FT) r]r1rrrrar^r$rrirrOs rJrPrPs ~~## 1;;tyy !;/ qyy"K 0  Q__TYY ' 5 qvvdhh - txx+ . rRc |j\}}d}t|D]H}t||D]7}tt|||ft |||f }|d}|dk(s6yJ|t |Srrrs rJrPrPsJD$G 4[q$ AbQTYs1a4y-A,ABCD|u}  ## NrRcyrMrNrOs rJrPrPrrRcyrTrNrOs rJrPrPrUrRc8t||tjSrW)r3rr}rOs rJrPrPs T; <;'AIIaL=+..(rRc|j}ttj||r ttj||SyrW)r$rrr}rrs rJrPrP s9 A 1;;q>;'AIIaL=+..(rRcb|jd}ttj||ryyr)rfrrr}rs rJrPrP&s) ! A 1;;q>;'(rRc|jd}ttj||r#ttj|dz |Syrrrs rJrPrP,sC ! A 1;;q>;'AIIa!e$$k22(rRN)Q__doc__sympy.assumptionsrr sympy.corerrrrr r sympy.core.numbersr r r rrrrrrrrrrrrrrsympy.core.logicrsympy.functionsrrrr r!r"r#r$r%r&r'r(r)r*sympy.core.relationalr+$sympy.functions.elementary.complexesr,sympy.matricesr-r.r/"sympy.matrices.expressions.matexprr0sympy.multipledispatchr1commonr3r4r5predicates.setsr7r8r9r:r;r<r=r>r?r@rK register_manyrBrPregisterrobjectrrNrRrJrsx %44CCCCC( $:99<877000 W-. k=("h(:<<4 ! 3; ;3 3 63   ]EB>C> H%&E"#!  {M8b,..D!" !  c* <+ <C  ! D!  tS#s;/</ C /!/ !  s+, !  s+3,3d#$ e$%S${BH]H6FGH 88&@@DS#&' 66[-?;@;  '(%$$X/?@A%$$S#s3A4A V$*%* S!="=S!"0S!  "  "!!#s+ , S! " Z( ) " S#r=#v"c *:;<4 !  S);*;3; ;   ]EB>C>3  ]+,T"# S!"0S!"&S!5"5nS!" S!<"<"!!&,7-8-S!" !  (/)/!  %A&A!  %&0!  % & $!  , - ""!!/5+%''"!!/4b"!!#s+=,=S!"*X&'"!!$c3</=/ S!/"/ "!!$,- "!!$,3-3rR