U
    L?hĄ ć                   @   s  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lQmRZR d dlSmTZTmUZUmVZVmWZWmXZX ejYZYdd ZZdd Z[d d! Z\d"d# Z]d$d% Z^d&d' Z_d(d) Z`d*d+ Zad,d- Zbd.d/ Zcd0d1 Zdd2d3 Zed4d5 Zfd6d7 Zgd8d9 Zhd:d; Zid<d= Zjd>d? Zkd@dA ZldBdC ZmdDdE ZndFdG ZodHdI ZpdJdK ZqdLdM ZrdNdO ZsdPdQ ZtdRdS ZudTdU ZvdVdW ZwdXdY ZxdZd[ Zyd\d] Zzd^d_ Z{d`da Z|dbdc Z}ddde Z~dfdg Zdhdi Zdjdk Zdldm Zdndo ZeOdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ 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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ü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)Ścartes)Ś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©rB   é   F©rB   rB   c                      s
   t t S ©N)r-   r=   © ©ŚintsrJ   śL/var/www/html/venv/lib/python3.8/site-packages/sympy/sets/tests/test_sets.pyŚ<lambda>0   ó    ztest_imageset.<locals>.<lambda>c                      s   t ttt S rI   )r-   r=   r>   r?   rJ   rK   rJ   rM   rN   1   rO   c                   S   s   t tttttS rI   )r-   r   r=   r   r>   rJ   rJ   rJ   rM   rN   2   rO   c                      s   t ttt  S rI   )r-   r   r=   rJ   rK   rJ   rM   rN   4   rO   c                 S   s   t | S rI   ©r   ©r=   rJ   rJ   rM   Śf6   s    ztest_imageset.<locals>.fc                 S   s   t | S rI   rP   rQ   rJ   rJ   rM   rN   9   rO   r=   ©Śintegerc                    s   |   S rI   rJ   rQ   )ŚclashrJ   rM   rN   ?   rO   éž’’’)zx0 + xzx + x0zx1, x2c                 S   s
   t | |S rI   r   ©r=   r>   rJ   rJ   rM   rN   B   s    rG   é   )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)rC   rR   Śx1Śx2rJ   )rU   rL   rM   Śtest_imageset!   sP    $   $$ $(’
 ’ ’žrf   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   rZ   r[   rY   Ś	Rationalsr^   ŚUniversalSetŚis_emptyr\   ŚEmptySet©ŚsrJ   rJ   rM   Śtest_is_emptyH   s
    ’rm   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 )NFTrB   rG   r   rX   éū’’’)r   rZ   r[   rY   rg   r^   rh   Zis_finite_setr\   rj   r&   r(   r=   r>   r)   r,   r'   r$   r%   rk   rJ   rJ   rM   Śtest_is_finitesetP   s.    ’    "   "ro   c                	   C   s:   t   tjj W 5 Q R X t   tdj W 5 Q R X d S ©NrB   )r;   r   rj   Zis_EmptySetr&   rJ   rJ   rJ   rM   Śtest_deprecated_is_EmptySetk   s    rq   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   FTrB   rX   Śa©Śpositivec                   S   s   t dtjS ©Nr   )r(   r   ŚImaginaryUnitrJ   rJ   rJ   rM   rN      rO   z)test_interval_arguments.<locals>.<lambda>c                   S   s   t dtdddS )Nr   r?   F©Zextended_real)r(   r   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t tttj S rI   )r(   r=   r   rv   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t ddtttS ©Nr   rB   ©r(   r6   r=   r>   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t dddtttS ©Nr   rB   Fry   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t ddttttS rx   )r(   r?   r6   r=   r>   rJ   rJ   rJ   rM   rN      rO   )r(   r   r\   Ś
right_openr   Ś	left_openr   rj   r=   Ś
isinstancer&   r   Śmeasurer   r9   ra   ŚNotImplementedError)ŚerJ   rJ   rM   Śtest_interval_argumentss   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 )Nrr   TrD   r   rX   éż’’’rB   )
r   r,   r(   Śsupr   r\   Śinfr   Ścontainsr5   ©rr   rJ   rJ   rM   Ś!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, yrC   TrD   Śprs   rA   )ŚnegativeŚnn)ZnonnegativerB   rG   FrX   r   ©r|   ©r{   )r   r   r(   ri   r\   r   )r=   r>   rC   r   rA   r   rJ   rJ   rM   Ś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 )NrB   rG   rX   Té   Fr   c                 S   s   g | ]}t d | qS )ē      š?©r&   )Ś.0rA   rJ   rJ   rM   Ś
<listcomp>Ó   s     ztest_union.<locals>.<listcomp>é
   r=   ŚhamŚeggsr>   r?   é   c                   S   s   t dddS )NrB   rG   rX   ©r,   rJ   rJ   rJ   rM   rN   ü   rO   ztest_union.<locals>.<lambda>)r,   r(   r\   r   rj   Śranger   r&   r0   Śunionr*   Ś	intersectŚ	is_subsetr9   r`   Śis_iterabler   r
   r^   rY   )r=   r>   r?   ŚXŚYZXandYrJ   rJ   rM   Ś
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 )	NrX   r   r   F©Śevaluater   rB   rG   )r,   r#   Ślistr\   )ŚurJ   rJ   rM   Ś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 )NrB   F)r(   r=   r>   r&   ri   r\   rJ   rJ   rJ   rM   Ś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 )NrB   rX   rG   TFr   r   r    r   r   r   é’’’’)r(   r\   r&   r,   r   r^   r
   ŚRopenŚLopenr=   r>   r$   Śopenr   rj   rZ   rJ   rJ   rJ   rM   Ś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 )NrB   rX   r   rG   Fr    Tc                      s   t t dd S ©NFr    )r&   r$   rJ   ©ŚAŚCrJ   rM   rN   >  rO   z!test_Complement.<locals>.<lambda>r   r   r¦   éö’’’r   za:czd:f)r&   r(   r$   r   r\   r9   r`   r,   r   r^   rZ   rY   rh   rj   Ś
complementr   r   r'   r=   r>   r   r0   r)   )ŚBŚDŚA2ZB3rJ   r¬   rM   Śtest_Complement2  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 rI   rJ   ©rr   ŚbrJ   rJ   rM   rN   f  rO   z-test_set_operations_nonsets.<locals>.<lambda>c                 S   s   | | S rI   rJ   rµ   rJ   rJ   rM   rN   g  rO   c                 S   s   | | S rI   rJ   rµ   rJ   rJ   rM   rN   h  rO   c                 S   s   | | S rI   rJ   rµ   rJ   rJ   rM   rN   i  rO   c                 S   s   | | S rI   rJ   rµ   rJ   rJ   rM   rN   j  rO   c                 S   s   | |B S rI   rJ   rµ   rJ   rJ   rM   rN   k  rO   c                 S   s   | |@ S rI   rJ   rµ   rJ   rJ   rM   rN   l  rO   c                 S   s   | |A S rI   rJ   rµ   rJ   rJ   rM   rN   m  rO   rB   rG   r   c                      s
    S rI   rJ   rJ   ©ŚniŚopŚsirJ   rM   rN     rO   c                      s
    S rI   rJ   rJ   r·   rJ   rM   rN     rO   c                      s
    t   S rI   )ŚobjectrJ   ©rŗ   rJ   rM   rN     rO   c                      s
    dh S rp   rJ   rJ   r¼   rJ   rM   rN     rO   N)r&   r=   r>   r(   r,   r'   r$   r)   r   rj   r9   r`   )ZopsZSxZSyŚsetsZnumsrJ   r·   rM   Śtest_set_operations_nonsetsc  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 )NrB   rG   r   TFrX   r   r    c                 3   s   | ]}| kV  qd S rI   rJ   ©r   Śpt©ŚsquarerJ   rM   Ś	<genexpr>²  s     z"test_complement.<locals>.<genexpr>)©r   r   ©ē      ą?rĘ   ©rB   r   rH   c                 3   s   | ]}| kV  qd S rI   rJ   ræ   ©Ś	notsquarerJ   rM   rĆ   ³  s    c                 3   s   | ]}| kV  qd S rI   rJ   ræ   rĮ   rJ   rM   rĆ   µ  s     ))r¦   r   )ē      ų?rĘ   )r   r   c                 3   s   | ]}| kV  qd S rI   rJ   ræ   rČ   rJ   rM   rĆ   ¶  s     )r$   r\   r(   r°   r   r^   r,   r   rh   rj   r&   ŚNegativeInfinityŚInfinityr=   ŚallŚanyrJ   rJ   )rÉ   rĀ   rM   Ś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tdtd d }tdtd
 }t|d t|d”t|dksttd| td|”td|ks¬td S )Nc                 s   s   | ]}t j |”|kV  qd S rI   )r   rY   Śintersection©r   ŚirJ   rJ   rM   rĆ   ŗ  s     z"test_intersect1.<locals>.<genexpr>c                 s   s   | ]}|  tj”|kV  qd S rI   )rŠ   r   rY   rŃ   rJ   rJ   rM   rĆ   ¼  s     r=   r   rG   rB   TFrX   r   r   r   r   é   r    zm, nrD   )rĶ   r   rZ   r[   r\   rŠ   r   r(   r   r,   r&   rj   r'   r>   r   r^   r   )rl   r=   r@   rA   rr   r¶   rJ   rJ   rM   Śtest_intersect1¹  s    
