
    sg                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZWmXZX ej                  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. Zld/ Zmd0 Znd1 Zod2 Zpd3 Zqd4 Zrd5 Zsd6 Ztd7 Zud8 Zvd9 Zwd: Zxd; Zyd< Zzd= Z{d> Z|d? Z}d@ Z~dA ZdB ZdC ZdD ZdE ZeOdF        ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZeOdR        ZdS ZdT ZdU ZdV ZdW ZdX ZeOdY        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 Zdu Zdv ZeOdw        Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeOd        Zd Zd 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)cartes)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rD      FrD   rD   c                  $    t        t               S N)r.   r>   intss   M/var/www/html/venv/lib/python3.12/site-packages/sympy/sets/tests/test_sets.py<lambda>ztest_imageset.<locals>.<lambda>0   s    hq$/     c                  8    t        t        t        t               S rL   )r.   r>   r?   r@   rM   s   rO   rP   ztest_imageset.<locals>.<lambda>1   s    x1a6 rQ   c                  X    t        t        t        t        t                    t              S rL   )r.   r   r>   r   r?    rQ   rO   rP   ztest_imageset.<locals>.<lambda>2   s    xq#a&(91= rQ   c                  B    t        t        t        t                      S rL   )r.   r   r>   rM   s   rO   rP   ztest_imageset.<locals>.<lambda>4   s    xq!dDA rQ   c                     t        |       S rL   r   r>   s    rO   fztest_imageset.<locals>.f6   s    1vrQ   c                     t        |       S rL   rW   rX   s    rO   rP   ztest_imageset.<locals>.<lambda>9   s
    #a& rQ   r>   integerc                     | z   S rL   rT   )r>   clashs    rO   rP   ztest_imageset.<locals>.<lambda>?   s    1u9 rQ   )zx0 + xzx + x0zx1, x2c                     t        | |      S rL   r   r>   r?   s     rO   rP   ztest_imageset.<locals>.<lambda>B   s    Aq	 rQ   rI      )r   Integersr.   r>   Naturals	Naturals0absr   Reals	_containsr   r:   	TypeError
