o
    º¥gÀ ã                   @   s  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZWmXZX ejYZYdd ZZdd Z[d d! Z\d"d# Z]d$d% Z^d&d' Z_d(d) Z`d*d+ Zad,d- Zbd.d/ Zcd0d1 Zdd2d3 Zed4d5 Zfd6d7 Zgd8d9 Zhd:d; Zid<d= Zjd>d? Zkd@dA ZldBdC ZmdDdE ZndFdG ZodHdI ZpdJdK ZqdLdM ZrdNdO ZsdPdQ ZtdRdS ZudTdU ZvdVdW ZwdXdY ZxdZd[ Zyd\d] Zzd^d_ Z{d`da Z|dbdc Z}ddde Z~dfdg Zdhdi Zdjdk Zdldm Zdndo ZeOdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd ZeOdd Zdd Zdd Zdd Zdd Zdd Zdd ZeOdd Zdd Zdd Zdd Zdd Zd d¡ Zd¢d£ Zd€d¥ ZdŠd§ Zdšd© Z dªd« Z¡d¬d­ Z¢d®d¯ Z£d°d± Z€d²d³ Z¥dŽdµ ZŠd¶d· Z§džd¹ Zšdºd» Z©dŒdœ ZªdŸd¿ Z«dÀdÁ Z¬dÂdÃ Z­dÄdÅ Z®dÆdÇ Z¯dÈdÉ Z°dÊdË Z±dÌdÍ Z²dÎdÏ Z³dÐdÑ ZŽeOdÒdÓ ZµdÔdÕ Z¶dÖd× Z·dØdÙ ZždÚdÛ Z¹dÜdÝ ZºdÞdß Z»dàdá ZŒdâdã Zœdädå ZŸdædç Z¿dèdé ZÀdêdë ZÁdìdí ZÂdîdï ZÃdðdñ ZÄdòdó ZÅdôdõ ZÆeOdöd÷ ZÇdødù ZÈdúdû ZÉdüdý ZÊdþdÿ ZËd S (  é    )ÚSum©ÚAdd)Ú	TupleKind)ÚLambda)Ú
NumberKindÚUndefinedKind)ÚFloatÚIÚRationalÚnanÚooÚpiÚzoo)ÚPow©ÚS)ÚSymbolÚsymbols)Úsympify)ÚMaxÚMinÚsqrt)Ú	Piecewise)ÚcosÚsin)ÚfalseÚtrue)Ú
MatrixKind)ÚMatrix)Úrootof)ÚContains)ÚImageSetÚRange)Ú
ComplementÚDisjointUnionÚ	FiniteSetÚIntersectionÚIntervalÚ
ProductSetÚSetÚSymmetricDifferenceÚUnionÚimagesetÚSetKind)Úmpi)Ú	unchanged)ÚEqÚNeÚLeÚLtÚLessThan)ÚAndÚOrÚXor)ÚraisesÚXFAILÚwarns_deprecated_sympy)Úcartes)ÚxÚyÚzÚmÚnc                     s  t jtttd t jt j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©rB   é   F©rB   rB   c                      s
   t t S ©N)r-   r=   © ©ÚintsrJ   úQ/var/www/visachat/venv/lib/python3.10/site-packages/sympy/sets/tests/test_sets.pyÚ<lambda>0   ó   
 ztest_imageset.<locals>.<lambda>c                      s   t ttt S rI   )r-   r=   r>   r?   rJ   rK   rJ   rM   rN   1   ó    c                   S   s   t tttttS rI   )r-   r   r=   r   r>   rJ   rJ   rJ   rM   rN   2   ó    c                      s   t ttt  S rI   )r-   r   r=   rJ   rK   rJ   rM   rN   4   ó    c                 S   ó   t | S rI   ©r   ©r=   rJ   rJ   rM   Úf6   s   ztest_imageset.<locals>.fc                 S   rS   rI   rT   rU   rJ   rJ   rM   rN   9   ó    r=   ©Úintegerc                    s   |   S rI   rJ   rU   )ÚclashrJ   rM   rN   ?   rW   éþÿÿÿ)zx0 + xzx + x0zx1, x2c                 S   s
   t | |S rI   r   ©r=   r>   rJ   rJ   rM   rN   B   s   
rG   é   )r   ÚIntegersr-   r=   ÚNaturalsÚ	Naturals0Úabsr   ÚRealsÚ	_containsr
   r9   Ú	TypeErrorÚ
