+
    iA                        R 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 ^ RI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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/H0t0H1t1H2t2H3t3H4t4H5t5  ! R R]64      t7 ! R R]*4      t8 ! R R]84      t9 ! R R]+]84      t: ! R R],]:4      t; ! R  R!]5]34      t< ! R" R#]-4      t= ! R$ R%]/]=4      t> ! R& R'].]=4      t?R(# ))zq
Finite Discrete Random Variables Module

See Also
========
sympy.stats.frv_types
sympy.stats.rv
sympy.stats.crv
)product)Sum)Basic)cacheit)Lambda)Mul)Inan)Eq)S)DummySymbolsympifyexp)	Piecewise)AndOr)Intersection)Dict)Logic)
Relational)_sympify	FiniteSet)RandomDomainProductDomainConditionalDomainPSpaceIndependentProductPSpaceSinglePSpacerandom_symbolssumsetsrv_subsNamedArgsMixinDensityDistributionc                   :   a  ] tR t^$t o RtR t]R 4       tRtV t	R# )FiniteDensityz
A domain with Finite Density.
c                8    \        V4      pW9   d	   W,          # ^ # )zv
Make instance of a class callable.

If item belongs to current instance of a class, return it.

Otherwise, return 0.
r   )selfitems   &&o/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/stats/frv.py__call__FiniteDensity.__call__(   s     t}<:    c                    \        V 4      # )z
Return item as dictionary.
)dictr+   s   &r-   r2   FiniteDensity.dict6   s    
 Dzr0    N)
__name__
__module____qualname____firstlineno____doc__r.   propertyr2   __static_attributes____classdictcell____classdict__s   @r-   r)   r)   $   s#       r0   r)   c                   j   a  ] tR t^=t o RtRt]R 4       t]R 4       t]R 4       t	R t
R tR tR	tV tR
# )FiniteDomainzG
A domain with discrete finite support

Represented using a FiniteSet.
Tc                :    \        R  V P                   4       4      # )c              3   *   "   T F	  w  rVx  K  	  R # 5iNr5   ).0symvals   &  r-   	<genexpr>'FiniteDomain.symbols.<locals>.<genexpr>G   s     ;]]s   )r   elementsr3   s   &r-   symbolsFiniteDomain.symbolsE   s    ;T]];;;r0   c                (    V P                   ^ ,          #     argsr3   s   &r-   rJ   FiniteDomain.elementsI       yy|r0   c           
     v    \        V P                   Uu. uF  p\        \        V4      4      NK  	  up!  # u upi rD   )r   rJ   r   r2   )r+   els   & r-   r2   FiniteDomain.dictM   s+    DMMBMb4R>MBCCBs   6c                    WP                   9   # rD   )rJ   r+   others   &&r-   __contains__FiniteDomain.__contains__Q   s    %%r0   c                6    V P                   P                  4       # rD   )rJ   __iter__r3   s   &r-   r]   FiniteDomain.__iter__T   s    }}%%''r0   c                    \        V  UUUu. uF)  p\        V UUu. uF  w  r#\        W#4      NK  	  upp!  NK+  	  uppp!  # u uppi u upppi rD   )r   r   r
   )r+   r,   rF   rG   s   &   r-   
