
    MZdc                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZRmSZSmTZTmUZUmVZV ej                  ZWd ZXd ZYd ZZd Z[d Z\d  Z]d! Z^d" Z_d# Z`d$ Zad% Zbd& Zcd' Zdd( Zed) Zfd* Zgd+ Zhd, Zid- Zjd. Zkd/ Zld0 Zmd1 Znd2 Zod3 Zpd4 Zqd5 Zrd6 Zsd7 Ztd8 Zud9 Zvd: Zwd; Zxd< Zyd= Zzd> Z{d? Z|d@ Z}dA Z~dB ZdC ZeOdD        ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZeOdP        ZdQ ZdR ZdS ZdT ZdU ZdV ZeOdW        ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt ZeOdu        Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd ZeOd        Zd Zd Zy)    )SumAdd)	TupleKind)Lambda)
NumberKindUndefinedKind)FloatIRationalnanoopizoo)PowS)Symbolsymbols)sympify)MaxMinsqrt)	Piecewise)cossin)falsetrue)
MatrixKind)Matrix)rootof)Contains)ImageSetRange)
ComplementDisjointUnion	FiniteSetIntersectionInterval
ProductSetSetSymmetricDifferenceUnionimagesetSetKind)mpi)	unchanged)EqNeLeLtLessThan)AndOrXor)raisesXFAILwarns_deprecated_sympy)xyzmnc            
      	   t         j                  t        t        t        dz
  t         j                        t         j
                  u sJ t        t        t        dz   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 sJ t        dd      } t        t        t        t        ft         j                        j                  d| f      d k(  sJ t        t        t        t        ft         j                        j                  d      dk(  sJ | | ft        t        t        t        ft         j                        v sJ dt        z   t        t        t        t        z   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       t        t        fd	       t        t        d
        dt        t        t        t        ft        t        f            v sJ t        t        fd       t        t               t#        t        t        t!        t                          k(  sJ d }t        |      t        t        t!        t                    k(  sJ 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(  sJ t)        dt*              t-        t        fdt/        dd            j0                  j2                        dv sJ t        d      \  }}t        d t/        dd      t/        dd            j5                  t#        t        ||f||z         t/        dd      t/        dd                  sJ y )N   rTrealrC      FrC   rC   c                  $    t        t               S N)r.   r=   intss   </usr/lib/python3/dist-packages/sympy/sets/tests/test_sets.py<lambda>ztest_imageset.<locals>.<lambda>/   s    hq$/     c                  8    t        t        t        t               S rK   )r.   r=   r>   r?   rL   s   rN   rO   ztest_imageset.<locals>.<lambda>0   s    x1a6 rP   c                  X    t        t        t        t        t                    t              S rK   )r.   r   r=   r   r>    rP   rN   rO   ztest_imageset.<locals>.<lambda>1   s    xq#a&(91= rP   c                  B    t        t        t        t                      S rK   )r.   r   r=   rL   s   rN   rO   ztest_imageset.<locals>.<lambda>3   s    xq!dDA rP   c                     t        |       S rK   r   r=   s    rN   fztest_imageset.<locals>.f5   s    1vrP   c                     t        |       S rK   rV   rW   s    rN   rO   ztest_imageset.<locals>.<lambda>8   s
    #a& rP   r=   integerc                     | z   S rK   rS   )r=   clashs    rN   rO   ztest_imageset.<locals>.<lambda>>   s    1u9 rP   )zx0 + xzx + x0zx1, x2c                     t        | |      S rK   r   r=   r>   s     rN   rO   ztest_imageset.<locals>.<lambda>A   s    Aq	 rP   rH      )r   Integersr.   r=   Naturals	Naturals0absr   Reals	_containsr   r:   	TypeError
ValueErrorr   r>   r   r#   r'   r?   r   r   strr)   lamdaexprdummy_eq)rD   rX   x1x2r]   rM   s       @@rN   test_imagesetrp       s{   ::DAq1uajj)Q[[888Aq1uakk*ajj888As1vq{{+q{{:::As1vqzz*ajj888As1vqzz*akk999$AA1vqww'111a&9TAAAA1vqww'11&9UBBBq6Xa!Q1111q5HQAqww////3hq1$0000!aT1773333
9/0
:67
:=>XfaVaV4dDAAAA
:ABC(6!SV+<d"CCCCAtCFD 9999AAt3q6):D AAAAAq$9Q<///Aq$A3&&&QFQFD!''21vh>>>3%E,hr1o>DDIIJ  !  XFB Aq>8Aq>33;8R"r'*AA	(4)) ) )rP   c                  "   t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fD ]  } | j                  du rJ  t         j                  j                  du sJ y )NFT)	r   rc   rd   rb   	Rationalsrf   UniversalSetis_emptyEmptySetss    rN   test_is_emptyrx   G   se    jj!++qzz1;;NN #zzU"""# ::$&&&rP   c                     t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fD ]  } | j                  du rJ  t         j                  j                  du sJ t        dd      j                  du sJ t        dd      j                  du sJ t        t        t              j                  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                  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 sJ t        t        d      t        t        t                    j                  J t        t        t        t              t        d            j                  du sJ t        t        t        t              t        dd            j                  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                  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 y )NFTrC   rH   r   ra   )r   rc   rd   rb   rr   rf   rs   is_finite_setru   r'   r)   r=   r>   r*   r-   r(   r%   r&   rv   s    rN   test_is_finitesetr|   O   s   jj!++qzz1;;NN (%'''( ::##t+++Q?((D000Aq>''5000Aq>''///ilIaL1??4GGGilHQN3AAUJJJilHQN3AAIII!Q!Q0>>%GGG1x1~.<<EEE1y|,::dBBB1x1~.<<DDDA	!5CCtKKKAA7EEMMM	!il3AATIIIilHQN3AATIIIhq!nil3AAIIIhq!nil3AAUJJJ"a)Aq/:HHEQQQYq!_ajjAOOSWWWWrP   c                      t               5  t        j                  j                   d d d        t               5  t	        d      j                   d d d        y # 1 sw Y   2xY w# 1 sw Y   y xY wNrC   )r<   r   ru   is_EmptySetr'   rS   rP   rN   test_deprecated_is_EmptySetr   j   sY    		! 	

 
 	! !!  ! ! ! !s   AA#A #A,c                     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 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
        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              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      t
        j                  k(  sJ t        t        d        t        t        d	        t        t        d
        t        t        d        t        t        d        t        t        d        y )Nr   FTrC   ra   apositivec                  6    t        dt        j                        S Nr   )r)   r   ImaginaryUnitrS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    x1??; rP   c                  0    t        dt        dd            S )Nr   r?   Fextended_real)r)   r   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    x6#U+KL rP   c                  L    t        t        t        t        j                  z         S rK   )r)   r=   r   r   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    x1q+>? rP   c                  @    t        ddt        t        t                    S Nr   rC   r)   r7   r=   r>   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    As1ay(A rP   c            	      B    t        dddt        t        t                    S Nr   rC   Fr   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    Auc!Qi(H rP   c            	      J    t        ddt        t        t        t                    S r   )r)   r?   r7   r=   r>   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    Aq#a)(D rP   )r)   r   
right_openr   	left_openr   ru   r=   
isinstancer'   r   measurer   r:   ri   NotImplementedError)es    rN   test_interval_argumentsr   r   sx   Ar?hq"eT::::Ar?%%---RCxQe<<<<RC%%---B

***Bqzz)))RC"+++B?ajj(((Bqzz)))Asqzz)))Aq>aS   hq!ni000A1ayAhq!ni000Aq>QZZ'''Aq>!!Q&&&Aq%&!**444Aq$&!**444Aq$%333 hq&+.999F3.2ajj@@@
:;<
:LM
:?@
 AB
 HI
 DErP   c                  V   t        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|       j                  d      t        d|       k(  sJ y )Nr   TrE   r   ra   rC   )	r   r-   r)   supr   infr   containsr6   r   s    rN   !test_interval_symbolic_end_pointsr      s    sA!Q!Q044Aq	AAA!Q"a155RCCCAq>""1%!Q777rP   c                     t        d      \  } }t        dd      }t        dd      }t        dd      }t        d	d
      }t        dd      j                  dk(  sJ t        dd      j                  dk(  sJ t        ||      j                  dk(  sJ t        |||z         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      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      j                  dk(  sJ t        d|d      j                  dk(  sJ t        d|d      j                  d k(  sJ t        d|d      j                  d k(  sJ y )Nzx, yrD   TrE   pr   rA   )negativenn)nonnegativerC   rH   Fra   r   r   r   )r   r   r)   rt   r   )r=   r>   rD   r   rA   r   s         rN   test_interval_is_emptyr      sG   6?DAqsAsT"AsT"A	$	'BAq>""e+++Aq>""e+++Aq>""e+++Aq2v''5000Aq>""e+++Ar?##u,,,RC%%...RC$$---Aq>""d***Ar?##u,,,Aq>""e+++AqD)22e;;;Aq>""d***B?##t+++Aq>""e+++AqD)22e;;;AqT*33u<<<ArT*33t;;;Ard+44<<<rP   c            
         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(  sJ 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(  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      k7  sJ t        t        dd      t        j                        t        dd      k(  sJ t        t        j                        t        j                  k(  sJ t        t        dd      gt	        dd      D  cg c]  } t        d	| z         c}  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      j                  t        dd            t        dd      t        dd      z   k(  sJ t        dd      j                  t        dd            t        dd      k(  sJ t        t                     t               k(  sJ t        d      t        d      z   t        d      z   t        ddd      k(  sJ t        d      t        d      z   t        dd      k(  sJ t        ddd      t        j                  z   t        ddd      k(  sJ t        ddd      t        ddd      z  t        dd      k(  sJ t        ddd      t        ddd      z  t        dddd      k(  sJ t        ddd      t        j                  z  t        j                  k(  sJ t        ddd      t        j                  z  t        ddd      k(  sJ t        d
      }t        d      }t        d      }t        j                  t        |t        ||            z  t        |t        ||            k(  sJ t        dd      t        d      z   t        dd      k(  sJ t        dddd      t        d      z   t        dddd      k(  sJ t        dd      t        d      z   }t        dd      t        d      z   }|j                  |      }d|v rd|v rd|v sJ |j                  |      r|j                  |      sJ t        t        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 y c c} w )NrC   rH   ra   T   Fr   
         ?r=   hameggsr>   r?      c                      t        ddd      S )NrC   rH   ra   r-   rS   rP   rN   rO   ztest_union.<locals>.<lambda>   s    eAq!n rP   )r-   r)   r   ru   ranger'   r   r1   unionr+   	intersect	is_subsetr:   rh   is_iterabler   r   rf   rb   )rA   r=   r>   r?   XYXandYs          rN   
test_unionr      s   !Q!Q0HQNBBB!Q!Q!56(1a.HHH!Q!Q0HQNBBB!Q!Q0HQNBBB!Q!Q0HQNBBB!Qt,hq!n=Aud#$ $ $!Q!Qt!<=!QOOO!Q%x1~6(1a.HHH!Q%x1d';<At  !Q%x1dD'ABAtT"# # #!Qd+XaD-ABAt  !Q!Q0HQNBBB!Qt,hq!n=A  !Qt,hq!T.BCA  !Q,A>>>

***!QKU1b\"J9SU#3"JKA   	sA!Q1a1UA	!6& & & &UHQNIaO<<<Aq>A/A!Q'( ( ( Aq>A/8Aq>AAA<35   Q<)A,&151a9KKKKUi//9UF3KKKKQ1

*i1a.@@@@Q1	!Q 22i1oEEEQ1	!Q 22i1a6KKKKQ1

*ajj888Q1

*i1a.@@@@sAsAsA::	!Yq!_55!Yq!_%& & & Aq>IaL(HQN:::Aq$%	!4AtU#$ $ $A1%AA1%AKKNE6a1fe++??1%//!"444
9,-==E!!! YaRy$r(;<48)T1"X&' ' ' !**%000c #Ks   *^	
c                  |    t        t        d      t        d      t        d      d      } t        |       g dk(  sJ y )Nra   r   r   Fevaluate)r   r   r   rC   rC   rC   rH   rH   rH   ra   ra   r   )r-   r$   list)us    rN   test_union_iterr     s3    eAha%(U;A 7::::rP   c                      t        t        t              t        d      z   j                  dk(  sJ t        t        t              t        t         t              z   j                  d k(  sJ y )NrC   F)r)   r=   r>   r'   rt   rS   rP   rN   test_union_is_emptyr     sL    QNYq\)33u<<<QNXqb!_,66$>>>rP   c            
         t        dd      t        dd      z
  t        ddd      k(  sJ t        dd      t        dd      z
  t        dddd      k(  sJ t        ddd      t        dd      z
  t        dddd      k(  sJ t        ddd      t        ddd      z
  t        dddd      k(  sJ t        dd      t        d      z
  t        t        dddd      t        dddd            k(  sJ t        j                  t        t
              z
  t        j                  k(  sJ t        j                  t        t
         t
              z
  t        j                  k(  sJ t        dd      t        t
         t
              z
  t        dd      k(  sJ t        dd      t        dt
              z
  t        t        j                  dd      t        j                  dd            k(  sJ t        j                  t        ddt
        z   t        t        dz        z
  t        t        t        j                  t         d      t        j                  dt                    t        t        t        dz        d      k(  sJ t        ddd      t        d      z
  t        dd      k(  sJ t        d	d
      t        d
      z
  t        d	      k(  sJ t        dddd      t        dddd      z
  t        dd      k(  sJ t        dddd      t        j                  z
  t        dddd      k(  sJ t        t        dd      t        ddd            t        dd      z
  t        t        dddd      t        d            k(  sJ dt        j                  t        j                  z
  v sJ y )NrC   ra   rH   TFr   r   r   r   r   r   )r)   r'   r-   r   rf   r   RopenLopenr=   r>   r%   openr   ru   rc   rS   rP   rN   test_differencer     s-   Aq>HQN*hq!T.BBBBAq>HQN*hq!UD.IIIIAq$(1a.0HQ44NNNNAq$(1a"66AtU#$ $ $Aq>IaL(hq!UD)8Aq$+FGH H H 77Yq\!QWW,,,77Yr1%%000Ar?Yr1--!R@@@Ar?Yq!_,q!hnnQ315 5 5 577Yq!a%AqD11ZhmmRC#X]]1b%9:IaA<N6    Q1	!,	!Q???UF#i&779U;KKKKQ1a 8Ar4#??!Q  Q1a 1::-1aA1FFFF!Q1a!34x1~Ehq!UD)9Q<89 9 9 1::%%%%rP   c            
         t        ddd      t        dd      } t        dd      t        dd      }t        | d      j                  du sJ t        d      j                  du sJ t        |d      j                  J t        t        | d       t        d      k(  sJ t        t        d       t        d      k(  sJ t	        t
        f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(  sJ dt        t        d	d
      t        dd      d      vsJ dt        t        j                  t        j                  d      v sJ dt        t        j                  t        j                  d      vsJ t        t        j                  t        j                        t        k(  sJ t        j                  j                  t        j                        t        k(  sJ d	t        j                  j                  t        j                  t        d	      z
        vsJ t        j                  t        j                  z
  t        j                  k(  sJ t        j                  t        d	      z
  t        d      z
  t        j                  t        d	d      z
  k(  sJ t        j                  t        t        j                  t        t                    z
  t!        t        j                  t        j                  z
  t        j                  t        t              z
        k(  sJ 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+        | | |       }||z
  |k(  sJ ||z
  |k(  sJ y )NrC   ra   r   rH   Fr   Tc                  ,    t        t         d       S NFr   )r'   r%   ACs   rN   rO   z!test_Complement.<locals>.<lambda>=  s    iAq5)IJ rP   r   r   r   r   za:czd:f)r'   r)   r%   r   r:   rh   r-   r   rf   rc   rb   rs   ru   
complementr   r   r(   r=   r>   r   r1   r*   )BDA2B3r   r   s       @@rN   test_Complementr   1  s   !QA!QAAAAAaU+774???aU+774???aU+77???jA679Q<GGGjA679Q<GGG
9JKhq!nhq!n5!Q9MMMMi1a()Aq/:ilJJJeHQNIaA,>?q!n&hq!UD)9Q<89 9 9 Jx1~x1~NNNNAGGQZZ%@@@@Jqww

UCCCCajj!..1X===>>$$QZZ0H<<<QWW&&qzzIaL'@AABA::

"ajj000JJ1%15iPQSTo9UUUU77U1::y}551::-qww2/FGH H H i1a((3*;<yAb(9:; ; ; 	75>"A75>"AZAq!11555	Aq	B	Aq!	B7b==7b==rP   c            
      6   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 ]`  |D ]3  | D ],  t        t        fd       t        t        fd       . 5 t        t        fd       t        t        fd       b y)z1Tests that e.g. FiniteSet(1) * 2 raises TypeErrorc                     | |z   S rK   rS   r   bs     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>e  
    QU rP   c                     | |z
  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>f  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>g  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>h  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>i  s
    Q!V rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>j  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>k  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>l  r   rP   rC   rH   r   c                              S rK   rS   niopsis   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>      2b": rP   c                              S rK   rS   r   s   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>  r   rP   c                       t               z  S rK   )objectr   s   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>  s    ". rP   c                       dhz  S r~   rS   r   s   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>  s    ") rP   N)r'   r=   r>   r)   r-   r(   r%   r*   r   ru   r:   rh   )opsSxSysetsnumsr   r   r   s        @@@rN   test_set_operations_nonsetsr   b  s    	C 
1B	1B	
!Ab(1a.!R2r2r	

	D q!QqT1Q41&D - 	7B 7y"56y"567	7 	y01y+,-rP   c                  `    t        ddhdh      dhk(  sJ t        dd      j                  t        j                        t        t        t         ddd      t        dt        dd            k(  sJ t        dddd      j                  t        j                        t        t        t         ddd      t        dt        dd            k(  sJ t        dddd      j                  t        j                        t        t        t         ddd      t        dt        dd            k(  sJ t        dddd      j                  t        j                        t        t        t         ddd      t        dt        dd            k(  sJ t        j                  j                  t        j                        t        j                  k(  sJ t        j                  j                  t        j                        t        j                  k(  sJ t        j                  j                  t        j                        t        j                  k(  sJ t        j                  j                  t        j                        t        j                  k(  sJ t        t        dd      t        dd            j                  t        j                        t        t        t         ddd      t        dddd      t        dt        dd            k(  sJ t        d      j                  t        j                        t        t        t         ddd      t        dt        dd            k(  sJ t        d      t        t        j                  d      z   j                  t        j                        t        dddd      t        dt        j                  dd      z   k(  sJ t        ddd      j                  t        j                        t        t        j                  ddd      t        dddd      z   t        dddd      z   t        dt        j                  dd      z   k(  sJ t        t              j                  t        j                        t        t        j                  t        t                    k(  sJ t        dt              j                  t        j                        t        t        t         ddd      t        dt        dd      z   t        t              d      k(  sJ t        dd      t        dd      z  j                  t        j                  t        j                  z         t        fd	d
D              sJ t         fdd
D              rJ t        fddD              rJ t         fddD              sJ y )NrC   rH   r   TFra   r   r   c              3   &   K   | ]  }|v  
 y wrK   rS   .0ptsquares     rN   	<genexpr>z"test_complement.<locals>.<genexpr>  s     IrV|I   )r   r         ?r   rC   r   rI   c              3   &   K   | ]  }|v  
 y wrK   rS   r   r   	notsquares     rN   r   z"test_complement.<locals>.<genexpr>  s      FiFr   c              3   &   K   | ]  }|v  
 y wrK   rS   r   s     rN   r   z"test_complement.<locals>.<genexpr>  s     IB2<Ir   ))r   r   )      ?r   )r   r   c              3   &   K   | ]  }|v  
 y wrK   rS   r   s     rN   r   z"test_complement.<locals>.<genexpr>  s     H2rYHr   )r%   r)   r   r   rf   r-   r   rs   ru   r'   NegativeInfinityInfinityr=   allany)r   r   s   @@rN   test_complementr    s   q!fqc"qc)))Aq>$$QWW-hsAtT*HQD$,GHI I IAq$&11!'':hsAtU+XaT4-HIJ J JAq%&11!'':hsAtT*HQE4,HIJ J JAq$%009hsAtU+XaUD-IJK K K >>$$QZZ0AJJ>>>>>$$QWW-;;;>>$$Q^^4

BBB::  )QWW444!Q!Q0;;AGGDhsAtT*HQ4,Fq"dD)	++ + + Q<""177+hsAtT*HQD$,GHI I I aL8A$6$6$%' '(2
177(;AtT"XaT4%HHI I I Q1((1##Qd3AtT"	#%-aD$%?	@AJJd+	,, , ,
 Q<""177+z!''9Q</PPPPQ?%%agg.*Xrc1dTX=Y=EaTSW=X>Y?H|V[3] ] ] ] a^hq!n,F!!!''!''/2II&HIIII F"DF F F FI*HIIIIH)GHHHHrP   c                     t        d t        j                  t        j                  fD              sJ t        d t        j                  t        j                  fD              sJ t        j                  } t        j                  j	                  |       t        j                  u sJ | j	                  t        j                        t        j                  u sJ t        d      }t        dd      j                  t        dd            t        dd      k(  sJ t        dd      j                  t        ddd            t        ddd      k(  sJ t        ddd      j                  t        dd            t        dddd      k(  sJ t        dddd      j                  t        dd            t        dddd      k(  sJ t        dd      j                  t        t        dd      t        dd	                  t        t        dd      t        dd            k(  sJ t        dd      j                  t        ddd	            t        dd      k(  sJ t        dd|      j                  t        |            t        |      k(  sJ t        d
d      j                  t        d
            t        d
      k(  sJ t        ddd	dd      j                  t        j                        t        j                  k(  sJ t        dd      j                  t        dd	            t        dd	      k(  sJ t        dddd      j                  t        d            t        j                  k(  sJ t        t        dd      t        dd	            j                  t        dd            t        t        dd      t        dd            k(  sJ t        t        dd      t        dd	            j                  t        dd            t        t        dd      t        dd            k(  sJ t        t        dd      t        dd	            j                  t        dddd            t        j                  k(  sJ t        t        dd      t        dd	            j                  t        j                        t        j                  k(  sJ t        t        dd      t        d
            j                  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      k(  sJ t        t        dd      t        dd	      t        |t                    t        ddht        |t              d      k(  sJ t        t        ddd      t        dd	      t        |t                    t        ddht        |t              d      k(  sJ t        dd      \  }}t        t        |      t        ||      t        ||dz               t        |      k(  sJ t        t        |      t        t                    t        t        |      t        t              d      k(  sJ t        |      j                  t        j                        t        t        j                  t        |      d      k(  sJ t        dd      j	                  t        dd	            t        dd	      k(  sJ t        dddd      j	                  t        d            t        j                  k(  sJ t        t        dd      t        dd	            j	                  t        dd            t        t        dd      t        dd            k(  sJ y )Nc              3   ^   K   | ]%  }t         j                  j                  |      |u  ' y wrK   )r   rb   intersectionr   is     rN   r   z"test_intersect1.<locals>.<genexpr>  s(      #1qzz&&q)Q. #   +-c              3   ^   K   | ]%  }|j                  t        j                        |u  ' y wrK   )r  r   rb   r  s     rN   r   z"test_intersect1.<locals>.<genexpr>  s&      #1q~~ajj)Q. #r  r=   r   rH   rC   TFra   r   r   r   r      r   zm, nrE   )r  r   rc   rd   r  r   r)   r   r-   r'   ru   r(   r>   r   rf   )rw   r=   r@   rA   s       rN   test_intersect1r    s    #	
Q[[!# # # # #	
Q[[!# # # #	
A::""1%333>>!**%333sAAq>##HQN3x1~EEEAq>##HQ4$89At  Aq$))(1a.9Aue$% % %Aq$%//A?Aud#$ $ $Aq>##E(1a.(1a.$IJhq!nhq!n-. . . Q?$$Yq!Q%78IaOKKKQ1''	!51EEEUF#--i.>?%  Q1a#--ajj9QZZGGGAq>##IaO4	!QGGGAq$%//	!=KKK!Q!Q0::8Aq>Jhq!nhq!n-. . .!Q!Q0::8Aq>Jhq!nhq!n-. . .!Q!Q0::8Aq$PT;UV	

  !Q!Q0::1::F	

  !Q5!12<<Yq!QPQST=UVYq!Q1-uYu5ExPQST~/VWX X X	!Q*HQNHQNKYq\8Aq>8Aq>ERS S S	!Q!Q!QHaVXa^e<= = =	!Q*HQNHQNKaVXa^e<= = = 6%DAq	!i1ox1Q37GH!   	!il3Yq\9Q<%@A A AQ<!!!''*QWWilU;< < < Aq>&&yA79Q?JJJAq$%229Q<@AJJNNN!Q!Q0==hq!nMhq!nhq!n-. . .rP   c                     t        t        ddd      t        dd      d      j                  sJ t	              t        d      t        d      hk(  sJ t        dd	      } t        t        d
d      t        | d            dv du sJ t        t        f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z  |dz  d      dvsJ dvsJ t        t        fd       t        t        t
        j                  t
        j                  d      t
        j                  d      }|j                  t        t        t
        j                  t
        j                  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 y )NrC   rH   ra   r   Fr   r=   TrE   r   r  c                      d v S NrH   rS   r  s   rN   rO   z#test_intersection.<locals>.<lambda>      a1f rP   rH   rH   )rH   rH   rH   c                      t               S rK   )r   r  s   rN   rO   z#test_intersection.<locals>.<lambda>  s    d1g rP   )r(   r'   r)   r   setr   r   r:   rh   ru   r   rb   rc   rf   _argset	frozenset	ComplexesComplexInfinityrs   )r=   liner   r  s      @rN   test_intersectionr    s   Yq!Q'!Q%HA===q6adAaD\!!! 	sAXa^Xa^4AFu
9n% A

3qzzAAA"b)8RC+;<"a@PPPP Aq>DT1WdAg6A??A
9o&\!**ajj5I177]bcA99	<

AJJQV#WYZY`Y`"abbbbYq/@/@%ABajjPPP >Q^^+++ aS1#&,sQC*@@@@rP   c                     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 y )NrA   r   rC   rH   ra   r   )r   r   rf   r)   r   r'   r(   ru   )rA   r   r   cs       rN   test_issue_9623r"    sm    sA	ABA!A1a LA$6666AA	!EQQQrP   c                      t        dd      j                  t        dd            dk(  sJ t        dd      j                  t        dd            dk(  sJ y )Nr   rH   rC   Fra   r   T)r)   is_disjointrS   rP   rN   test_is_disjointr%  &  sL    Aq>%%hq!n5>>>Aq>%%hq!n5===rP   c                  J   t        dd      } t        ddd      }t        |       j                         dk(  sJ t        |       j                         t        d      usJ t        | |      j                         dk(  sJ t        | |      j                         t        d      usJ y )NrC   rH   ra   r  )r'   r*   __len__r   r   r   s     rN   test_ProductSet__len__r)  +  s    !QA!QAa=  "a'''a=  "!A$...a##%***a##%QqT111rP   c                     t        t        j                        t        j                  dz  k(  sJ t        t        j                  t        j                        t        j                  dz  k(  sJ t        t        j                  t        j                  t        j                        t        j                  dz  k(  sJ t        t        j                        t        j                  k7  sJ t        t        j                  t        j                        t        j                  t        j                  z  k(  sJ t        t        j                  t        j                  t        j                        t        j                  t        j                  z  t        j                  z  k7  sJ t        t        j                  t        j                  t        j                        t        j                  t        j                  z  t        j                  z  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sJ dt        t        j                  t        j                  t        j                        v sJ dt        j                  dz  v sJ dt        j                  t        j                  z  t        j                  z  vsJ dt        j                  t        j                  z  t        j                  z  v sJ dt        j                  t        j                  z  t        j                  z  vsJ dt        j                  t        j                  t        j                  z  z  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| z   }d| z  |v sJ d|vr+J  t        j                  t        j                  z  t        j                  z  t        j                  t        j                  t        j                  z  z  k7  sJ t        j                  }t        j                  }t        }d}||v sJ ||v sJ ||f||z  v sJ ||z  ||f}|v sJ ||fz  v sJ ||z   z  vsJ t        t        d        t               5  t        d t        d      D               d d d        t        t        d        t        dd      }t        dd      }t        ||      j                  t        t               t#        |j                  t              |j                  t                     cx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       t        t        fd       t        t        d        t        t        j                  t        j                        }|j)                  d      t        j*                  u sJ |j)                  d      t        j,                  u sJ |j)                  t              t/        t        |d      k(  sJ |j)                  t              j1                  t        d      t        j,                  u sJ |j)                  t        df      j1                  t        d      t        j*                  u sJ |j)                  t        t         f      t/        t        t         f|d      k(  sJ t3        t.        t        t         f|      sJ t/        d|      t        j*                  u sJ y # 1 sw Y   xY w)NrC   rH   ra   )rC   rG   rC   rH   ra   )rG   ra   )rC   )rH   ra   rS   r   c                  (    t         j                  dz  S )Nr   )r   rf   rS   rP   rN   rO   z!test_ProductSet.<locals>.<lambda>f  s    qww{ rP   c              3   2   K   | ]  }t        |        y wrK   r'   r   rw   s     rN   r   z"test_ProductSet.<locals>.<genexpr>h  s     2A9Q<2s   c                      t        d       S rK   )r*   rS   rP   rN   rO   z!test_ProductSet.<locals>.<lambda>i  s    j. rP   r   c                  .     j                  t              S rK   as_relationalr=   S3s   rN   rO   z!test_ProductSet.<locals>.<lambda>q  s    r//2 rP   c                  0     j                  t        d      S r~   r2  r4  s   rN   rO   z!test_ProductSet.<locals>.<lambda>r  s    r//15 rP   c                  \    t        t        dd            j                  t        t              S r   )r*   r)   r3  r=   r>   rS   rP   rN   rO   z!test_ProductSet.<locals>.<lambda>s  s    z(1a.9GG1M rP   Fr   )r*   r   rf   flattenr   r'   ru   r   rb   r   r:   ri   r<   rh   r3  r=   r>   r7   r8   r2   r   r   r   r"   subsr1   )	r   RnS1S2rn   ro   x3Z2r5  s	           @rN   test_ProductSetr?  4  s   agg!''Q,...aggqww'177a<777aggqww0AGGqL@@@agg!'')))aggqww'177QWW+<<<<aggqww0AGGagg4E4OOOOaggqww0QWWqww5F5P4Y4Y4[[[[Jqww'''':agg&&&&Jqww0000Z1111q6AGGQWW5555
177AGGQWW====1$$$AGGagg-7777!''AGG+agg5555agg/!''9999!''QWWqww%67777<9R=(((aggqzz*ajj888 Ah !''b)byB{{
 GGagg(AGGqww7H,IIII	
B	
B	B	
B8O88O88rBw	bB
bB8O88rBw7"r'!!!
:*+		! 32q223
9./	1aB	1aB	B	BQ"2##A&(8(8(;<C2bAh1a)2bAh1a+ABC D C D C :23
:56
:MN	AJJ

	+B;;v!&&(((;;t''';;q>Xae<<<<;;q>q!$///;;1v##Aq)QVV333;;1v(Aq62"FFFFX1vr***FB166)))-3 3s   ;`;;ac            	          t        t        t        dd            sJ t        t        t        t        dd                  sJ y r   )r1   r*   r)   rS   rP   rN   (test_ProductSet_of_single_arg_is_not_argrA    s3    Z!Q000ZHQN!;<<<rP   c                      t        t        j                  t        j                        j                  dk(  sJ t        t        t        d      t        j                        j                  d k(  sJ y )NFrC   )r*   r   rb   rf   rt   r)   r=   rS   rP   rN   test_ProductSet_is_emptyrC    sJ    ajj!''*33u<<<hq!nagg.774???rP   c                      t        dd      } t        d|       j                  | d      t        dd      k(  sJ t        | d      j                  | d      t        j                  k(  sJ y )Nr   TrE   r   rH   )r   r)   r9  r   ru   r   s    rN   test_interval_subsrE    sZ    sAAq>q!$A666Aq>q!$

222rP   c                  "   t        dd      j                         t        dd      k(  sJ t        dddd      j                         t        dd      k(  sJ t        t        dd      j                               t        t        dd            k(  sJ y )Nr   rC   TF)r)   to_mpir0   typerS   rP   rN   test_interval_to_mpirI    sy    Aq>  "c!Qi///Aq$&--/3q!9<<<A%%'(DQO;;;rP   c                  N   t        t        d      dz  t        j                        j                         t        t	        d      t	        d            k(  sJ t        t
        t        j                  d      j                         t        t
        t	        d      d      k(  sJ t        t         t        j                        j                         t        t         t	        d            k(  sJ t        dt
              j                         t        t	        d      t
              k(  sJ y )	N   @   z0.171875z0.5Tr   rH   z2.0)r)   r   Halfevalfr
   r=   r   r'   rS   rP   rN   test_set_evalfrO    s    AbE"Haff%++-j5<2) ) ) )Aqvv$/5578	5<D<* * * *RC &&(HbS%,,GGGGQ?  "iea&@@@@rP   c            	      X   t        dd      } t        dd      j                  dk(  sJ t        d|       j                  | k(  sJ t        d|       j                  | dz
  k(  sJ t        t        dd      t        dd            j                  dk(  sJ 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      z  }t        d	d      t        d	d      z  }t        t
         t
              t        dd      z  }|j                  |j                  cxk(  rdk(  sJ  J ||z   j                  dk(  sJ ||z
  j                  dk(  sJ |t	        ddd      z  j                  dk(  sJ |j                  |      j                  dk(  sJ ||z   j                  t
        u sJ |t	        ddd      z  j                  t        u sJ y )Nr   TrE   rC   ra   rH   r   r   r   r     rz   r      d      K      )
r   r)   r   r-   r'   r   r   ru   r   r   )r   r   offsetsquarebands       rN   test_measurerY    s   sAAq>!!Q&&&Aq>!!Q&&&Aq>!!QU***!Q!Q088A===!Q!Q1a1CDLL   Q2q2#r*22a777::"""a_x2.FAr?Xa_4LRCx1~-D>>\118S88888\!**c111\!**b000Yq!Q''00A555T"++r111TM""b(((9Q1%%..#555rP   c            	         t        dd      j                  t        dd            du sJ t        dd      j                  t        dd            du sJ t        dd      j                  t        dd            du sJ t        dd      j                  t        dddd            sJ t        dd      j                  t        dddd            du sJ t        d      j                  t        dd            sJ t        dd      j                  t        dddd            du sJ t        dd      t        d      z   j                  t        dddd      t        dd      z         sJ t        dd      j                  t        t        dd      t        dd                  du sJ t        dd	      j                  t        t        dd      t        dd                  du sJ t        dddd      j                  t        dd            du sJ t        j
                  j                  t        ddd            du sJ t        dd      j                  t        j
                        du sJ t        j
                  j                  t        j
                        du sJ t        t        d
        t        dddd      j                  t        dd            du sJ t        j
                  j                  t        ddd            du sJ t        j                  j                  t        j                        sJ t        j                  j                  t        j                        sJ t        t              j                  t        t                    J t        t              j                  t        t              j                  t        t                    du sJ t        t              j                  t        t              j                  t        t        dz               du sJ t        dd      j                  t        ddd            du sJ t        dd      j                  t        t        t         d      t        dt                          du sJ t!        dd      } t#        ddd      j                  t        dd            du sJ t#        t	        d      dz        j                  t        ddd            du sJ t#        d	dd      j                  t        ddd	            du sJ t#        dt              j                  t        dd            du sJ t#        t         d      j                  t        d            du sJ t#        d      j                  t        dd|             J t#        | | dz         j                  t        | | dz               du sJ t#        d      j                  t        ddd            du sJ t%        t'        | d| z        t        j                        j                  t        j(                        J y )Nr   rC   rH   Tra   Fr   r   r  c                  @    t         j                  j                  d      S r~   )r   ru   r   rS   rP   rN   rO   z test_is_subset.<locals>.<lambda>  s    qzz33A6 rP   r   r^   rA   rZ   r   r   r   rS  r   )r)   r   r'   r-   r   ru   r:   ri   issubsetrc   rb   rd   r=   r>   r9  r   r   r$   r.   r   rf   rA   s    rN   test_is_subsetr^    s3   Aq>##HQN3t;;;Aq>##HQN3u<<<Aq>##IaO4===Q?$$Yq!Q%:;;;Q?$$Yq!Q%:;uDDDQ<!!(1a.111Q?$$XaD$%?@EIIIQNYq\)44Aud#i1o57 7 7 Aq>##E(1a.(1a.$IJdRRRAq>##E(1a.(1a.$IJeSSSQ1a **8Aq>:dBBB::	!Q 23t;;;Aq>##AJJ/5888::

+t333
:67 Q1a ))(1a.9TAAA::yAq12d:::::

+++;;  ,,,Q<!!)A,/777Q<!!)A,"3"3Aq"9:dBBBQ<!!)A,"3"3Aqs";<EEEAq>##HQT$BCuLLLB?$$U8RC+<hq"o%NOSXXXXsD!AQ?$$YsB%78EAAA2&&yAq'9:eCCCAr?$$Yq!Q%78D@@@B<!!)Aq/2e;;;"a=""9Q<0E9998i1a01999AE?$$Yq!a%%89TAAA8hq!=>%GGGF1acNAJJ/99!''BJJJrP   c                  &   t        dd      j                  t        dd            du sJ t        dd      j                  t        dd            du sJ t        j                  j                  t	        ddd            du sJ t        t        d        y )Nr   rC   rH   Tra   Fc                  8    t        dd      j                  d      S r   )r)   is_proper_subsetrS   rP   rN   rO   z'test_is_proper_subset.<locals>.<lambda>  s    x1~>>qA rP   )r)   ra  r   ru   r'   r:   ri   rS   rP   rN   test_is_proper_subsetrb    s}    Aq>**8Aq>:dBBBAq>**8Aq>:eCCC::&&yAq'9:dBBB
:ABrP   c            	      ^   t        dd      j                  t        dd            dk(  sJ t        dd      j                  t        dd            sJ t        dd      j                  t        dddd            dk(  sJ t        dd      j                  t        dddd            dk(  sJ t        d      j                  t        dd            dk(  sJ t        dd      j                  t        dddd            dk(  sJ t        dd      t        d      z   j                  t        dddd      t        dd      z         dk(  sJ t        dd      j                  t        t        dd      t        dd                  dk(  sJ t        dddd      j                  t        dd            dk(  sJ t        j
                  j                  t        ddd            dk(  sJ t        dd      j                  t        j
                        dk(  sJ t        j
                  j                  t        j
                        dk(  sJ t        t        d	        t        dd      j                  t        j
                        dk(  sJ t        j
                  j                  t        j
                        dk(  sJ y )
Nr   rC   rH   Fra   r   r   Tc                  @    t         j                  j                  d      S r~   )r   ru   is_supersetrS   rP   rN   rO   z"test_is_superset.<locals>.<lambda>  s    qzz55a8 rP   )	r)   re  r'   r-   r   ru   r:   ri   
issupersetrS   rP   rN   test_is_supersetrg    sM   Aq>%%hq!n5>>>Aq>%%hq!n555Q?&&yAq!'<=FFFQ?&&yAq!'<=FFFQ<##HQN3u<<<Q?&&x1dD'ABeKKKQNYq\)66Aud#i1o57:?@ @ @ Aq>%%eHQNHQN&KLPUUUUQ1a ,,Xa^<EEE::!!)Aq!"45>>>Aq>%%ajj1T999::!!!**-555
:89 Aq>$$QZZ0D888::  ,444rP   c                  &   t        dd      j                  t        dd            du sJ t        dd      j                  t        dd            du sJ t        ddd      j                  t        j                        du sJ t        t        d        y )Nr   rC   rH   Fra   Tc                  8    t        dd      j                  d      S r   )r)   is_proper_supersetrS   rP   rN   rO   z)test_is_proper_superset.<locals>.<lambda>  s    x1~@@C rP   )r)   rj  r'   r   ru   r:   ri   rS   rP   rN   test_is_proper_supersetrk    s}    Aq>,,Xa^<EEEAq>,,Xa^<DDDQ100<DDD
:CDrP   c            	         t        dd      j                  d      t        j                  u sJ t        dd      j                  d      t        j                  u sJ t        dddd      j                  d      t        j                  u sJ t        dddd      j                  d      t        j                  u sJ t        dddd      j                  d      t        j                  u sJ t        dddd      j                  d      t        j                  u sJ t        dddd      j                  d      t        j                  u sJ t        dddd      j                  d      t        j                  u sJ t        dd      t        dd      v du sJ t        ddd      j                  d      t        j                  u sJ t        ddt        d            j                  t        d            t        j                  u sJ t        t              j                  t              J t        t        d        t        t        t        h      j                  t        h      J t        t        t        h      j                  t        t              j                  t        h      du sJ t        t        t        h      j                  t        t        dz         j                  t        h      du sJ dd	lmm}  t!        t        |       j                         t"              sJ t!        t        |       j                        t"              sJ t!        t              j                  d      t"              sJ t        t        fd
       t%        t%        dt'        dd            dz
  t'        dd            }t%        t'        dd      t'        dd            t%        t'        dd      t'        dd            z
  t%        t'        dd      t'        dd            z   }t        |      }t        |      }||z
  t        j(                  k(  sJ ddt        j*                  t        d      dg}t        | t-        fd|D              sJ t-        fd|D              sJ t/        t        dd      t        dd            j                  d      t        j                  u sJ t/        t        dd      t        dd            j                  d      t        j                  u sJ t/        t        dd      t        dd            j                  d      t        j                  u sJ t        j(                  j                  d      t        j                  u sJ t        t1        t        dz  t        z   dz
  d            j                  t        j*                        t        j                  u sJ t1        t        dz  t        dz  z   dz   d      t        j2                  v sJ t1        t        dz  t        dz  z   dz   d      t        j2                  vsJ t/        t        dd      t        dd            j                  t              t5        t7        t        j8                  t        k  t        dk        t7        t        d      t        k  t        dk              k(  sJ t;        t        dt              t        dd            j                  t              t7        t        dk  t        t        k  t        j8                  t        k  t        d      t        k        k(  sJ t        j<                  j                  t        j>                        t        j                  k(  sJ y )Nr   rH   rC   ra   TFr=   c                  ,    t         t        t              v S rK   )r=   r'   r>   rS   rP   rN   rO   ztest_contains.<locals>.<lambda>'  s    a9Q</ rP   r   c                      dt               v S r~   r.  r   s   rN   rO   ztest_contains.<locals>.<lambda>1  s    a9Q</ rP   	   r   r   gc              3   &   K   | ]  }|v  
 y wrK   rS   r   itemfsets     rN   r   z test_contains.<locals>.<genexpr><  s     .tt|.r   c              3   `   K   | ]%  }j                  |      t        j                  u  ' y wrK   )r   r   r   rq  s     rN   r   z test_contains.<locals>.<genexpr>=  s#     ?t}}T"aff,?s   +.r   r  ) r)   r   r   r   r   r'   r   r>   rg   r=   r:   rh   r9  	sympy.abcr   r   r   r"   r   r   ru   r  r  r-   r!   rf   r8   r7   Oner(   r  r  )r   rad1rad2s1s2itemsr   rs  s         @@rN   test_containsr|    s   Aq>""1%///Aq>""1%000Aq$&//2agg===Aq$&//2aff<<<Aq%&//2aff<<<Aq%&//2agg===Aq$%..q1QWW<<<Aq$%..q1QWW<<<QNhq!n,666Q1&&q)QVV333Q6#;'00=GGGQ<!!!$,,,
9/0aV&&s+333aV!!!Q'111#6$>>>aV!!!QqS)33QC8EAAA il++QB/:::il++A.999il++A.999
9/0 s1hq!n%)8Aq>:Dx1~x1~.Xa^XaQR^1TTWZ[cdegh[ikstuwxkyWzzD	4B	4B7ajj   1::qx.EeD.....?????!Q!Q099!<FFF!Q!Q099!<GGG!Q1a1::1=HHH::q!QWW,,,VAqD1HqL!,-66qzzBaggMMM!Q$A+/1%000adQTkAoq)QWW444 !Q!Q099!<
3quuz16"C!	16$:;< < <AA7@@CAFAFAEEQJ!	23 3 3 KK!!!"3"34???rP   c                  n   t        d      t        dd      j                        t        t        j
                  k  dk        k(  sJ t        t        fd       t        dddd      j                        t        t        j
                  k  dk        k(  sJ t        dd      } t        dz         j                  |       dk(  sJ t        d	d
      t        t         t              j                        t        t        j                  k  t        j                  k        k(  sJ y )Nr=   r   rC   c                       v S rK   rS   )r   r=   s   rN   rO   z(test_interval_symbolic.<locals>.<lambda>V  r  rP   Tr!  FrE   r   r   )r   r)   r   r7   r   Zeror:   rh   r   r  r  )r!  r   r=   s    @@rN   test_interval_symbolicr  R  s   sAAA::a=C!Q!V4444
9n%AtT"A::a=C
AE2222sAAq1u&&q)U222s$'ARC%%a(C	QAJJ-0 0 0 0rP   c            	      T   t        d      t        dd      } t        dd      }t        | |      j                        t	        t        t        j                  k  dk        t        t        d      k  dk              k(  sJ t        t        fd       j                        }|j                        k(  sJ |j                  d      t        u sJ |j                  d      t        u sJ |j                  d	      t        u sJ |j                  d
      t        u sJ |j                  d      t        u sJ t        dddd      t        dt              z   t        dddd      z   t!        fdddt         fD              sJ t!        fddD              sJ y )Nr=   r   rC   rH   ra   c                       v S rK   rS   )i3r=   s   rN   rO   z%test_union_contains.<locals>.<lambda>f  s    a2g rP   g      r   r  g      @g      @Tr   r   r   r  c              3   &   K   | ]  }|v 
 y wrK   rS   r   elUs     rN   r   z&test_union_contains.<locals>.<genexpr>p  s     1rr{1r   r   c              3   &   K   | ]  }|v  
 y wrK   rS   r  s     rN   r   z&test_union_contains.<locals>.<genexpr>q  s     ,2rQw,r   )rH   r   r   )r   r)   r-   r3  r8   r7   r   r  r:   rh   r   r9  r   r   r   r'   r  )i1i2r   r  r  r=   s      @@@rN   test_union_containsr  `  sx   sA	!QB	!QB	r2BA"S1a1f%=s1Q419aSTf?U"VVVV
9o&
AA  ####66!T?e###66!S>T!!!66!S>U"""66!S>T!!!66!S>U"""AtT"Xb"%55	"aA8NNA1aRC[1111,,,,,rP   c                  h    t        dd      j                  du sJ t               j                  du sJ y r   )r)   	is_numberr+   rS   rP   rN   test_is_numberr  t  s0    Aq>##u,,,5??e###rP   c                      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 y )Nra   r   FTz-inf)r)   is_left_unboundedr   r
   rS   rP   rN   test_Interval_is_left_unboundedr  y  sX    Aq>++u444RC--555E&M1%774???rP   c                      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 y )Nra   r   FTz+inf)r)   is_right_unboundedr   r
   rS   rP   rN    test_Interval_is_right_unboundedr    sU    Aq>,,555Ar?--555AuV}%88D@@@rP   c                     t        d      } t        dddd      j                  |       t        t	        d|       t	        | d            k(  sJ t        dddd      j                  |       t        t        d|       t	        | d            k(  sJ t        dddd      j                  |       t        t	        d|       t        | d            k(  sJ t        dddd      j                  |       t        t        d|       t        | d            k(  sJ t        t         dd      j                  |       t        t        t         |       t	        | d            k(  sJ t        t         dd      j                  |       t        t        t         |       t        | d            k(  sJ t        dt        d      j                  |       t        t	        d|       t        | t                    k(  sJ t        dt        d      j                  |       t        t        d|       t        | t                    k(  sJ t        t         t              j                  |       t        t        t         |       t        | t                    k(  sJ t        dd	      } t        d
d	      }t        | |      j                  |       | |k  k(  sJ t        ||       j                  |       || k  k(  sJ y )Nr=   r   rH   FTr   r^   r   rE   r>   )r   r)   r3  r7   r4   r5   r   r`   s     rN   test_Interval_as_relationalr    s   sAB5%(66q9Br1Ir!Qx ! ! !B4'55a8Br1Ir!Qx ! ! !B5$'55a8Br1Ir!Qx ! ! !B4&44Q7Br1Ir!Qx ! ! ! RCu-;;A>#b"ajRTUVXYRZB[[[[RCt,::1=RQZQSTUWXQYAZZZZBe,::1=RAYPRSTVXPYAZZZZBd+99!<Br1IrRSUWy@YYYYRC**1-RQZAr1KKKKsAsAAq>''*qAv666Aq>''*qAv666rP   c                  (   t        d      } t        d      }t        dd      j                  |       t        t	        | d      t	        | d            k(  sJ t        |d      j                  |       t        t	        | |      t	        | d            k(  sJ y )Nr=   r>   rC   rH   rz   )r   r'   r3  r8   r2   r`   s     rN   test_Finite_as_relationalr    sy    sAsAQ?((+r"Q(Bq!H/EEEEQ))!,2a8R2Y0GGGGrP   c            
         t        d      } t        dd      t        d      z   j                  |       t	        t        t        d|       t        | d            t        | d            k(  sJ t        dddd      t        d      z   j                  |       t        t        d|       t        | d            k(  sJ t	        | dk  | dkD        j                         j                  |       t        | t         kD  | t        k  t        | d            k(  sJ t        j                  dd      t        j                  dd      z   j                  |       t        t        | d      | dk\  | dk        k(  sJ y )Nr=   r   rC   rH   Tra   r   )r   r)   r'   r3  r8   r7   r4   r2   r5   as_setr   r3   r   r   rW   s    rN   test_Union_as_relationalr    sB   sAQNYq\)88;
3r!QxAq"Bq!H-. . .Q4&15DDQGBq!HbAh     a!eQU""$2215Q"WBAq*+ + +NN1a 8>>!Q#77
-
c"Qq'1a4!Q$89 9 9rP   c            
          t        d      } t        t        dd      t        d      d      j	                  |       t        t        t        d|       t        | d            t        | d            k(  sJ y Nr=   r   rC   rH   Fr   )r   r(   r)   r'   r3  r7   r4   r2   rW   s    rN   test_Intersection_as_relationalr    s`    sA!Q1)M!,3r!QxAq*Bq!H56 7 6rP   c            	          t        d      } t        t        dd      t        d      d      }|j	                  |       t        t        d|       t        | d      t        | d            k(  sJ y r  )r   r%   r)   r'   r3  r7   r4   r3   r=   rl   s     rN   test_Complement_as_relationalr    s^    sAhq!nilUCDa Bq!HbAh1a)* * *rP   c                      t        d      } t        t        dd      t        d      d      }|j	                  |       d| k  | dk  z  t        | d      z  k(  sJ y r  )r   r%   r)   r'   r3  r3   r  s     rN   "test_Complement_as_relational_failr    s]    sAhq!nilUCD a !VQ"Q(*+ + +rP   c            	          t        d      } t        t        dd      t        d      d      }|j	                  |       t        t        | d      t        d|       t        | d      z        k(  sJ y r  )r   r,   r)   r'   r3  r9   r2   r4   r  s     rN   &test_SymmetricDifference_as_relationalr    sZ    sAx1~y|eLDa C1a"Q(R1X2E$FFFFrP   c                  R   t         j                  j                  t        d            t         j                  u sJ t         j                  j                  t         j                        t         j                  k(  sJ t         j                  j                  t         j                  k(  sJ y )Nr=   )r   ru   r3  r   r   r   rs   boundaryrS   rP   rN   test_EmptySetr    sh    ::##F3K0AGG;;;::/1::===::!**,,,rP   c            	         t        d      } t        ddd      }t        ddd      }t        ||      }|j                  |      }|j	                  |      r|j	                  |      sJ |j	                  |      sJ |t        d      k(  sJ |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                  k7  sJ t        t        ddd            t        ddd      k7  sJ t        d      t        ddd      k7  sJ t        d|d	| d
| dz        sJ ||kD  du sJ ||k\  du sJ ||k  du sJ ||k  du sJ ||kD  r||kD  sJ ||k\  r||k\  sJ ||k\  r||k  sJ ||k\  r||k\  sJ ||kD  r||kD  sJ y )Nr=   rC   rH   ra   r   r   r+  rG   rz   r   F)r   r'   r-   r   r   r   r   r   r   r   ru   )r=   r   r   AorBAandBs        rN   test_finite_basicr    s!   sA!QA!QAA;DKKNE;;tT!222??1IaL   55A:!%%1*$$88q=TXX]**Q1!!SAY...Q1!!SAY... QZZ AJJ...Yq!Q'(IaA,>>>>Y9Q1#5555 VQAvq!t444EeFuEeFu!8q  19""6a1f:!u*$$u9U""rP   c                     d\  } }t        dd      }t        dddddd      }t        dddd      }t        | |      ||z  }d	|v sJ d|vsJ | |fdz  v sJ d
||z  j                         v sJ d||z  v sJ | ddf|z  |z  j                         v sJ | dfdf|z  |z  v sJ t        |       t        |      }}t	        dz        ||f||f||f||fhk(  sJ ||z  j                  ||z        sJ |j                  t        t         t              t        t         t              z        t        t        t         ddd      t        dt        dd      z   t        t         t              z  t        t         t              t        t         ddd      t        dt        dd      z   z        k(  sJ t        dd      dz  j                  t        dd      dz        sJ t        dd      dz  j                  t        dd      dz        rJ t        dd      dz  j                  t        dd      dz        rJ t        dd      t        d      z  j                  |      sJ t        z  z        dk(  sJ t        t        j                  t        j                  z        dk(  sJ t        t        j                  z        dk(  sJ t        t        fd       y )N)HTr   rC   rH   ra   r   r   r  r   )r   r   r   )r   r   Trz   r   r   g?r      c                  4    t         t        dd      z        S )Nr   rH   )lenr)   )coins   rN   rO   z$test_product_basic.<locals>.<lambda>  s    c$x1~"56 rP   )r)   r'   r8  r   r  r   r   r   r-   r  r   ru   r:   rh   )	r  r  	unit_lined6d4r   HHTTr  s	           @rN   test_product_basicr    s   DAqAI	1aAq!	$B	1aA	BQ?D"FVF??q6TQYFY.779999Vi////q!9R002222FA;$)b.(((QZBtQw<RHr2hR2r(CCCCrERU###Xrc2.xR/@@AU	2#q$	%	!Rt	$
%&.sB&7	8	2#r	HbS!T481b$-. 
/F0 0 0 0 ROQ))(3*;Q*>???b!1$//Q0BCCCQ"--hsB.?.BCCCRYr]*55f===tDy~!###qzz!**$%***qzz$1$$$
967rP   c            	         t        dd      } t        dd      t        dd      t        dd	d
| t        j                        t        dd      t        d      t        dd      t        d fD              sJ j                  t        j                        rJ t        fdfD              sJ t        fdfD              rJ z   z   j                  t        j                        rJ y )Nr=   TrE   r   r   r   rV  rC   rH      rS  HamEggsc              3   Z   K   | ]#  }|j                  t        j                         % y wrK   r   r   rf   r/  s     rN   r   ztest_real.<locals>.<genexpr>)  s     =q{{177#=s   )+c              3   z   K   | ]2  }fD ]&  }||z   j                  t        j                         ( 4 y wrK   r  )r   r   r   r   r   r   r   Js      rN   r   ztest_real.<locals>.<genexpr>+  s?     \aQPQSTVWYZO\qA  )\)\s   8;c              3   b   K   | ]&  }|z   j                  t        j                         ( y wrK   r  )r   r   r   s     rN   r   ztest_real.<locals>.<genexpr>,  s$     J!AE$$QWW-Js   ,/)	r   r)   r'   r   Pir  r   rf   r  )r=   r   r   r   r   r   r  s    @@@@@@rN   	test_realr    s    sAAARA!QAqtt$A"aA#A% A=aAq!_===={{177###\Aq!Q?\\\\J1aAq7IJJJJA	$$QWW----rP   c                  >   t        dd      } t        dd      }t        dd      t        d      z   j                  dk(  sJ t        dd      t        d      z   j                  dk(  sJ t        dd      t        |       z   j                  t        d|       k(  sJ t        dd      t        |       z   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(  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 y )Nr=   TrE   r>   r   rC   rH   r   r  r  )
r   r)   r'   r   r   r   r   r   r  r  r`   s     rN   test_supinfr  1  s   sAsAQNYq\)..!333QNYq\)..!333QNYq\)..#a);;;QNYq\)..#a);;;Q1!!SAY...Q1!!SAY...Q1a $$Aq!444Q1a $$Aq!444Q1aQ-?-?@DD	

  Q1aQ-?-?@DD	  UF#''3uf+====rP   c                     t         j                  } t        d      }| j                  |      t         j                  u sJ | j                  t        dd            | k(  sJ | j                  t        dd            t        dd      k(  sJ | j                  t         j                  u sJ | j                  t         j                  k(  sJ | j                  d      t         j                  u sJ y )Nr=   rH   r   r   )r   rs   r   r3  r   r   r)   r   r   r  r  ru   r   )r  r=   s     rN   test_universalsetr  D  s    	AsA??1'''778Aq>"a''';;x1~&(1a.88899

"""::###::a=AFF"""rP   c                  j    t        dd      } t        ddd      }t        | | z  | |z        | | z  k(  sJ y )Nr   rH   rC   )r)   r'   r-   )r  pointss     rN    test_Union_of_ProductSets_sharesr  P  s<    Aq>Dq!QFdVm,t;;;rP   c                      t        dd      j                  t               k(  sJ t        dd      } t        d|       j                  | hk(  sJ y )Nr   rC   r=   TrE   )r)   free_symbolsr  r   rW   s    rN   test_Interval_free_symbolsr  V  sF    Aq>&&#%///sAAq>&&1#---rP   c                     t        dd      } t        dd      }t        | d| z  t        dd            t        dd      k(  sJ t        | d| z  t        dddd	            t        dddd	      k(  sJ t        | | dz  t        dddd	            t        d
dd	d      k(  sJ t        | | dz  t        dd            t        d
d      k(  sJ t        | | dz  t        dddd	            t        d
dd	d      k(  sJ t        | | dz  t        dddd            t        d
dd	d      k(  sJ t        | | dz
  dz  t        dd            t        d
d      k(  sJ t        | d| dz  z  d| dz  z  z
  d| dz  z  z   d| z  z
  t        d
d            t        dd
      k(  sJ t        | | d| z  z   t        t         t                    t        t         d      t        dt              z   k(  sJ t        | d| z  d| dz
  dz  z  z   t        d
ddd	            t        t	        dd      t        d	      k(  sJ t        d t        dd            t        dd      k(  sJ t        t        | || z        t        d
d            t        t        | || z        t        d
d            k(  sJ t        t        | t        t        |                   t        d
d            t        t        | t        t        |                   t        d
d            k(  sJ y )Nr=   TrE   r   rH   r^   rC   r  Fr   r   ra      N   Z   ic                     d| z  S r  rS   rW   s    rN   rO   z%test_image_interval.<locals>.<lambda>s  s
    ac rP   )	r   r.   r)   r   r   r   r#   r   r   )r=   r   s     rN   test_image_intervalr  ]  s   sAsAAqsHRO,Q???AqsHRD%89Qe$% % %Aq!tXb!T59:Aud#$ $ $Aq!tXb!_-!Q???Aq!tXb!T59:Aud#$ $ $Aq!tXb!T489Aud#$ $ $AAz8Aq>2hq!nDDDAqAv1a4'"QT'1BqD8(1a.Ia  Aq1Q3w"b 12hsB6G
1b/7   AqsQ!axZ'!Qe)DE!QU+, , , M8B?3xAFFFF1acNHQN3VAqs^Xa^45 5 5 F1c#a&k*HQN;VAs3q6{+Xa^<= = =rP   c            
         t        t        t        dk  fdt        dz  z  t        dk  ft        dz  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(  sJ y )Nr   rC   rH   r   ra   Tr   )rH   Trz      )r   r=   r.   r)   r-   r   r   r'   )rX   f1s     rN   test_image_piecewiser  |  s    1a2g,1a4a 01a4,?A	AqAv;AFY	7BAq(2q/*eHR4DhxXY[]`bFc.ddddAr8Aq>*i1o===rP   c                  .   t        dd      } t        dd      }t        | | dz  t        dd      j                  t        | |                  t        dd      j                  t        t	        | dz  |dz        t        | dz  |dz                    k(  sJ y )	Nr=   TrE   r>   rH   r^   r   r   )r   r.   r)   r   r   r   r`   s     rN   test_image_Intersectionr    s    sAsAAq!tXb!_66x1~FGAq>##HSAq!t_c!Q$1o$NOP P PrP   c            	      t    t        dd      } t        | d| z  t        ddd            t        ddd      k(  sJ y )	Nr=   TrE   rH   rC   ra   r   r  )r   r.   r'   rW   s    rN   test_image_FiniteSetr    s;    sAAqsIaA./9Q13EEEErP   c            
          t        dd      } t        | | dz  t        dd      t        ddd      z         t        dd	      t        d
      z   k(  sJ y )Nr=   TrE   rH   r^   r   rC   ra   r   ro  )r   r.   r)   r'   rW   s    rN   test_image_Unionr    sS    sAAq!tXb!_yAq/AABa^il*, , ,rP   c                      t        dd      } t        | d| z  t        j                        t        j                  k(  sJ y )Nr=   TrE   rH   )r   r.   r   ru   rW   s    rN   test_image_EmptySetr    s1    sAAqsAJJ'1::555rP   c                      t         t        j                  vsJ t        t         t              j                  t               t        j                  u sJ y rK   )r   r   rf   r)   r   r   r   rS   rP   rN   test_issue_5724_7680r    s:    AGGRC%%a(AGG333rP   c                      t        d      j                  t        d      k(  sJ t        d t        t        fD              sJ y )NrC   c              3      K   | ]:  }t         t        fD ])  }t        d d||      j                  t	        d d      k(   + < yw)r   rC   N)r   r   r)   r  r'   )r   r   r   s      rN   r   z test_boundary.<locals>.<genexpr>  sN      LdE]L/9 1i4==1aP LP Ls   A A)r'   r  r  r   r   rS   rP   rN   test_boundaryr    sF    Q<  IaL000 L"E]L L L LrP   c            	         t        dd      t        dd      z   j                  t        dddd      k(  sJ t        dddd      t        dddd      z   j                  t        ddd      k(  sJ t        dd      t        d      z   j                  t        ddd      k(  sJ t        t        dd      t        dd	      d
      j                  t        dd	      k(  sJ t        t        dd      t        dd      d
      j                  t        dd      k(  sJ t        t        dddd      t        dd	dd      d
      j                  t        ddd	      k(  sJ y )Nr   rC   rH   ra   FTr   r   rR  r   )r)   r  r'   r-   rS   rP   rN   test_boundary_Unionr    sX   QNXa^+551aA9NNNNaE4(aD%()*2(i1a6HI J I QNYq\)33yAq7IIII!R(1b/EBKKB      !R(1a.5AJJB     !Rt,"b$-??GxB#$ $ $rP   c                  z    t        t        dd      t        dd      d      j                  t        dd      k(  sJ y)z2 Testing the boundary of unions is a hard problem r   r   rR  Fr   N)r-   r)   r  r'   rS   rP   rN   #test_union_boundary_of_joining_setsr    s<     !R(2r"2UCLLB     rP   c                     t        dddd      dz  } | j                  t        dd      t        dd      z  t        dd      t        dd      z  z   k(  sJ t        dddd      t        dddd      z  }| |z   j                  t        dd      t        dd      z  t        dd      t        dd      z  z   t        dd      t        dd      z  z   t        dd      t        dd      z  z   k(  sJ y )Nr   rC   TrH   )r)   r  r'   )open_squaresecond_squares     rN   test_boundary_ProductSetr    s    1at,1KIaOhq!n$D$,QNYq!_$D%E F F F Q4.!Qd1KKM-'11!Q(1a.0!Q(1a.01A1a01 A1a012 2 2rP   c                  V    t        dd      t        d      z  } | j                  | k(  sJ y r   )r)   r'   r  )
line_in_r2s    rN   test_boundary_ProductSet_liner    s*    !Q)A,.J*,,,rP   c                      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 y Nr   rC   FTrH   ra   )r)   is_openr'   rS   rP   rN   test_is_openr    s|    Aq%'//5888Aq$&..%777Aq$%--555Q1%%...rP   c                      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 y r  )r)   	is_closedr'   rS   rP   rN   test_is_closedr    s]    Aq%'11T999Aq$&00E999Q1''4///rP   c                  V    t        dddd      j                  t        dddd      k(  sJ y Nr   rC   FT)r)   closurerS   rP   rN   test_closurer    s,    Aq%&..(1a2NNNNrP   c                  V    t        dddd      j                  t        dddd      k(  sJ y r  )r)   interiorrS   rP   rN   test_interiorr    s,    Aq%&//8Aq$3MMMMrP   c                  &    t        t        d        y )Nc                  .    t         t        j                  v S rK   )r=   r   rf   rS   rP   rN   rO   z!test_issue_7841.<locals>.<lambda>  s    a177l rP   )r:   rh   rS   rP   rN   test_issue_7841r    s    
9*+rP   c                     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(  sJ t        | |z  | |z        sJ t        | |z  || z        dk(  sJ t        t         t        t        t
        h      t        t        h            sJ t        t        t        t
        h      j                  t
        t              t        t        h            t        j                  u sJ t        t        t        t
        h      t        t        h            j                  t
        t              t        j                  u sJ t        t        t        t
        h      j                  t
        t        dz         t        t        h            t        j                  u sJ t        t        t        t
        h      t        t        h            j                  t
        t        dz         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 y )Nr   rC   rH   FrS   )r2   r)   r'   r1   r=   r>   r9  r   r   r   r*   )ry  rz  r  r  s       rN   test_Eqr    ss   hq!nhq!n---hq!nhq!n-666	1aB	1aBb"::b":beRUbeRUu$$$RAq6*IqcN;;;iA$$Q*IqcN;qvvEEEiAA3055a;qvvEEEiA$$Q!,in=HHHiAA3055a1=HHHj!qc"HQN3qww>>>j!oz1#s34???imYq\*agg555jlIaL)QWW444	!QB	!QBRB+ZB-?@@@rP   c                     t        dddddd      t        ddddd	      } t        dd	      t        | d
      j                  du sJ t        d
      j                  J t        t        | d
       t        ddddddd	      k(  sJ t	        t
        f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      z  t        ddd      k(  sJ t        t        d      t        d      t        d            t        t        d      t        d      t        d            z  t        t        t        d      t        d      t        d            t        t        d      t        d      t        d            z
  t        t        d      t        d      t        d            t        t        d      t        d      t        d            z
        k(  sJ t        dd      t        dd      z  t        t        dd      t        dd      z
  t        dd      t        dd      z
        k(  sJ y )Nr   rC   rH   ra   r   r   r  r  r   Fr   Tc                  ,    t        t         d       S r   )r'   r,   r   s   rN   rO   z*test_SymmetricDifference.<locals>.<lambda>  s    	.q!eDE rP   )	r'   r)   r,   r   r:   rh   r+   r   r-   r   r   r   s    @@rN   test_SymmetricDifferencer    s{   !Q1a#A!Q1b!ABAq!e4@@DHHHq!e4@@HHH)!Q?@!Q1aB'( ( (
9EG yAq!Q:aAq"%'*3Aq!Q1b*IJ J JyAq19Q1a3HI|  Q1a#i1a&;;aA  qtQqT1Q4 3qtQqT1Q4#88E#adAaDRSTURVBWZ]^_`a^bdefgdhjklmjnZoBo!adAaD!C!adAaD$99=; ; ; ;Aq>HQN*eHQNQN5$QNXa^;/= = = =rP   c            	          ddl m}  t        dd      }t         | |            j	                  t
        j                        t        t
        j                  t         | |                  k(  sJ y )Nr   )logr   TrE   )&sympy.functions.elementary.exponentialr
  r   r'   r   r   rf   r(   )r
  r   s     rN   test_issue_9536r    sN    :sASV&&qww/<SVWXSYIZ3[[[[rP   c                  ~   t        d      } t        |       }t        d|       }t        t        j                  |      t        t        j                  |d      k(  sJ t        t        dd      |      t        t        dd      |d      k(  sJ 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      k(  sJ t        |t        dd            t        |t        dd      d      k(  sJ y )NrA   rH   Fr   rC   ra   T)r   r'   r%   r   rf   r)   r-   )rA   r   r   s      rN   test_issue_9637r  $  s   sA!A!QAaggq!ZU%KKKKhq!na(Jx1~qSX,YYYYhq!na(5!Qt4hq!T56QRTUVW W Wa!Z177U%KKKKa!Q(Jq(1a.SX,YYYYrP   c            	      B   t        t        t              t        d            t        t        t              t        d      d      k(  sJ t        t        ddt              t        t        t        dd            t        t        d      t        t              d      k(  sJ y )NrC   Fr   rH   ra   )r%   r'   r>   r=   rS   rP   rN   test_issue_9808r  0  ss    ilIaL1Z	!iXYlej5kkkki1a()Aq!Q*?@9Q<1>? ? ?rP   c                      t        t        t         t              t        d            t        t         t              k(  sJ t        t         t              j	                  d      t
        j                  u sJ y r~   )r-   r)   r   r'   r   r   r   rS   rP   rN   test_issue_9956r  7  sS    2#r"IaL1Xrc25FFFFRC%%a(AFF222rP   c            
         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(  sJ t        t        t        t        d      t        t        t        t              |      t        t        dt        t              t        t        t        t              |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(  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z  dt        t                    t        t        dz  dt        t                    |      t        |t        t        dz  t        t                          k(  sJ y )Nr   )r   r   r   rC   rH   ra   Fr   )r)   r   r   rf   r    r(   r'   r@   rA   r=   r?   r   r   )r  rD   mats      rN   test_issue_Symbol_interr  <  sP   BA	A

C1ilIaO<Q	!%& & &	!Q*IaA,>BQ	!Q() ) )	!Q*IaOQ?\1a&1a)4a89 9 9	!Q*IaA,>BYq!Q'1a);QOP P P	!Q*IaAq,A1EYq!Q'+, , ,9S!Q/1c11EFQ	!%& & &	#a&#a&19SVSVQ3OQRSQ	#a&#a&123 3 3	!Q$3q62IadAs1v4NPQRQ	!Q$A/01 1 1rP   c                  .    t         j                  dz  sJ y )Nr   )r   rd   rS   rP   rN   test_issue_11827r  R  s    ;;>>rP   c            
         t         dz  t         dz  dz
  z  } 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(  sJ t        t         | t        dd            t	        t        t         d      t        t        dd	      t                    k(  sJ y )
NrH   r   r   rC   Tr^   ra   ro  r   )r=   r.   r   rf   r-   r)   r   r   rX   s    rN   test_issue_10113r  V  s    	1adQhAAq!''"eHbS!,<hq"dTX>Y&ZZZZAq(2q/*hsA.>>>>Aq(2q/*eHbS!4DhxXY[\~_aFb.ccccrP   c                      t        t        d        t        dd      } t        t	        t
        j                  t        |                   | gk(  sJ y )Nc                  b    t        t        t        j                  t	        t
                          S rK   )r   r(   r   rf   r'   r=   rS   rP   rN   rO   z"test_issue_10248.<locals>.<lambda>_  s    4QWWil CD rP   r   TrE   )r:   rh   r   r   r(   r   rf   r'   )r   s    rN   test_issue_10248r  ]  sB    
D 	sAQWWil34;;;rP   c                     t        dd      t        dd      z   } t        t        j                  |       t        t        j                  t	        t        dd      t        dd            d      k(  sJ t        t        j
                  |       t        t        j
                  t	        t        dd      t        dd            d      k(  sJ y )Nr   rC   rH   ra   Fr   )r)   r%   r   rs   r-   rc   r   s    rN   test_issue_9447r  e  s    A!Q'Aanna(JNNE(1a.(1a.AE-S S S Sajj!$
JJhq!nhq!n=)O O O OrP   c                      t        d      dk(  du sJ t        d      dk7  du sJ t        t        d        t        t        d        t        t        d        t        t        d        y )	NrH   ra   FTc                      t        d      dk  S NrH   ra   r.  rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>p      ilQ. rP   c                      t        d      dk  S r"  r.  rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>q      ila/ rP   c                      t        d      dkD  S r"  r.  rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>r  r#  rP   c                      t        d      dk\  S r"  r.  rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>s  r%  rP   )r'   r:   rh   rS   rP   rN   test_issue_10337r(  m  s\    aLA%'''aLA$&&&
9./
9/0
9./
9/0rP   c                     t         t        d      t        dd      t        j                  t        j
                  t        j                  t        j                  t        j                  g} t        dd      }| D ]  }||vrJ  t        dd      }t        dd	
      }|dz   t        ||dz         v sJ |t        ||dz         vsJ t        dd      t        t        dd      t        dd            v sJ t        t         t              j                  t              t        j                  u sJ t        t         t              j                  t               t        j                  u sJ y )NrC   rH   r   r   r=   TrE   nrFr   r   )ru   r'   r)   r   r  r   r  NaNr  r   r   r   r   )badintervalr  r=   r*  s        rN   test_issue_10326r.  v  s2   !A			

			
C 1~H !   ! 	sA	E	*Bq5HQA&&&&XaQ''''Aq>Yx1~x1~FFFFRC%%b)QWW444RC%%rc*agg555rP   c                      t         j                  } t        dd      }t        |t              }t         j
                  }| |z   || z   k(  sJ | |z   || z   k(  sJ ||z   ||z   k(  sJ y )Nr   TrE   )r   rs   r   r)   r   rf   )r  r   inf_intervalRs       rN   test_issue_2799r2    so    	AsAAr?L	A||a////q5AE>>||a////rP   c                  2   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 y )Nr   TF)r)   r   r  rS   rP   rN   test_issue_9706r4    sw    RC##xQe'DDDDAr?""hq"eT&BBBBRC$$"b(9999rP   c                  
   t        t        t         t              t        t                    } t        t        t         t              t        t                     }t        t         t              t        t              z   | k(  sJ t        t              t        t         t              z   | k(  sJ t        t         t              t        t               z   |k(  sJ t        t               t        t         t              z   |k(  sJ y rK   )r-   r)   r   r'   )reals_plus_infinityreals_plus_negativeinfinitys     rN   test_issue_8257r8    s    "b 19R=A"'"b(99bS>"JRCy},0CCCCR=8RC,,0CCCCRCy"~-1LLLLbS>HbS"--1LLLLrP   c                      t         j                  t         j                  z
  t        k(  sJ t         j                  t         j                  z
  t        k(  sJ y rK   )r   rb   ru   rf   rS   rP   rN   test_issue_10931r:    s8    ::

"h...::8+++rP   c                  f   t        t        t         t              t        t               d      } t        t        t               t
        j                        | k(  sJ t        t
        j                  t        t              d      } t        t        t              t
        j                        | k(  sJ y r   )r(   r)   r   r'   r=   r   rf   )solns    rN   test_issue_11174r=    sq    "b)9aR=5ID	1"qww/47771>D	!agg.$666rP   c                  l   t        t        t        t        t        t        z  dz  dz
  t        dz  z               t
        j                        j                  d      t        dt        t        t        t        t        t        z  dz  dz
  t        dz  z               t
        j                              k(  sJ y )NrH   rC   r   )	r#   r   rA   r   r   r   rb   r   r"   rS   rP   rN   test_issue_18505r?    s    F1d2a46A:1#456

CLLQOQ41Q
RT0A+B!CQZZPQR R RrP   c            
         t        t        t         t              t        t                    t        t              k(  sJ t        j                  t        t         t              t        dt              g      t        t              k(  sJ t        j                  t        t         t              t        t              g      t        t              k(  sJ t        j                  t        ddt        t
              t        ddt              g      t        j                  t        ddt              t        ddt        t
              g      cxk(  ret        t        ddt              t        ddt        t
                    cxk(  r2t        t        ddt              t        dt        t
                    k(  sJ  J t        dt        z   t
        z
        t        d      z  t        d      t        dt        z   t
        z
        z  cxk(  r2t        t        dt        z   t
        z
        t        d      d      k(  sJ  J t        d      t        t              z  t        t              t        d      z  cxk(  r(t        t        d      t        t              d      k(  sJ  J t        t        h      t        t        t
        h      z  t        t        t        h      t        t        t
        h      d      k(  sJ y )Nr   rH   ra   rC   Fr   )r(   r'   r   r=   _handle_finite_setsr>   rS   rP   rN   test_finite_set_intersectionrB    sT    	2#q)9Q<8IaLHHH++YsA->	!Q,PQU^_`Uaaaa++YsA->	!,MNR[\]R^^^^++Yq!Q-BIaQRTUDV,WX(()Aq!*<i1aQR>S)TU=Yq!Q'1aA)>?= 	Yq!Q'1a);<= = = = =
 QqSUil*!y1Q''EYqs1u%y|eDE E E E E Q<)A,&)A,1*E AYq\9Q<%@A A A A A aS>Iq!f--Ys^Y1v%6GH H HrP   c                      t        d      t        d      g t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         f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 y )
NrC   rH   c                      t               S rK   r   r   s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    eDk rP   c                      t               S rK   r(   rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    l40 rP   c                  ,    t        t                     S rK   )r-   tuplerE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    eE$K0 rP   c                  ,    t        t                     S rK   )r(   rI  rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    l5;7 rP   c                  (    t        d  D              S )Nc              3       K   | ]  }|  y wrK   rS   r  s     rN   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s     #4!A#4   r   rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    e#4t#44 rP   c                  (    t        d  D              S )Nc              3       K   | ]  }|  y wrK   rS   r  s     rN   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s     *;1*;rM  rG  rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    l*;d*;; rP   ra   )r'   r:   	Exceptionr-   r  r(   rE  s   @rN   #test_union_intersection_constructorrQ    s    aL)A,'D
9)*
901
901
978
945
9;< Ty$////D	"i&6666!qc?i1o---AA'9Q<777rP   c                      t         t        t        j                  t         d      t        j                  dt                    vsJ y r   )r   r-   r)   r   r   rS   rP   rN   test_Union_containsrS    s8    erc1x}}Q35 5 5 5rP   c                      t        t        t        t        ft        j                        j	                  t        j                  dz        du sJ y )NrH   T)r.   r=   r   rf   r   rS   rP   rN   test_issue_16878brU    s6    
 A1vqww'11!''1*=EEErP   c            	      :   t        t        ddd      t        ddd      t        ddd            j                  t              t        ddd      t        ddd      z  k(  sJ t        t	        dd      t	        dd            j                  t              t        t	        dd      t        d      z  t	        dd      t        d      z        k(  sJ t        t	        dd      t	        dd            j                  t              t        t	        dd      t        d      z  t	        dd      t        d      z        k(  sJ t        t	        dd      t
        j                  t
        j                        j                  t              t	        dd      t        d      z  k(  sJ t        t	        dd            j                  t              t	        dd      t        d      z  k(  sJ t        t
        j                  t	        dd      t
        j                        j                  t              t	        dd      t        d      z  k(  sJ t        t	        t         t                    j                  t              t	        t         t              t        d      z  k(  sJ t        t
        j                        j                  t              t
        j                  k(  sJ t               j                  t              t
        j                  k(  sJ t        t        d        t        d	      } t        d
      }t        d      }t        t        |       t        ||            j                  t              t        |       t        d      z  t        ||      t        d      z  z   k(  sJ y )NrC   rH   ra   r   r   r   r   c                  *    t        t        d            S )NrA   )r&   r   rS   rP   rN   rO   z$test_DisjointUnion.<locals>.<lambda>  s    mF3K8 rP   r=   r>   r?   )r&   r'   rewriter-   r)   r   ru   r   r:   rh   r   )r=   r>   r?   s      rN   test_DisjointUnionrY    sS   1a+Yq!Q-?1aQRAST\\]bchqrsuvxyhz  ~G  HI  KL  NO  ~P  iP  Q  Q  Q!Q!Q8@@G5QYZ[]^Q_bklmbnQnpxyz|}p~  BK  LM  BN  qN  LO  O  O  O!Q!Q8@@G5QYZ[]^Q_bklmbnQnpxyz|}p~  BK  LM  BN  qN  LO  O  O  O"a!**ajjAII%PT\]_abTcfopqfrTrrrr"a)11%8HROiXYl<ZZZZXb!_ajjAII%PT\]_abTcfopqfrTrrrr2#r*+33E:hsB>OR[\]R^>^^^^$,,U3qzzAAA?""5)QZZ777
989sAsAsA1yA7??F9UV<ZcdeZfKfktuvxykz  ~G  HI  ~J  lJ  KK  K  K  KrP   c                  $   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 y )NTrC   rH   ra   F)r&   r   ru   rt   r'   rS   rP   rN   test_DisjointUnion_is_emptyr[    sj    $--555QZZ099TAAAYq!Q%78AAUJJJrP   c                     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 sJ y )NTFrC   rH   ra   )r&   r   rb   rc   rr   r   ru   rf   r'   r=   r>   rS   rP   rN   test_DisjointUnion_is_iterabler]    s    QZZ=IITQQQQWW-99UBBB1a+QZZ1aIUUY]]]]QZZ0<<EEErP   c            
         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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 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 y )Nr   r   rC   rH   )r   rC   )r   rH   r   rI   rG   )rH   r   rH   rC   r  )r   rC   rH   )r   r   r   )r   r   )r   r   )r   rC   )r  r   )r  rC   )r&   r'   r=   r>   r?   r   ru   r)   rS   rP   rN   test_DisjointUnion_containsr`    s   ]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^]9Q1#5yAq7I9UVXY[\K]^^^^M)Aq!*<i1a>PR[\]_`bcRdeeee=38888yAq'99Q1;MyYZ\]_`Oabbbbq6]9Q1#5qzz9Q<PPPPq6]9Q1#5qzz9Q<PPPPq6]9Q1#5qzz9Q<PPPPq6]9Q1#5qzz9Q<PPPP}Xa^Xa^DDDD}Xa^Xa^DDDD=!Q!QHHHH}Xa^Xa^DDDDrP   c                     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 |j                  |       t              }||v sJ |j                  |       t              }||v sJ |j                  |       t              }||v sJ |j                  |       t              }||v sJ |j                  |       t              }||v sJ |j                  |       t              }||v sJ |j                  |       t        t        fd       t        t        d        y )	Nra   r   rQ  ro  rC   ))ra   r   )r   r   )rQ  r   )ro  r   c                      t               S rK   )next)its   rN   rO   z)test_DisjointUnion_iter.<locals>.<lambda>=  s    $r( rP   c                  \    t        t        t        dd      t        j                              S r   )iterr&   r)   r   ru   rS   rP   rN   rO   z)test_DisjointUnion_iter.<locals>.<lambda>?  s    tM(1a.!**$MN rP   )r&   r'   r=   r>   r?   rf  rc  remover:   StopIterationri   )r   L1L2nxtrd  s       @rN   test_DisjointUnion_iterrl  #  s?   i1a+Yq!Q-?@A	aBa&1a&1a&	!B	)B
r(C"99IIcN
r(C"99IIcN
r(C"99IIcN
r(C"99IIcN
r(C"99IIcN
r(C"99IIcN
r(C"99IIcN
=*+
:NOrP   c                  Z   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        y )Nra   r   rQ  ro  c                  \    t        t        t        dd      t        j                              S r   )r  r&   r)   r   ru   rS   rP   rN   rO   z(test_DisjointUnion_len.<locals>.<lambda>D  s    s=!Q#LM rP   )
r  r&   r'   r=   r>   r?   r   ru   r:   ri   rS   rP   rN   test_DisjointUnion_lenro  A  so    }Yq!Q2IaA4FGHAMMM}QZZYq!Q5GTUYZZZZ
:MNrP   c            	      r   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 y NrC   rH   )	r*   r'   r    r   r   r/   r   kindr)   )r   mkks      rN   test_SetKind_ProductSetru  F  s    9VQF^,i1v.GHA	J	B	"b!"A66Q;;hq!ni1v&?@EEQZ[egiQjIkkkkrP   c                  R    t        dd      j                  t        t              u sJ y rq  )r)   rr  r/   r   rS   rP   rN   test_SetKind_Intervalrw  M  s!    Aq>'*"5555rP   c                      t         j                  j                  t        t              u sJ t
        j                  t               u sJ y rK   )r   rs   rr  r/   r	   ru   rS   rP   rN   "test_SetKind_EmptySet_UniversalSetry  P  s3    >>'-"8888==GI%%%rP   c                      t        dt        ddg            j                  t        t              u sJ t        dd      j                  t        t
              u sJ y rq  )r'   r    rr  r/   r	   r   rS   rP   rN   test_SetKind_FiniteSetr{  T  sI    Q1v',,0FFFFQ?7:#6666rP   c                     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 y )NrC   rH   rQ  )r-   r'   r    r)   rr  r/   r	   r   rS   rP   rN   test_SetKind_Unionsr}  X  sa    61a&>*HQN;@@GMDZZZZ!Q!Q0559LLLLrP   c                      t        ddd      } t        dd      }t        | |      j                  t	        t
              u sJ y )NrC   rH   ra   r   r   )r'   r)   r&   rr  r/   r   r(  s     rN   test_SetKind_DisjointUnionr  \  s;    !QAAAA##wz'::::rP   c                  j   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ht
        j                        j                  t        t              u sJ  |dht               j                  t               u sJ 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 y )
Nc                      t        | ddiS Nr   Fr   argss    rN   rO   z-test_SetKind_evaluate_False.<locals>.<lambda>b  s    eT2E2 rP   rC   rH   r   r   c                      t        | ddiS r  rG  r  s    rN   rO   z-test_SetKind_evaluate_False.<locals>.<lambda>h  s    lD959 rP   c                      t        | ddiS r  )r%   r  s    rN   rO   z-test_SetKind_evaluate_False.<locals>.<lambda>k  s    j$77 rP   >   rC   rH   r   r   >   rC   rH   ra   r   r   )	ru   rr  r/   r   r)   r   rs   r	   r'   )r  r   r   s      rN   test_SetKind_evaluate_Falser  a  s_   2AaS(  GJ$7777Xa^X&++wz/BBBBaS!..!&&'-*@@@@Xa^Xa^aL$'*"56 6 69AaS!..!&&'**====aS(  GI---7AQ^^\*//7=3IIII_h',,
0CCCCX',,	999rP   c                  R   t        t        t        t        dz        t        dd            } | t	        d      z
  j
                  t        t              u sJ | t        dd      z   j
                  t        t              u sJ | t	        d      z   j
                  t        t              u sJ y )NrH   rC   r   ra         )r#   r   rA   r)   r'   rr  r/   r   r  s    rN   test_SetKind_ImageSet_Specialr  p  s    16"HQN3A	!""gj&9999R  &&'**====	"##wz'::::rP   c                     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 sJ | j                  |       sJ |j                  |       rJ d|v sJ t        t        dd      t        d      dd      }|j                  |      sJ | j                  |      sJ y )NrC   rH   r   )r'   r2   r\  r  s      rN   test_issue_20089r  v  s    )Aq/9Q<0AA::a<<!Yq!_%%%Q<1!QA6M6::a==zz!}6M6)Aq/9Q<A6A::a==::a==rP   c                     t        dd      } t        | |       }t        dddd      }|j                  |      du sJ t        d      }|j                  |      du sJ t        ||      j	                         t
        j                  u sJ t        | |      j	                         t
        j                  u sJ t        dht        h      j	                         t        dht        h      k(  sJ y )	NrC   rH   rI   rG   r_  r  TF)	r'   r*   r   r2   simplifyr   r   r   r=   )r   r   r!  ds       rN   test_issue_19378r    s    !QA1aA&&&&1A;;q>T!!!!A;;q>U"""a8!&&(((a8!'')))qcA3<  "b!qcl222rP   c            	      2   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              sJ y )NrA   rS  rC   )r   r   r(   r$   r)   r]  s    rN   test_intersection_symbolicr    sm    sAl58U3Z8,GGGl58Xa-=>MMMl5:x1~>MMMrP   c            	      4   t        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 y )	NrA   T)r[   r   r   r   i  r      )r   r(   r$   r)   r]  s    rN   "test_intersection_symbolic_failingr    s    sD40Ab!eAsA&67<b!eBQ'<) ) ) )Qq#q)9:lQr3*?, , , ,rP   c                  z    t         dz
  } t        |       j                  d      t        t        dd            k(  sJ y )Ng-DT!	@rH   z3.23108914886517e-15)r   r'   rN  r
   rW   s    rN   test_issue_20379r    s7    
AQ<a Ie4JA.N$OOOOrP   c                      t        dt        d      dz  t        d      dz  z         }  | j                         dhk(  sJ y rq  )r'   r   r   r  r   s    rN   test_finiteset_simplifyr    s;    !SVQYQ*+A1::<A3rP   N)sympy.concrete.summationsr   sympy.core.addr   sympy.core.containersr   sympy.core.functionr   sympy.core.kindr   r	   sympy.core.numbersr
   r   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.elementary.miscellaneousr   r   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   sympy.logic.boolalgr   r   sympy.matrices.commonr   sympy.matrices.denser    sympy.polys.rootoftoolsr!   sympy.sets.containsr"   sympy.sets.fancysetsr#   r$   sympy.sets.setsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   mpmathr0   sympy.core.exprr1   sympy.core.relationalr2   r3   r4   r5   r6   sympy.logicr7   r8   r9   sympy.testing.pytestr:   r;   r<   ru  r=   r>   r?   r@   rA   ru   rp   rx   r|   r   r   r   r   r   r   r   r   r   r   r  r  r  r"  r%  r)  r?  rA  rC  rE  rI  rO  rY  r^  rb  rg  rk  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r.  r2  r4  r8  r:  r=  r?  rB  rQ  rS  rU  rY  r[  r]  r`  rl  ro  ru  rw  ry  r{  r}  r  r  r  r  r  r  r  r  r  rS   rP   rN   <module>r     s4   )  + & 5 E E E   " / & E E : ? - , ' * ( 2 [  [  [  [  % : : $ $ F F # #::$)N'X6!!FH8=6I1X;?
&<.b"-J.Ib=.@ AFR>
2I*X=
@
3<A68/KbC54E8@v0-($
@A72H	97* + +G-#D$8N.$>&	#<.=>> P PF
,6
4
L$     
2-
/0ON,A<=0\	Z?3
1,d<O1600:M,
7R
H08&5
 F FK"K
FE,P<O
l6&7M;
:;	3N , ,P
rP   