+
    i.                        ^ RI HtHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHt ^ RIHt ^ RIHtHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0 ^ RI1H2t2 ^ RI3H4t4H5t5 ^ RI6H7t7 ^ RI8H9t9 ^ RI:H;t; ^ RIH<t<  ! R R]04      t= ! R R]=](4      t> ! R R].4      t? ! R  R!]?]*4      t@ ! R" R#]?]-4      tA ! R$ R%],4      tB ! R& R']/]?4      tC ! R( R)]B])4      tDR*# )+    )Sum	summation)Basic)cacheit)Lambda)I)EqNe)S)Dummysymbols)sympify)	factorial)exp)floor)	Piecewise)And)poly)series)PolynomialError)!reduce_rational_inequalities_wrap)	NamedArgsMixinSinglePSpaceSingleDomainrandom_symbolsPSpaceConditionalDomainRandomDomainProductDomainDistribution)Probability)Range	FiniteSet)Union)Contains)
filldedent)_sympifyc                   &   a  ] tR t^t o R tRtV tR# )DiscreteDistributionc                "    V P                   ! V!  # Npdfselfargss   &*o/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/stats/drv.py__call__DiscreteDistribution.__call__        xx     N)__name__
__module____qualname____firstlineno__r2   __static_attributes____classdictcell____classdict__s   @r1   r)   r)      s      r5   r)   c                      a  ] tR t^$t o Rt]P                  tR t]	R 4       t
]R 4       tR tR t]R 4       tR tR	 t]R
 4       tR tR t]R 4       tR tR tRR ltR tRtV tR# )SingleDiscreteDistributionzDiscrete distribution of a single variable.

Serves as superclass for PoissonDistribution etc....

Provides methods for pdf, cdf, and sampling

See Also:
    sympy.stats.crv_types.*
c                d    \        \        \        V4      4      p\        P                  ! V .VO5!  # r+   )listmapr   r   __new__)clsr0   s   &*r1   rD   "SingleDiscreteDistribution.__new__1   s'    C&'}}S(4((r5   c                     R # r+   r6   )r0   s   *r1   check SingleDiscreteDistribution.check5   s    r5   c                    \        RR\        R7      p\        RR\        R7      pV P                  P                  pV P	                  V4      p\        WRV\        V4      33/ VB p\        WcV8  3R4      p\        W64      # )z1Compute the CDF from the PDF.

Returns a Lambda.
xT)integerrE   zrealrE   )r   T)	r   r   setinfr-   r   r   r   r   )r/   kwargsrK   rM   
left_boundr-   cdfs   &,     r1   compute_cdf&SingleDiscreteDistribution.compute_cdf9   ss     C51Cd.XX\\
 hhqkU1X6A&A:o.	:a~r5   c                    R # r+   r6   r/   rK   s   &&r1   _cdfSingleDiscreteDistribution._cdfJ       r5   c                p    V'       g   V P                  V4      pVe   V# V P                  ! R/ VB ! V4      # zCumulative density function r6   )rY   rU   )r/   rK   rR   rT   s   &&, r1   rT   SingleDiscreteDistribution.cdfM   s5    ))A,C
)&)!,,r5   c                   \        RR\        R7      w  r#V P                  V4      p\        \	        \
        V,          V,          4      V,          W P                  P                  V P                  P                  34      p\        W54      # )zECompute the characteristic function from the PDF.

Returns a Lambda.
zx, tTrN   )
r   r   r-   r   r   r   rP   rQ   supr   )r/   rR   rK   tr-   cfs   &,    r1   compute_characteristic_function:SingleDiscreteDistribution.compute_characteristic_functionU   s\     vDe4hhqks1Q3q5z#~88<<'FGa}r5   c                    R # r+   r6   r/   ra   s   &&r1   _characteristic_function3SingleDiscreteDistribution._characteristic_function`   r[   r5   c                p    V'       g   V P                  V4      pVe   V# V P                  ! R/ VB ! V4      # )zCharacteristic function r6   )rg   rc   )r/   ra   rR   rb   s   &&, r1   characteristic_function2SingleDiscreteDistribution.characteristic_functionc   s8    ..q1B~	33=f=a@@r5   c                   \        R RR7      p\        RRR7      pV P                  V4      p\        \        W#,          4      V,          W0P                  P
                  V P                  P                  34      p\        W%4      # )ra   TrO   rK   rL   )r   r-   r   r   rP   rQ   r`   r   )r/   rR   ra   rK   r-   mgfs   &,    r1   "compute_moment_generating_function=SingleDiscreteDistribution.compute_moment_generating_functionk   s\    #D!#t$hhqkACq((,,&EFa~r5   c                    R # r+   r6   rf   s   &&r1   _moment_generating_function6SingleDiscreteDistribution._moment_generating_functions   r[   r5   c                p    V'       g   V P                  V4      pVe   V# V P                  ! R/ VB ! V4      # )Nr6   )rs   rp   )r/   ra   rR   ro   s   &&, r1   moment_generating_function5SingleDiscreteDistribution.moment_generating_functionv   s8    2215C
