o
    GZ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 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   úI/var/www/auris/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(   ZlamdaÚexprZdummy_eq)rC   rV   Úx1Úx2rJ   )rZ   rL   rM   Útest_imageset!   sP   $ ""$(
˙˙˙˙˙rj   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
   ˙rq   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^   rk   rb   rl   Zis_finite_setrn   r&   r(   r=   r>   r)   r,   r'   r$   r%   ro   rJ   rJ   rM   Útest_is_finitesetP   s.   ˙   "&rs   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   rn   Zis_EmptySetr&   rJ   rJ   rJ   rM   Útest_deprecated_is_EmptySetk   s   
˙"˙ru   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ŠZextended_real)r(   r   rJ   rJ   rJ   rM   rN      rR   c                   S   s   t tttj S rI   )r(   r=   r   rz   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   rn   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 )Nrv   TrD   r   r]   éũ˙˙˙rB   )	r   r,   r(   Úsupr   Úinfr   Úcontainsr5   Šrv   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   Úprw   rA   )ÚnegativeÚnn)ZnonnegativerB   rG   Fr]   r   Šr   Šr   )r   r   r(   rm   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   rn   Úranger   r&   r0   Úunionr*   Ú	intersectÚ	is_subsetr9   rd   Úis_iterabler   r
   rb   r^   )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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&   rm   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   rn   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^   rl   rn   Ú
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 ]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   Šrv   Ú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 rt   rJ   rJ   rÂ   rJ   rM   rN     rO   N)r&   r=   r>   r(   r,   r'   r$   r)   r   rn   r9   rd   )ÚopsZSxZ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   rl   rn   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&   rn   r'   r>   r   rb   r   )rp   r=   r@   rA   rv   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    )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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   rn   r   r^   r_   rb   Z_argsetÚ	frozensetÚ	ComplexesÚComplexInfinityrl   )r=   Úlinerv   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'   rn   )rA   rv   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(   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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   rp   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   ŠZS3rJ   rM   rN     rO   c                      s      tdĄS rt   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&   rn   r   r^   r   r9   re   r;   rd   rü   r=   r>   r6   r7   r1   r   r   r   r!   Úsubsr0   )rž   ZRnZS1ZS2rh   ri   Zx3Z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   rm   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 )Nrv   TrD   r   rG   )r   r(   r   r   rn   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(   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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   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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 )Nrv   TrD   rB   r]   rG   r   r   r   rŪ   é   rr   r   é   éd   é¯   éK   é   )
r   r(   r   r,   r&   r   r   rn   r    r   )rv   rË   ZoffsetsquareZ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 rt   )r   rn   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   rn   r9   re   Úissubsetr_   r^   r`   r=   r>   r   r   r   r#   r-   r   rb   Š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 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(   r  r   rn   r&   r9   re   rJ   rJ   rJ   rM   Útest_is_proper_subset  ķ   r  c                   C   sČ  t dd t ddĄdksJ t dd t ddĄsJ tdd tddddĄdks-J tdd tddddĄdks>J td t ddĄdksLJ tdd t ddddĄdks]J t ddtd  t ddddtdd ĄdkswJ t dd tt ddt ddĄdksJ tdddd t ddĄdksJ tj tdddĄdksĢJ t dd tjĄdks¸J tj tjĄdksÃJ ttd	d
  t dd tjĄdks×J tj tjĄdksâJ d S )Nr   rB   rG   Fr]   r   r   Tc                   S   r  rt   )r   rn   Úis_supersetrJ   rJ   rJ   rM   rN   +  r{   z"test_is_superset.<locals>.<lambda>)	r(   r  r&   r,   r   rn   r9   re   Ú
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 s,J ttdd  d S )	Nr   rB   rG   Fr]   Tc                   S   r  r~   )r(   Úis_proper_supersetrJ   rJ   rJ   rM   rN   7  r}   z)test_is_proper_superset.<locals>.<lambda>)r(   r  r&   r   rn   r9   re   rJ   rJ   rJ   rM   Útest_is_proper_superset2  r  r  c                     s  t dd dĄtju sJ t dd dĄtju sJ t dddd dĄtju s)J t dddd dĄtju s8J t dddd dĄtju sGJ t dddd dĄtju sVJ t dddd dĄtju seJ t dddd dĄtju stJ t ddt ddv du sJ tddd dĄtju sJ tddtd tdĄtju sĸJ tt t	Ą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 rt   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.abcrv   rŧ   r   r   rn   rÖ   r×   r,   r    rb   r7   r6   ZOner'   rī   rđ   )rŧ   Zrad1Zrad2Ús1Ús2ÚitemsrJ   )rv   r#  rM   Útest_contains:  sX   $ ,&*" B(((.&&*
˙"
˙r(  c                     sÜ   t dtdd   ĄttjkdkksJ tt fdd tdddd   Ąttjk dk ks<J t ddd	} td  | ĄdksPJ t d
dd tt t  Ąttj	 k  tj
k kslJ d S )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   r*  rM   Útest_interval_symbolicu  s   
""˙r,  c                     sZ  t dtdd} tdd}t| | Ątttjkdkttdkdkks0J tt	fdd  
Ą}| ĄksHJ | dĄtu sRJ | d	Ątu s\J | d
Ątu sfJ | dĄtu spJ | dĄtu szJ tddddtdt tdddd  t fddddt fD sJ t fdddD sĢJ d S )Nr=   r   rB   rG   r]   c                      r)  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   r.  r0  rJ   rM   rĖ     rÍ   )rG   r   r   )r   r(   r,   rü   r7   r6   r   r+  r9   rd   r   r   r   r   r   r&   r×   )Úi1Úi2r   rJ   )r1  r-  r=   rM   Útest_union_contains  s    


:
&"r4  c                   C   s(   t ddjdu s
J t jdu sJ d S r   )r(   Z	is_numberr*   rJ   rJ   rJ   rM   Útest_is_number  ķ   r5  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(   Zis_left_unboundedr   r	   rJ   rJ   rJ   rM   Útest_Interval_is_left_unbounded  s   r7  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(   Zis_right_unboundedr   r	   rJ   rJ   rJ   rM   Ú test_Interval_is_right_unboundedĸ  s   r8  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... r9  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   rr   )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   ˙ ūr>  c                  C   sP   t d} ttddtddd}| | Ąttd| t| dt| dks&J d S r=  )r   r$   r(   r&   rü   r6   r3   r2   Šr=   rg   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s$J d S r=  )r   r$   r(   r&   rü   r2   r?  rJ   rJ   rM   Ú"test_Complement_as_relational_failã  s
   ˙rA  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   r?  rJ   rJ   rM   Ú&test_SymmetricDifference_as_relationalí  s   2rB  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   rn   rü   r   r   r    rl   ÚboundaryrJ   rJ   rJ   rM   Útest_EmptySetķ  s   rD  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   rr   r   F)r   r&   r,   r    rĄ   r   r   r   r   r   rn   )r=   rŗ   rˇ   ZAorBZAandBrJ   rJ   rM   Útest_finite_basicų  s2   

 rE  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Đ   Trr   rĩ   r   gÉ?rĐ   é   c                      s   t  tdd S )Nr   rG   )Úlenr(   rJ   ŠZcoinrJ   rM   rN   ?  rR   z$test_product_basic.<locals>.<lambda>)r(   r&   r˙   r   rí   rĄ   rļ   r   r,   rI  r   rn   r9   rd   )rF  rG  Z	unit_lineZd6Zd4rË   ZHHZTTrJ   rJ  rM   Útest_product_basic  sD   

,˙
˙˙
ũ""$rK  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   rP  )r   rv   rŧ   )rŗ   rˇ   r´   r
   ÚJrJ   rM   rĖ   N  s   2 c                 3   s     | ]}|    tjĄV  qd S rI   rP  )r   rv   )r¸   rJ   rM   rĖ   O  rŨ   )	r   r(   r&   r   ÚPir×   rĄ   rb   rØ   rU   rJ   )rŗ   rˇ   r´   r¸   r
   rQ  rM   Ú	test_realB  s   



 ,&rS  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   rN  rO  )
r   r(   r&   r   r   r   r   r   rÖ   rÕ   r\   rJ   rJ   rM   Útest_supinfT  s"   ""  ˙˙rT  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   rl   r   rü   r   r   r(   r    r   rÖ   rC  rn   r   Šr1  r=   rJ   rJ   rM   Útest_universalsetg  s   rV  c                  C   s8   t dd} tddd}t| |  | | | |  ksJ d S )Nr   rG   rB   )r(   r&   r,   )rņ   ZpointsrJ   rJ   rM   Ú test_Union_of_ProductSets_sharess  s   
"rW  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(   Zfree_symbolsrí   r   rU   rJ   rJ   rM   Útest_Interval_free_symbolsy  s   rX  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   rv   rG   r[   rB   rM  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=   rv   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   Trr   é   )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   ,ra  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    ˙rb  c                  C   s,   t ddd} t| d|  tjtjksJ d S )Nr=   TrD   rG   )r   r-   r   rn   rU   rJ   rJ   rM   Útest_image_EmptySetš  s    rc  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    rd  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(   rC  r&   )r   r   r   rJ   rJ   rM   rĖ   Å  s    ˙$˙z test_boundary.<locals>.<genexpr>)r&   rC  r×   r   r   rJ   rJ   rJ   rM   Útest_boundaryÃ  s   ˙re  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(   rC  r&   r,   rJ   rJ   rJ   rM   Útest_boundary_UnionÉ  s&   (˙˙$˙˙˙
ūrf  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(   rC  r&   rJ   rJ   rJ   rM   Ú#test_union_boundary_of_joining_setsŲ  s   ˙rg  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(   rC  r&   )Zopen_squareZsecond_squarerJ   rJ   rM   Útest_boundary_ProductSetā  s   
˙˙ūũ˙rh  c                  C   s$   t ddtd } | j| ksJ d S r~   )r(   r&   rC  )Z
line_in_r2rJ   rJ   rM   Útest_boundary_ProductSet_lineí  s   ri  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(   Zis_openr&   rJ   rJ   rJ   rM   Útest_is_openō  s   rk  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 rj  )r(   Ú	is_closedr&   rJ   rJ   rJ   rM   Útest_is_closedų  s   rm  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˙  ķ   &rp  c                   C   s&   t ddddjt ddddksJ d S rn  )r(   ZinteriorrJ   rJ   rJ   rM   Útest_interior  rq  rr  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  ķ   rs  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)   )r%  r&  r2  r3  rJ   rJ   rM   Útest_Eq  s(   

**..$$

"ru  c               	      s
  t dddddd t ddddd	} tdd	t | d
djdu 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Ū   rH  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<   
˙˙˙˙˙
˙^.
˙˙˙rv  c                  C   sH   ddl m}  tddd}t| | tjĄttjt| |ks"J d S )Nr   )Úlogrv   TrD   )Z&sympy.functions.elementary.exponentialrw  r   r&   r    r   rb   r'   )rw  rv   rJ   rJ   rM   Útest_issue_9536A  s   0rx  c               	   C   sæ   t d} t| }td| }ttj|ttj|ddksJ ttdd|ttdd|ddk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   rv   rŧ   rJ   rJ   rM   Útest_issue_9637G  s   
 ("˙ ,ry  c                   C   sf   t tttdt tttdddksJ t tddttttddt tdttddks1J d S )NrB   FrĻ   rG   r]   )r$   r&   r>   r=   rJ   rJ   rJ   rM   Útest_issue_9808S  s   ,˙rz  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 rt   )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  rt  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   rl   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   )rn   r&   r(   r   rđ   rz   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 )Nrv   TrD   )r   rl   r   r(   r   rb   )r1  rv   Z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   ro  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&   )Zreals_plus_infinityZ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^   rn   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   )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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=   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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 ry   )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&   Zrewriter,   r(   r   rn   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   rn   rm   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_   rk   rĸ   rn   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   rn   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   rn   rJ   rJ   rJ   rM   rN   b  rū   )r%   r&   r=   r>   r?   r§  rŖ  Úremover9   ÚStopIterationre   )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s(J tt	dd  d S )Nr]   r   r  r  c                   S   rĻ  r~   )rI  r%   r(   r   rn   rJ   rJ   rJ   rM   rN   g  rū   z(test_DisjointUnion_len.<locals>.<lambda>)
rI  r%   r&   r=   r>   r?   r   rn   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   rl   r­  r.   r   rn   rJ   rJ   rJ   rM   Ú"test_SetKind_EmptySet_UniversalSets  r6  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   )	rn   r­  r.   r   r(   r   rl   r   r&   )r1  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   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 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=   )rv   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(   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s!J ttd| tdddttd| tdddks;J d S )	NrA   T)rY   rx   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	   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   rU  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?   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   rn   rj   rq   rs   ru   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,  r4  r5  r7  r8  r9  r:  r<  r>  r@  rA  rB  rD  rE  rK  rS  rT  rV  rW  rX  r\  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rk  rm  rp  rr  rs  ru  rv  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ŗ  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;
	"'

		

