o
    ŕ8Vaôö  ă                   @   sX  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z 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.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z? dd	 Z@d
d ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKd d! ZLd"d# ZMd$d% ZNd&d' ZOd(d) ZPd*d+ ZQd,d- ZRd.d/ ZSd0d1 ZTd2d3 ZUd4d5 ZVd6d7 ZWd8d9 ZXd:d; ZYd<d= ZZd>d? Z[d@dA Z\dBdC Z]dDdE Z^dFdG Z_dHdI Z`dJdK ZadLdM ZbdNdO ZcdPdQ ZddRdS ZedTdU ZfdVdW ZgdXdY Zhe8dZd[ Zid\d] Zjd^d_ Zkd`da Zldbdc Zmddde Zndfdg Zodhdi Zpdjdk Zqdldm Zrdndo Zsdpdq Zte8drds Zudtdu Zvdvdw Zwdxdy Zxdzd{ Zyd|d} Zzd~d Z{e8d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e8dź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ŇS )Óé    )'ÚSymbolÚSetÚUnionÚIntervalÚooÚSÚsympifyÚnanÚMaxÚMinÚFloatÚDisjointUnionÚ	FiniteSetÚIntersectionÚimagesetÚIÚtrueÚfalseÚ
ProductSetÚsqrtÚ
ComplementÚEmptySetÚsinÚcosÚLambdaÚImageSetÚpiÚPowÚContainsÚSumÚrootofÚSymmetricDifferenceÚ	PiecewiseÚMatrixÚRangeÚAddÚsymbolsÚzooÚRational)Ú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 s-J ttttt jt ju s;J ttttt jt ju sIJ tddd} ttttft j 	d| fĄd ksaJ ttttft j 	dĄdksqJ | | 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s¨J 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sJ ttdtdks"J tttthks.J tttfdtft jdtfhksBJ 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Šr;   é   FŠr;   r;   c                      s
   t t S ŠN)r   r6   Š ŠÚintsrC   ú</usr/lib/python3/dist-packages/sympy/sets/tests/test_sets.pyÚ<lambda>    ó   
 ztest_imageset.<locals>.<lambda>c                      s   t ttt S rB   )r   r6   r7   r8   rC   rD   rC   rF   rG   !   s    c                   S   s   t tttttS rB   )r   r   r6   r   r7   rC   rC   rC   rF   rG   "   ó    c                      s   t ttt  S rB   )r   r   r6   rC   rD   rC   rF   rG   $   ó    c                 S   ó   t | S rB   Šr   Šr6   rC   rC   rF   Úf&   s   ztest_imageset.<locals>.fc                 S   rK   rB   rL   rM   rC   rC   rF   rG   )   ó    r6   ŠZintegerc                    s   |   S rB   rC   rM   )ÚclashrC   rF   rG   /   rO   éţ˙˙˙)zx0 + xzx + x0zx1, x2c                 S   s
   t | |S rB   )r%   Šr6   r7   rC   rC   rF   rG   2   s   