66@@CCr5   c                    \        RRR7      p\        RRR7      pV P                  P                  pV P                  V4      p\	        WRWB33/ VB pW#V8*  33p\        V\        V!  4      # )z6Compute the Quantile from the PDF.

Returns a Lambda.
rK   Trn   prm   )r   rP   rQ   r-   r   r   r   )r/   rR   rK   ry   rS   r-   rT   rP   s   &,      r1   compute_quantile+SingleDiscreteDistribution.compute_quantile}   si     #t$#D!XX\\
hhqk/:6:8}aC))r5   c                    R # r+   r6   rX   s   &&r1   	_quantile$SingleDiscreteDistribution._quantile   r[   r5   c                p    V'       g   V P                  V4      pVe   V# V P                  ! R/ VB ! V4      # r]   )r}   rz   )r/   rK   rR   quantiles   &&, r1   r   #SingleDiscreteDistribution.quantile   s7    ~~a(H#$$.v.q11r5   c           	        V'       d    \        W4      p\        RRR7      pV P                  V4      pVP                  4       p\        \	        Wv^ V^,           4      P                  4       V4      p	^ p
\        V^,           4       FL  pWP                  W+,          4      V	P                  Wk,          4      ,          \        V4      ,          ,          p
KN  	  V
# \        WP                  V4      ,          W P                  P                  V P                  P                  33/ VB #   \         dP    \        YP                  T4      ,          Y P                  P                  T P                  P                  33/ TB u # i ; i)z,Expectation of expression over distribution ra   Trm   )r   r   rv   degreer   removeOrangecoeff_monomialr   r   r   r-   rP   rQ   r`   r   )r/   exprvarevaluaterR   ry   ra   ro   degtaylorresultks   &&&&,       r1   expectation&SingleDiscreteDistribution.expectation   sA    NO#D)55a8hhjfSQa8@@BAFs1uA..sx86;P;PQRQW;XX[def[gggF &  thhsm+xx||TXX\\:F>DF F # N !5"%xx||TXX\\!BNFLN NNs   C
D! !AE;:E;c                "    V P                   ! V!  # r+   r,   r.   s   &*r1   r2   #SingleDiscreteDistribution.__call__   r4   r5   r6   N)T)r7   r8   r9   r:   __doc__r   IntegersrP   rD   staticmethodrH   r   rU   rY   rT   rc   rg   rj   rp   rs   rv   rz   r}   r   r   r2   r;   r<   r=   s   @r1   r@   r@   $   s      **C)     -  A  D * *2F6 r5   r@   c                       ] tR t^tRtRtRtR# )DiscreteDomainzY
A domain with discrete support with step size one.
Represented using symbols and Range.
Tr6   N)r7   r8   r9   r:   r   is_Discreter;   r6   r5   r1   r   r      s     Kr5   r   c                   &   a  ] tR t^t o R tRtV tR# )SingleDiscreteDomainc                B    \        V P                  V P                  4      # r+   )r%   symbolrP   r/   s   &r1   
as_booleanSingleDiscreteDomain.as_boolean   s    TXX..r5   r6   Nr7   r8   r9   r:   r   r;   r<   r=   s   @r1   r   r      s     / /r5   r   c                   4   a  ] tR t^t o Rt]R 4       tRtV tR# )ConditionalDiscreteDomainzV
Domain with discrete support of step size one, that is restricted by
some condition.
c                   V P                   p\        V P                   4      ^8  d   \        \        R4      4      h\	        V4      ^ ,          p\        V P                  V4      P                  V P                  P                  4      # )   zJ
                Multivariate conditional domains are not yet implemented.)
