
    g                     &   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
 d dlmZmZmZmZmZ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% 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/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJmKZK d dlLmMZMmNZNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZV d dlWmXZXmYZY d d lmZZZ d! Z[d" Z\d# Z]d$ Z^d% Z_d& Z`d' Zad( Zbd)S )*    )Sum)Tuple)Lambda)FloatRationaloopi)EqGeGtLeLtNe)S)Symbolsymbols)	factorial)exp)ceiling)sqrt)	Piecewise)erf)gamma
lowergamma)AndNot)Matrix)MatrixSymbol)ImmutableMatrix)Contains)Range)	FiniteSetInterval)DiscreteMarkovChainPTransitionMatrixOfEStochasticStateSpaceOfvarianceContinuousMarkovChainBernoulliProcessPoissonProcessWienerProcessGammaProcesssample_stochastic_process)JointDistribution)JointDistributionHandmade)RandomIndexedSymbol)ProbabilityExpectation)raisesskipignore_warningswarns_deprecated_sympy)import_module)BernoulliDistribution)PoissonDistribution)NormalDistributionGammaDistribution)Strc                  Y  456789 t          d          6t          6j        t                    sJ 6j        t
          j        k    sJ t          6j        t                    sJ t          ddd          9t          69         t                    sJ t          6d                   t          6d                   k    sJ t          t          d            t          t          69fd           t          t          6fd           t          t          6fd	           t          t          6fd
           t!          dd          } t          d| |           }t          |           }t          d||          }t#          t%          |d         d          t%          |d         d                    |d         k    sJ t          t&          9fd           t          t&          6fd           t          dd          \  }}}}dt)          d          |t          dd          gt+          t          d          t-          |          t)          d          d          t          ddd          |||gg}d |D             }	t/          |	          D ]C\  }
