§
    PŠtjêA  ã                   óD  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddlm&Z& ddlm'Z' ddl m(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5  G d„ de6¦  «        Z7 G d„ de*¦  «        Z8 G d„ de8¦  «        Z9 G d„ de+e8¦  «        Z: G d„ d e,e:¦  «        Z; G d!„ d"e5e3¦  «        Z< G d#„ d$e-¦  «        Z= G d%„ d&e/e=¦  «        Z> G d'„ d(e.e=¦  «        Z?d)S )*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                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )ÚFiniteDensityz'
    A domain with Finite Density.
    c                 ó<   — t          |¦  «        }|| v r| |         S dS )z–
        Make instance of a class callable.

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

        Otherwise, return 0.
        r   r   )ÚselfÚitems     úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/stats/frv.pyÚ__call__zFiniteDensity.__call__(   s'   € õ �t‰}Œ}ˆØ�4ˆ<ˆ<Ø˜”:Ðà�1ó    c                 ó    — t          | ¦  «        S )z,
        Return item as dictionary.
        )Údict©r-   s    r/   r3   zFiniteDensity.dict6   s   € õ
 �D‰zŒzÐr1   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   Úpropertyr3   © r1   r/   r+   r+   $   sH   € € € € € ðð ðð ð ð ðð ñ „Xðð ð r1   r+   c                   ój   — e Zd ZdZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
d„ Zd	S )
ÚFiniteDomainzS
    A domain with discrete finite support

    Represented using a FiniteSet.
    Tc                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó    K  — | ]	\  }}|V — Œ
d S ©Nr:   ©Ú.0ÚsymÚvals      r/   ú	<genexpr>z'FiniteDomain.symbols.<locals>.<genexpr>G   s&   è è € Ð;Ð;¡  c˜Ð;Ð;Ð;Ð;Ð;Ð;r1   ©r   Úelementsr4   s    r/   ÚsymbolszFiniteDomain.symbolsE   s!   € åÐ;Ð;¨T¬]Ð;Ñ;Ô;Ñ;Ô;Ð;r1   c                 ó   — | j         d         S ©Nr   ©Úargsr4   s    r/   rF   zFiniteDomain.elementsI   ó   € àŒy˜Œ|Ðr1   c                 ó2   — t          d„ | j        D ¦   «         Ž S )Nc                 óF   — g | ]}t          t          |¦  «        ¦  «        ‘ŒS r:   )r   r3   )rA   Úels     r/   ú
<listcomp>z%FiniteDomain.dict.<locals>.<listcomp>O   s$   € ÐBÐBÐB¨b�4¥ R¡¤™>œ>ÐBÐBÐBr1   rE   r4   s    r/   r3   zFiniteDomain.dictM   s   € åÐBÐB°D´MÐBÑBÔBÐCÐCr1   c                 ó   — || j         v S r?   )rF   ©r-   Úothers     r/   Ú__contains__zFiniteDomain.__contains__Q   s   € Ø˜œÐ%Ð%r1   c                 ó4   — | j                              ¦   «         S r?   )rF   Ú__iter__r4   s    r/   rV   zFiniteDomain.__iter__T   s   € ØŒ}×%Ò%Ñ'Ô'Ð'r1   c                 ó(   — t          d„ | D ¦   «         Ž S )Nc                 ó4   — g | ]}t          d „ |D ¦   «         Ž ‘ŒS )c                 ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r:   r   r@   s      r/   rP   z6FiniteDomain.as_boolean.<locals>.<listcomp>.<listcomp>X   s$   € Ð<Ð<Ð<©8¨3°�"˜S #™,œ,Ð<Ð<Ð<r1   )r   )rA   r.   s     r/   rP   z+FiniteDomain.as_boolean.<locals>.<listcomp>X   s,   € ÐOÐOÐOÀ$•CÐ<Ð<°tÐ<Ñ<Ô<Ð=ÐOÐOÐOr1   )r   r4   s    r/   Ú
as_booleanzFiniteDomain.as_booleanW   s   € ÝÐOÐOÈ$ÐOÑOÔOÐPÐPr1   N)r5   r6   r7   r8   Ú	is_Finiter9   rG   rF   r3   rT   rV   rZ   r:   r1   r/   r<   r<   =   s©   € € € € € ðð ð
 €Iàð<ð <ñ „Xð<ð ðð ñ „Xðð ðDð Dñ „XðDð&ð &ð &ð(ð (ð (ðQð Qð Qð Qð Qr1   r<   c                   ó|   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd	S )
ÚSingleFiniteDomainzi
    A FiniteDomain over a single symbol/set

    Example: The possibilities of a *single* die roll.
    c                 ó”   — t          |t          ¦  «        st          |t          ¦  «        s	t          |Ž }t          j        | ||¦  «        S r?   )Ú