r   lenNotImplementedErrorr&   rB   r   	condition	intersect
fulldomainrP   )r/   rvs   & r1   rP   ConditionalDiscreteDomain.set   sp    \\t||q %j 2M 'N O O"Xa[0	$//--.	/r5   r6   N)	r7   r8   r9   r:   r   propertyrP   r;   r<   r=   s   @r1   r   r      s      / /r5   r   c                   P   a  ] tR t^t o RtRt]R 4       tR tR t	R t
R tRtV tR# )	DiscretePSpaceTc                6    V P                   ! V P                  !  # r+   )densityr   r   s   &r1   r-   DiscretePSpace.pdf   s    ||T\\**r5   c                  a  \        V4      p\        ;QJ d    V 3R  lV 4       F  '       d   K   RM	  RM! V 3R  lV 4       4      '       g   Q h\        V4      ^8  d   \        \	        R4      4      h\        VV^ ,          4      pVP                  S P                  P                  4      p\        V^ ,          P                  V4      # )c              3   T   <"   T F  qP                   SP                  9   x  K  	  R # 5ir+   )r   r   ).0rr/   s   & r1   	<genexpr>'DiscretePSpace.where.<locals>.<genexpr>   s     9S88t||+Ss   %(FTzIMultivariate discrete
            random variables are not yet supported.)r   allr   r   r&   r   r   domainrP   r   r   )r/   r   rvsconditional_domains   f&  r1   whereDiscretePSpace.where   s    Y's9S9sss9S99999s8a<%j 27 '8 9 9>yF/99$++//J#CFMM3EFFr5   c                F   \        V\        4      pV'       d/   \        VP                  ^ ,          VP                  ^,          4      p V P	                  V4      P
                  pVR8X  g   V\        P                  J d   \        P                  # VR8X  g   W0P                  P
                  8X  d   \        P                  # V P                  V4      pVf   \3        V4      pV'       g   V# \        P                  V,
          #   \         d    ^ RIHp TP                  TP                   ,
          pT! T4      p\        T\"        4      '       g   ^ RIHp T! T4      p\)        RRR7      p	\+        Y4      p
T
P-                  TP/                  T
P0                  ^ 4      4      p Li ; i)r   FT)r   )DiscreteDistributionHandmaderM   rm   )
isinstancer
   r	   r0   r   rP   r   EmptySetZeror   One	eval_probr   sympy.stats.rvr   lhsrhsr)   sympy.stats.drv_typesr   r   SingleDiscretePSpaceprobability	__class__valuer!   )r/   r   
complement_domainprobr   r   densr   rM   spaces   &&         r1   r   DiscretePSpace.probability   s:   	2.
9>>!,innQ.?@I	Jjj+//GE!W