r@   é   )r   ÚIntegersr   r6   ÚNaturalsÚ	Naturals0Úabsr&   ÚRealsÚ	_containsr   r3   Ú	TypeErrorÚ
ValueErrorr   r7   r   r   r   r8   r   r   Ústrr   ZlamdaÚexprZdummy_eq)r<   rN   Úx1Úx2rC   )rQ   rE   rF   Útest_imageset   sP   $ ""$(
˙˙˙˙˙ra   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   rV   rW   rU   Ú	RationalsrY   ÚUniversalSetÚis_emptyr   ŠÚsrC   rC   rF   Útest_is_empty8   s
   ˙rg   c                  C   sJ  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 s*J t
ddjdu s4J t
ttjd u s>J tt	dt	djdu sLJ tt	dt
ddjdu s[J tt	dt
ttjd u sjJ tt
ddt
ddjdu szJ tt	dt
ddjdu sJ tt	dt	d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
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 sJ tt jt	ttt jjdu s#J d S )NFTr;   r@   r   rT   éű˙˙˙)r   rV   rW   rU   rb   rY   rc   Zis_finite_setr   r   r   r6   r7   r   r   r   r   r   re   rC   rC   rF   Útest_is_finiteset@   s.   ˙   "&ri   c                   C   s4   t   tjj W d    d S 1 sw   Y  d S rB   )r5   r   r   Zis_EmptySetrC   rC   rC   rF   Útest_deprecated_is_EmptySet[   s   
"˙rj   c                  C   s0  t dtt dtddksJ t dtjtu sJ t t dt t dddks(J t t djtu s3J t tt tjks>J t tttjksHJ t t t tjksTJ t tttjks^J t tttjkshJ t tt tjkssJ t ttthks}J tt ddt	sJ t
ttddf} tt | | t	sJ t ddtjksŁJ t ddjdks­J 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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   FTr;   rT   Úa)r>   Úpositivec                   S   s   t dtjS ŠNr   )r   r   ÚImaginaryUnitrC   rC   rC   rF   rG   {   ó    z)test_interval_arguments.<locals>.<lambda>c                   S   s   t dtdddS )Nr   r8   FŠZextended_real)r   r   rC   rC   rC   rF   rG   |   rJ   c                   S   s   t tttj S rB   )r   r6   r   rn   rC   rC   rC   rF   rG   }   ó    c                   S   s   t ddtttS ŠNr   r;   Šr   r0   r6   r7   rC   rC   rC   rF   rG      rJ   c                   S   s   t dddtttS ŠNr   r;   Frs   rC   rC   rC   rF   rG      rI   c                   S   s   t ddttttS rr   )r   r8   r0   r6   r7   rC   rC   rC   rF   rG      rI   )r   r   Ú
right_openr   Ú	left_openr   r   r6   Ú
isinstancer   r   Úmeasurer   r3   r\   ÚNotImplementedError)ÚerC   rC   rF   Útest_interval_arguments`   s6    r{   c                  C   sz   t ddd} ttd| tddjt| dksJ tt| dtddjtd| ks,J td|  dĄtd| ks;J d S )Nrk   Tr=   r   rT   éý˙˙˙r;   )	r   r   r   Úsupr
   Úinfr   Úcontainsr/   Šrk   rC   rC   rF   Ú!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s(J tddjdks2J t||jdks<J t||| jdksHJ t| | jdksRJ tdtjdks\J tt tjdksgJ tt djdksrJ 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sŚJ t|djd ks°J 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, yr<   Tr=   Úp)rl   r:   )ÚnegativeÚnn)Znonnegativer;   r@   FrT   r   Šrv   Šru   )r&   r   r   rd   r   )r6   r7   r<   r   r:   r   rC   rC   rF   Ú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s%J t tddtddtddks7J t tddtddtddksIJ 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sqJ 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sJ 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s3J t tddgdd	 tdd
D ˘R  tddksNJ td} t tddtd| t tddt| ksjJ tt tddtd| syJ 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s¤J t t	 t	 ksŻJ 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sJ tdddtjB tdddks1J td} td}td}tjt| t||B t| t||ksSJ tddtd tddksdJ tddddtd tddddksyJ tddtd }tddtd }| 
|Ą}d|v rd|v rd|v sĄJ | |Ąr­| |ĄsŻJ 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 )Nr;   r@   rT   Té   Fr   c                 S   s   g | ]}t d | qS )ç      đ?Šr   )Ú.0r:   rC   rC   rF   Ú
<listcomp>Ŕ   s    ztest_union.<locals>.<listcomp>é
   r6   ÚhamÚeggsr7   r8   é   c                   S   s   t dddS )Nr;   r@   rT   Šr   rC   rC   rC   rF   rG   é   ro   ztest_union.<locals>.<lambda>)r   r   r   r   Úranger   r   r*   Úunionr   Ú	intersectÚ	is_subsetr3   r[   Úis_iterabler   r   rY   rU   )r6   r7   r8   ÚXÚYZXandYrC   rC   rF   Ú
test_union¨   s   $&$$$˙(&
˙˙
˙$
˙
˙"$
˙˙
˙&* $(,$
˙"
˙
"
˙r   c                  C   s4   t tdtdtddd} t| g d˘ksJ d S )NrT   r   r   FŠZevaluate)r   r   r   r;   r;   r;   r@   r@   r@   rT   rT   r   )r   r$   Úlist)ÚurC   rC   rF   Ú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 )Nr;   F)r   r6   r7   r   rd   rC   rC   rC   rF   Ú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s%J t dddt dd t ddddks9J t dddt ddd t ddddksNJ t ddtd tt ddddt ddddkshJ tjtt tjkstJ 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sJ 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 sJJ d S )Nr;   rT   r@   TFr   r   r   r   r   r   é˙˙˙˙)r   r   r   r   rY   r   ÚRopenÚLopenr6   r7   r   Úopenr   r   rV   rC   rC   rC   rF   Ú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 s!J t ddjdu s-J t|ddjd u s9J t t | dd t dksHJ t t dd t dksWJ tt fdd	 ttddtddtdddkstJ 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sŚJ dttd
dtddddvsˇJ 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s4J tt ttdtddtt tttddksNJ t td  t td } ttt  | sfJ t  }t| | | }|| |kszJ || |ksJ d S )Nr;   rT   r   r@   Fr   Tc                      s   t t dd S ŠNFr   )r   r   rC   ŠÚAÚCrC   rF   rG   +  rJ   z!test_Complement.<locals>.<lambda>r   r   r   éö˙˙˙r   za:czd:f)r   r   r   r   r3   r[   r   r   rY   rV   rU   rc   r   Ú
complementr   r   r   r6   r7   r&   r*   r   )ÚBÚDZA2ZB3rC   rĽ   rF   Útest_Complement  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 ]4|D ] | D ]t
t fdd t
t fdd qZqVt
tfdd t
tfdd qRdS )z1Tests that e.g. FiniteSet(1) * 2 raises TypeErrorc                 S   s   | | S rB   rC   Šrk   ÚbrC   rC   rF   rG   S  rO   z-test_set_operations_nonsets.<locals>.<lambda>c                 S   s   | | S rB   rC   r­   rC   rC   rF   rG   T  rO   c                 S   s   | | S rB   rC   r­   rC   rC   rF   rG   U  rO   c                 S   s   | | S rB   rC   r­   rC   rC   rF   rG   V  rO   c                 S   s   | | S rB   rC   r­   rC   rC   rF   rG   W  rO   c                 S   s   | |B S rB   rC   r­   rC   rC   rF   rG   X  rO   c                 S   s   | |@ S rB   rC   r­   rC   rC   rF   rG   Y  rO   c                 S   s   | |A S rB   rC   r­   rC   rC   rF   rG   Z  rO   r;   r@   r   c                      s
    S rB   rC   rC   ŠÚniÚopÚsirC   rF   rG   o  rH   c                      s
    S rB   rC   rC   rŻ   rC   rF   rG   p  rH   c                      s
    t   S rB   )ÚobjectrC   Šr˛   rC   rF   rG   q  rH   c                      s
    dh S ŠNr;   rC   rC   r´   rC   rF   rG   r  rH   N)r   r6   r7   r   r   r   r   r   r   r   r3   r[   )ÚopsZSxZSyÚsetsZnumsrC   rŻ   rF   Útest_set_operations_nonsetsP  s<   řř
ţúr¸   c                	      s`  t 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s8J t dddd tjĄtt t dddt dtddksUJ t dddd tjĄtt t dddt dtddksrJ tj tjĄtjks~J tj tjĄtjksJ tj tjĄtjksJ tj tjĄtjks˘J 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sAJ tdt tjĄtt t dddt dtdd ttddkscJ t ddt dd  tjtj Ą tfd	d
dD sJ t fdd
dD rJ tfdd
dD r J t fdd
dD sŽJ d S )Nr   r;   TFr@   rT   r   r   c                 3   ó    | ]}| v V  qd S rB   rC   Šr   ÚptŠÚsquarerC   rF   Ú	<genexpr>  ó    z"test_complement.<locals>.<genexpr>)Šr   r   Šç      ŕ?rÂ   Šr;   r   rA   c                 3   rš   rB   rC   rş   ŠÚ	notsquarerC   rF   rž     s    
˙c                 3   rš   rB   rC   rş   rź   rC   rF   rž   Ą  rż   ))r   r   )ç      ř?rÂ   )r   r   c                 3   rš   rB   rC   rş   rÄ   rC   rF   rž   ˘  rż   )r   rŠ   r   rY   r   r   rc   r   r   ÚNegativeInfinityÚInfinityr6   r   ÚallÚanyrC   rC   )rĹ   r˝   rF   Útest_complementu  sj   ˙˙˙˙˙˙˙˙
ţ˙˙ţ
˙& ˙ţ˙ rË   c                  C   s4  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 s,J |  tjĄtju s7J td}tdd tddĄtddksMJ tdd tdddĄtdddksaJ tddd tddĄtddd	d	ksvJ 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sŞJ 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sJ ttddtdd
 tddĄttddtddks3J 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ddĄtj
