o
    *Î®ch ã                   @   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 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©rA   é   F©rA   rA   c                      s
   t t S ©N)r-   r<   © ©ÚintsrI   úA/tmp/pip-target-vg8gfxp4/lib/python/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   ó    c                   S   s   t tttttS rH   )r-   r   r<   r   r=   rI   rI   rI   rL   rM   1   ó    c                      s   t ttt  S rH   )r-   r   r<   rI   rJ   rI   rL   rM   3   ó    c                 S   ó   t | S rH   ©r   ©r<   rI   rI   rL   Úf5   s   ztest_imageset.<locals>.fc                 S   rR   rH   rS   rT   rI   rI   rL   rM   8   ó    r<   ©Úintegerc                    s   |   S rH   rI   rT   )ÚclashrI   rL   rM   >   rV   éþÿÿÿ)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(   ÚlamdaÚexprÚdummy_eq)rB   rU   Úx1Úx2rI   )rY   rK   rL   Útest_imageset    sP   $ ""$(
ÿÿÿÿÿrk   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   r^   r_   r]   Ú	Rationalsra   ÚUniversalSetÚis_emptyÚEmptySet©ÚsrI   rI   rL   Útest_is_emptyG   s
   ÿrr   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 )NFTrA   rF   r   r\   éûÿÿÿ)r   r^   r_   r]   rl   ra   rm   Úis_finite_setro   r&   r(   r<   r=   r)   r,   r'   r$   r%   rp   rI   rI   rL   Útest_is_finitesetO   s.   ÿ   "&ru   c                   C   sd   t   tjj W d    n1 sw   Y  t   tdj W d    d S 1 s+w   Y  d S ©NrA   )r;   r   ro   Úis_EmptySetr&   rI   rI   rI   rL   Útest_deprecated_is_EmptySetj   s   
ÿ"ÿrx   c                  C   s.  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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   r\   Úa©Úpositivec                   S   s   t dtjS ©Nr   )r(   r   ÚImaginaryUnitrI   rI   rI   rL   rM      ó    z)test_interval_arguments.<locals>.<lambda>c                   S   s   t dtdddS )Nr   r>   F©Úextended_real)r(   r   rI   rI   rI   rL   rM      rQ   c                   S   s   t tttj S rH   )r(   r<   r   r}   rI   rI   rI   rL   rM      ó    c                   S   s   t ddtttS ©Nr   rA   ©r(   r6   r<   r=   rI   rI   rI   rL   rM      rQ   c                   S   s   t dddtttS ©Nr   rA   Fr   rI   rI   rI   rL   rM      rP   c                   S   s   t ddttttS r   )r(   r>   r6   r<   r=   rI   rI   rI   rL   rM      rP   )r(   r   Ú
right_openr   Ú	left_openr   ro   r<   Ú
isinstancer&   r   Úmeasurer   r9   rd   Ú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sJ tt| dtddjtd| ks,J td|  d¡td| ks;J d S )Nry   TrC   r   r\   éýÿÿÿrA   )	r   r,   r(   Úsupr   Úinfr   Úcontainsr5   ©ry   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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, yrB   TrC   Úprz   r@   )ÚnegativeÚnn)ÚnonnegativerA   rF   Fr\   r   ©r   ©r   )r   r   r(   rn   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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 )NrA   rF   r\   Té   Fr   c                 S   s   g | ]}t d | qS )ç      ð?©r&   )Ú.0r@   rI   rI   rL   Ú
<listcomp>Ò   s    ztest_union.<locals>.<listcomp>é
   r<   ÚhamÚeggsr=   r>   é   c                   S   s   t dddS )NrA   rF   r\   ©r,   rI   rI   rI   rL   rM   û   r~   ztest_union.<locals>.<lambda>)r,   r(   r   ro   Úranger   r&   r0   Úunionr*   Ú	intersectÚ	is_subsetr9   rc   Úis_iterabler   r
   ra   r]   )r<   r=   r>   ÚXÚYÚXandYrI   rI   rL   Ú
