a
    lŗhĄ ć                   @   s  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZWmXZX ejYZYdd ZZdd Z[d d! Z\d"d# Z]d$d% Z^d&d' Z_d(d) Z`d*d+ Zad,d- Zbd.d/ Zcd0d1 Zdd2d3 Zed4d5 Zfd6d7 Zgd8d9 Zhd:d; Zid<d= Zjd>d? Zkd@dA ZldBdC ZmdDdE ZndFdG ZodHdI ZpdJdK ZqdLdM ZrdNdO ZsdPdQ ZtdRdS ZudTdU ZvdVdW ZwdXdY ZxdZd[ Zyd\d] Zzd^d_ Z{d`da Z|dbdc Z}ddde Z~dfdg Zdhdi Zdjdk Zdldm Zdndo ZeOdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd ZeOdd Zdd Zdd Zdd Zdd Zdd Zdd ZeOdd Zdd Zdd Zdd Zdd Zd d” Zd¢d£ Zd¤d„ Zd¦d§ ZdØd© Z dŖd« Z”d¬d­ Z¢d®dÆ Z£d°d± Z¤d²d³ Z„d“dµ Z¦d¶d· Z§død¹ ZØdŗd» Z©d¼d½ ZŖd¾dæ Z«dĄdĮ Z¬dĀdĆ Z­dÄdÅ Z®dĘdĒ ZÆdČdÉ Z°dŹdĖ Z±dĢdĶ Z²dĪdĻ Z³dŠdŃ Z“eOdŅdÓ ZµdŌdÕ Z¶dÖd× Z·dŲdŁ ZødŚdŪ Z¹dÜdŻ ZŗdŽdß Z»dądį Z¼dādć Z½dädå Z¾dędē Zædčdé ZĄdźdė ZĮdģdķ ZĀdīdļ ZĆdšdń ZÄdņdó ZÅdōdõ ZĘeOdöd÷ ZĒdųdł ZČdśdū ZÉdüdż ZŹdžd’ ZĖd S (  é    )ŚSum©ŚAdd)Ś	TupleKind)ŚLambda)Ś
NumberKindŚUndefinedKind)ŚFloatŚIŚRationalŚnanŚooŚpiŚzoo)ŚPow©ŚS)ŚSymbolŚsymbols)Śsympify)ŚMaxŚMinŚsqrt)Ś	Piecewise)ŚcosŚsin)ŚfalseŚtrue)Ś
MatrixKind)ŚMatrix)Śrootof)ŚContains)ŚImageSetŚRange)Ś
ComplementŚDisjointUnionŚ	FiniteSetŚIntersectionŚIntervalŚ
ProductSetŚSetŚSymmetricDifferenceŚUnionŚimagesetŚSetKind)Śmpi)Ś	unchanged)ŚEqŚNeŚLeŚLtŚLessThan)ŚAndŚOrŚXor)ŚraisesŚXFAILŚwarns_deprecated_sympy)Ścartes)ŚxŚyŚzŚmŚnc                     s"  t jtttd t jt ju s"J tttd t jt ju s>J ttttt jt ju sZJ ttttt jt ju svJ ttttt jt ju sJ tddd} ttttft j 	d| f”d ksĀJ ttttft j 	d”dksāJ | | fttttft jv sJ dt
 tttt
 t jv s"J dhtttft jvs>J dtttft jvsXJ ttfdd	 ttfd
d	 ttdd	  dttttfttfv s®J ttfdd	 tttttttksäJ dd }t|ttttksJ dd	 }t|tttttks8J ttdtdksRJ tttthksjJ tttfdtft jdtfhksJ tdtd tt fdd	tddjjdv sČJ td\}}tdd	 tddtdd tt||f|| tddtdd”sJ d S )Né   ŚrT©Śreal©rB   é   F©rB   rB   c                      s
   t t S ©N)r-   r=   © ©ŚintsrJ   śH/var/www/auris/lib/python3.9/site-packages/sympy/sets/tests/test_sets.pyŚ<lambda>0   ó    ztest_imageset.<locals>.<lambda>c                      s   t ttt S rI   )r-   r=   r>   r?   rJ   rK   rJ   rM   rN   1   rO   c                   S   s   t tttttS rI   )r-   r   r=   r   r>   rJ   rJ   rJ   rM   rN   2   rO   c                      s   t ttt  S rI   )r-   r   r=   rJ   rK   rJ   rM   rN   4   rO   c                 S   s   t | S rI   ©r   ©r=   rJ   rJ   rM   Śf6   s    ztest_imageset.<locals>.fc                 S   s   t | S rI   rP   rQ   rJ   rJ   rM   rN   9   rO   r=   ©Śintegerc                    s   |   S rI   rJ   rQ   )ŚclashrJ   rM   rN   ?   rO   éž’’’)zx0 + xzx + x0zx1, x2c                 S   s
   t | |S rI   r   ©r=   r>   rJ   rJ   rM   rN   B   s    rG   é   )r   ŚIntegersr-   r=   ŚNaturalsŚ	Naturals0Śabsr   ŚRealsŚ	_containsr
   r9   Ś	TypeErrorŚ
ValueErrorr   r>   r   r"   r&   r?   r   r   Śstrr(   ZlamdaŚexprZdummy_eq)rC   rR   Śx1Śx2rJ   )rU   rL   rM   Śtest_imageset!   sL    $   $$ $(’
’’žre   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   rZ   r[   rY   Ś	Rationalsr]   ŚUniversalSetŚis_emptyŚEmptySet©ŚsrJ   rJ   rM   Śtest_is_emptyH   s
    ’rl   c                  C   sZ  t jt jt jt jt jt jfD ]} | jdu sJ qt jjdu s@J t	ddjdu sTJ t