ValueErrorr   r>   r   r"   r&   r?   r   r   Ústrr(   ÚlamdaÚexprÚdummy_eq)rC   rV   Úx1Úx2rJ   )rZ   rL   rM   Útest_imageset!   sP   $ ""$(
ÿÿÿÿÿrl   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^   Ú	Rationalsrb   ÚUniversalSetÚis_emptyÚEmptySet©ÚsrJ   rJ   rM   Útest_is_emptyH   s
   ÿrs   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 )NFTrB   rG   r   r]   éûÿÿÿ)r   r_   r`   r^   rm   rb   rn   Úis_finite_setrp   r&   r(   r=   r>   r)   r,   r'   r$   r%   rq   rJ   rJ   rM   Útest_is_finitesetP   s.   ÿ   "&rv   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 ©NrB   )r;   r   rp   Úis_EmptySetr&   rJ   rJ   rJ   rM   Útest_deprecated_is_EmptySetk   s   
ÿ"ÿry   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   FTrB   r]   Úa©Úpositivec                   S   s   t dtjS ©Nr   )r(   r   ÚImaginaryUnitrJ   rJ   rJ   rM   rN      ó    z)test_interval_arguments.<locals>.<lambda>c                   S   s   t dtdddS )Nr   r?   F©Úextended_real)r(   r   rJ   rJ   rJ   rM   rN      rR   c                   S   s   t tttj S rI   )r(   r=   r   r~   rJ   rJ   rJ   rM   rN      ó    c                   S   s   t ddtttS ©Nr   rB   ©r(   r6   r=   r>   rJ   rJ   rJ   rM   rN      rR   c                   S   s   t dddtttS ©Nr   rB   Fr   rJ   rJ   rJ   rM   rN      rQ   c                   S   s   t ddttttS r   )r(   r?   r6   r=   r>   rJ   rJ   rJ   rM   rN      rQ   )r(   r   Ú
right_openr   Ú	left_openr   rp   r=   Ú
isinstancer&   r   Úmeasurer   r9   re   ÚNotImplementedError)ÚerJ   rJ   rM   Útest_interval_argumentss   s6    r   c                  C   sz   t ddd} ttd| tddjt| dksJ tt| dtddjtd| ks,J td|  d¡td| ks;J d S )Nrz   TrD   r   r]   éýÿÿÿrB   )	r   r,   r(   Úsupr   Úinfr   Úcontainsr5   ©rz   rJ   rJ   rM   Ú!test_interval_symbolic_end_points   s   &&"r   c                  C   sØ  t d\} }tddd}tddd}tddd}td	dd
}tddjdk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, yrC   TrD   Úpr{   rA   )ÚnegativeÚnn)ÚnonnegativerB   rG   Fr]   r   ©r   ©r   )r   r   r(   ro   r   )r=   r>   rC   r   rA   r   rJ   rJ   rM   Útest_interval_is_empty    s0   r   c                  C   sØ  t tddtddtddks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 )NrB   rG   r]   Té   Fr   c                 S   s   g | ]}t d | qS )ç      ð?©r&   )Ú.0rA   rJ   rJ   rM   Ú
<listcomp>Ó   s    ztest_union.<locals>.<listcomp>é
   r=   ÚhamÚeggsr>   r?   é   c                   S   s   t dddS )NrB   rG   r]   ©r,   rJ   rJ   rJ   rM   rN   ü   r   ztest_union.<locals>.<lambda>)r,   r(   r   rp   Úranger   r&   r0   Úunionr*   Ú	intersectÚ	is_subsetr9   rd   Úis_iterabler   r
   rb   r^   )r=   r>   r?   ÚXÚYÚXandYrJ   rJ   rM   Ú
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   rB   rB   rB   rG   rG   rG   r]   r]   r   )r,   r#   Úlist)ÚurJ   rJ   rM   Ú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 )NrB   F)r(   r=   r>   r&   ro   rJ   rJ   rJ   rM   Útest_union_is_empty  s   $r²   c                   C   s  t ddt dd t dddks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 )NrB   r]   rG   TFr   r   r­   r    r¡   r   éÿÿÿÿ)r(   r&   r,   r   rb   r
   ÚRopenÚLopenr=   r>   r$   Úopenr   rp   r_   rJ   rJ   rJ   rM   Útest_difference  s:   $&(ÿÿ$
ÿ&þ"
ÿ( 
ÿr·   c                     s
  t ddd t dd} tddtdd}t | ddjd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 )NrB   r]   r   rG   Fr­   Tc                      s   t t dd S ©NFr­   )r&   r$   rJ   ©ÚAÚCrJ   rM   rN   >  rR   z!test_Complement.<locals>.<lambda>r   r¢   r³   éöÿÿÿr   za:czd:f)r&   r(   r$   rš   r9   rd   r,   r   rb   r_   r^   rn   rp   Ú
complementrŠ   r   r'   r=   r>   r   r0   r)   )ÚBÚDÚA2ÚB3rJ   r¹   rM   Útest_Complement2  sL   


&$ÿþ",
ÿ
ÿ
rÂ   c               	      s  dd dd dd dd dd dd dd d	d g} t t}t t}d
ht d
td
dt|td
dt||t||t||tj	g}dd
dtdtd
tdg}|D ]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 rI   rJ   ©rz   ÚbrJ   rJ   rM   rN   f  rW   z-test_set_operations_nonsets.<locals>.<lambda>c                 S   s   | | S rI   rJ   rÃ   rJ   rJ   rM   rN   g  rW   c                 S   s   | | S rI   rJ   rÃ   rJ   rJ   rM   rN   h  rW   c                 S   s   | | S rI   rJ   rÃ   rJ   rJ   rM   rN   i  rW   c                 S   s   | | S rI   rJ   rÃ   rJ   rJ   rM   rN   j  rW   c                 S   s   | |B S rI   rJ   rÃ   rJ   rJ   rM   rN   k  rW   c                 S   s   | |@ S rI   rJ   rÃ   rJ   rJ   rM   rN   l  rW   c                 S   s   | |A S rI   rJ   rÃ   rJ   rJ   rM   rN   m  rW   rB   rG   r   c                      s
    S rI   rJ   rJ   ©ÚniÚopÚsirJ   rM   rN     rO   c                      s
    S rI   rJ   rJ   rÅ   rJ   rM   rN     rO   c                      s
    t   S rI   )ÚobjectrJ   ©rÈ   rJ   rM   rN     rO   c                      s
    dh S rw   rJ   rJ   rÊ   rJ   rM   rN     rO   N)r&   r=   r>   r(   r,   r'   r$   r)   r   rp   r9   rd   )ÚopsÚSxÚSyÚsetsÚnumsrJ   rÅ   rM   Útest_set_operations_nonsetsc  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 )NrB   rG   r   TFr]   r¢   r­   c                 3   ó    | ]}| v V  qd S rI   rJ   ©r   Úpt©ÚsquarerJ   rM   Ú	<genexpr>²  ó    z"test_complement.<locals>.<genexpr>)©r   r   ©ç      à?rÚ   ©rB   r   rH   c                 3   rÑ   rI   rJ   rÒ   ©Ú	notsquarerJ   rM   rÖ   ³  s    
ÿc                 3   rÑ   rI   rJ   rÒ   rÔ   rJ   rM   rÖ   µ  r×   ))r³   r   )ç      ø?rÚ   )r   r   c                 3   rÑ   rI   rJ   rÒ   rÜ   rJ   rM   rÖ   ¶  r×   )r$   r(   rœ   r   rb   r,   r   rn   rp   r&   ÚNegativeInfinityÚInfinityr=   ÚallÚanyrJ   rJ   )rÝ   rÕ   rM   Útest_complement  sl   ÿÿÿÿÿÿÿÿ
þÿÿþ
ÿ& ÿþÿ rã   c                  C   s€  t dd tjtjfD sJ t dd tjtjfD sJ tj} tj | ¡tju 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 tdtd d }tdtd
 }t|d t|d¡t|dksœJ td| td|¡td|ksÐJ d S )Nc                 s   s     | ]}t j |¡|u V  qd S rI   )r   r^   Úintersection©r   ÚirJ   rJ   rM   rÖ   º  ó    z"test_intersect1.<locals>.<genexpr>c                 s   s     | ]}|  tj¡|u V  qd S rI   )rä   r   r^   rå   rJ   rJ   rM   rÖ   Œ  rç   r=   r   rG   rB   TFr]   r    r¡   r   r¢   é   r­   zm, nrD   )rá   r   r_   r`   rä   r   r(   rŠ   r,   r&   rp   r'   r>   r   rb   r   )rr   r=   r@   rA   rz   rÄ   rJ   rJ   rM   Útest_intersect1¹  s   
ÿ
ÿ$
ÿÿÿ ÿ&"ÿ"&$ 
ÿ 
ÿ$
ÿ
ÿ$$
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ&$ 
ÿ&*ré   c                  C   s"  t t t ft t jt jft t jt jft t jt jft jt jt jft jt jt jft jt jt jft jt jt jft jt jt jft jt jt jfg
} dd }| D ]F\}}}||f||ffD ]8\}}tddgddgddgddgD ]$\}}}	}
|||	}|||
}||||||	|
}| |¡|ksJ qhqUqHd S )Nc                 S   s   t |tr|S | S rI   )r   Úfloat)Úa1Úa2rJ   rJ   rM   rN     rR   z2test_intersection_interval_float.<locals>.<lambda>rG   g       @r]   g      @)r(   r¶   rµ   rŽ   r<   rŠ   )ÚtypsÚas_floatÚt1Út2Út3Út1iÚt2irë   rì   Úb1Úb2ÚI1ÚI2ÚI3rJ   rJ   rM   Ú test_intersection_interval_floatÿ  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 )NrB   rG   r]   r¢   Fr­   r=   TrD   r   rè   c                      s   d v S ©NrG   rJ   rJ   ©ræ   rJ   rM   rN   %  rW   z#test_intersection.<locals>.<lambda>©rG   rG   )rG   rG   rG   c                      ó   t  S rI   )r¯   rJ   rû   rJ   rM   rN   0  rW   )r'   r&   r(   rš   Úsetr   r   r9   rd   rp   r   r^   r_   rb   Ú_argsetÚ	frozensetÚ	ComplexesÚComplexInfinityrn   )r=   Úlinerz   rJ   rû   rM   Ú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 )NrA   r   rB   rG   r]   r   )r   r   rb   r(   r   r&   r'   rp   )rA   rz   rÄ   ÚcrJ   rJ   rM   Ú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   rG   rB   Fr]   r   T)r(   Úis_disjointrJ   rJ   rJ   rM   Útest_is_disjointI  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 )NrB   rG   r]   rè   )r&   r)   Ú__len__r   ©rº   rŸ   rJ   rJ   rM   Útest_ProductSet__len__N  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jtttj@ kshJ ttttf|ssJ td|tju s~J d S )NrB   rG   r]   )rB   rF   ©rB   rG   r]   )rF   r]   )rB   )rG   r]   rJ   r¢   c                   S   s
   t jd S )Nr³   )r   rb   rJ   rJ   rJ   rM   rN     rO   z!test_ProductSet.<locals>.<lambda>c                 s   s    | ]}t |V  qd S rI   r   ©r   rr   rJ   rJ   rM   rÖ     r×   z"test_ProductSet.<locals>.<genexpr>c                   S   s   t d S rI   )r)   rJ   rJ   rJ   rM   rN     rW   r   c                      s
      t¡S rI   ©Úas_relationalr=   rJ   ©ÚS3rJ   rM   rN     rO   c                      s      td¡S rw   r  rJ   r  rJ   rM   rN     r   c                   S   s   t tdd tt¡S r   )r)   r(   r  r=   r>   rJ   rJ   rJ   rM   rN     ó    Fr­   )r)   r   rb   Úflattenr
   r&   rp   r€   r^   r   r9   re   r;   rd   r  r=   r>   r6   r7   r1   r   r   r   r!   Úsubsr0   )rÆ   ÚRnÚS1ÚS2rj   rk   Úx3ÚZ2rJ   r  rM   Útest_ProductSetW  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(   rJ   rJ   rJ   rM   Ú(test_ProductSet_of_single_arg_is_not_arg£  s   r  c                   C   s8   t tjtjjdksJ t ttdtjjd ksJ d S )NFrB   )r)   r   r^   rb   ro   r(   r=   rJ   rJ   rJ   rM   Útest_ProductSet_is_emptyš  s    r  c                  C   sL   t ddd} td|  | d¡tddksJ t| d | d¡tjks$J d S )Nrz   TrD   r   rG   )r   r(   r  r   rp   r   rJ   rJ   rM   Ú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   rB   TF)r(   Úto_mpir/   ÚtyperJ   rJ   rJ   rM   Útest_interval_to_mpiŽ  s    (r   c                   C   s¢   t tdd tj ¡ t tdtdks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   rG   z2.0)r(   r   ÚHalfÚevalfr	   r=   r   r&   rJ   rJ   rJ   rM   Útest_set_evalfº  s   
ÿ
ÿ&$r%  c                  C   s€  t ddd} tddjdks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 )Nrz   TrD   rB   r]   rG   r   r   r¢   rè   é   rt   r   é   éd   é¯   éK   é   )
r   r(   r   r,   r&   r   r   rp   rŠ   r   )rz   rÕ   ÚoffsetsquareÚbandrJ   rJ   rM   Ú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   rB   rG   Tr]   Fr   r¢   rè   c                   S   ó   t j d¡S rw   )r   rp   r§   rJ   rJ   rJ   rM   rN   ô  r   z test_is_subset.<locals>.<lambda>r   r[   rA   rX   r   rŒ   r   r(  r   )r(   r§   r&   r,   r   rp   r9   re   Úissubsetr_   r^   r`   r=   r>   r  r   r   r#   r-   r   rb   ©rA   rJ   rJ   rM   Útest_is_subsetß  sH   ""ÿ**""$($."($   (",r2  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   rB   rG   Tr]   Fc                   S   ó   t dd d¡S r   )r(   Úis_proper_subsetrJ   rJ   rJ   rM   rN     r   z'test_is_proper_subset.<locals>.<lambda>)r(   r4  r   rp   r&   r9   re   rJ   rJ   rJ   rM   Útest_is_proper_subset  ó   r5  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   rB   rG   Fr]   r   r¢   Tc                   S   r/  rw   )r   rp   Úis_supersetrJ   rJ   rJ   rM   rN   +  r   z"test_is_superset.<locals>.<lambda>)	r(   r7  r&   r,   r   rp   r9   re   Ú
issupersetrJ   rJ   rJ   rM   Útest_is_superset  s&   """ÿÿ*"r9  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   rB   rG   Fr]   Tc                   S   r3  r   )r(   Úis_proper_supersetrJ   rJ   rJ   rM   rN   7  r   z)test_is_proper_superset.<locals>.<lambda>)r(   r:  r&   r   rp   r9   re   rJ   rJ   rJ   rM   Útest_is_proper_superset2  r6  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	¡t
tt	ddks²J ttd	d
  tt	th t	h¡t
t	tht	hddksÏJ tt	th tt	¡ t	h¡tju sâJ tt	th tt	d ¡ t	h¡tju s÷J ddlm m}  t|    ¡t
|   ksJ t|   ¡t
|  ksJ t  d¡t
 dk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szJ 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sPJ tt dt	t dd t¡ttdktt	ktjtktdtkkssJ tj tj¡tjksJ d S )Nr   rG   rB   r]   TFr=   r­   c                   S   s   t ttv S rI   )r=   r&   r>   rJ   rJ   rJ   rM   rN   J  r   ztest_contains.<locals>.<lambda>rÃ   c                      s   dt  v S rw   r   rJ   r   rJ   rM   rN   T  r   é	   r   r    gñ¿c                 3   rÑ   rI   rJ   ©r   Úitem©ÚfsetrJ   rM   rÖ   _  r×   z test_contains.<locals>.<genexpr>c                 3   s     | ]}   |¡tju V  qd S rI   )r   r   r   r=  r?  rJ   rM   rÖ   `  rç   r¢   rè   )r(   r   r   r   r   r&   r   r>   rc   r=   r1   r9   rd   r  Ú	sympy.abcrz   rÄ   r   r   rp   rà   rá   r,   r    rb   r7   r6   ÚOner'   r  r  )rÄ   Úrad1Úrad2Ús1Ús2ÚitemsrJ   )rz   r@  rM   Útest_contains:  sX   $ ,&*" B(((.&&*
ÿ"
ÿrH  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   rB   c                      ó    v S rI   rJ   rJ   ©r   r=   rJ   rM   rN   y  rW   z(test_interval_symbolic.<locals>.<lambda>Tr  FrD   r   r   )r   r(   r   r6   r   ÚZeror9   rd   r   rß   rà   )r  rJ   rJ  rM   Útest_interval_symbolicu  s   
""ÿrL  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   rB   rG   r]   c                      rI  rI   rJ   rJ   )Úi3r=   rJ   rM   rN     rW   z%test_union_contains.<locals>.<lambda>g      à¿rÚ   rÞ   g      @g      @Tr   r³   r¢   rè   c                 3   s    | ]}| vV  qd S rI   rJ   ©r   Úel©ÚUrJ   rM   rÖ     r×   z&test_union_contains.<locals>.<genexpr>r   c                 3   rÑ   rI   rJ   rN  rP  rJ   rM   rÖ     r×   )rG   r¢   r   )r   r(   r,   r  r7   r6   r   rK  r9   rd   r   r  r   r   r   r&   rá   )Úi1Úi2r   rJ   )rQ  rM  r=   rM   Útest_union_contains  s    


