U
    9%ec ã                   @   sZ  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ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l0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZRmSZSmTZTmUZUmVZV ejWZWdd ZXdd ZYdd  ZZd!d" Z[d#d$ Z\d%d& Z]d'd( Z^d)d* Z_d+d, Z`d-d. Zad/d0 Zbd1d2 Zcd3d4 Zdd5d6 Zed7d8 Zfd9d: Zgd;d< Zhd=d> Zid?d@ ZjdAdB ZkdCdD ZldEdF ZmdGdH ZndIdJ ZodKdL ZpdMdN ZqdOdP ZrdQdR ZsdSdT ZtdUdV ZudWdX ZvdYdZ Zwd[d\ Zxd]d^ Zyd_d` Zzdadb Z{dcdd Z|dedf Z}dgdh Z~didj Zdkdl ZeOdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ Zdd Zdd Zdd ZeOdd Zdd Zdd Zdd Zdd Zdd Zdd ZeOdd Zdd Zdd Zdd Zdd Zdd Zdd  ZdĄdĒ ZdĢdĪ ZdĨdĶ Zd§dĻ ZdĐdŠ ZdŦdŽ Z d­dŪ ZĄdŊd° ZĒdądē ZĢdģdī ZĪdĩdķ ZĨd·dļ ZĶdđdš Z§dŧdž ZĻd―dū ZĐdŋdĀ ZŠdÁdÂ ZŦdÃdÄ ZŽdÅdÆ Z­dĮdČ ZŪdÉdĘ ZŊdËdĖ Z°dÍdÎ ZąeOdÏdÐ ZēdŅdŌ ZģdÓdÔ ZīdÕdÖ ZĩdŨdØ ZķdŲdÚ Z·dÛdÜ ZļdÝdÞ Zđdßdā Zšdádâ Zŧdãdä Zždådæ Z―dįdč Zūdédę Zŋdëdė ZĀdídî ZÁdïdð ZÂdņdō ZÃeOdódô ZÄdõdö ZÅdũdø ZÆdųS )úé    )ÚSumĐÚAdd)Ú	TupleKind)ÚLambda)Ú
NumberKindÚUndefinedKind)ÚFloatÚIÚRationalÚnanÚooÚpiÚzoo)ÚPowĐÚS)ÚSymbolÚsymbols)Úsympify)ÚMaxÚMinÚsqrt)Ú	Piecewise)ÚcosÚsin)ÚfalseÚtrue)Ú
MatrixKind)ÚMatrix)Úrootof)ÚContains)ÚImageSetÚRange)Ú
ComplementÚDisjointUnionÚ	FiniteSetÚIntersectionÚIntervalÚ
ProductSetÚSetÚSymmetricDifferenceÚUnionÚimagesetÚSetKind)Úmpi)Ú	unchanged)ÚEqÚNeÚLeÚLtÚLessThan)ÚAndÚOrÚXor)ÚraisesÚXFAILÚwarns_deprecated_sympy)ÚxÚyÚzÚmÚnc                     s"  t jtttd t jt jks"ttttd t jt jks>tttttt jt jksZtttttt jt jksvtttttt jt jksttddd} ttttft j	 
d| fĄd ksÂtttttft j	 
dĄdksât| | fttttft j	kstdt tttt t j	ks"tdhtttft j	ks>tdtttft j	ksXtttfdd	 ttfd
d	 ttdd	  dttttfttfksŪtttfdd	 tttttttksätdd }t|ttttkstdd	 }t|tttttks8tttdtdksRttttthksjttttfdtft j	dtfhksttdtd tt fdd	tddjjdksČttd\}}tdd	 tddtdd tt||f|| tddtddĄstd S )Né   ÚrTĐÚrealĐrA   é   FĐrA   rA   c                      s
   t t S ĐN)r-   r<   Đ ĐÚintsrI   úY/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/sets/tests/test_sets.pyÚ<lambda>/   ó    ztest_imageset.<locals>.<lambda>c                      s   t ttt S rH   )r-   r<   r=   r>   rI   rJ   rI   rL   rM   0   rN   c                   S   s   t tttttS rH   )r-   r   r<   r   r=   rI   rI   rI   rL   rM   1   rN   c                      s   t ttt  S rH   )r-   r   r<   rI   rJ   rI   rL   rM   3   rN   c                 S   s   t | S rH   Đr   Đr<   rI   rI   rL   Úf5   s    ztest_imageset.<locals>.fc                 S   s   t | S rH   rO   rP   rI   rI   rL   rM   8   rN   r<   ĐÚintegerc                    s   |   S rH   rI   rP   )ÚclashrI   rL   rM   >   rN   éþĸĸĸ)zx0 + xzx + x0zx1, x2c                 S   s
   t | |S rH   r   Đr<   r=   rI   rI   rL   rM   A   s    rF   é   )r   ÚIntegersr-   r<   ÚNaturalsÚ	Naturals0ÚAssertionErrorÚabsr   ÚRealsÚ	_containsr
   r9   Ú	TypeErrorÚ
ValueErrorr   r=   r   r"   r&   r>   r   r   Ústrr(   ZlamdaÚexprZdummy_eq)rB   rQ   Úx1Úx2rI   )rT   rK   rL   Útest_imageset    sP    $   $$ $(ĸ
 ĸ ĸþre   c                  C   sD   t jt jt jt jt jt jfD ]} | jdkstqt j	jdks@td S )NFT)
r   rY   rZ   rX   Ú	Rationalsr]   ÚUniversalSetÚis_emptyr[   ÚEmptySetĐÚsrI   rI   rL   Útest_is_emptyG   s
    ĸrl   c                  C   sZ  t jt jt jt jt jt jfD ]} | jdkstqt j	jdks@tt
ddjdksTttddjdkshttttjd ks|ttt
dt
djdksttt
dtddjdksķttt
dtttjd ksÔtttddtddjdksôttt
dtddjdksttt
dt
djdks2ttt
dtttjd ksRtttttt
djdksrttttttddjd ksttt
tt
tjdksēttt
dtttjdksŌtttttt
djd ksōtttddt
tjdkstttddt
ttjdks4ttt j	t
ttt j	jdksVtd S )NFTrA   rF   r   rW   éûĸĸĸ)r   rY   rZ   rX   rf   r]   rg   Zis_finite_setr[   ri   r&   r(   r<   r=   r)   r,   r'   r$   r%   rj   rI   rI   rL   Útest_is_finitesetO   s.    ĸ    "   "rn   c                	   C   s:   t   tjj W 5 Q R X t   tdj W 5 Q R X d S ĐNrA   )r;   r   ri   Zis_EmptySetr&   rI   rI   rI   rL   Útest_deprecated_is_EmptySetj   s    rp   c                  C   s@  t dtt dtddkstt dtjtks0tt t dt t dddksPtt t djtksftt tt tjks|tt tttjkstt t t tjksĻtt tttjksžtt tttjksÐtt tt tjksætt ttthksútt	t ddt
sttttddf} t	t | | t
s6tt ddtjksLtt ddjdksbtt ddddtjks|tt ddddtjkstt ddddtjks°tt	t dtdt sĘtt tddddtjksčtttdd	  ttd
d	  ttdd	  ttdd	  ttdd	  ttdd	  d S )Nr   FTrA   rW   ÚaĐÚpositivec                   S   s   t dtjS ĐNr   )r(   r   ÚImaginaryUnitrI   rI   rI   rL   rM      rN   z)test_interval_arguments.<locals>.<lambda>c                   S   s   t dtdddS )Nr   r>   FĐZextended_real)r(   r   rI   rI   rI   rL   rM      rN   c                   S   s   t tttj S rH   )r(   r<   r   ru   rI   rI   rI   rL   rM      rN   c                   S   s   t ddtttS ĐNr   rA   Đr(   r6   r<   r=   rI   rI   rI   rL   rM      rN   c                   S   s   t dddtttS ĐNr   rA   Frx   rI   rI   rI   rL   rM      rN   c                   S   s   t ddttttS rw   )r(   r>   r6   r<   r=   rI   rI   rI   rL   rM      rN   )r(   r   r[   Ú
right_openr   Ú	left_openr   ri   r<   Ú
isinstancer&   r   Úmeasurer   r9   r`   ÚNotImplementedError)ÚerI   rI   rL   Útest_interval_argumentsr   s6     r   c                  C   sz   t ddd} ttd| tddjt| dks2ttt| dtddjtd| ksXttd|  dĄt	d| ksvtd S )Nrq   TrC   r   rW   éýĸĸĸrA   )
r   r,   r(   Úsupr   r[   Úinfr   Úcontainsr5   Đrq   rI   rI   rL   Ú!test_interval_symbolic_end_points   s    &&r   c                  C   sė  t d\} }tddd}tddd}tddd}td	dd
}tddjdksPttddjdksdtt||jdksxtt||| jdkstt| | jdksĪttdtjdksļttt tjdksÎttt djdksätt| |jd ksøtt|tjdkstt|djdks$tt|dddjdks>tt|djdksTtt|djd ksjtt||jdksttd|ddjdksttd|ddjdksīttd|ddjd ksÎttd|ddjd ksčtd S )Nzx, yrB   TrC   Úprr   r@   )ÚnegativeÚnn)ZnonnegativerA   rF   FrW   r   Đr{   Đrz   )r   r   r(   rh   r[   r   )r<   r=   rB   r   r@   r   rI   rI   rL   Útest_interval_is_empty   s0    r   c                  C   sâ  t tddtddtddks$tt tddtdddtddksJtt tddtddtddksntt tddtddtddkstt tddtddtddksķtt tddddtddtddddksâtt tddtddddtddkstt tdddtddtddks4tt tdddtdddtdddks`tt tdddtddddtddddkstt tddddtdddtdddksūtt tddtddtddksätt tddddtddtddkstt tddddtdddtddks:tt tddtjtddks\tt tjtjksrtt tddfdd	 tdd
D  tddksĶttd} t tddtd| t tddt| ksÞttt tddtd| süttdd 	tddĄtddtdd ks,ttdd 	tddĄtddksRtt t
 t
 kshttdtd td tdddksttdtd tddksēttdddtj tdddksÖttdddtddd@ tddksþttdddtdddB tddddks*ttdddtj@ tjksHttdddtjB tdddkslttd} td}td}tjt| t||B t| t||ks°ttddtd tddksŌttddddtd tddddksüttddtd }tddtd }| |Ą}d|krHd|krHd|ksLt| |Ąrd| |Ąshtttdd  |jdkstt tjttt  tt ttt  tt ksÄtt tjtjtjksÞtd S )NrA   rF   rW   Té   Fr   c                 S   s   g | ]}t d | qS )į      ð?Đr&   )Ú.0r@   rI   rI   rL   Ú