ValueErrorr   r?   r   r#   r'   r@   r   r   strr)   lamdaexprdummy_eq)rE   rY   x1x2r^   rN   s       @@rO   test_imagesetrq   !   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)) ) )rQ   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   rd   re   rc   	Rationalsrg   UniversalSetis_emptyEmptySetss    rO   test_is_emptyry   H   se    jj!++qzz1;;NN #zzU"""# ::$&&&rQ   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 )NFTrD   rI   r   rb   )r   rd   re   rc   rs   rg   rt   is_finite_setrv   r'   r)   r>   r?   r*   r-   r(   r%   r&   rw   s    rO   test_is_finitesetr}   P   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WrQ   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NrD   )r<   r   rv   is_EmptySetr'   rT   rQ   rO   test_deprecated_is_EmptySetr   k   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   FTrD   rb   apositivec                  6    t        dt        j                        S Nr   )r)   r   ImaginaryUnitrT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    x1??; rQ   c                  0    t        dt        dd            S )Nr   r@   Fextended_real)r)   r   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    x6#U+KL rQ   c                  L    t        t        t        t        j                  z         S rL   )r)   r>   r   r   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    x1q+>? rQ   c                  @    t        ddt        t        t                    S Nr   rD   r)   r7   r>   r?   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    As1ay(A rQ   c            	      B    t        dddt        t        t                    S Nr   rD   Fr   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    Auc!Qi(H rQ   c            	      J    t        ddt        t        t        t                    S r   )r)   r@   r7   r>   r?   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    Aq#a)(D rQ   )r)   r   
right_openr   	left_openr   rv   r>   
isinstancer'   r   measurer   r:   rj   NotImplementedError)es    rO   test_interval_argumentsr   s   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ErQ   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   TrF   r   rb   rD   )	r   r-   r)   supr   infr   containsr6   r   s    rO   !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7rQ   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, yrE   TrF   pr   rB   )negativenn)nonnegativerD   rI   Frb   r   r   r   )r   r   r)   ru   r   )r>   r?   rE   r   rB   r   s         rO   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<<<rQ   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 )NrD   rI   rb   T   Fr   
         ?r>   hameggsr?   r@      c                      t        ddd      S )NrD   rI   rb   r-   rT   rQ   rO   rP   ztest_union.<locals>.<lambda>   s    eAq!n rQ   )r-   r)   r   rv   ranger'   r   r1   unionr+   	intersect	is_subsetr:   ri   is_iterabler   r   rg   rc   )rB   r>   r?   r@   XYXandYs          rO   
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 )Nrb   r   r   Fevaluate)r   r   r   rD   rD   rD   rI   rI   rI   rb   rb   r   )r-   r$   list)us    rO   test_union_iterr     s3    eAha%(U;A 7::::rQ   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 )NrD   F)r)   r>   r?   r'   ru   rT   rQ   rO   test_union_is_emptyr     sL    QNYq\)33u<<<QNXqb!_,66$>>>rQ   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 )NrD   rb   rI   TFr   r   r   r   r   r   )r)   r'   r-   r   rg   r   RopenLopenr>   r?   r%   openr   rv   rd   rT   rQ   rO   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::%%%%rQ   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 )NrD   rb   r   rI   Fr   Tc                  ,    t        t         d       S NFr   )r'   r%   ACs   rO   rP   z!test_Complement.<locals>.<lambda>>  s    iAq5)IJ rQ   r   r   r   r   za:czd:f)r'   r)   r%   r   r:   ri   r-   r   rg   rd   rc   rt   rv   
complementr   r   r(   r>   r?   r   r1   r*   )BDA2B3r   r   s       @@rO   test_Complementr   2  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==rQ   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 rL   rT   r   bs     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>f  
    QU rQ   c                     | |z
  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>g  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>h  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>i  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>j  s
    Q!V rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>k  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>l  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>m  r   rQ   rD   rI   r   c                              S rL   rT   niopsis   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>      2b": rQ   c                              S rL   rT   r   s   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>  r   rQ   c                       t               z  S rL   )objectr   s   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>  s    ". rQ   c                       dhz  S r   rT   r   s   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>  s    ") rQ   N)r'   r>   r?   r)   r-   r(   r%   r*   r   rv   r:   ri   )opsSxSysetsnumsr   r   r   s        @@@rO   test_set_operations_nonsetsr   c  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+,-rQ   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 )NrD   rI   r   TFrb   r   r   c              3   &   K   | ]  }|v  
 y wrL   rT   .0ptsquares     rO   	<genexpr>z"test_complement.<locals>.<genexpr>  s     IrV|I   )r   r         ?r   rD   r   rJ   c              3   &   K   | ]  }|v  
 y wrL   rT   r   r   	notsquares     rO   r   z"test_complement.<locals>.<genexpr>  s      FiFr   c              3   &   K   | ]  }|v  
 y wrL   rT   r   s     rO   r   z"test_complement.<locals>.<genexpr>  s     IB2<Ir   ))r   r   )      ?r   )r   r   c              3   &   K   | ]  }|v  
 y wrL   rT   r   s     rO   r   z"test_complement.<locals>.<genexpr>  s     H2rYHr   )r%   r)   r   r   rg   r-   r   rt   rv   r'   NegativeInfinityInfinityr>   allany)r  r   s   @@rO   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HrQ   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 t        dt        d      z  dz         }t        d      t        d	      z   }t        |d      j	                  t        |d            t        |d      k(  sJ t        d|      j	                  t        d|            t        d|      k(  sJ y )Nc              3   ^   K   | ]%  }t         j                  j                  |      |u  ' y wrL   )r   rc   intersectionr   is     rO   r   z"test_intersect1.<locals>.<genexpr>  s(      #1qzz&&q)Q. #   +-c              3   ^   K   | ]%  }|j                  t        j                        |u  ' y wrL   )r  r   rc   r  s     rO   r   z"test_intersect1.<locals>.<genexpr>  s&      #1q~~ajj)Q. #r  r>   r   rI   rD   TFrb   r   r   r   r      r   zm, nrF   )r  r   rd   re   r  r   r)   r   r-   r'   rv   r(   r?   r   rg   r   )rx   r>   rA   rB   r   r   s         rO   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-. . . 	QtAwY]AQ$q'AAq>&&x1~6(1a.HHHAq>&&x1~6(1a.HHHrQ   c                  "   t         t         t         ft         t         j                  t         j                  ft         t         j                  t         j                  ft         t         j                  t         j                  ft         j                  t         j                  t         j                  ft         j                  t         j                  t         j                  ft         j                  t         j                  t         j                  ft         j                  t         j                  t         j                  ft         j                  t         j                  t         j                  ft         j                  t         j                  t         j                  fg
} d }| D ]u  \  }}}||f||ffD ]d  \  }}t	        ddgddgddgddg      D ]F  \  }}}	}
 |||	      } |||
      } | |||       ||	|
            }|j                  |      |k(  rFJ  f w y )Nc                 *    t        |t              r|S | S rL   )r   float)a1a2s     rO   rP   z2test_intersection_interval_float.<locals>.<lambda>  s    Jr5$9b r rQ   rI   g       @rb   g      @)r)   r   r   r   r=   r   )typsas_floatt1t2t3t1it2ir  r  b1b2I1I2I3s                 rO    test_intersection_interval_floatr$    s   
 
