
    EdQ                     L   d 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 ddlmZ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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+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>  G d de5          Z? G d de?e6          Z@ G d de9e?          ZA G d de?e7          ZB G d d e>          ZC G d! d"eCe=          ZD G d# d$e:          ZE G d% d&eEe;          ZFd' ZGd( ZHd)S )*zl
Continuous Random Variables Module

See Also
========
sympy.stats.crv_types
sympy.stats.rv
sympy.stats.frv
    )Basic)cacheit)Lambda	PoleError)Inanoo)EqNe)S)Dummysymbols)_sympifysympify)	factorial)exp)	Piecewise)
DiracDelta)Integral	integrate)AndOr)PolynomialError)poly)series)	FiniteSetIntersectionIntervalUnion)solveset)reduce_rational_inequalities)
RandomDomainSingleDomainConditionalDomain	is_randomProductDomainPSpaceSinglePSpacerandom_symbolsNamedArgsMixinDistributionc                       e Zd ZdZdZd ZdS )ContinuousDomainzX
    A domain with continuous support

    Represented using symbols and Intervals.
    Tc                      t          d          )Nz#Not Implemented for generic Domains)NotImplementedErrorselfs    /lib/python3.11/site-packages/sympy/stats/crv.py
as_booleanzContinuousDomain.as_boolean,   s    !"GHHH    N)__name__
__module____qualname____doc__is_Continuousr3    r4   r2   r-   r-   $   s9         
 MI I I I Ir4   r-   c                        e Zd ZdZddZd ZdS )SingleContinuousDomainzj
    A univariate domain with continuous support

    Represented using a single symbol and interval.
    Nc                     || j         }|s|S t          |          t          | j                   k    rt          d          t          || j        | j        ffi |S )NzValues should be equal)r   	frozenset
ValueErrorr   symbolset)r1   expr	variableskwargss       r2   compute_expectationz*SingleContinuousDomain.compute_expectation6   sm     	%I 	KY9T\#:#:: 	75666t{DH5@@@@@r4   c                 @    | j                             | j                  S N)rA   as_relationalr@   r0   s    r2   r3   z!SingleContinuousDomain.as_boolean@   s    x%%dk222r4   rG   r5   r6   r7   r8   rE   r3   r:   r4   r2   r<   r<   0   sE         
A A A A3 3 3 3 3r4   r<   c                        e Zd ZdZddZd ZdS )ProductContinuousDomainzE
    A collection of independent domains with continuous support
    Nc                     || j         }| j        D ]7}t          |          t          |j                   z  }|r |j        ||fi |}8|S rG   )r   domainsr>   rE   )r1   rB   rC   rD   domaindomain_varss         r2   rE   z+ProductContinuousDomain.compute_expectationI   sk     	%Il 	O 	OF#I..6>1J1JJK O1v1$NNvNNr4   c                 2    t          d | j        D              S )Nc                 6    g | ]}|                                 S r:   )r3   ).0rN   s     r2   
<listcomp>z6ProductContinuousDomain.as_boolean.<locals>.<listcomp>S   s$    DDDVV&&((DDDr4   )r   rM   r0   s    r2   r3   z"ProductContinuousDomain.as_booleanR   s    DDt|DDDEEr4   rG   rI   r:   r4   r2   rK   rK   D   sF            F F F F Fr4   rK   c                   6    e Zd ZdZddZd Zed             ZdS )ConditionalContinuousDomainzo
    A domain with continuous support that has been further restricted by a
    condition such as $x > 3$.
    Nc                    || j         }|s|S | j                            ||          }|j        t	          |j                  }}| j        g}|rw|                                }|j        rWt          |t                    r|                    |j                   n(t          |t                    rt          d          n|j        r|j        r |t#          |j        |j        z
            z  }n|j        t+          | j                   z  }	t-          |	          dk    rt          d           |	j                    }
t/          |          D ]d\  }}|d         |
k    rSt1          ||
          }t3          |d         |d                   }|                    |          }|