ddjdu shJ t
ttjd u s|J tt	dt	djdu sJ tt	dt
ddjdu s¶J tt	dt
ttjd u sŌJ tt
ddt
ddjdu sōJ tt	dt
ddjdu sJ tt	dt	djdu s2J tt	dt
ttjd u sRJ tt
ttt	djdu srJ tt
ttt
ddjd u sJ tt	tt	tjdu s²J tt	dt
ttjdu sŅJ tt
ttt	djd u sņJ tt
ddt	tjdu sJ tt
ddt	ttjdu s4J tt jt	ttt jjdu sVJ d S )NFTrB   rG   r   rX   éū’’’)r   rZ   r[   rY   rf   r]   rg   Zis_finite_setri   r&   r(   r=   r>   r)   r,   r'   r$   r%   rj   rJ   rJ   rM   Śtest_is_finitesetP   s.    ’    "   "rn   c                   C   sb   t   tjj W d    n1 s$0    Y  t   tdj W d    n1 sT0    Y  d S ©NrB   )r;   r   ri   Zis_EmptySetr&   rJ   rJ   rJ   rM   Śtest_deprecated_is_EmptySetk   s    &rp   c                  C   s@  t dtt dtddksJ t dtjtu s0J t t dt t dddksPJ t t djtu sfJ t tt tjks|J t tttjksJ t t t tjksØJ t tttjks¼J t tttjksŠJ t tt tjksęJ t ttthksśJ tt ddt	sJ t
ttddf} tt | | t	s6J t ddtjksLJ t ddjdksbJ t ddddtjks|J t ddddtjksJ t ddddtjks°J tt dtdt sŹJ t tddddtjksčJ ttdd	  ttd
d	  ttdd	  ttdd	  ttdd	  ttdd	  d S )Nr   FTrB   rX   Śa©Śpositivec                   S   s   t dtjS ©Nr   )r(   r   ŚImaginaryUnitrJ   rJ   rJ   rM   rN      rO   z)test_interval_arguments.<locals>.<lambda>c                   S   s   t dtdddS )Nr   r?   F©Zextended_real)r(   r   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t tttj S rI   )r(   r=   r   ru   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t ddtttS ©Nr   rB   ©r(   r6   r=   r>   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t dddtttS ©Nr   rB   Frx   rJ   rJ   rJ   rM   rN      rO   c                   S   s   t ddttttS rw   )r(   r?   r6   r=   r>   rJ   rJ   rJ   rM   rN      rO   )r(   r   Ś
right_openr   Ś	left_openr   ri   r=   Ś
isinstancer&   r   Śmeasurer   r9   r`   Ś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s2J tt| dtddjtd| ksXJ td|  d”td| ksvJ d S )Nrq   TrD   r   rX   éż’’’rB   )	r   r,   r(   Śsupr   Śinfr   Ścontainsr5   ©rq   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sPJ tddjdksdJ t||jdksxJ t||| jdksJ t| | jdks¤J tdtjdksøJ tt tjdksĪJ tt djdksäJ t| |jd ksųJ t|tjdksJ t|djdks$J t|dddjdks>J t|djdksTJ t|djd ksjJ t||jdksJ td|ddjdksJ td|ddjdks“J td|ddjd ksĪJ td|ddjd ksčJ d S )Nzx, yrC   TrD   Śprr   rA   )ŚnegativeŚnn)ZnonnegativerB   rG   FrX   r   ©r{   ©rz   )r   r   r(   rh   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sJJ t tddtddtddksnJ t tddtddtddksJ t tddtddtddks¶J t tddddtddtddddksāJ t tddtddddtddksJ t tdddtddtddks4J t tdddtdddtdddks`J t tdddtddddtddddksJ t tddddtdddtdddks¾J t tddtddtddksäJ t tddddtddtddksJ t tddddtdddtddks:J t tddtjtddks\J t tjtjksrJ t tddgdd	 tdd
D ¢R  tddksØJ td} t tddtd| t tddt| ksąJ tt tddtd| sžJ tdd tdd”tddtdd ks.J tdd tdd”tddksTJ t t	 t	 ksjJ tdtd td tdddksJ tdtd tddks“J tdddtj tdddksŲJ tdddtddd@ tddks J tdddtdddB tddddks,J tdddtj@ tjksJJ tdddtjB tdddksnJ td} td}td}tjt| t||B t| t||ks²J tddtd tddksŌJ tddddtd tddddksžJ tddtd }tddtd }| 
|”}d|v rJd|v rJd|v sNJ | |”rf| |”sjJ ttdd  |jdu sJ t tjttt  tt ttt  tt ksĘJ t tjtjtjksąJ d S )NrB   rG   rX   Té   Fr   c                 S   s   g | ]}t d | qS )ē      š?©r&   )Ś.0rA   rJ   rJ   rM   Ś
<listcomp>Ó   rO   ztest_union.<locals>.<listcomp>é
   r=   ŚhamŚeggsr>   r?   é   c                   S   s   t dddS )NrB   rG   rX   ©r,   rJ   rJ   rJ   rM   rN   ü   rO   ztest_union.<locals>.<lambda>)r,   r(   r   ri   Śranger   r&   r0   Śunionr*   Ś	intersectŚ	is_subsetr9   r_   Śis_iterabler   r
   r]   rY   )r=   r>   r?   ŚXŚYZXandYrJ   rJ   rM   Ś