<listcomp>Ō   s     ztest_union.<locals>.<listcomp>é
   r<   ÚhamÚeggsr=   r>   é   c                   S   s   t dddS )NrA   rF   rW   Đr,   rI   rI   rI   rL   rM   û   rN   ztest_union.<locals>.<lambda>)r,   r(   r[   r   ri   Úranger   r&   r0   Úunionr*   Ú	intersectÚ	is_subsetr9   r_   Úis_iterabler   r
   r]   rX   )r<   r=   r>   ÚXÚYZXandYrI   rI   rL   Ú
test_unionš   s    $&$$$ĸ*(
ĸ
ĸ

ĸ
&ĸ
ĸ
""ĸ
 ĸĸ
&* $(,$ĸ
"ĸ

"ĸ
r   c                  C   sH   t tdtdtddd} t| ddddddddddddgksDtd S )	NrW   r   r   FĐÚevaluater   rA   rF   )r,   r#   Úlistr[   )ÚurI   rI   rL   Útest_union_iter  s    rĢ   c                   C   s@   t tttd jdkstt ttt t t jd ks<td S )NrA   F)r(   r<   r=   r&   rh   r[   rI   rI   rI   rL   Útest_union_is_empty  s    rĪ   c                   C   sĪ  t ddt dd t dddks$tt ddt dd t ddddksJtt dddt dd t ddddksrtt dddt ddd t ddddkstt ddtd tt ddddt ddddksÐttjtt tjksčttjtt t tjkstt ddtt t t ddks,tt ddtdt tt  ddĄt  ddĄks`ttjtddt t	t
d  ttt  t dĄt  dtĄtt	t
d ddksēttdddtd tddksÖttd	d
td
 td	ksöttddddt dddd tddks"ttddddtj tddddksJttt ddtdddt dd tt ddddtdkstdtjtj ks td S )NrA   rW   rF   TFr   r   r   r   r   r   éĸĸĸĸ)r(   r[   r&   r,   r   r]   r
   ÚRopenÚLopenr<   r=   r$   Úopenr   ri   rY   rI   rI   rI   rL   Útest_difference  s>    $&(ĸĸ&
 
ĸ þ$ ĸ
( ĸ
rĐ   c                     s  t ddd t dd} tddtdd}t | ddjdksBtt ddjdksZtt|ddjd ksrtt t | dd t dkstt t dd t dksŪttt fdd	 ttddtddtdddksčttt dddt ddt dksttttd
dt dddtddttd
dddt dksPtdttd
dtddddksttdttj	tj
ddkstdttj	tj
ddksŽtttjtjtksÄttj tjĄtksÜtd
tj	 tjt d
 Ąksüttjtj tjksttjt d
 t d tjt d
d ks@ttj	ttj
t t ttj	tj
 tj	t t ksxttt ttdtddtt tttddksŽtt td  t td } ttt  | sÜtt  }t| | | }|| |kst|| |kstd S )NrA   rW   r   rF   Fr   Tc                      s   t t dd S ĐNFr   )r&   r$   rI   ĐÚAÚCrI   rL   rM   =  rN   z!test_Complement.<locals>.<lambda>r   r   rĨ   éöĸĸĸr   za:czd:f)r&   r(   r$   r   r[   r9   r_   r,   r   r]   rY   rX   rg   ri   Ú
complementr   r   r'   r<   r=   r   r0   r)   )ÚBÚDÚA2ZB3rI   rŦ   rL   Útest_Complement1  sL    


&&ĸþ
$ ,ĸ
ĸ

rģ   c               	      s  dd dd dd dd dd dd dd d	d g} t t}t t}d
ht d
td
dt|td
dt||t||t||tj	g}dd
dtdtd
tdg}|D ]h|D ]: | D ]0t
t fdd t
t fdd qīqŽt
tfdd t
tfdd qĪdS )z1Tests that e.g. FiniteSet(1) * 2 raises TypeErrorc                 S   s   | | S rH   rI   Đrq   ÚbrI   rI   rL   rM   e  rN   z-test_set_operations_nonsets.<locals>.<lambda>c                 S   s   | | S rH   rI   rī   rI   rI   rL   rM   f  rN   c                 S   s   | | S rH   rI   rī   rI   rI   rL   rM   g  rN   c                 S   s   | | S rH   rI   rī   rI   rI   rL   rM   h  rN   c                 S   s   | | S rH   rI   rī   rI   rI   rL   rM   i  rN   c                 S   s   | |B S rH   rI   rī   rI   rI   rL   rM   j  rN   c                 S   s   | |@ S rH   rI   rī   rI   rI   rL   rM   k  rN   c                 S   s   | |A S rH   rI   rī   rI   rI   rL   rM   l  rN   rA   rF   r   c                      s
    S rH   rI   rI   ĐÚniÚopÚsirI   rL   rM     rN   c                      s
    S rH   rI   rI   rķ   rI   rL   rM     rN   c                      s
    t   S rH   )ÚobjectrI   Đrđ   rI   rL   rM     rN   c                      s
    dh S ro   rI   rI   rŧ   rI   rL   rM     rN   N)r&   r<   r=   r(   r,   r'   r$   r)   r   ri   r9   r_   )ZopsZSxZSyÚsetsÚnumsrI   rķ   rL   Útest_set_operations_nonsetsb  s8    øø
rū   c                	      s  t ddhdhdhksttdd tjĄttt dddtdtddksPttdddd tjĄttt dddtdtddksttdddd tjĄttt dddtdtddksÄttdddd tjĄttt dddtdtddksþttj tj	Ątj	ksttj tjĄtj	ks2ttj tjĄtj	ksLttj	 tjĄtjksftttddtdd tjĄttt dddtddddtdtddksķtt
d tjĄttt dddtdtddksėtt
dttjd  tjĄtddddtdtjdd ks,tt
ddd tjĄttjdddtdddd tdddd tdtjdd kstt
t tjĄt tjt
tksĻtt
dt tjĄt tt dddtdtdd t
tddksėttddtdd  tjtj Ą tfd	d
dD s.tt fdd
dD rJttfdd
dD rftt fdd
dD std S )NrA   rF   r   TFrW   r   r   c                 3   s   | ]}| kV  qd S rH   rI   Đr   ÚptĐÚsquarerI   rL   Ú	<genexpr>ą  s     z"test_complement.<locals>.<genexpr>)Đr   r   Đį      ā?rÆ   ĐrA   r   rG   c                 3   s   | ]}| kV  qd S rH   rI   rŋ   ĐÚ	notsquarerI   rL   rÃ   ē  s    c                 3   s   | ]}| kV  qd S rH   rI   rŋ   rÁ   rI   rL   rÃ   ī  s     ))rĨ   r   )į      ø?rÆ   )r   r   c                 3   s   | ]}| kV  qd S rH   rI   rŋ   rČ   rI   rL   rÃ   ĩ  s     )r$   r[   r(   rŊ   r   r]   r,   r   rg   ri   r&   ÚNegativeInfinityÚInfinityr<   ÚallÚanyrI   rI   )rÉ   rÂ   rL   Útest_complement  sp    ĸĸĸĸĸĸ
ĸ
ĸĸþ
ĸĸþĸ
& ĸ þĸrÏ   c                  C   s@  t dd tjtjfD stt dd tjtjfD s<ttj} tj | ĄtjksXt|  tjĄtjksnttd}tdd tddĄtddksttdd tdddĄtdddksÂttddd tddĄtddd	d	ksėttdddd tddĄtddd	dksttdd t	tddtdd
Ąt	tddtddksXtt
dd t
ddd
Ąt
ddkstt
dd| t
|Ąt
|ksĪtt
dd t
dĄt
dksÆtt
ddd
dd tjĄtjksęttdd t
dd
Ąt
dd
ksttdddd t
dĄtjks4tt	tddtdd
 tddĄt	tddtddksrtt	tddtdd
 tddĄt	tddtddks°tt	tddtdd
 tddddĄtjksâtt	tddtdd
 tjĄtjkstt	tddt