|j        |j        f||<   ent;          d|z            |wt=          |g|R i |S )NzOr not implemented here   z-Multivariate Inequalities not yet implementedr      z+Condition %s is not a relational or Boolean)r   
fulldomainrE   functionlistlimits	conditionpop
is_Boolean
isinstancer   extendargsr   r/   is_Relationalis_Equalityr   lhsrhsfree_symbolsrA   len	enumerate!reduce_rational_inequalities_wrapr   	intersectleftright	TypeErrorr   )r1   rB   rC   rD   
fullintgrl	integrandr\   
conditionscondr   r@   ilimitcintvllintvlintvls                   r2   rE   z/ConditionalContinuousDomain.compute_expectation\   s)    	%I 	K_88yII
&/j6G1H1H6	n%
  	J>>##D JdC(( I%%di0000b)) I-.GHHHI# J# JDHtx,?!@!@@II"/#dl2C2CCG7||q( M1KM M M )W[]]F$-f$5$5 
J 
J5 8v- 	J%F $f&. &.F &.eAha%A%AF$*$4$4V$<$<E)/U[(IF1I
J  ADHJ J J?   	JD 	5F555f555r4   c                 Z    t          | j                                        | j                  S rG   )r   rY   r3   r]   r0   s    r2   r3   z&ConditionalContinuousDomain.as_boolean   s"    4?--//@@@r4   c                     t          | j                  dk    r:| j        j        t	          | j        t          | j                  d                   z  S t          d          )NrW   r   z)Set of Conditional Domain not Implemented)rh   r   rY   rA   rj   r]   tupler/   r0   s    r2   rA   zConditionalContinuousDomain.set   se    t|! 	=O'*Kdl 3 3A 6+8 +8 8 9 &;= = =r4   rG   )r5   r6   r7   r8   rE   r3   propertyrA   r:   r4   r2   rU   rU   V   s`         
-6 -6 -6 -6^A A A = = X= = =r4   rU   c                       e Zd Zd ZdS )ContinuousDistributionc                      | j         | S rG   )pdf)r1   rb   s     r2   __call__zContinuousDistribution.__call__   s    txr4   N)r5   r6   r7   r   r:   r4   r2   r}   r}      s#            r4   r}   c                       e Zd ZdZ ee e          Zd Zed             Z	e
d             Zd Zd Ze
d             Zd Zd	 Ze
d
             Zd Zd ZddZe
d             Zd Zd ZdS )SingleContinuousDistributiona   Continuous distribution of a single variable.

    Explanation
    ===========

    Serves as superclass for Normal/Exponential/UniformDistribution etc....

    Represented by parameters for each of the specific classes.  E.g
    NormalDistribution is represented by a mean and standard deviation.

    Provides methods for pdf, cdf, and sampling.

    See Also
    ========

    sympy.stats.crv_types.*
    c                 j    t          t          t          |                    }t          j        | g|R  S rG   )r[   mapr   r   __new__)clsrb   s     r2   r   z$SingleContinuousDistribution.__new__   s1    C&&''}S(4((((r4   c                      d S rG   r:   )rb   s    r2   checkz"SingleContinuousDistribution.check   s    r4   c                 
   t          ddt                    \  }}| j        j        }|                     |          }t          |                                |||ffi |}t          |||k    fd          }t          ||          S )zB Compute the CDF from the PDF.

        Returns a Lambda.
        x, zTrealr   r   T)	r   r   rA   startr   r   doitr   r   )r1   rD   xz