isinstancer   r   r   Ú__new__)ÚclsÚsymbolÚsets      r/   r`   zSingleFiniteDomain.__new__b   sC   € Ý˜#�yÑ)Ô)ð 	"Ý˜3¥Ñ-Ô-ð	"å˜S�/ˆCÝŒ}˜S &¨#Ñ.Ô.Ð.r1   c                 ó   — | j         d         S rI   rJ   r4   s    r/   rb   zSingleFiniteDomain.symbolh   rL   r1   c                 ó*   — t          | j        ¦  «        S r?   ©r   rb   r4   s    r/   rG   zSingleFiniteDomain.symbolsl   s   € å˜œÑ%Ô%Ð%r1   c                 ó   — | j         d         S ©Né   rJ   r4   s    r/   rc   zSingleFiniteDomain.setp   rL   r1   c                 ó8   ‡ — t          ˆ fd„‰ j        D ¦   «         Ž S )Nc                 ó>   •— g | ]}t          ‰j        |ff¦  «        ‘ŒS r:   ©Ú	frozensetrb   ©rA   Úelemr-   s     €r/   rP   z/SingleFiniteDomain.elements.<locals>.<listcomp>v   s+   ø€ ÐSÐSÐSÀ$�9 t¤{°DÐ&9Ð%<Ñ=Ô=ÐSÐSÐSr1   )r   rc   r4   s   `r/   rF   zSingleFiniteDomain.elementst   s%   ø€ åÐSÐSÐSÐSÈ$Ì(ÐSÑSÔSÐTÐTr1   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc              3   óF   •K  — | ]}t          ‰j        |ff¦  «        V — Œd S r?   rl   rn   s     €r/   rD   z.SingleFiniteDomain.__iter__.<locals>.<genexpr>y   s5   øè è € ÐGÐG°d•	˜DœK¨Ð.Ð0Ñ1Ô1ÐGÐGÐGÐGÐGÐGr1   ©rc   r4   s   `r/   rV   zSingleFiniteDomain.__iter__x   s   ø€ ØGÐGÐGÐG¸d¼hÐGÑGÔGÐGr1   c                 óZ   — t          |¦  «        d         \  }}|| j        k    o|| j        v S rI   )Útuplerb   rc   )r-   rS   rB   rC   s       r/   rT   zSingleFiniteDomain.__contains__{   s-   € Ý˜‘<”< ”?‰ˆˆSØ�d”kÒ!Ð5 c¨T¬X oÐ5r1   N)r5   r6   r7   r8   r`   r9   rb   rG   rc   rF   rV   rT   r:   r1   r/   r]   r]   [   s½   € € € € € ðð ð/ð /ð /ð ðð ñ „Xðð ð&ð &ñ „Xð&ð ðð ñ „Xðð ðUð Uñ „XðUðHð Hð Hð6ð 6ð 6ð 6ð 6r1   r]   c                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )ÚProductFiniteDomainzŠ
    A Finite domain consisting of several other FiniteDomains

    Example: The possibilities of the rolls of three independent dice
    c                 ó6   — t          | j        Ž }d„ |D ¦   «         S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r?   )r%   )rA   Úitemss     r/   rD   z/ProductFiniteDomain.__iter__.<locals>.<genexpr>‰   s(   è è € Ð5Ð5 5•˜‘”Ð5Ð5Ð5Ð5Ð5Ð5r1   )r   Údomains)r-   Úproditers     r/   rV   zProductFiniteDomain.__iter__‡   s"   € Ý˜DœLÐ)ˆØ5Ð5¨HÐ5Ñ5Ô5Ð5r1   c                 ó   — t          | Ž S r?   r   r4   s    r/   rF   zProductFiniteDomain.elements‹   s   € å˜$ÐÐr1   N)r5   r6   r7   r8   rV   r9   rF   r:   r1   r/   rv   rv   €   sH   € € € € € ðð ð6ð 6ð 6ð ð ð  ñ „Xð ð  ð  r1   rv   c                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d„ Z
dS )	Ú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                 óX   — |du r|S t          |¦  «        }t          j        | ||¦  «        S )zH
        Create a new instance of ConditionalFiniteDomain class
        T)r&   r   r`   )ra   ÚdomainÚ	conditionÚconds       r/   r`   zConditionalFiniteDomain.__new__˜   s5   € ð ˜ÐÐØˆMÝ�yÑ!Ô!ˆÝŒ}˜S &¨$Ñ/Ô/Ð/r1   c                 óÈ   — | j                              t          |¦  «        ¦  «        }|dv r|S |j        r|j        |j        k    S t          dt          |¦  «        z  ¦  «        ‚)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.
        )TFzUndecidable if %s)r�   Úxreplacer3   Úis_EqualityÚlhsÚrhsÚ
ValueErrorÚstr)r-   ro   rC   s      r/   Ú_testzConditionalFiniteDomain._test¡   sb   € ð Œn×%Ò%¥d¨4¡j¤jÑ1Ô1ˆØ�-ÐÐØˆJØŒ_ð 	&Ø”7˜cœgÒ%Ð%ÝÐ,­s°3©x¬xÑ7Ñ8Ô8Ð8r1   c                 ó>   — || j         v o|                      |¦  «        S r?   )Ú
fulldomainrŠ   rR   s     r/   rT   z$ConditionalFiniteDomain.__contains__®   s    € Ø˜œÐ'Ð=¨D¯JªJ°uÑ,=Ô,=Ð=r1   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc              3   óF   •K  — | ]}‰                      |¦  «        ¯|V — Œd S r?   ©rŠ   rn   s     €r/   rD   z3ConditionalFiniteDomain.__iter__.<locals>.<genexpr>²   s4   øè è € ÐEÐE˜°D·J²J¸tÑ4DÔ4DÐE�ÐEÐEÐEÐEÐEÐEr1   )rŒ   r4   s   `r/   rV   z ConditionalFiniteDomain.__iter__±   s   ø€ ØEÐEÐEÐE ¤ÐEÑEÔEÐEr1   c                 ó”   ‡ — t          ‰ j        t          ¦  «        rt          ˆ fd„‰ j        j        D ¦   «         Ž S t          d¦  «        ‚)Nc                 óP   •— g | ]"}t          ‰j        j        |ff¦  «        ‰v ¯ |‘Œ#S r:   )rm   rŒ   rb   rn   s     €r/   rP   z/ConditionalFiniteDomain.set.<locals>.<listcomp>·   sF   ø€ ð Xð Xð X¨Ý"+¨d¬oÔ.DÀdÐ-KÐ,MÑ"NÔ"NÐRVÐ"VÐ"Vð  $Ø"VÐ"VÐ"Vr1   z7Not implemented on multi-dimensional conditional domain)r_   rŒ   r]   r   rc   ÚNotImplementedErrorr4   s   `r/   rc   zConditionalFiniteDomain.set´   ss   ø€ å�d”oÕ'9Ñ:Ô:ð 	KÝð Xð Xð Xð X°´Ô0Cð Xñ Xô Xð Yð Yõ &ØIñKô Kð Kr1   c                 ó6   — t                                | ¦  «        S r?   )r<   rZ   r4   s    r/   rZ   z"ConditionalFiniteDomain.as_boolean½   s   € Ý×&Ò& tÑ,Ô,Ð,r1   N)r5   r6   r7   r8   r`   rŠ   rT   rV   r9   rc   rZ   r:   r1   r/   r~   r~   �   sŠ   € € € € € ðð ð0ð 0ð 0ð9ð 9ð 9ð>ð >ð >ðFð Fð Fð ðKð Kñ „XðKð-ð -ð -ð -ð -r1   r~   c                   óð   — e Zd Zd„ Zed„ ¦   «         Zeed„ ¦   «         ¦   «         Zd„ Z	ed„ ¦   «         Z
 ed„ ¦  «        Z ed„ ¦  «        Z ed„ ¦  «        Z ed	„ ¦  «        Z ed
