§
    PŠtjâZ  ã                   ó  — d dl 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 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 d dlmZ d dlmZm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ g d¢Z, e(j-        e¦  «        d„ ¦   «         Z. e(j-        e"¦  «        d„ ¦   «         Z. G d„ de¦  «        Z/ G d„ de¦  «        Z0 G d„ de¦  «        Z1 G d„ de¦  «        Z2 G d„ de¦  «        Z3 G d „ d!e¦  «        Z4dS )"é    N)ÚSum)ÚAdd)ÚExpr)Úexpand)ÚMul)ÚEq)ÚS)ÚSymbol)ÚIntegral)ÚNot)Úglobal_parameters)Údefault_sort_key)Ú_sympify)Ú
Relational)ÚBoolean)ÚvarianceÚ
covariance)
ÚRandomSymbolÚpspaceÚ	dependentÚgivenÚ
sampling_EÚRandomIndexedSymbolÚ	is_randomÚPSpaceÚ
sampling_PÚrandom_symbols)ÚProbabilityÚExpectationÚVarianceÚ
Covariancec                 ó¬   — | j         }t          |¦  «        dk    r"t          t          |¦  «        ¦  «        | k    rdS t	          d„ |D ¦   «         ¦  «        S )Né   Fc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)r   )Ú.0Úis     ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/stats/symbolic_probability.pyú	<genexpr>z_.<locals>.<genexpr>   s(   è è € Ð+Ð+ �y˜‰|Œ|Ð+Ð+Ð+Ð+Ð+Ð+ó    )Úfree_symbolsÚlenÚnextÚiterÚany)ÚxÚatomss     r(   Ú_r2      sR   € àŒN€EÝ
ˆ5�z„z�Q‚€�4¥ U¡¤Ñ,Ô,°Ò1Ð1ØˆuÝÐ+Ð+ UÐ+Ñ+Ô+Ñ+Ô+Ð+r*   c                 ó   — dS )NT© )r0   s    r(   r2   r2       s   € àˆ4r*   c                   ó6   — e Zd ZdZdZdd„Zd„ Zdd„ZeZd„ Z	dS )	r   a  
    Symbolic expression for the probability.

    Examples
    ========

    >>> from sympy.stats import Probability, Normal
    >>> from sympy import Integral
    >>> X = Normal("X", 0, 1)
    >>> prob = Probability(X > 1)
    >>> prob
    Probability(X > 1)

    Integral representation:

    >>> prob.rewrite(Integral)
    Integral(sqrt(2)*exp(-_z**2/2)/(2*sqrt(pi)), (_z, 1, oo))

    Evaluation of the integral:

    >>> prob.evaluate_integral()
    sqrt(2)*(-sqrt(2)*sqrt(pi)*erf(sqrt(2)/2) + sqrt(2)*sqrt(pi))/(4*sqrt(pi))
    TNc                 ó¬   — t          |¦  «        }|€t          j        | |¦  «        }n%t          |¦  «        }t          j        | ||¦  «        }||_        |S r%   )r   r   Ú__new__Ú
_condition)ÚclsÚprobÚ	conditionÚkwargsÚobjs        r(   r7   zProbability.__new__@   sR   € Ý˜‰~Œ~ˆØÐÝ”,˜s DÑ)Ô)ˆCˆCå  Ñ+Ô+ˆIÝ”,˜s D¨)Ñ4Ô4ˆCØ"ˆŒØˆ
r*   c                 óÎ  ‡— | j         d         }| j        Š|                     dd¦  «        }|                     dd¦  «        }t          |t          ¦  «        r;t
          j         |                      |j         d         ‰|¬¦  «        j        di |¤Žz
  S | 	                    t          ¦  «        r%t          |¦  «                             |‰|¬¦  «        S t          ‰t          ¦  «        r«t          |¦  «        }t          |¦  «        dk    r=|d         ‰k    r1ddlm}  | |                      |¦  «        j        di |¤Ždd¦  «        S t%          ˆfd	„|D ¦   «         ¦  «        rt'          |‰¦  «        S t'          |¦  «                             ¦   «         S ‰�.t          ‰t(          t*          f¦  «        st-          d
‰z  ¦  «        ‚‰dk    s|t
          j        u rt
          j        S t          |t(          t*          f¦  «        st-          d
|z  ¦  «        ‚|t
          j        u rt
          j        S |rt5          |‰|¬¦  «        S ‰�/t'          t7          |‰¦  «        ¦  «                             ¦   «         S t          |¦  «        t9          ¦   «         k    rt'          |‰¦  «        S t          |¦  «                             |¦  «        }t;          |d¦  «        r|r|                     ¦   «         S |S )Nr   Ú