d t
dd
dddĄtt
dd
dddt	t
dtddks^ttt
ddd
td|td
ttt
d
td|td
td	dksĪttt
ddtdd
t|ttddht|td	dksāttt
dddtdd
t|ttddht|td	dksttddd\}}tt
|t
||t||d t
|ks\ttt
|t
ttt
|t
td	dkstt
| tjĄttjt
|d	dksīttdd t
dd
Ąt
dd
ksÚttdddd t
dĄtjksþtt	tddtdd
 tddĄt	tddtddks<td S )Nc                 s   s   | ]}t j |Ą|kV  qd S rH   )r   rX   ÚintersectionĐr   ÚirI   rI   rL   rÃ   đ  s     z"test_intersect1.<locals>.<genexpr>c                 s   s   | ]}|  tjĄ|kV  qd S rH   )rÐ   r   rX   rŅ   rI   rI   rL   rÃ   ŧ  s     r<   r   rF   rA   TFrW   r   r   r   r   é   r   zm, nrC   )rÍ   r   rY   rZ   r[   rÐ   r   r(   r   r,   r&   ri   r'   r=   r   r]   )rk   r<   r?   r@   rI   rI   rL   Útest_intersect1ļ  s    
ĸ
ĸ$
ĸĸĸ
 ĸ
($ĸ
$&$ ĸ
 ĸ
$ĸ
ĸ
$$ĸ
ĸ
ĸ
ĸ
ĸ
ĸ
ĸ
&$ ĸrÔ   c                     sļ  t tdddtdddd  js&tt tdtdhksBttddd	} t td
dt| d d kdkstttt	 fdd t td
dtj
tj
ksĒtt tt ttt | tt | ksĖttd
d}t |d |d dd d ksøtd ksttt	 fdd t t tjtjddtjdd}|jtt tjtjddtjgks^tt tjttjtj
ks|tt  tjkstt dhdh| ht dh| hksītd S )NrA   rF   rW   r   Fr   r<   TrC   r   rÓ   c                      s   d kS ĐNrF   rI   rI   ĐrŌ   rI   rL   rM     rN   z#test_intersection.<locals>.<lambda>ĐrF   rF   )rF   rF   rF   c                      s   t  S rH   )rĄ   rI   rÖ   rI   rL   rM     rN   )r'   r&   r(   r   r[   Úsetr   r   r9   r_   ri   r   rX   rY   r]   Z_argsetÚ	frozensetÚ	ComplexesÚComplexInfinityrg   )r<   Úlinerq   rI   rÖ   rL   Útest_intersectionø  s&    
*
(rÝ   c                  C   sb   t d} tj}tdt}t| }t|||t||ks:tttddtddt| tks^td S )Nr@   r   rA   rF   rW   r   )	r   r   r]   r(   r   r&   r'   r[   ri   )r@   rq   rĩ   ÚcrI   rI   rL   Útest_issue_9623  s    
rß   c                   C   s@   t dd t ddĄdkstt dd t ddĄdks<td S )Nr   rF   rA   FrW   r   T)r(   Zis_disjointr[   rI   rI   rI   rL   Útest_is_disjoint&  s    rā   c                  C   sv   t dd} t ddd}t|  Ą dks*tt|  Ą tdk	sBtt| | Ą dksXtt| | Ą tdk	srtd S )NrA   rF   rW   rÓ   )r&   r)   Ú__len__r[   r   ĐrŽ   r°   rI   rI   rL   Útest_ProductSet__len__+  s    
rã   c               	      sö  t tjtjd kstt tjtjtjd ks4tt tjtjtjtjd ksTtt tjtjkshtt tjtjtjtj kstt tjtjtjtjtj tj ksŪtt tjtjtjtjtj tj  Ą ksÚtdt tjksėtdt tjksþtdt tjtjkstdt tjtjks.tdtft tjtjksJtdt tjtjtjksftdtjd ksztdtjtj tj kstdtjtj tj ksētdtjtj tj ksÎtdtjtjtj  ksętt  td	ksþtt tjtjtjksttd
D ]6} t tjf|   }d|  |ksFtd|ks tq tjtj tj tjtjtj  ksttj}tj	}t
}d}||ksĪt||ksēt||f|| ksČt||  ||f}| ksæt||f   ksüt||    kstttdd  t  t dd tdD  W 5 Q R X ttdd  tdd}tdd}t ||   ttĄt| tĄ| tĄ  krÐttttdttdtttdttdksÖn ttt fdd tt fdd ttdd  t tj	tj	}| dĄtjks,t| dĄtjksBt| tĄtt|ddks`t| tĄ tdĄtjks~t| tdfĄ tdĄtjks t| ttfĄtttf|ddksÆtttttf|sÜttd|tjksōtd S )NrA   rF   rW   )rA   rE   ĐrA   rF   rW   )rE   rW   )rA   )rF   rW   rI   r   c                   S   s
   t jd S )NrĨ   )r   r]   rI   rI   rI   rL   rM   f  rN   z!test_ProductSet.<locals>.<lambda>c                 s   s   | ]}t |V  qd S rH   r   Đr   rk   rI   rI   rL   rÃ   h  s     z"test_ProductSet.<locals>.<genexpr>c                   S   s   t d S rH   )r)   rI   rI   rI   rL   rM   i  rN   r   c                      s
      tĄS rH   ĐÚas_relationalr<   rI   ĐZS3rI   rL   rM   q  rN   c                      s      tdĄS ro   ræ   rI   rč   rI   rL   rM   r  rN   c                   S   s   t tdd ttĄS rw   )r)   r(   rį   r<   r=   rI   rI   rI   rL   rM   s  rN   Fr   )r)   r   r]   r[   Úflattenr
   r&   ri   r   rX   r   r9   r`   r;   r_   rį   r<   r=   r6   r7   r1   r   r   r   r!   Úsubsr0   )r·   ZRnZS1ZS2rc   rd   Zx3ZZ2rI   rč   rL   Útest_ProductSet4  sz     (,* 



ĸ
,þ"&rë   c                   C   s0   t ttddstt tttdds,td S rw   )r0   r)   r(   r[   rI   rI   rI   rL   Ú(test_ProductSet_of_single_arg_is_not_arg  s    rė   c                   C   s8   t tjtjjdkstt ttdtjjd ks4td S )NFrA   )r)   r   rX   r]   rh   r[   r(   r<   rI   rI   rI   rL   Útest_ProductSet_is_empty  s    rí   c                  C   sL   t ddd} td|  | dĄtddks,tt| d | dĄtjksHtd S )Nrq   TrC   r   rF   )r   r(   rę   r[   r   ri   r   rI   rI   rL   Útest_interval_subs  s     rî   c                   C   sd   t dd Ą tddkstt dddd Ą tddks<ttt dd Ą ttddks`td S )Nr   rA   TF)r(   Zto_mpir/   r[   ÚtyperI   rI   rI   rL   Útest_interval_to_mpi  s     rð   c                   C   sĒ   t tdd tj Ą t tdtdks.tt ttjdd Ą t ttdddksXtt t tj Ą t t tdks~ttdt Ą ttdtkstd S )	Né   é@   z0.171875z0.5Tr   rF   z2.0)	r(   r   ZHalfÚevalfr	   r[   r<   r   r&   rI   rI   rI   rL   Útest_set_evalf  s     ĸ
  ĸ&rô   c                  C   sē  t ddd} tddjdks ttd| j| ks4ttd| j| d ksLtttddtddjdksltttddtddtd	d