„ ¦  «        Zd„ Zd„ ZdS )ÚSingleFiniteDistributionc                 ój   — t          t          t          |¦  «        ¦  «        }t          j        | g|¢R Ž S r?   )ÚlistÚmapr   r   r`   )ra   rK   s     r/   r`   z SingleFiniteDistribution.__new__Â   s1   € Ý•C� Ñ&Ô&Ñ'Ô'ˆÝŒ}˜SÐ( 4Ð(Ð(Ð(Ð(r1   c                  ó   — d S r?   r:   rJ   s    r/   ÚcheckzSingleFiniteDistribution.checkÆ   s   € àˆr1   c                 óV   ‡ — ‰ j         rt          ‰ ¦  «        S ˆ fd„‰ j        D ¦   «         S )Nc                 ó<   •— i | ]}|‰                      |¦  «        “ŒS r:   ©Úpmf)rA   Úkr-   s     €r/   ú
<dictcomp>z1SingleFiniteDistribution.dict.<locals>.<dictcomp>Ï   s%   ø€ Ð1Ð1Ð1 1��4—8’8˜A‘;”;Ð1Ð1Ð1r1   )Úis_symbolicr(   rc   r4   s   `r/   r3   zSingleFiniteDistribution.dictÊ   s8   ø€ ð Ôð 	!Ý˜4‘=”=Ð Ø1Ð1Ð1Ð1¨¬Ð1Ñ1Ô1Ð1r1   c                 ó   — t          ¦   «         ‚r?   ©r’   ©r-   rK   s     r/   rž   zSingleFiniteDistribution.pmfÑ   s   € Ý!Ñ#Ô#Ð#r1   c                 ó   — t          ¦   «         ‚r?   r£   r4   s    r/   rc   zSingleFiniteDistribution.setÔ   s   € å!Ñ#Ô#Ð#r1   c                 ó   — | j         j        S r?   )r3   Úvaluesr4   s    r/   ú<lambda>z!SingleFiniteDistribution.<lambda>Ø   s   €  4¤9Ô#3€ r1   c                 ó   — | j         j        S r?   )r3   ry   r4   s    r/   r¨   z!SingleFiniteDistribution.<lambda>Ù   s
   €  $¤)¤/€ r1   c                 ó   — dS )NFr:   r4   s    r/   r¨   z!SingleFiniteDistribution.<lambda>Ú   s   € ¨€ r1   c                 ó   — | j         j        S r?   )r3   rV   r4   s    r/   r¨   z!SingleFiniteDistribution.<lambda>Û   s   €  T¤YÔ%7€ r1   c                 ó   — | j         j        S r?   )r3   Ú__getitem__r4   s    r/   r¨   z!SingleFiniteDistribution.<lambda>Ü   s   € ¨¬	Ô(=€ r1   c                 ó   —  | j         |Ž S r?   r�   r¤   s     r/   r0   z!SingleFiniteDistribution.__call__Þ   s   € ØˆtŒx˜ˆÐr1   c                 ó   — || j         v S r?   rr   rR   s     r/   rT   z%SingleFiniteDistribution.__contains__á   s   € Ø˜œÐ Ð r1   N)r5   r6   r7   r`   Ústaticmethodrš   r9   r   r3   rž   rc   r§   ry   r¡   rV   r­   r0   rT   r:   r1   r/   r•   r•   Á   s  € € € € € ð)ð )ð )ð ðð ñ „\ðð Øð2ð 2ñ „Wñ „Xð2ð
$ð $ð $ð ð$ð $ñ „Xð$ð ˆXÐ3Ð3Ñ4Ô4€FØˆHÐ1Ð1Ñ2Ô2€EØ�(Ð-Ð-Ñ.Ô.€KØˆxÐ7Ð7Ñ8Ô8€HØ�(Ð=Ð=Ñ>Ô>€Kðð ð ð!ð !ð !ð !ð !r1   r•   c                   óª   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
e	dd	„¦   «         Ze	d
„ ¦   «         Ze	d„ ¦   «         Zdd„Zd„ Zd„ Zd„ Zdd„ZdS )ÚFinitePSpacezd
    A Finite Probability Space

    Represents the probabilities of a finite number of events.
    Tc                 óš   — d„ |                      ¦   «         D ¦   «         }t          |¦  «        }t          j        | ||¦  «        }||_        |S )Nc                 óN   — i | ]"\  }}t          |¦  «        t          |¦  «        “Œ#S r:   r   )rA   ÚkeyrC   s      r/   r    z(FinitePSpace.__new__.<locals>.<dictcomp>ó   s:   € ð 1ð 1ð 1Ù�C˜õ ˜3‘<”<¥¨¡¤ð 1ð 1ð 1r1   )ry   r   r!   r`   Ú_density)ra   r€   ÚdensityÚpublic_densityÚobjs        r/   r`   zFinitePSpace.__new__ò   sR   € ð1ð 1Ø '§¢¡¤ð1ñ 1ô 1ˆå˜g™œˆåŒn˜S &¨.Ñ9Ô9ˆØˆŒØˆ
r1   c                 óT  — t          |¦  «        }| j        }t          t          |                     ¦   «         ¦  «        d         t
          ¦  «        r |                     |t          j        ¦  «        S |                     t          |¦  «        d         d         t          j        ¦  «        S )Nr   ri   )