numsamplesFÚevaluateT©r@   r#   )ÚBernoulliDistributionc              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S r%   )r   )r&   ÚrvÚgiven_conditions     €r(   r)   z#Probability.doit.<locals>.<genexpr>]   s-   øè è € ÐCÐC°b•9˜R Ñ1Ô1ÐCÐCÐCÐCÐCÐCr*   z4%s is not a relational or combination of relationals)r?   Údoitr4   )Úargsr8   ÚgetÚ
isinstancer   r	   ÚOneÚfuncrF   Úhasr   r   Úprobabilityr   r   r,   Úsympy.stats.frv_typesrB   r/   r   r   r   Ú
ValueErrorÚfalseÚZeroÚtruer   r   r   Úhasattr)	ÚselfÚhintsr;   r?   r@   ÚcondrvrB   ÚresultrE   s	           @r(   rF   zProbability.doitJ   s  ø€ Ø”I˜a”Lˆ	Øœ/ˆØ—Y’Y˜|¨UÑ3Ô3ˆ
Ø—9’9˜Z¨Ñ.Ô.ˆå�i¥Ñ%Ô%ð 	EÝ”5ð <˜4Ÿ9š9 Y¤^°AÔ%6¸Ø-5ð %ñ 7ô 7Ü7;ðEð EØ>CðEð Eñ Eð Eð �=Š=Õ,Ñ-Ô-ð 	@Ý˜)Ñ$Ô$×0Ò0°¸OØ6>ð 1ñ @ô @ð @õ �o¥|Ñ4Ô4ð 	5Ý# IÑ.Ô.ˆFÝ�6‰{Œ{˜aÒÐ F¨1¤I°Ò$@Ð$@ØGÐGÐGÐGÐGÐGØ,Ð,Ð-F¨T¯YªY°yÑ-AÔ-AÔ-FÐ-OÐ-OÈÐ-OÐ-OÐQRÐTUÑVÔVÐVÝÐCÐCÐCÐC¸FÐCÑCÔCÑCÔCð 5Ý" 9¨oÑ>Ô>Ð>å" 9Ñ-Ô-×2Ò2Ñ4Ô4Ð4àÐ&Ý˜µ½WÐ0EÑFÔFð 'åÐSØ&ñ(ñ )ô )ð )ð ˜eÒ#Ð# yµA´GÐ';Ð';Ý”6ˆMÝ˜)¥jµ'Ð%:Ñ;Ô;ð 	#ÝÐSØ ñ"ñ #ô #ð #à�œÐÐÝ”5ˆLàð 	QÝ˜i¨ÀZÐPÑPÔPÐPØÐ&å�u Y°Ñ@Ô@ÑAÔA×FÒFÑHÔHÐHõ �)ÑÔ¥¡¤Ò(Ð(Ý˜y¨/Ñ:Ô:Ð:å˜	Ñ"Ô"×.Ò.¨yÑ9Ô9ˆÝ�6˜6Ñ"Ô"ð 	 xð 	Ø—;’;‘=”=Ð àˆMr*   c                 óX   — |                       ||¬¦  «                             d¬¦  «        S )N©r;   FrA   ©rK   rF   ©rT   Úargr;   r<   s       r(   Ú_eval_rewrite_as_Integralz%Probability._eval_rewrite_as_Integral   s)   € Ø�yŠy˜¨	ˆyÑ2Ô2×7Ò7ÀÐ7ÑGÔGÐGr*   c                 óZ   — |                       t          ¦  «                             ¦   «         S r%   ©Úrewriter   rF   ©rT   s    r(   Úevaluate_integralzProbability.evaluate_integral„   ó    € Ø�|Š|�HÑ%Ô%×*Ò*Ñ,Ô,Ð,r*   r%   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_commutativer7   rF   r]   Ú_eval_rewrite_as_Sumrb   r4   r*   r(   r   r   %   sx   € € € € € ðð ð0 €Nðð ð ð ð3ð 3ð 3ðjHð Hð Hð Hð 5Ðð-ð -ð -ð -ð -r*   r   c                   óJ   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zdd„Zdd	„Z	e	Z
d
„ ZeZdS )r   a(  
    Symbolic expression for the expectation.

    Examples
    ========

    >>> from sympy.stats import Expectation, Normal, Probability, Poisson
    >>> from sympy import symbols, Integral, Sum
    >>> mu = symbols("mu")
    >>> sigma = symbols("sigma", positive=True)
    >>> X = Normal("X", mu, sigma)
    >>> Expectation(X)
    Expectation(X)
    >>> Expectation(X).evaluate_integral().simplify()
    mu

    To get the integral expression of the expectation:

    >>> Expectation(X).rewrite(Integral)
    Integral(sqrt(2)*X*exp(-(X - mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma), (X, -oo, oo))

    The same integral expression, in more abstract terms:

    >>> Expectation(X).rewrite(Probability)
    Integral(x*Probability(Eq(X, x)), (x, -oo, oo))

    To get the Summation expression of the expectation for discrete random variables:

    >>> lamda = symbols('lamda', positive=True)
    >>> Z = Poisson('Z', lamda)
    >>> Expectation(Z).rewrite(Sum)
    Sum(Z*lamda**Z*exp(-lamda)/factorial(Z), (Z, 0, oo))

    This class is aware of some properties of the expectation:

    >>> from sympy.abc import a
    >>> Expectation(a*X)
    Expectation(a*X)
    >>> Y = Normal("Y", 1, 2)
    >>> Expectation(X + Y)
    Expectation(X + Y)

    To expand the ``Expectation`` into its expression, use ``expand()``:

    >>> Expectation(X + Y).expand()
    Expectation(X) + Expectation(Y)
    >>> Expectation(a*X + Y).expand()
    a*Expectation(X) + Expectation(Y)
    >>> Expectation(a*X + Y)
    Expectation(a*X + Y)
    >>> Expectation((X + Y)*(X - Y)).expand()
    Expectation(X**2) - Expectation(Y**2)

    To evaluate the ``Expectation``, use ``doit()``:

    >>> Expectation(X + Y).doit()
    mu + 1
    >>> Expectation(X + Expectation(Y + Expectation(2*X))).doit()
    3*mu + 1

    To prevent evaluating nested ``Expectation``, use ``doit(deep=False)``

    >>> Expectation(X + Expectation(Y)).doit(deep=False)
    mu + Expectation(Expectation(Y))
    >>> Expectation(X + Expectation(Y + Expectation(2*X))).doit(deep=False)
    mu + Expectation(Expectation(Expectation(2*X) + Y))

    Nc                 ó   — t          |¦  «        }|j        rddlm}  |||¦  «        S |€'t	          |¦  «        s|S t          j        | |¦  «        }n%t          |¦  «        }t          j        | ||¦  «        }||_        |S )Nr   )ÚExpectationMatrix)r   Ú	is_MatrixÚ-sympy.stats.symbolic_multivariate_probabilityrl   r   r   r7   r8   )r9   Úexprr;   r<   rl   r=   s         r(   r7   zExpectation.__new__Î   s”   € Ý˜‰~Œ~ˆØŒ>ð 	6ØWÐWÐWÐWÐWÐWØ$Ð$ T¨9Ñ5Ô5Ð5ØÐÝ˜T‘?”?ð Ø�Ý”,˜s DÑ)Ô)ˆCˆCå  Ñ+Ô+ˆIÝ”,˜s D¨)Ñ4Ô4ˆCØ"ˆŒØˆ