8X&	8==(--0	8>>8>>2	8>>8>>2	x}}5	6	6	8	7	8D BH .
BbB8, 	.HC"(!SAs8aX3x"P .BBBZBZR((2r*:;||B'2---	.	..rQ   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 )NrD   rI   rb   r   Fr   r>   TrF   r   r  c                      d v S NrI   rT   r  s   rO   rP   z#test_intersection.<locals>.<lambda>%      a1f rQ   rI   rI   )rI   rI   rI   c                      t               S rL   )r   r(  s   rO   rP   z#test_intersection.<locals>.<lambda>0  s    d1g rQ   )r(   r'   r)   r   setr   r   r:   ri   rv   r   rc   rd   rg   _argset	frozenset	ComplexesComplexInfinityrt   )r>   liner   r  s      @rO   test_intersectionr2    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*@@@@rQ   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 )NrB   r   rD   rI   rb   r   )r   r   rg   r)   r   r'   r(   rv   )rB   r   r   cs       rO   test_issue_9623r5  >  sm    sA	ABA!A1a LA$6666AA	!EQQQrQ   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   rI   rD   Frb   r   T)r)   is_disjointrT   rQ   rO   test_is_disjointr8  I  sL    Aq>%%hq!n5>>>Aq>%%hq!n5===rQ   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 )NrD   rI   rb   r  )r'   r*   __len__r   r   r   s     rO   test_ProductSet__len__r<  N  s    !QA!QAa=  "a'''a=  "!A$...a##%***a##%QqT111rQ   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        j                        t/        t         t        j                        z  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)NrD   rI   rb   )rD   rH   rD   rI   rb   )rH   rb   )rD   )rI   rb   rT   r   c                  (    t         j                  dz  S )Nr   )r   rg   rT   rQ   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    qww{ rQ   c              3   2   K   | ]  }t        |        y wrL   r'   r   rx   s     rO   r   z"test_ProductSet.<locals>.<genexpr>  s     2A9Q<2s   c                      t        d       S rL   )r*   rT   rQ   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    j. rQ   r   c                  .     j                  t              S rL   as_relationalr>   S3s   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    r//2 rQ   c                  0     j                  t        d      S r   rE  rG  s   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    r//15 rQ   c                  \    t        t        dd            j                  t        t              S r   )r*   r)   rF  r>   r?   rT   rQ   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    z(1a.9GG1M rQ   Fr   )r*   r   rg   flattenr   r'   rv   r   rc   r   r:   rj   r<   ri   rF  r>   r?   r7   r8   r2   r   r   r   r"   subsr1   )	r   RnS1S2ro   rp   x3Z2rH  s	           @rO   test_ProductSetrR  W  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(1ajj"9HQ

<S"SSSSX1vr***FB166)))-3 3s   ;a  a*c            	          t        t        t        dd            sJ t        t        t        t        dd                  sJ y r   )r1   r*   r)   rT   rQ   rO   (test_ProductSet_of_single_arg_is_not_argrT    s3    Z!Q000ZHQN!;<<<rQ   c                      t        t        j                  t        j                        j                  dk(  sJ t        t        t        d      t        j                        j                  d k(  sJ y )NFrD   )r*   r   rc   rg   ru   r)   r>   rT   rQ   rO   test_ProductSet_is_emptyrV    sJ    ajj!''*33u<<<hq!nagg.774???rQ   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   TrF   r   rI   )r   r)   rL  r   rv   r   s    rO   test_interval_subsrX    sZ    sAAq>q!$A666Aq>q!$

222rQ   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   rD   TF)r)   to_mpir0   typerT   rQ   rO   test_interval_to_mpir\    sy    Aq>  "c!Qi///Aq$&--/3q!9<<<A%%'(DQO;;;rQ   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   rI   z2.0)r)   r   Halfevalfr
   r>   r   r'   rT   rQ   rO   test_set_evalfrb    s    AbE"Haff%++-j5<2) ) ) )Aqvv$/5578	5<D<* * * *RC &&(HbS%,,GGGGQ?  "iea&@@@@rQ   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   TrF   rD   rb   rI   r   r   r   r     r{   r      d      K      )