as_booleanFiniteDomain.as_booleanW   s<    $O$$Ct<t83"S,t<=$OPP<Os   AA
AAr5   N)r6   r7   r8   r9   r:   	is_Finiter;   rK   rJ   r2   rZ   r]   r`   r<   r=   r>   s   @r-   rA   rA   =   sc     
 I< <   D D&(Q Qr0   rA   c                   v   a  ] tR t^[t o RtR t]R 4       t]R 4       t]R 4       t	]R 4       t
R tR tR	tV tR
# )SingleFiniteDomainz]
A FiniteDomain over a single symbol/set

Example: The possibilities of a *single* die roll.
c                    \        V\        4      '       g    \        V\        4      '       g
   \        V!  p\        P                  ! WV4      # rD   )
isinstancer   r   r   __new__)clssymbolsets   &&&r-   rg   SingleFiniteDomain.__new__b   s6    #y))3--S/C}}S#..r0   c                (    V P                   ^ ,          # rN   rP   r3   s   &r-   ri   SingleFiniteDomain.symbolh   rS   r0   c                ,    \        V P                  4      # rD   )r   ri   r3   s   &r-   rK   SingleFiniteDomain.symbolsl   s    %%r0   c                (    V P                   ^,          #    rP   r3   s   &r-   rj   SingleFiniteDomain.setp   rS   r0   c           	     ~    \        V P                   Uu. uF  p\        V P                  V334      NK  	  up!  # u upi rD   )r   rj   	frozensetri   r+   elems   & r-   rJ   SingleFiniteDomain.elementst   s4    $((S($9t{{D&9%<=(STTSs   !:c                0   a  V 3R  lS P                    4       # )c              3   T   <"   T F  p\        SP                  V334      x  K  	  R # 5irD   )ru   ri   rE   rw   r+   s   & r-   rH   .SingleFiniteDomain.__iter__.<locals>.<genexpr>y   s%     Ghd	DKK.011h   %(rj   r3   s   fr-   r]   SingleFiniteDomain.__iter__x   s    GdhhGGr0   c                r    \        V4      ^ ,          w  r#W P                  8H  ;'       d    W0P                  9   # rN   )tupleri   rj   )r+   rY   rF   rG   s   &&  r-   rZ   SingleFiniteDomain.__contains__{   s,    <?kk!55cXXo5r0   r5   N)r6   r7   r8   r9   r:   rg   r;   ri   rK   rj   rJ   r]   rZ   r<   r=   r>   s   @r-   rd   rd   [   sq     /   & &   U UH6 6r0   rd   c                   :   a  ] tR t^t o RtR t]R 4       tRtV t	R# )ProductFiniteDomainz~
A Finite domain consisting of several other FiniteDomains

Example: The possibilities of the rolls of three independent dice
c                :    \        V P                  !  pR  V 4       # )c              3   8   "   T F  p\        V4      x  K  	  R # 5irD   )r#   )rE   itemss   & r-   rH   /ProductFiniteDomain.__iter__.<locals>.<genexpr>   s     5H5H   )r   domains)r+   proditers   & r-   r]   ProductFiniteDomain.__iter__   s    DLL)5H55r0   c                    \        V !  # rD   r   r3   s   &r-   rJ   ProductFiniteDomain.elements   s    $r0   r5   N)
r6   r7   r8   r9   r:   r]   r;   rJ   r<   r=   r>   s   @r-   r   r      s#     6    r0   r   c                   R   a  ] tR t^t o RtR tR tR tR t]	R 4       t
R tRtV tR	# )
ConditionalFiniteDomainz
A FiniteDomain that has been restricted by a condition

Example: The possibilities of a die roll under the condition that the
roll is even.
c                V    VRJ d   V# \        V4      p\        P                  ! WV4      # )z8
Create a new instance of ConditionalFiniteDomain class
T)r$   r   rg   )rh   domain	conditionconds   &&& r-   rg   ConditionalFiniteDomain.__new__   s,     My!}}S$//r0   c                    V P                   P                  \        V4      4      pVR9   d   V# VP                  '       d   VP                  VP
                  8H  # \        R\        V4      ,          4      h)z
Test the value. If value is boolean, return it. If value is equality
relational (two objects are equal), return it with left-hand side
being equal to right-hand side. Otherwise, raise ValueError exception.
zUndecidable if %s)TF)r   xreplacer2   is_Equalitylhsrhs
ValueErrorstr)r+   rw   rG   s   && r-   _testConditionalFiniteDomain._test   sZ     nn%%d4j1-J___77cgg%%,s3x788r0   c                P    WP                   9   ;'       d    V P                  V4      # rD   )
fulldomainr   rX   s   &&r-   rZ   $ConditionalFiniteDomain.__contains__   s     '==DJJu,==r0   c                0   a  V 3R  lS P                    4       # )c              3   Z   <"   T F   pSP                  V4      '       g   K  Vx  K"  	  R # 5irD   )r   r{   s   & r-   rH   3ConditionalFiniteDomain.__iter__.<locals>.<genexpr>   s     EDJJt4Ds   +
+)r   r3   s   fr-   r]    ConditionalFiniteDomain.__iter__   s    EEEr0   c           	        \        V P                  \        4      '       dW   \        V P                  P                   Uu. uF.  p\        V P                  P                  V334      V 9   g   K,  VNK0  	  up!  # \        R 4      hu upi )z7Not implemented on multi-dimensional conditional domain)rf   r   rd   r   rj   ru   ri   NotImplementedErrorrv   s   & r-   rj   ConditionalFiniteDomain.set   s    doo'9::0C0C X0C"+doo.D.Dd-K,M"NRV"V  $t0C X Y Y &IK KXs   )B,Bc                ,    \         P                  V 4      # rD   )rA   r`   r3   s   &r-   r`   "ConditionalFiniteDomain.as_boolean   s    &&t,,r0   r5   N)r6   r7   r8   r9   r:   rg   r   rZ   r]   r;   rj   r`   r<   r=   r>   s   @r-   r   r      s?     09>F K K- -r0   r   c                      a  ] tR t^t o R t]R 4       t]]R 4       4       t	R t
]R 4       t]! R 4      t]! R 4      t]! R 4      t]! R	 4      t]! R
 4      tR tR tRtV tR# )SingleFiniteDistributionc                d    \        \        \        V4      4      p\        P                  ! V .VO5!  # rD   )listmapr   r   rg   )rh   rQ   s   &*r-   rg    SingleFiniteDistribution.__new__   s'    C&'}}S(4((r0   c                     R # rD   r5   rP   s   *r-   checkSingleFiniteDistribution.check   s    r0   c                    V P                   '       d   \        V 4      # V P                   Uu/ uF  qV P                  V4      bK  	  up# u upi rD   )is_symbolicr&   rj   pmf)r+   ks   & r-   r2   SingleFiniteDistribution.dict   s@     4= (,11488A;111s   A	c                    \        4       hrD   r   r+   rQ   s   &*r-   r   SingleFiniteDistribution.pmf   s    !##r0   c                    \        4       hrD   r   r3   s   &r-   rj   SingleFiniteDistribution.set   s    !##r0   c                .    V P                   P                  # rD   )r2   valuesr3   s   &r-   <lambda>!SingleFiniteDistribution.<lambda>   s    499#3#3r0   c                .    V P                   P                  # rD   )r2   r   r3   s   &r-   r   r      s    $))//r0   c                    R # Fr5   r3   s   &r-   r   r      s    r0   c                .    V P                   P                  # rD   )r2   r]   r3   s   &r-   r   r      s    TYY%7%7r0   c                .    V P                   P                  # rD   )r2   __getitem__r3   s   &r-   r   r      s    		(=(=r0   c                "    V P                   ! V!  # rD   )r   r   s   &*r-   r.   !SingleFiniteDistribution.__call__   s    xxr0   c                    WP                   9   # rD   r~   rX   s   &&r-   rZ   %SingleFiniteDistribution.__contains__   s      r0   r5   N)r6   r7   r8   r9   rg   staticmethodr   r;   r   r2   r   rj   r   r   r   r]   r   r.   rZ   r<   r=   r>   s   @r-   r   r      s     )   2  2