left_boundr   cdfs          r2   compute_cdfz(SingleContinuousDistribution.compute_cdf   s     vDe4441X^
 hhqkk

Q
A$6AA&AAa:o.	::a~~r4   c                     d S rG   r:   r1   r   s     r2   _cdfz!SingleContinuousDistribution._cdf       tr4   c                     t          |          dk    r|                     |          }||S   | j        di ||          S z Cumulative density function r   Nr:   )rh   r   r   )r1   r   rD   r   s       r2   r   z SingleContinuousDistribution.cdf   sU    v;;! 	))A,,C 
)t))&))!,,,r4   c                     t          ddt                    \  }}|                     |          }t          t	          t
          |z  |z            |z  || j        f          }t          ||          S )zV Compute the characteristic function from the PDF.

        Returns a Lambda.
        x, tTr   )r   r   r   r   r   r   rA   r   )r1   rD   r   tr   cfs         r2   compute_characteristic_functionz<SingleContinuousDistribution.compute_characteristic_function   s`     vDe4441hhqkks1Q3q5zz#~48}55a}}r4   c                     d S rG   r:   r1   r   s     r2   _characteristic_functionz5SingleContinuousDistribution._characteristic_function   r   r4   c                     t          |          dk    r|                     |          }||S   | j        di ||          S )z Characteristic function r   Nr:   )rh   r   r   )r1   r   rD   r   s       r2   characteristic_functionz4SingleContinuousDistribution.characteristic_function   sY    v;;! 	..q11B 	=3t3==f==a@@@r4   c                     t          ddt                    \  }}|                     |          }t          t	          ||z            |z  || j        f          }t          ||          S )zY Compute the moment generating function from the PDF.

        Returns a Lambda.
        r   Tr   )r   r   r   r   r   rA   r   )r1   rD   r   r   r   mgfs         r2   "compute_moment_generating_functionz?SingleContinuousDistribution.compute_moment_generating_function   s]     vDe4441hhqkkAE

S(1dh-88a~~r4   c                     d S rG   r:   r   s     r2   _moment_generating_functionz8SingleContinuousDistribution._moment_generating_function   r   r4   c                 d    |s|                      |          }||S   | j        di ||          S )z Moment generating function Nr:   )r   r   )r1   r   rD   r   s       r2   moment_generating_functionz7SingleContinuousDistribution.moment_generating_function   sN     	66q99 J@6t6@@@@CCCr4   Tc           	         |rX	 t          ||          }|j        rt          j        S t	          dd          }|                     |          }|+t          ||                     |          z  || j        ffi |S |	                                }t          t          ||d|dz                                             |          }	d}
t          |dz             D ]F}|
|                    ||z            |	                    ||z            z  t          |          z  z  }
G|
S # t          $ r. t          ||                     |          z  || j        ffi |cY S w xY wt!          ||                     |          z  || j        ffi |S )z- Expectation of expression over distribution r   Tr   Nr   rW   )r   is_zeror   Zeror   r   r   r   rA   degreer   removeOrangecoeff_monomialr   r   r   )r1   rB   varevaluaterD   pr   r   degtaylorresultks               r2   expectationz(SingleContinuousDistribution.expectation  s    	MRsOO9 "6M#D)))66q99 V$TDHHSMM%9C?UUfUUUhhjjfS!Qa88@@BBAFFs1u h hAa..sax886;P;PQRVWQW;X;XX[def[g[gggFF" R R R !5TXQQ&QQQQQR D488C==03/LLVLLLs   "D! AD! ;B%D! !5EEc           	      0   t          ddt                    \  }}| j        j        }|                     |          }t          ||||ffi |}t          ||z
  || j                  }t          |t          ||dk    |dk    z  ft          df                    S )zG Compute the Quantile from the PDF.

        Returns a Lambda.
        zx, pTr   r   rW   )
r   r   rA   r   r   r   r    r   r   r   )r1   rD   r   r   r   r   r   quantiles           r2   compute_quantilez-SingleContinuousDistribution.compute_quantile  s     vDe4441X^
hhqkkaQ/::6::C!GQ11aHqAv!q&.A#Cc4[QQRRRr4   c                     d S rG   r:   r   s     r2   	_quantilez&SingleContinuousDistribution._quantile%  r   r4   c                     t          |          dk    r|                     |          }||S   | j        di ||          S r   )rh   r   r   )r1   r   rD   r   s       r2   r   z%SingleContinuousDistribution.quantile(  sW    v;;! 	 ~~a((H  .$t$..v..q111r4   NT)r5   r6   r7   r8   r   r	   rA   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r4   r2   r   r      sb        $ (B3

C) ) )   \   W  - - -   W  A A A   W  D D DM M M M, S S WS  2 2 2 2 2r4   r   c                       e Zd ZdZdZdZed             ZddZd Z	e
d             Ze
d	             Ze
d
             Ze
d             Zd Zd ZddZdS )ContinuousPSpacez Continuous Probability Space

    Represents the likelihood of an event space defined over a continuum.

    Represented with a ContinuousDomain and a PDF (Lambda-Like)
    Tc                 *     | j         | j        j         S rG   )densityrN   r   r0   s    r2   r   zContinuousPSpace.pdf<  s    t|T[011r4   NFc                     || j         }nt          |          }|                    d |D                       }t          d |D                       } | j        j        | j        |z  |fi |S )Nc                     i | ]
}||j         S r:   r@   rR   rvs     r2   
<dictcomp>z8ContinuousPSpace.compute_expectation.<locals>.<dictcomp>F      :::b"):::r4   c              3   $   K   | ]}|j         V  d S rG   r   r   s     r2   	<genexpr>z7ContinuousPSpace.compute_expectation.<locals>.<genexpr>H  s$      ";";29";";";";";";r4   )valuesr>   xreplacerN   rE   r   )r1   rB   rvsr   rD   domain_symbolss         r2   rE   z$ContinuousPSpace.compute_expectation@  s     	!+CCC..C}}::c:::;;"";";s";";";;;.t{.tx$* *"(* * 	*r4   c           	         || j         v ryt          t          | j                   t          |g          z
            }t          d |D                       } | j        j        | j        |fi |}t          |j        |          S t          dd          }t          | | j        t          ||z
            fi |          S )Nc              3   $   K   | ]}|j         V  d S rG   r   )rR   rss     r2   r   z3ContinuousPSpace.compute_density.<locals>.<genexpr>R  s$      >>"BI>>>>>>r4   r   Tr   )r   rz   rA   r>   rN   rE   r   r   r@   r   r   )r1   rB   rD   randomsymbolsr   r   r   s          r2   compute_densityz ContinuousPSpace.compute_densityM  s    4; 	,!#dk"2"2Yv5F5F"FGGM>>>>>>>G1$+1$(GNNvNNC$+s+++#D!!!a11*TAX2F2FQQ&QQRRRr4   c                 4   | j         j        j        st          d           | j        |fi |}t          ddt                    \  }}| j         j        j        }t           ||          |||ffi |}t          |||k    fd          }t          ||          S )Nz0CDF not well defined on multivariate expressionsr   Tr   r   )rN   rA   is_Intervalr?   r   r   r   r   r   r   r   )r1   rB   rD   dr   r   r   r   s           r2   r   zContinuousPSpace.compute_cdfY  s    {* 	DBD D D !D 0000vDe4441[_*
 !q*a0;;F;;a:o.	::a~~r4   c                 2   | j         j        j        st          d           | j        |fi |}t          ddt                    \  }}t          t          t          |z  |z             ||          z  |t           t          ffi |}t          ||          S )NzCCharacteristic function of multivariate expressions not implementedr   Tr   )rN   rA   r   r/   r   r   r   r   r   r   r	   r   )r1   rB   rD   r   r   r   r   s          r2   r   z0ContinuousPSpace.compute_characteristic_functioni  s    {* 	m%&klll D 0000vDe4441s1Q3q5zz!!A$$RC????a}}r4   c                 "   | j         j        j        st          d           | j        |fi |}t          ddt                    \  }}t          t          ||z             ||          z  |t           t          ffi |}t          ||          S )NzFMoment generating function of multivariate expressions not implementedr   Tr   )rN   rA   r   r/   r   r   r   r   r   r	   r   )r1   rB   rD   r   r   r   r   s          r2   r   z3ContinuousPSpace.compute_moment_generating_functions  s    {* 	p%&nooo D 0000vDe4441AE

QQqTT)AsB<BB6BBa~~r4   c                    | j         j        j        st          d           | j        |fi |}t          dd          }t          dd          }t           ||          |z
  || j                  }t          ||          S )Nz5Quantile not well defined on multivariate expressionsr   Tr   r   )positive)rN   rA   r   r?   r   r   r    r   )r1   rB   rD   r   r   r   r   s          r2   r   z!ContinuousPSpace.compute_quantile}  s    {* 	IGI I I DT,,V,,#D!!!#%%%AAaDD1Ha22a"""r4   c                    t          dd          d}t          |t                    r(t          |j        d         |j        d                   }d}	 |                     |          fd| j        D             d         } | j        |fi j        t          j
        u st          j        t                    r|st          j        nt          j        S t          j        t                    r't          fdj        j        D                       S t!                     j        ffi S # t"          $ r dd	lm} |j        |j        z
  }t-          |          s| j        }|j        }n ||fi }d}t          |t.                    sdd
lm}	  |	|| j        j                  }t7          |          }
|
                    |                    |
j        |                    }|s|nt          j        |z
  cY S w xY w)Nr   Tr   Fr   rW   c                 4    g | ]}|j         j         k    |S r:   r   )rR   r   rN   s     r2   rS   z0ContinuousPSpace.probability.<locals>.<listcomp>  s'    IIIbi6=.HI"IIIr4   c              3   t   K   | ]2}t          |t                    t                     |ffi V  3d S rG   )r`   r   r   )rR   subsetrD   r   r   s     r2   r   z/ContinuousPSpace.probability.<locals>.<genexpr>  sn       F FAG(268(D(DFcc!ffq&k<<V<<F F F F F Fr4   )r   )ContinuousDistributionHandmade)rA   )r   r`   r   r
   rb   wherer   r   rA   r   EmptySetr   r   Oner   sumr   r/   sympy.stats.rvr   re   rf   r%   r}   sympy.stats.crv_typesr   rN   SingleContinuousPSpaceprobability	__class__value)r1   r]   rD   cond_invr   r   rB   denscompr   spacer   rN   r   r   s     `         @@@r2   r   zContinuousPSpace.probability  sl   #D!!!i$$ 	9>!,inQ.?@@IH 	>ZZ	**FIIIIt{III!LB&$&r44V44CzQZ' 9:fj)+L+L 9%-8qvv158&*e,, F F F F F F FZ_F F F F F F CCFFQ