:
&"rT  c                   C   s(   t ddjdu s
J t jdu sJ d S r   )r(   Ú	is_numberr*   rJ   rJ   rJ   rM   Útest_is_number  ó   rV  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	   rJ   rJ   rJ   rM   Útest_Interval_is_left_unbounded  s   rY  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	   rJ   rJ   rJ   rM   Ú test_Interval_is_right_unbounded¢  s   r[  c                  C   s  t d} tdddd | ¡ttd| t| dk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³   rG   FTr   r[   r   rD   r>   )r   r(   r  r6   r3   r4   r   r\   rJ   rJ   rM   Útest_Interval_as_relationalš  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 )Nr=   r>   rB   rG   rt   )r   r&   r  r7   r1   r\   rJ   rJ   rM   Útest_Finite_as_relationalÁ  s   *.r]  c                  C   sø   t d} tddtd  | ¡tttd| t| dt| dk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t| d| dk| dkkszJ d S )Nr=   r   rB   rG   Tr]   r¢   )r   r(   r&   r  r7   r6   r3   r1   r4   Úas_setr   r2   rŽ   rµ   rU   rJ   rJ   rM   Útest_Union_as_relationalÉ  s    ÿÿÿÿr_  c                  C   sP   t d} ttddtddd | ¡tttd| t| dt| dks&J d S ©Nr=   r   rB   rG   Fr­   )r   r'   r(   r&   r  r6   r3   r1   rU   rJ   rJ   rM   Útest_Intersection_as_relationalÕ  s   ÿ þra  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  r6   r3   r2   ©r=   rh   rJ   rJ   rM   Útest_Complement_as_relationalÜ  s
   ÿrc  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  r2   rb  rJ   rJ   rM   Ú"test_Complement_as_relational_failã  s
   ÿrd  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  r8   r1   r3   rb  rJ   rJ   rM   Ú&test_SymmetricDifference_as_relationalí  s   2re  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   rp   r  r   r   rŠ   rn   ÚboundaryrJ   rJ   rJ   rM   Útest_EmptySetó  s   rg  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=   rB   rG   r]   r   r¢   r  rF   rt   r¡   F)r   r&   r,   rŠ   r§   r   r   r   r   r   rp   )r=   rº   rŸ   ÚAorBÚAandBrJ   rJ   rM   Útest_finite_basicù  s2   

 rj  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   rB   rG   r]   r   r¢   rè   rØ   )rÚ   rÚ   rÚ   )rÙ   rÚ   Trt   rŒ   r   gÉ?rÚ   é   c                      s   t  tdd S )Nr   rG   )Úlenr(   rJ   ©ÚcoinrJ   rM   rN   ?  rR   z$test_product_basic.<locals>.<lambda>)r(   r&   r  r   rþ   r§   rœ   r   r,   rn  r   rp   r9   rd   )rk  rl  Ú	unit_lineÚd6Úd4rÕ   ÚHHÚTTrJ   ro  rM   Útest_product_basic  sD   