$ $ $ 34F12E-.K78H=>K! !r0   r   c                      a  ] tR t^t o RtRtR tR tR tR t	]
R 4       t]
RR l4       t]
R	 4       t]
R
 4       tRR ltR tR tR tRR ltRtV tR# )FinitePSpacezX
A Finite Probability Space

Represents the probabilities of a finite number of events.
Tc                    VP                  4        UUu/ uF  w  r4\        V4      \        V4      bK  	  ppp\        V4      p\        P                  ! WV4      pW&n        V# u uppi rD   )r   r   r   r   rg   _density)rh   r   densitykeyrG   public_densityobjs   &&&    r-   rg   FinitePSpace.__new__   s_     '1 /HC 3<- / 	 1gnnS.9
1s    A!c                F   \        V4      pV P                  p\        \        VP	                  4       4      ^ ,          \
        4      '       d!   VP                  V\        P                  4      # VP                  \        V4      ^ ,          ^,          \        P                  4      # rN   )
r   r   rf   r   keysr   getr   Zeror   )r+   rw   r   s   && r-   prob_ofFinitePSpace.prob_of   sh    t}--d7<<>*1-y99;;tQVV,,{{5;q>!,aff55r0   c                   a  \         ;QJ d(    V 3R  l\        V4       4       F  '       d   K   RM	  RM! V 3R  l\        V4       4       4      '       g   Q h\        S P                  V4      # )c              3   T   <"   T F  qP                   SP                  9   x  K  	  R # 5irD   )ri   rK   )rE   rr+   s   & r-   rH   %FinitePSpace.where.<locals>.<genexpr>  s     O5N88t||+5Nr}   FT)allr"   r   r   r+   r   s   f&r-   whereFinitePSpace.where  sE    sO^I5NOsssO^I5NOOOOO&t{{I>>r0   c                   \        WP                  4      p\        4       pV P                   FW  pVP	                  \        V4      4      pV P                  V4      pVP                  V\        P                  4      V,           W$&   KY  	  V# rD   )
r$   r   r)   r   r   r2   r   r   r   r   )r+   exprdrw   rG   probs   &&    r-   compute_densityFinitePSpace.compute_density  sg    t[[)OKKD--T
+C<<%DUU3'$.AF   r0   c                    V P                  V4      p\        P                  p. p\        V4       F%  pW%,          pW6,          pVP	                  WS34       K'  	  \        V4      # rD   )r   r   r   sortedappendr2   )r+   r   r   cum_probcdfr   r   s   &&     r-   compute_cdfFinitePSpace.compute_cdf  sW      &66!9C6DHJJ' 
 Cyr0   c                    V P                  V4      p\        VP                  4       4      p\        VR  R7      pV'       d!   V UUu. uF  w  rgV\	        V4      3NK  	  pppV# u uppi )c                     V ^,          # rq   r5   )val_cumprobs   &r-   r   )FinitePSpace.sorted_cdf.<locals>.<lambda>  s    [^r0   )r   )r   r   r   r   float)r+   r   python_floatr   r   sorted_itemsvr   s   &&&     r-   
sorted_cdfFinitePSpace.sorted_cdf  sh    t$SYY[!e)KL'35'3 h0'3  55s   A#c                   a V P                  V4      p\        R RR7      o\        S\        V3R lVP	                  4        4       4      4      # )tTrealc              3   p   <"   T F+  w  r\        \        V,          S,          4      V,          x  K-  	  R # 5irD   )r   r   rE   r   r   r   s   &  r-   rH   ?FinitePSpace.compute_characteristic_function.<locals>.<genexpr>*  s%     ?YcaS1QZ\\Ys   36r   r   r   sumr   r+   r   r   r   s   && @r-   compute_characteristic_function,FinitePSpace.compute_characteristic_function%  s=      &#D!a?QWWY??@@r0   c                   a V P                  V4      p\        R RR7      o\        S\        V3R lVP	                  4        4       4      4      # )r   Tr   c              3   Z   <"   T F   w  r\        VS,          4      V,          x  K"  	  R # 5irD   r   r  s   &  r-   rH   BFinitePSpace.compute_moment_generating_function.<locals>.<genexpr>1  s!     =9CAS1XaZZ9s   (+r  r  s   && @r-   "compute_moment_generating_function/FinitePSpace.compute_moment_generating_function,  s=      &#D!a=1779==>>r0   Nc                   T;'       g    V P                   p\        W4      pV P                   Uu. uF  q@P                  V4      NK  	  pp\	        V\
        \        34      '       df   V P                   Uu. uF  p\        V4      ^ ,          ^,          NK  	  ppV P                   Uu. uF  qAP                  \        V4      4      NK  	  ppMMV P                   Uu. uF  qAP                  \        V4      4      NK  	  ppV P                   Uu. uF  pRNK  	  pp\        R \        WVV4       4       4      # u upi u upi u upi u upi u upi )rO   Tc              3   p   "   T F,  w  rp\        W,          V3\        P                  R 34      x  K.  	  R# 5i)TN)r   r   r   )rE   r   rw   blvs   &   r-   rH   3FinitePSpace.compute_expectation.<locals>.<genexpr>=  s5      H'FOD dk3/!&&$@@'Fs   46)r   r$   r   r   rf   r   r   r   r   r2   r  zip)r+   r   rvskwargsrw   probsparse_domainboolss   &&&,    r-   compute_expectation FinitePSpace.compute_expectation3  s     T[[t!04<d#<dUJ/00:>++F+$E$KN1--+LF;?;;G;4]]4:.;EGEBF++N+$MM$t*5+LN&*kk2kdTkE2 H'*5'FH H 	H =FGN2s   D55"D:'"D?"EE	c                    V P                  V4      p\        R RR7      p\        V^ 8  V^8  ,          33pVP                  4        F  w  rVWEW68*  33,           pK  	  \	        V\        V!  4      # )pTr   )r   r   r	   r   r   r   )r+   r   r   r  rj   r   values   &&     r-   compute_quantileFinitePSpace.compute_quantile@  sm    t$#D!a!eA&')))+JCqz*--C &aC))r0   c                  a aa \        R  \        S4       4       4      p\        S4      pVP                  S P                  4      '       g-   \        R\        VS P                  ,
          4      ,          4      h\        S\        4      '       d   VP                  P                  S P                  P                  4      '       gZ   \        SP                  \        4      '       d   SP                  MSP                  o\        VVV 3R lS P                   4       4      # \        \        V 3R lS P!                  S4       4       4      4      # )c              3   8   "   T F  qP                   x  K  	  R # 5irD   )ri   )rE   rss   & r-   rH   +FinitePSpace.probability.<locals>.<genexpr>I  s      O5Nr5Nr   z)Cannot compare foreign random symbols, %sc           
   3      <"   T FY  p\        SP                  V4      SP                  S\        V4      ^ ,          ^,          4      3\        P
                  R34      x  K[  	  R# 5i)rO   TN)r   r   subsr   r   r   )rE   rw   r   rvr+   s   & r-   rH   r!  Q  sW      @3>4 !T*INN2tDz!}Q?O,PQ~' '3>s   A!A$c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5irD   )r   r{   s   & r-   rH   r!  T  s     P:O$4<<--:Os   !)ru   r"   r$   issubsetrK   r   r   rf   r   free_symbolsr   r   r   r   r  r   r   )r+   r   cond_symbolsr   r$  s   ff  @r-   probabilityFinitePSpace.probabilityH  s      O^I5N OOy!$$T\\22H"<$,,#>?A B Bi,,""++DKK,D,DEE",Y]]F"C"CB @37;;@ @ @ sP$**Y:OPPQQr0   c                   V P                  V4      pV P                  V4      pV P                  P                  4        UUu/ uF'  w  rEVP	                  V4      '       g   K  WEV,          bK)  	  ppp\        W&4      # u uppi rD   )r   r)  r   r   r   r   r+   r   r   r   r   rG   r   s   &&     r-   conditional_spaceFinitePSpace.conditional_spaceV  su    I&	* $ 3 3 5L 5HCc9J #3d
? 5 	 LF,,Ls    A; A;c                R    V P                   V P                  P                  WV4      /# )zW
Internal sample method

Returns dictionary mapping RandomSymbol to realization value.
)r  distributionsample)r+   sizelibraryseeds   &&&&r-   r1  FinitePSpace.sample]  s&     