O>>v>>> # 	> 	> 	>......=9=0DT?? | }wt..v..d$:;; QPPPPPP55dPPP*1d33E&&y':':5;'M'MNNF!)=66quv~===	>s!   BD8 A D8 D8 8CHHc                 d   t          t          |                    }t          |          dk    r|                    | j                  st          d          t          |          d         }t          ||          }|                    | j	        j
                  }t          |j        |          S )NrW   z2Multiple continuous random variables not supportedr   )r>   r)   rh   issubsetr   r/   rz   rj   rk   rN   rA   r<   r@   )r1   r]   r   r   intervals        r2   r   zContinuousPSpace.where  s    y1122CA 	F#,,t{";"; 	F%DF F F3ZZ]4YCC%%dko66%bi:::r4   c                 ^   |                     d | j        D                       }t          | j        |          }|rcd | j        D             } |j        | j        fi |}| j        |                     |          z  }t          t          |j                  |          }t          ||          S )Nc                     i | ]
}||j         S r:   r   r   s     r2   r   z6ContinuousPSpace.conditional_space.<locals>.<dictcomp>  s    'L'L'L"BI'L'L'Lr4   c                 H    i | ]}|t          t          |                     S r:   )r   strr   s     r2   r   z6ContinuousPSpace.conditional_space.<locals>.<dictcomp>  s&    FFF2Bc"ggFFFr4   )
r   r   rU   rN   r   rE   r   r   rz   r   )	r1   r]   	normalizerD   rN   replacementnormr   r   s	            r2   conditional_spacez"ContinuousPSpace.conditional_space  s    &&'L'L'L'L'LMM	,T[)DD 	9 GFFFFK-6-dhAA&AAD(T]];777C U6>22C88G000r4   NFr   )r5   r6   r7   r8   r9   is_realr{   r   rE   r   r   r   r   r   r   r   r   r   r:   r4   r2   r   r   1  s         MG2 2 X2* * * *
S 
S 
S   W   W   W # # W#'> '> '>R; ; ;1 1 1 1 1 1r4   r   c                   l    e Zd ZdZed             Zed             ZddZdd	Zd
 Z	d Z