’
’$
’’’
 ’
($’
$&$ ’
 ’
$’
’
$$’
’
’
’
’
’
’
&$ ’
&rŌ   c                  C   s"  t t t ft t jt jft t jt jft t jt jft jt jt jft jt jt jft jt jt jft jt jt jft jt jt jft jt jt jfg
} dd }| D ]\}}}||f||ffD ]p\}}tddgddgddgddgD ]H\}}}	}
|||	}|||
}||||||	|
}| |”|ksŠtqŠqŖqd S )Nc                 S   s   t |tr|S | S rI   )r}   Śfloat)Śa1Śa2rJ   rJ   rM   rN     rO   z2test_intersection_interval_float.<locals>.<lambda>rG   g       @rX   g      @)r(   r©   rØ   r§   r<   r   r\   )ZtypsZas_floatŚt1Śt2Zt3Zt1iZt2irÖ   r×   Śb1Śb2ZI1ZI2ZI3rJ   rJ   rM   Ś test_intersection_interval_float’  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 )NrB   rG   rX   r   Fr    r=   TrD   r   rÓ   c                      s   d kS ©NrG   rJ   rJ   ©rŅ   rJ   rM   rN   %  rO   z#test_intersection.<locals>.<lambda>©rG   rG   )rG   rG   rG   c                      s   t  S rI   )r¢   rJ   rŽ   rJ   rM   rN   0  rO   )r'   r&   r(   r   r\   Śsetr   r   r9   r`   rj   r   rY   rZ   r^   Z_argsetŚ	frozensetŚ	ComplexesŚComplexInfinityrh   )r=   Ślinerr   rJ   rŽ   rM   Ś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 )NrA   r   rB   rG   rX   r   )	r   r   r^   r(   r   r&   r'   r\   rj   )rA   rr   r¶   ŚcrJ   rJ   rM   Ś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   rG   rB   FrX   r   T)r(   Zis_disjointr\   rJ   rJ   rJ   rM   Śtest_is_disjointI  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 )NrB   rG   rX   rÓ   )r&   r)   Ś__len__r\   r   ©r­   r±   rJ   rJ   rM   Śtest_ProductSet__len__N  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j	tttj	@ ksĢtttttf|sāttd|tjksųtd S )NrB   rG   rX   )rB   rF   ©rB   rG   rX   )rF   rX   )rB   )rG   rX   rJ   r   c                   S   s
   t jd S )Nr¦   )r   r^   rJ   rJ   rJ   rM   rN     rO   z!test_ProductSet.<locals>.<lambda>c                 s   s   | ]}t |V  qd S rI   r   ©r   rl   rJ   rJ   rM   rĆ     s     z"test_ProductSet.<locals>.<genexpr>c                   S   s   t d S rI   )r)   rJ   rJ   rJ   rM   rN     rO   r   c                      s
      t”S rI   ©Śas_relationalr=   rJ   ©ZS3rJ   rM   rN     rO   c                      s      td”S rp   rī   rJ   rš   rJ   rM   rN     rO   c                   S   s   t tdd tt”S rx   )r)   r(   rļ   r=   r>   rJ   rJ   rJ   rM   rN     rO   Fr    )r)   r   r^   r\   Śflattenr
   r&   rj   r   rY   r   r9   ra   r;   r`   rļ   r=   r>   r6   r7   r1   r   r   r   r!   Śsubsr0   )rø   ZRnZS1ZS2rd   re   Zx3ZZ2rJ   rš   rM   Śtest_ProductSetW  sz     (,* 



’
,ž",ró   c                   C   s0   t ttddstt tttdds,td S rx   )r0   r)   r(   r\   rJ   rJ   rJ   rM   Ś(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 )NFrB   )r)   r   rY   r^   ri   r\   r(   r=   rJ   rJ   rJ   rM   Ś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 )Nrr   TrD   r   rG   )r   r(   rņ   r\   r   rj   r   rJ   rJ   rM   Ś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   rB   TF)r(   Zto_mpir/   r\   ŚtyperJ   rJ   rJ   rM   Ś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   rG   z2.0)	r(   r   ZHalfŚevalfr	   r\   r=   r   r&   rJ   rJ   rJ   rM   Ś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 )Nrr   TrD   rB   rX   rG   r   r   r   rÓ   é   rn   r   é   éd   éÆ   éK   é   )r   r(   r~   r\   r,   r&   r   r   rj   r   r   )rr   rĀ   ZoffsetsquareZbandrJ   rJ   rM   Ś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   rB   rG   TrX   Fr   r   rÓ   c                   S   s   t j d”S rp   )r   rj   r   rJ   rJ   rJ   rM   rN   ō  rO   z test_is_subset.<locals>.<lambda>r   rV   rA   rS   r   rÆ   r   r’   r   )r(   r   r\   r&   r,   r   rj   r9   ra   ŚissubsetrZ   rY   r[   r=   r>   rņ   r   r   r#   r-   r   r^   ©rA   rJ   rJ   rM   Ś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   rB   rG   TrX   Fc                   S   s   t dd d”S rx   )r(   Śis_proper_subsetrJ   rJ   rJ   rM   rN     rO   z'test_is_proper_subset.<locals>.<lambda>)r(   r  r\   r   rj   r&   r9   ra   rJ   rJ   rJ   rM   Ś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   rB   rG   FrX   r   r   Tc                   S   s   t j d”S rp   )r   rj   Śis_supersetrJ   rJ   rJ   rM   rN   +  rO   z"test_is_superset.<locals>.<lambda>)
r(   r	  r\   r&   r,   r   rj   r9   ra   Ś
issupersetrJ   rJ   rJ   rM   Ś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   rB   rG   FrX   Tc                   S   s   t dd d”S rx   )r(   Śis_proper_supersetrJ   rJ   rJ   rM   rN   7  rO   z)test_is_proper_superset.<locals>.<lambda>)r(   r  r\   r&   r   rj   r9   ra   rJ   rJ   rJ   rM   Śtest_is_proper_superset2  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
”ttt
ddksltttd	d
  tt
th 	t
h”tt
tht
hddksØttt
th tt
” 	t
h”tjksŠttt
th tt
d ” 	t
h”tjksütddlm m}  t|    ”t|   ks.tt|   ”t|  ksLtt  d”t dksjt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 sVttt ddt dd d”tjks~ttt ddt dd d”tjks¦t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s`t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   rG   rB   rX   TFr=   r    c                   S   s   t ttkS rI   )r=   r&   r>   rJ   rJ   rJ   rM   rN   J  rO   ztest_contains.<locals>.<lambda>rµ   c                      s   dt  kS rp   r   rJ   r   rJ   rM   rN   T  rO   é	   r   r   gńæc                 3   s   | ]}| kV  qd S rI   rJ   ©r   Śitem©ŚfsetrJ   rM   rĆ   _  s     z test_contains.<locals>.<genexpr>c                 3   s   | ]}   |”tjkV  qd S rI   )r   r   r   r  r  rJ   rM   rĆ   `  s     r   rÓ   ) r(   r   r   r   r\   r   r&   r   r>   r_   r=   r1   r9   r`   rņ   Ś	sympy.abcrr   r¶   r   r   rj   rĢ   rĶ   r,   r    r^   r7   r6   ZOner'   rā   rć   )r¶   Zrad1Zrad2Śs1Śs2ŚitemsrJ   )rr   r  rM   Ś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   rB   c                      s    kS rI   rJ   rJ   ©r   r=   rJ   rM   rN   y  rO   z(test_interval_symbolic.<locals>.<lambda>Trę   FrD   r   rw   )r   r(   r   r6   r   ŚZeror\   r9   r`   r   rĖ   rĢ   )rę   rJ   r  rM   Śtest_interval_symbolicu  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   rB   rG   rX   c                      s    kS rI   rJ   rJ   )Śi3r=   rJ   rM   rN     rO   z%test_union_contains.<locals>.<lambda>g      ąærĘ   rŹ   g      @g      @Tr   r¦   r   rÓ   c                 3   s   | ]}| kV  qd S rI   rJ   ©r   Śel©ŚUrJ   rM   rĆ     s     z&test_union_contains.<locals>.<genexpr>r   c                 3   s   | ]}| kV  qd S rI   rJ   r  r  rJ   rM   rĆ     s     )rG   r   r   )r   r(   r,   rļ   r7   r6   r   r  r\   r9   r`   r   rņ   r   r   r   r&   rĶ   )Śi1Śi2r   rJ   )r  r  r=   rM   Śtest_union_contains  s     