,ÿ
ÿÿ
ý""$rv  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=   TrD   r   r¢   r   r+  rB   rG   é   éüÿÿÿr(  ÚHamÚEggsc                 s   s    | ]	}|  tj¡V  qd S rI   ©r§   r   rb   r  rJ   rJ   rM   rÖ   L  s    ztest_real.<locals>.<genexpr>c                 3   s4    | ]} fD ]}||   tj¡V  qqd S rI   r{  )r   rz   rÄ   )rº   rŸ   r»   r
   ÚJrJ   rM   rÖ   N  s   2 c                 3   s     | ]}|    tj¡V  qd S rI   r{  )r   rz   )r¿   rJ   rM   rÖ   O  rç   )	r   r(   r&   r   ÚPirá   r§   rb   râ   rU   rJ   )rº   rŸ   r»   r¿   r
   r|  rM   Ú	test_realB  s   



 ,&r~  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=   TrD   r>   r   rB   rG   r¢   ry  rz  )
r   r(   r&   r   r   r   r   r   rà   rß   r\   rJ   rJ   rM   Útest_supinfT  s"   ""  ÿÿr  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=   rG   r   r   )r   rn   r   r  r   r¥   r(   rŠ   r   rà   rf  rp   r   ©rQ  r=   rJ   rJ   rM   Útest_universalsetg  s   r  c                  C   s8   t dd} tddd}t| |  | | | |  ksJ d S )Nr   rG   rB   )r(   r&   r,   )r  ÚpointsrJ   rJ   rM   Ú test_Union_of_ProductSets_sharess  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   rB   r=   TrD   )r(   Úfree_symbolsrþ   r   rU   rJ   rJ   rM   Útest_Interval_free_symbolsy  s   r  c                  C   s  t ddd} t ddd}t| d|  tddtddksJ t| d|  tdddd	tdddd	k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=   TrD   rz   rG   r[   rB   rx  Fr   r   r]   é   éN   éZ   iÝÿÿÿc                 S   s   d|  S rú   rJ   rU   rJ   rJ   rM   rN     rW   z%test_image_interval.<locals>.<lambda>)	r   r-   r(   r   r   r   r"   r   r   )r=   rz   rJ   rJ   rM   Útest_image_interval  sB   $ÿÿ$ÿÿ(8ÿ$
ÿ(ÿ$
ÿÿr  c                  C   s   t ttdkfdtd  tdkftd df} t dtdkfdtdkfd}tt| td	dttd	dttdd
tks=J tt|tddtddksMJ d S )Nr³   rB   rG   r¢   r]   Tr   )rG   Trt   é   )r   r=   r-   r(   r,   r   r   r&   )rV   Úf1rJ   rJ   rM   Útest_image_piecewise  s   ,2$r  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=   TrD   r>   rG   r[   r   r   )r   r-   r(   rŠ   r   r   r\   rJ   rJ   rM   Ú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=   TrD   rG   rB   r]   r   rè   )r   r-   r&   rU   rJ   rJ   rM   Ú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=   TrD   rG   r[   r   rB   r]   r   r<  )r   r-   r(   r&   rU   rJ   rJ   rM   Útest_image_Union³  s    ÿr  c                  C   s,   t ddd} t| d|  tjtjksJ d S )Nr=   TrD   rG   )r   r-   r   rp   rU   rJ   rJ   rM   Ú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 rI   )r
   r   rb   r(   r   r   r   rJ   rJ   rJ   rM   Ú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 )NrB   c                 s   s8    | ]}t tfD ]}td d||jtd dkV  qqdS )r   rB   N)r   r   r(   rf  r&   )r   r   r   rJ   rJ   rM   rÖ   Å  s    ÿ$ÿz test_boundary.<locals>.<genexpr>)r&   rf  rá   r   r   rJ   rJ   rJ   rM   Ú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   rB   rG   r]   FTr   r¢   r'  r­   )r(   rf  r&   r,   rJ   rJ   rJ   rM   Ú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(   rf  r&   rJ   rJ   rJ   rM   Ú#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   rB   TrG   )r(   rf  r&   )Úopen_squareÚsecond_squarerJ   rJ   rM   Útest_boundary_ProductSetà  s   