7t          7j        t                    sJ 7j        ||
         k    s7j        t1          ||
          k    sJ 7j        dk    sJ t5          t6                    5  t#          t%          7d         d          t%          7d         d          d          t9          t%          7d         d          t%          7d         d                    k    sJ 	 d d d            n# 1 swxY w Y   t          7d                   t          7d                   k    sJ t          t&          7fd            Et          t          d!            t          dt          d9d                    77j        t;          9dz
  dz            k    sJ t          dt=          g g          "          t          dt=          ddgddgg          "          t          dt=          t>          dt>          z
  g|d|z
  gg          "          g}	|	D ];}|j        |j        j         d         k    sJ t          |j        tB                    sJ <t=          g d#g d$g d%g          4t          d&dd          }t          dg d'4          7t          dg d(|          87"                    d7d         d          tG          7d         7d         7d                   k    sJ t          t&          7fd)           t#          t%          7d         d          t%          7d         d                    $                    d          tK          d*d          k    sJ t#          t%          8d         d          t%          8d         d                    |d+         |d,         z  |d-         |d.         z  z   |d.         |d/         z  z   z
  &                                dk    sJ t#          t%          8d         d          t%          8d         d                    t9          t%          8d         d                    k    sJ t#          t%          8d         d          t%          8d         d                    |d+         |d,         z  |d-         |d.         z  z   |d.         |d/         z  z   k    sJ t=          g d0g d1g d2g          }t#          t%          7d         d          t%          7d         d          tO          7|          z            $                    d          tK          d3d          k    sJ t5          t6                    5  t          7d         d          t          7d                   k    sJ t          7d         t%          7d         d                    $                    d          tK          d4d          k    sJ 	 d d d            n# 1 swxY w Y   t          d&d5d5          5t          t&          58fd6           t          t          d7            t          t&          d8            t          t&          7fd9           t          t&          7fd:           t=          tQ          dd5          tQ          dd5          dgtQ          dd          tQ          dd          tQ          dd          gdtQ          dd5          tQ          dd5          gg          }t#          tS          t%          7d         d          t%          7d         d          t%          7d         d                    t%          t9          t%          7d         d                    tQ          dd5                    tO          7|          z            tQ          dd;          k    sJ t#          tS          t%          7d         d          t%          7d         d          t%          7d         d                    tO          7|                    t9          t%          7d         d                    d5z  k    sJ t#          tU          6d         d          tW          6d         d          z  t%          6d         d          tY          6g d'          z  tO          6|          z            tQ          dd5          k    sJ t#          tU          6d         d          tW          6d         d          z  t%          6d         d          tY          6t          d          d<dg          z  tO          6|          z            tQ          dd5          k    sJ t#          t[          6d         d          t[          6d         d          z  t%          6d         d          tY          6g d'          z  tO          6|          z            t
          j.        u sJ t#          t[          6d         d          t[          6d         d          z  t%          6d         d          tY          6t          d          d<dg          z  tO          6|          z            t
          j.        u sJ t#          tS          t%          7d         d          t%          7d         d          t%          7d         d                    t%          7d         d                    d=t9          t%          7d         d                    z  k    sJ t=          t
          j/        ddgtQ          dd          tQ          dd          tQ          dd          gdtQ          dd5          tQ          dd5          gg          }t=          tQ          dd5          tQ          dd5          dgtQ          dd          tQ          dd          tQ          dd          gdtQ          dd5          tQ          dd5          gg          }t          d|"          }t          d|"          }|0                                tC          g d>g d?g d@g          dAz  k    sJ |1                                dk    sJ |1                                dk    sJ |2                                g d'|fk    sJ |2                                g d'|fk    sJ |3                                g d'|ddddf         |ddddf         |ddddf         fk    sJ |3                                g d'|t=          ddg           t=          ddg           fk    sJ t=          tQ          dd          tQ          dd          tQ          dd          gtQ          ddB          t
          j4        tQ          dd          gtQ          dd          tQ          ddB          tQ          ddB          gg          }t          d|"          }tC          tQ          dCdD          tQ          d;dD          tQ          d5dE          gg          }|j5        |k    sJ |6                                dk    sJ |7                                dk    sJ t          d&dd          }t          d|"          }|5                    ||          8                                dk    sJ |9                    dF          :                    ||          ;                    |          8                                t
          j<        k    sJ t=          t
          j/        ddddgt
          j4        dt
          j4        ddgdt
          j4        dt
          j4        dgddt
          j4        dt
          j4        gg dGg          }t          d|"          }|0                                tC          tQ          dd          t
          j/        t
          j4        gt
          j/        t          d          t
          j/        gt
          j4        t
          j/        tQ          dd          gg          k    sJ |=                                tC          tQ          dd5          tQ          dd5          gt
          j4        t
          j4        gtQ          dd5          tQ          dd5          gg          k    sJ t}                      5  |?                                 d d d            n# 1 swxY w Y   t=          tQ          dd          tQ          dd5          tQ          dd5          gtQ          dd          dtQ          dd          gtQ          dd5          tQ          dd5          tQ          dd          gg          }t          d|"          }|1                                dk    sJ |0                                tC          tQ          dHdI          tQ          ddJ          tQ          dKdI          gtQ          ddJ          tQ          dLdJ          tQ          ddJ          gtQ          dKdI          tQ          ddJ          tQ          dHdI          gg          k    sJ t          dt=          g g          "          66j        dk    sJ 69                                t=          g g          k    sJ 6@                                g k    sJ 62                                g t=          g g          fk    sJ 63                                g t=          g g          t=          g g          t=          g g          fk    sJ 66                                dk    sJ 67                                dk    sJ t=          g dMg dNg dOg dPg dQg          dBz  }t          d|"          }|@                                }t          t          |           \  }}}|ddgddgd5gfk    sJ |dRk    sJ |dSk    sJ t=          g dTg dUg dVg dWg dXg dYg          dBz  } t          d| "          }!|!@                                }t          t          |           \  }}}|ddgg dZfk    sJ |d[k    sJ |d/k    sJ t=          g d\g d]g d^g d_g d`g dag dbg dcg ddg deg
          dBz  }"t          d|""          }#|#@                                }t          t          |           \  }}}|g dfdgg dgdgd5gfk    sJ |dhk    sJ |dik    sJ t=          g djt          d          dz  dt          d          dz  ddgdt          d          dz  dt          d          dz  dgddt          d          dz  dt          d          dz  gddddt          d          gg          4t          dkg dl4          }$|$3                                \  }%}&}'}(|%g dmk    sJ |&t=          ddgddgg          k    sJ |'t=          t          d          dz  dgddgdt          d          dz  gg          k    sJ |(t=          dt          d          dz  dgt          d          dz  dt          d          dz  gdt          d          dz  dgg          k    sJ |$2                                \  }%})|%g dmk    sJ |)t=          g djg dnt          d          dz  ddt          d          dz  dgddt          d          dz  dt          d          dz  gdt          d          dz  dt          d          dz  dgg          k    sJ t=          g dog dpg dqg drg dsg          d5z  4t          d4"          666                                rJ 67                                sJ t=          ddgddgg          4t          d4"          666                                rJ 67                                sJ t=          g dSg dtg dug          d5z  4t          d4"          666                                sJ 67                                sJ t=          ddgddgg          dz  4t          d4"          666                                sJ 67                                sJ t=          g dvg dwg dxg          4t          d4"          661                                rJ t=          g dyg dzg d{g d|g          dz  4t          d4"          661                                sJ t=          g d}g d~g dg dg dg          dz  4t          d4"          661                                sJ t          dg d|          }*|*@                                }t          t          |           \  }}}|dgddgfk    sJ |d[k    sJ |d-k    sJ |*2                                g d|fk    sJ |*3                                g d|ddddf         |ddddf         |ddddf         fk    sJ t=          t
          j4        tQ          dd5          tQ          dd5          gtQ          dd          dtQ          dd          gt
          j4        t
          j4        dgg          4t          dg d'4          6t#          t%          6d         d          t%          6d         d          z  t%          6d         d          z  t%          t#          t%          6d         d                    tQ          dd5                    t%          t#          t%          6d         d                    tQ          dd5                    z            tQ          dd          k    sJ t#          t%          6d         d          t%          6d         d          z  t%          6d         d                    tQ          dd          k    sJ t#          t%          6d         d          t%          6d         d          z  t%          6d         d                    t
          j.        u sJ t#          t[          6d         d          t%          6d         d                    tQ          dd          k    sJ t          6d         dz  t%          6d         d                    tQ          dd          k    sJ t          6d         t%          6d         d                    tQ          dd          k    sJ t          t&          6fd           t          t&          4fd           t          dg d4          6t#          t%          6d         d          t%          6d         d          z  t%          6d         d          z  t%          t#          t%          6d         d                    tQ          dd5                    t%          t#          t%          6d         d                    tQ          dd5                    z            tQ          dd          k    sJ t#          t%          6d         d          t%          6d         d          z  t%          6d         d                    tQ          dd          k    sJ t#          t%          6d         d          t%          6d         d          z  t%          6d         d                    t
          j.        u sJ t#          t[          6d         d          t%          6d         d                    tQ          dd          k    sJ 6j        jD        d         }+6j        jD        d         },t          6d         dz  t%          6d         d                    |+dz  dz  d|,dz  z  dz  z   z
  &                                dk    sJ t          6d         t%          6d         d                    d|+ dz  |,dz  z   dz  z  dz  d|+z  dz  d|,z  dz  z
  dz  dz  z   z
  &                                dk    sJ t          t&          6fd           t=          tQ          ddB          tQ          ddB          tQ          ddB          gtQ          ddB          tQ          ddB          tQ          ddB          gtQ          ddB          tQ          ddB          tQ          d5dB          gg          4t          dg d'4          7t#          t%          7d         7d                   t%          7d         d                    $                    d          tK          dd          k    sJ t#          tW          7d         7d                   t%          7d         d                    $                    d          tK          d*d          k    sJ t#          t          7d         7dB                   t%          7d5         d                    $                    d          tK          dd          k    sJ tK          t#          t%          7dB         7d                   t%          7d5         d                    d          tK          dt#          t[          7dB         7d                   t%          7d5         d                    z
  d          k    sJ tK          t#          tW          7d         7d                   t%          7d         d                    d          tK          dt#          t          7d         7d                   t%          7d         d                    z
  d          k    sJ tK          t#          tU          7d         7d5                   t%          7d         d                    d          tK          dt#          t          7d         7d5                   t%          7d         d                    z
  d          k    sJ t#          t%          7d         7dB                   t%          7d         d                    t#          t%          7dB         7d                   t%          7d         d                    k    sJ t#          tW          7d         7d                   t%          7d         d                    t#          tU          7d         7d                   t%          7d         d                    k    sJ t#          t          7d         7d                   t%          7d5         d                    t#          t          7d         7d                   t%          7d5         d                    k    sJ t          d          \  }+}-},}.t=          tQ          ddB          tQ          d5dB          tQ          ddB          gtQ          ddB          tQ          d5dB          tQ          ddB          gtQ          ddB          tQ          ddB          tQ          ddB          gg          4t          dg d'4          7t#          t%          7|+         |-          t%          7|,         |.                    }/|/:                    |+dB|-d|,d|.di          G                                $                    d5          t#          t%          7dB         d          t%          7d         d                    $                    d5          k    sJ |/:                    |+d|-d|,dB|.di          G                                $                    d5          t#          t%          7d         d          t%          7dB         d                    $                    d5          k    sJ t#          tW          7|+         |-          t%          7|,         |.                    }0t#          t          7|+         |-          t%          7|,         |.                    }1|0:                    |+d|-d|,d|.di          G                                |1:                    |+d|-d|,d|.di          G                                z   dk    sJ t#          t          7|+         |-          t%          7|,         |.                    }2t#          tU          7|+         |-          t%          7|,         |.                    }3|2:                    |+d5|-d|,d|.di          G                                |3:                    |+d5|-d|,d|.di          G                                z   dk    sJ d7d         z  d7d         z  z   &                                d7d         z  k    sJ d7d         z  d7d         z  z
  &                                7d          k    sJ dd7d         z  z  &                                d7d         z  k    sJ d7d         z  d7d         z  z  &                                d7d         dz  z  k    sJ 7d         dz  7d         dz  z   &                                7d         dz   7d         dz  z  k    sJ d S )NXtTpositiveintegerr   c                       t          d          S )N   r$        e/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/stats/tests/test_stochastic_process.py<lambda>z*test_DiscreteMarkovChain.<locals>.<lambda>1   s    1!44 rI   c                                  S NrH   r@   rA   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>2       ! rI   c                  ,                                      S rM   )communication_classesr@   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>3   s    (?(?(A(A rI   c                  ,                                      S rM   )canonical_formrR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>4   s    (8(8(:(: rI   c                  ,                                      S rM   )	decomposerR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>5   s     rI   n)rD   MY   rF   )r   rF   c                  "    t                     S rM   )r/   )rA   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>=   s    8;; rI   c                  <    t          t                               S rM   nextr/   rR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>>   s    t$=a$@$@AA rI   za Rainy Cloudy Sunny)real)rF   rZ      HelloWorldF)sympify   c                 .    g | ]}t          d |          S rY   rG   ).0state_spaces     rJ   
<listcomp>z,test_DiscreteMarkovChain.<locals>.<listcomp>F   s#    TTT!#{33TTTrI   r`   evaluatec                  <    t          t                               S rM   r]   rg   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>Q   s    4(A!(D(D#E#E rI   c                  &    t          dddi          S )NrY   rF   rG   rH   rI   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>S   s    1#1v>> rI   )trans_probs      ?皙?333333?rr   rq   rs   rr   rs   rq   Tr   rF   rZ   )OneTwor`   c                  \                           d         j         d         j                  S NrF   rZ   )joint_distributionsymbolrg   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>e   s#    q33AaDK1MM rI   
ףp=
?)r   rZ   )rF   r   )rF   rF   )rF   rZ   )rZ   rZ   )      ?      ?r   )r   r   r   )r   r   r   g      ?皙?   c            
          t          t          t          d         d          t          d         d          t                     z                      S )Nr`   rZ   rF   )strr%   r
   r&   )TSOYSs   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>q   sC    s1R1q\\2beQ<<BTUWY\B]B]3]#^#^__ rI   c                  B    t          dg dt          d                    S )NZrw   rX   )r$   r   rH   rI   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>r   s    1#yyy'#,,OO rI   c            	      F    t          dg dt          ddd                    S )Nr   rw   rv   r`   r   )r$   r   rH   rI   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>s   s&    23			<PSUVXYCZCZ[[ rI   c                  X    t           d         t           d         d                    S )Nr`   rZ      r'   r
   rg   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>t   !    q1r!A${{33 rI   c                  X    t           d         t           d         d                    S )NrZ   r`   rF   r   rg   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>u   r   rI      0g?)   Q   i|)$      i)ii   }   
      '      )condition_set)r   r   r   r   rF   V   K      i   )r   re   re   r   r   )r   r   r   r   r   )re   r   re   r   r   )r   r   r   r   r   )r   r`   r   r`   r   )TFF)rZ   rF   rF   )r   r   r   r   r   r   )re   r   re   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   re   re   r   )rF   rZ   re   r   )TF)