:
&$r"  c                   C   s(   t ddjdkstt jdks$td S rz   )r(   Z	is_numberr\   r*   rJ   rJ   rJ   rM   Śtest_is_number  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 )NrX   r   FTz-inf)r(   Zis_left_unboundedr\   r   r	   rJ   rJ   rJ   rM   Śtest_Interval_is_left_unbounded  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 )NrX   r   FTz+inf)r(   Zis_right_unboundedr\   r   r	   rJ   rJ   rJ   rM   Ś 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¦   rG   FTr   rV   r   rD   r>   )r   r(   rļ   r6   r3   r\   r4   r   rW   rJ   rJ   rM   Ś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>   rB   rG   rn   )r   r&   rļ   r7   r1   r\   rW   rJ   rJ   rM   Ś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   rB   rG   TrX   r   )r   r(   r&   rļ   r7   r6   r3   r1   r\   r4   Śas_setr   r2   r§   rØ   rQ   rJ   rJ   rM   Ś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   rB   rG   Fr    )	r   r'   r(   r&   rļ   r6   r3   r1   r\   rQ   rJ   rJ   rM   Ś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=   rc   rJ   rJ   rM   Ś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,  rJ   rJ   rM   Ś"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,  rJ   rJ   rM   Ś&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   rj   rļ   r   r   r\   r   rh   ŚboundaryrJ   rJ   rJ   rM   Śtest_EmptySetó  s    r1  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=   rB   rG   rX   r   r   rģ   rF   rn   r   F)r   r&   r,   r   r   r\   r   r   r   r   r   rj   )r=   r­   r±   ZAorBZAandBrJ   rJ   rM   Śtest_finite_basicł  s2    