djdksttddt| t djdksīttjjdksÄttddtdd }td	dtd	d }tt ttdd }|j|j  krdks$n t|| jdks8t|| jdksLt|tddd jdksht| 	|Ąjdks~t|| jtkst|tddd jt
ksŪtd S )Nrq   TrC   rA   rW   rF   r   r   r   rÓ   é   rm   r   é   éd   éŊ   éK   é   )r   r(   r}   r[   r,   r&   r   r   ri   r   r   )rq   rÂ   ZoffsetsquareZbandrI   rI   rL   Útest_measure   s(      ĸ"rû   c                  C   sV  t dd t ddĄdkstt dd t ddĄdks<tt dd tddĄdksZttdd tddddĄsxttdd tddddĄdksttd t ddĄsēttdd t ddddĄdksÔtt ddtd  t ddddtdd Ąstt dd tt ddt ddĄdks2tt dd	 tt ddt ddĄdks^ttdddd t ddĄdksttj tdddĄdks tt dd tjĄdksžttj tjĄdksÔtttd
d  tdddd 	t ddĄdksttj 	tdddĄdks$ttj
 tjĄs8ttj tjĄsLttt ttĄd kshttt tt ttĄĄdksttt tt ttd ĄĄdksītt dd t ddddĄdksØtt dd tt t dt dtĄdksttddd} tddd tddĄdks4tttdd  tdddĄdks\ttd	dd tddd	Ądksttdt tddĄdks ttt d tdĄdksĀttd tdd| Ąd ksātt| | d  t| | d Ądksttd t ddddĄdks*ttt| d|  tj tjĄd ksRtd S )Nr   rA   rF   TrW   Fr   r   rÓ   c                   S   s   t j dĄS ro   )r   ri   r   rI   rI   rI   rL   rM   Ņ  rN   z test_is_subset.<locals>.<lambda>r   rU   r@   rR   r   rŪ   r   rũ   r   )r(   r   r[   r&   r,   r   ri   r9   r`   ÚissubsetrY   rX   rZ   r<   r=   rę   r   r   r#   r-   r   r]   Đr@   rI   rI   rL   Útest_is_subsetž  sH    ""ĸ
,,$$$($."($   ("rþ   c                   C   sj   t dd t ddĄdkstt dd t ddĄdks<ttj tdddĄdksXtttdd  d S )	Nr   rA   rF   TrW   Fc                   S   s   t dd dĄS rw   )r(   Úis_proper_subsetrI   rI   rI   rL   rM   ō  rN   z'test_is_proper_subset.<locals>.<lambda>)r(   rĸ   r[   r   ri   r&   r9   r`   rI   rI   rI   rL   Útest_is_proper_subsetí  s    r   c                   C   sÖ  t dd t ddĄdkstt dd t ddĄs8ttdd tddddĄdksZttdd tddddĄdks|ttd t ddĄdksttdd t ddddĄdksštt ddtd  t ddddtdd Ądksîtt dd tt ddt ddĄdksttdddd t ddĄdks>ttj tdddĄdks\tt dd tjĄdksxttj tjĄdkstttd	d
  t dd 	tjĄdksšttj 	tjĄdksŌtd S )Nr   rA   rF   FrW   r   r   Tc                   S   s   t j dĄS ro   )r   ri   Úis_supersetrI   rI   rI   rL   rM     rN   z"test_is_superset.<locals>.<lambda>)
r(   r  r[   r&   r,   r   ri   r9   r`   Ú
issupersetrI   rI   rI   rL   Útest_is_supersetõ  s&    """ĸĸ,$r  c                   C   sj   t dd t ddĄdkstt dd t ddĄdks<ttddd tjĄdksXtttdd  d S )	Nr   rA   rF   FrW   Tc                   S   s   t dd dĄS rw   )r(   Úis_proper_supersetrI   rI   rI   rL   rM     rN   z)test_is_proper_superset.<locals>.<lambda>)r(   r  r[   r&   r   ri   r9   r`   rI   rI   rI   rL   Útest_is_proper_superset  s    r  c                     sæ  t dd dĄtjkstt dd dĄtjks4tt dddd dĄtjksRtt dddd dĄtjksptt dddd dĄtjkstt dddd dĄtjksŽtt dddd dĄtjksĘtt dddd dĄtjksčtt ddt ddkdksttddd dĄtjks$ttddtd tdĄtjksJttt 	t
Ąd ksbtttdd	  tt
th 	t
hĄd ksttt
th tt
Ą 	t
hĄdksīttt
th tt
d Ą 	t
hĄdksÞtdd
lm m}  tt|    Ąts
ttt|   Ąts$ttt  dĄts>ttt fdd	 ttdtddd tdd}ttddtddttddtdd ttddtdd }t|}t|}|| tjksÖtddtjtddg}t| tfdd|D sttfdd|D s*ttt ddt dd dĄtjksRttt ddt dd dĄtjkszttt ddtdd dĄtjksĒttj dĄtjksštttt
d t
 d d tjĄtjksčttt
d t
d  d dtjksttt
d t
d  d dtjks4ttt ddt dd t
Ątttjt
kt
dkttdt
kt
dkksttt dt
t dd tĄttdktt
ktjtktdtkksČttj tj Ątjksâtd S )Nr   rF   rA   rW   TFr<   c                   S   s   t ttkS rH   )r<   r&   r=   rI   rI   rI   rL   rM   '  rN   ztest_contains.<locals>.<lambda>rī   c                      s   dt  kS ro   r   rI   r   rI   rL   rM   1  rN   é	   r   r   gņŋc                 3   s   | ]}| kV  qd S rH   rI   Đr   ÚitemĐÚfsetrI   rL   rÃ   <  s     z test_contains.<locals>.<genexpr>c                 3   s   | ]}   |ĄtjkV  qd S rH   )r   r   r   r  r	  rI   rL   rÃ   =  s     r   rÓ   )!r(   r   r   r   r[   r   r&   r   r=   r^   r<   r9   r_   rę   Ú	sympy.abcrq   rĩ   r|   r!   r   r   ri   rĖ   rÍ   r,   r    r]   r7   r6   ZOner'   rÚ   rÛ   )rĩ   Zrad1Zrad2Ús1Ús2ÚitemsrI   )rq   r
  rL   Útest_contains  sX    &&* B(((.&&*ĸ
"ĸ
r  c                     sÜ   t dtdd   Ąttjkdkks4ttt fdd tdddd   Ąttjk dk ksxtt ddd	} td  | Ądks tt d
dd tt	 t	  Ąttj
 k  tjk ksØtd S )Nr<   r   rA   c                      s    kS rH   rI   rI   Đr   r<   rI   rL   rM   V  rN   z(test_interval_symbolic.<locals>.<lambda>TrÞ   FrC   r   rv   )r   r(   r   r6   r   ÚZeror[   r9   r_   r   rË   rĖ   )rÞ   rI   r  rL   Útest_interval_symbolicR  s    
"" ĸr  c                     s^  t dtdd} tdd}t| | Ątttjkdkttdkdkks`tt	t
fdd  Ą}| Ąkst| dĄtksĪt| d	Ątksļt| d
ĄtksĖt| dĄtksāt| dĄtksôttddddtdt tdddd  t fddddt fD s>tt fdddD sZtd S )Nr<   r   rA   rF   rW   c                      s    kS rH   rI   rI   )Úi3r<   rI   rL   rM   f  rN   z%test_union_contains.<locals>.<lambda>g      āŋrÆ   rĘ   g      @g      @Tr   rĨ   r   rÓ   c                 3   s   | ]}| kV  qd S rH   rI   Đr   ÚelĐÚUrI   rL   rÃ   p  s     z&test_union_contains.<locals>.<genexpr>r   c                 3   s   | ]}| kV  qd S rH   rI   r  r  rI   rL   rÃ   q  s     )rF   r   r   )r   r(   r,   rį   r7   r6   r   r  r[   r9   r_   r   rę   r   r   r   r&   rÍ   )Úi1Úi2r   rI   )r  r  r<   rL   Útest_union_contains`  s     