r*   c                 ó&   — | j         d         j        S ©Nr   ©rG   rh   ra   s    r(   Ú_eval_is_commutativez Expectation._eval_is_commutativeÝ   s   € ØŒy˜Œ|Ô*Ð+r*   c                 ó‚  ‡— | j         d         }| j        Št          |¦  «        s|S t          |t          ¦  «        r%t	          j        ˆfd„|j         D ¦   «         ¦  «        S t          |¦  «        }t          |t          ¦  «        r%t	          j        ˆfd„|j         D ¦   «         ¦  «        S t          |t          ¦  «        r€g }g }|j         D ]<}t          |¦  «        r|                     |¦  «         Œ'|                     |¦  «         Œ=t          j        |¦  «        t          t          j        |¦  «        ‰¬¦  «        z  S | S )Nr   c              3   ó^   •K  — | ]'}t          |‰¬ ¦  «                             ¦   «         V — Œ(dS ©rY   N©r   r   ©r&   Úar;   s     €r(   r)   z%Expectation.expand.<locals>.<genexpr>è   sP   øè è € ð  (ð  (Øõ !,¨A¸Ð CÑ CÔ C× JÒ JÑ LÔ Lð  (ð  (ð  (ð  (ð  (ð  (r*   c              3   ó^   •K  — | ]'}t          |‰¬ ¦  «                             ¦   «         V — Œ(dS rv   rw   rx   s     €r(   r)   z%Expectation.expand.<locals>.<genexpr>í   sP   øè è € ð  /ð  /Øõ !,¨A¸Ð CÑ CÔ C× JÒ JÑ LÔ Lð  /ð  /ð  /ð  /ð  /ð  /r*   rY   )
rG   r8   r   rI   r   ÚfromiterÚ_expandr   Úappendr   )rT   rU   ro   Úexpand_exprrD   Únonrvry   r;   s          @r(   r   zExpectation.expandà   sd  ø€ ØŒy˜Œ|ˆØ”Oˆ	å˜‰Œð 	ØˆKå�d�CÑ Ô ð 	(Ý”<ð  (ð  (ð  (ð  (Ø!œYð (ñ  (ô  (ñ (ô (ð (õ ˜d‘m”mˆÝ�k¥3Ñ'Ô'ð 	ZÝ”<ð  /ð  /ð  /ð  /Ø(Ô-ð /ñ  /ô  /ñ /ô /ð /õ ˜�cÑ"Ô"ð 	ZØˆBØˆEØ”Yð $ð $�Ý˜Q‘<”<ð $Ø—I’I˜a‘L”L�L�Là—L’L ‘O”O�O�OÝ”< Ñ&Ô&¥{µ3´<ÀÑ3CÔ3CÈyÐ'YÑ'YÔ'YÑYÐYàˆr*   c                 óÌ  ‡ ‡‡— ‰                      dd¦  «        }‰ j        Š‰ j        d         }‰                      dd¦  «        }‰                      dd¦  «        }|r |j        di ‰¤Ž}t	          |¦  «        rt          |t          ¦  «        r|S |r)‰                      dd¦  «        }t          |‰||¬¦  «        S |                     t          ¦  «        r#t          |¦  «                             |‰¦  «        S ‰�. ‰                      t          |‰¦  «        ¦  «        j        di ‰¤ŽS |j        rt          ˆˆˆ fd	„|j        D ¦   «         Ž S |j        r|                     t          ¦  «        r|S t          |¦  «        t%          ¦   «         k    r‰                      |¦  «        S t          |¦  «                             ||¬
¦  «        }t'          |d¦  «        r|r |j        di ‰¤ŽS |S )NÚdeepTr   r?   Fr@   Úevalf)r?   r‚   c                 ó¨   •— g | ]N}t          |t          ¦  «        s! ‰                     |‰¦  «        j        d i ‰¤Žn‰                     |‰¦  «        ‘ŒOS )r4   )rI   r   rK   rF   )r&   r\   r;   rU   rT   s     €€€r(   ú
<listcomp>z$Expectation.doit.<locals>.<listcomp>  sq   ø€ ð /ð /ð /à õ & c­;Ñ7Ô7ðWÐ7˜Ÿš 3¨	Ñ2Ô2Ô7Ð@Ð@¸%Ð@Ð@Ð@Ø=A¿YºYÀsÈIÑ=VÔ=Vð/ð /ð /r*   rA   rF   r4   )rH   r8   rG   rF   r   rI   r   r   rL   r   r   Úcompute_expectationrK   r   Úis_Addr   Úis_Mulr1   r   rS   )	rT   rU   r�   ro   r?   r@   r‚   rW   r;   s	   ``      @r(   rF   zExpectation.doitü   s  øøø€ Ø�yŠy˜ Ñ&Ô&ˆØ”Oˆ	ØŒy˜Œ|ˆØ—Y’Y˜|¨UÑ3Ô3ˆ
Ø—9’9˜Z¨Ñ.Ô.ˆàð 	&Ø�4”9Ð%Ð%˜uÐ%Ð%ˆDå˜‰Œð 	¥*¨Tµ;Ñ"?Ô"?ð 	ØˆKØð 	SØ—I’I˜g tÑ,Ô,ˆEÝ˜d I¸*ÈEÐRÑRÔRÐRà�8Š8Õ'Ñ(Ô(ð 	EÝ˜$‘<”<×3Ò3°D¸)ÑDÔDÐDð Ð Ø9�4—9’9�U 4¨Ñ3Ô3Ñ4Ô4Ô9ÐBÐB¸EÐBÐBÐBð Œ;ð 	0Ýð /ð /ð /ð /ð /ð /à$(¤Ið/ñ /ô /ð 0ð 0ð Œ;ð 	Ø�zŠz�+Ñ&Ô&ð Ø�å�$‰<Œ<�6™8œ8Ò#Ð#Ø—9’9˜T‘?”?Ð"å˜‘”×1Ò1°$ÀÐ1ÑJÔJˆÝ�6˜6Ñ"Ô"ð 	 xð 	Ø�6”;Ð'Ð' Ð'Ð'Ð'àˆMr*   c           	      óª  — |                      t          ¦  «        }t          |¦  «        dk    rt          ¦   «         ‚t          |¦  «        dk    r|S |                     ¦   «         }|j        €t          d¦  «        ‚|j        }|j        d          	                    ¦   «         r't          |j                             ¦   «         ¦  «        }nt          |j        dz   ¦  «        }|j        j        rnt          |                     ||¦  «        t          t!          ||¦  «        |¦  «        z  ||j        j        j        j        |j        j        j        j        f¦  «        S |j        j        rt          ‚t-          |                     ||¦  «        t          t!          ||¦  «        |¦  «        z  ||j        j        j        j        |j        j        j        f¦  «        S )Nr#   r   zProbability space not knownÚ_1)r1   r   r,   ÚNotImplementedErrorÚpopr   rO   ÚsymbolÚnameÚisupperr
   ÚlowerÚis_Continuousr   Úreplacer   r   ÚdomainÚsetÚinfÚsupÚ	is_Finiter   )rT   r\   r;   r<   ÚrvsrD   rŒ   s          r(   Ú_eval_rewrite_as_Probabilityz(Expectation._eval_rewrite_as_Probability'  sÄ  € Ø�iŠi�Ñ%Ô%ˆÝˆs‰8Œ8�aŠ<ˆ<Ý%Ñ'Ô'Ð'Ýˆs‰8Œ8�qŠ=ˆ=ØˆJà�WŠW‰YŒYˆØŒ9ÐÝÐ:Ñ;Ô;Ð;à”ˆØŒ;�qŒ>×!Ò!Ñ#Ô#ð 	0Ý˜FœK×-Ò-Ñ/Ô/Ñ0Ô0ˆFˆFå˜FœK¨$Ñ.Ñ/Ô/ˆFàŒ9Ô"ð 	RÝ˜CŸKšK¨¨FÑ3Ô3µKÅÀ2ÀvÁÄÐPYÑ4ZÔ4ZÑZÐ]cÐegÔenÔeuÔeyÔe}ð  @Bô  @Iô  @Pô  @Tô  @Xð  ]Yñ  Zô  Zð  ZàŒyÔ"ð RÝ)Ð)å˜3Ÿ;š; r¨6Ñ2Ô2µ;½rÀ"Àf¹~¼~ÈyÑ3YÔ3YÑYÐ\bÐdfÔdmÔdtÔdxÔd|ð  Aô  Hô  Lô  Pð  \Qñ  Rô  Rð  Rr*   Fc                 óZ   — |                       ||¬¦  «                             d|¬¦  «        S )NrY   F)r�   r@   rZ   )rT   r\   r;   r@   r<   s        r(   r]   z%Expectation._eval_rewrite_as_Integral@  s+   € Ø�yŠy˜¨	ˆyÑ2Ô2×7Ò7¸UÈXÐ7ÑVÔVÐVr*   c                 óZ   — |                       t          ¦  «                             ¦   «         S r%   r_   ra   s    r(   rb   zExpectation.evaluate_integralE  rc   r*   r%   )NF)rd   re   rf   rg   r7   rs   r   rF   r˜   r]   ri   rb   Úevaluate_sumr4   r*   r(   r   r   ˆ   s«   € € € € € ðCð CðJð ð ð ð,ð ,ð ,ðð ð ð8(ð (ð (ðVRð Rð Rð Rð2Wð Wð Wð Wð 5Ðð-ð -ð -ð %€L€L€Lr*   r   c                   óH   — e Zd ZdZd
d„Zd„ Zd„ Zd
d„Zd
d„Zd
d„Z	e	Z
d	„ ZdS )r    a¶  
    Symbolic expression for the variance.

    Examples
    ========

    >>> from sympy import symbols, Integral
    >>> from sympy.stats import Normal, Expectation, Variance, Probability
    >>> mu = symbols("mu", positive=True)
    >>> sigma = symbols("sigma", positive=True)
    >>> X = Normal("X", mu, sigma)
    >>> Variance(X)
    Variance(X)
    >>> Variance(X).evaluate_integral()
    sigma**2

    Integral representation of the underlying calculations:

    >>> Variance(X).rewrite(Integral)
    Integral(sqrt(2)*(X - Integral(sqrt(2)*X*exp(-(X - mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma), (X, -oo, oo)))**2*exp(-(X - mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma), (X, -oo, oo))

    Integral representation, without expanding the PDF:

    >>> Variance(X).rewrite(Probability)
    -Integral(x*Probability(Eq(X, x)), (x, -oo, oo))**2 + Integral(x**2*Probability(Eq(X, x)), (x, -oo, oo))

    Rewrite the variance in terms of the expectation

    >>> Variance(X).rewrite(Expectation)
    -Expectation(X)**2 + Expectation(X**2)

    Some transformations based on the properties of the variance may happen:

    >>> from sympy.abc import a
    >>> Y = Normal("Y", 0, 1)
    >>> Variance(a*X)
    Variance(a*X)

    To expand the variance in its expression, use ``expand()``:

    >>> Variance(a*X).expand()
    a**2*Variance(X)
    >>> Variance(X + Y)
    Variance(X + Y)
    >>> Variance(X + Y).expand()
    2*Covariance(X, Y) + Variance(X) + Variance(Y)

    Nc                 óÞ   — t          |¦  «        }|j        rddlm}  |||¦  «        S |€t	          j        | |¦  «        }n%t          |¦  «        }t	          j        | ||¦  «        }||_        |S )Nr   )ÚVarianceMatrix)r   rm   rn   rž   r   r7   r8   )r9   r\   r;   r<   rž   r=   s         r(   r7   zVariance.__new__{  s€   € Ý�s‰mŒmˆàŒ=ð 	2ØTÐTÐTÐTÐTÐTØ!�> # yÑ1Ô1Ð1ØÐÝ”,˜s CÑ(Ô(ˆCˆCå  Ñ+Ô+ˆIÝ”,˜s C¨Ñ3Ô3ˆCØ"ˆŒØˆ
r*   c                 ó&   — | j         d         j        S rq   rr   ra   s    r(   rs   zVariance._eval_is_commutative‰  ó   € ØŒy˜Œ|Ô*Ð*r*   c           	      ó  ‡	— | j         d         }| j        Š	t          |¦  «        st          j        S t          |t          ¦  «        r| S t          |t          ¦  «        ryg }|j         D ]&}t          |¦  «        r|                     |¦  «         Œ't          ˆ	fd„|D ¦   «         Ž }ˆ	fd„}t          t          |t          j        |d¦  «        ¦  «        Ž }||z   S t          |t          ¦  «        r¡g }g }|j         D ]?}t          |¦  «        r|                     |¦  «         Œ'|                     |dz  ¦  «         Œ@t          |¦  «        dk    rt          j        S t          j        |¦  «        t          t          j        |¦  «        ‰	¦  «        z  S | S )Nr   c              3   ó\   •K  — | ]&}t          |‰¦  «                             ¦   «         V — Œ'd S r%   )r    r   )r&   Úxvr;   s     €r(   r)   z"Variance.expand.<locals>.<genexpr>š  s9   øè è € ÐLÐLÀ2�h r¨9Ñ5Ô5×<Ò<Ñ>Ô>ÐLÐLÐLÐLÐLÐLr*   c                 óF   •— dt          | d‰iŽ                     ¦   «         z  S )Né   r;   )r!   r   )r0   r;   s    €r(   ú<lambda>z!Variance.expand.<locals>.<lambda>›  s%   ø€  Q¥z°1Ð'JÀ	Ð'JÐ'J×'QÒ'QÑ'SÔ'SÑ%S€ r*   r¥   )rG   r8   r   r	   rQ   rI   r   r   r}   ÚmapÚ	itertoolsÚcombinationsr   r,   r{   r    )
rT   rU   r\   rD   ry   Ú	variancesÚmap_to_covarÚcovariancesr   r;   s
            @r(   r   zVariance.expandŒ  sŽ  ø€ ØŒi˜ŒlˆØ”Oˆ	å˜‰~Œ~ð 	Ý”6ˆMå�c�<Ñ(Ô(ð 	MØˆKÝ˜�SÑ!Ô!ð 	MØˆBØ”Xð !ð !�Ý˜Q‘<”<ð !Ø—I’I˜a‘L”L�LøÝÐLÐLÐLÐLÈÐLÑLÔLÐMˆIØSÐSÐSÐSˆLÝ�s <µÔ1GÈÈAÑ1NÔ1NÑOÔOÐPˆKØ˜{Ñ*Ð*Ý˜�SÑ!Ô!ð 
	MØˆEØˆBØ”Xð 'ð '�Ý˜Q‘<”<ð 'Ø—I’I˜a‘L”L�L�Là—L’L  A¡Ñ&Ô&Ð&Ð&Ý�2‰wŒw˜!Š|ˆ|Ý”v�Ý”< Ñ&Ô&¥xµ´¸RÑ0@Ô0@À)Ñ'LÔ'LÑLÐLð ˆr*   c                 óX   — t          |dz  |¦  «        }t          ||¦  «        dz  }||z
  S )Nr¥   ©r   )rT   r\   r;   r<   Úe1Úe2s         r(   Ú_eval_rewrite_as_Expectationz%Variance._eval_rewrite_as_Expectation­  s2   € Ý˜S !™V YÑ/Ô/ˆBÝ˜S )Ñ,Ô,¨aÑ/ˆBØ˜‘7ˆNr*   c                 óf   — |                       t          ¦  «                              t          ¦  «        S r%   ©r`   r   r   r[   s       r(   r˜   z%Variance._eval_rewrite_as_Probability²  ó"   € Ø�|Š|�KÑ(Ô(×0Ò0µÑ=Ô=Ð=r*   c                 óF   — t          | j        d         | j        d¬¦  «        S )Nr   FrA   )r   rG   r8   r[   s       r(   r]   z"Variance._eval_rewrite_as_Integralµ  s   € Ý˜œ	 !œ d¤oÀÐFÑFÔFÐFr*   c                 óZ   — |                       t          ¦  «                             ¦   «         S r%   r_   ra   s    r(   rb   zVariance.evaluate_integralº  rc   r*   r%   )rd   re   rf   rg   r7   rs   r   r±   r˜   r]   ri   rb   r4   r*   r(   r    r    J  s©   € € € € € ð/ð /ð`ð ð ð ð+ð +ð +ðð ð ðBð ð ð ð
>ð >ð >ð >ðGð Gð Gð Gð 5Ðð-ð -ð -ð -ð -r*   r    c                   ót   — e Zd ZdZdd„Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	dd„Z
dd	„Zdd
„ZeZd„ ZdS )r!   a˜  
    Symbolic expression for the covariance.

    Examples
    ========

    >>> from sympy.stats import Covariance
    >>> from sympy.stats import Normal
    >>> X = Normal("X", 3, 2)
    >>> Y = Normal("Y", 0, 1)
    >>> Z = Normal("Z", 0, 1)
    >>> W = Normal("W", 0, 1)
    >>> cexpr = Covariance(X, Y)
    >>> cexpr
    Covariance(X, Y)

    Evaluate the covariance, `X` and `Y` are independent,
    therefore zero is the result:

    >>> cexpr.evaluate_integral()
    0

    Rewrite the covariance expression in terms of expectations:

    >>> from sympy.stats import Expectation
    >>> cexpr.rewrite(Expectation)
    Expectation(X*Y) - Expectation(X)*Expectation(Y)

    In order to expand the argument, use ``expand()``:

    >>> from sympy.abc import a, b, c, d
    >>> Covariance(a*X + b*Y, c*Z + d*W)
    Covariance(a*X + b*Y, c*Z + d*W)
    >>> Covariance(a*X + b*Y, c*Z + d*W).expand()
    a*c*Covariance(X, Z) + a*d*Covariance(W, X) + b*c*Covariance(Y, Z) + b*d*Covariance(W, Y)

    This class is aware of some properties of the covariance:

    >>> Covariance(X, X).expand()
    Variance(X)
    >>> Covariance(a*X, b*Y).expand()
    a*b*Covariance(X, Y)
    Nc                 ó†  — t          |¦  «        }t          |¦  «        }|j        s|j        rddlm}  ||||¦  «        S |                     dt
          j        ¦  «        rt          ||gt          ¬¦  «        \  }}|€t          j
        | ||¦  «        }n&t          |¦  «        }t          j
        | |||¦  «        }||_        |S )Nr   )ÚCrossCovarianceMatrixr@   ©Úkey)r   rm   rn   r¹   r‹   r   r@   Úsortedr   r   r7   r8   )r9   Úarg1Úarg2r;   r<   r¹   r=   s          r(   r7   zCovariance.__new__ë  sÓ   € Ý˜‰~Œ~ˆÝ˜‰~Œ~ˆàŒ>ð 	@˜Tœ^ð 	@Ø[Ð[Ð[Ð[Ð[Ð[Ø(Ð(¨¨t°YÑ?Ô?Ð?à�:Š:�jÕ"3Ô"<Ñ=Ô=ð 	DÝ  t Õ2BÐCÑCÔC‰JˆD�$àÐÝ”,˜s D¨$Ñ/Ô/ˆCˆCå  Ñ+Ô+ˆIÝ”,˜s D¨$°	Ñ:Ô:ˆCØ"ˆŒØˆ
r*   c                 ó&   — | j         d         j        S rq   rr   ra   s    r(   rs   zCovariance._eval_is_commutativeþ  r    r*   c                 ó’  ‡‡— | j         d         }| j         d         }| j        Š||k    r"t          |‰¦  «                             ¦   «         S t	          |¦  «        st
          j        S t	          |¦  «        st
          j        S t          ||gt          ¬¦  «        \  }}t          |t          ¦  «        r&t          |t          ¦  «        rt          ||‰¦  «        S |                      |                     ¦   «         ¦  «        }|                      |                     ¦   «         ¦  «        Šˆˆfd„|D ¦   «         }t          j        |¦  «        S )Nr   r#   rº   c           
      óv   •— g | ]5\  }}‰D ]-\  }}||z  t          t          ||gt          ¬ ¦  «        d‰iŽz  ‘Œ.Œ6S )rº   r;   )r!   r¼   r   )r&   ry   Úr1ÚbÚr2Úcoeff_rv_list2r;   s        €€r(   r„   z%Covariance.expand.<locals>.<listcomp>  sw   ø€ ð Pð Pð PÙ˜˜2ÀðPð PÙ5<°a¸ð �Q‘3•z¥6¨2¨r¨(Õ8HÐ#IÑ#IÔ#IÐ_ÐU^Ð_Ð_Ñ_ð Pð Pð Pð Pr*   )rG   r8   r    r   r   r	   rQ   r¼   r   rI   r   r!   Ú_expand_single_argumentr   r{   )rT   rU   r½   r¾   Úcoeff_rv_list1ÚaddendsrÅ   r;   s         @@r(   r   zCovariance.expand  s;  øø€ ØŒy˜Œ|ˆØŒy˜Œ|ˆØ”Oˆ	à�4Š<ˆ<Ý˜D )Ñ,Ô,×3Ò3Ñ5Ô5Ð5å˜‰Œð 	Ý”6ˆMÝ˜‰Œð 	Ý”6ˆMå˜T 4˜LÕ.>Ð?Ñ?Ô?‰
ˆˆdå�d�LÑ)Ô)ð 	5­j¸½|Ñ.LÔ.Lð 	5Ý˜d D¨)Ñ4Ô4Ð4à×5Ò5°d·k²k±m´mÑDÔDˆØ×5Ò5°d·k²k±m´mÑDÔDˆðPð Pð Pð Pð PØ"0ðPñ Pô PˆåŒ|˜GÑ$Ô$Ð$r*   c                 ó  — t          |t          ¦  «        rt          j        |fgS t          |t          ¦  «        r|g }|j        D ]p}t          |t          ¦  «        r)|                     |                      |¦  «        ¦  «         Œ@t          |¦  «        r!|                     t          j        |f¦  «         Œq|S t          |t          ¦  «        r|                      |¦  «        gS t          |¦  «        rt          j        |fgS d S r%   )
rI   r   r	   rJ   r   rG   r   r}   Ú_get_mul_nonrv_rv_tupler   )r9   ro   Úoutvalry   s       r(   rÆ   z"Covariance._expand_single_argument  sü   € õ �d�LÑ)Ô)ð 	#Ý”U˜D�M�?Ð"Ý˜�cÑ"Ô"ð 	#ØˆFØ”Yð .ð .�Ý˜a¥Ñ%Ô%ð .Ø—M’M #×"=Ò"=¸aÑ"@Ô"@ÑAÔAÐAÐAÝ˜q‘\”\ð .Ø—M’M¥1¤5¨! *Ñ-Ô-Ð-øàˆMÝ˜�cÑ"Ô"ð 	#Ø×/Ò/°Ñ5Ô5Ð6Ð6Ý�t‰_Œ_ð 	#Ý”U˜D�M�?Ð"ð	#ð 	#r*   c                 óâ   — g }g }|j         D ]<}t          |¦  «        r|                     |¦  «         Œ'|                     |¦  «         Œ=t          j        |¦  «        t          j        |¦  «        fS r%   )rG   r   r}   r   r{   )r9   ÚmrD   r   ry   s        r(   rÊ   z"Covariance._get_mul_nonrv_rv_tuple-  sl   € àˆØˆØ”ð 	 ð 	 ˆAÝ˜‰|Œ|ð  Ø—	’	˜!‘”��à—’˜Q‘”��Ý”˜UÑ#Ô#¥S¤\°"Ñ%5Ô%5Ð6Ð6r*   c                 ót   — t          ||z  |¦  «        }t          ||¦  «        t          ||¦  «        z  }||z
  S r%   r®   )rT   r½   r¾   r;   r<   r¯   r°   s          r(   r±   z'Covariance._eval_rewrite_as_Expectation8  s<   € Ý˜˜d™ IÑ.Ô.ˆÝ˜˜yÑ)Ô)­+°d¸IÑ*FÔ*FÑFˆØ�B‰wˆr*   c                 óf   — |                       t          ¦  «                              t          ¦  «        S r%   r³   ©rT   r½   r¾   r;   r<   s        r(   r˜   z'Covariance._eval_rewrite_as_Probability=  r´   r*   c                 ó^   — t          | j        d         | j        d         | j        d¬¦  «        S )Nr   r#   FrA   )r   rG   r8   rÐ   s        r(   r]   z$Covariance._eval_rewrite_as_Integral@  s(   € Ý˜$œ) Aœ,¨¬	°!¬°d´oÐPUÐVÑVÔVÐVr*   c                 óZ   — |                       t          ¦  «                             ¦   «         S r%   r_   ra   s    r(   rb   zCovariance.evaluate_integralE  rc   r*   r%   )rd   re   rf   rg   r7   rs   r   ÚclassmethodrÆ   rÊ   r±   r˜   r]   ri   rb   r4   r*   r(   r!   r!   ¾  sÞ   € € € € € ð*ð *ðXð ð ð ð&+ð +ð +ð%ð %ð %ð2 ð#ð #ñ „[ð#ð$ ð7ð 7ñ „[ð7ðð ð ð ð