test_union»   s    $&$$$’*(
’
’

’
&’
’
"$’
’’
&* $(,$’
"’

"’
r   c                  C   s4   t tdtdtddd} t| g d¢ks0J d S )NrX   r   r   F©Śevaluate)r   r   r   rB   rB   rB   rG   rG   rG   rX   rX   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&   rh   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sJJ t dddt dd t ddddksrJ t dddt ddd t ddddksJ t ddtd tt ddddt ddddksŠJ tjtt tjksčJ tjtt t tjksJ t ddtt t t ddks,J t ddtdt tt  dd”t  dd”ks`J tjtddt tt	d  t
tt  t d”t  dt”ttt	d ddks²J tdddtd tddksÖJ td	d
td
 td	ksöJ tddddt dddd tddks"J tddddtj tddddksJJ tt ddtdddt dd tt ddddtdksJ dtjtj v s J d S )NrB   rX   rG   TFr   r   r   r   r   r   é’’’’)r(   r&   r,   r   r]   r
   ŚRopenŚLopenr=   r>   r$   Śopenr   ri   rZ   rJ   rJ   rJ   rM   Śtest_difference  s:    $&(’’&’&ž$ ’
( ’
r©   c                     s  t ddd t dd} tddtdd}t | ddjdu sBJ t ddjdu sZJ t|ddjd u srJ t t | dd t dksJ t t dd t dks®J tt fdd	 ttddtddtdddksčJ tt dddt ddt dksJ tttd
dt dddtddttd
dddt dksPJ dttd
dtddddvstJ dttjtj	ddv sJ dttjtj	ddvs¬J ttj
tjtksÄJ tj tj
”tksÜJ d
tj tj
t d
 ”vsüJ tjtj
 tjksJ tj
t d
 t d tj
t d
d ks@J tjttj	t t ttjtj	 tjt t ksxJ tt ttdtddtt tttddks¬J t td  t td } ttt  | sÜJ t  }t| | | }|| |ksJ || |ksJ d S )NrB   rX   r   rG   Fr   Tc                      s   t t dd S ©NFr   )r&   r$   rJ   ©ŚAŚCrJ   rM   rN   >  rO   z!test_Complement.<locals>.<lambda>r   r   r„   éö’’’r   za:czd:f)r&   r(   r$   r   r9   r_   r,   r   r]   rZ   rY   rg   ri   Ś
complementr   r   r'   r=   r>   r   r0   r)   )ŚBŚDŚA2ZB3rJ   r«   rM   Śtest_Complement2  sL    


&&’ž
$ ,’
’

r³   c               	      s  dd dd dd dd dd dd dd d	d g} t t}t t}d
ht d
td
dt|td
dt||t||t||tj	g}dd
dtdtd
tdg}|D ]h|D ]: | D ]0t
t fdd t
t fdd q“q¬t
tfdd t
tfdd q¤dS )z1Tests that e.g. FiniteSet(1) * 2 raises TypeErrorc                 S   s   | | S rI   rJ   ©rq   ŚbrJ   rJ   rM   rN   f  rO   z-test_set_operations_nonsets.<locals>.<lambda>c                 S   s   | | S rI   rJ   r“   rJ   rJ   rM   rN   g  rO   c                 S   s   | | S rI   rJ   r“   rJ   rJ   rM   rN   h  rO   c                 S   s   | | S rI   rJ   r“   rJ   rJ   rM   rN   i  rO   c                 S   s   | | S rI   rJ   r“   rJ   rJ   rM   rN   j  rO   c                 S   s   | |B S rI   rJ   r“   rJ   rJ   rM   rN   k  rO   c                 S   s   | |@ S rI   rJ   r“   rJ   rJ   rM   rN   l  rO   c                 S   s   | |A S rI   rJ   r“   rJ   rJ   rM   rN   m  rO   rB   rG   r   c                      s
    S rI   rJ   rJ   ©ŚniŚopŚsirJ   rM   rN     rO   c                      s
    S rI   rJ   rJ   r¶   rJ   rM   rN     rO   c                      s
    t   S rI   )ŚobjectrJ   ©r¹   rJ   rM   rN     rO   c                      s
    dh S ro   rJ   rJ   r»   rJ   rM   rN     rO   N)r&   r=   r>   r(   r,   r'   r$   r)   r   ri   r9   r_   )ŚopsZSxZSyŚsetsŚnumsrJ   r¶   rM   Śtest_set_operations_nonsetsc  s8    ųų
ræ   c                	      s  t ddhdhdhksJ tdd tj”ttt dddtdtddksPJ tdddd tj”ttt dddtdtddksJ tdddd tj”ttt dddtdtddksÄJ tdddd tj”ttt dddtdtddksžJ tj tj”tjksJ tj tj”tjks2J tj tj”tjksLJ tj tj”tjksfJ ttddtdd tj”ttt dddtddddtdtddks¶J t	d tj”ttt dddtdtddksģJ t	dttj
d  tj”tddddtdtjdd ks,J t	ddd tj”ttj
dddtdddd tdddd tdtjdd ksJ t	t tj”t tjt	tksØJ t	dt tj”t tt dddtdtdd t	tddksģJ tddtdd  tjtj ” tfd	d
dD s.J t fdd
dD rJJ tfdd
dD rfJ t fdd
dD sJ d S )NrB   rG   r   TFrX   r   r   c                 3   s   | ]}| v V  qd S rI   rJ   ©r   Śpt©ŚsquarerJ   rM   Ś	<genexpr>²  rO   z"test_complement.<locals>.<genexpr>)©r   r   ©ē      ą?rĒ   ©rB   r   rH   c                 3   s   | ]}| v V  qd S rI   rJ   rĄ   ©Ś	notsquarerJ   rM   rÄ   ³  s   c                 3   s   | ]}| v V  qd S rI   rJ   rĄ   rĀ   rJ   rM   rÄ   µ  rO   ))r„   r   )ē      ų?rĒ   )r   r   c                 3   s   | ]}| v V  qd S rI   rJ   rĄ   rÉ   rJ   rM   rÄ   ¶  rO   )r$   r(   rÆ   r   r]   r,   r   rg   ri   r&   ŚNegativeInfinityŚInfinityr=   ŚallŚanyrJ   rJ   )rŹ   rĆ   rM   Śtest_complement  sn    ’’’’’’
’
’’ž
’’ž’
& ’ž’rŠ   c                  C   s°  t dd tjtjfD sJ t dd tjtjfD s<J tj} tj | ”tju sXJ |  tj”tju snJ td}tdd tdd”tddksJ tdd tddd”tdddksĀJ tddd tdd”tddd	d	ksģJ tdddd tdd”tddd	dksJ tdd ttddtdd
”ttddtddksXJ t	dd t	ddd
”t	ddksJ t	dd| t	|”t	|ks¤J t	dd t	d”t	dksĘJ t	ddd
dd tj
”tj
ksźJ tdd t	dd
”t	dd
ksJ tdddd t	d”tj
ks4J ttddtdd
 tdd”ttddtddksrJ ttddtdd
 tdd”ttddtddks°J ttddtdd
 tdddd”tj
ksāJ ttddtdd
 tj
”tj
ksJ ttddt	d t	dd
ddd”tt	dd
dddtt	dtddks^J tt	ddd
td|td
ttt	d
td|td
td	dks¤J tt	ddtdd
t|ttddht|td	dksąJ tt	dddtdd
t|ttddht|td	dksJ tddd\}}tt	|t	||t||d t	|ks\J tt	|t	ttt	|t	td	dksJ t	| tj”ttjt	|d	dks“J tdd t	dd
”t	dd
ksŚJ tdddd t	d”tj
ksžJ ttddtdd
 tdd”ttddtddks<J 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   rY   Śintersection©r   ŚirJ   rJ   rM   rÄ   ŗ  rO   z"test_intersect1.<locals>.<genexpr>c                 s   s   | ]}|  tj”|u V  qd S rI   )rŃ   r   rY   rŅ   rJ   rJ   rM   rÄ   ¼  rO   r=   r   rG   rB   TFrX   r   r   r   r   é   r   zm, nrD   )rĪ   r   rZ   r[   rŃ   r   r(   r   r,   r&   ri   r'   r>   r   r]   r   )rk   r=   r@   rA   rq   rµ   rJ   rJ   rM   Śtest_intersect1¹  s    
’
’$
’’’
 ’
($’
$&$ ’
 ’
$’
’
$$’
’
’
’
’
’
’
&$ ’
&rÕ   c                  C   s"  t t t ft t jt jft t jt jft t jt jft jt jt jft jt jt jft jt jt jft jt jt jft jt jt jft jt jt jfg
} dd }| D ]\}}}||f||ffD ]p\}}tddgddgddgddgD ]H\}}}	}
|||	}|||
}||||||	|
}| |”|ksŠJ qŠqŖqd S )Nc                 S   s   t |tr|S | S rI   )r|   Śfloat)Śa1Śa2rJ   rJ   rM   rN     rO   z2test_intersection_interval_float.<locals>.<lambda>rG   g       @rX   g      @)r(   rØ   r§   r¦   r<   r   )ZtypsZas_floatŚt1Śt2Śt3Zt1iZt2ir×   rŲ   Śb1Śb2ZI1ZI2ZI3rJ   rJ   rM   Ś test_intersection_interval_float’  s&    ö*

rŽ   c                     sø  t tdddtdddd  js&J t tdtdhksBJ tddd	} t td
dt| d d v du stJ tt fdd t td
dtj	tj	ks¢J t tt
 t
tt
 | tt
 | ksĢJ td
d}t |d |d dd d vsųJ d vsJ tt fdd t t tjtjddtjdd}|jtt tjtjddtjgks^J t tjttjtj	ks|J t  tjksJ t dhdh| ht dh| hks“J d S )NrB   rG   rX   r   Fr   r=   TrD   r   rŌ   c                      s   d v S ©NrG   rJ   rJ   ©rÓ   rJ   rM   rN   %  rO   z#test_intersection.<locals>.<lambda>©rG   rG   )rG   rG   rG   c                      s   t  S rI   )r”   rJ   rą   rJ   rM   rN   0  rO   )r'   r&   r(   r   Śsetr   r   r9   r_   ri   r   rY   rZ   r]   Z_argsetŚ	frozensetŚ	ComplexesŚComplexInfinityrg   )r=   Ślinerq   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   rX   r   )r   r   r]   r(   r   r&   r'   ri   )rA   rq   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   FrX   r   T)r(   Z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sBJ t| | ” dksXJ t| | ” tdusrJ d S )NrB   rG   rX   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s4J t tjtjtjtjd ksTJ t tjtjkshJ t tjtjtjtj ksJ t tjtjtjtjtj tj ks®J t tjtjtjtjtj tj  ” ksŚJ dt tjvsģJ dt tjv sžJ dt tjtjvsJ dt tjtjv s.J dtft tjtjvsJJ dt tjtjtjv sfJ dtjd v szJ dtjtj tj vsJ dtjtj tj v s²J dtjtj tj vsĪJ dtjtjtj  v sźJ t  td	ksžJ t tjtjtjksJ td
D ]6} t tjf|   }d|  |v sFJ d|vs J q tjtj tj tjtjtj  ksJ tj}tj}t	}d}||v s¤J ||v s²J ||f|| v sČJ ||  ||f}| v sęJ ||f   v süJ ||    vsJ t
tdd  t & t dd tdD  W d    n1 sT0    Y  t
tdd  tdd}tdd}t ||   tt”t| t”| t”  kręttttdttdtttdttdksģn J t
t fdd t
t fdd t
tdd  t tjtj}| d”tju sBJ | d”tju sXJ | t”tt|ddksvJ | t” td”tju sJ | tdf” td”tju s¶J | ttf”tttjtttj@ ksāJ ttttf|sųJ td|tju sJ d S )NrB   rG   rX   )rB   rF   ©rB   rG   rX   )rF   rX   )rB   )rG   rX   rJ   r   c                   S   s
   t jd S )Nr„   )r   r]   rJ   rJ   rJ   rM   rN     rO   z!test_ProductSet.<locals>.<lambda>c                 s   s   | ]}t |V  qd S rI   r   ©r   rk   rJ   rJ   rM   rÄ     rO   z"test_ProductSet.<locals>.<genexpr>c                   S   s   t d S rI   )r)   rJ   rJ   rJ   rM   rN     rO   r   c                      s
      t”S rI   ©Śas_relationalr=   rJ   ©ZS3rJ   rM   rN     rO   c                      s      td”S ro   rš   rJ   rņ   rJ   rM   rN     rO   c                   S   s   t tdd tt”S rw   )r)   r(   rń   r=   r>   rJ   rJ   rJ   rM   rN     rO   Fr   )r)   r   r]   Śflattenr
   r&   ri   r   rY   r   r9   r`   r;   r_   rń   r=   r>   r6   r7   r1   r   r   r   r!   Śsubsr0   )r·   ZRnZS1ZS2rc   rd   Zx3ZZ2rJ   rņ   rM   Śtest_ProductSetW  sz     (,*6



’
,ž",rõ   c                   C   s0   t ttddsJ t tttdds,J d S rw   )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s4J d S )NFrB   )r)   r   rY   r]   rh   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sHJ d S )Nrq   TrD   r   rG   )r   r(   rō   r   ri   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s`J d S )Nr   rB   TF)r(   Z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sXJ t t tj ” t t tdks~J tdt ” ttdtksJ d S )	Né   é@   z0.171875z0.5Tr   rG   z2.0)r(   r   Z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s4J td| j| d ksLJ ttddtddjdkslJ ttddtddtd	d
djdksJ tddt| t djdks“J tjjdksÄJ tddtdd }td	dtd	d }tt ttdd }|j|j  krdks$n J || jdks8J || jdksLJ |tddd jdkshJ | |”jdks~J || jtu sJ |tddd jt	u s®J d S )Nrq   TrD   rB   rX   rG   r   r   r   rŌ   é   rm   r   é   éd   éÆ   éK   é   )
r   r(   r}   r,   r&   r   r   ri   r   r   )rq   rĆ   ZoffsetsquareZbandrJ   rJ   rM   Śtest_measureĆ  s(      ’"r  c                  C   sV  t dd t dd”du sJ t dd t dd”du s<J t dd tdd”du sZJ tdd tdddd”sxJ tdd tdddd”du sJ td t dd”s²J tdd t dddd”du sŌJ t ddtd  t ddddtdd ”sJ t dd tt ddt dd”du s2J t dd	 tt ddt dd”du s^J tdddd t dd”du sJ tj tddd”du s J t dd tj”du s¼J tj tj”du sŌJ ttd
d  tdddd t dd”du sJ tj tddd”du s$J tj	 tj
”s8J tj tj
”sLJ tt tt”d u shJ tt tt tt””du sJ tt tt ttd ””du s“J t dd t dddd”du sŲJ t dd tt t dt dt”du sJ tddd} tddd tdd”du s4J ttdd  tddd”du s\J td	dd tddd	”du sJ tdt tdd”du s J tt d td”du sĄJ td tdd| ”d u sąJ t| | d  t| | d ”du sJ td t dddd”du s*J tt| d|  tj
 tj”d u sRJ d S )Nr   rB   rG   TrX   Fr   r   rŌ   c                   S   s   t j d”S ro   )r   ri   r   rJ   rJ   rJ   rM   rN   ō  rO   z test_is_subset.<locals>.<lambda>r   rV   rA   rS   r   r®   r   r  r   )r(   r   r&   r,   r   ri   r9   r`   ŚissubsetrZ   rY   r[   r=   r>   rō   r   r   r#   r-   r   r]   ©rA   rJ   rJ   rM   Śtest_is_subsetß  sH    ""’
,,$$$($."($   ("r  c                   C   sj   t dd t dd”du sJ t dd t dd”du s<J tj tddd”du sXJ ttdd  d S )	Nr   rB   rG   TrX   Fc                   S   s   t dd d”S rw   )r(   Śis_proper_subsetrJ   rJ   rJ   rM   rN     rO   z'test_is_proper_subset.<locals>.<lambda>)r(   r	  r   ri   r&   r9   r`   rJ   rJ   rJ   rM   Śtest_is_proper_subset  s    r
  c                   C   sÖ  t dd t dd”dksJ t dd t dd”s8J tdd tdddd”dksZJ tdd tdddd”dks|J td t dd”dksJ tdd t dddd”dksŗJ t ddtd  t ddddtdd ”dksīJ t dd tt ddt dd”dksJ tdddd t dd”dks>J tj tddd”dks\J t dd tj”dksxJ tj tj”dksJ ttd	d
  t dd tj”dksŗJ tj tj”dksŅJ d S )Nr   rB   rG   FrX   r   r   Tc                   S   s   t j d”S ro   )r   ri   Śis_supersetrJ   rJ   rJ   rM   rN   +  rO   z"test_is_superset.<locals>.<lambda>)	r(   r  r&   r,   r   ri   r9   r`   Ś