ÿÿþýÿr  c                  C   s$   t ddtd } | j| ksJ d S r   )r(   r&   rf  )Ú
line_in_r2rJ   rJ   rM   Ú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   rB   FTrG   r]   )r(   Úis_openr&   rJ   rJ   rJ   rM   Ú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&   rJ   rJ   rJ   rM   Ú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   rB   FT)r(   ÚclosurerJ   rJ   rJ   rM   Útest_closureÿ  ó   &r¡  c                   C   s&   t ddddjt ddddksJ d S r  )r(   ÚinteriorrJ   rJ   rJ   rM   Útest_interior  r¢  r€  c                   C   s   t tdd  d S )Nc                   S   s
   t tjv S rI   )r=   r   rb   rJ   rJ   rJ   rM   rN     rO   z!test_issue_7841.<locals>.<lambda>)r9   rd   rJ   rJ   rJ   rM   Ú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   rB   rG   FrJ   )r1   r(   r&   r0   r=   r>   r  r   r   r   r)   )rE  rF  rR  rS  rJ   rJ   rM   Ú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   rB   rG   r]   r   r¢   rè   rm  r   Fr­   Tc                      s   t t dd S rž   )r&   r+   rJ   r¹   rJ   rM   rN   3  rR   z*test_SymmetricDifference.<locals>.<lambda>)	r&   r(   r+   rš   r9   rd   r*   r   r,   )rŸ   rJ   r¹   rM   Útest_SymmetricDifference)  s<   