kskJ 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sTJ tdd t	dd
Ąt	dd
ksgJ tdddd t	dĄtj
ksyJ 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 rB   )r   rU   ÚintersectionŠr   ÚirC   rC   rF   rž   Ś  ó    z"test_intersect1.<locals>.<genexpr>c                 s   s     | ]}|  tjĄ|u V  qd S rB   )rĚ   r   rU   rÍ   rC   rC   rF   rž   ¨  rĎ   r6   r   r@   r;   TFrT   r   r   r   r   é   r   zm, nr=   )rÉ   r   rV   rW   rĚ   r   r   r   r   r   r   r   r7   r&   rY   )rf   r6   r9   r:   rC   rC   rF   Ú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s!J tddd	} t td
dt| d d v du s:J tt fdd t td
dtj	tj	ksQJ t tt
 t
tt
 | tt
 | ksfJ 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 )Nr;   r@   rT   r   Fr   r6   Tr=   r   rĐ   c                      s   d v S ŠNr@   rC   rC   ŠrÎ   rC   rF   rG   ď  rO   z#test_intersection.<locals>.<lambda>Šr@   r@   )r@   r@   r@   c                      ó   t  S rB   )r   rC   rÓ   rC   rF   rG   ú  rO   )r   r   r   r   Úsetr   r   r3   r[   r   r   rU   rV   rY   Z_argsetÚ	frozensetÚ	ComplexesÚComplexInfinityrc   )r6   Úlinerk   rC   rÓ   rF   Ú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   r;   r@   rT   r   )r   r   rY   r   r   r   r   r   )r:   rk   rŽ   ÚcrC   rC   rF   Ú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   r@   r;   FrT   r   T)r   Zis_disjointrC   rC   rC   rF   Útest_is_disjoint  s   "rŢ   c                  C   sv   t dd} t ddd}t|  Ą dksJ t|  Ą tdus!J t| | Ą dks,J t| | Ą tdus9J d S )Nr;   r@   rT   rĐ   )r   r   Ú__len__r   )rŚ   rŞ   rC   rC   rF   Ú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sJ t tjtjtjtjd ks*J t tjtjks4J t tjtjtjtj ksCJ t tjtjtjtjtj tj ksWJ t tjtjtjtjtj tj  Ą ksmJ dt tjvsvJ 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s˘J dt tjtjtjv sŻJ dtjd 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 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 ]} t tjf|   }d|  |v sJ d|vs J qtjtj tj tjtjtj  ks7J tj}tj}t	}d}||v sHJ ||v sOJ ||f|| v sZJ ||  ||f}| v siJ ||f   v stJ ||    vsJ t