D--44TDIJJr0   r5   r   rD   )r5   scipyN)r6   r7   r8   r9   r:   rb   rg   r   r   r   r   r   r   r  r  r  r  r)  r-  r1  r<   r=   r>   s   @r-   r   r      s     
 I6? 	 	   A A ? ?H*R-K Kr0   r   c                      a  ] tR tRt o Rt]R 4       t]R 4       t]R 4       tR t	]]
R 4       4       t]
R 4       t]
R	 4       tR
 tR tR tRR ltR tR tRtV tR# )SingleFinitePSpaceif  z
A single finite probability space

Represents the probabilities of a set of random events that can be
attributed to a single variable/symbol.

This class is implemented by many of the standard FiniteRV types such as
Die, Bernoulli, Coin, etc....
c                V    \        V P                  V P                  P                  4      # rD   )rd   ri   r0  rj   r3   s   &r-   r   SingleFinitePSpace.domainp  s    !$++t/@/@/D/DEEr0   c                .    V P                   P                  # )zc
Helper property to check if the distribution
of the random variable is having symbolic
dimension.
)r0  r   r3   s   &r-   _is_symbolicSingleFinitePSpace._is_symbolict  s       ,,,r0   c                (    V P                   ^,          # rq   rP   r3   s   &r-   r0  SingleFinitePSpace.distribution}  rS   r0   c                8    V P                   P                  V4      # rD   )r0  r   r+   r   s   &&r-   r   SingleFinitePSpace.pmf  s      $$T**r0   c                    V P                   P                  P                  4        UUu/ uF  w  r\        V P                  V34      VbK  	  upp# u uppi rD   )r0  r2   r   r   ri   )r+   rG   r   s   &  r-   r   SingleFinitePSpace._density  sW     &*%6%6%;%;%A%A%CE%C	 4;;,-t3%CE 	E Es   #Ac           
        V P                   '       d   V P                  V4      p\        R RR7      p\        R4      p\        V\	        V! V4      \        \        V,          V,          4      ,          W@P                  ^,          P                  V P                  ^,          P                  34      4      # \        WP                  4      p\        V P                  V P                  4      P                  V4      # r   Tr   ki)r<  r   r   r   r   r   r   rQ   lowhighr$   r   r   r   r0  r  r+   r   r   r   rG  s   &&   r-   r  2SingleFinitePSpace.compute_characteristic_function  s    $$T*Ac%AtB!S2s1R46{!2R19I9I499UV<K\K\4]^__t[[)DKK):):;[[\`aar0   c           
        V P                   '       d   V P                  V4      p\        R RR7      p\        R4      p\        V\	        V! V4      \        WC,          4      ,          W@P                  ^,          P                  V P                  ^,          P                  34      4      # \        WP                  4      p\        V P                  V P                  4      P                  V4      # rF  )r<  r   r   r   r   r   rQ   rH  rI  r$   r   r   r   r0  r  rJ  s   &&   r-   r  5SingleFinitePSpace.compute_moment_generating_function  s    $$T*Ac%AtB!S2s24y2yy|7G7GSTIZIZ2[\]]t[[)DKK):):;^^_cddr0   c                    V P                   '       d   \        R 4      h\        WP                  4      p\	        V P
                  V P                  4      P                  V4      # )zComputing quantile for random variables with symbolic dimension because the bounds of searching the required value is undetermined.)r<  r   r$   r   r   r   r0  r  rA  s   &&r-   r  #SingleFinitePSpace.compute_quantile  sR    % '% & & t[[)DKK):):;LLTRRr0   c                T   V P                   '       d   \        \        V4      4      ^ ,          p\        RRR7      p\	        V\
        \        34      '       g   RMVP                  W#4      p\        V\        V P                  V4      \        W0P                  ^,          P                  8  W0P                  ^,          P                  8*  V4      3\        P                   R34      4      # \#        WP$                  4      p\'        V P(                  V P*                  4      P-                  V4      # rO   r   T)integer)r<  r   r"   r   rf   r   r   r#  r   r   r   r   rQ   rH  rI  r   r   r$   r   r   r   r0  r   )r+   r   r$  r   r   s   &&   r-   r   "SingleFinitePSpace.compute_density  s    nT*+A.Bc4(A)$U0CDD4))B* !txx{CYYq\-=-=(=1"""D%* +-.VVTN<= = t[[)DKK):):;KKDQQr0   c           	     n   V P                   '       da   V P                  V4      p\        R 4      p\        R4      p\        V\	        V! V4      W@P
                  ^,          P                  V34      4      # \        WP                  4      p\        V P                  V P                  4      P                  V4      # )r   rG  )r<  r   r   r   r   rQ   rH  r$   r   r   r   r0  r   )r+   r   r   r   rG  s   &&   r-   r   SingleFinitePSpace.compute_cdf  s    $$T*Ac
AtB!S2YYq\-=-=q(ABCCt[[)DKK):):;GGMMr0   Nc                   V P                   '       d   \        V4      ^ ,          p\        RRR7      pVP                  WE4      p\	        V\
        \        34      '       g   RMTpVR8w  d   V P                  V4      V,          MV P                  V4      V,          p\        \        Wv3\        P                  R34      WPP                  P                  V P                  P                  34      P                  4       # \!        V4      p\#        W4      p\%        V P&                  V P                  4      P(                  ! W3/ VB # rQ  )r<  r"   r   r#  rf   r   r   r   r   r   r   r   r0  rH  rI  doitr   r$   r   r   r  )r+   r   r  r  r$  r   r   funcs   &&&,    r-   r  &SingleFinitePSpace.compute_expectation  s    %a(Bc4(A99R#D)$U0CDD4 &*dl488A;?d8JDy$~>%%))4+<+<+A+ABDDHDFK ~t!DKK):):;OOPTd]cddr0   c                    V P                   '       d   \        R 4      h\        V4      p\        V P                  V P
                  4      P                  V4      # )zhCurrently, probability queries are not supported for random variables with symbolic sized distributions.)r<  r   r$   r   r   r0  r)  r   s   &&r-   r)  SingleFinitePSpace.probability  sO    % 'P Q QI&	DKK):):;GG	RRr0   c                *   V P                   '       d   V  V P                  V4      pV P                  V4      pV P                  P	                  4        UUu/ uF'  w  rEVP                  V4      '       g   K  WEV,          bK)  	  ppp\        W&4      # u uppi )z
This method is used for transferring the
computation to probability method because
conditional space of random variables with
symbolic dimensions is currently not possible.
)r<  r   r)  r   r   r   r   r,  s   &&     r-   r-  $SingleFinitePSpace.conditional_space  s     I&	* $ 3 3 5L 5HCc9J #3d
? 5 	 LF,,Ls   B4Br5   rD   )r6   r7   r8   r9   r:   r;   r   r<  r0  r   r   r   r  r  r  r   r   r  r)  r-  r<   r=   r>   s   @r-   r8  r8  f  s      F F - -  + E  E b b e eS
RNeS- -r0   r8  c                   t   a  ] tR tRt o Rt]R 4       t]]R 4       4       t]]R 4       4       t	R t
R tRtV tR	# )
ProductFinitePSpacei  z?
A collection of several independent finite probability spaces
c                d    \        V P                   Uu. uF  qP                  NK  	  up!  # u upi rD   )r   spacesr   )r+   spaces   & r-   r   ProductFinitePSpace.domain  s%    "t{{$K{e\\{$KLL$Ks   -c           	     b   \        V P                   Uu. uF&  p\        VP                  P	                  4       4      NK(  	  up!  p/ pV FT  p\        \        V!  4      w  rV\        V4      p\        V!  pVP                  V\        P                  4      V,           W7&   KV  	  \        V4      # u upi rD   )r   ra  iterr   r   r   r  r#   r   r   r   r   r   )	r+   rb  r   r   r   elemsr  rw   r   s	   &        r-   r   ProductFinitePSpace._density  s     &$ "%.."6"6"89$& 'EU,LE5>D;DeeD!&&)D0AG	 
 Aw&s   ,B,c                ,    \        V P                  4      # rD   )r   r   r3   s   &r-   r   ProductFinitePSpace.density  s     DMM""r0   c                ,    \         P                  W4      # rD   )r   r)  r   s   &&r-   r)  ProductFinitePSpace.probability  s    ''88r0   c                ,    \         P                  W4      # rD   )r   r   rA  s   &&r-   r   #ProductFinitePSpace.compute_density  s    ++D77r0   r5   N)r6   r7   r8   r9   r:   r;   r   r   r   r   r)  r   r<   r=   r>   s   @r-   r_  r_    sg      M M 	  	 #  #98 8r0   r_  N)@r:   	itertoolsr   sympy.concrete.summationsr   sympy.core.basicr   sympy.core.cacher   sympy.core.functionr   sympy.core.mulr   sympy.core.numbersr   r	   sympy.core.relationalr
   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   &sympy.functions.elementary.exponentialr   $sympy.functions.elementary.piecewiser   sympy.logic.boolalgr   r   sympy.sets.setsr   sympy.core.containersr   sympy.core.logicr   r   r   r   sympy.stats.rvr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r2   r)   rA   rd   r   r   r   r   r8  r_  r5   r0   r-   <module>r     s     ) " $ &  ' $ " - & 6 : ) ( & " , ' %U U U U
D 2Q< Q<"6 "6J -   .-/1D .-b!!|^ !!RyK6 yKxy-| y-x82L 8r0   