a
    {þdc ã                   @   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u s"J tttd t jt ju s>J ttttt jt ju sZJ ttttt jt ju svJ ttttt jt ju sJ tddd} ttttft j 	d| fĄd ksÂJ ttttft j 	dĄdksâJ | | fttttft jv sJ dt
 tttt
 t jv s"J dhtttft jvs>J dtttft jvsXJ ttfdd	 ttfd
d	 ttdd	  dttttfttfv sŪJ ttfdd	 tttttttksäJ dd }t|ttttksJ dd	 }t|tttttks8J ttdtdksRJ tttthksjJ tttfdtft jdtfhksJ tdtd tt fdd	tddjjdv sČJ td\}}tdd	 tddtdd tt||f|| tddtddĄsJ d S )Né   ÚrTĐÚrealĐrA   é   FĐrA   rA   c                      s
   t t S ĐN)r-   r<   Đ ĐÚintsrI   úc/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/sets/tests/test_sets.pyÚ<lambda>/   ó    ztest_imageset.<locals>.<lambda>c                      s   t ttt S rH   )r-   r<   r=   r>   rI   rJ   rI   rL   rM   0   rN   c                   S   s   t tttttS rH   )r-   r   r<   r   r=   rI   rI   rI   rL   rM   1   rN   c                      s   t ttt  S rH   )r-   r   r<   rI   rJ   rI   rL   rM   3   rN   c                 S   s   t | S rH   Đr   Đr<   rI   rI   rL   Úf5   s    ztest_imageset.<locals>.fc                 S   s   t | S rH   rO   rP   rI   rI   rL   rM   8   rN   r<   ĐÚintegerc                    s   |   S rH   rI   rP   )ÚclashrI   rL   rM   >   rN   éþĸĸĸ)zx0 + xzx + x0zx1, x2c                 S   s
   t | |S rH   r   Đr<   r=   rI   rI   rL   rM   A   s    rF   é   )r   ÚIntegersr-   r<   ÚNaturalsÚ	Naturals0Ú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    sL    $   $$ $(ĸ
ĸĸþrd   c                  C   sD   t jt jt jt jt jt jfD ]} | jdu sJ qt jjdu s@J d S )NFT)	r   rY   rZ   rX   Ú	Rationalsr\   ÚUniversalSetÚis_emptyÚEmptySetĐÚsrI   rI   rL   Útest_is_emptyG   s
    ĸrk   c                  C   sZ  t jt jt jt jt jt jfD ]} | jdu sJ qt jjdu s@J t	ddjdu sTJ t