"r2  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   rB   rG   rX   r   r   rÓ   rÄ   )rĘ   rĘ   rĘ   )rÅ   rĘ   Trn   rÆ   r   gÉ?rĘ   é   c                      s   t  tdd S )Nr   rG   )Ślenr(   rJ   ©ZcoinrJ   rM   rN   ?  rO   z$test_product_basic.<locals>.<lambda>)r(   r&   r\   rń   r   rą   r   r°   r   r,   r6  r   rj   r9   r`   )r3  r4  Z	unit_lineZd6Zd4rĀ   ZHHZTTrJ   r7  rM   Śtest_product_basic  sD    

.’
’’ż$$$r8  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=   TrD   r   r   r   r  rB   rG   é   éü’’’r’   ŚHamŚEggsc                 s   s   | ]}|  tj”V  qd S rI   ©r   r   r^   rķ   rJ   rJ   rM   rĆ   L  s     ztest_real.<locals>.<genexpr>c                 3   s2   | ]*} fD ]}||   tj”V  qqd S rI   r=  )r   rr   r¶   )r­   r±   r®   r
   ŚJrJ   rM   rĆ   N  s       c                 3   s   | ]}|    tj”V  qd S rI   r=  )r   rr   )r²   rJ   rM   rĆ   O  s     )