tdd  t  t dd tdD  W d    n	1 s w   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íJ  J t
t fdd t
t fdd t
tdd  t tjtj}| dĄtju sJ | dĄtju s#J | tĄtt|ddks2J | tĄ tdĄtju sAJ | tdfĄ tdĄtju sRJ | ttfĄtttf|ddkseJ ttttf|spJ td|tju s{J d S )Nr;   r@   rT   )r;   r?   Šr;   r@   rT   )r?   rT   )r;   )r@   rT   rC   r   c                   S   s
   t jd S )Nr   )r   rY   rC   rC   rC   rF   rG   S  rH   z!test_ProductSet.<locals>.<lambda>c                 s   s    | ]}t |V  qd S rB   r   Šr   rf   rC   rC   rF   rž   U  rż   z"test_ProductSet.<locals>.<genexpr>c                   S   s   t d S rB   )r   rC   rC   rC   rF   rG   V  rO   r   c                      s
      tĄS rB   ŠÚas_relationalr6   rC   ŠZS3rC   rF   rG   ^  rH   c                      s      tdĄS rľ   ră   rC   rĺ   rC   rF   rG   _  ro   c                   S   s   t tdd ttĄS rr   )r   r   rä   r6   r7   rC   rC   rC   rF   rG   `  ó    Fr   )r   r   rY   Úflattenr   r   r   r   rU   r   r3   r\   r5   r[   rä   r6   r7   r0   r1   r+   r   r   r   r   Úsubsr*   )r°   ZRnZS1ZS2r_   r`   Zx3ZZ2rC   rĺ   rF   Útest_ProductSet!  s|    (,*˙




˙,ţ"&ré   c                   C   s0   t ttdds
J t tttddsJ d S rr   )r*   r   r   rC   rC   rC   rF   Ú(test_ProductSet_of_single_arg_is_not_argm  s   rę   c                   C   s8   t tjtjjdksJ t ttdtjjd ksJ d S )NFr;   )r   r   rU   rY   rd   r   r6   rC   rC   rC   rF   Útest_ProductSet_is_emptyr  s    rë   c                  C   sL   t ddd} td|  | dĄtddksJ t| d | dĄtjks$J d S )Nrk   Tr=   r   r@   )r   r   rč   r   r   r   rC   rC   rF   Útest_interval_subsw  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s0J d S )Nr   r;   TF)r   Zto_mpir)   ÚtyperC   rC   rC   rF   Ú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s,J t t tj Ą t t tdks?J tdt Ą ttdtksOJ d S )	Né   é@   z0.171875z0.5Tr   r@   z2.0)r   r   ZHalfÚevalfr   r6   r   r   rC   rC   rC   rF   Útest_set_evalf  s   
˙
˙&$rň   c                  C   s¤  t ddd} tddjdksJ td| j| ksJ td| j| d ks&J ttddtddjdks6J ttddtddtd	d
djdksKJ tddt| t djdksZJ tjjdksbJ 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J  J || jdksJ || jdksŁJ |tddd jdks°J | |ĄjdksşJ || jtu sĂJ |tddd jt	u sĐJ d S )Nrk   Tr=   r;   rT   r@   r   r   r   rĐ   é   rh   r   é   éd   éŻ   éK   é   )
r   r   rx   r   r   r   r   r   r   r	   )rk   r˝   ZoffsetsquareZbandrC   rC   rF   Útest_measure  s(     ˙ rů   c                  C   sF  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 s-J tdd tddddĄs<J tdd tddddĄdu sMJ td t ddĄsYJ tdd t ddddĄdu sjJ 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 sJ 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
ĄsJ tj tj
ĄsJ tt ttĄd u s,J tt tt ttĄĄdu s>J tt tt ttd ĄĄdu sRJ t dd t ddddĄdu sdJ 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 sJ 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 s!J d S )Nr   r;   r@   TrT   Fr   r   rĐ   c                   S   ó   t j dĄS rľ   )r   r   r   rC   rC   rC   rF   rG   ž  ro   z test_is_subset.<locals>.<lambda>r   rR   r:   rP   r|   r¨   r   rő   r   )r   r   r   r   r   r   r3   r\   ÚissubsetrV   rU   rW   r6   r7   rč   r   r   r$   r   r   rY   )r:   rC   rC   rF   Ú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 s,J ttdd  d S )	Nr   r;   r@   TrT   Fc                   S   ó   t dd dĄS rr   )r   Úis_proper_subsetrC   rC   rC   rF   rG   ß  rq   z'test_is_proper_subset.<locals>.<lambda>)r   rţ   r   r   r   r3   r\   rC   rC   rC   rF   Útest_is_proper_subsetÚ  ó   r˙   c                   C   sČ  t dd t ddĄdksJ t dd t ddĄsJ tdd tddddĄdks-J tdd tddddĄdks>J td t ddĄdksLJ 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swJ 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s¸J 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   r;   r@   FrT   r   r   Tc                   S   rú   rľ   )r   r   Úis_supersetrC   rC   rC   rF   rG   ő  ro   z"test_is_superset.<locals>.<lambda>)	r   r  r   r   r   r   r3   r\   Ú
issupersetrC   rC   rC   rF   Ú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 s,J ttdd  d S )	Nr   r;   r@   FrT   Tc                   S   rý   rr   )r   Úis_proper_supersetrC   rC   rC   rF   rG     rq   z)test_is_proper_superset.<locals>.<lambda>)r   r  r   r   r   r3   r\   rC   rC   rC   rF   Útest_is_proper_supersetü  r   r  c                     sÖ  t dd dĄtju sJ t 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 s8J t dddd dĄtju sGJ t dddd dĄtju sVJ t dddd dĄtju seJ t dddd dĄtju stJ 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 s˘J tt t	Ąd u s­J 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scJ 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 sĄJ tt ddt dd dĄtju sľJ 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sJ 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s9J 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siJ d S )Nr   r@   r;   rT   TFr6   c                   S   s   t ttv S rB   )r6   r   r7   rC   rC   rC   rF   rG     ro   ztest_contains.<locals>.<lambda>r­   c                      s   dt  v S rľ   r   rC   r   rC   rF   rG     ro   é	   r   r   gńżc                 3   rš   rB   rC   Šr   ÚitemŠÚfsetrC   rF   rž   )  rż   z test_contains.<locals>.<genexpr>c                 3   s     | ]}   |Ątju V  qd S rB   )r   r   r   r  r	  rC   rF   rž   *  rĎ   r   rĐ   ) r   r   r   r   r   r   r   r7   rZ   r6   r3   r[   rč   Ú	sympy.abcrk   rŽ   rw   r   r   r(   r   rČ   rÉ   r   r    rY   r1   r0   ZOner   rŘ   rŮ   )rŽ   Zrad1Zrad2Ús1Ús2ÚitemsrC   )rk   r
  rF   Útest_contains  sX   $$( B(((.&&*
˙"
˙r  c                     sÜ   t dtdd   ĄttjkdkksJ tt fdd tdddd   Ąttjk dk ks<J t ddd	} td  | ĄdksPJ t d
dd tt t  Ąttj	 k  tj
k kslJ d S )Nr6   r   r;   c                      ó    v S rB   rC   rC   Šrz   r6   rC   rF   rG   C  rO   z(test_interval_symbolic.<locals>.<lambda>TrÜ   Fr=   rz   rp   )r   r   r   r0   r   ÚZeror3   r[   r   rÇ   rČ   )rÜ   rC   r  rF   Útest_interval_symbolic?  s   
""˙r  c                     sZ  t dtdd} tdd}t| | Ątttjkdkttdkdkks0J tt	fdd  
Ą}| ĄksHJ | dĄtu sRJ | d	Ątu s\J | d
Ątu sfJ | dĄtu spJ | dĄtu szJ 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 sŤJ d S )Nr6   r   r;   r@   rT   c                      r  rB   rC   rC   )Úi3r6   rC   rF   rG   S  rO   z%test_union_contains.<locals>.<lambda>g      ŕżrÂ   rĆ   g      @g      @Tr   r   r   rĐ   c                 3   s    | ]}| vV  qd S rB   rC   Šr   ÚelŠÚUrC   rF   rž   ]  rż   z&test_union_contains.<locals>.<genexpr>r   c                 3   rš   rB   rC   r  r  rC   rF   rž   ^  rż   )r@   r   r   )r   r   r   rä   r1   r0   r   r  r3   r[   r   rč   r   r   r   r   rÉ   )Úi1Úi2rz   rC   )r  r  r6   rF   Útest_union_containsM  s    