ddjdu shJ t
ttjd u s|J tt	dt	djdu sJ tt	dt
ddjdu sķJ tt	dt
ttjd u sÔJ tt
ddt
ddjdu sôJ tt	dt
ddjdu sJ tt	dt	djdu s2J tt	dt
ttjd u sRJ tt
ttt	djdu srJ tt
ttt
ddjd u sJ tt	tt	tjdu sēJ tt	dt
ttjdu sŌJ tt
ttt	djd u sōJ tt
ddt	tjdu sJ tt
ddt	ttjdu s4J tt jt	ttt jjdu sVJ d S )NFTrA   rF   r   rW   éûĸĸĸ)r   rY   rZ   rX   re   r\   rf   Zis_finite_setrh   r&   r(   r<   r=   r)   r,   r'   r$   r%   ri   rI   rI   rL   Útest_is_finitesetO   s.    ĸ    "   "rm   c                   C   sb   t   tjj W d    n1 s$0    Y  t   tdj W d    n1 sT0    Y  d S ĐNrA   )r;   r   rh   Zis_EmptySetr&   rI   rI   rI   rL   Útest_deprecated_is_EmptySetj   s    &ro   c                  C   s@  t dtt dtddksJ t dtjtu s0J t t dt t dddksPJ t t djtu sfJ t tt tjks|J t tttjksJ t t t tjksĻJ t tttjksžJ t tttjksÐJ t tt tjksæJ t ttthksúJ tt ddt	sJ t
ttddf} tt | | t	s6J t ddtjksLJ t ddjdksbJ t ddddtjks|J t ddddtjksJ t ddddtjks°J tt dtdt sĘJ t tddddtjksčJ 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   rt   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   Frw   rI   rI   rI   rL   rM      rN   c                   S   s   t ddttttS rv   )r(   r>   r6   r<   r=   rI   rI   rI   rL   rM      rN   )r(   r   Ú
right_openr   Ú	left_openr   rh   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s2J tt| dtddjtd| ksXJ td|  dĄtd| ksvJ d S )Nrp   TrC   r   rW   éýĸĸĸrA   )	r   r,   r(   Úsupr   Úinfr   Úcontainsr5   Đrp   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sPJ tddjdksdJ t||jdksxJ t||| jdksJ t| | jdksĪJ tdtjdksļJ tt tjdksÎJ tt djdksäJ t| |jd ksøJ t|tjdksJ t|djdks$J t|dddjdks>J t|djdksTJ t|djd ksjJ t||jdksJ td|ddjdksJ td|ddjdksīJ td|ddjd ksÎJ td|ddjd ksčJ d S )Nzx, yrB   TrC   Úprq   r@   )ÚnegativeÚnn)ZnonnegativerA   rF   FrW   r   Đrz   Đry   )r   r   r(   rg   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$J t tddtdddtddksJJ t tddtddtddksnJ t tddtddtddksJ t tddtddtddksķJ t tddddtddtddddksâJ t tddtddddtddksJ t tdddtddtddks4J t tdddtdddtdddks`J t tdddtddddtddddksJ t tddddtdddtdddksūJ t tddtddtddksäJ t tddddtddtddksJ t tddddtdddtddks:J t tddtjtddks\J t tjtjksrJ t tddgdd	 tdd
D ĒR  tddksĻJ td} t tddtd| t tddt| ksāJ tt tddtd| sþJ tdd tddĄtddtdd ks.J tdd tddĄtddksTJ t t	 t	 ksjJ tdtd td tdddksJ tdtd tddksīJ tdddtj tdddksØJ tdddtddd@ tddks J tdddtdddB tddddks,J tdddtj@ tjksJJ tdddtjB tdddksnJ td} td}td}tjt| t||B t| t||ksēJ tddtd tddksÔJ tddddtd tddddksþJ tddtd }tddtd }| 
|Ą}d|v rJd|v rJd|v sNJ | |Ąrf| |ĄsjJ ttdd  |jdu sJ t tjttt  tt ttt  tt ksÆJ t tjtjtjksāJ d S )NrA   rF   rW   Té   Fr   c                 S   s   g | ]}t d | qS )į      ð?Đr&   )Ú.0r@   rI   rI   rL   Ú
<listcomp>Ō   rN   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   rh   Ú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   s4   t tdtdtddd} t| g dĒks0J d S )NrW   r   r   FĐÚevaluate)r   r   r   rA   rA   rA   rF   rF   rF   rW   rW   r   )r,   r#   Úlist)ÚurI   rI   rL   Útest_union_iter  s    rĒ   c                   C   s@   t tttd jdksJ t ttt t t jd ks<J d S )NrA   F)r(   r<   r=   r&   rg   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$J t ddt dd t ddddksJJ t dddt dd t ddddksrJ t dddt ddd t ddddksJ t ddtd tt ddddt ddddksÐJ tjtt tjksčJ tjtt t tjksJ t ddtt t t ddks,J t ddtdt tt  ddĄt  ddĄks`J 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ēJ tdddtd tddksÖJ td	d
td
 td	ksöJ tddddt dddd tddks"J tddddtj tddddksJJ tt ddtdddt dd tt ddddtdksJ dtjtj v s J d S )NrA   rW   rF   TFr   r   r   r   r   r   éĸĸĸĸ)r(   r&   r,   r   r\   r
   ÚRopenÚLopenr<   r=   r$   Úopenr   rh   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u sBJ t ddjdu sZJ t|ddjd u srJ t t | dd t dksJ t t dd t dksŪJ tt fdd	 ttddtddtdddksčJ tt dddt ddt dksJ tttd
dt dddtddttd
dddt dksPJ dttd
dtddddvstJ dttjtj	ddv sJ dttjtj	ddvsŽJ ttj
tjtksÄJ tj tj
ĄtksÜJ d
tj tj
t d
 ĄvsüJ tjtj
 tjksJ tj
t d
 t d tj
t d
d ks@J tjttj	t t ttjtj	 tjt t ksxJ tt ttdtddtt tttddksŽJ t td  t td } ttt  | sÜJ t  }t| | | }|| |ksJ || |ksJ 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   r9   r^   r,   r   r\   rY   rX   rf   rh   Ú
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   Đrp   Ú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 rn   rI   rI   rš   rI   rL   rM     rN   N)r&   r<   r=   r(   r,   r'   r$   r)   r   rh   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J tdd tjĄttt dddtdtddksPJ tdddd tjĄttt dddtdtddksJ tdddd tjĄttt dddtdtddksÄJ tdddd tjĄttt dddtdtddksþJ tj tjĄtjksJ tj tjĄtjks2J tj tjĄtjksLJ tj tjĄtjksfJ 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ķJ t	d tjĄttt dddtdtddksėJ t	dttj
d  tjĄtddddtdtjdd ks,J 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J t	t tjĄt tjt	tksĻJ t	dt tjĄt tt dddtdtdd t	tddksėJ tddtdd  tjtj Ą tfd	d
dD s.J t fdd
dD rJJ tfdd
dD rfJ t fdd
dD sJ d S )NrA   rF   r   TFrW   r   r   c                 3   s   | ]}| v V  qd S rH   rI   Đr   ÚptĐÚsquarerI   rL   Ú	<genexpr>ą  rN   z"test_complement.<locals>.<genexpr>)Đr   r   Đį      ā?rÆ   ĐrA   r   rG   c                 3   s   | ]}| v V  qd S rH   rI   rŋ   ĐÚ	notsquarerI   rL   rÃ   ē  s   c                 3   s   | ]}| v V  qd S rH   rI   rŋ   rÁ   rI   rL   rÃ   ī  rN   ))rĪ   r   )į      ø?rÆ   )r   r   c                 3   s   | ]}| v V  qd S rH   rI   rŋ   rČ   rI   rL   rÃ   ĩ  rN   )r$   r(   rŪ   r   r\   r,   r   rf   rh   r&   ÚNegativeInfinityÚInfinityr<   ÚallÚanyrI   rI   )rÉ   rÂ   rL   Útest_complement  sn    ĸĸĸĸĸĸ
ĸ
ĸĸþ
ĸĸþĸ
& ĸþĸrÏ   c                  C   s@  t dd tjtjfD sJ t dd tjtjfD s<J tj} tj | Ątju sXJ |  tjĄtju snJ td}tdd tddĄtddksJ tdd tdddĄtdddksÂJ tddd tddĄtddd	d	ksėJ tdddd tddĄtddd	dksJ tdd ttddtdd
ĄttddtddksXJ t	dd t	ddd
Ąt	ddksJ t	dd| t	|Ąt	|ksĪJ t	dd t	dĄt	dksÆJ t	ddd
dd tj
Ątj
ksęJ tdd t	dd
Ąt	dd
ksJ tdddd t	dĄtj
ks4J ttddtdd
 tddĄttddtddksrJ ttddtdd
 tddĄttddtddks°J ttddtdd
 tddddĄtj
ksâJ ttddtdd
 tj
Ątj
ksJ 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^J tt	ddd
td|td
ttt	d
td|td
td	dksĪJ tt	ddtdd
t|ttddht|td	dksāJ tt	dddtdd
t|ttddht|td	dksJ tddd\}}tt	|t	||t||d t	|ks\J tt	|t	ttt	|t	td	dksJ t	| tjĄttjt	|d	dksīJ tdd t	dd
Ąt	dd
ksÚJ tdddd t	dĄtj
ksþJ ttddtdd
 tddĄttddtddks<J d S )Nc                 s   s   | ]}t j |Ą|u V  qd S rH   )r   rX   ÚintersectionĐr   ÚirI   rI   rL   rÃ   đ  rN   z"test_intersect1.<locals>.<genexpr>c                 s   s   | ]}|  tjĄ|u V  qd S rH   )rÐ   r   rX   rŅ   rI   rI   rL   rÃ   ŧ  rN   r<   r   rF   rA   TFrW   r   r   r   r   é   r   zm, nrC   )rÍ   r   rY   rZ   rÐ   r   r(   r   r,   r&   rh   r'   r=   r   r\   )rj   r<   r?   r@   rI   rI   rL   Útest_intersect1ļ  s    