r   r(   r&   r   ŚPirĶ   r\   r   r^   rĪ   rQ   rJ   )r­   r±   r®   r²   r
   r>  rM   Ś	test_realB  s    



 ,&r@  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=   TrD   r>   r   rB   rG   r   r;  r<  )r   r(   r&   r   r\   r   r   r   r   rĢ   rĖ   rW   rJ   rJ   rM   Śtest_supinfT  s"    "" "’
’
rA  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=   rG   r   r   )r   rh   r   rļ   r   r\   r   r(   r   r~   rĢ   r0  rj   r   ©r  r=   rJ   rJ   rM   Śtest_universalsetg  s    rC  c                  C   s8   t dd} tddd}t| |  | | | |  ks4td S )Nr   rG   rB   )r(   r&   r,   r\   )rä   ZpointsrJ   rJ   rM   Ś test_Union_of_ProductSets_sharess  s    
rD  c                  C   s<   t ddjt ksttddd} t d| j| hks8td S )Nr   rB   r=   TrD   )r(   Zfree_symbolsrą   r\   r   rQ   rJ   rJ   rM   Śtest_Interval_free_symbolsy  s    rE  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=   TrD   rr   rG   rV   rB   r:  Fr   r   rX   é   éN   éZ   iŻ’’’c                 S   s   d|  S rŻ   rJ   rQ   rJ   rJ   rM   rN     rO   z%test_image_interval.<locals>.<lambda>)
r   r-   r(   r\   r   r   r   r"   r   r   )r=   rr   rJ   rJ   rM   Śtest_image_interval  sB    $’’$’’
*8’
$’(’
$’
’rI  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¦   rB   rG   r   rX   Tr   )rG   Trn   é   )	r   r=   r-   r(   r,   r   r   r\   r&   )rR   Śf1rJ   rJ   rM   Śtest_image_piecewise  s    ,2rL  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=   TrD   r>   rG   rV   r   r   )r   r-   r(   r   r   r   r\   rW   rJ   rJ   rM   Śtest_image_Intersection¦  s
     0’rM  c                  C   s8   t ddd} t| d|  tdddtdddks4td S )	Nr=   TrD   rG   rB   rX   r   rÓ   )r   r-   r&   r\   rQ   rJ   rJ   rM   Śtest_image_FiniteSet®  s    rN  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=   TrD   rG   rV   r   rB   rX   r   r  )r   r-   r(   r&   r\   rQ   rJ   rJ   rM   Śtest_image_Union³  s     ’rO  c                  C   s,   t ddd} t| d|  tjtjks(td S )Nr=   TrD   rG   )r   r-   r   rj   r\   rQ   rJ   rJ   rM   Śtest_image_EmptySet¹  s    rP  c                   C   s.   t tjksttt t t ”tjks*td S rI   )r
   r   r^   r\   r(   r   r   r   rJ   rJ   rJ   rM   Śtest_issue_5724_7680¾  s    rQ  c                   C   s4   t djt dksttdd ttfD s0td S )NrB   c                 s   s6   | ].}t tfD ] }td d||jtd dkV  qqdS )r   rB   N)r   r   r(   r0  r&   )r   r|   r{   rJ   rJ   rM   rĆ   Å  s    
 ’z test_boundary.<locals>.<genexpr>)r&   r0  r\   rĶ   r   r   rJ   rJ   rJ   rM   Śtest_boundaryĆ  s    ’rR  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   rB   rG   rX   FTr   r   rž   r    )r(   r0  r&   r\   r,   rJ   rJ   rJ   rM   Śtest_boundary_UnionÉ  s&    (’
’$’’ ’
žrS  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(   r0  r&   r\   rJ   rJ   rJ   rM   Ś#test_union_boundary_of_joining_setsŁ  s    ’rT  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   rB   TrG   )r(   r0  r&   r\   )Zopen_squareZsecond_squarerJ   rJ   rM   Śtest_boundary_ProductSetą  s    ’
’žż’rU  c                  C   s$   t ddtd } | j| ks td S rx   )r(   r&   r0  r\   )Z
line_in_r2rJ   rJ   rM   Śtest_boundary_ProductSet_lineķ  s    rV  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   rB   FTrG   rX   )r(   Zis_openr\   r&   rJ   rJ   rJ   rM   Śtest_is_openņ  s    rX  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 rW  )r(   Z	is_closedr\   r&   rJ   rJ   rJ   rM   Śtest_is_closedł  s    rY  c                   C   s&   t ddddjt ddddks"td S ©Nr   rB   FT)r(   Śclosurer\   rJ   rJ   rJ   rM   Śtest_closure’  s    r\  c                   C   s&   t ddddjt ddddks"td S rZ  )r(   Zinteriorr\   rJ   rJ   rJ   rM   Śtest_interior  s    r]  c                   C   s   t tdd  d S )Nc                   S   s
   t tjkS rI   )r=   r   r^   rJ   rJ   rJ   rM   rN     rO   z!test_issue_7841.<locals>.<lambda>)r9   r`   rJ   rJ   rJ   rM   Śtest_issue_7841  s    r^  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   rB   rG   FrJ   )r1   r(   r\   r&   r0   r=   r>   rņ   r   r   r   r)   )r  r  r   r!  rJ   rJ   rM   Śtest_Eq  s(    

*,00&&

r_  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   rB   rG   rX   r   r   rÓ   r5  r   Fr    Tc                      s   t t dd S r«   )r&   r+   rJ   r¬   rJ   rM   rN   3  rO   z*test_SymmetricDifference.<locals>.<lambda>)
r&   r(   r+   r   r\   r9   r`   r*   r   r,   )r±   rJ   r¬   rM   Śtest_SymmetricDifference)  s<    
’’’’’
’
^.’’’r`  c                  C   sH   ddl m}  tddd}t| | tj”ttjt| |ksDtd S )Nr   )Ślogrr   TrD   )	Z&sympy.functions.elementary.exponentialra  r   r&   r   r   r^   r'   r\   )ra  rr   rJ   rJ   rM   Śtest_issue_9536A  s    rb  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 )NrA   rG   Fr    rB   rX   T)r   r&   r$   r   r^   r\   r(   r,   )rA   rr   r¶   rJ   rJ   rM   Śtest_issue_9637G  s    
 ("’ rc  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 )NrB   Fr    rG   rX   )r$   r&   r>   r\   r=   rJ   rJ   rJ   rM   Śtest_issue_9808S  s    ,’rd  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 rp   )r,   r(   r   r&   r\   r   r   r   rJ   rJ   rJ   rM   Śtest_issue_9956Z  s    &re  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   rB   rG   rX   Fr    )r(   r   r   r^   r   r'   r&   r@   rA   r\   r=   r?   r   r   )rŅ   rC   ZmatrJ   rJ   rM   Śtest_issue_Symbol_inter_  s6    
’’’’’
’
(’
*’rg  c                   C   s   t jd std S )Nr   )r   r[   r\   rJ   rJ   rJ   rM   Śtest_issue_11827u  s    rh  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 )
NrG   r   r   rB   TrV   rX   r  r   )	r=   r-   r   r^   r,   r(   r   r\   r   ©rR   rJ   rJ   rM   Śtest_issue_10113y  s    ."rj  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 rI   )r¢   r'   r   r^   r&   r=   rJ   rJ   rJ   rM   rN     rO   z"test_issue_10248.<locals>.<lambda>r­   TrD   )	r9   r`   r   r¢   r'   r   r^   r&   r\   )r­   rJ   rJ   rM   Śtest_issue_10248  s     ’rk  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 rf  )r(   r$   r   rh   r,   r\   rZ   r   rJ   rJ   rM   Śtest_issue_9447  s      ’  ’rl  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 )
NrG   rX   FTc                   S   s   t ddk S ©NrG   rX   r   rJ   rJ   rJ   rM   rN     rO   z"test_issue_10337.<locals>.<lambda>c                   S   s   t ddkS rm  r   rJ   rJ   rJ   rM   rN     rO   c                   S   s   t ddkS rm  r   rJ   rJ   rJ   rM   rN     rO   c                   S   s   t ddkS rm  r   rJ   rJ   rJ   rM   rN     rO   )r&   r\   r9   r`   rJ   rJ   rJ   rM   Śtest_issue_10337  s    rn  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 )NrB   rG   r   r   r=   TrD   ŚnrFrw   r   )rj   r&   r(   r   rć   rv   rĢ   ŚNaNrĖ   r\   r   r   r   r   )ŚbadŚintervalrŅ   r=   ro  rJ   rJ   rM   Śtest_issue_10326  s&    ų