r   r)   r   r-   r'   r   r   rv   r   r   )r   r   offsetsquarebands       rO   test_measurerl    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5rQ   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   rD   rI   Trb   Fr   r   r  c                  @    t         j                  j                  d      S r   )r   rv   r   rT   rQ   rO   rP   z test_is_subset.<locals>.<lambda>  s    qzz33A6 rQ   r   r_   rB   r[   r   r   r   rf  r   )r)   r   r'   r-   r   rv   r:   rj   issubsetrd   rc   re   r>   r?   rL  r   r   r$   r.   r   rg   rB   s    rO   test_is_subsetrq    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JrQ   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   rD   rI   Trb   Fc                  8    t        dd      j                  d      S r   )r)   is_proper_subsetrT   rQ   rO   rP   z'test_is_proper_subset.<locals>.<lambda>  s    x1~>>qA rQ   )r)   rt  r   rv   r'   r:   rj   rT   rQ   rO   test_is_proper_subsetru    s}    Aq>**8Aq>:dBBBAq>**8Aq>:eCCC::&&yAq'9:dBBB
:ABrQ   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   rD   rI   Frb   r   r   Tc                  @    t         j                  j                  d      S r   )r   rv   is_supersetrT   rQ   rO   rP   z"test_is_superset.<locals>.<lambda>+  s    qzz55a8 rQ   )	r)   rx  r'   r-   r   rv   r:   rj   
issupersetrT   rQ   rO   test_is_supersetrz    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4rQ   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   rD   rI   Frb   Tc                  8    t        dd      j                  d      S r   )r)   is_proper_supersetrT   rQ   rO   rP   z)test_is_proper_superset.<locals>.<lambda>7  s    x1~@@C rQ   )r)   r}  r'   r   rv   r:   rj   rT   rQ   rO   test_is_proper_supersetr~  2  s}    Aq>,,Xa^<EEEAq>,,Xa^<DDDQ100<DDD
:CDrQ   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              t        t        t        d      k(  sJ t        t        d	        t        t        t        h      j                  t        h      t        t        t        ht        hd      k(  sJ t        t        t        h      j                  t        t              j                  t        h      t        j                  u sJ t        t        t        h      j                  t        t        dz         j                  t        h      t        j                  u sJ dd
lmm}  t        |       j                         t        |        k(  sJ t        |       j                        t        |       k(  sJ t              j                  d      t        d      k(  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        t/        t        dz  t        z   dz
  d            j                  t        j(                        t        j                  u sJ t/        t        dz  t        dz  z   dz   d      t        j0                  v sJ t/        t        dz  t        dz  z   dz   d      t        j0                  vsJ t-        t        dd      t        dd            j                  t              t3        t5        t        j6                  t        k  t        dk        t5        t        d      t        k  t        dk              k(  sJ t9        t        dt              t        dd            j                  t              t5        t        dk  t        t        k  t        j6                  t        k  t        d      t        k        k(  sJ t        j:                  j                  t        j<                        t        j                  k(  sJ y )Nr   rI   rD   rb   TFr>   r   c                  ,    t         t        t              v S rL   )r>   r'   r?   rT   rQ   rO   rP   ztest_contains.<locals>.<lambda>J  s    a9Q</ rQ   r   c                      dt               v S r   rA  r   s   rO   rP   ztest_contains.<locals>.<lambda>T  s    a9Q</ rQ   	   r   r   gc              3   &   K   | ]  }|v  
 y wrL   rT   r   itemfsets     rO   r   z test_contains.<locals>.<genexpr>_  s     .tt|.r   c              3   `   K   | ]%  }j                  |      t        j                  u  ' y wrL   )r   r   r   r  s     rO   r   z test_contains.<locals>.<genexpr>`  s#     ?t}}T"aff,?s   +.r   r  )r)   r   r   r   r   r'   r   r?   rh   r>   r2   r:   ri   rL  	sympy.abcr   r   r   r   rv   r  r  r-   r!   rg   r8   r7   Oner(   r/  r0  )r   rad1rad2s1s2itemsr   r  s         @@rO   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<!!!$1a%(@@@@
9/0aV&&s+r1a&1#/NNNNaV!!!Q'111#6!&&@@@aV!!!QqS)33QC8AGGCCC Q<  !$1qb	111Q<  #r!Qx///Q<  #r!Qx///
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???rQ   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   rD   c                       v S rL   rT   )r   r>   s   rO   rP   z(test_interval_symbolic.<locals>.<lambda>y  r)  rQ   Tr4  FrF   r   r   )r   r)   r   r7   r   Zeror:   ri   r   r  r  )r4  r   r>   s    @@rO   test_interval_symbolicr  u  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 0rQ   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   rD   rI   rb   c                       v S rL   rT   )i3r>   s   rO   rP   z%test_union_contains.<locals>.<lambda>  s    a2g rQ   g      r   r  g      @g      @Tr   r   r   r  c              3   &   K   | ]  }|v 
 y wrL   rT   r   elUs     rO   r   z&test_union_contains.<locals>.<genexpr>  s     1rr{1r   r   c              3   &   K   | ]  }|v  
 y wrL   rT   r  s     rO   r   z&test_union_contains.<locals>.<genexpr>  s     ,2rQw,r   )rI   r   r   )r   r)   r-   rF  r8   r7   r   r  r:   ri   r   rL  r   r   r   r'   r  )i1i2r   r  r  r>   s      @@@rO   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,,,,,rQ   c                  h    t        dd      j                  du sJ t               j                  du sJ y r   )r)   	is_numberr+   rT   rQ   rO   test_is_numberr    s0    Aq>##u,,,5??e###rQ   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 )Nrb   r   FTz-inf)r)   is_left_unboundedr   r
   rT   rQ   rO   test_Interval_is_left_unboundedr    sX    Aq>++u444RC--555E&M1%774???rQ   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 )Nrb   r   FTz+inf)r)   is_right_unboundedr   r
   rT   rQ   rO    test_Interval_is_right_unboundedr    sU    Aq>,,555Ar?--555AuV}%88D@@@rQ   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   rI   FTr   r_   r   rF   r?   )r   r)   rF  r7   r4   r5   r   ra   s     rO   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6rQ   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?   rD   rI   r{   )r   r'   rF  r8   r2   ra   s     rO   test_Finite_as_relationalr    sy    sAsAQ?((+r"Q(Bq!H/EEEEQ))!,2a8R2Y0GGGGrQ   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   rD   rI   Trb   r   )r   r)   r'   rF  r8   r7   r4   r2   r5   as_setr   r3   r   r   rX   s    rO   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 9rQ   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   rD   rI   Fr   )r   r(   r)   r'   rF  r7   r4   r2   rX   s    rO   test_Intersection_as_relationalr    s`    sA!Q1)M!,3r!QxAq*Bq!H56 7 6rQ   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'   rF  r7   r4   r3   r>   rm   s     rO   test_Complement_as_relationalr    s^    sAhq!nilUCDa Bq!HbAh1a)* * *rQ   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'   rF  r3   r  s     rO   "test_Complement_as_relational_failr    s]    sAhq!nilUCD a !VQ"Q(*+ + +rQ   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'   rF  r9   r2   r4   r  s     rO   &test_SymmetricDifference_as_relationalr    sZ    sAx1~y|eLDa C1a"Q(R1X2E$FFFFrQ   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   rv   rF  r   r   r   rt   boundaryrT   rQ   rO   test_EmptySetr    sh    ::##F3K0AGG;;;::/1::===::!**,,,rQ   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>   rD   rI   rb   r   r   r>  rH   r{   r   F)r   r'   r-   r   r   r   r   r   r   r   rv   )r>   r   r   AorBAandBs        rO   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""rQ   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   rD   rI   rb   r   r   r  r   )r   r   r   )r   r   Tr{   r   r   g?r      c                  4    t         t        dd      z        S )Nr   rI   )lenr)   )coins   rO   rP   z$test_product_basic.<locals>.<lambda>?  s    c$x1~"56 rQ   )r)   r'   rK  r   r,  r   r   r   r-   r  r   rv   r:   ri   )	r  r  	unit_lined6d4r   HHTTr  s	           @rO   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7rQ   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>   TrF   r   r   r   ri  rD   rI      rf  HamEggsc              3   Z   K   | ]#  }|j                  t        j                         % y wrL   r   r   rg   rB  s     rO   r   ztest_real.<locals>.<genexpr>L  s     =q{{177#=s   )+c              3   z   K   | ]2  }fD ]&  }||z   j                  t        j                         ( 4 y wrL   r  )r   r   r   r   r   r   r   Js      rO   r   ztest_real.<locals>.<genexpr>N  s?     \aQPQSTVWYZO\qA  )\)\s   8;c              3   b   K   | ]&  }|z   j                  t        j                         ( y wrL   r  )r   r   r   s     rO   r   ztest_real.<locals>.<genexpr>O  s$     J!AE$$QWW-Js   ,/)	r   r)   r'   r   Pir  r   rg   r  )r>   r   r   r   r   r   r  s    @@@@@@rO   	test_realr  B  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----rQ   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>   TrF   r?   r   rD   rI   r   r  r  )