r   r¶   r_   r—   Úkeysr   Úgetr   ÚZerort   )r-   ro   r·   s      r/   Úprob_ofzFinitePSpace.prob_ofû   sv   € Ý�t‰}Œ}ˆØ”-ˆÝ•d˜7Ÿ<š<™>œ>Ñ*Ô*¨1Ô-­yÑ9Ô9ð 	-Ø—;’;˜t¥Q¤VÑ,Ô,Ð,Ø�{Š{�5 ™;œ; qœ>¨!Ô,­a¬fÑ5Ô5Ð5r1   c                 ó‚   ‡ — t          ˆ fd„t          |¦  «        D ¦   «         ¦  «        sJ ‚t          ‰ j        |¦  «        S )Nc              3   ó4   •K  — | ]}|j         ‰j        v V — Œd S r?   )rb   rG   )rA   Úrr-   s     €r/   rD   z%FinitePSpace.where.<locals>.<genexpr>  s,   øè è € ÐOÐO°�1”8˜tœ|Ð+ÐOÐOÐOÐOÐOÐOr1   )Úallr$   r~   r€   ©r-   r�   s   ` r/   ÚwherezFinitePSpace.where  sF   ø€ ÝÐOÐOÐOÐOµ^ÀIÑ5NÔ5NÐOÑOÔOÑOÔOÐOÐOÐOÝ& t¤{°IÑ>Ô>Ð>r1   c                 ó  — t          || j        ¦  «        }t          ¦   «         }| j        D ]_}|                     t          |¦  «        ¦  «        }|                      |¦  «        }|                     |t          j	        ¦  «        |z   ||<   Œ`|S r?   )
r&   r§   r+   r€   r„   r3   r¾   r¼   r   r½   )r-   ÚexprÚdro   rC   Úprobs         r/   Úcompute_densityzFinitePSpace.compute_density  sz   € Ý�t˜Tœ[Ñ)Ô)ˆÝ‰OŒOˆØ”Kð 	/ð 	/ˆDØ—-’-¥ T¡
¤
Ñ+Ô+ˆCØ—<’< Ñ%Ô%ˆDØ—U’U˜3¥¤Ñ'Ô'¨$Ñ.ˆAˆc‰FˆFØˆr1   c                 óÒ   — |                       |¦  «        }t          j        }g }t          |¦  «        D ]&}||         }||z  }|                     ||f¦  «         Œ't          |¦  «        S r?   )rÉ   r   r½   ÚsortedÚappendr3   )r-   rÆ   rÇ   Úcum_probÚcdfrµ   rÈ   s          r/   Úcompute_cdfzFinitePSpace.compute_cdf  sn   € à× Ò  Ñ&Ô&ˆÝ”6ˆØˆÝ˜!‘9”9ð 	(ð 	(ˆCØ�S”6ˆDØ˜ÑˆHØ�JŠJ˜˜X�Ñ'Ô'Ð'Ð'å�C‰yŒyÐr1   Fc                 ó²   — |                       |¦  «        }t          |                     ¦   «         ¦  «        }t          |d„ ¬¦  «        }|rd„ |D ¦   «         }|S )Nc                 ó   — | d         S rh   r:   )Úval_cumprobs    r/   r¨   z)FinitePSpace.sorted_cdf.<locals>.<lambda>  s
   € ¸[È¼^€ r1   )rµ   c                 ó6   — g | ]\  }}|t          |¦  «        f‘ŒS r:   )Úfloat)rA   ÚvrÍ   s      r/   rP   z+FinitePSpace.sorted_cdf.<locals>.<listcomp>!  s7   € ð 5ð 5ð 5Ù#˜˜8ð ¥ h¡¤Ð0ð 5ð 5ð 5r1   )rÏ   r—   ry   rË   )r-   rÆ   Úpython_floatrÎ   ry   Úsorted_itemss         r/   Ú