%:vvD G{{$>uu>>'*D <y)D%t71554<7 # 		J.==9==0D4=Dd$899N3D9c%A(1E$$Y%8%8a%HID		Js    AD  0D  ?D   BF F c                P  a a	 \        S P                  4      ^ ,          p\        V\        4      '       dx   \        RRR7      pR VP                   4       w  rEpS P
                  P                  W#V,          4      p\        VW4V,          WV,          ^,
          34      P                  4       pV# \        V\        4      '       d.   \        VS P
                  4      o	\        V	3R lV 4       4      pV# \        V\        4      '       d"   \        V 3R lVP                   4       4      pV# R# )r   nTrn   c              3   $   "   T F  qx  K  	  R # 5ir+   r6   )r   r   s   & r1   r   +DiscretePSpace.eval_prob.<locals>.<genexpr>  s     6Aas   c              3   4   <"   T F  pS! V4      x  K  	  R # 5ir+   r6   )r   rK   r-   s   & r1   r   r   	  s     -WSVVWs   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir+   )r   )r   rK   r/   s   & r1   r   r     s     =1T^^A&&s   !N)rB   r   r   r"   r0   r-   replacer   doitr#   r   sumr$   )
r/   r   symr   rQ   r`   stepsummandr   r-   s
   f&       @r1   r   DiscretePSpace.eval_prob   s    4<< #gu%%T*A66NCd))T6G7Hsj1n-//3tv I++dhh'C-W--BI''===BI (r5   c                6   \        \        V P                  4      V P                  V P	                  V4      ,          4      pTP                  V P                   Uu/ uF  q3VP                  bK  	  up4      p\        V P                  V4      p\        WB4      # u upi r+   )r   tupler   r-   r   xreplacevaluesr   r   r   r   )r/   r   r   r   r   s   &&   r1   conditional_space DiscretePSpace.conditional_space  sw     t||,dhht7G7G	7R.RS&&'L"BII'LM	*4;;	Bf.. (Ms   Br6   N)r7   r8   r9   r:   is_realr   r   r-   r   r   r   r   r;   r<   r=   s   @r1   r   r      s;     GK+ +	G82$/ /r5   r   c                   &   a  ] tR tRt o R tRtV tR# )ProductDiscreteDomaini  c                d    \        V P                   Uu. uF  qP                  NK  	  up!  # u upi r+   )r   domainsr   )r/   r   s   & r1   r    ProductDiscreteDomain.as_boolean  s'    T\\B\6&&\BCCBs   -r6   Nr   r=   s   @r1   r   r     s     D Dr5   r   c                   z   a  ] tR tRt o RtRt]R 4       t]R 4       tRR lt	RR lt
R	 tR
 tR tR tR tRtV tR# )r   i  z=Discrete probability space over a single univariate variable Tc                .    V P                   P                  # r+   )distributionrP   r   s   &r1   rP   SingleDiscretePSpace.set  s      $$$r5   c                B    \        V P                  V P                  4      # r+   )r   r   rP   r   s   &r1   r   SingleDiscretePSpace.domain#  s    #DKK::r5   Nc                T    V P                   V P                  P                  WVR7      /# )zX
Internal sample method.

Returns dictionary mapping RandomSymbol to realization value.
)libraryseed)r   r   sample)r/   sizer   r   s   &&&&r1   r   SingleDiscretePSpace.sample'  s*     

D--44TQU4VWWr5   c                   T;'       g    V P                   3pV P                   V9  d   V# \        V4      pTP                  V Uu/ uF  qUVP                  bK  	  up4      pV P                   P                  p V P                  P
                  ! W3R V/VB # u upi   \         dK    \        YP                  ,          Y`P                  P                  T P                  P                  33/ TB u # i ; i)r   )r   r'   r   r   r   r   r   r   r-   rP   rQ   r`   )r/   r   r   r   rR   r   rK   s   &&&&,  r1   compute_expectation(SingleDiscretePSpace.compute_expectation/  s    ""djj]::S K~}}c:c"))mc:;JJ	$$00 8  	 ; # 	thhHHLL$((,,(G  	s   B8B AC10C1c                    WP                   8X  d4   \        R RR7      p\        W0P                  P                  ! V3/ VB 4      # \        4       h)rK   Trm   )r   r   r   r   rT   r   )r/   r   rR   rK   s   &&, r1   rU    SingleDiscretePSpace.compute_cdf?  sB    ::c%A!..221??@@%''r5   c                N    WP                   8X  d   V P                  # \        4       hr+   )r   r   r   )r/   r   rR   s   &&,r1   compute_density$SingleDiscretePSpace.compute_densityF  s!    ::$$$!##r5   c                    WP                   8X  d4   \        R RR7      p\        W0P                  P                  ! V3/ VB 4      # \        4       hra   Trm   )r   r   r   r   rj   r   r/   r   rR   ra   s   &&, r1   rc   4SingleDiscretePSpace.compute_characteristic_functionK  sB    ::c%A!..FFqSFSTT%''r5   c                    WP                   8X  d4   \        R RR7      p\        W0P                  P                  ! V3/ VB 4      # \        4       hr   )r   r   r   r   rv   r   r  s   &&, r1   rp   7SingleDiscretePSpace.compute_moment_generating_functionR  sB    ::c%A!..II!VvVWW%''r5   c                    WP                   8X  d4   \        R RR7      p\        W0P                  P                  ! V3/ VB 4      # \        4       h)ry   Trm   )r   r   r   r   r   r   )r/   r   rR   ry   s   &&, r1   rz   %SingleDiscretePSpace.compute_quantileY  sB    ::c%A!..77DVDEE%''r5   r6   )r6   scipyN)NT)r7   r8   r9   r:   r   r   r   rP   r   r   r   rU   r   rc   rp   rz   r;   r<   r=   s   @r1   r   r     s\     HG% % ; ;X ($
((( (r5   r   N)Esympy.concrete.summationsr   r   sympy.core.basicr   sympy.core.cacher   sympy.core.functionr   sympy.core.numbersr   sympy.core.relationalr	   r
   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr   &sympy.functions.elementary.exponentialr   #sympy.functions.elementary.integersr   $sympy.functions.elementary.piecewiser   sympy.logic.boolalgr   sympy.polys.polytoolsr   sympy.series.seriesr   sympy.polys.polyerrorsr   sympy.stats.crvr   r   r   r   r   r   r   r   r   r   r     sympy.stats.symbolic_probabilityr!   sympy.sets.fancysetsr"   r#   sympy.sets.setsr$   sympy.sets.containsr%   sympy.utilitiesr&   r'   r)   r@   r   r   r   r   r   r   r6   r5   r1   <module>r     s    6 " $ &   * " . & > 6 5 : # & & 2 =9 9 9 9 1 ! ( & '< 
N!5~ Nb\ />< /
/0A / D/V D/LDM> DC(>< C(r5   