rZ   r   r   r`   r   r   r`   rZ   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   rZ   rZ   r   r   r   r   r   r`   r`   )
r   r   r   r`   r   r   r   rF   r   r   )
r   r   r   r   re   re   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   re   r   r   rF   r   r   r   )
rZ   r   r   r   r   r   rZ   rZ   r   r   )
r`   r   rF   r   r   r   r   r   r   rZ   )
r   r   r   r   r   r   r   r   r`   r`   )r   r`   r      )rZ      	   )TTFTF)rF   rF   rF   rF   rF   )rF   r   r   r   r   DW)r   rF   rZ   r`   r   )r   r   rF   rZ   r`   )r   rF   r   r   r   )r   r   r   r   r   )rF   r   r`   r   r   )r   rZ   r   rZ   r   )r   r   r`   r   rF   )r   r   r   r   r   )rZ   r   rZ   )rF   rF   rZ   )r   rF   r   )rF   r   r   )r   r   rF   )rF   rF   r   r   )r   rF   rF   r   )rF   r   r   rF   )r   r   r   rZ   )rZ   r   r   r   r   )rF   r   rF   r   r   )r   rF   r   rF   r   )r   r   rF   r   rF   )r   r   r   r   rZ      r   r   c                  X    t           d         t           d         d                    S r{   r   rR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>>  r   rI   c                  *    t          dddg           S )Nr@   r   rF   rG   )rv   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>?  s    23ABB rI   )ABCc                  X    t           d         t           d         d                    S r{   r   rR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>L  r   rI   r   gao?r   g4F?   a b c d         ?r   rq   )Hr$   
isinstanceri   r!   	index_setr   	Naturals0transition_probabilitiesr   r   r2   r'   r4   r5   	TypeErrorNotImplementedErrorr   r%   r
   
ValueErrorr>   r   r   	enumerater"   number_of_statesr7   UserWarningr3   r   r   r	   shaper   r|   r0   roundr   simplifyr&   r   r   r   r   r(   r   Zerorx   fundamental_matrixis_absorbing_chainrT   rV   Halflimiting_distribution
is_regular
is_ergodicdoitstationary_distributionsubscontainstrueabsorbing_probabilitiesr8   absorbing_probabilitesrQ   listzipr)   argsr   r   evalf):nzTZSZYZsymrainycloudysunnystate_spaceschainsir   TSTOTO1TO2TO3Y2Y3TO4Y4wTS1Y5TO6Y6TO7Y7tuplesclasses
recurrenceperiodsTO8Y8TO9Y9r   statesr   r   r   
new_matrixY10acbdqueryquery_gtquery_lequery_gequery_ltrv   r   r@   rY   r   rA   s:                                                       @@@@@@rJ   test_DiscreteMarkovChainr   '   s-    	C  AamU+++++;!+%%%%a0,?????dD111Aad/00000QqT77k!A$''''''
944555
---
 A A A ABBB
 : : : :;;;
 5 5 5 5666	T	"	"	"B	c2r	"	"B	rB	S"b	)	)BR1q\\2beQ<<((BtH4444
:;;;;<<<
:AAAABBB !((>T J J JCGc3FsG3T3TU!A$$C#g,,FFFbRSUVFE*,L UT|TTTF&!! 	G 	G1!4lCCCCC}Q//1=I|\]D_3_3_3_3_!Q&&&&[)) 	h 	hR!a[["QqT1++>>>+bQRSTQUWXkk[]^_`a^bde[f[fBgBgggggg	h 	h 	h 	h 	h 	h 	h 	h 	h 	h 	h 	h 	h 	h 	h1ww+ad++++++zEEEEFFFF
9>>???Cq!Q00A!A#q!1!11111 "#62$<<@@@!#6Aq6Aq6:J3K3KLLL!#6B":QsU|:T3U3UVVVXF  G G!Q%?%Ea%HHHHH!4oFFFFFF 	@AAA	c1a	 	 BCA..A	S"3"3"3R	8	8B1Q4++/@1qtQqT/R/RRRRR
:MMMMNNNR!a[["QqT1++&&,,Q//5q>>AAAAbAllBr!uaLL))XbhD"T(!22RXbh5FFHIQWXY Y Y YR1q\\2beQ<<((K2a5!,E,EEEEER1q\\2beQ<<((BtHRX,=4D@Q,QTVW[T\]_`d]eTe,eeeee	A	B	BBR!a[["QqT1++(:1b(A(AABBHHKKuUZ\]^^^^		%	% > >1&&&+ad*;*;;;;;1r!A${{##))!,,c1=====> > > > > > > > > > > > > > > sAq
!
!C
:_____```
9OOPPP
:[[\\\
:3333444
:3333444 8Aq>>8Aq>>15x1~~xPQST~~W_`acdWeWe6fhikstuwxkyky  |D  EF  HI  |J  |J  hK  L  M  MCSAaD!b1qkk2adA;;77{2adA;;''!Q88;MaQT;U;UUW WZbcdfhZiZij j j jSAaD!b1qkk2adA;;779KAs9S9STT1Q4$$Q&' ' ' 'R!a[[2adA;;&1Q4q))),,)-/A!S/I/I)J K KNVWXZ[nn] ] ] ]R!a[[2adA;;&1Q4#A!c1~66)79KAs9S9S)T U UX`abdeXfXfg g g gR!a[[2adA;;&1Q4q))),,)-/A!S/I/I)J K KNOfU U U UR!a[[2adA;;&1Q4#A!c1~66)79KAs9S9S)T U UXYX^_ _ _ _SAaD!b1qkk2adA;;77AaD!EE[Y[\]^_\`bcYdYdMeMeIeeeee 15!Q-!Q!Q!Q PRSU]^_abUcUcemnoqresesQtu
v
vC
8Aq>>8Aq>>15x1~~xPQST~~W_`acdWeWe6fijltuvxylzlz  }E  FG  IJ  }K  }K  iL  M  N  NC	Sc	2	2	2B	Sc	2	2	2B  ""oXgXgXg6h&i&ijm&mmmmm  ""d****  ""e++++999c"22222999c"22222<<>>iiiQqS!A#XAaC1Hs1Q3PQRSPS8}UUUUU<<>>iiifQ2.>.>q!R@P@PQQQQQ
8Aq>>8Aq>>8Aq>>BXaQS__VWV\^fghjk^l^lDmpxyz|}p~p~  AI  JK  MO  AP  AP  RZ  [\  ^`  Ra  Ra  pb  c  d  dC	Sc	2	2	2B(2r**HR,<,<hq"ooNOPPA#q((((==??d""""==??d""""
sAq
!
!C	Sc	2	2	2B##As++0022d::::%%D%99>>sCHHQQRSTTYY[[_`_eeeee
15!Q1%qvq!&!Q&?AFAqvWX@Y\]_`bcbhjkmnms[t  wF  wF  wF  G  H  HC	Sc	2	2	2B  ""oAqv7VYZY^`abc`d`dfgfkXlopouwxw|  G  HI  KL  M  M  oN  7O  'P  'P  P  P  P  P%%''?Xa^^XVWYZ^^<\_`_eghgm^nqyz{}~qq  BJ  KL  NO  BP  BP  qQ  <R  ,S  ,S  S  S  S  S		!	! $ $
!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
8Aq>>8Aq>>8Aq>>BXaQR^^UVX`abdeXfXfDgjrstvwjxjx  {C  DE  GH  {I  {I  KS  TU  WX  KY  KY  jZ  [  \  \C	Sc	2	2	2B  ""e++++  ""oR8H8H(STVX//[cdgik[l[l7m=Ea__hWY[]N^N^`hijln`o`o<p=Ec2=N=NPXYZ\^P_P_aijlnpaqaq<r7t 'u 'u u u u u
 	CVRD\\:::A""""$$&&&",,6666""$$****"fbTll!33333;;==Rvrd||VRD\\JJJJJ<<>>U""""<<>>U""""
 ///"""!//"""!//	# $ $ %'	'C
 
Sc	2	2	2B%%''F#'V#5#5 GZ1v1vs+++++-----i
%%%$$$$$$%%%%%%$$$& ' '
 (**C 
Sc	2	2	2B%%''F#'V#5#5 GZ1v|||,,,,,&&&&f
000111000000000111000000000000	2 	3 	3 46	6C 
Sc	2	2	2B%%''F#'V#5#5 GZ|||aS)))aS1#>>>>>99999o%%%%
 	11addQh1-AaDD1Ha11-AqttaxAaDD1H-Aq!QqTT"	$ 	% 	%A
 
T???A	6	6BllnnOFAq!___$$$$AA'((((((1aaVa1a[9::::::AaDDFA1aAaDDF(;a1a^LMMMMMM**,,FJ___$$$$!0"#A$$q&!Q!Q!:"#Q!Q1Q446!:"#QqTT!VQ!Q!:	!< = = = = = = 		! 	" 	" #$		$A
 	CQ///A||~~<<>>AA  ACQ///A||~~<<>>							 	 		A 	CQ///A<<>><<>>AA  "ACQ///A<<>><<>> 								 	 	A 	CQ///A##%%%%% 	 	  !	!A 	CQ///A!!!!!	! 	" 	" #$		$A
 	CQ///A!!!!! c999c
2
2C&&((F#'V#5#5 GZsQFm####&&&&fIIIs#33333==??yyy#ac1Q3h-QqS!A#XAaCQRSTQTHVVVVV 	!Q!Q8!QHQNN3#% 	& 	&A 	CA..AR!a[[2adA;;&AaD!4qAaD!~~x1~~&&Ab1qkkNNHQNN)K)KKM MPXYZ\^P_P_` ` ` `R!a[[2adA;;&1Q444AFFFFR!a[[2adA;;&1Q444>>>>R!a[["QqT1++&&(1a..8888QqT1Wb1qkk""hq!nn4444AaD"QqT1++&&(1a..8888
:3333444
:BBBBCCC 	C!44AR!a[[2adA;;&AaD!4qAaD!~~x1~~&&Ab1qkkNNHQNN)K)KKM MPXYZ\^P_P_` ` ` `R!a[[2adA;;&1Q444AFFFFR!a[[2adA;;&1Q444>>>>R!a[["QqT1++&&(1a..8888	1A	1AadaiAaD!%%Aa!AqD&():;EEGG1LLLLQqT2adA;;''1qbdQqSj1_+<Q+>!A#a%!A#a%-RSASTUAU+UV``bbfggggg
:3333444 	!R(1b//8Ar??ChqRTooW_`aceWfWfhpqrtvhwhwEx  |D  EF  HJ  |K  |K  MU  VW  Y[  M\  M\  ^f  gh  jl  ^m  ^m  {n  o  	p  	pACA..AR!ad^^R!a[[))//22eGQ6G6GGGGGR!ad^^R!a[[))//22eD!nnDDDDR!ae__b1qkk**0033uXq7I7IIIII2aeQqT??BqtQKK00"55q1R"qQRt__VXYZ[\Y]_`VaVaCbCb?bdf9g9ggggg2adAaD>>2adA;;//44a!BqtQqTNNTVWXYZW[]^T_T_B`B`>`bd8e8eeeee2adAaD>>2adA;;//44a!BqtQqTNNTVWXYZW[]^T_T_B`B`>`bd8e8eeeeeR!ae__b1qkk**a1R5!A$AaD!.M.MMMMMR!ad^^R!a[[))Qr!A$!~~r!A${{-K-KKKKKR!ad^^R!a[[))Qr!A$!~~r!A${{-K-KKKKK ##JAq!Q!R(1b//8Ar??ChqRTooW_`aceWfWfhpqrtvhwhwEx  |D  EF  HJ  |K  |K  MU  VW  Y[  M\  M\  ^f  gh  jl  ^m  ^m  {n  o  	p  	pACA..Ab1qkk2adA;;''E::qQq!Aq+,,2244::1==2aeQ<<QSTUVWTXZ[Q\Q\A]A]AcAcdeAfAfffff::qQq!B!,--3355;;A>>!BquaLLRTUVWYUZ\]R^R^B_B_BeBefgBhBhhhhhAaD!b1qkk**HAaD!b1qkk**H==!AqAa1-..4466!QqRSTUWXYZG[9\9\9b9b9d9ddhkkkkkAaD!b1qkk**HAaD!b1qkk**H==!AqAa1-..4466!QqRSTUWXYZG[9\9\9b9b9d9ddhkkkkk adFQqtVO%%''1QqT61111adFQqtVO%%''AaD50000tAaDyM##%%QqT1111qtVQqT	",,..#adAg+====aD!GadAg''))adQh!a-???????s>   =A7NN	N	Ba((a,/a,L0AMMAMMAMc            	      B   t          d          st          d           dd l} |                     d           t          d          }|r|j                            d           t	          g dg dg dg          }t          dg d	|          }t          d
          D ]'}t          t          |                    |j	        v sJ (t          dg d|          }t          d
          D ]'}t          t          |                    |j	        v sJ (t	          t          j        t          dd          t          dd          gt          dd          dt          dd          gt          j        t          j        dgg          }t          dg d	|          }t          d
          D ]'}t          t          |                    |j	        v sJ (t          ddt          t          g|          }t          d
          D ]'}t          t          |                    |j	        v sJ (d S )Nscipyz(SciPy Not installed. Skip sampling testsr   numpyrp   rt   ru   rY   rw   r   r   )1rF   r   rF   r   r`   rZ   r@   W)r9   r6   randomseedr   r$   ranger^   r/   ri   r   r   r   r	   r   )r  r   rv   rY   sampsr   r@   r  s           rJ   test_sample_stochastic_processr  p  s7   !! 97888MMM
KKNNN'""E !@AAACA..Ar C C-a0011Q]BBBBBCa00Ar C C-a0011Q]BBBBB!Q!Q8!QHQNN3#% 	& 	&A 	CA..Ar C C-a0011Q]BBBBBC!Ra00Ar C C-a0011Q]BBBBBC CrI   c                  &   t          t          d          t          d          t          j        gt          j        t          j        t          j        gt          dd          t          dd          t          d          gg          } t          dg d|           }|                                t          t          dd          t          dd          t          d	d          gg          k    sJ t          t          j         t          j        t          j        gt          j        t          j         t          j        gt          j        t          j        t          j         gg          }t          dg d|          j	        t          d
d          }}                     |          |          t          t          j        t          d|z            dz  z   t          j        t          d|z            dz  z
  dgt          j        t          d|z            dz  z
  t          j        t          d|z            dz  z   dgt          j        t          |           z
  t          d|z            dz  z   t          j        t          d|z            dz  z
  t          |           gg          k    sJ t          t                    5  t!          t#           d          d          t#           d          d          d          t%          t#           d          d          t#           d          d                    k    sJ 	 d d d            n# 1 swxY w Y   t!          t#           d          d          t#           d          d                    t          d          dz  t          j        z   k    sJ t!          t#           d          d          t#           d          d          z  t#           d          d          z  t#          t!          t#           d          d                    t          j                            t          dd	          t          d          d	z  z
  t          d          dz  t          j        z   z  k    sJ t!          t'          t#           d          d          t#           d          d          z  t#           d          d          z            t#           d          d          t#           d          d          z  t#           d          d          z  z  t#          t!          t#           d          d                    t          dd	                    t#          t!          t#           d          d                    t          dd	                    z            t          j        u sJ t)           t          dd                    t#           d          d                    t          d           dz  dt          t          dd                    z  z   t          j        z   k    sJ t+           t          dd                    t#           d          d                    t          j        t          d          dz  z
  dz  t          d          dz  t          j        z   z  t          dd          t          d          dz  z
  dz  t          j        t          d          dz  z
  z  z   k    sJ t-          t.          fd           t!          t#           d          d          t#          t!          t#           d          d                    t          j                            t%          t#           d          d                    k    sJ t1          ddd          }t          dg d|          }|j	        } |                    |          |          t          ||z            k    sJ t          dt3          d          t3          d          t3          d          g|          }t!          t#           |d          d          t#           |d          d                    t          d          dz  t          j        z   k    sJ t!          t#           |d          t3          d                    t#           |d          t3          d                              t          d          dz  t          j        z   k    sJ t          t          d           t          dd          t          dd          gt          dd          t          d           t          dd          gt          dd          t          dd          t          d           gg          }t          dg d|          }	t!          t#           |	d           |	d                    t#           |	d          d                                        d          t7          dd          k    sJ t!          t9           |	d           |	d                     t#           |	d!          d                                        d          t7          d"d          k    sJ t!          t;           |	d#           |	d$                    t#           |	d	          d                                        d%          t7          d&d%          k    sJ t7          t!          t#           |	d'           |	d(                    t#           |	d)          d                    d*          t7          dt!          t=           |	d'           |	d(                    t#           |	d)          d                    z
  d*          k    sJ t7          t!          t9           |	d+           |	d,                    t#           |	d-          d                    d*          t7          dt!          t;           |	d+           |	d,                    t#           |	d-          d                    z
  d*          k    sJ t7          t!          t?           |	d.           |	d/                    t#           |	d0          d                    d*          t7          dt!          tA           |	d.           |	d/                    t#           |	d0          d                    z
  d*          k    sJ t!          t#           |	d1           |	d2                    t#           |	d3          d                    t!          t#           |	d2           |	d1                    t#           |	d3          d                    k    sJ t!          t9           |	d4           |	d5                    t#           |	d6          d                    t!          t?           |	d5           |	d4                    t#           |	d6          d                    k    sJ t!          tA           |	d7           |	d8                    t#           |	d9          d                    t!          t;           |	d8           |	d7                    t#           |	d9          d                    k    sJ t          d:          \  }
}}}t!          t#           |	|
          |          t#           |	|          |                    }|!                    |
d;|d|d<|di          "                                                    d          t!          t#           |	d;          d          t#           |	d<          d                                        d          k    sJ t!          t9           |	|
          |          t#           |	|          |                    }t!          t;           |	|
          |          t#           |	|          |                    }|!                    |
d=|d|d>|di          "                                |!                    |
d=|d|d>|di          "                                z   d?k    sJ t!          tA           |	|
          |          t#           |	|          |                    }t!          t?           |	|
          |          t#           |	|          |                    }|!                    |
d@|d|dA|di          "                                |!                    |
d@|d|dA|di          "                                z   d?k    sJ d |	d          z  d |	d          z  z   #                                d |	d          z  k    sJ d |	d          z  d |	d          z  z
  #                                 |	d           k    sJ ddB |	d          z  z  #                                dC |	d          z  k    sJ d |	d          z  dBz   |	d          z  #                                dC |	d          dz  z  k    sJ  |	d          dz   |	d          dz  z   #                                 |	d          dz    |	d          dz  z  k    sJ d S )DNrZ   r`   r   rw      r   r   rA   TrC   r   rF   Frk   rd   c                      t          t            d          d          t          t          t            d          d                    t          j                            S )NrF   r   )r%   r
   r   r   )C2s   rJ   rK   z,test_ContinuousMarkovChain.<locals>.<lambda>  sC    Qr""Q%%||R"RRUUA,,-H-HII rI   re   Gr   r  2r   r   )ri   gen_matg
ףp=@gQ	@g/$?g=?g(\­X@g;O3@gT㥛Ġ&@gw?g@gMbX9$@r   gcZ?gHzG@gHzG@g
ףp=
@r   gzG
@gV-?g?g@gRQ@g(\?gF@gm%@g1Zd@gn@g#@goʡ?g{Gz@gT㥛 ?g/$?r   g333333@g{Gz?gffffff*@gRQ
@r   gQ@g333333?r   rq   )$r   r   r   NegativeOnerx   r   r*   r   r   generator_matrixr   r   r   r   r7   r   r%   r
   r3   r   r'   r)   r5   KeyErrorr   r   r   r   r   r   r   r   r   r   r   r   )T1C1T2r   rA   r   CS1C3r  r   r   r   r   r   r   r   r   r   r   r  s                      @rJ   test_ContinuousMarkovChainr    sf   	!B%%1qv&&!-/1a..(1a..!B%%8: 
; 
;B 
sIIIr	2	2B##%%8Ar??HUWY[L\L\^fghjl^m^m:n9o)p)ppppp	15&!%(1515&!&*AAFAETUTYSYCZ[	\	\B	sIIIr	2	2Bd ; ; ;qA)2&&q))!,,#bd))A+9MqvX[\^_`\`XaXabcXcOcef8g89RT18LafWZ[]^_[_W`W`abWbNbde7f89aR8H3rRSt99UV;8VXYX^adeghieiajajklalXlnqstrtnunu7v8x 1y 1y y y y y 
	%	% h hBBqEE1r""Q%%||e<<<BrrRSuuVWLLZ\]_]_`a]b]bdeZfZf@g@ggggggh h h h h h h h h h h h h h hR1q\\2bbeeQ<<((CGGAI,>>>>>R1q\\Brr!uuaLL(2bbeeQ<<71R1q\\??AF++- -19!Q#b''!)1KcRTggVWiZ[Z`N`0ab b b bSBBqEE122a55!,r""Q%%||;<<BBqEE122a55!,r""Q%%||;=1R1q\\??HQNN33b2bbeeQ<<(STVW..6Y6YY[ [^_^cd d d d RRABBqEE1..3r77(1*qXbRS__AUAU?U2UXYX^2^^^^^BBx1~~&&22a55!5516CGGAI;MPQ:QSVWYSZSZ[\S\_`_eSe:f7?ARQR7RUV6VXYX^adegahahijajXj6k;l m m m m
8IIIIJJJR1q\\2a22a55!ooqv6677;r""Q%%QR||;T;TTTTT
sAq
!
!C
YYY
4
4CA*3''**1--QqS9999	sVC[[&++vc{{$KR	P	PBR1q\\2bbeeQ<<((CGGAI,>>>>>R1vc{{##R1vc{{%;%;<<B	AF@RRRRR 	!A$$B!R9HQNNQqTTES[\]_`SaSa;bemnoqresesu}~  BC  vD  vD  GH  IJ  GK  GK  FK  eL  M  	N  	NAcyyy!DDDAR%!!D''""BqqxxOO44::1==wPQARARRRRRR&		11V99%%r!!F))Q'7'788>>qAAU7TUEVEVVVVVR#&		""BqqttQKK0066q99U8Q=O=OOOOO2aaggqqww''AAdGGQ88"==q1RPQPQRVPWPWYZYZ[_Y`Y`MaMacefgfghlfmfmopcqcqKrKrGrtvAwAwwwww2aaggqqxx(("QQsVVQ--88"==q1RPQPQRVPWPWYZYZ[`YaYaMbMbdfghghilgmgmopdqdqKrKrGrtvAwAwwwww2aaffaagg&&11T77A77<<a!BqqQTvvWXWXY]W^W^L_L_acdedefjdkdkmnaoaoJpJpFprt@u@uuuuuR%!!F))$$b51oo66!Bqqyy!!E((<S<SUWXYXYZ_X`X`bcUdUd:e:eeeeeR%!!C&&!!2aahh??33qAAcFFAAeHH9M9MrRSRSTYRZRZ\]7_7_____R$5""BqqxxOO44"QQuXXqqww:O:OQSTUTUV[T\T\^_Q`Q`8a8aaaaa ##JAq!Qb1qkk2aaddA;;''E::qqAdAa0117799??CCqAAdGGUVY[\]\]^b\c\cefYgYgGhGhGnGnoqGrGrrrrrAAaDD!b1qkk**HAAaDD!b1qkk**H==!D!Aqq344::<<x}}aPTVWXY[\]acdefMg?h?h?n?n?p?pptwwwwwAAaDD!b1qkk**HAAaDD!b1qkk**H==!D!Aqq344::<<x}}aPTVWXY[\]acdefMg?h?h?n?n?p?pptwwwww aaddFQqqttVO%%''1QQqTT61111aaddFQqqttVO%%''AAaDD50000tAAaDDyM##%%QQqTT1111aaddFTM!!A$$((**c!!A$$'k9999AaDD!GaaddAg''))aaddQh!a-???????s   BMMMc                    	 t          dddd          j        t          dd          k    sJ j        t          j        k    sJ j        dk    sJ j        dk    sJ t          dt          dd          dd	          } | j        t          dd	          k    sJ t          d
          \  }}t          | d         | d         | d         z  z             |dz  dz  d|z  |z  dz  z   |dz  z   d|dz  z  dz  z   d|z  dz  z   k    sJ t          ddd          \  	}t          	         t                    sJ t          t          d            t          t          	fd           t          t           fd                               d         d                   t%          t'          d         d         ft)          dt+          d         d          fdt+          d         d          fd          t)          dt+          d         d          fdt+          d         d          fd          z                      k    sJ                     dd                   t%          t'          d         d         ft)          dt+          d         d          fdt+          d         d          fd          t)          dt+          d         d          fdt+          d         d          fd          z                      k    sJ d         d         z   d         z   }t-          t+          |d                                        d          t1          dd          k    sJ t-          t+          |d                                        d          t1          dd          k    sJ t-          t+          |d                                        d          dk    sJ t-          t3          |d                                        d          t1          dd          k    sJ t-          t+          d         d          t+          d         d          z  t+          d         d          z  t+          d         d          z                                d          t1          dd          k    sJ t          dd         z  d         z                                 d          t1          dd          k    sJ t          dd         z  d         z   dz                                 d          t1          dd          k    sJ t          d         d         z  d         z                                 d          t1          dd          k    sJ t          d         dk    t+          d         d          t+          d         d          z                                d          t1          dd          k    sJ t          d                   dk    sJ t-          d         dk                                  d          t1          dd          k    sJ t-          d         dk                                   d          t1          dd          k    sJ t-          d         dk    d         dk                                  d          t1          dd          k    sJ t-          d         d         z  dk                                  d          t1          dd          k    sJ t-          d         d         z  dk    d         dk                                   d          t1          dd          k    sJ t-          t+          d         d          d         dk              d k    sJ t-          t+          d         d                    dk    sJ t-          t+          d         d          d         dk               dk    sJ t-          d         dk    t+          d         d                    dk    sJ t-          d         dk     t+          d         d                    dk    sJ t-          d         dk    d         d!k              dk    sJ t-          d         dk    d                   t5          ddd          k    sJ t          t          d"            t          t          fd#           t7          	         	ddf          }t7          	         	ddf          }t7          	         dz  	ddf          }|                                d         d         z   d         z   d         z   d         z   k    sJ |                                |k    sJ |                                d         dz  d         dz  z   d         dz  z   k    sJ d	z           j        d	z           	hk    sJ d         j        d         hk    sJ |	z           j        |	z           |	hk    sJ d	         z  d	         z  z                                   d	         z  k    sJ d	         z  d	         z  z
                                  	          k    sJ dd$	         z  z                                  d%	         z  k    sJ d	         z  d$z  	         z                                  d%	         dz  z  k    sJ 	         dz  	         dz  z                                   	         dz   	         dz  z  k    sJ d S )&Nr   g333333?rF   r   psuccessfailurer@   r`   Hrv   zH,TrZ   r   r   zt, xTrB   c                  (    t          dddd          S )Nr@   r   rF   r   r  )r+   rH   rI   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    /sAqQQQ rI   c                                  S rM   rH   )r   rA   s   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  rO   rI   c                       d         S )Nr
  rH   r   s   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    qu rI   g?)r   TgQ?gQ?g?g?re   g333333@r   gQ?r   r~   r   r   c                       t          d          S )Nr`   r%   rH   rI   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    qtt rI   c                  8    t           d         dk    d          S )Nr`   r   r&  r$  s   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    q11~~ rI   r   rq   )r+   ri   r"   r   r   r   r  r  r   r   r'   r   r2   r5   r   r   
IndexErrorr|   r1   r   r   r
   r%   r   r   r   r:   r   r   free_symbolsr   )
r@   r   rv   xrY   exprexpr2expr3r   rA   s
           @@rJ   test_BernoulliProcessr.    s
   Q:::A=IaOO++++;!+%%%%9>>>>9>>>>1sCHHHA=Ic3//////5>>DAqQqT!A$qt)^1Q1Qq 01Q3 61a4 AAaCE IIIII6D$777DAqad/00000
:QQRRR
---
:}}}}%%%!ad++/HQRSTQUWXYZW[P\31Q4,sBqtQKK.@)LLCAaD!-R!a[[/A9MMNJO JO 0P 0P P P P P 1Q4((,EfaPQdTUVWTX\31Q4,sBqtQKK.@)LLCAaD!-R!a[[/A9MMNGO GO -P -P P P P P
 	
!qtadAR1XX;;Q5q>>1111R1XX;;Q5q>>1111R1XX;;Q1$$$$R1XX;;Q5q>>1111R!a[[2adA;;&AaD!4r!A${{BCCII!LLPUVZ\]P^P^^^^^Q1X!_##A&&%a..8888Q1X!_q !!''**eD!nn<<<<QqTAaD[1R5 !!''**eD!nn<<<<QqTAXr!A$qzzBqtAJJ.//55a88E$qMMIIIIQqT77c>>>>QqTAX;;Q5q>>1111QqTAX;;Q5q>>1111QqTAXqtqy!!''**eD!nn<<<<QrUQqT\A$$Q''5q>>9999QrUQqT\Aqtax((..q11U4^^CCCCR!a[[!A$(##s****R!a[[>>QR!a[[!A$(##q((((QqTAXr!A${{##q((((QqTAXr!A${{##q((((QqTAXqtQw1$$$$QqTAXqt 5c1a @ @@@@@
:||$$$
:----... qtaAYD!q!Qi  E!a!Q##E99;;!A$1+!,qt3ad:::::::<<1::<<1Q47QqT1W,qtQw66666QqS61QqS61+----Q41&&&&QqS61QqS61a.0000 adFQqtVO%%''1QqT61111adFQqtVO%%''AaD50000tAaDyM##%%QqT1111adFTM!A$((**c!A$'k9999aD!GadAg''))adQh!a-???????rI   c                  (  	
 t          dd          		j        t          j        k    sJ 	j        t          dt                    k    sJ 	j        dk    sJ t          dd          \  } }t           	          t                    sJ 	                              t          dz            k    sJ t                      5  	                     	                     d d d            n# 1 swxY w Y   t          t          d            t          t           	fd           t          t"          	fd	           	                     	d
           	d                    t'          t)           	d
           	d          fd 	d
          z  d 	d          z  z  t+          d          z  t-           	d
                    t-           	d                    z  z                      k    sJ 	                    dd          t'          t)           	d           	d          fd 	d          z  d 	d          z  z  t+          d          z  t-           	d                    t-           	d                    z  z                      k    sJ t/           	          dk               t+          dz            k    sJ t/          t1           	          d          t3          t          j        dd                              t+          d          k    sJ t/          t1           	          d          t3          t          j        dd                              }|dt+          d          z  k    sJ t/          t1           	          d          t1           	          d          z  t1           	|           d          z  t1           	|          d          z  t3          t          j        dd                    t3          t          j        dd
                    z  t3          | t          j        d
d                    z  t3          |t          j        dd                    z            |dz  k    sJ t/          t1           	          d
          t1           	          d          z  t3          t          j        dd
                    t3          t          j        d
d                    z            t9          t1           	          d          t1           	          d
          z  t3          t          j        dd
                    t3          t          j        d
d                    z            k    sJ t          t          	fd           t/          t1           	d          d
                    dt+          d          z  d
z  k    sJ t/          t1           	          d
          t3          t          j        dd                              dt+          d          z  d
z  k    sJ t/           	          dk    t3          t          j        dd                              }t/           	          dk    t3          t          j        dd                              }|dt+          d          z  k    sJ ||z                                   dk    sJ t/          t=          t1           	          d
           	          dk    z            t3          t          j        d
d                    t3          t          j        dd                    z                                            dt+          d          z  dt+          d          z  z   dz   k    sJ t/          t1           	          d
          t?           	          d          z  t3          t          j        d
d                              ddt+          d          z  z
  k    sJ t          t          	fd            tA           	                    dz  k    sJ tA           	          d
z   	          d
z  z    	|          dz  z   t3          t          j        dd                    t3          t          j        dd
                    z  t3          |t          j        dd                    z            d!k    sJ tA           	          d
z  t3          t          j        dd                              dk    sJ tA          |  	           	          z   z   	          d
z   	          d
z  z   z  t3          t          j        dd                    t3          t          j        dd
                    z            tC          |  	           	          z   z   	          d
z   	          d
z  z   z  t3          t          j        dd                    t3          t          j        dd
                    z            k    sJ t          t          	fd"           tA           	           	          z    	           	          z
  z  t3          t          j        dd                    t3          t          j        dd
                    z            dk    sJ tA           	d
          | tA           	d                    z  z             d#| z  dz   k    sJ tA          |  	d          z  |z             d| z  |z   k    sJ t/          t1           	d          d
          t1           	          d          z  t3          t          j        dd
                              dt+          d          z  dz  k    sJ t          d$d          }	|z   

j        	j        |j        z   cxk    rdk    sn J t          t          	fd%           
"                    dd          \  }}|j        dk    sJ |j        dk    sJ t          t          
fd&           t          t          	fd'           t/          t1           |d           |d                              }|t/          t1           |          d          t3          t          dd                              k    sJ t/           |d           |d          k              }|t/           |          dk    t3          t          dd                              k    sJ t/           |d           |d          k               dk    sJ t/           |d           |d          k              }|t/          t1           |          d          t3          t          dd                              k    sJ t          dd(          	t/          t1           	t          d          dz            d          t1           	d          d(          z            t+          d)          tG          d*d+          z  k    sJ t/          t1           	d          d          t1           	t          d          dz            d                    dk    sJ t/          t1           	d          d(          t1           	t          d          dz            d                    t/          t1           	t          d
          dz            d                    k    sJ t          dd
          	t/           	t          d          d
z            dk               t+          d,          k    sJ t/           	d          dk     t1           	d          d                    t+          d-          k    sJ t/          t1           	d          d          t1           	d
          d                    t+          d-          k    sJ t          dd          	t/          t1           	d
          d          t1           	d          d
          z            tG          dd          t+          d          z  k    sJ t/           	d
          dk     	d          dk              dt/          t1           	d          d                    z  d
t/          t1           	d          d                    z  z   t/          t1           	d          d
                    z   k    sJ t/           	d
          dk     	d          dk              d
t/          t1           	d          d                    z  dt/          t1           	d          d                    z  z   k    sJ t/          t1           	d
          d          t1           	d          d
          z            t/          t1           	d          d                    t/          t1           	d          d
                    z  k    sJ t/          t1           	d          d          t1           	d          d                    t/          t1           	d
          d                    k    sJ d
 	          z  d 	          z  z                                   d 	          z  k    sJ d
 	          z  d 	          z  z
                                   	           k    sJ d
d. 	          z  z                                  d/ 	          z  k    sJ d
 	          z  d.z   	          z                                  d/ 	          d
z  z  k    sJ  	          d
z   	          dz  z                                    	          dz    	          d
z  z  k    sJ d S )0Nr@   r`   r   t d x yTr  c                  "    t          dd          S Nr@   rd   r,   rH   rI   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>#      ~c266 rI   c                                S rM   rH   rN   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>$      ! rI   c                        d          S )NrH   rR   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>%      qquu rI   rZ   r   r   ir   r      irF   r
  re   ic                     t          t                      d          t                      d          z  t          t          j        dd                    t          t          j        dt
                              z            S )NrZ   r`   r   r   )r%   r
   r    r#   Lopenr   r@   r   rA   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>=  sn    qAAaDD!r!!A$${{!:Qq!$$%%HN1b4I4I(J(JJ L  L rI   r   i   i  r   r   i   r   c                  h    t                      dk                            z             S )NrZ   r&  r=  s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>L  s1    q111Q44!!A$$;77 rI   r   c            
          t                      dz  t          t          j        dt                                        S )Nr`   rF   )r'   r    r#   r<  r   rN   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>W  s3    q1q(1hnQ6K6K*L*LMM rI   r   rY   c                       dz   S )Nre   rH   rR   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>b  s    q1u rI   c                  0                          dd          S )Nr`   rZ   )split)r   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>f  s    qwwq!}} rI   c            
          t          t                      d          t          t          j        dd                    t            d          d          z            S )Nr   rF   r`   )r%   r
   r    r#   r<  rN   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>h  sU    qAAaDD!hq(.A:N:N.O.ORTUVUVWXUYUY[\R]R].]^^ rI   r   l    P9 iJ rd   r   rq   )$r,   ri   r   r   r   r#   r   lamdar   r   r2   distributionr;   r8   r5   r   r   r(  r|   r1   r   r   r   r%   r
   r    r<  Ropenr3   r   r   r   r'   r4   rD  r   )r*  yresres1res2rY   NrX   res3r@   r   r   rA   s            @@@@rJ   test_PoissonProcessrQ    sO   sAA=AK'''';(1b//))))7a<<<<T222JAq!Qaadd/00000>>! 3AaC 8 88888		!	!  	qqtt              
:66777
---
:}}}}%%%!aadd++/HQRQRSTQUQUWXWXYZW[W[P\11Q4411Q44C()AAaDD//)AAaDD//*IJJL JL 0M 0M M M M M 1%%)B611Q44QRQRSTQUQU,AAaDDQQqTT!#c((*IaaddOOIaaddOO,KLDN DN *O *O O O O O QQqTTAX;;#bd))####R!a[[(1hnQ&:&:;;<<BGGGG
BqqttQKK!X^Aq%9%9::
;
;C!CGG) R!a[[2aaddA;;&AAaDD!4r!!A$${{BHQPXP^_`bcPdPdDeDeq(.A&&''E(*21hnQ6J6J*K*KELq(.A&&''E( ) ),/F3 3 3 3
 R!a[[2aaddA;;&HN1a4H4H(I(Iq(.A&&'')( ) )BqqttQKK"QQqTT1++5x8>RSUVCWCW7X7X1hnQ223384 5 55 5 5 5
 : L L L L L L M M MR!a[[>>RBZ\))))R!a[[(1hnQ&:&:;;<<CHHQNNNN QQqTTQYHN1a$8$899::DQQqTTAXx8>!Q#7#78899D3s3xx<4K!!##q(((( SAAaDD!!q)**HQq!8L8L,M,MQq!,,---. / //7xzzSR[3sSUww;=VYZ=Z[ [ [ [R!a[[2aaddA;;&HN1a4H4H(I(IJJaRTUXY[U\U\R\n\\\\
:777777888QQqTT77ac>>>>QQqTT1WqqttAv!a'!X^Aq5I5I)J)J
1hnQ**
+
+*,.6q(.A:N:N.O.O*P Q QTVW W W WQQqTT1Whq(.A"6"67788B>>>>Q!qqtt_aaddAgaaddAgo.HN1a<P<P0Q0Qq(.A&&''1( ) )11Q44!!A$$;1q11Q447):;XaXY[\I]I]=^=^q(.A..//>0 1 11 1 1 1 :MMMMMNNN aaddQQqTTkAAaDD11Q44K((1hnQ6J6J*K*K
1hnQ**
+
++, - -012 2 2 2QQqTTAa!ggI"Q$(****QqqttVaZ==AaC!G####R!a[[2aaddA;;&HN1a4H4H(I(IJJbQTUWQXQXjYZlZZZZsAA	AA7ag',,,,1,,,,,,
:}}}}%%%771a==DAq7a<<<<7a<<<<
:,,,,---
:^^^^^___R!aadd^^D1R!a[[(1hq!nn"="=>>>>>>QQqTTAAaDD[>>D1aaddQh!Xa^^!<!<======QQqTTAAaDD[>>QQQqTTQQqTT\??D1R!a[[(1hq!nn"="=>>>>>> 	sBAR!A$$q&		111Q44,--S(:x:X:X1XXXXXR!a[["QQqttAvYY**++q0000R!b\\2aa!Qii++,,"QQqttAvYY2B2B0C0CCCCCsAAQQqttAvYY]s2ww&&&&QQqTTAXr!!A$${{##s2ww....R!a[["QQqTT1++&&#b''1111sAAR!a[[2aaddA;;&''8B??3r77+BBBBB QQqTTQY!a  Aa11Q44nn$4q2aaddA;;7G$G!BqqQRttUVKK..$XXXXXQQqTTQY!q!!QqAAaDD!~~%5!BqqttQKK..8H%HHHHHR!a[[2aaddA;;&''1R!a[[>>!BqqttQKK..+HHHHHR!a[["QQqTT1++&&!BqqttQKK..8888 aaddFQqqttVO%%''1QQqTT61111aaddFQqqttVO%%''AAaDD50000tAAaDDyM##%%QQqTT1111aaddFTM!!A$$((**c!!A$$'k9999AaDD!GaaddAg''))aaddQh!a-???????s   C33C7:C7c                     t          d          j        t          j        k    sJ j        t          dt                    k    sJ t          dd          \  } }}t                     t                    sJ 
                              t          dt                              k    sJ t                      5  
                                          d d d            n# 1 swxY w Y   t          t          d            t          t           fd           t          t"          fd                                d	           d
                    t'          t)           d	           d
          ft          d          t+           d	          d	z   dz            z  t+           d
          d	z   dz            z  dt,          z  z                      k    sJ                     dd          t'          t)           d           d          ft          d          t+           d          d	z   dz            z  t+           d          d	z   dz            z  dt,          z  z                      k    sJ t/                     d
k                                               t3          d
t          d	          z  d	t                    z  z            d	z  t          d          d	z  z   k    sJ t/                     d	k    t5          t          j        d
d                                                              t          d          d	z  t3          t          d	          d	z            d	z  z
  k    sJ t/                     dk     |           d
k    z   |          d	k    z   |          dk    z  t5          t          j        dd                    t5          | t          j        dd	                    z  t5          |t          j        d	d
                    z  t5          |t          j        d
d                    z                                            dt3          t          d	          d	z            z
  dt3          t          d	                    z
  z  dt3          d
t          d	          z  d	z            z
  z  dt3          d	t          d	          z            z
  z  dz  k    sJ t/                     d	k      |           d
k    z  t5          t          j        dd	                    t5          | t          j        d	d                    z            t;           |           d
k               d	k     z  t5          | t          j        d	d                    t5          t          j        dd	                    z            k    sJ t=          t/          t?                     dk      |           d
k    z            t5          t          j        d	d                    t5          | t          j        dd                    z                                                      dk    sJ tA                               dk    sJ tA          |            |           z   z             d	z   |           d	z  z   z  t5          t          j        dd                    t5          | t          j        dd	                    z            tC          | |                      z   z   |           d	z             d	z  z   z  t5          | t          j        dd	                    t5          t          j        dd                    z            k    sJ tA                     |tA           d
                    z  z             dk    sJ d	           z  d
           z  z                                   d           z  k    sJ d	           z  d
           z  z
                                              k    sJ d	d           z  z                                  d           z  k    sJ d	           z  dz             z                                  d           d	z  z  k    sJ            d	z             d
z  z                                              dz              d	z  z  k    sJ d S )Nr@   r   r0  Tr  c                  "    t          dd          S r2  r3  rH   rI   rJ   rK   z$test_WienerProcess.<locals>.<lambda>  r4  rI   c                                S rM   rH   rN   s   rJ   rK   z$test_WienerProcess.<locals>.<lambda>  r6  rI   c                        d          S )Nr	  rH   rR   s   rJ   rK   z$test_WienerProcess.<locals>.<lambda>  r9  rI   rZ   r`   r   r   r   r      rF   r   r   re   z--(1 - erf(3*sqrt(2)/2))*(2 - erfc(5/2))/4 + 1r   rq   )"r-   ri   r   Realsr   r#   r   r   r   r2   rI  r<   r   r8   r5   r   r   r(  r|   r1   r   r   r	   r%   r   r   r    r<  rJ  r3   r   r   r'   r4   )r   r*  rK  r@   rA   s      @@rJ   test_WienerProcessrX    sR	   cA=AG####;(1b//))))T222JAq!Qaadd/00000>>! 21d1gg > >>>>>		!	!  	qqtt              
:66777
---
:}}}}%%%!aadd++/H!aadd|T!WWS!!A$$'!__4S!!A$$'!__DbeLMM0O 0O O O O O1%%)B!aadd|T!WWS!!A$$'!__4S!!A$$'"5E5EEr"uMNN*P *P P P P P QQqTTAX;;!!S477Ad1ggI)>%?%?%AAaDDF%JJJJJQQqTTAXx8>!Q#7#78899BBDD!QDGGAIq I! ! ! ! ! aaddQh11Q44!8$!q1QQqTTAX>HN1a(())HQq!8L8L,M,MM
1hnQ**
+
+	,.6q(.A:N:N.O.O	PQ QQYQYQ[Q[	
Sa^^	a#d1gg,,./S47715E5E1EFCPQRVWXRYRYPYNNHZ[\^^_ _ _ _ aaddAg!!A$$'"HQq!0D0D$E$E
1hnQ**
+
+%, - -0;QQqTTAX!!A$$QR(<SHN1a(())HQq!8L8L,M,MM1O 1OO O O O qaaddQh11Q44!8,--x8>!Q;O;O/P/PHN1a(())0* + ++38::7 7?@ @ @ @ QQqTT77a<<<<Q!qqtt_aaddAgaaddAgo.HN1a<P<P0Q0Qq(.A&&''1( ) ),711Q44!!A$$;1qSTSTUVSWSWYZSZIZ8[Qq!$$%%HN1a4H4H(I(II-K -KK K K K QQqTTAa!ggI!#### aaddFQqqttVO%%''1QQqTT61111aaddFQqqttVO%%''AAaDD50000tAAaDDyM##%%QQqTT1111aaddFTM!!A$$((**c!!A$$'k9999AaDD!GaaddAg''))aaddQh!a-???????s   C..C25C2c                  	   t          dd          \  } }}}}t          d||          t          t          fd           t          t          fd           t                     t                    sJ j        t          dt                    k    sJ 
                              t          |z  d|z            k    sJ t                      5  
                                          d d d            n# 1 swxY w Y                       d	 d
                    t          t           d	           d
          f|d|z  z  t!          |  d
          z            z  t!          |  d	          z            z   d
          d
|z  dz
  z  z   d	          d	|z  dz
  z  z  t#          d
|z            t#          d	|z            z  z                      k    sJ t%                               |z  |z  k    sJ t'                                                               |z  |dz  z  k    sJ t%                     dz   |           dz  z    |          d
z  z   t+          t          j        dd                    t+          | t          j        dd                    z  t+          |t          j        d
d                    z            d|z  |z  |dz  |z   |dz  z  z   |d
z  d
|dz  z  z   d|z  z   |d
z  z  z   k    sJ t1                     d
k    t+          t          j        d
d                                                              dt3          |d
|z            t#          |          z  z
  k    sJ d           z  d
           z  z                                   d	           z  k    sJ d           z  d
           z  z
                                              k    sJ dd           z  z                                  d           z  k    sJ d           z  dz             z                                  d           dz  z  k    sJ            dz             d
z  z                                              dz              dz  z  k    sJ d S )Nzt d x y g lTr  r@   c                                S rM   rH   rN   s   rJ   rK   z,test_GammaProcess_symbolic.<locals>.<lambda>  r6  rI   c                        d          S )Nrd   rH   rR   s   rJ   rK   z,test_GammaProcess_symbolic.<locals>.<lambda>  r9  rI   r   rF   re   r`   r   rZ   r   r   rq   )r   r.   r5   r   r(  r   r2   ri   r#   r   rI  r=   r8   r|   r1   r   r   r   r'   r)   r   r    r<  rJ  r%   r   )r   r*  rK  glr@   rA   s        @@rJ   test_GammaProcess_symbolicr^    s{   }t<<<Aq!Q1S!QA
---
:}}}}%%%aadd/00000=HQOO++++>>! 1!A#qs ; ;;;;;		!	!  	qqtt              11Q44((,Ef	
1qqtta!A#hsA2aadd7||+C11Q44LL81!aH1PQRSPS
Q J AaCjjqs#%G& G& -' -' ' ' ' ' QQqTT77ac!eAAaDD>>""$$!AqD0000 QQqTT1WqqttAv!a'!X^Aq5I5I)J)J
1hnQ**
+
+*,.6q(.A:N:N.O.O*P Q QaCEQTAXq!tO#q!ta1f}qs':AqD&@@A A A A QQqTTAXx8>!Q#7#78899BBDD !Jq!A#$6$6uQxx$? ?@ @ @ @
 aaddFQqqttVO%%''1QQqTT61111aaddFQqqttVO%%''AAaDD50000tAAaDDyM##%%QQqTT1111aaddFTM!!A$$((**c!!A$$'k9999AaDD!GaaddAg''))aaddQh!a-???????s   DD	D	c                     t          dd          \  } }}}t          ddd          }|j        t          dt                    k    sJ |j        t          dt                    k    sJ |j        dk    sJ |j        dk    sJ t          t          d            t          t          d	            t          t          d
            t           ||           dk     ||          dk    z   ||          dk    z   ||          dk    z  t          | t          j        dd                    t          |t          j        dd                    z  t          |t          j        dd                    z  t          |t          j        dd                    z                                            dt          d          z  k    sJ t          t           ||           dk      ||          dk    z            t          | t          j        dd                    t          |t          j        dd                    z                                            dt          d          z  dt          d          z  dz  z   dz   k    sJ t           ||           dk     ||           dk     z  t          | t          j        dd                                                              dt          d          z  dz  dt          d          z  dz  z   dz   k    sJ t#           ||                     d| z  k    sJ t#           |d          |t#           |d                    z  z             d|z  dz   k    sJ d S )Nr0  Tr  r@   rF   rZ   r   c                  $    t          ddd          S )Nr@   rd   rZ   r.   rH   rI   rJ   rK   z+test_GammaProcess_numeric.<locals>.<lambda>  s    |CQ77 rI   c                  $    t          ddd          S )Nr@   r   r	  ra  rH   rI   rJ   rK   z+test_GammaProcess_numeric.<locals>.<lambda>  s    |CB77 rI   c                  $    t          ddd          S )Nr@   rd   r	  ra  rH   rI   rJ   rK   z+test_GammaProcess_numeric.<locals>.<lambda>  s    |CR88 rI   r   r`   x   rF  re   r   r   rG  r
  i  ii}r   m   r	  r   )r   r.   ri   r#   r   r   rH  r   r5   r   r%   r    r<  r   r   r   rJ  r'   )rA   r   r*  rK  r@   s        rJ   test_GammaProcess_numericrf    si   T222JAq!QS!QA=HQOO++++;(1b//))))7a<<<<7a<<<<
:77888
:77888
:88999 aaddQh11Q44!8$!q1QQqTTAX>q!A A (HN1a,@,@ A AABDLQq!E EA (HN1a,@,@ A AAB C CCK8::<?CLI I I I S!!A$$(qqttax())8Ax~a7K7K+L+LHN1a(()),* + ++38::CGGc#b''kRSm9SVW9WX X X XaaddQh11Q44!8$hq(.A2F2F&G&GHHQQSS,0RLOc#b''k"n,Lq,PQ Q Q Q QQqTT77ac>>>>QQqTTAa!ggI"Q$(******rI   N)csympy.concrete.summationsr   sympy.core.containersr   sympy.core.functionr   sympy.core.numbersr   r   r   r	   sympy.core.relationalr
   r   r   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   &sympy.functions.elementary.exponentialr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   'sympy.functions.special.error_functionsr   'sympy.functions.special.gamma_functionsr   r   sympy.logic.boolalgr   r   sympy.matrices.denser   "sympy.matrices.expressions.matexprr   sympy.matrices.immutabler   sympy.sets.containsr    sympy.sets.fancysetsr!   sympy.sets.setsr"   r#   sympy.statsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   sympy.stats.joint_rvr0   sympy.stats.joint_rv_typesr1   sympy.stats.rvr2    sympy.stats.symbolic_probabilityr3   r4   sympy.testing.pytestr5   r6   r7   r8   sympy.externalr9   sympy.stats.frv_typesr:   sympy.stats.drv_typesr;   sympy.stats.crv_typesr<   r=   r>   r   r  r  r.  rQ  rX  r^  rf  rH   rI   rJ   <module>r     s   ) ) ) ) ) ) ' ' ' ' ' ' & & & & & & 8 8 8 8 8 8 8 8 8 8 8 8 : : : : : : : : : : : : : : : : " " " " " " / / / / / / / / > > > > > > 6 6 6 6 6 6 7 7 7 7 7 7 9 9 9 9 9 9 : : : : : : 7 7 7 7 7 7 G G G G G G G G * * * * * * * * ' ' ' ' ' ' ; ; ; ; ; ; 4 4 4 4 4 4 ( ( ( ( ( ( & & & & & & 1 1 1 1 1 1 1 1B B B B B B B B B B B B B B B B B B B B B B B B B B B B 3 2 2 2 2 2 @ @ @ @ @ @ . . . . . . E E E E E E E E: : : : : : : : : : : : ( ( ( ( ( ( 7 7 7 7 7 7 5 5 5 5 5 5 G G G G G G G G ! ! ! ! ! !G@ G@ G@R
C C C6@@ @@ @@DI@ I@ I@Vs@ s@ s@j1@ 1@ 1@h @  @  @B+ + + + +rI   