:
&"r  c                   C   s(   t ddjdu s
J t jdu sJ d S rt   )r   Z	is_numberr   rC   rC   rC   rF   Útest_is_numbera  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 s!J d S )NrT   r   FTz-inf)r   Zis_left_unboundedr   r   rC   rC   rC   rF   Útest_Interval_is_left_unboundedf  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 )NrT   r   FTz+inf)r   Zis_right_unboundedr   r   rC   rC   rC   rF   Ú test_Interval_is_right_unboundedl  s   r  c                  C   s  t d} tdddd | Ąttd| t| dksJ tdddd | Ąttd| t| dks2J tdddd | Ąttd| t| dksIJ tdddd | Ąttd| t| dks`J tt ddd | Ąttt | t| dksyJ tt ddd | Ąttt | t| dksJ tdtdd | Ąttd| t| tksŠJ 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 )Nr6   r   r@   FTr   rR   r   r=   r7   )r   r   rä   r0   r-   r.   r   rS   rC   rC   rF   Útest_Interval_as_relationalr  s,   ˙˙˙˙22... 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s2J d S )Nr6   r7   r;   r@   rh   )r   r   rä   r1   r+   rS   rC   rC   rF   Ú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s#J 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| dk| dk t| dkszJ d S )Nr6   r   r;   r@   TrT   r   )r   r   r   rä   r1   r0   r-   r+   r.   Zas_setr   r,   r    rĄ   rM   rC   rC   rF   Ú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s&J d S ŠNr6   r   r;   r@   Fr   )r   r   r   r   rä   r0   r-   r+   rM   rC   rC   rF   Ú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s&J d S r"  )r   r   r   r   rä   r0   r-   r,   Šr6   r^   rC   rC   rF   Ú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s$J d S r"  )r   r   r   r   rä   r,   r$  rC   rC   rF   Ú"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s'J d S r"  )r   r!   r   r   rä   r2   r+   r-   r$  rC   rC   rF   Ú&test_SymmetricDifference_as_relationalˇ  s   2r'  c                   C   sH   t j tdĄt ju sJ t j t jĄt jksJ t jjt jks"J d S )Nr6   )r   r   rä   r   r   r   rc   ÚboundaryrC   rC   rC   rF   Útest_EmptySet˝  s   r)  c               	   C   sř  t d} tddd}tddd}t||}| |Ą}| |Ąr$| |Ąs&J | |Ąs-J |tdks5J |jdkr?|jdksAJ |jdkrK|jdksMJ t| ddjt| dks[J t| ddjt| dksiJ tt	j
t	j
kssJ ttdddtdddksJ tdtdddksJ tdt|d	| d
| d tsJ ||kdu sŚJ ||kdu sŽJ ||k du sśJ ||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 tdtdksúJ d S )Nr6   r;   r@   rT   r   r   rá   r?   rh   r   Fr   )r   r   r   r   r   r~   r}   r
   r   r   r   r   r   )r6   rŚ   rŞ   ZAorBZAandBrC   rC   rF   Útest_finite_basicĂ  s4   

 r*  c               
      s  d\} }t dd}tdddddd}tdddd}t| | || }d	|v s(J d|vs.J | |f d v s8J d
||  Ą v sBJ d|| v sJJ | ddf | |  Ą v sYJ | dfdf | | v sgJ 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sJ t	t
jt
j dks*J t	t
j  dks6J tt fdd d S )N)ÚHÚTr   r;   r@   rT   r   r   rĐ   rŔ   )rÂ   rÂ   rÂ   )rÁ   rÂ   Trh   r¨   r   gÉ?rÂ   é   c                      s   t  tdd S )Nr   r@   )Úlenr   rC   ŠZcoinrC   rF   rG     rJ   z$test_product_basic.<locals>.<lambda>)r   r   rç   r   rÖ   r   rŠ   r   r   r.  r   r   r3   r[   )r+  r,  Z	unit_lineZd6Zd4r˝   ZHHZTTrC   r/  rF   Útest_product_basicç  sD   

,˙
˙˙
ý""$r0  c                     sî   t d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 s8J  tjĄr@J t fdd fD sVJ tfdd fD riJ     tjĄruJ d S )Nr6   T)r>   Zfiniter   r   r   rř   r;   r@   é   éü˙˙˙rő   ÚHamÚEggsc                 s   s    | ]	}|  tjĄV  qd S rB   Šr   r   rY   râ   rC   rC   rF   rž     s    ztest_real.<locals>.<genexpr>c                 3   s4    | ]} fD ]}||   tjĄV  qqd S rB   r5  )r   rk   rŽ   )rŚ   rŞ   r§   r   ÚJrC   rF   rž     s   2 c                 3   s     | ]}|    tjĄV  qd S rB   r5  )r   rk   )rŤ   rC   rF   rž     rĎ   )	r   r   r   r   ZPirÉ   r   rY   rĘ   rM   rC   )rŚ   rŞ   r§   rŤ   r   r6  rF   Ú	test_real  s   



 ,&r7  c                  C   sn  t ddd} t ddd}tddtd jdksJ tddtd jdks(J tddt|  jtd| ks9J tddt|  jtd| ksJJ tdd| jtd| ksXJ tdd| jtd| ksfJ tdd| |jtd| |ksvJ tdd| |jtd| |ksJ tdd| |tjtj	jtjksJ tdd| |tjtj	jtj	ks¨J td	d
jtd	d
ksľJ d S )Nr6   Tr=   r7   r   r;   r@   r   r3  r4  )
r   r   r   r}   r~   r
   r   r   rČ   rÇ   rS   rC   rC   rF   Útest_supinf   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s,J | jt j	u s4J | j
t jks<J |  dĄt ju sFJ d S )Nr6   r@   r   r   )r   rc   r   rä   r   r   r   r   rx   rČ   r(  r   r   )r  r6   rC   rC   rF   Útest_universalset3  s   r9  c                  C   s8   t dd} tddd}t| |  | | | |  ksJ d S )Nr   r@   r;   )r   r   r   )rÚ   ZpointsrC   rC   rF   Ú test_Union_of_ProductSets_shares?  s   
"r:  c                  C   s<   t ddjt ksJ tddd} t d| j| hksJ d S )Nr   r;   r6   Tr=   )r   Zfree_symbolsrÖ   r   rM   rC   rC   rF   Útest_Interval_free_symbolsE  s   r;  c                  C   s¨  ddl m}  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s:J t||d tdd	ddtddddksPJ t||d tdd	tddksbJ t||d tdd	ddtddddksxJ 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| 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s1J tt|tt	|tdd	tt|tt	|tdd	ksRJ d S )Nr   )r(   r6   Tr=   rk   r@   rR   r;   r2  Fr   rT   é   éN   éZ   iÝ˙˙˙c                 S   s   d|  S rŇ   rC   rM   rC   rC   rF   rG   c  rO   z%test_image_interval.<locals>.<lambda>)
Zsympy.core.numbersr(   r   r   r   r   r   r   r   r   )r(   r6   rk   rC   rC   rF   Útest_image_intervalL  sD   $˙˙$˙˙(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s=J tt|tddtddksMJ d S )Nr   r;   r@   r   rT   Tr   )r@   Trh   é   )r"   r6   r   r   r   r(   r   r   )rN   Úf1rC   rC   rF   Útest_image_piecewisel  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s8J d S )	Nr6   Tr=   r7   r@   rR   r   r   )r   r   r   r   r   r
   rS   rC   rC   rF   Útest_image_Intersections  s
    0˙rC  c                  C   s8   t ddd} t| d|  tdddtdddksJ d S )	Nr6   Tr=   r@   r;   rT   r   rĐ   )r   r   r   rM   rC   rC   rF   Ú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s"J d S )Nr6   Tr=   r@   rR   r   r;   rT   r   r  )r   r   r   r   rM   rC   rC   rF   Útest_image_Union  s    ˙rE  c                  C   s,   t ddd} t| d|  tjtjksJ d S )Nr6   Tr=   r@   )r   r   r   r   rM   rC   rC   rF   Ú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 rB   )r   r   rY   r   r   r   r   rC   rC   rC   rF   Útest_issue_5724_7680  s    rG  c                   C   s4   t djt dksJ tdd ttfD sJ d S )Nr;   c                 s   s8    | ]}t tfD ]}td d||jtd dkV  qqdS )r   r;   N)r   r   r   r(  r   )r   rv   ru   rC   rC   rF   rž     s    ˙$˙z test_boundary.<locals>.<genexpr>)r   r(  rÉ   r   r   rC   rC   rC   rF   Ú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s+J t ddtd jtdddks=J tt ddt dd	dd
jtdd	ksRJ tt ddt dddd
jtddksgJ tt ddddt dd	dddd
jtddd	ksJ d S )Nr   r;   r@   rT   FTr   r   rô   r   )r   r(  r   r   rC   rC   rC   rF   Ú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   rC   rC   rC   rF   Ú#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s"J 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   r;   Tr@   )r   r(  r   )Zopen_squareZsecond_squarerC   rC   rF   Útest_boundary_ProductSet­  s   
˙˙ţý˙rK  c                  C   s$   t ddtd } | j| ksJ d S rr   )r   r   r(  )Z
line_in_r2rC   rC   rF   Ú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 sJ t ddddjdu s$J tdddjdu s/J d S ŠNr   r;   FTr@   rT   )r   Zis_openr   rC   rC   rC   rF   Ú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 sJ tdddjdu s#J d S rM  )r   Z	is_closedr   rC   rC   rC   rF   Ú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   r;   FT)r   ÚclosurerC   rC   rC   rF   Útest_closureĚ  ó   &rR  c                   C   s&   t ddddjt ddddksJ d S rP  )r   ZinteriorrC   rC   rC   rF   Útest_interiorĐ  rS  rT  c                   C   s   t tdd  d S )Nc                   S   s
   t tjv S rB   )r6   r   rY   rC   rC   rC   rF   rG   Ő  rH   z!test_issue_7841.<locals>.<lambda>)r3   r[   rC   rC   rC   rF   Útest_issue_7841Ô  ó   rU  c                  C   s  t tddtddsJ t tddtdddksJ tdd} tdd}t | | s-J t | |dks6J t | | | | sAJ t | | ||  dksNJ tt ttthtths]J t ttth ttĄtthtju srJ 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 sľJ 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   r;   r@   FrC   )r+   r   r   r*   r6   r7   rč   r   r   r   r   )r  r  r  r  rC   rC   rF   Útest_EqŘ  s(   

**..$$

"rW  c               	      s
  t dddddd t ddddd	} tdd	t | d
djdu s"J t d
djd u s.J t t | d
d t ddddddd	ksCJ 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skJ 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   r;   r@   rT   r   r   rĐ   r-  r   Fr   Tc                      s   t t dd S r¤   )r   r!   rC   rĽ   rC   rF   rG      rJ   z*test_SymmetricDifference.<locals>.<lambda>)	r   r   r!   r   r3   r[   r   r   r   )rŞ   rC   rĽ   rF   Útest_SymmetricDifferenceö  s<   
˙˙˙˙˙
˙^.
˙˙˙rX  c                  C   sH   ddl m}  tddd}t| | tjĄttjt| |ks"J d S )Nr   )Úlogrk   Tr=   )Z&sympy.functions.elementary.exponentialrY  r   r   r   r   rY   r   )rY  rk   rC   rC   rF   Útest_issue_9536  s   0rZ  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s1J ttdd|tttddddtdddd|ksMJ t|tjt|tjddks]J t|tddt|tddddksqJ d S )Nr:   r@   Fr   r;   rT   T)r   r   r   r   rY   r   r   )r:   rk   rŽ   rC   rC   rF   Útest_issue_9637  s   
 ("˙ ,r[  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s1J d S )Nr;   Fr   r@   rT   )r   r   r7   r6   rC   rC   rC   rF   Útest_issue_9808   s   ,˙r\  c                   C   sF   t tt ttdtt tksJ tt t dĄtju s!J d S rľ   )r   r   r   r   r   r   r   rC   rC   rC   rF   Útest_issue_9956'  s   & r]  c                  C   sâ  t dt} tj}tg d˘}t|| tttttt| ttks#J ttdtttttd| t| tttks;J ttttt	ttt
|tttt
httt	h|ksWJ ttttdtttt	|ttdtttttt	|ddkswJ 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s¨J 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   r;   r@   rT   Fr   )r   r   r   rY   r#   r   r   r9   r:   r6   r8   r   r   )rÎ   r<   ZmatrC   rC   rF   Útest_issue_Symbol_inter,  s6   
˙˙˙˙˙˙(˙*˙r^  c                   C   s   t jd sJ d S )Nr   )r   rW   rC   rC   rC   rF   Útest_issue_11827B  rV  r_  c                  C   s   t d t d d  } tt | tjttt dtdtddks!J tt | tddtt dks2J tt | tddttt dttdd	tksLJ d S )
Nr@   r   r   r;   TrR   rT   r  r   )r6   r   r   rY   r   r   r   r(   )rN   rC   rC   rF   Útest_issue_10113F  s   ."8r`  c                  C   s<   t tdd  tddd} tttjt| | gksJ d S )Nc                   S   s   t ttjttS rB   )r   r   r   rY   r   r6   rC   rC   rC   rF   rG   O  rI   z"test_issue_10248.<locals>.<lambda>rŚ   Tr=   )r3   r[   r   r   r   r   rY   r   )rŚ   rC   rC   rF   Útest_issue_10248M  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s#J ttj| ttjtt ddt ddddks<J d S )Nr   r;   r@   rT   Fr   )r   r   r   rc   r   rV   r   rC   rC   rF   Útest_issue_9447U  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 )
Nr@   rT   FTc                   S   s   t ddk S ŠNr@   rT   r   rC   rC   rC   rF   rG   `  ro   z"test_issue_10337.<locals>.<lambda>c                   S   s   t ddkS rc  r   rC   rC   rC   rF   rG   a  ro   c                   S   s   t ddkS rc  r   rC   rC   rC   rF   rG   b  ro   c                   S   s   t ddkS rc  r   rC   rC   rC   rF   rG   c  ro   )r   r3   r[   rC   rC   rC   rF   Útest_issue_10337]  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s#J qt	ddd}t	dd	d
}|d t||d v s=J |t||d vsHJ tddttddtddv sZJ tt
 t
 t
Ątju shJ tt
 t
 t
 Ątju swJ d S )Nr;   r@   r   r   r6   Tr=   ÚnrFrp   r   )r   r   r   r   rŮ   rn   rČ   ZNaNrÇ   r   r   r   r   )ZbadÚintervalrÎ   r6   re  rC   rC   rF   Útest_issue_10326f  s&   ř

$"rg  c                  C   sb   t j} tddd}t|t}t j}| | ||  ksJ | | ||  ks%J || || ks/J d S )Nrk   Tr=   )r   rc   r   r   r   rY   )r  rk   Zinf_intervalÚRrC   rC   rF   Útest_issue_2799~  s   
ri  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  rC   rC   rC   rF   Útest_issue_9706  s   ""rj  c                  C   sŚ   t tt ttt} t tt ttt }tt ttt | ks%J tttt t | ks3J tt ttt  |ksBJ tt tt t |ksQJ d S rB   )r   r   r   r   )Zreals_plus_infinityZreals_plus_negativeinfinityrC   rC   rF   Útest_issue_8257  s   "rk  c                   C   s,   t jt j tks
J t jt j tksJ d S rB   )r   rU   r   rY   rC   rC   rC   rF   Útest_issue_10931  s   rl  c                  C   sf   t tt ttt dd} t tt tj| ksJ t tjttdd} t tttj| ks1J d S r¤   )r   r   r   r   r6   r   rY   )ZsolnrC   rC   rF   Útest_issue_11174  s   rm  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s2J d S )Nr@   r;   r   )	r   r   r:   r   r   r   rU   r   r   rC   rC   rC   rF   Útest_issue_18505Ľ  s   ..˙rn  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s%J t  tt tttgĄttks8J 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~J  J tdt t td@ tdtdt t @   krŞt tdt t tdddks­J  J tdtt@ tttd@   krÍt tdttddksĐJ  J tthttth@ t tthttthddksëJ d S )Nr   r@   rT   r;   Fr   )r   r   r   r6   Z_handle_finite_setsr7   rC   rC   rC   rF   Útest_finite_set_intersectionŞ  s*   "(&˙ţý˙ţ$˙˙ro  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sJJ tt t   ksVJ tdhdht ddksdJ tddhdd
ht dkssJ d S )Nr;   r@   c                      rŐ   rB   r   rC   Šrˇ   rC   rF   rG   Ĺ  rO   z5test_union_intersection_constructor.<locals>.<lambda>c                      rŐ   rB   Šr   rC   rp  rC   rF   rG   Ć  rO   c                      ó   t t S rB   )r   ÚtuplerC   rp  rC   rF   rG   Ç  ro   c                      rr  rB   )r   rs  rC   rp  rC   rF   rG   Č  ro   c                      ó   t dd  D S )Nc                 s   ó    | ]}|V  qd S rB   rC   rÍ   rC   rC   rF   rž   É  ó    úHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r   rC   rp  rC   rF   rG   É  rJ   c                      rt  )Nc                 s   ru  rB   rC   rÍ   rC   rC   rF   rž   Ę  rv  rw  rq  rC   rp  rC   rF   rG   Ę  rJ   rT   )r   r3   Ú	Exceptionr   rÖ   r   rC   rC   rp  rF   Ú#test_union_intersection_constructorÂ  s   "ry  c                   C   s(   t tt t dĄt dtĄvsJ d S rm   )r'   r   r   r˘   r   rC   rC   rC   rF   Útest_Union_containsŐ  s   ˙rz  c                   C   s*   t tttftj tjd Ądu sJ d S )Nr@   T)r   r6   r   rY   r   rC   rC   rC   rF   Útest_issue_16878bÚ  s   *r{  c                  C   s*  t tdddtdddtddd tĄtdddtddd ks#J t tddtdd tĄttddtd tddtd ksFJ t tddtdd tĄttddtd tddtd ksiJ 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sJ t tjtddtj tĄtddtd ks°J 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sJ d S )Nr;   r@   rT   r   r   r   r   c                   S   s   t tdS )Nr:   )r   r   rC   rC   rC   rF   rG   ë  ro   z$test_DisjointUnion.<locals>.<lambda>r6   r7   r8   )r   r   Zrewriter   r   r   r   r   r3   r[   r   )r6   r7   r8   rC   rC   rF   Útest_DisjointUnioná  s   FFF2*2.Fr|  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 s%J d S )NTr;   r@   rT   F)r   r   r   rd   r   rC   rC   rC   rF   Ú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 sJ t tdddtjtt	t
jdu s-J t tjtjjdu s9J d S )NTFr;   r@   rT   )r   r   rU   rV   rb   r   r   rY   r   r6   r7   rC   rC   rC   rF   Ú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 s,J dt tdddtdddtdddv sBJ 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 snJ 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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 s$J tdft tttttjttv s8J tdft tttttjttv sLJ dt tddtddv s\J dt tddtddv slJ 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   r;   r@   )r   r;   )r   r@   rĂ   rA   r?   )r@   r   Šr@   r;   rÔ   )r   r;   r@   )r   rÂ   rÂ   )r   r   )rÂ   r   )rÂ   r;   )rĆ   r   )rĆ   r;   )r   r   r6   r7   r8   r   r   r   rC   rC   rC   rF   Útest_DisjointUnion_containsý  s(   ,,,,,,,,,,,((((   $r  c                     s8  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 s+J | |Ą t }||v s:J | |Ą t }||v sIJ | |Ą t }||v sXJ | |Ą t }||v sgJ | |Ą t }||v svJ | |Ą t }||v sJ | |Ą tt	 fdd tt
d	d  d S )
NrT   r   ró   r  r;   ))rT   r   )r   r   )ró   r   )r  r   c                      rŐ   rB   )ÚnextrC   ŠÚitrC   rF   rG   -  rO   z)test_DisjointUnion_iter.<locals>.<lambda>c                   S   ó   t ttddtjS rr   )Úiterr   r   r   r   rC   rC   rC   rF   rG   /  rć   )r   r   r6   r7   r8   r  r  Úremover3   ÚStopIterationr\   )rŤ   ZL1ZL2ZnxtrC   r  rF   Ú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s(J tt	dd  d S )NrT   r   ró   r  c                   S   r  rr   )r.  r   r   r   r   rC   rC   rC   rF   rG   4  rć   z(test_DisjointUnion_len.<locals>.<lambda>)
r.  r   r   r6   r7   r8   r   r   r3   r\   rC   rC   rC   rF   Útest_DisjointUnion_len1  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 s(J t dd}|| v s3J |  | Ąs:J | | ĄrAJ d|v sGJ t t ddt ddd}| |ĄsZJ |  |ĄsaJ d S )Nr;   r@   r   )r   r+   rű   )rŞ   rŚ   r§   rC   rC   rF   Útest_issue_200896  s   
r  c                  C   sŚ   t dd} t| | }t dddd}| |Ądu sJ t d}| |Ądu s'J t|| Ą tju s3J t| | Ą tju s?J tdhth Ą tdhthksQJ d S )	Nr;   r@   rA   r?   r  rÔ   TF)	r   r   r   r+   Úsimplifyr   r   r   r6   )rk   rŽ   rÜ   ÚdrC   rC   rF   Útest_issue_19378E  s   

(r  c                  C   s,   t d } t|  dĄttddksJ d S )Ng-DTű!	@r@   z3.23108914886517e-15)r   r   rń   r   rM   rC   rC   rF   Útest_issue_20379P  s   $r  c                  C   s4   t dtdd tdd  } |  Ą dhksJ d S )Nr;   r@   )r   r   r   r  )r   rC   rC   rF   Útest_finiteset_simplifyU  s   r  N)ĽZsympyr   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(   Zmpmathr)   Zsympy.core.exprr*   Zsympy.core.relationalr+   r,   r-   r.   r/   Zsympy.logicr0   r1   r2   Zsympy.testing.pytestr3   r4   r5   r  r6   r7   r8   r9   r:   ra   rg   ri   rj   r{   r   r   r   r   r   rŁ   rŹ   r¸   rË   rŃ   rŰ   rÝ   rŢ   rŕ   ré   rę   rë   rě   rî   rň   rů   rü   r˙   r  r  r  r  r  r  r  r  r  r   r!  r#  r%  r&  r'  r)  r*  r0  r7  r8  r9  r:  r;  r?  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rN  rO  rR  rT  rU  rW  rX  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rd  rg  ri  rj  rk  rl  rm  rn  ro  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  rC   rC   rC   rF   Ú<module>   sŕ   ¤ '$	L1%0@#	L	1;
	$' 

		