sorted_cdfzFinitePSpace.sorted_cdf  sl   € à×Ò˜tÑ$Ô$ˆÝ�S—Y’Y‘[”[Ñ!Ô!ˆÝ˜eÐ)KÐ)KÐLÑLÔLˆØð 	5ð5ð 5Ø'3ð5ñ 5ô 5ˆLàÐr1   c                 óÆ   ‡— |                       |¦  «        }t          dd¬¦  «        Št          ‰t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        ¦  «        S )NÚtT©Úrealc              3   óX   •K  — | ]$\  }}t          t          |z  ‰z  ¦  «        |z  V — Œ%d S r?   )r   r	   ©rA   rŸ   rÕ   rÚ   s      €r/   rD   z?FinitePSpace.compute_characteristic_function.<locals>.<genexpr>*  s9   øè è € Ð?Ð?©c¨a°�S¥ 1¡ Q¡™ZœZ¨™\Ð?Ð?Ð?Ð?Ð?Ð?r1   ©rÉ   r   r   Úsumry   ©r-   rÆ   rÇ   rÚ   s      @r/   Úcompute_characteristic_functionz,FinitePSpace.compute_characteristic_function%  s]   ø€ à× Ò  Ñ&Ô&ˆÝ�#˜DÐ!Ñ!Ô!ˆå�a�Ð?Ð?Ð?Ð?°Q·W²W±Y´YÐ?Ñ?Ô?Ñ?Ô?Ñ@Ô@Ð@r1   c                 óÆ   ‡— |                       |¦  «        }t          dd¬¦  «        Št          ‰t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        ¦  «        S )NrÚ   TrÛ   c              3   óH   •K  — | ]\  }}t          |‰z  ¦  «        |z  V — Œd S r?   r   rÞ   s      €r/   rD   zBFinitePSpace.compute_moment_generating_function.<locals>.<genexpr>1  s5   øè è € Ð=Ð=©C¨A¨a�S  1¡™XœX a™ZÐ=Ð=Ð=Ð=Ð=Ð=r1   rß   rá   s      @r/   Ú"compute_moment_generating_functionz/FinitePSpace.compute_moment_generating_function,  s]   ø€ à× Ò  Ñ&Ô&ˆÝ�#˜DÐ!Ñ!Ô!ˆå�a�Ð=Ð=Ð=Ð=°1·7²7±9´9Ð=Ñ=Ô=Ñ=Ô=Ñ>Ô>Ð>r1   Nc                 óx  ‡ ‡— |p‰ j         }t          ‰|¦  «        Šˆ fd„‰ j        D ¦   «         }t          ‰t          t
          f¦  «        r%d„ ‰ j        D ¦   «         }ˆfd„‰ j        D ¦   «         }n$ˆfd„‰ j        D ¦   «         }d„ ‰ j        D ¦   «         }t          d„ t          |||¦  «        D ¦   «         ¦  «        S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r:   ©r¾   rn   s     €r/   rP   z4FinitePSpace.compute_expectation.<locals>.<listcomp>6  s%   ø€ Ð<Ð<Ð<¨�—’˜dÑ#Ô#Ð<Ð<Ð<r1   c                 óD   — g | ]}t          |¦  «        d          d         ‘ŒS )r   ri   )rt   ©rA   ro   s     r/   rP   z4FinitePSpace.compute_expectation.<locals>.<listcomp>8  s'   € ÐFÐFÐF°$�E $™KœK¨œN¨1Ô-ÐFÐFÐFr1   c                 óT   •— g | ]$}‰                      t          |¦  «        ¦  «        ‘Œ%S r:   ©r„   r3   ©rA   ro   rÆ   s     €r/   rP   z4FinitePSpace.compute_expectation.<locals>.<listcomp>9  s+   ø€ ÐGÐGÐG°4�T—]’]¥4¨¡:¤:Ñ.Ô.ÐGÐGÐGr1   c                 óT   •— g | ]$}‰                      t          |¦  «        ¦  «        ‘Œ%S r:   rì   rí   s     €r/   rP   z4FinitePSpace.compute_expectation.<locals>.<listcomp>;  s+   ø€ ÐNÐNÐN¸$˜DŸMšM­$¨t©*¬*Ñ5Ô5ÐNÐNÐNr1   c                 ó   — g | ]}d ‘ŒS )Tr:   rê   s     r/   rP   z4FinitePSpace.compute_expectation.<locals>.<listcomp><  s   € Ð2Ð2Ð2˜d�TÐ2Ð2Ð2r1   c              3   ó`   K  — | ])\  }}}t          ||z  |ft          j        d f¦  «        V — Œ*dS )TN)r   r   r½   )rA   rÈ   ro   Úblvs       r/   rD   z3FinitePSpace.compute_expectation.<locals>.<genexpr>=  s]   è è € ð Hð HÙ#�D˜$ õ ˜d T™k¨3Ð/µ!´&¸$°Ñ@Ô@ð Hð Hð Hð Hð Hð Hr1   )r§   r&   r€   r_   r   r   rà   Úzip)r-   rÆ   ÚrvsÚkwargsÚprobsÚparse_domainÚboolss   ``     r/   Úcompute_expectationz FinitePSpace.compute_expectation3  sõ   øø€ ØÐ �T”[ˆÝ�t˜SÑ!Ô!ˆØ<Ð<Ð<Ð<°´Ð<Ñ<Ô<ˆÝ�d�U¥JÐ/Ñ0Ô0ð 	3ØFÐF¸$¼+ÐFÑFÔFˆLØGÐGÐGÐG¸4¼;ÐGÑGÔGˆEˆEàNÐNÐNÐNÀ$Ä+ÐNÑNÔNˆLØ2Ð2 d¤kÐ2Ñ2Ô2ˆEÝð Hð HÝ'*¨5°,ÀÑ'FÔ'FðHñ Hô Hñ Hô Hð 	Hr1   c                 óò   — |                       |¦  «        }t          dd¬¦  «        }t          |dk     |dk    z  ff}|                     ¦   «         D ]\  }}||||k    ffz   }Œt	          |t          |Ž ¦  «        S )NÚpTrÛ   r   ri   )rÏ   r   r
   ry   r   r   )r-   rÆ   rÎ   rú   rc   rµ   Úvalues          r/   Úcompute_quantilezFinitePSpace.compute_quantile@  sˆ   € Ø×Ò˜tÑ$Ô$ˆÝ�#˜DÐ!Ñ!Ô!ˆÝ�a˜!’e  A¢Ñ&Ð'Ð)ˆØŸ)š)™+œ+ð 	.ð 	.‰JˆC�Ø˜#˜q EšzÐ*Ð-Ñ-ˆCˆCÝ�a� C˜Ñ)Ô)Ð)r1   c                 óp  ‡ ‡‡— t          d„ t          ‰¦  «        D ¦   «         ¦  «        }t          ‰¦  «        }|                     ‰ j        ¦  «        s't          dt          |‰ j        z
  ¦  «        z  ¦  «        ‚t          ‰t          ¦  «        rn|j	                             ‰ j
        j	        ¦  «        sJt          ‰j        t          ¦  «        r‰j        n‰j        Št          ˆˆˆ fd„‰ j
        D ¦   «         ¦  «        S t          t          ˆ fd„‰                      ‰¦  «        D ¦   «         ¦  «        ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r?   )rb   )rA   Úrss     r/   rD   z+FinitePSpace.probability.<locals>.<genexpr>I  s$   è è € Ð OÐ O¨r ¤Ð OÐ OÐ OÐ OÐ OÐ Or1   z)Cannot compare foreign random symbols, %sc           
   3   óÔ   •K  — | ]b}t          ‰                     |¦  «        ‰                     ‰t          |¦  «        d          d         ¦  «        ft          j        df¦  «        V — ŒcdS )r   ri   TN)r   r¾   Úsubsr—   r   r½   )rA   ro   r�   Úrvr-   s     €€€r/   rD   z+FinitePSpace.probability.<locals>.<genexpr>Q  sƒ   øè è € ð @ð @à+/õ !ØŸš TÑ*Ô*¨I¯NªN¸2½tÀD¹z¼zÈ!¼}ÈQÔ?OÑ,PÔ,PÐQÝœ �~ñ'ô 'ð @ð @ð @ð @ð @ð @r1   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r?   rè   rn   s     €r/   rD   z+FinitePSpace.probability.<locals>.<genexpr>T  s/   øè è € ÐPÐP°$˜4Ÿ<š<¨Ñ-Ô-ÐPÐPÐPÐPÐPÐPr1   )rm   r$   r&   ÚissubsetrG   rˆ   r‰   r_   r   Úfree_symbolsr€   r‡   r   r†   rà   r   rÄ   )r-   r�   Úcond_symbolsr‚   r  s   ``  @r/   ÚprobabilityzFinitePSpace.probabilityH  sX  øøø€ Ý Ð OÐ Oµ^ÀIÑ5NÔ5NÐ OÑ OÔ OÑOÔOˆÝ�yÑ!Ô!ˆØ×$Ò$ T¤\Ñ2Ô2ð 	BÝÐHÝ" <°$´,Ñ#>Ñ?Ô?ñAñ Bô Bð Bå�i¥Ñ,Ô,ð 	@ØÔ"×+Ò+¨D¬KÔ,DÑEÔEð	@å",¨Y¬]½FÑ"CÔ"CÐV�”�ÈÌˆBÝð @ð @ð @ð @ð @ð @à37´;ð@ñ @ô @ñ @ô @ð @õ •sÐPÐPÐPÐP¸$¿*º*ÀYÑ:OÔ:OÐPÑPÔPÑPÔPÑQÔQÐQr1   c                 óÆ   ‡‡— |                       |¦  «        Š|                      |¦  «        Šˆˆfd„| j                             ¦   «         D ¦   «         }t	          ‰|¦  «        S )Nc                 óL   •— i | ] \  }}‰                      |¦  «        ¯||‰z  “Œ!S r:   r�   ©rA   rµ   rC   r€   rÈ   s      €€r/   r    z2FinitePSpace.conditional_space.<locals>.<dictcomp>Y  óJ   ø€ ð Lð Lð LÙ�C˜¸¿ºÀcÑ9JÔ9JðL�3˜˜d™
