U
    «Ģ0ec ć                   @   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   ś>/tmp/pip-unpacked-wheel-_6tpq7m6/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_   )Ś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    

.’
’’ż$$$r0  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   r5  )r   rq   rµ   )r¬   r°   r­   r
   ŚJrI   rL   rÄ   +  s       c                 3   s   | ]}|    tj”V  qd S rH   r5  )r   rq   )r±   rI   rL   rÄ   ,  s     )
r   r(   r&   r   ŚPirĪ   r[   r   r]   rĻ   rP   rI   )r¬   r°   r­   r±   r
   r6  rL   Ś	test_real  s    



 ,&r8  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   r3  r4  )r   r(   r&   r   r[   r   r   r   r   rĶ   rĢ   rV   rI   rI   rL   Śtest_supinf1  s"    "" "’
’
r9  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    r:  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   r2  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rC  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’rD  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    rE  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     ’rF  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    rG  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    rH  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    ’rI  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&    (’
’$’’ ’
žrJ  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    ’rK  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    ’
’žż’rL  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    rM  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    rO  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 rN  )r(   Z	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*  r0  r8  r9  r:  r;  r<  r@  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rO  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;
	"'

		