ÿÿÿÿÿ
ÿ^.
ÿÿÿrš  c                  C   sH   ddl m}  tddd}t| | tj¡ttjt| |ks"J d S )Nr   )Úlogrz   TrD   )Ú&sympy.functions.elementary.exponentialr©  r   r&   rŠ   r   rb   r'   )r©  rz   rJ   rJ   rM   Útest_issue_9536A  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 )NrA   rG   Fr­   rB   r]   T)r   r&   r$   r   rb   r(   r,   )rA   rz   rÄ   rJ   rJ   rM   Útest_issue_9637G  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 )NrB   Fr­   rG   r]   )r$   r&   r>   r=   rJ   rJ   rJ   rM   Útest_issue_9808S  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 rw   )r,   r(   r   r&   r   r   r   rJ   rJ   rJ   rM   Útest_issue_9956Z  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   rB   rG   r]   Fr­   )r(   r   r   rb   r   r'   r&   r@   rA   r=   r?   r   r   )ræ   rC   ÚmatrJ   rJ   rM   Útest_issue_Symbol_inter_  s6   
ÿÿÿÿÿÿ(ÿ*ÿr°  c                   C   s   t jd sJ d S )Nr   )r   r`   rJ   rJ   rJ   rM   Útest_issue_11827u  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 )
NrG   r   r   rB   Tr[   r]   r<  r¢   )r=   r-   r   rb   r,   r(   r   r   ©rV   rJ   rJ   rM   Útest_issue_10113y  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 rI   )r¯   r'   r   rb   r&   r=   rJ   rJ   rJ   rM   rN     rQ   z"test_issue_10248.<locals>.<lambda>rº   TrD   )r9   rd   r   r¯   r'   r   rb   r&   )rº   rJ   rJ   rM   Ú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   rB   rG   r]   Fr­   )r(   r$   r   rn   r,   r_   r   rJ   rJ   rM   Útest_issue_9447  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 )
NrG   r]   FTc                   S   s   t ddk S ©NrG   r]   r   rJ   rJ   rJ   rM   rN     r   z"test_issue_10337.<locals>.<lambda>c                   S   s   t ddkS r¶  r   rJ   rJ   rJ   rM   rN     r   c                   S   s   t ddkS r¶  r   rJ   rJ   rJ   rM   rN     r   c                   S   s   t ddkS r¶  r   rJ   rJ   rJ   rM   rN     r   )r&   r9   rd   rJ   rJ   rJ   rM   Útest_issue_10337  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 )NrB   rG   r   r¢   r=   TrD   ÚnrFr   r   )rp   r&   r(   r   r  r~   rà   ÚNaNrß   r   r   r   r   )ÚbadÚintervalræ   r=   rž  rJ   rJ   rM   Útest_issue_10326  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 )Nrz   TrD   )r   rn   r   r(   r   rb   )rQ  rz   Úinf_intervalÚRrJ   rJ   rM   Ú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   rJ   rJ   rJ   rM   Ú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 rI   )r,   r(   r   r&   )Úreals_plus_infinityÚreals_plus_negativeinfinityrJ   rJ   rM   Ú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 rI   )r   r^   rp   rb   rJ   rJ   rJ   rM   Ú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   rb   )ÚsolnrJ   rJ   rM   Ú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 )NrG   rB   r   )	r"   r   rA   r   r   r   r^   r   r!   rJ   rJ   rJ   rM   Ú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   rG   r]   rB   Fr­   )r'   r&   r   r=   Ú_handle_finite_setsr>   rJ   rJ   rJ   rM   Útest_finite_set_intersectionÝ  s*   "(&ÿþýÿþ$ÿÿrÉ  c                      sê   t dt dg tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt t   k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 )NrB   rG   c                      rý   rI   r£   rJ   ©rÎ   rJ   rM   rN   ø  rW   z5test_union_intersection_constructor.<locals>.<lambda>c                      rý   rI   ©r'   rJ   rÊ  rJ   rM   rN   ù  rW   c                      ó   t t S rI   )r,   ÚtuplerJ   rÊ  rJ   rM   rN   ú  r   c                      rÌ  rI   )r'   rÍ  rJ   rÊ  rJ   rM   rN   û  r   c                      ó   t dd  D S )Nc                 s   ó    | ]}|V  qd S rI   rJ   rå   rJ   rJ   rM   rÖ   ü  ó    úHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r£   rJ   rÊ  rJ   rM   rN   ü  rR   c                      rÎ  )Nc                 s   rÏ  rI   rJ   rå   rJ   rJ   rM   rÖ   ý  rÐ  rÑ  rË  rJ   rÊ  rJ   rM   rN   ý  rR   r]   )r&   r9   Ú	Exceptionr,   rþ   r'   rJ   rJ   rÊ  rM   Ú#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   rJ   rJ   rJ   rM   Útest_Union_contains  s   ÿrÔ  c                   C   s*   t tttftj tjd ¡du sJ d S )NrG   T)r-   r=   r   rb   r§   rJ   rJ   rJ   rM   Ú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 )NrB   rG   r]   r   r   r¢   r³   c                   S   s   t tdS )NrA   )r%   r   rJ   rJ   rJ   rM   rN     r   z$test_DisjointUnion.<locals>.<lambda>r=   r>   r?   )r%   r&   Úrewriter,   r(   r   rp   r   r9   rd   r   )r=   r>   r?   rJ   rJ   rM   Ú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 )NTrB   rG   r]   F)r%   r   rp   ro   r&   rJ   rJ   rJ   rM   Ú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 )NTFrB   rG   r]   )r%   r   r^   r_   rm   rš   rp   rb   r&   r=   r>   rJ   rJ   rJ   rM   Útest_DisjointUnion_is_iterable*  s   &rÙ  c                   C   s  dt tdddtdddtddd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   rB   rG   )r   rB   )r   rG   rÛ   rH   rF   )rG   r   ©rG   rB   rü   )r   rB   rG   )r   rÚ   rÚ   )r   r¢   )rÚ   r   )rÚ   rB   )rÞ   r   )rÞ   rB   )r%   r&   r=   r>   r?   r   rp   r(   rJ   rJ   rJ   rM   Útest_DisjointUnion_contains0  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<  rB   ))r]   r   )r¢   r   )r&  r   )r<  r   c                      rý   rI   )ÚnextrJ   ©ÚitrJ   rM   rN   `  rW   z)test_DisjointUnion_iter.<locals>.<lambda>c                   S   ó   t ttddtjS r   )Úiterr%   r(   r   rp   rJ   rJ   rJ   rM   rN   b  r  )r%   r&   r=   r>   r?   rà  rÜ  Úremover9   ÚStopIterationre   )r¿   ÚL1ÚL2ÚnxtrJ   rÝ  rM   Útest_DisjointUnion_iterF  s6   