:
&$r  c                   C   s(   t ddjdkstt jdks$td S ry   )r(   Z	is_numberr[   r*   rI   rI   rI   rL   Útest_is_numbert  s    r  c                   C   sF   t ddjdkstt t djdks*tt tddjdksBtd S )NrW   r   FTz-inf)r(   Zis_left_unboundedr[   r   r	   rI   rI   rI   rL   Útest_Interval_is_left_unboundedy  s    r  c                   C   sD   t ddjdkstt dtjdks(tt dtdjdks@td S )NrW   r   FTz+inf)r(   Zis_right_unboundedr[   r   r	   rI   rI   rI   rL   Ú test_Interval_is_right_unbounded  s    r  c                  C   s  t d} tdddd | Ąttd| t| dks6ttdddd | Ąttd| t| dksdttdddd | Ąttd| t| dksttdddd | Ąttd| t| dksĀttt ddd | Ąttt | t| dksōttt ddd | Ąttt | t| dks&ttdtdd | Ąttd| t| tksVttdtdd | Ąttd| t| tksttt t | Ąttt | t| tksķtt ddd	} t d
dd	}t| | | Ą| |kksėtt||  | Ą|| kks
td S )Nr<   rĨ   rF   FTr   rU   r   rC   r=   )r   r(   rį   r6   r3   r[   r4   r   rV   rI   rI   rL   Útest_Interval_as_relational  s,    ĸĸĸĸ24000r  c                  C   sh   t d} t d}tdd | Ątt| dt| dks:tt|d | Ątt| |t| dksdtd S )Nr<   r=   rA   rF   rm   )r   r&   rį   r7   r1   r[   rV   rI   rI   rL   Útest_Finite_as_relational  s    *r  c                  C   sø   t d} tddtd  | Ątttd| t| dt| dksFttddddtd  | Ątt	d| t| dks|tt| dk | dk 
Ą  | Ąt| t k| tk t| dksļtt ddĄt ddĄ  | Ątt| d| dk| dkksôtd S )Nr<   r   rA   rF   TrW   r   )r   r(   r&   rį   r7   r6   r3   r1   r[   r4   Zas_setr   r2   rĶ   r§   rP   rI   rI   rL   Útest_Union_as_relationalĶ  s     ĸĸĸĸĸr   c                  C   sP   t d} ttddtddd | Ątttd| t| dt| dksLtd S ĐNr<   r   rA   rF   Fr   )	r   r'   r(   r&   rį   r6   r3   r1   r[   rP   rI   rI   rL   Útest_Intersection_as_relationalē  s    ĸĸ þr"  c                  C   sP   t d} ttddtddd}| | Ąttd| t| dt| dksLtd S r!  )	r   r$   r(   r&   rį   r6   r3   r2   r[   Đr<   rb   rI   rI   rL   Útest_Complement_as_relationalđ  s
    ĸr$  c                  C   sL   t d} ttddtddd}| | Ąd| k| dk@ t| d@ ksHtd S r!  )r   r$   r(   r&   rį   r2   r[   r#  rI   rI   rL   Ú"test_Complement_as_relational_failĀ  s
    ĸr%  c                  C   sR   t d} ttddtddd}| | Ątt| dtd| t| d@ ksNtd S r!  )	r   r+   r(   r&   rį   r8   r1   r3   r[   r#  rI   rI   rL   Ú&test_SymmetricDifference_as_relationalĘ  s    r&  c                   C   sH   t j tdĄt jkstt j t jĄt jks2tt jjt jksDtd S )Nr<   )	r   ri   rį   r   r   r[   r   rg   ÚboundaryrI   rI   rI   rL   Útest_EmptySetÐ  s    r(  c                  C   s  t d} tddd}tddd}t||}| |Ą}| |ĄrH| |ĄsLt| |ĄsZt|tdksjt|jdkr~|jdkst|jdkr|jdkstt| ddjt| dksķtt| ddjt	| dksŌttt
jt
jksætttdddtdddksttdtdddks"ttd|d	| d
| d s>t||kdksPt||kdksbt||k dkstt||kdkst||kr||kst||krē||ksķt||krĘ||ksÎt||krâ||ksæt||krú||ksþtd S )Nr<   rA   rF   rW   r   r   rä   rE   rm   r   F)r   r&   r,   r   r   r[   r   r   r   r   r   ri   )r<   rŽ   r°   ZAorBZAandBrI   rI   rL   Útest_finite_basicÖ  s2    

"r)  c               
      s  d\} }t dd}tdddddd}tdddd}t| | || }d	|ksPtd|ks\t| |f d ksptd
||  Ą kstd|| kst| ddf | |  Ą ksēt| dfdf | | ksÎtt| t| }}t d ||f||f||f||fhkst||  || Ąs&t| t t tt t t Ąt	t t dddt dtdd t t t t t tt t dddt dtdd  ks tt ddd  t ddd ĄsÄtt ddd  t ddd Ąrčtt ddd  t ddd Ąrtt ddtd  |Ąs*tt
     dksDtt
tjtj dks^tt
tj  dksvttt fdd d S )N)ÚHÚTr   rA   rF   rW   r   r   rÓ   rÄ   )rÆ   rÆ   rÆ   )rÅ   rÆ   Trm   rŪ   r   gÉ?rÆ   é   c                      s   t  tdd S )Nr   rF   )Úlenr(   rI   ĐZcoinrI   rL   rM     rN   z$test_product_basic.<locals>.<lambda>)r(   r&   r[   ré   r   rØ   r   rŊ   r   r,   r-  r   ri   r9   r_   )r*  r+  Z	unit_lineZd6Zd4rÂ   ZHHZTTrI   r.  rL   Útest_product_basicø  sD    

.ĸ
ĸĸý$$$r/  c                     sė   t ddd} tddtddtdd	d
| tj tddtdtddtdd  fD snt tjĄr~tt fdd fD sŠtt	fdd fD rÐt    tjĄrčtd S )Nr<   TrC   r   r   r   rú   rA   rF   é   éüĸĸĸrũ   ÚHamÚEggsc                 s   s   | ]}|  tjĄV  qd S rH   Đr   r   r]   rå   rI   rI   rL   rÃ   )  s     ztest_real.<locals>.<genexpr>c                 3   s2   | ]*} fD ]}||   tjĄV  qqd S rH   r4  )r   rq   rĩ   )rŽ   r°   r­   r
   ÚJrI   rL   rÃ   +  s       c                 3   s   | ]}|    tjĄV  qd S rH   r4  )r   rq   )rą   rI   rL   rÃ   ,  s     )
r   r(   r&   r   ÚPirÍ   r[   r   r]   rÎ   rP   rI   )rŽ   r°   r­   rą   r
   r5  rL   Ú	test_real  s    



 ,&r7  c                  C   sv  t ddd} t ddd}tddtd jdks4ttddtd jdksPttddt|  jtd| ksrttddt|  jtd| ksttdd| jtd| ks°ttdd| jtd| ksĖttdd| |jtd| |ksėttdd| |jtd| |ksttdd| |tj	tj