ĸ
ĸ$
ĸĸĸ
 ĸ
($ĸ
$&$ ĸ
 ĸ
$ĸ
ĸ
$$ĸ
ĸ
ĸ
ĸ
ĸ
ĸ
ĸ
&$ ĸrÔ   c                     sļ  t tdddtdddd  js&J t tdtdhksBJ tddd	} t td
dt| d d v du stJ tt fdd t td
dtj	tj	ksĒJ t tt
 t
tt
 | tt
 | ksĖJ td
d}t |d |d dd d vsøJ d vsJ 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^J t tjttjtj	ks|J t  tjksJ t dhdh| ht dh| hksīJ d S )NrA   rF   rW   r   Fr   r<   TrC   r   rÓ   c                      s   d v 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   Úsetr   r   r9   r^   rh   r   rX   rY   r\   Z_argsetÚ	frozensetÚ	ComplexesÚComplexInfinityrf   )r<   Úlinerp   rI   rÖ   rL   Útest_intersectionø  s&    
*
(rÝ   c                  C   sb   t d} tj}tdt}t| }t|||t||ks:J ttddtddt| tks^J d S )Nr@   r   rA   rF   rW   r   )r   r   r\   r(   r   r&   r'   rh   )r@   rp   rī   ÚcrI   rI   rL   Útest_issue_9623  s    
rß   c                   C   s@   t dd t ddĄdksJ t dd t ddĄdks<J d S )Nr   rF   rA   FrW   r   T)r(   Zis_disjointrI   rI   rI   rL   Útest_is_disjoint&  s    rā   c                  C   sv   t dd} t ddd}t|  Ą dks*J t|  Ą tdusBJ t| | Ą dksXJ t| | Ą tdusrJ d S )NrA   rF   rW   rÓ   )r&   r)   Ú__len__r   ĐrŦ   rŊ   rI   rI   rL   Útest_ProductSet__len__+  s    
rã   c                     s  t tjtjd ksJ t tjtjtjd ks4J t tjtjtjtjd ksTJ t tjtjkshJ t tjtjtjtj ksJ t tjtjtjtjtj tj ksŪJ t tjtjtjtjtj tj  Ą ksÚJ dt tjvsėJ dt tjv sþJ dt tjtjvsJ dt tjtjv s.J dtft tjtjvsJJ dt tjtjtjv sfJ dtjd v szJ dtjtj tj vsJ dtjtj tj v sēJ dtjtj tj vsÎJ dtjtjtj  v sęJ t  td	ksþJ t tjtjtjksJ td
D ]6} t tjf|   }d|  |v sFJ d|vs J q tjtj tj tjtjtj  ksJ tj}tj}t	}d}||v sĪJ ||v sēJ ||f|| v sČJ ||  ||f}| v sæJ ||f   v süJ ||    vsJ t
tdd  t & t dd tdD  W d    n1 sT0    Y  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 J t
t fdd t
t fdd t
tdd  t tjtj}| dĄtju sBJ | dĄtju sXJ | tĄtt|ddksvJ | tĄ tdĄtju sJ | tdfĄ tdĄtju sķJ | ttfĄtttf|ddksÜJ ttttf|sōJ td|tju sJ 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   rj   rI   rI   rL   rÃ   h  rN   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 rn   ræ   rI   rč   rI   rL   rM   r  rN   c                   S   s   t tdd ttĄS rv   )r)   r(   rį   r<   r=   rI   rI   rI   rL   rM   s  rN   Fr   )r)   r   r\   Úflattenr
   r&   rh   r   rX   r   r9   r_   r;   r^   rį   r<   r=   r6   r7   r1   r   r   r   r!   Úsubsr0   )rķ   ZRnZS1ZS2rb   rc   Zx3ZZ2rI   rč   rL   Útest_ProductSet4  sz     (,*6



ĸ
,þ"&rë   c                   C   s0   t ttddsJ t tttdds,J d S rv   )r0   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J t ttdtjjd ks4J d S )NFrA   )r)   r   rX   r\   rg   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,J t| d | dĄtjksHJ d S )Nrp   TrC   r   rF   )r   r(   rę   r   rh   r   rI   rI   rL   Útest_interval_subs  s     rî   c                   C   sd   t dd Ą tddksJ t dddd Ą tddks<J tt dd Ą ttddks`J d S )Nr   rA   TF)r(   Zto_mpir/   Ú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.J t ttjdd Ą t ttdddksXJ t t tj Ą t t tdks~J tdt Ą ttdtksJ d S )	Né   é@   z0.171875z0.5Tr   rF   z2.0)r(   r   ZHalfÚevalfr	   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 J td| j| ks4J td| j| d ksLJ ttddtddjdkslJ ttddtddtd	d
djdksJ tddt| t djdksīJ tjjdksÄJ 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 J || jdks8J || jdksLJ |tddd jdkshJ | |Ąjdks~J || jtu sJ |tddd jt	u sŪJ d S )Nrp   TrC   rA   rW   rF   r   r   r   rÓ   é   rl   r   é   éd   éŊ   éK   é   )
r   r(   r|   r,   r&   r   r   rh   r   r   )rp   rÂ   ZoffsetsquareZbandrI   rI   rL   Útest_measure   s(      ĸ"rû   c                  C   sV  t dd t ddĄdu sJ t dd t ddĄdu s<J t dd tddĄdu sZJ tdd tddddĄsxJ tdd tddddĄdu sJ td t ddĄsēJ tdd t ddddĄdu sÔJ t ddtd  t ddddtdd ĄsJ t dd tt ddt ddĄdu s2J t dd	 tt ddt ddĄdu s^J tdddd t ddĄdu sJ tj tdddĄdu s J t dd tjĄdu sžJ tj tjĄdu sÔJ ttd
d  tdddd t ddĄdu sJ tj tdddĄdu s$J tj	 tj
Ąs8J tj tj
ĄsLJ tt ttĄd u shJ tt tt ttĄĄdu sJ tt tt ttd ĄĄdu sīJ t dd t ddddĄdu sØJ t dd tt t dt dtĄdu sJ tddd} tddd tddĄdu s4J ttdd  tdddĄdu s\J td	dd tddd	Ądu sJ tdt tddĄdu s J tt d tdĄdu sĀJ td tdd| Ąd u sāJ t| | d  t| | d Ądu sJ td t ddddĄdu s*J tt| d|  tj
 tjĄd u sRJ d S )Nr   rA   rF   TrW   Fr   r   rÓ   c                   S   s   t j dĄS rn   )r   rh   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   rh   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u sJ t dd t ddĄdu s<J tj tdddĄdu sXJ ttdd  d S )	Nr   rA   rF   TrW   Fc                   S   s   t dd dĄS rv   )r(   Úis_proper_subsetrI   rI   rI   rL   rM   ō  rN   z'test_is_proper_subset.<locals>.<lambda>)r(   rĸ   r   rh   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J t dd t ddĄs8J tdd tddddĄdksZJ tdd tddddĄdks|J td t ddĄdksJ tdd t ddddĄdksšJ t ddtd  t ddddtdd ĄdksîJ t dd tt ddt ddĄdksJ tdddd t ddĄdks>J tj tdddĄdks\J t dd tjĄdksxJ tj tjĄdksJ ttd	d
  t dd tjĄdksšJ tj tjĄdksŌJ d S )Nr   rA   rF   FrW   r   r   Tc                   S   s   t j dĄS rn   )r   rh   Úis_supersetrI   rI   rI   rL   rM     rN   z"test_is_superset.<locals>.<lambda>)	r(   r  r&   r,   r   rh   r9   r_   Ú