$rs  c                  C   sb   t j} tddd}t|t}t j}| | ||  ks6t| | ||  ksJt|| || ks^td S )Nrr   TrD   )r   rh   r   r(   r   r^   r\   )r  rr   Zinf_intervalŚRrJ   rJ   rM   Śtest_issue_2799±  s    
ru  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   r[  r\   rJ   rJ   rJ   rM   Śtest_issue_9706¼  s    "rv  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 rI   )r,   r(   r   r&   r\   )Zreals_plus_infinityZreals_plus_negativeinfinityrJ   rJ   rM   Śtest_issue_8257Ā  s    rw  c                   C   s,   t jt j tkstt jt j tks(td S rI   )r   rY   rj   r\   r^   rJ   rJ   rJ   rM   Śtest_issue_10931Ė  s    rx  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solnrJ   rJ   rM   Śtest_issue_11174Š  s    ry  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 )NrG   rB   r   )
r"   r   rA   r   r   r   rY   r   r!   r\   rJ   rJ   rJ   rM   Śtest_issue_18505Ų  s    ..’rz  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   rG   rX   rB   Fr    )r'   r&   r   r=   r\   Z_handle_finite_setsr>   rJ   rJ   rJ   rM   Śtest_finite_set_intersectionŻ  s*    "(&’žż’
ž&’’r{  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 )NrB   rG   c                      s   t  S rI   r   rJ   ©r½   rJ   rM   rN   ų  rO   z5test_union_intersection_constructor.<locals>.<lambda>c                      s   t  S rI   ©r'   rJ   r|  rJ   rM   rN   ł  rO   c                      s   t t S rI   )r,   ŚtuplerJ   r|  rJ   rM   rN   ś  rO   c                      s   t t S rI   )r'   r~  rJ   r|  rJ   rM   rN   ū  rO   c                      s   t dd  D S )Nc                 s   s   | ]
}|V  qd S rI   rJ   rŃ   rJ   rJ   rM   rĆ   ü  s     śHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r   rJ   r|  rJ   rM   rN   ü  rO   c                      s   t dd  D S )Nc                 s   s   | ]
}|V  qd S rI   rJ   rŃ   rJ   rJ   rM   rĆ   ż  s     r  r}  rJ   r|  rJ   rM   rN   ż  rO   rX   )r&   r9   Ś	Exceptionr,   rą   r\   r'   rJ   rJ   r|  rM   Ś#test_union_intersection_constructorõ  s    r  c                   C   s(   t tt t d”t dt”ks$td S ru   )r   r,   r(   r©   r   r\   rJ   rJ   rJ   rM   Śtest_Union_contains  s     
’r  c                   C   s*   t tttftj tjd ”dks&td S )NrG   T)r-   r=   r   r^   r   r\   rJ   rJ   rJ   rM   Ś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 )NrB   rG   rX   r   r   r   r¦   c                   S   s   t tdS )NrA   )r%   r   rJ   rJ   rJ   rM   rN     rO   z$test_DisjointUnion.<locals>.<lambda>r=   r>   r?   )r%   r&   Zrewriter,   r\   r(   r   rj   r   r9   r`   r   )r=   r>   r?   rJ   rJ   rM   Ś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 )NTrB   rG   rX   F)r%   r   rj   ri   r\   r&   rJ   rJ   rJ   rM   Ś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 )NTFrB   rG   rX   )r%   r   rY   rZ   rg   r   r\   rj   r^   r&   r=   r>   rJ   rJ   rJ   rM   Ś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   rB   rG   )r   rB   )r   rG   rĒ   rH   rF   )rG   r   ©rG   rB   rß   )r   rB   rG   )r   rĘ   rĘ   )r   r   )rĘ   r   )rĘ   rB   )rŹ   r   )rŹ   rB   )	r%   r&   r\   r=   r>   r?   r   rj   r(   rJ   rJ   rJ   rM   Śtest_DisjointUnion_contains0  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 )NrX   r   rż   r  rB   )rX   r   )r   r   )rż   r   )r  r   c                      s   t  S rI   )ŚnextrJ   ©ŚitrJ   rM   rN   `  rO   z)test_DisjointUnion_iter.<locals>.<lambda>c                   S   s   t ttddtjS rx   )Śiterr%   r(   r   rj   rJ   rJ   rJ   rM   rN   b  rO   )r%   r&   r=   r>   r?   r  r  r\   Śremover9   ŚStopIterationra   )r²   ZL1ZL2ZnxtrJ   r  rM   Śtest_DisjointUnion_iterF  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 )NrX   r   rż   r  c                   S   s   t ttddtjS rx   )r6  r%   r(   r   rj   rJ   rJ   rJ   rM   rN   g  rO   z(test_DisjointUnion_len.<locals>.<lambda>)r6  r%   r&   r=   r>   r?   r\   r   rj   r9   ra   rJ   rJ   rJ   rM   Śtest_DisjointUnion_lend  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 ©NrB   rG   )
r)   r&   r   r   r   r.   r   Śkindr\   r(   )r   ŚmkŚkrJ   rJ   rM   Śtest_SetKind_ProductSeti  s
    "r  c                   C   s   t ddjttkstd S r  )r(   r  r.   r   r\   rJ   rJ   rJ   rM   Śtest_SetKind_Intervalp  s    r  c                   C   s(   t jjttksttjt ks$td S rI   )r   rh   r  r.   r   r\   rj   rJ   rJ   rJ   rM   Ś"test_SetKind_EmptySet_UniversalSets  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   rJ   rJ   rJ   rM   Śtest_SetKind_FiniteSetw  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 )NrB   rG   rż   )	r,   r&   r   r(   r  r.   r   r\   r   rJ   rJ   rJ   rM   Śtest_SetKind_Unions{  s    *r  c                  C   s2   t ddd} tdd}t| |jttks.td S )NrB   rG   rX   r   r   )r&   r(   r%   r  r.   r   r\   rź   rJ   rJ   rM   Ś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   ©ŚargsrJ   rJ   rM   rN     rO   z-test_SetKind_evaluate_False.<locals>.<lambda>rB   rG   r   r   c                  W   s   t | ddiS r  r}  r  rJ   rJ   rM   rN     rO   c                  W   s   t | ddiS r  )r$   r  rJ   rJ   rM   rN     rO   rX   )