r   r)   r'   r   r   r   r   r   r  r  ra   s     rO   test_supinfr  T  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+====rQ   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>   rI   r   r   )r   rt   r   rF  r   r   r)   r   r   r  r  rv   r   r  r>   s     rO   test_universalsetr  g  s    	AsA??1'''778Aq>"a''';;x1~&(1a.88899

"""::###::a=AFF"""rQ   c                  j    t        dd      } t        ddd      }t        | | z  | |z        | | z  k(  sJ y )Nr   rI   rD   )r)   r'   r-   )r1  pointss     rO    test_Union_of_ProductSets_sharesr  s  s<    Aq>Dq!QFdVm,t;;;rQ   c                      t        dd      j                  t               k(  sJ t        dd      } t        d|       j                  | hk(  sJ y )Nr   rD   r>   TrF   )r)   free_symbolsr,  r   rX   s    rO   test_Interval_free_symbolsr  y  sF    Aq>&&#%///sAAq>&&1#---rQ   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>   TrF   r   rI   r_   rD   r  Fr   r   rb      N   Z   ic                     d| z  S r'  rT   rX   s    rO   rP   z%test_image_interval.<locals>.<lambda>  s
    ac rQ   )	r   r.   r)   r   r   r   r#   r   r   )r>   r   s     rO   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^<= = =rQ   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   rD   rI   r   rb   Tr   )rI   Tr{      )r   r>   r.   r)   r-   r   r   r'   )rY   f1s     rO   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===rQ   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>   TrF   r?   rI   r_   r   r   )r   r.   r)   r   r   r   ra   s     rO   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rQ   c            	      t    t        dd      } t        | d| z  t        ddd            t        ddd      k(  sJ y )	Nr>   TrF   rI   rD   rb   r   r  )r   r.   r'   rX   s    rO   test_image_FiniteSetr    s;    sAAqsIaA./9Q13EEEErQ   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>   TrF   rI   r_   r   rD   rb   r   r  )r   r.   r)   r'   rX   s    rO   test_image_Unionr    sS    sAAq!tXb!_yAq/AABa^il*, , ,rQ   c                      t        dd      } t        | d| z  t        j                        t        j                  k(  sJ y )Nr>   TrF   rI   )r   r.   r   rv   rX   s    rO   test_image_EmptySetr    s1    sAAqsAJJ'1::555rQ   c                      t         t        j                  vsJ t        t         t              j                  t               t        j                  u sJ y rL   )r   r   rg   r)   r   r   r   rT   rQ   rO   test_issue_5724_7680r    s:    AGGRC%%a(AGG333rQ   c                      t        d      j                  t        d      k(  sJ t        d t        t        fD              sJ y )NrD   c              3      K   | ]:  }t         t        fD ])  }t        d d||      j                  t	        d d      k(   + < yw)r   rD   N)r   r   r)   r  r'   )r   r   r   s      rO   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   rT   rQ   rO   test_boundaryr    sF    Q<  IaL000 L"E]L L L LrQ   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   rD   rI   rb   FTr   r   re  r   )r)   r  r'   r-   rT   rQ   rO   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#$ $ $rQ   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   re  Fr   N)r-   r)   r  r'   rT   rQ   rO   #test_union_boundary_of_joining_setsr    s<     !R(2r"2UCLLB     rQ   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   rD   TrI   )r)   r  r'   )open_squaresecond_squares     rO   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 2rQ   c                  V    t        dd      t        d      z  } | j                  | k(  sJ y r   )r)   r'   r  )