test_unionº   s   $&$$$ÿ(&
ÿÿ
ÿ$
ÿ
ÿ"$
ÿÿ
ÿ&* $(,$
ÿ"
ÿ
"
ÿr«   c                  C   s4   t tdtdtddd} t| g d¢ksJ d S )Nr\   r¡   r   F©Úevaluate)r   r   r   rA   rA   rA   rF   rF   rF   r\   r\   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&   rn   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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 )NrA   r\   rF   TFr   r   r¬   r   r    r   éÿÿÿÿ)r(   r&   r,   r   ra   r
   ÚRopenÚLopenr<   r=   r$   Úopenr   ro   r^   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 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 )NrA   r\   r   rF   Fr¬   Tc                      s   t t dd S ©NFr¬   )r&   r$   rI   ©ÚAÚCrI   rL   rM   =  rQ   z!test_Complement.<locals>.<lambda>r   r¡   r²   éöÿÿÿr   za:czd:f)r&   r(   r$   r§   r9   rc   r,   r   ra   r^   r]   rm   ro   Ú
complementr¥   r   r'   r<   r=   r   r0   r)   )ÚBÚDÚA2Ú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 ]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 rH   rI   ©ry   ÚbrI   rI   rL   rM   e  rV   z-test_set_operations_nonsets.<locals>.<lambda>c                 S   s   | | S rH   rI   rÂ   rI   rI   rL   rM   f  rV   c                 S   s   | | S rH   rI   rÂ   rI   rI   rL   rM   g  rV   c                 S   s   | | S rH   rI   rÂ   rI   rI   rL   rM   h  rV   c                 S   s   | | S rH   rI   rÂ   rI   rI   rL   rM   i  rV   c                 S   s   | |B S rH   rI   rÂ   rI   rI   rL   rM   j  rV   c                 S   s   | |@ S rH   rI   rÂ   rI   rI   rL   rM   k  rV   c                 S   s   | |A S rH   rI   rÂ   rI   rI   rL   rM   l  rV   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 rv   rI   rI   rÉ   rI   rL   rM     rN   N)r&   r<   r=   r(   r,   r'   r$   r)   r   ro   r9   rc   )ÚopsÚSxÚSyÚsetsÚnumsrI   rÄ   rL   Útest_set_operations_nonsetsb  s<   øø
þúrÏ   c                	      sz  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s(J tdddd tj¡ttt dddtdtddksEJ tdddd tj¡ttt dddtdtddksbJ 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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sNJ t	dt tj¡t tt dddtdtdd t	tddkspJ 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 )NrA   rF   r   TFr\   r¡   r¬   c                 3   ó    | ]}| v V  qd S rH   rI   ©r   Úpt©ÚsquarerI   rL   Ú	<genexpr>±  ó    z"test_complement.<locals>.<genexpr>)©r   r   ©ç      à?rÙ   ©rA   r   rG   c                 3   rÐ   rH   rI   rÑ   ©Ú	notsquarerI   rL   rÕ   ²  s    
ÿc                 3   rÐ   rH   rI   rÑ   rÓ   rI   rL   rÕ   Ž  rÖ   ))r²   r   )ç      ø?rÙ   )r   r   c                 3   rÐ   rH   rI   rÑ   rÛ   rI   rL   rÕ   µ  rÖ   )r$   r(   rŒ   r   ra   r,   r   rm   ro   r&   ÚNegativeInfinityÚInfinityr<   ÚallÚanyrI   rI   )rÜ   rÔ   rL   Útest_complement  sl   ÿÿÿÿÿÿÿÿ
þÿÿþ
ÿ& ÿþÿ 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 rH   )r   r]   Úintersection©r   ÚirI   rI   rL   rÕ   ¹  ó    z"test_intersect1.<locals>.<genexpr>c                 s   s     | ]}|  tj¡|u V  qd S rH   )rã   r   r]   rä   rI   rI   rL   rÕ   »  ræ   r<   r   rF   rA   TFr\   r   r    r   r¡   é   r¬   zm, nrC   )rà   r   r^   r_   rã   r   r(   r¥   r,   r&   ro   r'   r=   r   ra   )rq   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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 )NrA   rF   r\   r¡   Fr¬   r<   TrC   r   rç   c                      s   d v S ©NrF   rI   rI   ©rå   rI   rL   rM     rV   z#test_intersection.<locals>.<lambda>©rF   rF   )rF   rF   rF   c                      ó   t  S rH   )r®   rI   rê   rI   rL   rM     rV   )r'   r&   r(   r§   Úsetr   r   r9   rc   ro   r   r]   r^   ra   Ú_argsetÚ	frozensetÚ	ComplexesÚComplexInfinityrm   )r<   Úlinery   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   r\   r   )r   r   ra   r(   r   r&   r'   ro   )r@   ry   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   Fr\   r   T)r(   Ú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s!J t| | ¡ dks,J t| | ¡ tdus9J d S )NrA   rF   r\   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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 )NrA   rF   r\   )rA   rE   ©rA   rF   r\   )rE   r\   )rA   )rF   r\   rI   r¡   c                   S   s
   t jd S )Nr²   )r   ra   rI   rI   rI   rL   rM   f  rN   z!test_ProductSet.<locals>.<lambda>c                 s   s    | ]}t |V  qd S rH   r   ©r   rq   rI   rI   rL   rÕ   h  rÖ   z"test_ProductSet.<locals>.<genexpr>c                   S   s   t d S rH   )r)   rI   rI   rI   rL   rM   i  rV   r   c                      s
      t¡S rH   ©Úas_relationalr<   rI   ©ÚS3rI   rL   rM   q  rN   c                      s      td¡S rv   rý   rI   rÿ   rI   rL   rM   r  r~   c                   S   s   t tdd tt¡S r   )r)   r(   rþ   r<   r=   rI   rI   rI   rL   rM   s  ó    Fr¬   )r)   r   ra   Úflattenr
   r&   ro   r£   r]   r   r9   rd   r;   rc   rþ   r<   r=   r6   r7   r1   r   r   r   r!   Úsubsr0   )rÅ   ÚRnÚS1ÚS2ri   rj   Úx3ÚZ2rI   rÿ   rL   Útest_ProductSet4  s|    (,*ÿ




ÿ,þ"&r	  c                   C   s0   t ttdds
J t tttddsJ d S r   )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sJ d S )NFrA   )r)   r   r]   ra   rn   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s$J d S )Nry   TrC   r   rF   )r   r(   r  r   ro   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s0J d S )Nr   rA   TF)r(   Ú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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   rF   z2.0)r(   r   Ú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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 )Nry   TrC   rA   r\   rF   r   r   r¡   rç   é   rs   r   é   éd   é¯   éK   é   )
r   r(   r   r,   r&   r   r   ro   r¥   r   )ry   rÔ   ÚoffsetsquareÚbandrI   rI   rL   Ú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   rA   rF   Tr\   Fr   r¡   rç   c                   S   ó   t j d¡S rv   )r   ro   rŠ   rI   rI   rI   rL   rM   Ñ  r~   z test_is_subset.<locals>.<lambda>r   rZ   r@   rW   r   r»   r   r  r   )r(   rŠ   r&   r,   r   ro   r9   rd   Úissubsetr^   r]   r_   r<   r=   r  r   r   r#   r-   r   ra   ©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 s,J ttdd  d S )	Nr   rA   rF   Tr\   Fc                   S   ó   t dd d¡S r   )r(   Úis_proper_subsetrI   rI   rI   rL   rM   ò  r   z'test_is_proper_subset.<locals>.<lambda>)r(   r#  r   ro   r&   r9   rd   rI   rI   rI   rL   Ú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   rA   rF   Fr\   r   r¡   Tc                   S   r  rv   )r   ro   Úis_supersetrI   rI   rI   rL   rM     r~   z"test_is_superset.<locals>.<lambda>)	r(   r&  r&   r,   r   ro   r9   rd   Ú
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 s,J ttdd  d S )	Nr   rA   rF   Fr\   Tc                   S   r"  r   )r(   Úis_proper_supersetrI   rI   rI   rL   rM     r   z)test_is_proper_superset.<locals>.<lambda>)r(   r)  r&   r   ro   r9   rd   rI   rI   rI   rL   Ú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   rF   rA   r\   TFr<   c                   S   s   t ttv S rH   )r<   r&   r=   rI   rI   rI   rL   rM   '  r~   ztest_contains.<locals>.<lambda>rÂ   c                      s   dt  v S rv   r   rI   r   rI   rL   rM   1  r~   é	   r   r   gñ¿c                 3   rÐ   rH   rI   ©r   Úitem©ÚfsetrI   rL   rÕ   <  rÖ   z test_contains.<locals>.<genexpr>c                 3   s     | ]}   |¡tju V  qd S rH   )r   r   r   r,  r.  rI   rL   rÕ   =  ræ   r¡   rç   ) r(   r   r   r   r   r&   r   r=   rb   r<   r9   rc   r  Ú	sympy.abcry   rÃ   r   r!   r   r   ro   rß   rà   r,   r    ra   r7   r6   ÚOner'   rð   rñ   )rÃ   Úrad1Úrad2Ús1Ús2ÚitemsrI   )ry   r/  rL   Útest_contains  sX   $$( B(((.&&*
ÿ"
ÿr7  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 )Nr<   r   rA   c                      ó    v S rH   rI   rI   ©r   r<   rI   rL   rM   V  rV   z(test_interval_symbolic.<locals>.<lambda>Trô   FrC   r   r   )r   r(   r   r6   r   ÚZeror9   rc   r   rÞ   rß   )rô   rI   r9  rL   Útest_interval_symbolicR  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 )Nr<   r   rA   rF   r\   c                      r8  rH   rI   rI   )Úi3r<   rI   rL   rM   f  rV   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  rÖ   z&test_union_contains.<locals>.<genexpr>r   c                 3   rÐ   rH   rI   r=  r?  rI   rL   rÕ   q  rÖ   )rF   r¡   r   )r   r(   r,   rþ   r7   r6   r   r:  r9   rc   r   r  r   r   r   r&   rà   )Úi1Úi2r   rI   )r@  r<  r<   rL   Útest_union_contains`  s    


:
&"rC  c                   C   s(   t ddjdu s
J t jdu sJ d S r   )r(   Ú	is_numberr*   rI   rI   rI   rL   Útest_is_numbert  ó   rE  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 )Nr\   r   FTz-inf)r(   Úis_left_unboundedr   r	   rI   rI   rI   rL   Útest_Interval_is_left_unboundedy  s   rH  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 )Nr\   r   FTz+inf)r(   Úis_right_unboundedr   r	   rI   rI   rI   rL   Ú test_Interval_is_right_unbounded  s   rJ  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 )Nr<   r²   rF   FTr   rZ   r   rC   r=   )r   r(   rþ   r6   r3   r4   r   r[   rI   rI   rL   Útest_Interval_as_relational  s,   ÿÿÿÿ22... rK  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 )Nr<   r=   rA   rF   rs   )r   r&   rþ   r7   r1   r[   rI   rI   rL   Útest_Finite_as_relational  s   *.rL  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 )Nr<   r   rA   rF   Tr\   r¡   )r   r(   r&   rþ   r7   r6   r3   r1   r4   Úas_setr   r2   r³   rŽ   rT   rI   rI   rL   Útest_Union_as_relationalŠ  s    ÿÿÿÿrN  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 ©Nr<   r   rA   rF   Fr¬   )r   r'   r(   r&   rþ   r6   r3   r1   rT   rI   rI   rL   Útest_Intersection_as_relational²  s   ÿ þrP  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 rO  )r   r$   r(   r&   rþ   r6   r3   r2   ©r<   rg   rI   rI   rL   Útest_Complement_as_relational¹  s
   ÿrR  c                  C   sL   t d} ttddtddd}| | ¡d| k| dk@ t| d@ ks$J d S rO  )r   r$   r(   r&   rþ   r2   rQ  rI   rI   rL   Ú"test_Complement_as_relational_failÀ  s
   ÿrS  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 rO  )r   r+   r(   r&   rþ   r8   r1   r3   rQ  rI   rI   rL   Ú&test_SymmetricDifference_as_relationalÊ  s   2rT  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 )Nr<   )r   ro   rþ   r   r   r¥   rm   ÚboundaryrI   rI   rI   rL   Útest_EmptySetÐ  s   rV  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|d	| d
| d 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 d S )Nr<   rA   rF   r\   r   r¡   rû   rE   rs   r    F)r   r&   r,   r¥   rŠ   r   r   r   r   r   ro   )r<   r¹   rœ   ÚAorBÚAandBrI   rI   rL   Útest_finite_basicÖ  s2   

 rY  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   rA   rF   r\   r   r¡   rç   r×   )rÙ   rÙ   rÙ   )rØ   rÙ   Trs   r»   r   gÉ?rÙ   é   c                      s   t  tdd S )Nr   rF   )Úlenr(   rI   ©ÚcoinrI   rL   rM     rQ   z$test_product_basic.<locals>.<lambda>)r(   r&   r  r   rí   rŠ   rŒ   r   r,   r]  r   ro   r9   rc   )rZ  r[  Ú	unit_lineÚd6Úd4rÔ   ÚHHÚTTrI   r^  rL   Útest_product_basicø  sD   

,ÿ
ÿÿ
ý""$re  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 s7J  tj¡r?J t fdd fD sUJ tfdd fD rhJ     tj¡rtJ d S )Nr<   TrC   r   r¡   r   r  rA   rF   é   éüÿÿÿr  ÚHamÚEggsc                 s   s    | ]	}|  tj¡V  qd S rH   ©rŠ   r   ra   rü   rI   rI   rL   rÕ   )  s    ztest_real.<locals>.<genexpr>c                 3   s4    | ]} fD ]}||   tj¡V  qqd S rH   rj  )r   ry   rÃ   )r¹   rœ   rº   r
   ÚJrI   rL   rÕ   +  s   2 c                 3   s     | ]}|    tj¡V  qd S rH   rj  )r   ry   )rŸ   rI   rL   rÕ   ,  ræ   )	r   r(   r&   r   ÚPirà   rŠ   ra   rá   rT   rI   )r¹   rœ   rº   rŸ   r
   rk  rL   Ú	test_real  s   



 ,&rm  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 )Nr<   TrC   r=   r   rA   rF   r¡   rh  ri  )
r   r(   r&   r   r   r   r   r   rß   rÞ   r[   rI   rI   rL   Útest_supinf1  s"   ""  ÿÿrn  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 )Nr<   rF   r   r   )r   rm   r   rþ   r   r€   r(   r¥   r   rß   rU  ro   r   )r@  r<   rI   rI   rL   Útest_universalsetD  s   ro  c                  C   s8   t dd} tddd}t| |  | | | |  ksJ d S )Nr   rF   rA   )r(   r&   r,   )rò   ÚpointsrI   rI   rL   Ú test_Union_of_ProductSets_sharesP  s   
"rq  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   rA   r<   TrC   )r(   Úfree_symbolsrí   r   rT   rI   rI   rL   Útest_Interval_free_symbolsV  s   rs  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s4J t| | d tdddd	td
dd	dksJJ t| | d tddtd
dks\J t| | d tdddd	td
dd	dksrJ 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sKJ d S )Nr<   TrC   ry   rF   rZ   rA   rg  Fr   r   r\   é   éN   éZ   iÝÿÿÿc                 S   s   d|  S ré   rI   rT   rI   rI   rL   rM   s  rV   z%test_image_interval.<locals>.<lambda>)	r   r-   r(   r   r   r   r"   r   r   )r<   ry   rI   rI   rL   Útest_image_interval]  sB   $ÿÿ$ÿÿ(8ÿ$
ÿ(ÿ$
ÿÿrw  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²   rA   rF   r¡   r\   Tr   )rF   Trs   é   )r   r<   r-   r(   r,   r   r   r&   )rU   Úf1rI   rI   rL   Útest_image_piecewise|  s   ,2$rz  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 )	Nr<   TrC   r=   rF   rZ   r   r   )r   r-   r(   r¥   r   r   r[   rI   rI   rL   Útest_image_Intersection  s
    0ÿr{  c                  C   s8   t ddd} t| d|  tdddtdddksJ d S )	Nr<   TrC   rF   rA   r\   r   rç   )r   r-   r&   rT   rI   rI   rL   Útest_image_FiniteSet  s   ,r|  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 )Nr<   TrC   rF   rZ   r   rA   r\   r   r+  )r   r-   r(   r&   rT   rI   rI   rL   Útest_image_Union  s    ÿr}  c                  C   s,   t ddd} t| d|  tjtjksJ d S )Nr<   TrC   rF   )r   r-   r   ro   rT   rI   rI   rL   Útest_image_EmptySet  s    r~  c                   C   s.   t tjvsJ tt t t ¡tju sJ d S rH   )r
   r   ra   r(   r   r   r   rI   rI   rI   rL   Útest_issue_5724_7680  s    r  c                   C   s4   t djt dksJ tdd ttfD sJ d S )NrA   c                 s   s8    | ]}t tfD ]}td d||jtd dkV  qqdS )r   rA   N)r   r   r(   rU  r&   )r   r   r   rI   rI   rL   rÕ   ¢  s    ÿ$ÿz test_boundary.<locals>.<genexpr>)r&   rU  rà   r   r   rI   rI   rI   rL   Útest_boundary   s   ÿr  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   rA   rF   r\   FTr   r¡   r  r¬   )r(   rU  r&   r,   rI   rI   rI   rL   Útest_boundary_UnionŠ  s&   (ÿÿ$ÿÿÿ
þr  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(   rU  r&   rI   rI   rI   rL   Ú#test_union_boundary_of_joining_sets¶  s   ÿr  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   rA   TrF   )r(   rU  r&   )Úopen_squareÚsecond_squarerI   rI   rL   Útest_boundary_ProductSetœ  s   
ÿÿþýÿr  c                  C   s$   t ddtd } | j| ksJ d S r   )r(   r&   rU  )Ú
line_in_r2rI   rI   rL   Útest_boundary_ProductSet_lineÊ  s   r  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   rA   FTrF   r\   )r(   Úis_openr&   rI   rI   rI   rL   Útest_is_openÏ  s   r  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 r  )r(   Ú	is_closedr&   rI   rI   rI   rL   Útest_is_closedÖ  s   r  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Ü  ó   &r  c                   C   s&   t ddddjt ddddksJ d S r  )r(   ÚinteriorrI   rI   rI   rL   Útest_interiorà  r  r  c                   C   s   t tdd  d S )Nc                   S   s
   t tjv S rH   )r<   r   ra   rI   rI   rI   rL   rM   å  rN   z!test_issue_7841.<locals>.<lambda>)r9   rc   rI   rI   rI   rL   Útest_issue_7841ä  ó   r  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   rA   rF   FrI   )r1   r(   r&   r0   r<   r=   r  r   r   r   r)   )r4  r5  rA  rB  rI   rI   rL   Útest_Eqè  s(   

**..$$

"r  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   rA   rF   r\   r   r¡   rç   r\  r   Fr¬   Tc                      s   t t dd S r·   )r&   r+   rI   rž   rI   rL   rM     rQ   z*test_SymmetricDifference.<locals>.<lambda>)	r&   r(   r+   r§   r9   rc   r*   r   r,   )rœ   rI   rž   rL   Útest_SymmetricDifference  s<   
ÿÿÿÿÿ
ÿ^.
ÿÿÿr  c                  C   sH   ddl m}  tddd}t| | tj¡ttjt| |ks"J d S )Nr   )Úlogry   TrC   )Ú&sympy.functions.elementary.exponentialr  r   r&   r¥   r   ra   r'   )r  ry   rI   rI   rL   Útest_issue_9536  s   0r  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@   rF   Fr¬   rA   r\   T)r   r&   r$   r   ra   r(   r,   )r@   ry   rÃ   rI   rI   rL   Ú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 )NrA   Fr¬   rF   r\   )r$   r&   r=   r<   rI   rI   rI   rL   Útest_issue_98080  s   ,ÿr  c                   C   sF   t tt ttdtt tksJ tt t d¡tju s!J d S rv   )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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   rA   rF   r\   Fr¬   )r(   r   r   ra   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   r_   rI   rI   rI   rL   Útest_issue_11827R  r  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 )
NrF   r   r   rA   TrZ   r\   r+  r¡   )r<   r-   r   ra   r,   r(   r   r   ©rU   rI   rI   rL   Útest_issue_10113V  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 rH   )r®   r'   r   ra   r&   r<   rI   rI   rI   rL   rM   _  rP   z"test_issue_10248.<locals>.<lambda>r¹   TrC   )r9   rc   r   r®   r'   r   ra   r&   )r¹   rI   rI   rL   Útest_issue_10248]  s
   ÿ"r¢  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   rA   rF   r\   Fr¬   )r(   r$   r   rm   r,   r^   r   rI   rI   rL   Útest_issue_9447e  s   ÿÿr£  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   r\   FTc                   S   s   t ddk S ©NrF   r\   r   rI   rI   rI   rL   rM   p  r~   z"test_issue_10337.<locals>.<lambda>c                   S   s   t ddkS r€  r   rI   rI   rI   rL   rM   q  r~   c                   S   s   t ddkS r€  r   rI   rI   rI   rL   rM   r  r~   c                   S   s   t ddkS r€  r   rI   rI   rI   rL   rM   s  r~   )r&   r9   rc   rI   rI   rI   rL   Útest_issue_10337m  s   r¥  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 )NrA   rF   r   r¡   r<   TrC   ÚnrFr   r   )ro   r&   r(   r   rñ   r}   rß   ÚNaNrÞ   r   r   r   r   )ÚbadÚintervalrå   r<   rŠ  rI   rI   rL   Útest_issue_10326v  s&   ø

$"rª  c                  C   sb   t j} tddd}t|t}t j}| | ||  ksJ | | ||  ks%J || || ks/J d S )Nry   TrC   )r   rm   r   r(   r   ra   )r@  ry   Úinf_intervalÚRrI   rI   rL   Útest_issue_2799  s   
r­  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   r  rI   rI   rI   rL   Útest_issue_9706  s   ""r®  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 rH   )r,   r(   r   r&   )Úreals_plus_infinityÚreals_plus_negativeinfinityrI   rI   rL   Útest_issue_8257  s   "r±  c                   C   s,   t jt j tks
J t jt j tksJ d S rH   )r   r]   ro   ra   rI   rI   rI   rL   Útest_issue_10931š  s   r²  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&   r<   r   ra   )ÚsolnrI   rI   rL   Útest_issue_11174­  s   rŽ  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 )NrF   rA   r   )	r"   r   r@   r   r   r   r]   r   r!   rI   rI   rI   rL   Útest_issue_18505µ  s   ..ÿrµ  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   rF   r\   rA   Fr¬   )r'   r&   r   r<   Ú_handle_finite_setsr=   rI   rI   rI   rL   Útest_finite_set_intersectionº  s*   "(&ÿþýÿþ$ÿÿr·  c                      sê   t dt dg tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt t   k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 )NrA   rF   c                      rì   rH   r¢   rI   ©rÍ   rI   rL   rM   Õ  rV   z5test_union_intersection_constructor.<locals>.<lambda>c                      rì   rH   ©r'   rI   rž  rI   rL   rM   Ö  rV   c                      ó   t t S rH   )r,   ÚtuplerI   rž  rI   rL   rM   ×  r~   c                      rº  rH   )r'   r»  rI   rž  rI   rL   rM   Ø  r~   c                      ó   t dd  D S )Nc                 s   ó    | ]}|V  qd S rH   rI   rä   rI   rI   rL   rÕ   Ù  ó    úHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r¢   rI   rž  rI   rL   rM   Ù  rQ   c                      rŒ  )Nc                 s   rœ  rH   rI   rä   rI   rI   rL   rÕ   Ú  rŸ  r¿  r¹  rI   rž  rI   rL   rM   Ú  rQ   r\   )r&   r9   Ú	Exceptionr,   rí   r'   rI   rI   rž  rL   Ú#test_union_intersection_constructorÒ  s   "rÁ  c                   C   s(   t tt t d¡t dt¡vsJ d S r|   )r   r,   r(   rµ   r   rI   rI   rI   rL   Útest_Union_containså  s   ÿrÂ  c                   C   s*   t tttftj tjd ¡du sJ d S )NrF   T)r-   r<   r   ra   rŠ   rI   rI   rI   rL   Ú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 )NrA   rF   r\   r   r   r¡   r²   c                   S   s   t tdS )Nr@   )r%   r   rI   rI   rI   rL   rM   û  r~   z$test_DisjointUnion.<locals>.<lambda>r<   r=   r>   )r%   r&   Úrewriter,   r(   r   ro   r   r9   rc   r   )r<   r=   r>   rI   rI   rL   Ú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 )NTrA   rF   r\   F)r%   r   ro   rn   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 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 )NTFrA   rF   r\   )r%   r   r]   r^   rl   r§   ro   ra   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 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   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   ro   r(   rI   rI   rI   rL   Ú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 )
Nr\   r¡   r  r+  rA   ))r\   r   )r¡   r   )r  r   )r+  r   c                      rì   rH   )ÚnextrI   ©ÚitrI   rL   rM   =  rV   z)test_DisjointUnion_iter.<locals>.<lambda>c                   S   ó   t ttddtjS r   )Úiterr%   r(   r   ro   rI   rI   rI   rL   rM   ?  r  )r%   r&   r<   r=   r>   rÎ  rÊ  Úremover9   ÚStopIterationrd   )rŸ   ÚL1ÚL2Ú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s(J tt	dd  d S )Nr\   r¡   r  r+  c                   S   rÍ  r   )r]  r%   r(   r   ro   rI   rI   rI   rL   rM   D  r  z(test_DisjointUnion_len.<locals>.<lambda>)
r]  r%   r&   r<   r=   r>   r   ro   r9   rd   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 s#J t tddttddgjttt|u s;J d S ©NrA   rF   )	r)   r&   r   r   r   r.   r   Úkindr(   )r   ÚmkÚkrI   rI   rL   Útest_SetKind_ProductSetF  s
   "4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   rm   r×  r.   r   ro   rI   rI   rI   rL   Ú"test_SetKind_EmptySet_UniversalSetP  rF  rÜ  c                   C   s<   t dtddgjttu sJ t ddjttu sJ 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 s'J 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   r\   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 sCJ dd }|dhtjjttu sUJ |dht jt u saJ dd }|tjh d	£jttu stJ |h d
£t jttu sJ |t h d
£jt u sJ d S )Nc                  W   ó   t | ddiS ©Nr­   Fr¢   ©ÚargsrI   rI   rL   rM   b  rO   z-test_SetKind_evaluate_False.<locals>.<lambda>rA   rF   r   r¡   c                  W   rà  rá  r¹  râ  rI   rI   rL   rM   h  rO   c                  W   rà  rá  )r$   râ  rI   rI   rL   rM   k  rO   >   rA   rF   r   r¡   >   rA   rF   r\   r   r¡   )	ro   r×  r.   r   r(   r   rm   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 sJ | tdd jttu s(J | td jttu s5J d S )NrF   rA   r   r\   é   é   )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 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 )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 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 )	NrA   rF   rG   rE   rÈ  rë   TF)	r&   r)   rŠ   r1   Úsimplifyr   r   r   r<   )ry   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s!J tttdtd| ts0J 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s!J ttd| tdddttd| tdddks;J d S )	Nr@   T)rX   r{   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	   rT   rI   rI   rL   Útest_issue_20379¡  s   $rï  c                  C   s4   t dtdd tdd  } |  ¡ dhksJ d S rÖ  )r&   r   r   ré  r   rI   rI   rL   Útest_finiteset_simplifyŠ  s   rð  N)ÇÚsympy.concrete.summationsr   Úsympy.core.addr   Úsympy.core.containersr   Úsympy.core.functionr   Úsympy.core.kindr   r   Úsympy.core.numbersr	   r
   r   r   r   r   r   Úsympy.core.powerr   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Úsympy.core.sympifyr   Ú(sympy.functions.elementary.miscellaneousr   r   r   Ú$sympy.functions.elementary.piecewiser   Ú(sympy.functions.elementary.trigonometricr   r   Úsympy.logic.boolalgr   r   Úsympy.matrices.commonr   Úsympy.matrices.denser   Úsympy.polys.rootoftoolsr    Úsympy.sets.containsr!   Úsympy.sets.fancysetsr"   r#   Úsympy.sets.setsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Úmpmathr/   Úsympy.core.exprr0   Úsympy.core.relationalr1   r2   r3   r4   r5   Úsympy.logicr6   r7   r8   Úsympy.testing.pytestr9   r:   r;   r0  r<   r=   r>   r?   r@   ro   rk   rr   ru   rx   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  r;  rC  rE  rH  rJ  rK  rL  rN  rP  rR  rS  rT  rV  rY  re  rm  rn  ro  rq  rs  rw  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r¡  r¢  r£  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ð  rI   rI   rI   rL   Ú<module>   s   $4'$	L1%1@#	L	1;
	"'

		