jtj	ks2ttdd| |tj	tj
jtj
ksVttd	d
jtd	d
ksrtd S )Nr<   TrC   r=   r   rA   rF   r   r2  r3  )r   r(   r&   r   r[   r   r   r   r   rĖ   rË   rV   rI   rI   rL   Útest_supinf1  s"    "" "ĸ
ĸ
r8  c                  C   s   t j} td}|  |Ąt jks"t|  tddĄ| ks:t|  tddĄtddksXt| j	t j
ksht| jt jksxt|  dĄt jkstd S )Nr<   rF   r   r   )r   rg   r   rį   r   r[   r   r(   r   r}   rĖ   r'  ri   r   )r  r<   rI   rI   rL   Útest_universalsetD  s    r9  c                  C   s8   t dd} tddd}t| |  | | | |  ks4td S )Nr   rF   rA   )r(   r&   r,   r[   )rÜ   ZpointsrI   rI   rL   Ú test_Union_of_ProductSets_sharesP  s    
r:  c                  C   s<   t ddjt ksttddd} t d| j| hks8td S )Nr   rA   r<   TrC   )r(   Zfree_symbolsrØ   r[   r   rP   rI   rI   rL   Útest_Interval_free_symbolsV  s    r;  c                  C   sĪ  t ddd} t ddd}t| d|  tddtddks<tt| d|  tdddd	tdddd	kshtt| | d tdddd	td
dd	dkstt| | d tddtd
dksļtt| | d tdddd	td
dd	dksätt| | d tddddtd
dd	dkstt| | d d tddtd
dks<tt| d| d  d| d   d| d   d|   td
dtdd
kstt| | d|   tt ttt dtdt ksūtt| d|  d| d d   td
ddd	ttddtd	ks ttdd tddtddks$ttt| ||  td
dtt| ||  td
dks^ttt| tt	| td
dtt| tt	| td
dks td S )Nr<   TrC   rq   rF   rU   rA   r1  Fr   r   rW   é   éN   éZ   iÝĸĸĸc                 S   s   d|  S rÕ   rI   rP   rI   rI   rL   rM   s  rN   z%test_image_interval.<locals>.<lambda>)
r   r-   r(   r[   r   r   r   r"   r   r   )r<   rq   rI   rI   rL   Útest_image_interval]  sB    $ĸĸ$ĸĸ
*8ĸ
$ĸ(ĸ
$ĸ
ĸr?  c                  C   s   t ttdkfdtd  tdkftd df} t dtdkfdtdkfd}tt| td	dttd	dttdd
tkszttt|tddtddkstd S )NrĨ   rA   rF   r   rW   Tr   )rF   Trm   é   )	r   r<   r-   r(   r,   r   r   r[   r&   )rQ   Úf1rI   rI   rL   Útest_image_piecewise|  s    ,2rB  c               	   C   st   t ddd} t ddd}t| | d tdd t| |Ątdd tt| d |d t| d |d Ąksptd S )	Nr<   TrC   r=   rF   rU   r   r   )r   r-   r(   r   r   r   r[   rV   rI   rI   rL   Útest_image_Intersection  s
     0ĸrC  c                  C   s8   t ddd} t| d|  tdddtdddks4td S )	Nr<   TrC   rF   rA   rW   r   rÓ   )r   r-   r&   r[   rP   rI   rI   rL   Útest_image_FiniteSet  s    rD  c                  C   sH   t ddd} t| | d tddtddd tdd	td
 ksDtd S )Nr<   TrC   rF   rU   r   rA   rW   r   r  )r   r-   r(   r&   r[   rP   rI   rI   rL   Útest_image_Union  s     ĸrE  c                  C   s,   t ddd} t| d|  tjtjks(td S )Nr<   TrC   rF   )r   r-   r   ri   r[   rP   rI   rI   rL   Útest_image_EmptySet  s    rF  c                   C   s.   t tjksttt t t Ątjks*td S rH   )r
   r   r]   r[   r(   r   r   r   rI   rI   rI   rL   Útest_issue_5724_7680  s    rG  c                   C   s4   t djt dksttdd ttfD s0td S )NrA   c                 s   s6   | ].}t tfD ] }td d||jtd dkV  qqdS )r   rA   N)r   r   r(   r'  r&   )r   r{   rz   rI   rI   rL   rÃ   Ē  s    
 ĸz test_boundary.<locals>.<genexpr>)r&   r'  r[   rÍ   r   r   rI   rI   rI   rL   Útest_boundary   s    ĸrH  c                   C   s  t ddt dd jtddddks(tt ddddt dddd jtdddksVtt ddtd jtdddkszttt ddt dd	dd
jtdd	ksĪttt ddt dddd
jtddksÎttt ddddt dd	dddd
jtddd	kstd S )Nr   rA   rF   rW   FTr   r   rö   r   )r(   r'  r&   r[   r,   rI   rI   rI   rL   Útest_boundary_UnionĶ  s&    (ĸ
ĸ$ĸĸ ĸ
þrI  c                   C   s.   t tddtddddjtddks*tdS )z2 Testing the boundary of unions is a hard problem r   r   rö   Fr   N)r,   r(   r'  r&   r[   rI   rI   rI   rL   Ú#test_union_boundary_of_joining_setsķ  s    ĸrJ  c                  C   sÂ   t ddddd } | jtddt dd t ddtdd  ksDtt ddddt dddd }| | jtddt dd tddt dd  t ddtdd  t ddtdd  ksūtd S )Nr   rA   TrF   )r(   r'  r&   r[   )Zopen_squareZsecond_squarerI   rI   rL   Útest_boundary_ProductSet―  s    ĸ
ĸþýĸrK  c                  C   s$   t ddtd } | j| ks td S rw   )r(   r&   r'  r[   )Z
line_in_r2rI   rI   rL   Útest_boundary_ProductSet_lineĘ  s    rL  c                   C   sb   t ddddjdkstt ddddjdks0tt ddddjdksHttdddjdks^td S ĐNr   rA   FTrF   rW   )r(   Zis_openr[   r&   rI   rI   rI   rL   Útest_is_openÏ  s    rN  c                   C   sJ   t ddddjdkstt ddddjdks0ttdddjdksFtd S rM  )r(   Ú	is_closedr[   r&   rI   rI   rI   rL   Útest_is_closedÖ  s    rP  c                   C   s&   t ddddjt ddddks"td S ĐNr   rA   FT)r(   Úclosurer[   rI   rI   rI   rL   Útest_closureÜ  s    rS  c                   C   s&   t ddddjt ddddks"td S rQ  )r(   Zinteriorr[   rI   rI   rI   rL   Útest_interiorā  s    rT  c                   C   s   t tdd  d S )Nc                   S   s
   t tjkS rH   )r<   r   r]   rI   rI   rI   rL   rM   å  rN   z!test_issue_7841.<locals>.<lambda>)r9   r_   rI   rI   rI   rL   Útest_issue_7841ä  s    rU  c                  C   s,  t tddtddstt tddtdddks8ttdd} tdd}t | | sZtt | |dksltt | | | | stt | | ||  dksttt ttthtthsštt ttth ttĄtthtj	ksätt ttthtth ttĄtj	kstt ttth ttd Ątthtj