ræ  c                   C   sb   t ttddddttttdks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   )rn  r%   r(   r   rp   rJ   rJ   rJ   rM   rN   g  r  z(test_DisjointUnion_len.<locals>.<lambda>)
rn  r%   r&   r=   r>   r?   r   rp   r9   re   rJ   rJ   rJ   rM   Útest_DisjointUnion_lend  s   ((rç  c                  C   sz   t ttddgttddg} tt}tt||}| j|u s#J t tddttddgjttt|u s;J d S ©NrB   rG   )	r)   r&   r   r   r   r.   r   Úkindr(   )r   ÚmkÚkrJ   rJ   rM   Útest_SetKind_ProductSeti  s
   "4rì  c                   C   s   t ddjttu sJ d S rè  )r(   ré  r.   r   rJ   rJ   rJ   rM   Útest_SetKind_Intervalp  s   rí  c                   C   s(   t jjttu s
J tjt u sJ d S rI   )r   rn   ré  r.   r   rp   rJ   rJ   rJ   rM   Ú"test_SetKind_EmptySet_UniversalSets  rW  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   rJ   rJ   rJ   rM   Útest_SetKind_FiniteSetw  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 )NrB   rG   r&  )r,   r&   r   r(   ré  r.   r   r   rJ   rJ   rJ   rM   Útest_SetKind_Unions{  s   *(rð  c                  C   s2   t ddd} tdd}t| |jttu sJ d S )NrB   rG   r]   r   r¢   )r&   r(   r%   ré  r.   r   r
  rJ   rJ   rM   Ú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£   ©ÚargsrJ   rJ   rM   rN     rP   z-test_SetKind_evaluate_False.<locals>.<lambda>rB   rG   r   r¢   c                  W   rò  ró  rË  rô  rJ   rJ   rM   rN     rP   c                  W   rò  ró  )r$   rô  rJ   rJ   rM   rN     rP   >   rB   rG   r   r¢   >   rB   rG   r]   r   r¢   )	rp   ré  r.   r   r(   r   rn   r   r&   )rQ  r
   r»   rJ   rJ   rM   Útest_SetKind_evaluate_False  s    ÿÿrö  c                  C   sn   t tttd tdd} | td jttu sJ | tdd jttu s(J | td jttu s5J d S )NrG   rB   r   r]   é   é   )r"   r   rA   r(   r&   ré  r.   r   r²  rJ   rJ   rM   Útest_SetKind_ImageSet_Special  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 )NrB   rG   r   )r&   r1   r0  )rŸ   rº   r»   rJ   rJ   rM   Útest_issue_20089  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 )	NrB   rG   rH   rF   rÚ  rü   TF)	r&   r)   r§   r1   Úsimplifyr   r   r   r=   )rz   rÄ   r  ÚdrJ   rJ   rM   Ú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 )NrA   r(  rB   )r   r   r'   r#   r(   r1  rJ   rJ   rM   Útest_intersection_symbolic³  s   "rþ  c                  C   sz   t dddd} ttd| tdddttd| tdddks!J ttd| tdddttd| tdddks;J d S )	NrA   T)rY   r|   r   r   iô  r¢   é   )r   r'   r#   r(   r1  rJ   rJ   rM   Ú"test_intersection_symbolic_failing»  s   