>ð >ð >ð >ðWð Wð Wð Wð 5Ðð-ð -ð -ð -ð -r*   r!   c                   óB   ‡ — e Zd ZdZd	ˆ fd„	Zd„ Zd	d„Zd	d„Zd	d„Zˆ xZ	S )
ÚMomenta�  
    Symbolic class for Moment

    Examples
    ========

    >>> from sympy import Symbol, Integral
    >>> from sympy.stats import Normal, Expectation, Probability, Moment
    >>> mu = Symbol('mu', real=True)
    >>> sigma = Symbol('sigma', positive=True)
    >>> X = Normal('X', mu, sigma)
    >>> M = Moment(X, 3, 1)

    To evaluate the result of Moment use `doit`:

    >>> M.doit()
    mu**3 - 3*mu**2 + 3*mu*sigma**2 + 3*mu - 3*sigma**2 - 1

    Rewrite the Moment expression in terms of Expectation:

    >>> M.rewrite(Expectation)
    Expectation((X - 1)**3)

    Rewrite the Moment expression in terms of Probability:

    >>> M.rewrite(Probability)
    Integral((x - 1)**3*Probability(Eq(X, x)), (x, -oo, oo))

    Rewrite the Moment expression in terms of Integral:

    >>> M.rewrite(Integral)
    Integral(sqrt(2)*(X - 1)**3*exp(-(X - mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma), (X, -oo, oo))

    r   Nc                 ó  •— t          |¦  «        }t          |¦  «        }t          |¦  «        }|�4t          |¦  «        }t          ¦   «                              | ||||¦  «        S t          ¦   «                              | |||¦  «        S r%   ©r   Úsuperr7   )r9   ÚXÚnÚcr;   r<   Ú	__class__s         €r(   r7   zMoment.__new__l  sq   ø€ Ý�Q‰KŒKˆÝ�Q‰KŒKˆÝ�Q‰KŒKˆØÐ Ý  Ñ+Ô+ˆIÝ‘7”7—?’? 3¨¨1¨a°Ñ;Ô;Ð;å‘7”7—?’? 3¨¨1¨aÑ0Ô0Ð0r*   c                 óL   —  |                       t          ¦  «        j        di |¤ŽS ©Nr4   ©r`   r   rF   ©rT   rU   s     r(   rF   zMoment.doitv  ó'   € Ø-ˆt�|Š|�KÑ(Ô(Ô-Ð6Ð6°Ð6Ð6Ð6r*   c                 ó.   — t          ||z
  |z  |¦  «        S r%   r®   ©rT   rÙ   rÚ   rÛ   r;   r<   s         r(   r±   z#Moment._eval_rewrite_as_Expectationy  s   € Ý˜A ™E A™: yÑ1Ô1Ð1r*   c                 óf   — |                       t          ¦  «                              t          ¦  «        S r%   r³   rã   s         r(   r˜   z#Moment._eval_rewrite_as_Probability|  r´   r*   c                 óf   — |                       t          ¦  «                              t          ¦  «        S r%   ©r`   r   r   rã   s         r(   r]   z Moment._eval_rewrite_as_Integral  ó"   € Ø�|Š|�KÑ(Ô(×0Ò0µÑ:Ô:Ð:r*   )r   N©
rd   re   rf   rg   r7   rF   r±   r˜   r]   Ú__classcell__©rÜ   s   @r(   rÕ   rÕ   I  s“   ø€ € € € € ð!ð !ðD1ð 1ð 1ð 1ð 1ð 1ð7ð 7ð 7ð2ð 2ð 2ð 2ð>ð >ð >ð >ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r*   rÕ   c                   óB   ‡ — e Zd ZdZdˆ fd„	Zd„ Zdd„Zdd„Zdd„Zˆ xZ	S )	ÚCentralMomenta'  
    Symbolic class Central Moment

    Examples
    ========

    >>> from sympy import Symbol, Integral
    >>> from sympy.stats import Normal, Expectation, Probability, CentralMoment
    >>> mu = Symbol('mu', real=True)
    >>> sigma = Symbol('sigma', positive=True)
    >>> X = Normal('X', mu, sigma)
    >>> CM = CentralMoment(X, 4)

    To evaluate the result of CentralMoment use `doit`:

    >>> CM.doit().simplify()
    3*sigma**4

    Rewrite the CentralMoment expression in terms of Expectation:

    >>> CM.rewrite(Expectation)
    Expectation((-Expectation(X) + X)**4)

    Rewrite the CentralMoment expression in terms of Probability:

    >>> CM.rewrite(Probability)
    Integral((x - Integral(x*Probability(True), (x, -oo, oo)))**4*Probability(Eq(X, x)), (x, -oo, oo))

    Rewrite the CentralMoment expression in terms of Integral:

    >>> CM.rewrite(Integral)
    Integral(sqrt(2)*(X - Integral(sqrt(2)*X*exp(-(X - mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma), (X, -oo, oo)))**4*exp(-(X - mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma), (X, -oo, oo))

    Nc                 óð   •— t          |¦  «        }t          |¦  «        }|�3t          |¦  «        }t          ¦   «                              | |||¦  «        S t          ¦   «                              | ||¦  «        S r%   r×   )r9   rÙ   rÚ   r;   r<   rÜ   s        €r(   r7   zCentralMoment.__new__¦  sb   ø€ Ý�Q‰KŒKˆÝ�Q‰KŒKˆØÐ Ý  Ñ+Ô+ˆIÝ‘7”7—?’? 3¨¨1¨iÑ8Ô8Ð8å‘7”7—?’? 3¨¨1Ñ-Ô-Ð-r*   c                 óL   —  |                       t          ¦  «        j        di |¤ŽS rÞ   rß   rà   s     r(   rF   zCentralMoment.doit¯  rá   r*   c                 ón   — t          ||fi |¤Ž}t          ||||fi |¤Ž                     t           ¦  «        S r%   )r   rÕ   r`   )rT   rÙ   rÚ   r;   r<   Úmus         r(   r±   z*CentralMoment._eval_rewrite_as_Expectation²  sC   € Ý˜˜IÐ0Ð0¨Ð0Ð0ˆÝ�a˜˜B 	Ð4Ð4¨VÐ4Ð4×<Ò<½[ÑIÔIÐIr*   c                 óf   — |                       t          ¦  «                              t          ¦  «        S r%   r³   ©rT   rÙ   rÚ   r;   r<   s        r(   r˜   z*CentralMoment._eval_rewrite_as_Probability¶  r´   r*   c                 óf   — |                       t          ¦  «                              t          ¦  «        S r%   ræ   rò   s        r(   r]   z'CentralMoment._eval_rewrite_as_Integral¹  rç   r*   r%   rè   rê   s   @r(   rì   rì   ƒ  s—   ø€ € € € € ð!ð !ðD.ð .ð .ð .ð .ð .ð7ð 7ð 7ðJð Jð Jð Jð>ð >ð >ð >ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r*   rì   )5r¨   Úsympy.concrete.summationsr   Úsympy.core.addr   Úsympy.core.exprr   Úsympy.core.functionr   r|   Úsympy.core.mulr   Úsympy.core.relationalr   Úsympy.core.singletonr	   Úsympy.core.symbolr
   Úsympy.integrals.integralsr   Úsympy.logic.boolalgr   Úsympy.core.parametersr   Úsympy.core.sortingr   Úsympy.core.sympifyr   r   r   Úsympy.statsr   r   Úsympy.stats.rvr   r   r   r   r   r   r   r   r   r   Ú__all__Úregisterr2   r   r   r    r!   rÕ   rì   r4   r*   r(   ú<module>r     sR  ðØ Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø .Ð .Ð .Ð .Ð .Ð .Ø #Ð #Ð #Ð #Ð #Ð #Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø /Ð /Ð /Ð /Ð /Ð /Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ð@ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð CÐ
BÐ
B€ð €Ô�DÑÔð,ð ,ñ Ôð,ð €Ô�LÑ!Ô!ðð ñ "Ô!ðð`-ð `-ð `-ð `-ð `-�$ñ `-ô `-ð `-ðF@%ð @%ð @%ð @%ð @%�$ñ @%ô @%ð @%ðDq-ð q-ð q-ð q-ð q-ˆtñ q-ô q-ð q-ðhH-ð H-ð H-ð H-ð H-�ñ H-ô H-ð H-ðV7;ð 7;ð 7;ð 7;ð 7;ˆTñ 7;ô 7;ð 7;ðt7;ð 7;ð 7;ð 7;ð 7;�Dñ 7;ô 7;ð 7;ð 7;ð 7;r*   