line_in_r2s    rO   test_boundary_ProductSet_liner    s*    !Q)A,.J*,,,rQ   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   rD   FTrI   rb   )r)   is_openr'   rT   rQ   rO   test_is_openr	    s|    Aq%'//5888Aq$&..%777Aq$%--555Q1%%...rQ   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'   rT   rQ   rO   test_is_closedr    s]    Aq%'11T999Aq$&00E999Q1''4///rQ   c                  V    t        dddd      j                  t        dddd      k(  sJ y Nr   rD   FT)r)   closurerT   rQ   rO   test_closurer    s,    Aq%&..(1a2NNNNrQ   c                  V    t        dddd      j                  t        dddd      k(  sJ y r  )r)   interiorrT   rQ   rO   test_interiorr    s,    Aq%&//8Aq$3MMMMrQ   c                  &    t        t        d        y )Nc                  .    t         t        j                  v S rL   )r>   r   rg   rT   rQ   rO   rP   z!test_issue_7841.<locals>.<lambda>  s    a177l rQ   )r:   ri   rT   rQ   rO   test_issue_7841r    s    
9*+rQ   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   rD   rI   FrT   )r2   r)   r'   r1   r>   r?   rL  r   r   r   r*   )r  r  r  r  s       rO   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-?@@@rQ   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   rD   rI   rb   r   r   r  r  r   Fr   Tc                  ,    t        t         d       S r   )r'   r,   r   s   rO   rP   z*test_SymmetricDifference.<locals>.<lambda>3  s    	.q!eDE rQ   )	r'   r)   r,   r   r:   ri   r+   r   r-   r   r   r   s    @@rO   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^;/= = = =rQ   c            	          ddl m}  t        dd      }t         | |            j	                  t
        j                        t        t
        j                  t         | |                  k(  sJ y )Nr   )logr   TrF   )&sympy.functions.elementary.exponentialr  r   r'   r   r   rg   r(   )r  r   s     rO   test_issue_9536r   A  sN    :sASV&&qww/<SVWXSYIZ3[[[[rQ   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 )NrB   rI   Fr   rD   rb   T)r   r'   r%   r   rg   r)   r-   )rB   r   r   s      rO   test_issue_9637r"  G  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YrQ   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 )NrD   Fr   rI   rb   )r%   r'   r?   r>   rT   rQ   rO   test_issue_9808r$  S  ss    ilIaL1Z	!iXYlej5kkkki1a()Aq!Q*?@9Q<1>? ? ?rQ   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   rT   rQ   rO   test_issue_9956r&  Z  sS    2#r"IaL1Xrc25FFFFRC%%a(AFF222rQ   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   rD   rI   rb   Fr   )r)   r   r   rg   r    r(   r'   rA   rB   r>   r@   r   r   )r  rE   mats      rO   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 1rQ   c                  .    t         j                  dz  sJ y )Nr   )r   re   rT   rQ   rO   test_issue_11827r+  u  s    ;;>>rQ   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 )
NrI   r   r   rD   Tr_   rb   r  r   )r>   r.   r   rg   r-   r)   r   r   rY   s    rO   test_issue_10113r.  y  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crQ   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 rL   )r   r(   r   rg   r'   r>   rT   rQ   rO   rP   z"test_issue_10248.<locals>.<lambda>  s    4QWWil CD rQ   r   TrF   )r:   ri   r   r   r(   r   rg   r'   )r   s    rO   test_issue_10248r1    sB    
D 	sAQWWil34;;;rQ   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   rD   rI   rb   Fr   )r)   r%   r   rt   r-   rd   r   s    rO   test_issue_9447r3    s    A!Q'Aanna(JNNE(1a.(1a.AE-S S S Sajj!$
JJhq!nhq!n=)O O O OrQ   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 )	NrI   rb   FTc                      t        d      dk  S NrI   rb   rA  rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>      ilQ. rQ   c                      t        d      dk  S r6  rA  rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>      ila/ rQ   c                      t        d      dkD  S r6  rA  rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>  r7  rQ   c                      t        d      dk\  S r6  rA  rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>  r9  rQ   )r'   r:   ri   rT   rQ   rO   test_issue_10337r<    s\    aLA%'''aLA$&&&
9./
9/0
9./
9/0rQ   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 )NrD   rI   r   r   r>   TrF   nrFr   r   )rv   r'   r)   r   r0  r   r  NaNr  r   r   r   r   )badintervalr  r>   r>  s        rO   test_issue_10326rB    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5rQ   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   TrF   )r   rt   r   r)   r   rg   )r  r   inf_intervalRs       rO   test_issue_2799rF    so    	AsAAr?L	A||a////q5AE>>||a////rQ   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  rT   rQ   rO   test_issue_9706rH    sw    RC##xQe'DDDDAr?""hq"eT&BBBBRC$$"b(9999rQ   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 rL   )r-   r)   r   r'   )reals_plus_infinityreals_plus_negativeinfinitys     rO   test_issue_8257rL    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LrQ   c                      t         j                  t         j                  z
  t        k(  sJ t         j                  t         j                  z
  t        k(  sJ y rL   )r   rc   rv   rg   rT   rQ   rO   test_issue_10931rN    s8    ::

"h...::8+++rQ   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   rg   )solns    rO   test_issue_11174rQ    sq    "b)9aR=5ID	1"qww/47771>D	!agg.$666rQ   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 )NrI   rD   r   )	r#   r   rB   r   r   r   rc   r   r"   rT   rQ   rO   test_issue_18505rS    s    F1d2a46A:1#456