ÿÿr   c                  C   s,   t d } t|  d¡ttddksJ d S )Ng-DTû!	@rG   z3.23108914886517e-15)r   r&   r$  r	   rU   rJ   rJ   rM   Ú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   rJ   rJ   rM   Útest_finiteset_simplifyÉ  s   r  c                  C   s>   t j} td}| |  t|d ¡ ¡8 } | |  t j ¡ ¡8 } d S )Nr=   rB   )r   r  r   rŠ   r2   r^  r   r  rJ   rJ   rM   Útest_issue_14336Í  s   r  c                  C   sF   t ddd\} }}td| t|d@ }tdd}| |¡d ks!J d S )Nzx, y, zTrD   rB   rG   )r   r(   r§   )r=   r>   r?   rE  rF  rJ   rJ   rM   Útest_issue_9855Ô  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.kindr   Ú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;   Úsympy.utilities.iterablesr<   rA  r=   r>   r?   r@   rA   rp   rl   rs   rv   ry   r   r   r   r¬   r±   r²   r·   rÂ   rÐ   rã   ré   rù   r  r  r  r  r  r  r  r  r   r%  r.  r2  r5  r9  r;  rH  rL  rT  rV  rY  r[  r\  r]  r_  ra  rc  rd  re  rg  rj  rv  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ö  rù  rú  rý  rþ  r   r  r  r  r  rJ   rJ   rJ   rM   Ú<module>   s&   $4'$	L1%1F#	L	1;
	"'

		