issupersetrI   rI   rI   rL   Útest_is_supersetõ  s&    """ĸĸ,$r  c                   C   sj   t dd t ddĄdu sJ t dd t ddĄdu s<J tddd tjĄdu sXJ ttdd  d S )	Nr   rA   rF   FrW   Tc                   S   s   t dd dĄS rv   )r(   Úis_proper_supersetrI   rI   rI   rL   rM     rN   z)test_is_proper_superset.<locals>.<lambda>)r(   r  r&   r   rh   r9   r_   rI   rI   rI   rL   Útest_is_proper_superset  s    r  c                     sæ  t dd dĄtju sJ t dd dĄtju s4J t dddd dĄtju sRJ t dddd dĄtju spJ t dddd dĄtju sJ t dddd dĄtju sŽJ t dddd dĄtju sĘJ t dddd dĄtju sčJ t ddt ddv du sJ tddd dĄtju s$J tddtd tdĄtju sJJ tt t	Ąd u sbJ t
tdd	  tt	th t	hĄd u sJ tt	th tt	Ą t	hĄdu sīJ tt	th tt	d Ą t	hĄdu sÞJ dd
lm m}  tt|    Ąts
J tt|   Ąts$J tt  dĄts>J 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ÖJ ddtjtddg}t| tfdd|D sJ tfdd|D s*J tt ddt dd dĄtju sRJ tt ddt dd dĄtju szJ tt ddtdd dĄtju sĒJ tj dĄtju sšJ ttt	d t	 d d tjĄtju sčJ tt	d t	d  d dtjv sJ tt	d t	d  d dtjvs4J 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J 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ČJ tj tjĄtjksâJ d S )Nr   rF   rA   rW   TFr<   c                   S   s   t ttv S rH   )r<   r&   r=   rI   rI   rI   rL   rM   '  rN   ztest_contains.<locals>.<lambda>rģ   c                      s   dt  v S rn   r   rI   r   rI   rL   rM   1  rN   é	   r   r   gņŋc                 3   s   | ]}| v V  qd S rH   rI   Đr   ÚitemĐÚfsetrI   rL   rÃ   <  rN   z test_contains.<locals>.<genexpr>c                 3   s   | ]}   |Ątju V  qd S rH   )r   r   r   r  r	  rI   rL   rÃ   =  rN   r   rÓ   ) r(   r   r   r   r   r&   r   r=   r]   r<   r9   r^   rę   Ú	sympy.abcrp   rī   r{   r!   r   r   rh   rĖ   rÍ   r,   r    r\   r7   r6   ZOner'   rÚ   rÛ   )rī   Zrad1Zrad2Ús1Ús2ÚitemsrI   )rp   r
  rL   Útest_contains  sX    &&* B(((.&&*ĸ
"ĸ
r  c                     sÜ   t dtdd   Ąttjkdkks4J tt fdd tdddd   Ąttjk dk ksxJ t ddd	} td  | Ądks J t d
dd tt t  Ąttj	 k  tj
k ksØJ d S )Nr<   r   rA   c                      s    v S rH   rI   rI   Đr~   r<   rI   rL   rM   V  rN   z(test_interval_symbolic.<locals>.<lambda>TrÞ   FrC   r~   ru   )r   r(   r   r6   r   ÚZeror9   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`J tt	fdd  
Ą}| ĄksJ | dĄtu sĪJ | d	Ątu sļJ | d
Ątu sĖJ | dĄtu sāJ | dĄtu sôJ tddddtdt tdddd  t fddddt fD s>J t fdddD sZJ d S )Nr<   r   rA   rF   rW   c                      s    v 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   | ]}| vV  qd S rH   rI   Đr   ÚelĐÚUrI   rL   rÃ   p  rN   z&test_union_contains.<locals>.<genexpr>r   c                 3   s   | ]}| v V  qd S rH   rI   r  r  rI   rL   rÃ   q  rN   )rF   r   r   )r   r(   r,   rį   r7   r6   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u sJ t jdu s$J d S rx   )r(   Z	is_numberr*   rI   rI   rI   rL   Útest_is_numbert  s    r  c                   C   sF   t ddjdu sJ t t djdu s*J t tddjdu sBJ d S )NrW   r   FTz-inf)r(   Zis_left_unboundedr   r	   rI   rI   rI   rL   Útest_Interval_is_left_unboundedy  s    r  c                   C   sD   t ddjdu sJ t dtjdu s(J t dtdjdu s@J d S )NrW   r   FTz+inf)r(   Zis_right_unboundedr   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s6J tdddd | Ąttd| t| dksdJ tdddd | Ąttd| t| dksJ tdddd | Ąttd| t| dksĀJ tt ddd | Ąttt | t| dksōJ tt ddd | Ąttt | t| dks&J tdtdd | Ąttd| t| tksVJ tdtdd | Ąttd| t| tksJ tt t | Ąttt | t| tksķJ t ddd	} t d
dd	}t| | | Ą| |kksėJ t||  | Ą|| kks
J d S )Nr<   rĪ   rF   FTr   rU   r   rC   r=   )r   r(   rį   r6   r3   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:J t|d | Ątt| |t| dksdJ d S )Nr<   r=   rA   rF   rl   )r   r&   rį   r7   r1   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sFJ tddddtd  | Ąttd| t| dks|J t| dk | dk 	Ą  | Ąt| t
 k| t
k t| dksļJ t ddĄt ddĄ  | Ątt| d| dk| dkksôJ d S )Nr<   r   rA   rF   TrW   r   )r   r(   r&   rį   r7   r6   r3   r1   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sLJ d S ĐNr<   r   rA   rF   Fr   )r   r'   r(   r&   rį   r6   r3   r1   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sLJ d S r!  )r   r$   r(   r&   rį   r6   r3   r2   Đr<   ra   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sHJ d S r!  )r   r$   r(   r&   rį   r2   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sNJ d S r!  )r   r+   r(   r&   rį   r8   r1   r3   r#  rI   rI   rL   Ú&test_SymmetricDifference_as_relationalĘ  s    r&  c                   C   sH   t j tdĄt ju sJ t j t jĄt jks2J t jjt jksDJ d S )Nr<   )r   rh   rį   r   r   r   rf   ÚboundaryrI   rI   rI   rL   Útest_EmptySetÐ  s    r(  c                  C   s  t d} tddd}tddd}t||}| |Ą}| |ĄrH| |ĄsLJ | |ĄsZJ |tdksjJ |jdkr~|jdksJ |jdkr|jdksJ t| ddjt| dksķJ t| ddjt| dksŌJ tt	j
t	j
ksæJ ttdddtdddksJ tdtdddks"J td|d	| d
| d s>J ||kdu sPJ ||kdu sbJ ||k du stJ ||kdu sJ ||kr||ksJ ||krē||ksķJ ||krĘ||ksÎJ ||krâ||ksæJ ||krú||ksþJ d S )Nr<   rA   rF   rW   r   r   rä   rE   rl   r   F)r   r&   r,   r   r   r   r   r   r   r   rh   )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	|v sPJ d|vs\J | |f d v spJ d
||  Ą v sJ d|| v sJ | ddf | |  Ą v sēJ | dfdf | | v sÎJ t| t| }}t d ||f||f||f||fhksJ ||  || Ąs&J | 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 J t ddd  t ddd ĄsÄJ t ddd  t ddd ĄrčJ t ddd  t ddd ĄrJ t ddtd  |Ąs*J t	     dksDJ t	t
jt
j dks^J t	t
j  dksvJ tt fdd d S )N)ÚHÚTr   rA   rF   rW   r   r   rÓ   rÄ   )rÆ   rÆ   rÆ   )rÅ   rÆ   Trl   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   rh   r9   r^   )r*  r+  Z	unit_lineZd6Zd4rÂ   ZHHZTTrI   r.  rL   Útest_product_basicø  sD    

.ĸ
ĸĸý$$$r/  c                     sė   t ddd} tddtddtdd	d
| tj tddtdtddtdd  fD snJ  tjĄr~J t fdd fD sŠJ tfdd fD rÐJ     tjĄrčJ 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Ã   )  rN   ztest_real.<locals>.<genexpr>c                 3   s2   | ]*} fD ]}||   tjĄV  qqd S rH   r4  )r   rp   rī   )rŦ   rŊ   rŽ   r
   ÚJrI   rL   rÃ   +  rN   c                 3   s   | ]}|    tjĄV  qd S rH   r4  )r   rp   )r°   rI   rL   rÃ   ,  rN   )	r   r(   r&   r   ÚPirÍ   r   r\   rÎ   rP   rI   )rŦ   rŊ   rŽ   r°   r
   r5  rL   Ú	test_real  s    



 ,&r7  c                  C   sv  t ddd} t ddd}tddtd jdks4J tddtd jdksPJ tddt|  jtd| ksrJ tddt|  jtd| ksJ tdd| jtd| ks°J tdd| jtd| ksĖJ tdd| |jtd| |ksėJ tdd| |jtd| |ksJ tdd| |tjtj	jtjks2J tdd| |tjtj	jtj	ksVJ td	d
jtd	d
ksrJ d S )Nr<   TrC   r=   r   rA   rF   r   r2  r3  )
r   r(   r&   r   r   r   r   r   rĖ   rË   rV   rI   rI   rL   Útest_supinf1  s"    "" "ĸ
ĸ
r8  c                  C   s   t j} td}|  |Ąt ju s"J |  tddĄ| ks:J |  tddĄtddksXJ | jt j	u shJ | j
t jksxJ |  dĄt ju sJ d S )Nr<   rF   r   r   )r   rf   r   rį   r   r   r(   r   r|   rĖ   r'  rh   r   )r  r<   rI   rI   rL   Útest_universalsetD  s    r9  c                  C   s8   t dd} tddd}t| |  | | | |  ks4J d S )Nr   rF   rA   )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J tddd} t d| j| hks8J d S )Nr   rA   r<   TrC   )r(   Zfree_symbolsrØ   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<J t| d|  tdddd	tdddd	kshJ t| | d tdddd	td
dd	dksJ t| | d tddtd
dksļJ t| | d tdddd	td
dd	dksäJ t| | d tddddtd
dd	dksJ t| | d d tddtd
dks<J t| d| d  d| d   d| d   d|   td
dtdd
ksJ t| | d|   tt ttt dtdt ksūJ t| d|  d| d d   td
ddd	ttddtd	ks J tdd tddtddks$J tt| ||  td
dtt| ||  td
dks^J tt| tt| td
dtt| tt| td
dks J d S )Nr<   TrC   rp   rF   rU   rA   r1  Fr   r   rW   é   éN   éZ   iÝĸĸĸc                 S   s   d|  S rÕ   rI   rP   rI   rI   rL   rM   s  rN   z%test_image_interval.<locals>.<lambda>)	r   r-   r(   r   r   r   r"   r   r   )r<   rp   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szJ tt|tddtddksJ d S )NrĪ   rA   rF   r   rW   Tr   )rF   Trl   é   )r   r<   r-   r(   r,   r   r   r&   )rQ   Úf1rI   rI   rL   Útest_image_piecewise|  s    ,2rB  c               	   C   st   t ddd} t ddd}t| | d tdd t| |Ątdd tt| d |d t| d |d ĄkspJ d S )	Nr<   TrC   r=   rF   rU   r   r   )r   r-   r(   r   r   r   rV   rI   rI   rL   Útest_image_Intersection  s
     0ĸrC  c                  C   s8   t ddd} t| d|  tdddtdddks4J d S )	Nr<   TrC   rF   rA   rW   r   rÓ   )r   r-   r&   rP   rI   rI   rL   Útest_image_FiniteSet  s    rD  c                  C   sH   t ddd} t| | d tddtddd tdd	td
 ksDJ d S )Nr<   TrC   rF   rU   r   rA   rW   r   r  )r   r-   r(   r&   rP   rI   rI   rL   Útest_image_Union  s     ĸrE  c                  C   s,   t ddd} t| d|  tjtjks(J d S )Nr<   TrC   rF   )r   r-   r   rh   rP   rI   rI   rL   Útest_image_EmptySet  s    rF  c                   C   s.   t tjvsJ tt t t Ątju s*J d S rH   )r
   r   r\   r(   r   r   r   rI   rI   rI   rL   Útest_issue_5724_7680  s    rG  c                   C   s4   t djt dksJ tdd ttfD s0J 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   rz   ry   rI   rI   rL   rÃ   Ē  s   ĸz test_boundary.<locals>.<genexpr>)r&   r'  rÍ   r   r   rI   rI   rI   rL   Útest_boundary   s    ĸrH  c                   C   s  t ddt dd jtddddks(J t ddddt dddd jtdddksVJ t ddtd jtdddkszJ tt ddt dd	dd
jtdd	ksĪJ tt ddt dddd
jtddksÎJ tt ddddt dd	dddd
jtddd	ksJ d S )Nr   rA   rF   rW   FTr   r   rö   r   )r(   r'  r&   r,   rI   rI   rI   rL   Útest_boundary_UnionĶ  s$    (ĸ
ĸ$ĸĸĸ
þrI  c                   C   s.   t tddtddddjtddks*J dS )z2 Testing the boundary of unions is a hard problem r   r   rö   Fr   N)r,   r(   r'  r&   rI   rI   rI   rL   Ú#test_union_boundary_of_joining_setsķ  s    ĸrJ  c                  C   sÂ   t ddddd } | jtddt dd t ddtdd  ksDJ 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ūJ d S )Nr   rA   TrF   )r(   r'  r&   )Zopen_squareZsecond_squarerI   rI   rL   Útest_boundary_ProductSet―  s    ĸ
ĸþýĸrK  c                  C   s$   t ddtd } | j| ks J d S rv   )r(   r&   r'  )Z
line_in_r2rI   rI   rL   Útest_boundary_ProductSet_lineĘ  s    rL  c                   C   sb   t ddddjdu sJ t ddddjdu s0J t ddddjdu sHJ tdddjdu s^J d S ĐNr   rA   FTrF   rW   )r(   Zis_openr&   rI   rI   rI   rL   Útest_is_openÏ  s    rN  c                   C   sJ   t ddddjdu sJ t ddddjdu s0J tdddjdu sFJ d S rM  )r(   Z	is_closedr&   rI   rI   rI   rL   Útest_is_closedÖ  s    rO  c                   C   s&   t ddddjt ddddks"J d S ĐNr   rA   FT)r(   ÚclosurerI   rI   rI   rL   Útest_closureÜ  s    rR  c                   C   s&   t ddddjt ddddks"J d S rP  )r(   ZinteriorrI   rI   rI   rL   Útest_interiorā  s    rS  c                   C   s   t tdd  d S )Nc                   S   s
   t tjv 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    rT  c                  C   s,  t tddtddsJ t tddtdddks8J tdd} tdd}t | | sZJ t | |dkslJ t | | | | sJ t | | ||  dksJ tt ttthtthsšJ t ttth ttĄtthtju säJ t ttthtth ttĄtju sJ t ttth ttd Ątthtj	u s@J t ttthtth ttd Ątj	u spJ t t
dhdhtddtj	u sJ t t
dht
dhdhtj	u sžJ t tdtdtj	u sÚJ t t
 tdtj	u söJ tdd}ttt}tt t
||t
||s(J d S )Nr   rA   rF   FrI   )r1   r(   r&   r0   r<   r=   rę   r   r   r   r)   )r  r  r  r  rI   rI   rL   Útest_Eqč  s(    

*,00&&

rU  c               	      s  t dddddd t ddddd	} tdd	t | d
djdu sDJ t d
djd u s\J t t | d
d t ddddddd	ksJ 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ÖJ tt dddt ddddt dksþJ t dddddt ddddA t dddks.J 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ÆJ tddtddA ttddtdd tddtdd ks
J 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   r9   r^   r*   r   r,   )rŊ   rI   rŠ   rL   Útest_SymmetricDifference  s<    
ĸĸĸĸĸ
ĸ
^.ĸĸĸrV  c                  C   sH   ddl m}  tddd}t| | tjĄttjt| |ksDJ d S )Nr   )Úlogrp   TrC   )Z&sympy.functions.elementary.exponentialrW  r   r&   r   r   r\   r'   )rW  rp   rI   rI   rL   Útest_issue_9536  s    rX  c               	   C   sæ   t d} t| }td| }ttj|ttj|ddks:J ttdd|ttdd|ddksbJ ttdd|tttddddtdddd|ksJ t|tjt|tjddksšJ t|tddt|tddddksâJ d S )Nr@   rF   Fr   rA   rW   T)r   r&   r$   r   r\   r(   r,   )r@   rp   rī   rI   rI   rL   Útest_issue_9637$  s    
 ("ĸ rY  c                   C   sf   t tttdt tttdddks,J t tddttttddt tdttddksbJ d S )NrA   Fr   rF   rW   )r$   r&   r=   r<   rI   rI   rI   rL   Útest_issue_98080  s    ,ĸrZ  c                   C   sF   t tt ttdtt tks&J tt t dĄtju sBJ d S rn   )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g dĒ}t|| tttttt| ttksFJ ttdtttttd| t| tttksvJ ttttt	ttt
|tttt
httt	h|ksŪJ ttttdtttt	|ttdtttttt	|ddksîJ ttttdtttdd|ttdtt|ks$J t|t|dttd|tt|ttksTJ tttt	tt	ttt	tt	d|t|ttt	tt	ksJ ttt	d dtt	tt	d dtt	|t|tt	d tt	ksæJ d S )Nr   )r   r   r   rA   rF   rW   Fr   )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J d S )Nr   )r   rZ   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sBJ tt | tddtt dksdJ tt | tddttt dttdd	tksJ d S )
NrF   r   r   rA   TrU   rW   r  r   )r<   r-   r   r\   r,   r(   r   r   ĐrQ   rI   rI   rL   Útest_issue_10113V  s    ."r`  c                  C   s<   t tdd  tddd} tttjt| | gks8J 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Ŧ   rI   rI   rL   Útest_issue_10248]  s
    ĸra  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sFJ ttj| ttjtt ddt ddddksxJ d S )Nr   rA   rF   rW   Fr   )r(   r$   r   rf   r,   rY   r   rI   rI   rL   Útest_issue_9447e  s    ĸĸrb  c                   C   sd   t ddkdu sJ t ddkdu s(J 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 rc  r   rI   rI   rI   rL   rM   q  rN   c                   S   s   t ddkS rc  r   rI   rI   rI   rL   rM   r  rN   c                   S   s   t ddkS rc  r   rI   rI   rI   rL   rM   s  rN   )r&   r9   r^   rI   rI   rI   rL   Útest_issue_10337m  s    rd  c                  C   sō   t tdtddtjtjtjtjtjg} tdd}| D ]}||vs6J q6t	ddd}t	dd	d
}|d t||d v szJ |t||d vsJ tddttddtddv sīJ tt
 t
 t
Ątju sÐJ tt
 t
 t
 Ątju sîJ d S )NrA   rF   r   r   r<   TrC   ÚnrFru   r   )rh   r&   r(   r   rÛ   rt   rĖ   ÚNaNrË   r   r   r   r   )ÚbadÚintervalrŌ   r<   re  rI   rI   rL   Útest_issue_10326v  s&    ø

$ri  c                  C   sb   t j} tddd}t|t}t j}| | ||  ks6J | | ||  ksJJ || || ks^J d S )Nrp   TrC   )r   rf   r   r(   r   r\   )r  rp   Zinf_intervalÚRrI   rI   rL   Útest_issue_2799  s    
rk  c                   C   sb   t t djt t dddks"J t dtjt dtddks@J t t tjt t tks^J d S )Nr   TF)r(   r   rQ  rI   rI   rI   rL   Útest_issue_9706  s    "rl  c                  C   sĶ   t tt ttt} t tt ttt }tt ttt | ksJJ tttt t | ksfJ tt ttt  |ksJ tt tt t |ksĒJ d S rH   )r,   r(   r   r&   )Zreals_plus_infinityZreals_plus_negativeinfinityrI   rI   rL   Útest_issue_8257  s    rm  c                   C   s,   t jt j tksJ t jt j tks(J d S rH   )r   rX   rh   r\   rI   rI   rI   rL   Útest_issue_10931Ļ  s    rn  c                  C   sf   t tt ttt dd} t tt tj| ks6J t tjttdd} t tttj| ksbJ d S rĐ   )r'   r(   r   r&   r<   r   r\   )ZsolnrI   rI   rL   Útest_issue_11174­  s    ro  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sdJ d S )NrF   rA   r   )	r"   r   r@   r   r   r   rX   r   r!   rI   rI   rI   rL   Útest_issue_18505ĩ  s    ..ĸrp  c                	   C   sÞ  t tt tttttks"J t  tt ttdtgĄttksJJ t  tt tttgĄttkspJ 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 J tdt t td@ tdtdt t @   krTt tdt t tdddksZn J tdtt@ tttd@   krt tdttddksĒn J tthttth@ t tthttthddksÚJ d S )Nr   rF   rW   rA   Fr   )r'   r&   r   r<   Z_handle_finite_setsr=   rI   rI   rI   rL   Útest_finite_set_intersectionš  s*    "(&ĸþýĸ
þ&ĸĸrq  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J tt t   ksŽJ tdhdht ddksČJ tddhdd
ht dksæJ 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   rr  rI   rL   rM   Ö  rN   c                      s   t t S rH   )r,   ÚtuplerI   rr  rI   rL   rM   Ũ  rN   c                      s   t t S rH   )r'   rt  rI   rr  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Ã   Ų  rN   úHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r   rI   rr  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Ã   Ú  rN   ru  rs  rI   rr  rI   rL   rM   Ú  rN   rW   )r&   r9   Ú	Exceptionr,   rØ   r'   rI   rI   rr  rL   Ú#test_union_intersection_constructorŌ  s    rw  c                   C   s(   t tt t dĄt dtĄvs$J d S rs   )r   r,   r(   r§   r   rI   rI   rI   rL   Útest_Union_containså  s    ĸrx  c                   C   s*   t tttftj tjd Ądu s&J d S )NrF   T)r-   r<   r   r\   r   rI   rI   rI   rL   Útest_issue_16878bę  s    ry  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sFJ t tddtdd tĄttddtd tddtd ksJ t tddtdd tĄttddtd tddtd ksŌJ t tddtjtj tĄtddtd ksJ t tdd tĄtddtd ks2J t tjtddtj tĄtddtd ksfJ t tt t tĄtt ttd ksJ t tj tĄtjksēJ t   tĄtjksĘJ tt	dd	  t
d
} t
d}t
d}t t| t|| tĄt| td t||td  ks2J 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   rh   r   r9   r^   r   )r<   r=   r>   rI   rI   rL   Útest_DisjointUnionņ  s    FFF4,40rz  c                   C   sN   t tjjdu sJ t tjtjjdu s,J t tjtdddjdu sJJ d S )NTrA   rF   rW   F)r%   r   rh   rg   r&   rI   rI   rI   rL   Útest_DisjointUnion_is_empty  s    r{  c                   C   sv   t tjtjtjjdu sJ t tjtjjdu s4J t tdddtjtt	t
jdu sZJ t tjtjjdu srJ d S )NTFrA   rF   rW   )r%   r   rX   rY   re   r   rh   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v s,J dt tdddtdddtdddv sXJ dt tdddtdddtdddv sJ dt tdddtdddtdddv s°J dt tdddtdddtdddv sÜJ d	t tdddtdddtdddv s
J d
t tdddtdddtdddv s8J dt tdddtdddtdddv sfJ dt tdddtdddtdddv sJ dt tdddtdddtdddvsÂJ dt tdvsØJ dt tdddtdddtdddvsJ tdft tttttjttv s.J tdft tttttjttv sVJ tdft tttttjttv s~J tdft tttttjttv sĶJ dt tddtddv sÆJ dt tddtddv sæJ dt tddtddvsJ dt tddtddv s&J 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   rh   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}g dĒ}t }||v sVJ | |Ą t }||v stJ | |Ą t }||v sJ | |Ą t }||v s°J | |Ą t }||v sÎJ | |Ą t }||v sėJ | |Ą t }||v sJ | |Ą 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 rv   )Úiterr%   r(   r   rh   rI   rI   rI   rL   rM   ?  rN   )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(J t ttjtjtttttjdksPJ tt	dd  d S )NrW   r   rõ   r  c                   S   s   t ttddtjS rv   )r-  r%   r(   r   rh   rI   rI   rI   rL   rM   D  rN   z(test_DisjointUnion_len.<locals>.<lambda>)
r-  r%   r&   r<   r=   r>   r   rh   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|u sFJ t tddttddgjttt|u svJ d S ĐNrA   rF   )	r)   r&   r   r   r   r.   r   Úkindr(   )r   ÚmkÚkrI   rI   rL   Útest_SetKind_ProductSetF  s
    "r  c                   C   s   t ddjttu sJ d S r  )r(   r  r.   r   rI   rI   rI   rL   Útest_SetKind_IntervalM  s    r  c                   C   s(   t jjttu sJ tjt u s$J d S rH   )r   rf   r  r.   r   rh   rI   rI   rI   rL   Ú"test_SetKind_EmptySet_UniversalSetP  s    r  c                   C   s<   t dtddgjttu s J t ddjttu s8J d S 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u s*J t tddtddjttu sNJ d S )NrA   rF   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u s.J d S )NrA   rF   rW   r   r   )r&   r(   r%   r  r.   r   râ   rI   rI   rL   Útest_SetKind_DisjointUnion\  s    
r  c                  C   s&  dd } | dht jttu s"J | tddt jttu s@J | dhtjjttu s\J | tddtddtdjttu sJ dd }|dhtjjttu sŠJ |dht jt u sÂJ dd }|tjh d	Ģjttu sčJ |h d
Ģt jttu sJ |t h d
Ģjt u s"J 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  rs  r  rI   rI   rL   rM   h  rN   c                  W   s   t | ddiS r  )r$   r  rI   rI   rL   rM   k  rN   >   rA   rF   r   r   >   rA   rF   rW   r   r   )	rh   r  r.   r   r(   r   rf   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u s4J | tdd jttu sPJ | td jttu sjJ d S )NrF   rA   r   rW   é   é   )r"   r   r@   r(   r&   r  r.   r   r_  rI   rI   rL   Útest_SetKind_ImageSet_Specialp  s    r  c                  C   sÆ   t t ddt d} d| vs J d| vs,J tdt ddr@J t d| v sPJ t dd}|| v sfJ |  | ĄstJ | | ĄrJ d|v sJ t t ddt ddd}| |ĄsīJ |  |ĄsÂJ d S )NrA   rF   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u s4J t d}| |Ądu sNJ t|| Ą tju sfJ t| | Ą tju s~J tdhth Ą tdhthksĒJ d S )	NrA   rF   rG   rE   r}  rŨ   TF)	r&   r)   r   r1   Úsimplifyr   r   r   r<   )rp   rī   rÞ   ÚdrI   rI   rL   Útest_issue_19378  s    

r  c                  C   sd   t d} ttt| tdts$J ttt| tddtsBJ tttdtd| ts`J d S )Nr@   rũ   rA   )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sBJ ttd| tdddttd| tdddksvJ d S )	Nr@   T)rS   rr   r   r   iô  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(J d S )Ng-DTû!	@rF   z3.23108914886517e-15)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s0J d S 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@   rh   rd   rk   rm   ro   r   r   r   r   rĒ   rĢ   rĻ   rē   rū   rÏ   rÔ   rÝ   rß   rā   rã   rë   rė   rí   rî   rð   rô   rû   rþ   r   r  r  r  r  r  r  r  r  r  r  r   r"  r$  r%  r&  r(  r)  r/  r7  r8  r9  r:  r;  r?  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rN  rO  rR  rS  rT  rU  rV  rX  rY  rZ  r[  r]  r^  r`  ra  rb  rd  ri  rk  rl  rm  rn  ro  rp  rq  rw  rx  ry  rz  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;
	"'

		