ks@tt ttthtth ttd Ątj
ksptt tdhdhtddtj
kstt tdhtdhdhtj
ksžtt tdtdtj
ksÚtt t tdtj
ksöttdd}ttt}tt t||t||s(td S )Nr   rA   rF   FrI   )r1   r(   r[   r&   r0   r<   r=   rę   r   r   r   r)   )r  r  r  r  rI   rI   rL   Útest_Eqč  s(    

*,00&&

rV  c               	      s  t dddddd t ddddd	} tdd	t | d
djdksDtt d
djd ks\tt t | d
d t ddddddd	ksttt fdd tt ddddddt ddddd	t ddddddd	ksÖttt dddt ddddt dksþtt dddddt ddddA t dddks.tttdtdtdttdtdtdA t	ttdtdtdttdtdtd ttdtdtdttdtdtd ksÆttddtddA t	tddtdd tddtdd ks
td S )Nr   rA   rF   rW   r   r   rÓ   r,  r   Fr   Tc                      s   t t dd S rŠ   )r&   r+   rI   rŦ   rI   rL   rM     rN   z*test_SymmetricDifference.<locals>.<lambda>)
r&   r(   r+   r   r[   r9   r_   r*   r   r,   )r°   rI   rŦ   rL   Útest_SymmetricDifference  s<    
ĸĸĸĸĸ
ĸ
^.ĸĸĸrW  c                  C   sH   ddl m}  tddd}t| | tjĄttjt| |ksDtd S )Nr   )Úlogrq   TrC   )	Z&sympy.functions.elementary.exponentialrX  r   r&   r   r   r]   r'   r[   )rX  rq   rI   rI   rL   Útest_issue_9536  s    rY  c               	   C   sæ   t d} t| }td| }ttj|ttj|ddks:tttdd|ttdd|ddksbtttdd|tttddddtdddd|kstt|tjt|tjddksštt|tddt|tddddksâtd S )Nr@   rF   Fr   rA   rW   T)r   r&   r$   r   r]   r[   r(   r,   )r@   rq   rĩ   rI   rI   rL   Útest_issue_9637$  s    
 ("ĸ rZ  c                   C   sf   t tttdt tttdddks,tt tddttttddt tdttddksbtd S )NrA   Fr   rF   rW   )r$   r&   r=   r[   r<   rI   rI   rI   rL   Útest_issue_98080  s    ,ĸr[  c                   C   sF   t tt ttdtt tks&ttt t dĄtjksBtd S ro   )r,   r(   r   r&   r[   r   r   r   rI   rI   rI   rL   Útest_issue_99567  s    &r\  c                  C   sė  t dt} tj}tdddg}t|| tttttt| ttksHt	ttdtttttd| t| tttksxt	ttttt
ttt|tttthttt
h|ks°t	ttttdtttt
|ttdtttttt
|ddksðt	ttttdtttdd|ttdtt|ks&t	t|t|dttd|tt|ttksVt	tttt
tt
ttt
tt
d|t|ttt
tt
kst	ttt
d dtt
tt
d dtt
|t|tt
d tt
ksčt	d S ĐNr   rA   rF   rW   Fr   )r(   r   r   r]   r   r'   r&   r?   r@   r[   r<   r>   r   r   )rŌ   rB   ÚmatrI   rI   rL   Útest_issue_Symbol_inter<  s6    
ĸĸĸĸĸ
ĸ
(ĸ
*ĸr_  c                   C   s   t jd std S )Nr   )r   rZ   r[   rI   rI   rI   rL   Útest_issue_11827R  s    r`  c                  C   s   t d t d d  } tt | tjttt dtdtddksBttt | tddtt dksdttt | tddttt dttdd	tkstd S )
NrF   r   r   rA   TrU   rW   r  r   )	r<   r-   r   r]   r,   r(   r   r[   r   ĐrQ   rI   rI   rL   Útest_issue_10113V  s    ."rb  c                  C   s<   t tdd  tddd} tttjt| | gks8td S )Nc                   S   s   t ttjttS rH   )rĄ   r'   r   r]   r&   r<   rI   rI   rI   rL   rM   _  rN   z"test_issue_10248.<locals>.<lambda>rŽ   TrC   )	r9   r_   r   rĄ   r'   r   r]   r&   r[   )rŽ   rI   rI   rL   Útest_issue_10248]  s     ĸrc  c                  C   s|   t ddt dd } ttj| ttjtt ddt ddddksFtttj| ttjtt ddt ddddksxtd S r]  )r(   r$   r   rg   r,   r[   rY   r   rI   rI   rL   Útest_issue_9447e  s      ĸ  ĸrd  c                   C   sd   t ddkdkstt ddkdks(tttdd  ttdd  ttdd  ttd	d  d S )
NrF   rW   FTc                   S   s   t ddk S ĐNrF   rW   r   rI   rI   rI   rL   rM   p  rN   z"test_issue_10337.<locals>.<lambda>c                   S   s   t ddkS re  r   rI   rI   rI   rL   rM   q  rN   c                   S   s   t ddkS re  r   rI   rI   rI   rL   rM   r  rN   c                   S   s   t ddkS re  r   rI   rI   rI   rL   rM   s  rN   )r&   r[   r9   r_   rI   rI   rI   rL   Útest_issue_10337m  s    rf  c                  C   sō   t tdtddtjtjtjtjtjg} tdd}| D ]}||ks6t	q6t
ddd}t
dd	d
}|d t||d kszt	|t||d kst	tddttddtddksīt	tt t tĄtjksÐt	tt t t Ątjksît	d S )NrA   rF   r   r   r<   TrC   ÚnrFrv   r   )ri   r&   r(   r   rÛ   ru   rĖ   ÚNaNrË   r[   r   r   r   r   )ÚbadÚintervalrŌ   r<   rg  rI   rI   rL   Útest_issue_10326v  s&    ø

$rk  c                  C   sb   t j} tddd}t|t}t j}| | ||  ks6t| | ||  ksJt|| || ks^td S )Nrq   TrC   )r   rg   r   r(   r   r]   r[   )r  rq   Zinf_intervalÚRrI   rI   rL   Útest_issue_2799  s    
rm  c                   C   sb   t t djt t dddks"tt dtjt dtddks@tt t tjt t tks^td S )Nr   TF)r(   r   rR  r[   rI   rI   rI   rL   Útest_issue_9706  s    "rn  c                  C   sĶ   t tt ttt} t tt ttt }tt ttt | ksJttttt t | ksfttt ttt  |ksttt tt t |ksĒtd S rH   )r,   r(   r   r&   r[   )Zreals_plus_infinityZreals_plus_negativeinfinityrI   rI   rL   Útest_issue_8257  s    ro  c                   C   s,   t jt j tkstt jt j tks(td S rH   )r   rX   ri   r[   r]   rI   rI   rI   rL   Útest_issue_10931Ļ  s    rp  c                  C   sf   t tt ttt dd} t tt tj| ks6tt tjttdd} t tttj| ksbtd S rŠ   )r'   r(   r   r&   r<   r   r]   r[   )ZsolnrI   rI   rL   Útest_issue_11174­  s    rq  c                
   C   sh   t ttttt d d td  tj dĄtdt ttttt d d td  tjksdt	d S )NrF   rA   r   )
r"   r   r@   r   r   r   rX   r   r!   r[   rI   rI   rI   rL   Útest_issue_18505ĩ  s    ..ĸrr  c                	   C   sÞ  t tt tttttks"tt  tt ttdtgĄttksJtt  tt tttgĄttksptt  tddtttddtgĄt  tddttddttgĄ  krôt tddttddtt  krôt tddttdttksún ttdt t td@ tdtdt t @   krTt tdt t tdddksZn ttdtt@ tttd@   krt tdttddksĒn ttthttth@ t tthttthddksÚtd S )Nr   rF   rW   rA   Fr   )r'   r&   r   r<   r[   Z_handle_finite_setsr=   rI   rI   rI   rL   Útest_finite_set_intersectionš  s*    "(&ĸþýĸ
þ&ĸĸrs  c                      sę   t dt dg tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt t   ksttt t   ksŽttdhdht ddksČttddhdd
ht dksætd S )NrA   rF   c                      s   t  S rH   r   rI   Đrž   rI   rL   rM   Õ  rN   z5test_union_intersection_constructor.<locals>.<lambda>c                      s   t  S rH   Đr'   rI   rt  rI   rL   rM   Ö  rN   c                      s   t t S rH   )r,   ÚtuplerI   rt  rI   rL   rM   Ũ  rN   c                      s   t t S rH   )r'   rv  rI   rt  rI   rL   rM   Ø  rN   c                      s   t dd  D S )Nc                 s   s   | ]
}|V  qd S rH   rI   rŅ   rI   rI   rL   rÃ   Ų  s     úHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r   rI   rt  rI   rL   rM   Ų  rN   c                      s   t dd  D S )Nc                 s   s   | ]
}|V  qd S rH   rI   rŅ   rI   rI   rL   rÃ   Ú  s     rw  ru  rI   rt  rI   rL   rM   Ú  rN   rW   )r&   r9   Ú	Exceptionr,   rØ   r[   r'   rI   rI   rt  rL   Ú#test_union_intersection_constructorŌ  s    ry  c                   C   s(   t tt t dĄt dtĄks$td S rt   )r   r,   r(   rĻ   r   r[   rI   rI   rI   rL   Útest_Union_containså  s     
ĸrz  c                   C   s*   t tttftj tjd Ądks&td S )NrF   T)r-   r<   r   r]   r   r[   rI   rI   rI   rL   Útest_issue_16878bę  s    r{  c                  C   s6  t tdddtdddtddd tĄtdddtddd ksFtt tddtdd tĄttddtd tddtd kstt tddtdd tĄttddtd tddtd ksŌtt tddtjtj tĄtddtd kstt tdd tĄtddtd ks2tt tjtddtj tĄtddtd ksftt tt t tĄtt ttd kstt tj tĄtjksētt   tĄtjksĘtt	t
dd	  td
} td}td}t t| t|| tĄt| td t||td  ks2td S )NrA   rF   rW   r   r   r   rĨ   c                   S   s   t tdS )Nr@   )r%   r   rI   rI   rI   rL   rM   û  rN   z$test_DisjointUnion.<locals>.<lambda>r<   r=   r>   )r%   r&   Zrewriter,   r[   r(   r   ri   r   r9   r_   r   )r<   r=   r>   rI   rI   rL   Útest_DisjointUnionņ  s    FFF4,40r|  c                   C   sN   t tjjdkstt tjtjjdks,tt tjtdddjdksJtd S )NTrA   rF   rW   F)r%   r   ri   rh   r[   r&   rI   rI   rI   rL   Útest_DisjointUnion_is_empty  s    r}  c                   C   sv   t tjtjtjjdkstt tjtjjdks4tt t	dddtjt	t
tjdksZtt tjtjjdksrtd S )NTFrA   rF   rW   )r%   r   rX   rY   rf   r   r[   ri   r]   r&   r<   r=   rI   rI   rI   rL   Útest_DisjointUnion_is_iterable  s    &r~  c                   C   s*  dt tdddtdddtdddks,tdt tdddtdddtdddksXtdt tdddtdddtdddkstdt tdddtdddtdddks°tdt tdddtdddtdddksÜtd	t tdddtdddtdddks
td
t tdddtdddtdddks8tdt tdddtdddtdddksftdt tdddtdddtdddkstdt tdddtdddtdddksÂtdt tdksØtdt tdddtdddtdddksttdft tttttjttks.ttdft tttttjttksVttdft tttttjttks~ttdft tttttjttksĶtdt tddtddksÆtdt tddtddksætdt tddtddkstdt tddtddks&td S )NrÄ   r   rA   rF   )r   rA   )r   rF   rĮ   rG   rE   )rF   r   ĐrF   rA   rŨ   )r   rA   rF   )r   rÆ   rÆ   )r   r   )rÆ   r   )rÆ   rA   )rĘ   r   )rĘ   rA   )	r%   r&   r[   r<   r=   r>   r   ri   r(   rI   rI   rI   rL   Útest_DisjointUnion_contains  s(    ,,,,,......((((   r  c                     s>  t tddddtttt} t|  tdftdftdfg}dddd	g}t }||ksZt| |Ą t }||ksxt| |Ą t }||kst| |Ą t }||ksīt| |Ą t }||ksŌt| |Ą t }||ksðt| |Ą t }||kst| |Ą t	t
 fd
d t	tdd  d S )NrW   r   rõ   r  rA   )rW   r   )r   r   )rõ   r   )r  r   c                      s   t  S rH   )ÚnextrI   ĐÚitrI   rL   rM   =  rN   z)test_DisjointUnion_iter.<locals>.<lambda>c                   S   s   t ttddtjS rw   )Úiterr%   r(   r   ri   rI   rI   rI   rL   rM   ?  rN   )r%   r&   r<   r=   r>   r  r  r[   Úremover9   ÚStopIterationr`   )rą   ZL1ZL2ZnxtrI   r  rL   Útest_DisjointUnion_iter#  s6    