CLLQOQ41Q
RT0A+B!CQZZPQR R RrQ   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   rI   rb   rD   Fr   )r(   r'   r   r>   _handle_finite_setsr?   rT   rQ   rO   test_finite_set_intersectionrV    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rQ   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 )
NrD   rI   c                      t               S rL   r   r   s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    eDk rQ   c                      t               S rL   r(   rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    l40 rQ   c                  ,    t        t                     S rL   )r-   tuplerY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    eE$K0 rQ   c                  ,    t        t                     S rL   )r(   r]  rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    l5;7 rQ   c                  (    t        d  D              S )Nc              3       K   | ]  }|  y wrL   rT   r  s     rO   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s     #4!A#4   r   rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    e#4t#44 rQ   c                  (    t        d  D              S )Nc              3       K   | ]  }|  y wrL   rT   r  s     rO   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s     *;1*;ra  r[  rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    l*;d*;; rQ   rb   )r'   r:   	Exceptionr-   r,  r(   rY  s   @rO   #test_union_intersection_constructorre    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7rQ   c                      t         t        t        j                  t         d      t        j                  dt                    vsJ y r   )r   r-   r)   r   r   rT   rQ   rO   test_Union_containsrg    s8    erc1x}}Q35 5 5 5rQ   c                      t        t        t        t        ft        j                        j	                  t        j                  dz        du sJ y )NrI   T)r.   r>   r   rg   r   rT   rQ   rO   test_issue_16878bri    s6    
 A1vqww'11!''1*=EEErQ   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 )NrD   rI   rb   r   r   r   r   c                  *    t        t        d            S )NrB   )r&   r   rT   rQ   rO   rP   z$test_DisjointUnion.<locals>.<lambda>  s    mF3K8 rQ   r>   r?   r@   )r&   r'   rewriter-   r)   r   rv   r   r:   ri   r   )r>   r?   r@   s      rO   test_DisjointUnionrm    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rQ   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 )NTrD   rI   rb   F)r&   r   rv   ru   r'   rT   rQ   rO   test_DisjointUnion_is_emptyro  %  sj    $--555QZZ099TAAAYq!Q%78AAUJJJrQ   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 )NTFrD   rI   rb   )r&   r   rc   rd   rs   r   rv   rg   r'   r>   r?   rT   rQ   rO   test_DisjointUnion_is_iterablerq  *  s    QZZ=IITQQQQWW-99UBBB1a+QZZ1aIUUY]]]]QZZ0<<EEErQ   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   rD   rI   )r   rD   )r   rI   r   rJ   rH   )rI   r   rI   rD   r*  )r   rD   rI   )r   r   r   )r   r   )r   r   )r   rD   )r  r   )r  rD   )r&   r'   r>   r?   r@   r   rv   r)   rT   rQ   rO   test_DisjointUnion_containsrt  0  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DrQ   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 )	Nrb   r   rd  r  rD   ))rb   r   )r   r   )rd  r   )r  r   c                      t               S rL   )next)its   rO   rP   z)test_DisjointUnion_iter.<locals>.<lambda>`  s    $r( rQ   c                  \    t        t        t        dd      t        j                              S r   )iterr&   r)   r   rv   rT   rQ   rO   rP   z)test_DisjointUnion_iter.<locals>.<lambda>b  s    tM(1a.!**$MN rQ   )r&   r'   r>   r?   r@   rz  rw  remover:   StopIterationrj   )r   L1L2nxtrx  s       @rO   test_DisjointUnion_iterr  F  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OrQ   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 )Nrb   r   rd  r  c                  \    t        t        t        dd      t        j                              S r   )r  r&   r)   r   rv   rT   rQ   rO   rP   z(test_DisjointUnion_len.<locals>.<lambda>g  s    s=!Q#LM rQ   )
r  r&   r'   r>   r?   r@   r   rv   r:   rj   rT   rQ   rO   test_DisjointUnion_lenr  d  so    }Yq!Q2IaA4FGHAMMM}QZZYq!Q5GTUYZZZZ
:MNrQ   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 NrD   rI   )	r*   r'   r    r   r   r/   r   kindr)   )r   mkks      rO   test_SetKind_ProductSetr  i  s    9VQF^,i1v.GHA	J	B	"b!"A66Q;;hq!ni1v&?@EEQZ[egiQjIkkkkrQ   c                  R    t        dd      j                  t        t              u sJ y r  )r)   r  r/   r   rT   rQ   rO   test_SetKind_Intervalr  p  s!    Aq>'*"5555rQ   c                      t         j                  j                  t        t              u sJ t
        j                  t               u sJ y rL   )r   rt   r  r/   r	   rv   rT   rQ   rO   "test_SetKind_EmptySet_UniversalSetr  s  s3    >>'-"8888==GI%%%rQ   c                      t        dt        ddg            j                  t        t              u sJ t        dd      j                  t        t
              u sJ y r  )r'   r    r  r/   r	   r   rT   rQ   rO   test_SetKind_FiniteSetr  w  sI    Q1v',,0FFFFQ?7:#6666rQ   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 )NrD   rI   rd  )r-   r'   r    r)   r  r/   r	   r   rT   rQ   rO   test_SetKind_Unionsr  {  sa    61a&>*HQN;@@GMDZZZZ!Q!Q0559LLLLrQ   c                      t        ddd      } t        dd      }t        | |      j                  t	        t
              u sJ y )NrD   rI   rb   r   r   )r'   r)   r&   r  r/   r   r;  s     rO   test_SetKind_DisjointUnionr    s;    !QAAAA##wz'::::rQ   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    rO   rP   z-test_SetKind_evaluate_False.<locals>.<lambda>  s    eT2E2 rQ   rD   rI   r   r   c                      t        | ddiS r  r[  r  s    rO   rP   z-test_SetKind_evaluate_False.<locals>.<lambda>  s    lD959 rQ   c                      t        | ddiS r  )r%   r  s    rO   rP   z-test_SetKind_evaluate_False.<locals>.<lambda>  s    j$77 rQ   >   rD   rI   r   r   >   rD   rI   rb   r   r   )	rv   r  r/   r   r)   r   rt   r	   r'   )r  r   r   s      rO   test_SetKind_evaluate_Falser    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9rQ   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 )NrI   rD   r   rb         )r#   r   rB   r)   r'   r  r/   r   r-  s    rO   test_SetKind_ImageSet_Specialr    s    16"HQN3A	!""gj&9999R  &&'**====	"##wz'::::rQ   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 )NrD   rI   r   )r'   r2   ro  r  s      rO   test_issue_20089r    s    )Aq/9Q<0AA::a<<!Yq!_%%%Q<1!QA6M6::a==zz!}6M6)Aq/9Q<A6A::a==::a==rQ   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 )	NrD   rI   rJ   rH   rs  r*  TF)	r'   r*   r   r2   simplifyr   r   r   r>   )r   r   r4  ds       rO   test_issue_19378r    s    !QA1aA&&&&1A;;q>T!!!!A;;q>U"""a8!&&(((a8!'')))qcA3<  "b!qcl222rQ   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 )NrB   rf  rD   )r   r   r(   r$   r)   rp  s    rO   test_intersection_symbolicr    sm    sAl58U3Z8,GGGl58Xa-=>MMMl5:x1~>MMMrQ   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 )	NrB   T)r\   r   r   r   i  r      )r   r(   r$   r)   rp  s    rO   "test_intersection_symbolic_failingr    s    sD40Ab!eAsA&67<b!eBQ'<) ) ) )Qq#q)9:lQr3*?, , , ,rQ   c                  z    t         dz
  } t        |       j                  d      t        t        dd            k(  sJ y )Ng-DT!	@rI   z3.23108914886517e-15)r   r'   ra  r
   rX   s    rO   test_issue_20379r    s7    