issupersetrJ   rJ   rJ   rM   Śtest_is_superset  s&    """’’,$r  c                   C   sj   t dd t dd”du sJ t dd t dd”du s<J tddd tj”du sXJ ttdd  d S )	Nr   rB   rG   FrX   Tc                   S   s   t dd d”S rw   )r(   Śis_proper_supersetrJ   rJ   rJ   rM   rN   7  rO   z)test_is_proper_superset.<locals>.<lambda>)r(   r  r&   r   ri   r9   r`   rJ   rJ   rJ   rM   Śtest_is_proper_superset2  s    r  c                     s  t dd d”tju sJ t dd d”tju s4J t dddd d”tju sRJ t dddd d”tju spJ t dddd d”tju sJ t dddd d”tju s¬J t dddd d”tju sŹJ t dddd d”tju sčJ t ddt ddv du sJ tddd d”tju s$J tddtd td”tju sJJ tt t	”t
tt	ddkslJ 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sLJ t  d”t
 dksjJ tt fdd
 ttdtddd tdd}ttddtddttddtdd ttddtdd }t|}t|}|| tjksJ ddtjtddg}t| tfdd|D s:J tfdd|D sVJ 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s®J tt dt	t dd t”ttdktt	ktjtktdtkksōJ tj tj”tjksJ d S )Nr   rG   rB   rX   TFr=   r   c                   S   s   t ttv S rI   )r=   r&   r>   rJ   rJ   rJ   rM   rN   J  rO   ztest_contains.<locals>.<lambda>r“   c                      s   dt  v S ro   r   rJ   r   rJ   rM   rN   T  rO   é	   r   r   gńæc                 3   s   | ]}| v V  qd S rI   rJ   ©r   Śitem©ŚfsetrJ   rM   rÄ   _  rO   z test_contains.<locals>.<genexpr>c                 3   s   | ]}   |”tju V  qd S rI   )r   r   r   r  r  rJ   rM   rÄ   `  rO   r   rŌ   )r(   r   r   r   r   r&   r   r>   r^   r=   r1   r9   r_   rō   Ś	sympy.abcrq   rµ   r   r   ri   rĶ   rĪ   r,   r    r]   r7   r6   ZOner'   rä   rå   )rµ   Zrad1Zrad2Śs1Śs2ŚitemsrJ   )rq   r  rM   Śtest_contains:  sX    &".(," B(((.&&*’
"’
r  c                     sÜ   t dtdd   ”ttjkdkks4J tt fdd tdddd   ”ttjk dk ksxJ t ddd	} td  | ”dks J t d
dd tt t  ”ttj	 k  tj
k ksŲJ d S )Nr=   r   rB   c                      s    v S rI   rJ   rJ   ©r   r=   rJ   rM   rN   y  rO   z(test_interval_symbolic.<locals>.<lambda>Trč   FrD   r   rv   )r   r(   r   r6   r   ŚZeror9   r_   r   rĢ   rĶ   )rč   rJ   r  rM   Śtest_interval_symbolicu  s    
""’r  c                     s^  t dtdd} tdd}t| | ”tttjkdkttdkdkks`J tt	fdd  
”}| ”ksJ | d”tu s¤J | d	”tu søJ | d
”tu sĢJ | d”tu sąJ | d”tu sōJ tddddtdt tdddd  t fddddt fD s>J t fdddD sZJ d S )Nr=   r   rB   rG   rX   c                      s    v S rI   rJ   rJ   )Śi3r=   rJ   rM   rN     rO   z%test_union_contains.<locals>.<lambda>g      ąærĒ   rĖ   g      @g      @Tr   r„   r   rŌ   c                 3   s   | ]}| vV  qd S rI   rJ   ©r   Śel©ŚUrJ   rM   rÄ     rO   z&test_union_contains.<locals>.<genexpr>r   c                 3   s   | ]}| v V  qd S rI   rJ   r  r   rJ   rM   rÄ     rO   )rG   r   r   )r   r(   r,   rń   r7   r6   r   r  r9   r_   r   rō   r   r   r   r&   rĪ   )Śi1Śi2r   rJ   )r!  r  r=   rM   Śtest_union_contains  s     


:
&$r$  c                   C   s(   t ddjdu sJ t jdu s$J d S ry   )r(   Z	is_numberr*   rJ   rJ   rJ   rM   Śtest_is_number  s    r%  c                   C   sF   t ddjdu sJ t t djdu s*J t tddjdu sBJ d S )NrX   r   FTz-inf)r(   Zis_left_unboundedr   r	   rJ   rJ   rJ   rM   Śtest_Interval_is_left_unbounded  s    r&  c                   C   sD   t ddjdu sJ t dtjdu s(J t dtdjdu s@J d S )NrX   r   FTz+inf)r(   Z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s6J tdddd | ”ttd| t| dksdJ tdddd | ”ttd| t| dksJ tdddd | ”ttd| t| dksĄJ tt ddd | ”ttt | t| dksņJ tt ddd | ”ttt | t| dks&J tdtdd | ”ttd| t| tksVJ tdtdd | ”ttd| t| tksJ tt t | ”ttt | t| tks¶J t ddd	} t d
dd	}t| | | ”| |kksģJ t||  | ”|| kks
J d S )Nr=   r„   rG   FTr   rV   r   rD   r>   )r   r(   rń   r6   r3   r4   r   rW   rJ   rJ   rM   Śtest_Interval_as_relationalØ  s,    ’’’’24000r(  c                  C   sh   t d} t d}tdd | ”tt| dt| dks:J t|d | ”tt| |t| dksdJ d S )Nr=   r>   rB   rG   rm   )r   r&   rń   r7   r1   rW   rJ   rJ   rM   Śtest_Finite_as_relationalĮ  s    *r)  c                  C   sų   t d} tddtd  | ”tttd| t| dt| dksFJ tddddtd  | ”ttd| t| dks|J t| dk | dk 	”  | ”t| t
 k| t
k t| dksøJ t dd”t dd”  | ”tt| d| dk| dkksōJ d S )Nr=   r   rB   rG   TrX   r   )r   r(   r&   rń   r7   r6   r3   r1   r4   Śas_setr   r2   r¦   r§   rQ   rJ   rJ   rM   Śtest_Union_as_relationalÉ  s     ’’’’’r+  c                  C   sP   t d} ttddtddd | ”tttd| t| dt| dksLJ d S ©Nr=   r   rB   rG   Fr   )r   r'   r(   r&   rń   r6   r3   r1   rQ   rJ   rJ   rM   Śtest_Intersection_as_relationalÕ  s    ’’ žr-  c                  C   sP   t d} ttddtddd}| | ”ttd| t| dt| dksLJ d S r,  )r   r$   r(   r&   rń   r6   r3   r2   ©r=   rb   rJ   rJ   rM   Śtest_Complement_as_relationalÜ  s
    ’r/  c                  C   sL   t d} ttddtddd}| | ”d| k| dk@ t| d@ ksHJ d S r,  )r   r$   r(   r&   rń   r2   r.  rJ   rJ   rM   Ś"test_Complement_as_relational_failć  s
    ’r0  c                  C   sR   t d} ttddtddd}| | ”tt| dtd| t| d@ ksNJ d S r,  )r   r+   r(   r&   rń   r8   r1   r3   r.  rJ   rJ   rM   Ś&test_SymmetricDifference_as_relationalķ  s    r1  c                   C   sH   t j td”t ju sJ t j t j”t jks2J t jjt jksDJ d S )Nr=   )r   ri   rń   r   r   r   rg   ŚboundaryrJ   rJ   rJ   rM   Śtest_EmptySetó  s    r3  c                  C   s  t d} tddd}tddd}t||}| |”}| |”rH| |”sLJ | |”sZJ |tdksjJ |jdkr~|jdksJ |jdkr|jdksJ t| ddjt| dks¶J t| ddjt| dksŅJ tt	j
t	j
ksęJ ttdddtdddksJ tdtdddks"J td|d	| d
| d s>J ||kdu sPJ ||kdu sbJ ||k du stJ ||kdu sJ ||kr||ksJ ||kr²||ks¶J ||krŹ||ksĪJ ||krā||ksęJ ||krś||ksžJ d S )Nr=   rB   rG   rX   r   r   rī   rF   rm   r   F)r   r&   r,   r   r   r   r   r   r   r   ri   )r=   r¬   r°   ZAorBZAandBrJ   rJ   rM   Śtest_finite_basicł  s2    

"r4  c               
      s  d\} }t dd}tdddddd}tdddd}t| | || }d	|v sPJ d|vs\J | |f d v spJ d
||  ” v sJ d|| v sJ | ddf | |  ” v s²J | dfdf | | v sĪJ t| t| }}t d ||f||f||f||fhksJ ||  || ”s&J | t t tt t t ”tt t dddt dtdd t t t t t tt t dddt dtdd  ks J t ddd  t ddd ”sÄJ t ddd  t ddd ”rčJ t ddd  t ddd ”rJ t ddtd  |”s*J t	     dksDJ t	t
jt
j dks^J t	t
j  dksvJ tt fdd d S )N)ŚHŚTr   rB   rG   rX   r   r   rŌ   rÅ   )rĒ   rĒ   rĒ   )rĘ   rĒ   Trm   r®   r   gÉ?rĒ   é   c                      s   t  tdd S )Nr   rG   )Ślenr(   rJ   ©ZcoinrJ   rM   rN   ?  rO   z$test_product_basic.<locals>.<lambda>)r(   r&   ró   r   rā   r   rÆ   r   r,   r8  r   ri   r9   r_   )r5  r6  Z	unit_lineZd6Zd4rĆ   ZHHZTTrJ   r9  rM   Śtest_product_basic  sD    

.’
’’ż$$$r:  c                     sģ   t ddd} tddtddtdd	d
| tj tddtdtddtdd  fD snJ  tj”r~J t fdd fD sŖJ tfdd fD rŠJ     tj”rčJ d S )Nr=   TrD   r   r   r   r  rB   rG   é   éü’’’r  ŚHamŚEggsc                 s   s   | ]}|  tj”V  qd S rI   ©r   r   r]   rļ   rJ   rJ   rM   rÄ   L  rO   ztest_real.<locals>.<genexpr>c                 3   s2   | ]*} fD ]}||   tj”V  qqd S rI   r?  )r   rq   rµ   )r¬   r°   r­   r
   ŚJrJ   rM   rÄ   N  rO   c                 3   s   | ]}|    tj”V  qd S rI   r?  )r   rq   )r±   rJ   rM   rÄ   O  rO   )	r   r(   r&   r   ŚPirĪ   r   r]   rĻ   rQ   rJ   )r¬   r°   r­   r±   r
   r@  rM   Ś	test_realB  s    



 ,&rB  c                  C   sv  t ddd} t ddd}tddtd jdks4J tddtd jdksPJ tddt|  jtd| ksrJ tddt|  jtd| ksJ tdd| jtd| ks°J tdd| jtd| ksĢJ tdd| |jtd| |ksģJ tdd| |jtd| |ksJ tdd| |tjtj	jtjks2J tdd| |tjtj	jtj	ksVJ td	d
jtd	d
ksrJ d S )Nr=   TrD   r>   r   rB   rG   r   r=  r>  )
r   r(   r&   r   r   r   r   r   rĶ   rĢ   rW   rJ   rJ   rM   Śtest_supinfT  s"    "" "’
’
rC  c                  C   s   t j} td}|  |”t ju s"J |  tdd”| ks:J |  tdd”tddksXJ | jt j	u shJ | j
t jksxJ |  d”t ju sJ d S )Nr=   rG   r   r   )r   rg   r   rń   r   r   r(   r   r}   rĶ   r2  ri   r   ©r!  r=   rJ   rJ   rM   Śtest_universalsetg  s    rE  c                  C   s8   t dd} tddd}t| |  | | | |  ks4J d S )Nr   rG   rB   )r(   r&   r,   )rę   ZpointsrJ   rJ   rM   Ś test_Union_of_ProductSets_sharess  s    
rF  c                  C   s<   t ddjt ksJ tddd} t d| j| hks8J d S )Nr   rB   r=   TrD   )r(   Zfree_symbolsrā   r   rQ   rJ   rJ   rM   Śtest_Interval_free_symbolsy  s    rG  c                  C   s¤  t ddd} t ddd}t| d|  tddtddks<J t| d|  tdddd	tdddd	kshJ t| | d tdddd	td
dd	dksJ t| | d tddtd
dksøJ t| | d tdddd	td
dd	dksäJ t| | d tddddtd
dd	dksJ t| | d d tddtd
dks<J t| d| d  d| d   d| d   d|   td
dtdd
ksJ t| | d|   tt ttt dtdt ks¾J t| d|  d| d d   td
ddd	ttddtd	ks J tdd tddtddks$J tt| ||  td
dtt| ||  td
dks^J tt| tt| td
dtt| tt| td
dks J d S )Nr=   TrD   rq   rG   rV   rB   r<  Fr   r   rX   é   éN   éZ   iŻ’’’c                 S   s   d|  S rß   rJ   rQ   rJ   rJ   rM   rN     rO   z%test_image_interval.<locals>.<lambda>)	r   r-   r(   r   r   r   r"   r   r   )r=   rq   rJ   rJ   rM   Śtest_image_interval  sB    $’’$’’
*8’
$’(’
$’
’rK  c                  C   s   t ttdkfdtd  tdkftd df} t dtdkfdtdkfd}tt| td	dttd	dttdd
tkszJ tt|tddtddksJ d S )Nr„   rB   rG   r   rX   Tr   )rG   Trm   é   )r   r=   r-   r(   r,   r   r   r&   )rR   Śf1rJ   rJ   rM   Śtest_image_piecewise  s    ,2rN  c               	   C   st   t ddd} t ddd}t| | d tdd t| |”tdd tt| d |d t| d |d ”kspJ d S )	Nr=   TrD   r>   rG   rV   r   r   )r   r-   r(   r   r   r   rW   rJ   rJ   rM   Śtest_image_Intersection¦  s
     0’rO  c                  C   s8   t ddd} t| d|  tdddtdddks4J d S )	Nr=   TrD   rG   rB   rX   r   rŌ   )r   r-   r&   rQ   rJ   rJ   rM   Śtest_image_FiniteSet®  s    rP  c                  C   sH   t ddd} t| | d tddtddd tdd	td
 ksDJ d S )Nr=   TrD   rG   rV   r   rB   rX   r   r  )r   r-   r(   r&   rQ   rJ   rJ   rM   Śtest_image_Union³  s     ’rQ  c                  C   s,   t ddd} t| d|  tjtjks(J d S )Nr=   TrD   rG   )r   r-   r   ri   rQ   rJ   rJ   rM   Śtest_image_EmptySet¹  s    rR  c                   C   s.   t tjvsJ tt t t ”tju s*J d S rI   )r
   r   r]   r(   r   r   r   rJ   rJ   rJ   rM   Śtest_issue_5724_7680¾  s    rS  c                   C   s4   t djt dksJ tdd ttfD s0J d S )NrB   c                 s   s6   | ].}t tfD ] }td d||jtd dkV  qqdS )r   rB   N)r   r   r(   r2  r&   )r   r{   rz   rJ   rJ   rM   rÄ   Å  s   ’z test_boundary.<locals>.<genexpr>)r&   r2  rĪ   r   r   rJ   rJ   rJ   rM   Śtest_boundaryĆ  s    ’rT  c                   C   s  t ddt dd jtddddks(J t ddddt dddd jtdddksVJ t ddtd jtdddkszJ tt ddt dd	dd
jtdd	ks¤J tt ddt dddd
jtddksĪJ tt ddddt dd	dddd
jtddd	ksJ d S )Nr   rB   rG   rX   FTr   r   r   r   )r(   r2  r&   r,   rJ   rJ   rJ   rM   Śtest_boundary_UnionÉ  s$    (’
’$’’’
žrU  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(   r2  r&   rJ   rJ   rJ   rM   Ś#test_union_boundary_of_joining_setsŁ  s    ’rV  c                  C   sĀ   t ddddd } | jtddt dd t ddtdd  ksDJ t ddddt dddd }| | jtddt dd tddt dd  t ddtdd  t ddtdd  ks¾J d S )Nr   rB   TrG   )r(   r2  r&   )Zopen_squareZsecond_squarerJ   rJ   rM   Śtest_boundary_ProductSetą  s    ’
’žż’rW  c                  C   s$   t ddtd } | j| ks J d S rw   )r(   r&   r2  )Z
line_in_r2rJ   rJ   rM   Śtest_boundary_ProductSet_lineķ  s    rX  c                   C   sb   t ddddjdu sJ t ddddjdu s0J t ddddjdu sHJ tdddjdu s^J d S ©Nr   rB   FTrG   rX   )r(   Zis_openr&   rJ   rJ   rJ   rM   Śtest_is_openņ  s    rZ  c                   C   sJ   t ddddjdu sJ t ddddjdu s0J tdddjdu sFJ d S rY  )r(   Z	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’  s    r^  c                   C   s&   t ddddjt ddddks"J d S r\  )r(   ZinteriorrJ   rJ   rJ   rM   Śtest_interior  s    r_  c                   C   s   t tdd  d S )Nc                   S   s
   t tjv S rI   )r=   r   r]   rJ   rJ   rJ   rM   rN     rO   z!test_issue_7841.<locals>.<lambda>)r9   r_   rJ   rJ   rJ   rM   Śtest_issue_7841  s    r`  c                  C   s,  t tddtddsJ t tddtdddks8J tdd} tdd}t | | sZJ t | |dkslJ t | | | | sJ t | | ||  dksJ tt ttthtthsŗJ t ttth tt”tthtju säJ t ttthtth tt”tju sJ t ttth ttd ”tthtj	u s@J t ttthtth ttd ”tj	u spJ t t
dhdhtddtj	u sJ t t
dht
dhdhtj	u s¼J t tdtdtj	u sŚJ t t
 tdtj	u söJ tdd}ttt}tt t
||t
||s(J d S )Nr   rB   rG   FrJ   )r1   r(   r&   r0   r=   r>   rō   r   r   r   r)   )r  r  r"  r#  rJ   rJ   rM   Śtest_Eq  s(    

*,00&&

ra  c               	      s  t dddddd t ddddd	} tdd	t | d
djdu sDJ t d
djd u s\J t t | d
d t ddddddd	ksJ tt fdd tt ddddddt ddddd	t ddddddd	ksÖJ tt dddt ddddt dksžJ t dddddt ddddA t dddks.J ttdtdtdttdtdtdA tttdtdtdttdtdtd ttdtdtdttdtdtd ksĘJ tddtddA ttddtdd tddtdd ks
J d S )Nr   rB   rG   rX   r   r   rŌ   r7  r   Fr   Tc                      s   t t dd S rŖ   )r&   r+   rJ   r«   rJ   rM   rN   3  rO   z*test_SymmetricDifference.<locals>.<lambda>)	r&   r(   r+   r   r9   r_   r*   r   r,   )r°   rJ   r«   rM   Śtest_SymmetricDifference)  s<    
’’’’’
’
^.’’’rb  c                  C   sH   ddl m}  tddd}t| | tj”ttjt| |ksDJ d S )Nr   )Ślogrq   TrD   )Z&sympy.functions.elementary.exponentialrc  r   r&   r   r   r]   r'   )rc  rq   rJ   rJ   rM   Śtest_issue_9536A  s    rd  c               	   C   sę   t d} t| }td| }ttj|ttj|ddks:J ttdd|ttdd|ddksbJ ttdd|tttddddtdddd|ksJ t|tjt|tjddksŗJ t|tddt|tddddksāJ d S )NrA   rG   Fr   rB   rX   T)r   r&   r$   r   r]   r(   r,   )rA   rq   rµ   rJ   rJ   rM   Śtest_issue_9637G  s    
 ("’ re  c                   C   sf   t tttdt tttdddks,J t tddttttddt tdttddksbJ d S )NrB   Fr   rG   rX   )r$   r&   r>   r=   rJ   rJ   rJ   rM   Śtest_issue_9808S  s    ,’rf  c                   C   sF   t tt ttdtt tks&J tt t d”tju sBJ d S ro   )r,   r(   r   r&   r   r   r   rJ   rJ   rJ   rM   Śtest_issue_9956Z  s    &rg  c                  C   sź  t dt} tj}tg d¢}t|| tttttt| ttksFJ ttdtttttd| t| tttksvJ ttttt	ttt
|tttt
httt	h|ks®J ttttdtttt	|ttdtttttt	|ddksīJ ttttdtttdd|ttdtt|ks$J t|t|dttd|tt|ttksTJ tttt	tt	ttt	tt	d|t|ttt	tt	ksJ ttt	d dtt	tt	d dtt	|t|tt	d tt	ksęJ d S )Nr   )r   r   r   rB   rG   rX   Fr   )r(   r   r   r]   r   r'   r&   r@   rA   r=   r?   r   r   )rÓ   rC   ŚmatrJ   rJ   rM   Śtest_issue_Symbol_inter_  s6    
’’’’’
’
(’
*’ri  c                   C   s   t jd sJ d S )Nr   )r   r[   rJ   rJ   rJ   rM   Śtest_issue_11827u  s    rj  c                  C   s   t d t d d  } tt | tjttt dtdtddksBJ tt | tddtt dksdJ tt | tddttt dttdd	tksJ d S )
NrG   r   r   rB   TrV   rX   r  r   )r=   r-   r   r]   r,   r(   r   r   ©rR   rJ   rJ   rM   Śtest_issue_10113y  s    ."rl  c                  C   s<   t tdd  tddd} tttjt| | gks8J d S )Nc                   S   s   t ttjttS rI   )r”   r'   r   r]   r&   r=   rJ   rJ   rJ   rM   rN     rO   z"test_issue_10248.<locals>.<lambda>r¬   TrD   )r9   r_   r   r”   r'   r   r]   r&   )r¬   rJ   rJ   rM   Śtest_issue_10248  s
    ’rm  c                  C   s|   t ddt dd } ttj| ttjtt ddt ddddksFJ ttj| ttjtt ddt ddddksxJ d S )Nr   rB   rG   rX   Fr   )r(   r$   r   rg   r,   rZ   r   rJ   rJ   rM   Śtest_issue_9447  s    ’’rn  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   rX   FTc                   S   s   t ddk S ©NrG   rX   r   rJ   rJ   rJ   rM   rN     rO   z"test_issue_10337.<locals>.<lambda>c                   S   s   t ddkS ro  r   rJ   rJ   rJ   rM   rN     rO   c                   S   s   t ddkS ro  r   rJ   rJ   rJ   rM   rN     rO   c                   S   s   t ddkS ro  r   rJ   rJ   rJ   rM   rN     rO   )r&   r9   r_   rJ   rJ   rJ   rM   Śtest_issue_10337  s    rp  c                  C   sņ   t tdtddtjtjtjtjtjg} tdd}| D ]}||vs6J q6t	ddd}t	dd	d
}|d t||d v szJ |t||d vsJ tddttddtddv s“J tt
 t
 t
”tju sŠJ tt
 t
 t
 ”tju sīJ d S )NrB   rG   r   r   r=   TrD   ŚnrFrv   r   )ri   r&   r(   r   rå   ru   rĶ   ŚNaNrĢ   r   r   r   r   )ŚbadŚintervalrÓ   r=   rq  rJ   rJ   rM   Śtest_issue_10326  s&    ų

$ru  c                  C   sb   t j} tddd}t|t}t j}| | ||  ks6J | | ||  ksJJ || || ks^J d S )Nrq   TrD   )r   rg   r   r(   r   r]   )r!  rq   Zinf_intervalŚRrJ   rJ   rM   Śtest_issue_2799±  s    
rw  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    "rx  c                  C   s¦   t tt ttt} t tt ttt }tt ttt | ksJJ tttt t | ksfJ tt ttt  |ksJ tt tt t |ks¢J d S rI   )r,   r(   r   r&   )Zreals_plus_infinityZreals_plus_negativeinfinityrJ   rJ   rM   Śtest_issue_8257Ā  s    ry  c                   C   s,   t jt j tksJ t jt j tks(J d S rI   )r   rY   ri   r]   rJ   rJ   rJ   rM   Śtest_issue_10931Ė  s    rz  c                  C   sf   t tt ttt dd} t tt tj| ks6J t tjttdd} t tttj| ksbJ d S rŖ   )r'   r(   r   r&   r=   r   r]   )Z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sdJ d S )NrG   rB   r   )	r"   r   rA   r   r   r   rY   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sJJ t  tt tttg”ttkspJ t  tddtttddtg”t  tddttddttg”  krōt tddttddtt  krōt tddttdttksśn J tdt t td@ tdtdt t @   krTt tdt t tdddksZn J tdtt@ tttd@   krt tdttddks¢n J tthttth@ t tthttthddksŚJ d S )Nr   rG   rX   rB   Fr   )r'   r&   r   r=   Z_handle_finite_setsr>   rJ   rJ   rJ   rM   Śtest_finite_set_intersectionŻ  s*    "(&’žż’
ž&’’r}  c                      sź   t dt dg tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt t   ksJ tt t   ks¬J tdhdht ddksČJ tddhdd
ht dksęJ d S )NrB   rG   c                      s   t  S rI   r   rJ   ©r½   rJ   rM   rN   ų  rO   z5test_union_intersection_constructor.<locals>.<lambda>c                      s   t  S rI   ©r'   rJ   r~  rJ   rM   rN   ł  rO   c                      s   t t S rI   )r,   ŚtuplerJ   r~  rJ   rM   rN   ś  rO   c                      s   t t S rI   )r'   r  rJ   r~  rJ   rM   rN   ū  rO   c                      s   t dd  D S )Nc                 s   s   | ]
}|V  qd S rI   rJ   rŅ   rJ   rJ   rM   rÄ   ü  rO   śHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>r   rJ   r~  rJ   rM   rN   ü  rO   c                      s   t dd  D S )Nc                 s   s   | ]
}|V  qd S rI   rJ   rŅ   rJ   rJ   rM   rÄ   ż  rO   r  r  rJ   r~  rJ   rM   rN   ż  rO   rX   )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 rt   )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   r]   r   rJ   rJ   rJ   rM   Śtest_issue_16878b  s    r  c                  C   s6  t tdddtdddtddd t”tdddtddd ksFJ t tddtdd t”ttddtd tddtd ksJ t tddtdd t”ttddtd tddtd ksŅJ t tddtjtj t”tddtd ksJ t tdd t”tddtd ks2J t tjtddtj t”tddtd ksfJ t tt t t”tt ttd ksJ t tj t”tjks²J t   t”tjksŹJ tt	dd	  t
d
} t
d}t
d}t t| t|| t”t| td t||td  ks2J d S )NrB   rG   rX   r   r   r   r„   c                   S   s   t tdS )NrA   )r%   r   rJ   rJ   rJ   rM   rN     rO   z$test_DisjointUnion.<locals>.<lambda>r=   r>   r?   )r%   r&   Zrewriter,   r(   r   ri   r   r9   r_   r   )r=   r>   r?   rJ   rJ   rM   Śtest_DisjointUnion  s    FFF4,40r  c                   C   sN   t tjjdu sJ t tjtjjdu s,J t tjtdddjdu sJJ d S )NTrB   rG   rX   F)r%   r   ri   rh   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 s4J t tdddtjtt	t
jdu sZJ t tjtjjdu srJ d S )NTFrB   rG   rX   )r%   r   rY   rZ   rf   r   ri   r]   r&   r=   r>   rJ   rJ   rJ   rM   Śtest_DisjointUnion_is_iterable*  s    &r  c                   C   s*  dt tdddtdddtdddv s,J dt tdddtdddtdddv sXJ dt tdddtdddtdddv sJ dt tdddtdddtdddv s°J dt tdddtdddtdddv sÜJ d	t tdddtdddtdddv s
J d
t tdddtdddtdddv s8J dt tdddtdddtdddv sfJ dt tdddtdddtdddv sJ dt tdddtdddtdddvsĀJ dt tdvsŲJ dt tdddtdddtdddvsJ tdft tttttjttv s.J tdft tttttjttv sVJ tdft tttttjttv s~J tdft tttttjttv s¦J dt tddtddv sĘJ dt tddtddv sęJ dt tddtddvsJ dt tddtddv s&J d S )NrÅ   r   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   ri   r(   rJ   rJ   rJ   rM   Śtest_DisjointUnion_contains0  s(    ,,,,,......((((   r  c                     s:  t tddddtttt} t|  tdftdftdfg}g d¢}t }||v sVJ | |” t }||v stJ | |” t }||v sJ | |” t }||v s°J | |” t }||v sĪJ | |” t }||v sģJ | |” t }||v sJ | |” tt	 fdd tt
d	d  d S )
NrX   r   r’   r  rB   ))rX   r   )r   r   )r’   r   )r  r   c                      s   t  S rI   )ŚnextrJ   ©ŚitrJ   rM   rN   `  rO   z)test_DisjointUnion_iter.<locals>.<lambda>c                   S   s   t ttddtjS rw   )Śiterr%   r(   r   ri   rJ   rJ   rJ   rM   rN   b  rO   )r%   r&   r=   r>   r?   r  r  Śremover9   ŚStopIterationr`   )r±   ZL1ZL2ZnxtrJ   r  rM   Śtest_DisjointUnion_iterF  s6    






r  c                   C   sb   t ttddddttttdks(J t ttjtjtttttjdksPJ tt	dd  d S )NrX   r   r’   r  c                   S   s   t ttddtjS rw   )r8  r%   r(   r   ri   rJ   rJ   rJ   rM   rN   g  rO   z(test_DisjointUnion_len.<locals>.<lambda>)
r8  r%   r&   r=   r>   r?   r   ri   r9   r`   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 sFJ t tddttddgjttt|u svJ d S ©NrB   rG   )	r)   r&   r   r   r   r.   r   Śkindr(   )r   ŚmkŚkrJ   rJ   rM   Śtest_SetKind_ProductSeti  s
    "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   rg   r  r.   r   ri   rJ   rJ   rJ   rM   Ś"test_SetKind_EmptySet_UniversalSets  s    r  c                   C   s<   t dtddgjttu s J t ddjttu s8J d S r  )r&   r   r  r.   r   r   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 sNJ 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   rX   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 sJ dd }|dhtjjttu sŖJ |dht jt u sĀJ dd }|tjh d	£jttu sčJ |h d
£t jttu sJ |t h d
£jt u s"J d S )Nc                  W   s   t | ddiS ©Nr    Fr   ©ŚargsrJ   rJ   rM   rN     rO   z-test_SetKind_evaluate_False.<locals>.<lambda>rB   rG   r   r   c                  W   s   t | ddiS r  r  r  rJ   rJ   rM   rN     rO   c                  W   s   t | ddiS r  )r$   r  rJ   rJ   rM   rN     rO   >   rB   rG   r   r   >   rB   rG   rX   r   r   )	ri   r  r.   r   r(   r   rg   r   r&   )r!  r
   r­   rJ   rJ   rM   Śtest_SetKind_evaluate_False  s     ’’r   c                  C   sn   t tttd tdd} | td jttu s4J | tdd jttu sPJ | td jttu sjJ d S )NrG   rB   r   rX   é   é   )r"   r   rA   r(   r&   r  r.   r   rk  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 sPJ t dd}|| v sfJ |  | ”stJ | | ”rJ d|v sJ t t ddt ddd}| |”s“J |  |”sĀJ d S )NrB   rG   r   )r&   r1   r  )r°   r¬   r­   rJ   rJ   rM   Śtest_issue_20089  s    
r¤  c                  C   s¦   t dd} t| | }t dddd}| |”du s4J t d}| |”du sNJ t|| ” tju sfJ t| | ” tju s~J tdhth ” tdhthks¢J d S )	NrB   rG   rH   rF   r  rį   TF)	r&   r)   r   r1   Śsimplifyr   r   r   r=   )rq   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sBJ tttdtd| ts`J d S )NrA   r  rB   )r   r|   r'   r#   r(   r  rJ   rJ   rM   Śtest_intersection_symbolic³  s    rØ  c                  C   sz   t dddd} ttd| tdddttd| tdddksBJ ttd| tdddttd| tdddksvJ d S )	NrA   T)rT   rs   r   r   iō  r   é   )r   r'   r#   r(   r  rJ   rJ   rM   Ś"test_intersection_symbolic_failing»  s    ’
’rŖ  c                  C   s,   t d } t|  d”ttddks(J d S )Ng-DTū!	@rG   z3.23108914886517e-15)r   r&   rż   r	   rQ   rJ   rJ   rM   Śtest_issue_20379Ä  s    r«  c                  C   s4   t dtdd tdd  } |  ” dhks0J 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   rD  rJ   rJ   rM   Śtest_issue_14336Ķ  s    r­  c                  C   sF   t ddd\} }}td| t|d@ }tdd}| |”d ksBJ d S )Nzx, y, zTrD   rB   rG   )r   r(   r   )r=   r>   r?   r  r  rJ   rJ   rM   Śtest_issue_9855Ō  s    
r®  N)ĢZsympy.concrete.summationsr   Zsympy.core.addr   Zsympy.core.containersr   Zsympy.core.functionr   Zsympy.core.kindr   r   Zsympy.core.numbersr	   r
   r   r   r   r   r   Zsympy.core.powerr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z(sympy.functions.elementary.miscellaneousr   r   r   Z$sympy.functions.elementary.piecewiser   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.logic.boolalgr   r   Zsympy.matrices.kindr   Zsympy.matrices.denser   Zsympy.polys.rootoftoolsr    Zsympy.sets.containsr!   Zsympy.sets.fancysetsr"   r#   Zsympy.sets.setsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Zmpmathr/   Zsympy.core.exprr0   Zsympy.core.relationalr1   r2   r3   r4   r5   Zsympy.logicr6   r7   r8   Zsympy.testing.pytestr9   r:   r;   Zsympy.utilities.iterablesr<   r  r=   r>   r?   r@   rA   ri   re   rl   rn   rp   r   r   r   r   r£   r¤   r©   r³   ræ   rŠ   rÕ   rŽ   rē   ré   rź   rķ   rõ   rö   r÷   rų   rś   rž   r  r  r
  r  r  r  r  r$  r%  r&  r'  r(  r)  r+  r-  r/  r0  r1  r3  r4  r:  rB  rC  rE  rF  rG  rK  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rZ  r[  r^  r_  r`  ra  rb  rd  re  rf  rg  ri  rj  rl  rm  rn  rp  ru  rw  rx  ry  rz  r{  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r£  r¤  r§  rØ  rŖ  r«  r¬  r­  r®  rJ   rJ   rJ   rM   Ś<module>   s$  $4'$	L1%1F#	L	1;
	"'

		