d Zd Zd ZdS )r   a  
    A continuous probability space over a single univariate variable.

    These consist of a Symbol and a SingleContinuousDistribution

    This class is normally accessed through the various random variable
    functions, Normal, Exponential, Uniform, etc....
    c                     | j         j        S rG   )distributionrA   r0   s    r2   rA   zSingleContinuousPSpace.set  s     $$r4   c                 P    t          t          | j                  | j                  S rG   )r<   r   r@   rA   r0   s    r2   rN   zSingleContinuousPSpace.domain  s    %gdk&:&:DHEEEr4   r:   scipyNc                 J    | j         | j                            |||          iS )zp
        Internal sample method.

        Returns dictionary mapping RandomSymbol to realization value.
        )libraryseed)r   r  sample)r1   sizer  r  s       r2   r	  zSingleContinuousPSpace.sample  s*     
D-44T7QU4VVWWr4   Fc                 (   |p| j         f}| j         |vr|S t          |          }|                    d |D                       }| j         j        }	  | j        j        ||fd|i|S # t          $ r  t          || j        z  || j	        ffi |cY S w xY w)Nc                     i | ]
}||j         S r:   r   r   s     r2   r   z>SingleContinuousPSpace.compute_expectation.<locals>.<dictcomp>  r   r4   r   )
r   r   r   r@   r  r   r   r   r   rA   )r1   rB   r   r   rD   r   s         r2   rE   z*SingleContinuousPSpace.compute_expectation  s    "dj]:S  	K~~}}::c:::;;J	F04$0qVV8VvVVV 	F 	F 	FD48Oa]EEfEEEEE	Fs   A' ''BBc                     || j         k    r2t          dd          }t          | | j        j        |fi |          S t          j        | |fi |S )Nr   Tr   )r   r   r   r  r   r   r   )r1   rB   rD   r   s       r2   r   z"SingleContinuousPSpace.compute_cdf  sh    4: 	Fc%%%A!2T.21????@@@#/dEEfEEEr4   c                     || j         k    r2t          dd          }t          | | j        j        |fi |          S t          j        | |fi |S Nr   Tr   )r   r   r   r  r   r   r   r1   rB   rD   r   s       r2   r   z6SingleContinuousPSpace.compute_characteristic_function   si    4: 	Zc%%%A!FT.FqSSFSSTTT#CD$YYRXYYYr4   c                     || j         k    r2t          dd          }t          | | j        j        |fi |          S t          j        | |fi |S r  )r   r   r   r  r   r   r   r  s       r2   r   z9SingleContinuousPSpace.compute_moment_generating_function  si    4: 	]c%%%A!IT.I!VVvVVWWW#FtT\\U[\\\r4   c                    || j         k    r| j        S t          dd          t          |z
  | j         t          j                  }t          |t                    r-t          j        |j        v rt          |j        d                   }|st          d|d| j                   |                     | j                   t          fd|D                       }t          |          S )NyTr   rW   zCan not solve z for c              3   t   K   | ]2} |          t          |                                        z  V  3d S rG   )absdiff)rR   gfxr  s     r2   r   z9SingleContinuousPSpace.compute_density.<locals>.<genexpr>  s@      44AAQVVAYY'444444r4   )r   r   r   r    r   Realsr`   r   rb   r[   r?   r   r   r   )r1   rB   rD   gsfyr  r  s        @@r2   r   z&SingleContinuousPSpace.compute_density  s    4: 	 <#D!!!dQh