AQ<a Ie4JA.N$OOOOrQ   c                      t        dt        d      dz  t        d      dz  z         }  | j                         dhk(  sJ y r  )r'   r   r   r  r   s    rO   test_finiteset_simplifyr    s;    !SVQYQ*+A1::<A3rQ   c                      t         j                  } t        d      }| | j                  t	        |d      j                               z  } | | j                  t         j                  j                               z  } y )Nr>   rD   )r   r/  r   r   r3   r  r   r  s     rO   test_issue_14336r    sQ    	AsAR1X__&	''AQVV]]_	%%ArQ   c                      t        dd      \  } }}t        d|       t        |d      z  }t        dd      }|j                  |      d k(  sJ y )Nzx, y, zTrF   rD   rI   )r   r)   r   )r>   r?   r@   r  r  s        rO   test_issue_9855r    sL    id+GAq!	!Q(1a.	(B	!QB<<t###rQ   N)sympy.concrete.summationsr   sympy.core.addr   sympy.core.containersr   sympy.core.functionr   sympy.core.kindr   r	   sympy.core.numbersr
   r   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.elementary.miscellaneousr   r   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   sympy.logic.boolalgr   r   sympy.matrices.kindr   sympy.matrices.denser    sympy.polys.rootoftoolsr!   sympy.sets.containsr"   sympy.sets.fancysetsr#   r$   sympy.sets.setsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   mpmathr0   sympy.core.exprr1   sympy.core.relationalr2   r3   r4   r5   r6   sympy.logicr7   r8   r9   sympy.testing.pytestr:   r;   r<   sympy.utilities.iterablesr=   r  r>   r?   r@   rA   rB   rv   rq   ry   r}   r   r   r   r   r   r   r   r   r   r   r	  r  r$  r2  r5  r8  r<  rR  rT  rV  rX  r\  rb  rl  rq  ru  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r   r"  r$  r&  r)  r+  r.  r1  r3  r<  rB  rF  rH  rL  rN  rQ  rS  rV  re  rg  ri  rm  ro  rq  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rT   rQ   rO   <module>r     sH   )  + & 5 E E E   " / & E E : ? - * ' * ( 2 [  [  [  [  % : : $ $ F F , # #::$)N'X6!!FH8=6I1X;?
&<.b"-J.IbCIL.8 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
&$rQ   