rj   r  r.   r   r\   r(   r   rh   r   r&   )r  r
   r®   rJ   rJ   rM   Śtest_SetKind_evaluate_False  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 )NrG   rB   r   rX   é   é   )	r"   r   rA   r(   r&   r  r.   r   r\   ri  rJ   rJ   rM   Śtest_SetKind_ImageSet_Special  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 )NrB   rG   r   )r&   r\   r1   r  )r±   r­   r®   rJ   rJ   rM   Śtest_issue_20089  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 )	NrB   rG   rH   rF   r  rß   TF)
r&   r)   r   r\   r1   Śsimplifyr   r   r   r=   )rr   r¶   rę   ŚdrJ   rJ   rM   Ś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 )NrA   r’   rB   )r   r}   r'   r#   r\   r(   r  rJ   rJ   rM   Ś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 )	NrA   T)rT   rt   r   r   iō  r   é   )r   r'   r#   r\   r(   r  rJ   rJ   rM   Ś"test_intersection_symbolic_failing»  s     
’
 
’rØ  c                  C   s,   t d } t|  d”ttddks(td S )Ng-DTū!	@rG   z3.23108914886517e-15)r   r&   rū   r	   r\   rQ   rJ   rJ   rM   Ś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   rJ   rJ   rM   Śtest_finiteset_simplifyÉ  s    rŖ  c                  C   s>   t j} td}| |  t|d ” ”8 } | |  t j ” ”8 } d S )Nr=   rB   )r   rā   r   r   r2   r(  r   rB  rJ   rJ   rM   Śtest_issue_14336Ķ  s    r«  c                  C   sF   t ddd\} }}td| t|d@ }tdd}| |”d ksBtd S )Nzx, y, zTrD   rB   rG   )r   r(   r   r\   )r=   r>   r?   r  r  rJ   rJ   rM   Śtest_issue_9855Ō  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.kindr   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;   Zsympy.utilities.iterablesr<   r  r=   r>   r?   r@   rA   rj   rf   rm   ro   rq   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/  r1  r2  r8  r@  rA  rC  rD  rE  rI  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rX  rY  r\  r]  r^  r_  r`  rb  rc  rd  re  rg  rh  rj  rk  rl  rn  rs  ru  rv  rw  rx  ry  rz  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¬  rJ   rJ   rJ   rM   Ś<module>   s$  $4'$	L1%1F#	L	1;
	"'

		