ð Lð Lð Lr1   )rÄ   r  r¶   ry   r²   ©r-   r�   r·   r€   rÈ   s      @@r/   Úconditional_spacezFinitePSpace.conditional_spaceV  s{   øø€ Ø—’˜IÑ&Ô&ˆØ×Ò 	Ñ*Ô*ˆðLð Lð Lð Lð LØ $¤× 3Ò 3Ñ 5Ô 5ðLñ Lô Lˆå˜F GÑ,Ô,Ð,r1   r:   Úscipyc                 óH   — | j         | j                             |||¦  «        iS )zo
        Internal sample method

        Returns dictionary mapping RandomSymbol to realization value.
        )rû   ÚdistributionÚsample)r-   ÚsizeÚlibraryÚseeds       r/   r  zFinitePSpace.sample]  s&   € ð ”
˜DÔ-×4Ò4°T¸7ÀDÑIÔIÐJÐJr1   )Fr?   )r:   r  N)r5   r6   r7   r8   r[   r`   r¾   rÄ   rÉ   r   rÏ   rØ   râ   rå   rø   rü   r  r  r  r:   r1   r/   r²   r²   ê   s7  € € € € € ðð ð
 €Iðð ð ð6ð 6ð 6ð?ð ?ð ?ðð ð ð ð	ð 	ñ „Wð	ð ðð ð ñ „Wðð ðAð Añ „WðAð ð?ð ?ñ „Wð?ðHð Hð Hð Hð*ð *ð *ðRð Rð Rð-ð -ð -ðKð Kð Kð Kð Kð Kr1   r²   c                   óÒ   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zee	d„ ¦   «         ¦   «         Z
e	d„ ¦   «         Ze	d„ ¦   «         Zd	„ Zd
„ Zd„ Zdd„Zd„ Zd„ ZdS )ÚSingleFinitePSpacea  
    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                 ó@   — t          | j        | j        j        ¦  «        S r?   )r]   rb   r  rc   r4   s    r/   r€   zSingleFinitePSpace.domainp  s   € å! $¤+¨tÔ/@Ô/DÑEÔEÐEr1   c                 ó   — | j         j        S )zƒ
        Helper property to check if the distribution
        of the random variable is having symbolic
        dimension.
        )r  r¡   r4   s    r/   Ú_is_symboliczSingleFinitePSpace._is_symbolict  s   € ð Ô Ô,Ð,r1   c                 ó   — | j         d         S rh   rJ   r4   s    r/   r  zSingleFinitePSpace.distribution}  rL   r1   c                 ó6   — | j                              |¦  «        S r?   )r  rž   ©r-   rÆ   s     r/   rž   zSingleFinitePSpace.pmf�  s   € ØÔ ×$Ò$ TÑ*Ô*Ð*r1   c                 óX   ‡ — ˆ fd„‰ j         j                             ¦   «         D ¦   «         S )Nc                 óD   •— i | ]\  }}t          ‰j        |f¦  «        |“ŒS r:   rf   )rA   rC   rÈ   r-   s      €r/   r    z/SingleFinitePSpace._density.<locals>.<dictcomp>‡  sD   ø€ ð Eð Eð EÙ!˜˜Tõ ˜4œ;¨Ð,Ñ-Ô-¨tð Eð Eð Er1   )r  r3   ry   r4   s   `r/   r¶   zSingleFinitePSpace._density„  sH   ø€ ðEð Eð Eð EØ%)Ô%6Ô%;×%AÒ%AÑ%CÔ%CðEñ Eô Eð 	Er1   c           
      óÈ  — | j         rš|                      |¦  «        }t          dd¬¦  «        }t          d¦  «        }t          |t	           ||¦  «        t          t          |z  |z  ¦  «        z  || j        d         j        | j        d         j	        f¦  «        ¦  «        S t          || j        ¦  «        }t          | j        | j        ¦  «                             |¦  «        S ©NrÚ   TrÛ   Úkiri   )r  rÉ   r   r   r   r   r	   rK   ÚlowÚhighr&   r§   r²   r€   r  râ   ©r-   rÆ   rÇ   rÚ   r!  s        r/   râ   z2SingleFinitePSpace.compute_characteristic_functionŠ  sÂ   € àÔð 	`Ø×$Ò$ TÑ*Ô*ˆAÝ�c Ð%Ñ%Ô%ˆAÝ�t‘”ˆBÝ˜!�S   2¡¤¥s­1¨R©4°©6¡{¤{Ñ!2°R¸¼À1¼Ô9IÈ4Ì9ÐUVÌ<ÔK\Ð4]Ñ^Ô^Ñ_Ô_Ð_Ý�t˜Tœ[Ñ)Ô)ˆÝ˜DœK¨Ô):Ñ;Ô;×[Ò[Ð\`ÑaÔaÐar1   c           
      ó¸  — | j         r’|                      |¦  «        }t          dd¬¦  «        }t          d¦  «        }t          |t	           ||¦  «        t          ||z  ¦  «        z  || j        d         j        | j        d         j        f¦  «        ¦  «        S t          || j
        ¦  «        }t          | j        | j        ¦  «                             |¦  «        S r   )r  rÉ   r   r   r   r   rK   r"  r#  r&   r§   r²   r€   r  rå   r$  s        r/   rå   z5SingleFinitePSpace.compute_moment_generating_function”  s½   € àÔð 	^Ø×$Ò$ TÑ*Ô*ˆAÝ�c Ð%Ñ%Ô%ˆAÝ�t‘”ˆBÝ˜!�S   2¡¤¥s¨2¨a©4¡y¤y¡°2°t´yÀ´|Ô7GÈÌÐSTÌÔIZÐ2[Ñ\Ô\Ñ]Ô]Ð]Ý�t˜Tœ[Ñ)Ô)ˆÝ˜DœK¨Ô):Ñ;Ô;×^Ò^Ð_cÑdÔdÐdr1   c                 ó²   — | j         rt          d¦  «        ‚t          || j        ¦  «        }t	          | j        | j        ¦  «                             |¦  «        S )NzƒComputing quantile for random variables with symbolic dimension because the bounds of searching the required value is undetermined.)r  r’   r&   r§   r²   r€   r  rü   r  s     r/   rü   z#SingleFinitePSpace.compute_quantilež  sZ   € ØÔð 	&Ý%ð '%ñ &ô &ð &õ �t˜Tœ[Ñ)Ô)ˆÝ˜DœK¨Ô):Ñ;Ô;×LÒLÈTÑRÔRÐRr1   c                 óN  — | j         rÝt          t          |¦  «        ¦  «        d         }t          dd¬¦  «        }t	          |t
          t          f¦  «        sdn|                     ||¦  «        }t          |t          |  
                    |¦  «        t          || j        d         j        k    || j        d         j        k    |¦  «        ft          j        df¦  «        ¦  «        S t#          || j        ¦  «        }t'          | j        | j        ¦  «                             |¦  «        S )Nr   rŸ   T©Úintegerri   )r  r—   r$   r   r_   r   r   r  r   r   rž   r   rK   r"  r#  r   r½   r&   r§   r²   r€   r  rÉ   )r-   rÆ   r  rŸ   r‚   s        r/   rÉ   z"SingleFinitePSpace.compute_density¦  s
  € ØÔð 	=Ý•n TÑ*Ô*Ñ+Ô+¨AÔ.ˆBÝ�c 4Ð(Ñ(Ô(ˆAÝ)¨$µ½UÐ0CÑDÔDð +�4�4ØŸ)š) B¨Ñ*Ô*ð å˜!Ý�t—x’x ‘{”{¥C¨¨T¬Y°q¬\Ô-=Ò(=Ø�”˜1”Ô"Ò" Dñ%*ô %*ð +Ý-.¬V°T¨Nñ<ô <ñ=ô =ð =õ �t˜Tœ[Ñ)Ô)ˆÝ˜DœK¨Ô):Ñ;Ô;×KÒKÈDÑQÔQÐQr1   c           	      ón  — | j         rm|                      |¦  «        }t          d¦  «        }t          d¦  «        }t          |t	           ||¦  «        || j        d         j        |f¦  «        ¦  «        S t          || j        ¦  «        }t          | j
        | j        ¦  «                             |¦  «        S )NrŸ   r!  ri   )r  rÉ   r   r   r   rK   r"  r&   r§   r²   r€   r  rÏ   )r-   rÆ   rÇ   rŸ   r!  s        r/   rÏ   zSingleFinitePSpace.compute_cdf²  s�   € ØÔð 	DØ×$Ò$ TÑ*Ô*ˆAÝ�c‘
”
ˆAÝ�t‘”ˆBÝ˜!�S   2¡¤¨¨T¬Y°q¬\Ô-=¸qÐ(AÑBÔBÑCÔCÐCÝ�t˜Tœ[Ñ)Ô)ˆÝ˜DœK¨Ô):Ñ;Ô;×GÒGÈÑMÔMÐMr1   Nc                 ój  — | j         rçt          |¦  «        d         }t          dd¬¦  «        }|                     ||¦  «        }t	          |t
          t          f¦  «        sdn|}|dk    r|                      |¦  «        |z  n|                      |¦  «        |z  }t          t          ||ft          j        df¦  «        || j        j        | j        j        f¦  «                             ¦   «         S t!          |¦  «        }t#          ||¦  «        } t%          | j        | j        ¦  «        j        ||fi |¤ŽS )Nr   rŸ   Tr(  )r  r$   r   r  r_   r   r   rž   r   r   r   r½   r  r"  r#  Údoitr   r&   r²   r€   rø   )r-   rÆ   ró   rô   r  rŸ   r‚   Úfuncs           r/   rø   z&SingleFinitePSpace.compute_expectation»  s+  € ØÔð 	KÝ Ñ%Ô% aÔ(ˆBÝ�c 4Ð(Ñ(Ô(ˆAØ—9’9˜R Ñ#Ô#ˆDÝ)¨$µ½UÐ0CÑDÔDð �4�4Øð à&*¨d¢l l�4—8’8˜A‘;”; ‘?�?¸¿ºÀ¹¼ÀdÑ8JˆDÝ•y $¨ µ´¸¨~Ñ>Ô>Ø�DÔ%Ô)¨4Ô+<Ô+AÐBñDô DßDHÂDÁFÄFðKõ ˜‰~Œ~ˆÝ�t˜SÑ!Ô!ˆØO�|˜DœK¨Ô):Ñ;Ô;ÔOÐPTÐVYÐdÐdÐ]cÐdÐdÐdr1   c                 ó¦   — | j         rt          d¦  «        ‚t          |¦  «        }t          | j        | j        ¦  «                             |¦  «        S )NzhCurrently, probability queries are not supported for random variables with symbolic sized distributions.)r  r’   r&   r²   r€   r  r  rÃ   s     r/   r  zSingleFinitePSpace.probabilityÊ  sY   € ØÔð 	Qå%ð 'Pñ Qô Qð Qå˜IÑ&Ô&ˆ	Ý˜DœK¨Ô):Ñ;Ô;×GÒGÈ	ÑRÔRÐRr1   c                 óØ   ‡‡— | j         r|  |                      |¦  «        Š|                      |¦  «        Šˆˆfd„| j                             ¦   «         D ¦   «         }t          ‰|¦  «        S )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.
        c                 óL   •— i | ] \  }}‰                      |¦  «        ¯||‰z  “Œ!S r:   r�   r
  s      €€r/   r    z8SingleFinitePSpace.conditional_space.<locals>.<dictcomp>Ý  r  r1   )r  rÄ   r  r¶   ry   r²   r  s      @@r/   r  z$SingleFinitePSpace.conditional_spaceÒ  s�   øø€ ð Ôð 	ØˆDØ—’˜IÑ&Ô&ˆØ×Ò 	Ñ*Ô*ˆðLð Lð Lð Lð LØ $¤× 3Ò 3Ñ 5Ô 5ðLñ Lô Lˆå˜F GÑ,Ô,Ð,r1   r?   )r5   r6   r7   r8   r9   r€   r  r  rž   r   r¶   râ   rå   rü   rÉ   rÏ   rø   r  r  r:   r1   r/   r  r  f  sT  € € € € € ðð ð ðFð Fñ „XðFð ð-ð -ñ „Xð-ð ðð ñ „Xðð+ð +ð +ð ØðEð Eñ „Wñ „XðEð ðbð bñ „Wðbð ðeð eñ „WðeðSð Sð Sð
Rð 
Rð 
RðNð Nð Nðeð eð eð eðSð Sð Sð-ð -ð -ð -ð -r1   r  c                   ó€   — e Zd ZdZed„ ¦   «         Zeed„ ¦   «         ¦   «         Zeed„ ¦   «         ¦   «         Zd„ Z	d„ Z
dS )ÚProductFinitePSpacezG
    A collection of several independent finite probability spaces
    c                 ó2   — t          d„ | j        D ¦   «         Ž S )Nc                 ó   — g | ]	}|j         ‘Œ
S r:   )r€   ©rA   Úspaces     r/   rP   z.ProductFinitePSpace.domain.<locals>.<listcomp>è  s   € Ð$KÐ$KÐ$K°e U¤\Ð$KÐ$KÐ$Kr1   )rv   Úspacesr4   s    r/   r€   zProductFinitePSpace.domainæ  s   € å"Ð$KÐ$K¸t¼{Ð$KÑ$KÔ$KÐLÐLr1   c                 ó  — t          d„ | j        D ¦   «         Ž }i }|D ]Y}t          t          |Ž ¦  «        \  }}t	          |¦  «        }t          |Ž }|                     |t          j        ¦  «        |z   ||<   ŒZt          |¦  «        S )Nc                 óZ   — g | ](}t          |j                             ¦   «         ¦  «        ‘Œ)S r:   )Úiterr¶   ry   r5  s     r/   rP   z0ProductFinitePSpace._density.<locals>.<listcomp>í  s>   € ð &ð &ð &Øõ " %¤.×"6Ò"6Ñ"8Ô"8Ñ9Ô9ð &ð &ð &r1   )
r   r7  r—   rò   r%   r   r¼   r   r½   r   )r-   r{   rÇ   ry   Úelemsrõ   ro   rÈ   s           r/   r¶   zProductFinitePSpace._densityê  s”   € õ ð &ð &Øœð&ñ &ô &ð 'ˆàˆØð 	1ð 	1ˆEÝ¥ U Ñ,Ô,‰LˆE�5Ý˜5‘>”>ˆDÝ˜�;ˆDØ—e’e˜D¥!¤&Ñ)Ô)¨DÑ0ˆAˆd‰GˆGÝ�A‰wŒwˆr1   c                 ó*   — t          | j        ¦  «        S r?   )r   r¶   r4   s    r/   r·   zProductFinitePSpace.density÷  s   € õ �D”MÑ"Ô"Ð"r1   c                 ó8   — t                                | |¦  «        S r?   )r²   r  rÃ   s     r/   r  zProductFinitePSpace.probabilityü  s   € Ý×'Ò'¨¨iÑ8Ô8Ð8r1   c                 ó8   — t                                | |¦  «        S r?   )r²   rÉ   r  s     r/   rÉ   z#ProductFinitePSpace.compute_densityÿ  s   € Ý×+Ò+¨D°$Ñ7Ô7Ð7r1   N)r5   r6   r7   r8   r9   r€   r   r¶   r·   r  rÉ   r:   r1   r/   r2  r2  â  s¤   € € € € € ðð ð ðMð Mñ „XðMð Øð	ð 	ñ „Wñ „Xð	ð Øð#ð #ñ „Wñ „Xð#ð9ð 9ð 9ð8ð 8ð 8ð 8ð 8r1   r2  N)@r8   Ú	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)   r3   r+   r<   r]   rv   r~   r•   r²   r  r2  r:   r1   r/   ú<module>rQ     sé  ððð ð Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø :Ð :Ð :Ð :Ð :Ð :Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %ðUð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð
ð ð ð ð �Dñ ô ð ð2Qð Qð Qð Qð Q�<ñ Qô Qð Qð<"6ð "6ð "6ð "6ð "6˜ñ "6ô "6ð "6ðJ ð  ð  ð  ð  ˜-¨ñ  ô  ð  ð .-ð .-ð .-ð .-ð .-Ð/Ð1Dñ .-ô .-ð .-ðb!!ð !!ð !!ð !!ð !!˜|¨^ñ !!ô !!ð !!ðRyKð yKð yKð yKð yK�6ñ yKô yKð yKðxy-ð y-ð y-ð y-ð y-˜ |ñ y-ô y-ð y-ðx8ð 8ð 8ð 8ð 8Ð2°Lñ 8ô 8ð 8ð 8ð 8r1   