AG44b,'' 	"AGrw,> 	"bgaj!!B 	K*djjIJJJ!!$*--4444444444a}}r4   c                     || j         k    r2t          dd          }t          | | j        j        |fi |          S t          j        | |fi |S )Nr   Tr   )r   r   r   r  r   r   r   )r1   rB   rD   r   s       r2   r   z'SingleContinuousPSpace.compute_quantile  sh    4: 	Kc%%%A!7T.7DDVDDEEE#4T4JJ6JJJr4   )r:   r  Nr   )r5   r6   r7   r8   r{   rA   rN   r	  rE   r   r   r   r   r   r:   r4   r2   r   r     s          % % X% F F XFX X X XF F F FF F FZ Z Z] ] ]  "K K K K Kr4   r   c                 l    	 t          | |fi |S # t          $ r t          d| d         z            w xY w)Nz!Reduction of condition failed %s
r   )r!   r   r?   )rq   r   rD   s      r2   _reduce_inequalitiesr  '  sW    O+JFFvFFF O O O=
1MNNNOs    #3c                 *   | j         rt          | ggd          S t          | t                    rt	          fd| j        D              S t          | t                    r2fd| j        D             }|d         }|D ]} |j        |          }|S d S )NF
relationalc                 8    g | ]}t          |ggd           S Fr   r  rR   argr   s     r2   rS   z5reduce_rational_inequalities_wrap.<locals>.<listcomp>2  s<     ' ' ' ,cUGSUKKK ' ' 'r4   c                 8    g | ]}t          |ggd           S r#  r$  r%  s     r2   rS   z5reduce_rational_inequalities_wrap.<locals>.<listcomp>5  s<     ' ' ' *C5'35III ' ' 'r4   r   )rc   r  r`   r   r   rb   r   rk   )r]   r   	intervalsr   rs   s    `   r2   rj   rj   .  s     J#i[M35IIII)R   ( ' ' ' ' ~' ' ' ( 	()S!! ' ' ' ' ~' ' '	aL 	 	AAAA r4   N)Ir8   sympy.core.basicr   sympy.core.cacher   sympy.core.functionr   r   sympy.core.numbersr   r   r	   sympy.core.relationalr
   r   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   r   (sympy.functions.combinatorial.factorialsr   &sympy.functions.elementary.exponentialr   $sympy.functions.elementary.piecewiser   'sympy.functions.special.delta_functionsr   sympy.integrals.integralsr   r   sympy.logic.boolalgr   r   sympy.polys.polyerrorsr   sympy.polys.polytoolsr   sympy.series.seriesr   sympy.sets.setsr   r   r   r   sympy.solvers.solvesetr    sympy.solvers.inequalitiesr!   r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r-   r<   rK   rU   r}   r   r   r   r  rj   r:   r4   r2   <module>r=     s
    # " " " " " $ $ $ $ $ $ 1 1 1 1 1 1 1 1 + + + + + + + + + + * * * * * * * * " " " " " " . . . . . . . . 0 0 0 0 0 0 0 0 > > > > > > 6 6 6 6 6 6 : : : : : : > > > > > > ; ; ; ; ; ; ; ; ) ) ) ) ) ) ) ) 2 2 2 2 2 2 & & & & & & & & & & & & F F F F F F F F F F F F + + + + + + C C C C C C[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [	I 	I 	I 	I 	I| 	I 	I 	I3 3 3 3 3-| 3 3 3(F F F F Fm-= F F F$?= ?= ?= ?= ?="24E ?= ?= ?=D    \   
Q2 Q2 Q2 Q2 Q2#9> Q2 Q2 Q2h]1 ]1 ]1 ]1 ]1v ]1 ]1 ]1@TK TK TK TK TK-| TK TK TKlO O O    r4   