r  c                   C   sb   t ttddddttttdks(tt ttjtjtttttjdksPtt	t
dd  d S )NrW   r   rõ   r  c                   S   s   t ttddtjS rw   )r-  r%   r(   r   ri   rI   rI   rI   rL   rM   D  rN   z(test_DisjointUnion_len.<locals>.<lambda>)r-  r%   r&   r<   r=   r>   r[   r   ri   r9   r`   rI   rI   rI   rL   Útest_DisjointUnion_lenA  s    ((r  c                  C   sz   t ttddgttddg} tt}tt||}| j|ksFtt t	ddttddgjttt|ksvtd S ĐNrA   rF   )
r)   r&   r   r   r   r.   r   Úkindr[   r(   )r   ÚmkÚkrI   rI   rL   Útest_SetKind_ProductSetF  s
    "r  c                   C   s   t ddjttkstd S r  )r(   r  r.   r   r[   rI   rI   rI   rL   Útest_SetKind_IntervalM  s    r  c                   C   s(   t jjttksttjt ks$td S rH   )r   rg   r  r.   r   r[   ri   rI   rI   rI   rL   Ú"test_SetKind_EmptySet_UniversalSetP  s    r  c                   C   s<   t dtddgjttks tt ddjttks8td S r  )r&   r   r  r.   r   r[   r   rI   rI   rI   rL   Útest_SetKind_FiniteSetT  s     r  c                   C   sR   t ttddgtddjttks*tt tddtddjttksNtd S )NrA   rF   rõ   )	r,   r&   r   r(   r  r.   r   r[   r   rI   rI   rI   rL   Útest_SetKind_UnionsX  s    *r  c                  C   s2   t ddd} tdd}t| |jttks.td S )NrA   rF   rW   r   r   )r&   r(   r%   r  r.   r   r[   râ   rI   rI   rL   Útest_SetKind_DisjointUnion\  s    
r  c                  C   s6  dd } | dht jttks"t| tddt jttks@t| dhtjjttks\t| tddtddt	djttkstdd }|dhtjjttksŠt|dht jt ksÂtdd }|tjddddhjttksėt|ddd	ddht jttkst|t ddd	ddhjt ks2td S )
Nc                  W   s   t | ddiS ĐNr    Fr   ĐÚargsrI   rI   rL   rM   b  rN   z-test_SetKind_evaluate_False.<locals>.<lambda>rA   rF   r   r   c                  W   s   t | ddiS r  ru  r  rI   rI   rL   rM   h  rN   c                  W   s   t | ddiS r  )r$   r  rI   rI   rL   rM   k  rN   rW   )
ri   r  r.   r   r[   r(   r   rg   r   r&   )r  r
   r­   rI   rI   rL   Útest_SetKind_evaluate_Falsea  s     ĸĸ"$r  c                  C   sn   t tttd tdd} | td jttks4t| tdd jttksPt| td jttksjtd S )NrF   rA   r   rW   é   é   )	r"   r   r@   r(   r&   r  r.   r   r[   ra  rI   rI   rL   Útest_SetKind_ImageSet_Specialp  s    r  c                  C   sÆ   t t ddt d} d| ks td| ks,ttdt ddr@tt d| ksPtt dd}|| ksft|  | Ąstt| | Ąrtd|kstt t ddt ddd}| |Ąsīt|  |ĄsÂtd S )NrA   rF   r   )r&   r[   r1   rü   )r°   rŽ   r­   rI   rI   rL   Útest_issue_20089v  s    
r  c                  C   sĶ   t dd} t| | }t dddd}| |Ądks4tt d}| |ĄdksNtt|| Ą tjksftt| | Ą tjks~ttdht	h Ą tdht	hksĒtd S )	NrA   rF   rG   rE   r  rŨ   TF)
r&   r)   r   r[   r1   Úsimplifyr   r   r   r<   )rq   rĩ   rÞ   ÚdrI   rI   rL   Útest_issue_19378  s    

r  c                  C   sd   t d} ttt| tdts$tttt| tddtsBttttdtd| ts`td S )Nr@   rũ   rA   )r   r|   r'   r#   r[   r(   rý   rI   rI   rL   Útest_intersection_symbolic  s    r  c                  C   sz   t dddd} ttd| tdddttd| tdddksBtttd| tdddttd| tdddksvtd S )	Nr@   T)rS   rs   r   r   iô  r   é   )r   r'   r#   r[   r(   rý   rI   rI   rL   Ú"test_intersection_symbolic_failing  s     
ĸ
 
ĸr   c                  C   s,   t d } t|  dĄttddks(td S )Ng-DTû!	@rF   z3.23108914886517e-15)r   r&   ró   r	   r[   rP   rI   rI   rL   Útest_issue_20379Ą  s    rĄ  c                  C   s4   t dtdd tdd  } |  Ą dhks0td S r  )r&   r   r   r  r[   r   rI   rI   rL   Útest_finiteset_simplifyĶ  s    rĒ  N)ĮZsympy.concrete.summationsr   Zsympy.core.addr   Zsympy.core.containersr   Zsympy.core.functionr   Zsympy.core.kindr   r   Zsympy.core.numbersr	   r
   r   r   r   r   r   Zsympy.core.powerr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z(sympy.functions.elementary.miscellaneousr   r   r   Z$sympy.functions.elementary.piecewiser   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.logic.boolalgr   r   Zsympy.matrices.commonr   Zsympy.matrices.denser   Zsympy.polys.rootoftoolsr    Zsympy.sets.containsr!   Zsympy.sets.fancysetsr"   r#   Zsympy.sets.setsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Zmpmathr/   Zsympy.core.exprr0   Zsympy.core.relationalr1   r2   r3   r4   r5   Zsympy.logicr6   r7   r8   Zsympy.testing.pytestr9   r:   r;   r  r<   r=   r>   r?   r@   ri   re   rl   rn   rp   r   r   r   r   rĢ   rĪ   rĐ   rģ   rū   rÏ   rÔ   rÝ   rß   rā   rã   rë   rė   rí   rî   rð   rô   rû   rþ   r   r  r  r  r  r  r  r  r  r  r  r   r"  r$  r%  r&  r(  r)  r/  r7  r8  r9  r:  r;  r?  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rN  rP  rS  rT  rU  rV  rW  rY  rZ  r[  r\  r_  r`  rb  rc  rd  rf  rk  rm  rn  ro  rp  rq  rr  rs  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rĄ  rĒ  rI   rI   rI   rL   Ú<module>   s  $4'$	L1%1@#	L	1;
	"'

		

