
    Riec                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZRmSZSmTZTmUZUmVZV ejW        ZWd ZXd ZYd ZZd Z[d Z\d  Z]d! Z^d" Z_d# Z`d$ Zad% Zbd& Zcd' Zdd( Zed) Zfd* Zgd+ Zhd, Zid- Zjd. Zkd/ Zld0 Zmd1 Znd2 Zod3 Zpd4 Zqd5 Zrd6 Zsd7 Ztd8 Zud9 Zvd: Zwd; Zxd< Zyd= Zzd> Z{d? Z|d@ Z}dA Z~dB ZdC ZeOdD             ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZeOdP             ZdQ ZdR ZdS ZdT ZdU ZdV ZeOdW             ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt ZeOdu             Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd ZeOd             Zd Zd ZdS )    )SumAdd)	TupleKind)Lambda)
NumberKindUndefinedKind)FloatIRationalnanoopizoo)PowS)Symbolsymbols)sympify)MaxMinsqrt)	Piecewise)cossin)falsetrue)
MatrixKind)Matrix)rootof)Contains)ImageSetRange)
ComplementDisjointUnion	FiniteSetIntersectionInterval
ProductSetSetSymmetricDifferenceUnionimagesetSetKind)mpi)	unchanged)EqNeLeLtLessThan)AndOrXor)raisesXFAILwarns_deprecated_sympy)xyzmnc            
      
   t           j        t          t          t          dz
  t           j                  t           j        u sJ t          t          t          dz   t           j                  t           j        u sJ t          t          t          t                    t           j                  t           j        u sJ t          t          t          t                    t           j                  t           j        u sJ t          t          t          t                    t           j                  t           j        u sJ t          dd          } t          t          t          t          ft           j                  	                    d| f          d k    sJ t          t          t          t          ft           j                  	                    d          dk    sJ | | ft          t          t          t          ft           j                  v sJ dt          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                    j        j                  dv sJ t          d          \  }}t          d t/          dd          t/          dd                                        t#          t          ||f||z             t/          dd          t/          dd                              sJ d S )N   rTrealrC      FrC   rC   c                  .    t          t                     S N)r.   r=   intss   :lib/python3.11/site-packages/sympy/sets/tests/test_sets.py<lambda>ztest_imageset.<locals>.<lambda>/   s    hq$//     c                  F    t          t          t          t                     S rK   )r.   r=   r>   r?   rL   s   rN   rO   ztest_imageset.<locals>.<lambda>0   s    x1a66 rP   c                  v    t          t          t          t          t                              t                    S rK   )r.   r   r=   r   r>    rP   rN   rO   ztest_imageset.<locals>.<lambda>1   s     xq#a&&(9(91== rP   c                  V    t          t          t          t                                S rK   )r.   r   r=   rL   s   rN   rO   ztest_imageset.<locals>.<lambda>3   s    xq!dDAA rP   c                      t          |           S rK   r   r=   s    rN   fztest_imageset.<locals>.f5   s    1vvrP   c                      t          |           S rK   rV   rW   s    rN   rO   ztest_imageset.<locals>.<lambda>8   s    #a&& rP   r=   integerc                     | z   S rK   rS   )r=   clashs    rN   rO   ztest_imageset.<locals>.<lambda>>   s    1u9 rP   )zx0 + xzx + x0zx1, x2c                 "    t          | |          S rK   r   r=   r>   s     rN   rO   ztest_imageset.<locals>.<lambda>A   s    Aq		 rP   rH      )r   Integersr.   r=   Naturals	Naturals0absr   Reals	_containsr   r:   	TypeError
ValueErrorr   r>   r   r#   r'   r?   r   r   strr)   lamdaexprdummy_eq)rD   rX   x1x2r]   rM   s       @@rN   test_imagesetrp       su   :DAq1uaj))Q[8888Aq1uak**aj8888As1vvq{++q{::::As1vvqz**aj8888As1vvqz**ak9999$AA1vqw''111a&99TAAAAA1vqw''11&99UBBBBq6Xa!Q111111q5HQAqw//////3hq1$000000!aT17333333
9////000
:6666777
:==>>>XfaVaV44dDAAAAAA
:AAAABBBC(6!SVV+<+<d"C"CCCCC  AtCFFD 9 99999AAt3q66):):D A AAAAAAq$9Q<<////Aq$A3&&&&QFQFD!'221vh>>>>3%%%E,,,,hr1oo>>DIJJ       XFB  Aq>>8Aq>>3 33;8R"r'**AA	( 	(4) 4)) ) ) ) )rP   c                      t           j        t           j        t           j        t           j        t           j        t           j        fD ]} | j        du sJ t           j        j        du sJ d S )NFT)	r   rc   rd   rb   	Rationalsrf   UniversalSetis_emptyEmptySetss    rN   test_is_emptyrx   G   s_    j!+qz1;N # #zU""""":$&&&&&&rP   c                  P   t           j        t           j        t           j        t           j        t           j        t           j        fD ]} | j        du s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 d S )NFTrC   rH   r   ra   )r   rc   rd   rb   rr   rf   rs   is_finite_setru   r'   r)   r=   r>   r*   r-   r(   r%   r&   rv   s    rN   test_is_finitesetr|   O   s/   j!+qz1;N ( (%''''':#t++++Q??(D0000Aq>>'50000Aq>>'///illIaLL11?4GGGGillHQNN33AUJJJJillHQNN33AIII!Q!Q00>%GGGG1x1~~..<EEEE1y||,,:dBBBB1x1~~..<DDDA	!55CtKKKKAA77EMMM	!ill33ATIIIIillHQNN33ATIIIIhq!nnill33AIIIhq!nnill33AUJJJJ"a)Aq//::HEQQQQYq!__ajAAOSWWWWWWWrP   c                      t                      5  t          j        j         d d d            n# 1 swxY w Y   t                      5  t	          d          j         d d d            d S # 1 swxY w Y   d S NrC   )r<   r   ru   is_EmptySetr'   rS   rP   rN   test_deprecated_is_EmptySetr   j   s    		!	!  	
               
 	!	! ! !!  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   -11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            d S )Nr   FTrC   ra   apositivec                  6    t          dt          j                  S Nr   )r)   r   ImaginaryUnitrS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    x1?;; rP   c                  @    t          dt          dd                    S )Nr   r?   Fextended_real)r)   r   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    x6#U+K+K+KLL rP   c                  P    t          t          t          t          j        z             S rK   )r)   r=   r   r   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    x1q+>?? rP   c                  T    t          ddt          t          t                              S Nr   rC   r)   r7   r=   r>   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    As1ayy(A(A rP   c            	      V    t          dddt          t          t                              S Nr   rC   Fr   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    Auc!Qii(H(H rP   c            	      `    t          ddt          t          t          t                              S r   )r)   r?   r7   r=   r>   rS   rP   rN   rO   z)test_interval_arguments.<locals>.<lambda>   s    Aq#a))(D(D rP   )r)   r   
right_openr   	left_openr   ru   r=   
isinstancer'   r   measurer   r:   ri   NotImplementedError)es    rN   test_interval_argumentsr   r   s   Ar??hq"eT::::::Ar??%----RCxQe<<<<<<RC%----B
****Bqz))))RC"++++B??aj((((Bqz))))Asqz))))Aq>>aS    hq!nni00000A1ayAhq!nni00000Aq>>QZ''''Aq>>!Q&&&&Aq%&&!*4444Aq$&&!*4444Aq$%%3333 hq&++..99999F3...22aj@@@@
:;;<<<
:LLMMM
:??@@@
 A ABBB
 H HIII
 D DEEEEErP   c                     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|                               d          t          d|           k    sJ d S )Nr   TrE   r   ra   rC   )	r   r-   r)   supr   infr   containsr6   r   s    rN   !test_interval_symbolic_end_pointsr      s    sA!Q!Q004Aq		AAAA!Q"a115RCCCCAq>>""1%%!Q777777rP   c                     t          d          \  } }t          dd          }t          dd          }t          dd          }t          d	d
          }t          dd          j        dk    sJ t          dd          j        dk    sJ t          ||          j        dk    sJ t          |||z             j        dk    sJ t          | |           j        dk    sJ t          dt                    j        dk    sJ t          t           t                    j        dk    sJ t          t           d          j        dk    sJ t          | |          j        d k    sJ t          |t                    j        dk    sJ t          |d          j        dk    sJ t          |dd          j        dk    sJ t          |d          j        dk    sJ t          |d          j        d k    sJ t          ||          j        dk    sJ t          d|d          j        dk    sJ t          d|d          j        dk    sJ t          d|d          j        d k    sJ t          d|d          j        d k    sJ d S )Nzx, yrD   TrE   pr   rA   )negativenn)nonnegativerC   rH   Fra   r   r   r   )r   r   r)   rt   r   )r=   r>   rD   r   rA   r   s         rN   test_interval_is_emptyr      s   6??DAqsAsT"""AsT"""A	$	'	'	'BAq>>"e++++Aq>>"e++++Aq>>"e++++Aq2v'50000Aq>>"e++++Ar??#u,,,,RC%....RC$----Aq>>"d****Ar??#u,,,,Aq>>"e++++AqD)))2e;;;;Aq>>"d****B??#t++++Aq>>"e++++AqD)))2e;;;;AqT***3u<<<<ArT***3t;;;;Ard+++4<<<<<<rP   c            	         t          t          dd          t          dd                    t          dd          k    sJ t          t          dd          t          ddd                    t          dd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dddd          t          dd                    t          dddd          k    sJ t          t          dd          t          dddd                    t          dd          k    sJ t          t          ddd          t          dd                    t          dd          k    sJ t          t          ddd          t          ddd                    t          ddd          k    sJ t          t          ddd          t          dddd                    t          dddd          k    sJ t          t          dddd          t          ddd                    t          ddd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dddd          t          dd                    t          dd          k    sJ t          t          dddd          t          ddd                    t          dd          k    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d t	          dd	          D             R  t          dd          k    sJ t          d
          } t          t          dd          t          d|                     t          t          dd          t          |                     k    sJ t          t           t          dd          t          d|                     sJ t          dd                              t          dd                    t          dd          t          dd          z   k    sJ t          dd                              t          dd                    t          dd          k    sJ t          t                                t                      k    sJ t          d          t          d          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   }|
                    |          }d|v rd|v rd|v sJ |                    |          r|                    |          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 d S )NrC   rH   ra   T   Fr   c                 2    g | ]}t          d |z            S )      ?r'   ).0rA   s     rN   
<listcomp>ztest_union.<locals>.<listcomp>   s$    "J"J"J9SU#3#3"J"J"JrP   
   r=   hameggsr>   r?      c                  $    t          ddd          S )NrC   rH   ra   r-   rS   rP   rN   rO   ztest_union.<locals>.<lambda>   s    eAq!nn rP   )r-   r)   r   ru   ranger   r'   r1   unionr+   	intersect	is_subsetr:   rh   is_iterabler   r   rf   rb   )r=   r>   r?   XYXandYs         rN   
test_unionr      s   !Q!Q00HQNNBBBB!Q!Q!5!566(1a..HHHH!Q!Q00HQNNBBBB!Q!Q00HQNNBBBB!Q!Q00HQNNBBBB!Qt,,hq!nn==Aud##$ $ $ $!Q!Qt!<!<==!QOOOO!Q%%x1~~66(1a..HHHH!Q%%x1d';';<<At   !Q%%x1dD'A'ABBAtT""# # # #!Qd++XaD-A-ABBAt   !Q!Q00HQNNBBBB!Qt,,hq!nn==A   !Qt,,hq!T.B.BCCA   !Q,,A>>>>
****!QK"J"JU1b\\"J"J"JKKKA    	sA!Q1a11UA	!6& 6& & & & &UHQNNIaOO<<<<<Aq>>A//A!Q'( ( ( ( Aq>>A//8Aq>>AAAA<<355    Q<<)A,,&151a9K9KKKKKUi///9UF3K3KKKKKQ1
*i1a.@.@@@@@Q1	!Q 2 22i1ooEEEEQ1	!Q 2 22i1a6K6KKKKKQ1
*aj8888Q1
*i1a.@.@@@@@sAsAsA:	!Yq!__555!Yq!__%%& & & & Aq>>IaLL(HQNN::::Aq$%%	!4AtU##$ $ $ $A1%AA1%AKKNNE66a1ffe??14%//!"4"4444
9,,---=E!!!! YaRy$r((;;<<488)T1"XX&&' ' ' ' !*%%000000rP   c                      t          t          d          t          d          t          d          d          } t          |           g dk    sJ d S )Nra   r   r   Fevaluate)r   r   r   rC   rC   rC   rH   rH   rH   ra   ra   r   )r-   r$   list)us    rN   test_union_iterr     sP    eAhha%((U;;;A 77:::::::::rP   c                      t          t          t                    t          d          z   j        dk    sJ t          t          t                    t          t           t                    z   j        d k    sJ d S )NrC   F)r)   r=   r>   r'   rt   rS   rP   rN   test_union_is_emptyr     sZ    QNNYq\\)3u<<<<QNNXqb!__,6$>>>>>>rP   c            
         t          dd          t          dd          z
  t          ddd          k    sJ t          dd          t          dd          z
  t          dddd          k    sJ t          ddd          t          dd          z
  t          dddd          k    sJ t          ddd          t          ddd          z
  t          dddd          k    sJ t          dd          t          d          z
  t          t          dddd          t          dddd                    k    sJ t          j        t          t
                    z
  t          j        k    sJ t          j        t          t
           t
                    z
  t          j        k    sJ t          dd          t          t
           t
                    z
  t          dd          k    sJ t          dd          t          dt
                    z
  t          t          j        dd          t          j        dd                    k    sJ t          j        t          ddt
          z   t          t          dz            z
  t          t          t          j        t           d          t          j        dt                              t          t          t          dz            d          k    sJ t          ddd          t          d          z
  t          dd          k    sJ t          d	d
          t          d
          z
  t          d	          k    sJ t          dddd          t          dddd          z
  t          dd          k    sJ t          dddd          t          j        z
  t          dddd          k    sJ t          t          dd          t          ddd                    t          dd          z
  t          t          dddd          t          d                    k    sJ dt          j        t          j        z
  v sJ d S )NrC   ra   rH   TFr   r   r   r   r   r   )r)   r'   r-   r   rf   r   RopenLopenr=   r>   r%   openr   ru   rc   rS   rP   rN   test_differencer     s   Aq>>HQNN*hq!T.B.BBBBBAq>>HQNN*hq!UD.I.IIIIIAq$(1a..0HQ44N4NNNNNAq$(1a"6"66AtU##$ $ $ $Aq>>IaLL(hq!UD))8Aq$+F+FGGH H H H 7Yq\\!QW,,,,7Yr1%%%0000Ar??Yr1---!R@@@@Ar??Yq!__,q!hnQ3315 15 5 5 5 57Yq!a%AqD111ZhmRC##X]1b%9%9::IaA<N<N6 6 6     Q1	!,	!Q????UF##i&7&779U;K;KKKKKQ1a  8Ar4#?#??!Q   Q1a  1:-1aA1F1FFFFF!Q1a!3!344x1~~Ehq!UD))9Q<<889 9 9 9 1:%%%%%%%rP   c            
      4
   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                            t          j
                  t          k    sJ d	t          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 d S )NrC   ra   r   rH   Fr   Tc                  6    t          t           d           S NFr   )r'   r%   ACs   rN   rO   z!test_Complement.<locals>.<lambda>=  s    iAq5)I)I)IJ rP   r   r   r   r   za:czd:f)r'   r)   r%   r   r:   rh   r-   r   rf   rc   rb   rs   ru   
complementr   r   r(   r=   r>   r   r1   r*   )BDA2B3r   r   s       @@rN   test_Complementr   1  se   !QA!QAAAAAaU+++74????aU+++74????aU+++7???jA66679Q<<GGGGjA66679Q<<GGGG
9JJJJJKKKhq!nnhq!nn55!Q9M9MMMMMi1a(()Aq//::illJJJJeHQNNIaA,>,>??q!nn& &hq!UD))9Q<<889 9 9 9 Jx1~~x1~~NNNNNNNAGQZ%@@@@@@@Jqw
UCCCCCCCaj!.11X====>$$QZ00H<<<<QW&&qzIaLL'@AAAAAA:
"aj0000J1%15iPQSToo9UUUUU7U1:y}}5551:-qw2/FGGH H H H i1a(((3*;*;<<yAb(9(9::; ; ; ; 	75>>"A75>>"AZAq!1!1155555	Aq		B	Aq!		B7b====7b======rP   c            
         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 ]p|D ];| D ]6t          t          fd           t          t          fd           7<t          t          fd           t          t          fd           qdS )z1Tests that e.g. FiniteSet(1) * 2 raises TypeErrorc                     | |z   S rK   rS   r   bs     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>e  
    QU rP   c                     | |z
  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>f  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>g  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>h  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>i  s
    Q!V rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>j  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>k  r   rP   c                     | |z  S rK   rS   r   s     rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>l  r   rP   rC   rH   r   c                                  S rK   rS   niopsis   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>      22b":: rP   c                                  S rK   rS   r   s   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>  r   rP   c                  &     t                      z  S rK   )objectr   s   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>  s    ". rP   c                       dhz  S r~   rS   r   s   rN   rO   z-test_set_operations_nonsets.<locals>.<lambda>  s    ") rP   N)r'   r=   r>   r)   r-   r(   r%   r*   r   ru   r:   rh   )opsSxSysetsnumsr   r   r   s        @@@rN   test_set_operations_nonsetsr   b  s    	C 
1B	1B	
!Ab(1a..!!R2r2r	
	D q!QqTT1Q441&D - - 	7 	7B 7 7y"5"5"5"5"5"5666y"5"5"5"5"5"566667 	y0000111y++++,,,,- -rP   c                      t          ddhdh          dhk    sJ t          dd                              t          j                  t          t          t           ddd          t          dt          dd                    k    sJ t          dddd                              t          j                  t          t          t           ddd          t          dt          dd                    k    sJ t          dddd                              t          j                  t          t          t           ddd          t          dt          dd                    k    sJ t          dddd                              t          j                  t          t          t           ddd          t          dt          dd                    k    sJ t          j                            t          j                  t          j        k    sJ t          j                            t          j                  t          j        k    sJ t          j                            t          j                  t          j        k    sJ t          j                            t          j                  t          j        k    sJ t          t          dd          t          dd                                        t          j                  t          t          t           ddd          t          dddd          t          dt          dd                    k    sJ t          d                              t          j                  t          t          t           ddd          t          dt          dd                    k    sJ t          d          t          t          j
        d          z                       t          j                  t          dddd          t          dt          j        dd          z   k    sJ t          ddd                              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                                        t          j                  t          t          j        t          t                              k    sJ t          dt                                        t          j                  t          t          t           ddd          t          dt          dd          z   t          t                    d          k    sJ t          dd          t          dd          z                      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 d S )NrC   rH   r   TFra   r   r   c              3       K   | ]}|v V  	d S rK   rS   r   ptsquares     rN   	<genexpr>z"test_complement.<locals>.<genexpr>  s'      IIrV|IIIIIIrP   )r   r         ?r   rC   r   rI   c              3       K   | ]}|v V  	d S rK   rS   r   r   	notsquares     rN   r   z"test_complement.<locals>.<genexpr>  s@       F FiF F F F F FrP   c              3       K   | ]}|v V  	d S rK   rS   r   s     rN   r   z"test_complement.<locals>.<genexpr>  s'      IIB2<IIIIIIrP   ))r   r   )      ?r   )r   r   c              3       K   | ]}|v V  	d S rK   rS   r  s     rN   r   z"test_complement.<locals>.<genexpr>  s'      HH2rYHHHHHHrP   )r%   r)   r   r   rf   r-   r   rs   ru   r'   NegativeInfinityInfinityr=   allany)r  r   s   @@rN   test_complementr
    s   q!fqc""qc))))Aq>>$$QW--hsAtT**HQD$,G,GHHI I I IAq$&&11!'::hsAtU++XaT4-H-HIIJ J J JAq%&&11!'::hsAtT**HQE4,H,HIIJ J J JAq$%%0099hsAtU++XaUD-I-IJJK K K K >$$QZ00AJ>>>>>$$QW--;;;;>$$Q^44
BBBB:  ))QW4444!Q!Q00;;AGDDhsAtT**HQ4,F,Fq"dD))	+ 	++ + + + Q<<""17++hsAtT**HQD$,G,GHHI I I I aLL8A$6$%' ' '(2
17(;(;AtT""XaT4%H%HHI I I I Q1((11#Qd33AtT""	#%-aD$%?%?	@AJd++	,, , , ,
 Q<<""17++z!'9Q<</P/PPPPPQ??%%ag..*Xrc1dTX=Y=Y=EaTSW=X=X>Y?H||V[3] 3] 3] ] ] ] ] a^^hq!nn,F!!!'!'/22IIIII&HIIIIIIII F F F F"DF F F F F F F FIIII*HIIIIIIIIHHHH)GHHHHHHHHHHrP   c                     t          d t          j        t          j        fD                       sJ t          d t          j        t          j        fD                       sJ t          j        } t          j                            |           t          j        u sJ |                     t          j                  t          j        u sJ t          d          }t          dd                              t          dd                    t          dd          k    sJ t          dd                              t          ddd                    t          ddd          k    sJ t          ddd                              t          dd                    t          dddd          k    sJ t          dddd                              t          dd                    t          dddd          k    sJ t          dd                              t          t          dd          t          dd	                              t          t          dd          t          dd                    k    sJ t          dd                              t          ddd	                    t          dd          k    sJ t          dd|                              t          |                    t          |          k    sJ t          d
d                              t          d
                    t          d
          k    sJ t          ddd	dd                              t          j
                  t          j
        k    sJ t          dd                              t          dd	                    t          dd	          k    sJ t          dddd                              t          d                    t          j
        k    sJ t          t          dd          t          dd	                                        t          dd                    t          t          dd          t          dd                    k    sJ t          t          dd          t          dd	                                        t          dd                    t          t          dd          t          dd                    k    sJ t          t          dd          t          dd	                                        t          dddd                    t          j
        k    sJ t          t          dd          t          dd	                                        t          j
                  t          j
        k    sJ t          t          dd          t          d
                                        t          dd	ddd                    t          t          dd	ddd          t          t          d
          t          dd                              k    sJ t          t          ddd	          t          d|          t          d	t                              t          t          d	          t          d|          t          d	t                    d          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          |                              t          j                  t          t          j        t          |          d          k    sJ t          dd                              t          dd	                    t          dd	          k    sJ t          dddd                              t          d                    t          j
        k    sJ t          t          dd          t          dd	                                        t          dd                    t          t          dd          t          dd                    k    sJ d S )Nc              3   X   K   | ]%}t           j                            |          |u V  &d S rK   )r   rb   intersectionr   is     rN   r   z"test_intersect1.<locals>.<genexpr>  sG       # #1qz&&q))Q. # # # # # #rP   c              3   X   K   | ]%}|                     t          j                  |u V  &d S rK   )r  r   rb   r  s     rN   r   z"test_intersect1.<locals>.<genexpr>  sE       # #1q~~aj))Q. # # # # # #rP   r=   r   rH   rC   TFra   r   r   r   r      r   zm, nrE   )r  r   rc   rd   r  r   r)   r   r-   r'   ru   r(   r>   r   rf   )rw   r=   r@   rA   s       rN   test_intersect1r    s    # #	
Q[!# # # # # # # # # #	
Q[!# # # # # # # #	
A:""1%%3333>>!*%%3333sAAq>>##HQNN33x1~~EEEEAq>>##HQ4$8$899At   Aq$))(1a..99Aue$$% % % %Aq$%%//A??Aud##$ $ $ $Aq>>##E(1a..(1a..$I$IJJhq!nnhq!nn--. . . . Q??$$Yq!Q%7%788IaOOKKKKQ1''	!551EEEEUF##--i.>.>??%   Q1a##--aj99QZGGGGAq>>##IaOO44	!QGGGGAq$%%//	!==KKKK!Q!Q00::8Aq>>JJhq!nnhq!nn--. . . .!Q!Q00::8Aq>>JJhq!nnhq!nn--. . . .!Q!Q00::8Aq$PT;U;UVV	
   !Q!Q00::1:FF	
   !Q5!1!122<<Yq!QPQST=U=UVVYq!Q1--uYu5E5ExPQST~~/V/VWWX X X X	!Q**HQNNHQNNKKYq\\8Aq>>8Aq>>ERRRS S S S	!Q!Q!QHHaVXa^^e<<<= = = =	!Q**HQNNHQNNKKaVXa^^e<<<= = = = 6%%%DAq	!i1oox1Q37G7GHH!    	!ill33Yq\\9Q<<%@@@A A A AQ<<!!!'**QWillU;;;< < < < Aq>>&&yA779Q??JJJJAq$%%229Q<<@@AJNNNN!Q!Q00==hq!nnMMhq!nnhq!nn--. . . . . .rP   c                  p   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 d S )NrC   rH   ra   r   Fr   r=   TrE   r   r  c                      d v S NrH   rS   r  s   rN   rO   z#test_intersection.<locals>.<lambda>      a1f rP   rH   rH   )rH   rH   rH   c                  "    t                     S rK   )r   r  s   rN   rO   z#test_intersection.<locals>.<lambda>  s    d1gg rP   )r(   r'   r)   r   setr   r   r:   rh   ru   r   rb   rc   rf   _argset	frozenset	ComplexesComplexInfinityrs   )r=   liner   r  s      @rN   test_intersectionr     sc   Yq!Q''!Q%HHHA=q66addAaDD\!!!! 	sAXa^^Xa^^44AFu
9nnnn%%% A
33qzAAAA"b))8RC+;+;<<"a@P@PPPPP Aq>>DT1WdAg666A????A
9oooo&&&\!*aj5III17]bcccA9	<
AJQV#W#W#WYZY`"abbbbbbYq/@%A%ABBajPPPP >>Q^++++ aS1#&&,sQC*@*@@@@@@@rP   c                  X   t          d          } t          j        }t          dt                    }t          |           }t          |||          t          ||          k    sJ t          t          dd          t          dd          t          |                     t          k    sJ d S )NrA   r   rC   rH   ra   r   )r   r   rf   r)   r   r'   r(   ru   )rA   r   r   cs       rN   test_issue_9623r#    s    sA	ABA!A1a  LA$6$66666AA	!EEQQQQQQrP   c                      t          dd                              t          dd                    dk    sJ t          dd                              t          dd                    dk    sJ d S )Nr   rH   rC   Fra   r   T)r)   is_disjointrS   rP   rN   test_is_disjointr&  &  sf    Aq>>%%hq!nn55>>>>Aq>>%%hq!nn55======rP   c                     t          dd          } t          ddd          }t          |                                           dk    sJ t          |                                           t          d          usJ t          | |                                          dk    sJ t          | |                                          t          d          usJ d S )NrC   rH   ra   r  )r'   r*   __len__r   r   r   s     rN   test_ProductSet__len__r*  +  s    !QA!QAa==  ""a''''a==  ""!A$$....a##%%****a##%%QqTT111111rP   c                  d   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        k    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  k    sJ t          t          j        t          j        t          j                  t          j        t          j        z  t          j        z                                  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sJ )t          j        t          j        z  t          j        z  t          j        t          j        t          j        z  z  k    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            n# 1 swxY w Y   t          t          d            t          dd          }t          dd          }t          ||                              t          t                     t#          |                    t                    |                    t                               cxk    r|t#          t%          t'          t          d          t'          t          d                    t%          t'          t           d          t'          t           d                              k    sn J t          t          fd           t          t          fd           t          t          d            t          t          j        t          j                  }|                    d          t          j        u sJ |                    d          t          j        u sJ |                    t                    t/          t          |d          k    sJ |                    t                                        t          d          t          j        u sJ |                    t          df                              t          d          t          j        u sJ |                    t          t           f          t/          t          t           f|d          k    sJ t3          t.          t          t           f|          sJ t/          d|          t          j        u sJ d S )NrC   rH   ra   )rC   rG   rC   rH   ra   )rG   ra   )rC   )rH   ra   rS   r   c                       t           j        dz  S )Nr   )r   rf   rS   rP   rN   rO   z!test_ProductSet.<locals>.<lambda>f  s    qw{ rP   c              3   4   K   | ]}t          |          V  d S rK   r   r   rw   s     rN   r   z"test_ProductSet.<locals>.<genexpr>h  s(      22A9Q<<222222rP   c                       t          d           S rK   )r*   rS   rP   rN   rO   z!test_ProductSet.<locals>.<lambda>i  s    j.. rP   r   c                  8                          t                    S rK   as_relationalr=   S3s   rN   rO   z!test_ProductSet.<locals>.<lambda>q  s    r//22 rP   c                  :                          t          d          S r~   r2  r4  s   rN   rO   z!test_ProductSet.<locals>.<lambda>r  s    r//155 rP   c                  x    t          t          dd                                        t          t                    S r   )r*   r)   r3  r=   r>   rS   rP   rN   rO   z!test_ProductSet.<locals>.<lambda>s  s&    z(1a..99GG1MM rP   Fr   )r*   r   rf   flattenr   r'   ru   r   rb   r   r:   ri   r<   rh   r3  r=   r>   r7   r8   r2   r   r   r   r"   subsr1   )	r   RnS1S2rn   ro   x3Z2r5  s	           @rN   test_ProductSetr?  4  s   ag!'Q,....agqw''17a<7777agqw00AGqL@@@@ag!'))))agqw''17QW+<<<<<agqw00AGag4E4OOOOOagqw00QWqw5F5P4Y4Y4[4[[[[[Jqw'''''':ag&&&&&&Jqw000000Z111111q6AGQW555555
17AGQW======1$$$$AGag-77777!'AG+ag55555ag/!'99999!'QWqw%677777<<9R==((((agqz**aj8888 Ahh  !'b)byB{{{{{Gag(AGqw7H,IIIII	
B	
B	B	
B888888888rBw	bB
bB88888rBw7"r'!!!!
:**+++		!	! 3 322q2222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3
9..///	1aB	1aB	B		BQ""2##A&&(8(8(;(;<<C C C C2bAhh1a))2bAhh1a+A+ABBC C C C C C :2222333
:5555666
:MMNNN	AJ
	+	+B;;v!&((((;;t'''';;q>>Xae<<<<<<<;;q>>q!$$////;;1v##Aq))QV3333;;1v(Aq62"F"F"FFFFFX1vr*****FB16))))))s   'TTTc            	          t          t          t          dd                    sJ t          t          t          t          dd                              sJ d S r   )r1   r*   r)   rS   rP   rN   (test_ProductSet_of_single_arg_is_not_argrA    sL    Z!Q00000ZHQNN!;!;<<<<<<<rP   c                      t          t          j        t          j                  j        dk    sJ t          t          t          d          t          j                  j        d k    sJ d S )NFrC   )r*   r   rb   rf   rt   r)   r=   rS   rP   rN   test_ProductSet_is_emptyrC    sR    aj!'**3u<<<<hq!nnag..74??????rP   c                      t          dd          } t          d|                               | d          t          dd          k    sJ t          | d                              | d          t          j        k    sJ d S )Nr   TrE   r   rH   )r   r)   r9  r   ru   r   s    rN   test_interval_subsrE    sv    sAAq>>q!$$A6666Aq>>q!$$
222222rP   c                     t          dd                                          t          dd          k    sJ t          dddd                                          t          dd          k    sJ t          t          dd                                                    t          t          dd                    k    sJ d S )Nr   rC   TF)r)   to_mpir0   typerS   rP   rN   test_interval_to_mpirI    s    Aq>>  ""c!Qii////Aq$&&--//3q!99<<<<A%%''((DQOO;;;;;;rP   c                     t          t          d          dz  t          j                                                  t          t	          d          t	          d                    k    sJ t          t
          t          j        d                                          t          t
          t	          d          d          k    sJ t          t           t          j                                                  t          t           t	          d                    k    sJ t          dt
                                                    t          t	          d          t
                    k    sJ d S )	N   @   z0.171875z0.5Tr   rH   z2.0)r)   r   Halfevalfr
   r=   r   r'   rS   rP   rN   test_set_evalfrO    s$   AbEE"Haf%%++--j5<<2) 2) ) ) ) )Aqv$///55778	5<<D<* <* <* * * * *RC  &&((HbS%,,,G,GGGGGQ??  ""iea&@&@@@@@@@rP   c            	         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n J ||z   j        dk    sJ ||z
  j        dk    sJ |t	          ddd          z  j        dk    sJ |                    |          j        dk    sJ ||z   j        t
          u sJ |t	          ddd          z  j        t          u sJ d S )Nr   TrE   rC   ra   rH   r   r   r   r     rz   r      d      K      )
r   r)   r   r-   r'   r   r   ru   r   r   )r   r   offsetsquarebands       rN   test_measurerY    sW   sAAq>>!Q&&&&Aq>>!Q&&&&Aq>>!QU****!Q!Q008A====!Q!Q1a1C1CDDL    Q2q2#r**2a7777:""""a__x2.FAr??Xa__4LRCx1~~-D>\18888S888888\!*c1111\!*b0000Yq!Q'''0A5555T""+r1111TM"b((((9Q1%%%.#555555rP   c            	      n   t          dd                              t          dd                    du sJ t          dd                              t          dd                    du sJ t          dd                              t          dd                    du sJ t          dd                              t          dddd                    sJ t          dd                              t          dddd                    du sJ t          d                              t          dd                    sJ t          dd                              t          dddd                    du sJ t          dd          t          d          z                       t          dddd          t          dd          z             sJ t          dd                              t          t          dd          t          dd                              du sJ t          dd	                              t          t          dd          t          dd                              du sJ t          dddd                              t          dd                    du sJ t          j                            t          ddd                    du sJ t          dd                              t          j                  du sJ t          j                            t          j                  du sJ t          t          d
            t          dddd                              t          dd                    du sJ t          j                            t          ddd                    du sJ t          j	                            t          j
                  sJ t          j                            t          j
                  sJ t          t                                        t          t                              J t          t                                        t          t                                        t          t                              du sJ t          t                                        t          t                                        t          t          dz                       du sJ t          dd                              t          ddd                    du sJ t          dd                              t          t          t           d          t          dt                                        du sJ t!          dd          } t#          ddd                              t          dd                    du sJ t#          t	          d          dz                                t          ddd                    du sJ t#          d	dd                              t          ddd	                    du sJ t#          dt                                        t          dd                    du sJ t#          t           d                              t          d                    du sJ t#          d                              t          dd|                     J t#          | | dz                                 t          | | dz                       du sJ t#          d                              t          ddd                    du sJ t%          t'          | d| z            t          j
                                      t          j                  J d S )Nr   rC   rH   Tra   Fr   r   r  c                  @    t           j                            d          S r~   )r   ru   r   rS   rP   rN   rO   z test_is_subset.<locals>.<lambda>  s    qz33A66 rP   r   r^   rA   rZ   r   r   r   rS  r   )r)   r   r'   r-   r   ru   r:   ri   issubsetrc   rb   rd   r=   r>   r9  r   r   r$   r.   r   rf   rA   s    rN   test_is_subsetr^    s   Aq>>##HQNN33t;;;;Aq>>##HQNN33u<<<<Aq>>##IaOO44====Q??$$Yq!Q%:%:;;;;;Q??$$Yq!Q%:%:;;uDDDDQ<<!!(1a..11111Q??$$XaD$%?%?@@EIIIIQNNYq\\)44Aud##i1oo57 7 7 7 7 Aq>>##E(1a..(1a..$I$IJJdRRRRAq>>##E(1a..(1a..$I$IJJeSSSSQ1a  **8Aq>>::dBBBB:	!Q 2 233t;;;;Aq>>##AJ//58888:
++t3333
:66777 Q1a  ))(1a..99TAAAA:yAq1122d:::::
+++++;  ,,,,,Q<<!!)A,,//777Q<<!!)A,,"3"3Aq"9"9::dBBBBQ<<!!)A,,"3"3Aqs";";<<EEEEAq>>##HQT$B$B$BCCuLLLLB??$$U8RC+<+<hq"oo%N%NOOSXXXXXsD!!!AQ??$$YsB%7%788EAAAA2&&yAq'9'9::eCCCCAr??$$Yq!Q%7%788D@@@@B<<!!)Aq//22e;;;;"a==""9Q<<00E999988i1a0011999AE??$$Yq!a%%8%899TAAAA88hq!===>>%GGGGF1acNNAJ//99!'BBJJJJJrP   c                  j   t          dd                              t          dd                    du sJ t          dd                              t          dd                    du sJ t          j                            t	          ddd                    du sJ t          t          d            d S )Nr   rC   rH   Tra   Fc                  H    t          dd                              d          S r   )r)   is_proper_subsetrS   rP   rN   rO   z'test_is_proper_subset.<locals>.<lambda>  s    x1~~>>qAA rP   )r)   ra  r   ru   r'   r:   ri   rS   rP   rN   test_is_proper_subsetrb    s    Aq>>**8Aq>>::dBBBBAq>>**8Aq>>::eCCCC:&&yAq'9'9::dBBBB
:AABBBBBrP   c            	         t          dd                              t          dd                    dk    sJ t          dd                              t          dd                    sJ t          dd                              t          dddd                    dk    sJ t          dd                              t          dddd                    dk    sJ t          d                              t          dd                    dk    sJ t          dd                              t          dddd                    dk    sJ t          dd          t          d          z                       t          dddd          t          dd          z             dk    sJ t          dd                              t          t          dd          t          dd                              dk    sJ t          dddd                              t          dd                    dk    sJ t          j                            t          ddd                    dk    sJ t          dd                              t          j                  dk    sJ t          j                            t          j                  dk    sJ t          t          d	            t          dd                              t          j                  dk    sJ t          j                            t          j                  dk    sJ d S )
Nr   rC   rH   Fra   r   r   Tc                  @    t           j                            d          S r~   )r   ru   is_supersetrS   rP   rN   rO   z"test_is_superset.<locals>.<lambda>  s    qz55a88 rP   )	r)   re  r'   r-   r   ru   r:   ri   
issupersetrS   rP   rN   test_is_supersetrg    s   Aq>>%%hq!nn55>>>>Aq>>%%hq!nn55555Q??&&yAq!'<'<==FFFFQ??&&yAq!'<'<==FFFFQ<<##HQNN33u<<<<Q??&&x1dD'A'ABBeKKKKQNNYq\\)66Aud##i1oo57 7:?@ @ @ @ Aq>>%%eHQNNHQNN&K&KLLPUUUUUQ1a  ,,Xa^^<<EEEE:!!)Aq!"4"455>>>>Aq>>%%aj11T9999:!!!*--5555
:88999 Aq>>$$QZ00D8888:  ,,444444rP   c                  j   t          dd                              t          dd                    du sJ t          dd                              t          dd                    du sJ t          ddd                              t          j                  du sJ t          t          d            d S )Nr   rC   rH   Fra   Tc                  H    t          dd                              d          S r   )r)   is_proper_supersetrS   rP   rN   rO   z)test_is_proper_superset.<locals>.<lambda>  s    x1~~@@CC rP   )r)   rj  r'   r   ru   r:   ri   rS   rP   rN   test_is_proper_supersetrk    s    Aq>>,,Xa^^<<EEEEAq>>,,Xa^^<<DDDDQ100<<DDDD
:CCDDDDDrP   c            	         t          dd                              d          t          j        u sJ t          dd                              d          t          j        u sJ t          dddd                              d          t          j        u sJ t          dddd                              d          t          j        u sJ t          dddd                              d          t          j        u sJ t          dddd                              d          t          j        u sJ t          dddd                              d          t          j        u sJ t          dddd                              d          t          j        u sJ t          dd          t          dd          v du sJ t          ddd                              d          t          j        u sJ t          ddt          d                                        t          d                    t          j        u sJ t          t                                        t                    J t          t          d            t          t          t          h                              t          h          J t          t          t          h                              t          t                                        t          h          du sJ t          t          t          h                              t          t          dz                                 t          h          du sJ dd	lmm}  t!          t          |                                          t"                    sJ t!          t          |                                         t"                    sJ t!          t                                        d          t"                    sJ t          t          fd
           t%          t%          dt'          dd                    dz
  t'          dd                    }t%          t'          dd          t'          dd                    t%          t'          dd          t'          dd                    z
  t%          t'          dd          t'          dd                    z   }t          |          }t          |          }||z
  t          j        k    sJ ddt          j        t          d          dg}t          | t-          fd|D                       sJ t-          fd|D                       sJ t/          t          dd          t          dd                                        d          t          j        u sJ t/          t          dd          t          dd                                        d          t          j        u sJ t/          t          dd          t          dd                                        d          t          j        u sJ t          j                            d          t          j        u sJ t          t1          t          dz  t          z   dz
  d                                        t          j                  t          j        u sJ t1          t          dz  t          dz  z   dz   d          t          j        v sJ t1          t          dz  t          dz  z   dz   d          t          j        vsJ t/          t          dd          t          dd                                        t                    t5          t7          t          j        t          k    t          dk              t7          t          d          t          k    t          dk                        k    sJ t;          t          dt                    t          dd                                        t                    t7          t          dk    t          t          k    t          j        t          k    t          d          t          k              k    sJ t          j                            t          j                  t          j        k    sJ d S )Nr   rH   rC   ra   TFr=   c                  8    t           t          t                    v S rK   )r=   r'   r>   rS   rP   rN   rO   ztest_contains.<locals>.<lambda>'  s    a9Q<</ rP   r   c                  &    dt                     v S r~   r   r   s   rN   rO   ztest_contains.<locals>.<lambda>1  s    a9Q<</ rP   	   r   r   gc              3       K   | ]}|v V  	d S rK   rS   r   itemfsets     rN   r   z test_contains.<locals>.<genexpr><  s'      ..tt|......rP   c              3   Z   K   | ]%}                     |          t          j        u V  &d S rK   )r   r   r   rq  s     rN   r   z test_contains.<locals>.<genexpr>=  s6      ??t}}T""af,??????rP   r   r  ) r)   r   r   r   r   r'   r   r>   rg   r=   r:   rh   r9  	sympy.abcr   r   r   r"   r   r   ru   r  r  r-   r!   rf   r8   r7   Oner(   r  r  )r   rad1rad2s1s2itemsr   rs  s         @@rN   test_containsr|    sC   Aq>>""1%%////Aq>>""1%%0000Aq$&&//22ag====Aq$&&//22af<<<<Aq%&&//22af<<<<Aq%&&//22ag====Aq$%%..q11QW<<<<Aq$%%..q11QW<<<<QNNhq!nn,6666Q1&&q))QV3333Q6#;;''00==GGGGQ<<!!!$$,,,
9//000aV&&s++333aV!!!Q''111#66$>>>>aV!!!QqS))33QC88EAAAA ill++QB//:::::ill++A..99999ill++A..99999
9////000 s1hq!nn%%)8Aq>>::Dx1~~x1~~..Xa^^XaQR^^1T1TTWZ[cdegh[i[ikstuwxkykyWzWzzD	4B	4B7aj    1:qxx.EeD............????????????!Q!Q0099!<<FFFF!Q!Q0099!<<GGGG!Q1a11::1==HHHH:q!!QW,,,,VAqD1HqL!,,--66qzBBagMMMM!Q$A+/1%%0000adQTkAoq))QW4444 !Q!Q0099!<<
3quz16""C!	16$:$:;;< < < <AA77@@CCAFAFAEQJ!	223 3 3 3 K!!!"344??????rP   c                     t          d          t          dd                                        t          t          j        k    dk              k    sJ t          t          fd           t          dddd                                        t          t          j        k     dk               k    sJ t          dd          } t          dz                                 |           dk    sJ t          d	d
          t          t           t                                                  t          t          j	        k     t          j
        k               k    sJ d S )Nr=   r   rC   c                       v S rK   rS   )r   r=   s   rN   rO   z(test_interval_symbolic.<locals>.<lambda>V  r  rP   Tr"  FrE   r   r   )r   r)   r   r7   r   Zeror:   rh   r   r  r  )r"  r   r=   s    @@rN   test_interval_symbolicr  R  sP   sAAA::a==C!Q!V444444
9nnnnn%%%AtT""A::a==C
AE222222sAAq1u&&q))U2222s$'''ARC%%a((C	QAJ-0 -0 0 0 0 0 0 0rP   c            	      &   t          d          t          dd          } t          dd          }t          | |                                        t	          t          t          j        k    dk              t          t          d          k    dk                        k    sJ t          t          fd           
                              }|                              k    sJ |                    d          t          u sJ |                    d          t          u sJ |                    d	          t          u sJ |                    d
          t          u sJ |                    d          t          u sJ t          dddd          t          dt                    z   t          dddd          z   t!          fdddt           fD                       sJ t!          fddD                       sJ d S )Nr=   r   rC   rH   ra   c                       v S rK   rS   )i3r=   s   rN   rO   z%test_union_contains.<locals>.<lambda>f  s    a2g rP   g      r   r  g      @g      @Tr   r   r   r  c              3       K   | ]}|vV  	d S rK   rS   r   elUs     rN   r   z&test_union_contains.<locals>.<genexpr>p  s'      11rr{111111rP   r   c              3       K   | ]}|v V  	d S rK   rS   r  s     rN   r   z&test_union_contains.<locals>.<genexpr>q  s'      ,,2rQw,,,,,,rP   )rH   r   r   )r   r)   r-   r3  r8   r7   r   r  r:   rh   r   r9  r   r   r   r'   r  )i1i2r   r  r  r=   s      @@@rN   test_union_containsr  `  s   sA	!QB	!QB	r2BA"S1a1f%=%=s1Q4419aSTf?U?U"V"VVVVV
9ooooo&&&
AA  ######66!T??e####66!S>>T!!!!66!S>>U""""66!S>>T!!!!66!S>>U""""AtT""Xb"%5%55	"aA8N8NNA1111aRC[11111111,,,,,,,,,,,,,,rP   c                  f    t          dd          j        du sJ t                      j        du sJ d S r   )r)   	is_numberr+   rS   rP   rN   test_is_numberr  t  s;    Aq>>#u,,,,55?e######rP   c                      t          dd          j        du sJ t          t           d          j        du sJ t          t          d          d          j        du sJ d S )Nra   r   FTz-inf)r)   is_left_unboundedr   r
   rS   rP   rN   test_Interval_is_left_unboundedr  y  sh    Aq>>+u4444RC-5555E&MM1%%74??????rP   c                      t          dd          j        du sJ t          dt                    j        du sJ t          dt          d                    j        du sJ d S )Nra   r   FTz+inf)r)   is_right_unboundedr   r
   rS   rP   rN    test_Interval_is_right_unboundedr    sd    Aq>>,5555Ar??-5555AuV}}%%8D@@@@@@rP   c                     t          d          } t          dddd                              |           t          t	          d|           t	          | d                    k    sJ t          dddd                              |           t          t          d|           t	          | d                    k    sJ t          dddd                              |           t          t	          d|           t          | d                    k    sJ t          dddd                              |           t          t          d|           t          | d                    k    sJ t          t           dd                              |           t          t          t           |           t	          | d                    k    sJ t          t           dd                              |           t          t          t           |           t          | d                    k    sJ t          dt          d                              |           t          t	          d|           t          | t                              k    sJ t          dt          d                              |           t          t          d|           t          | t                              k    sJ t          t           t                                        |           t          t          t           |           t          | t                              k    sJ t          dd	          } t          d
d	          }t          | |                              |           | |k    k    sJ t          ||                               |           || k    k    sJ d S )Nr=   r   rH   FTr   r^   r   rE   r>   )r   r)   r3  r7   r4   r5   r   r`   s     rN   test_Interval_as_relationalr    sO   sAB5%((66q99Br1IIr!Qxx  ! ! ! !B4''55a88Br1IIr!Qxx  ! ! ! !B5$''55a88Br1IIr!Qxx  ! ! ! !B4&&44Q77Br1IIr!Qxx  ! ! ! ! RCu---;;A>>#b"ajjRTUVXYRZRZB[B[[[[[RCt,,,::1==RQZZQSTUWXQYQYAZAZZZZZBe,,,::1==RAYYPRSTVXPYPYAZAZZZZZBd+++99!<<Br1IIrRSUWyy@Y@YYYYYRC**1--RQZZAr1K1KKKKKsAsAAq>>''**qAv6666Aq>>''**qAv666666rP   c                     t          d          } t          d          }t          dd                              |           t          t	          | d          t	          | d                    k    sJ t          |d                              |           t          t	          | |          t	          | d                    k    sJ d S )Nr=   r>   rC   rH   rz   )r   r'   r3  r8   r2   r`   s     rN   test_Finite_as_relationalr    s    sAsAQ??((++r"Q((Bq!HH/E/EEEEEQ))!,,2a88R2YY0G0GGGGGGGrP   c            
         t          d          } t          dd          t          d          z                       |           t	          t          t          d|           t          | d                    t          | d                    k    sJ t          dddd          t          d          z                       |           t          t          d|           t          | d                    k    sJ t	          | dk     | dk              	                                                    |           t          | t           k    | t          k     t          | d                    k    sJ t          j        dd          t          j        dd          z                       |           t          t          | d          | dk    | dk              k    sJ d S )Nr=   r   rC   rH   Tra   r   )r   r)   r'   r3  r8   r7   r4   r2   r5   as_setr   r3   r   r   rW   s    rN   test_Union_as_relationalr    s   sAQNNYq\\)88;;
3r!QxxAq""Bq!HH--. . . .Q4&&15DDQGGBq!HHbAhh       a!eQU""$$22155Q"WBAq**+ + + +N1a  8>!Q#7#77
-

c"Qq''1a4!Q$889 9 9 9 9 9rP   c            
      <   t          d          } t          t          dd          t          d          d                              |           t          t          t          d|           t          | d                    t          | d                    k    sJ d S Nr=   r   rC   rH   Fr   )r   r(   r)   r'   r3  r7   r4   r2   rW   s    rN   test_Intersection_as_relationalr    s    sA!Q1  )M!,,3r!QxxAq**Bq!HH556 6 6 6 6 6rP   c            	      &   t          d          } t          t          dd          t          d          d          }|                    |           t          t          d|           t          | d          t          | d                    k    sJ d S r  )r   r%   r)   r'   r3  r7   r4   r3   r=   rl   s     rN   test_Complement_as_relationalr    s    sAhq!nnillUCCCDa  Bq!HHbAhh1a))* * * * * *rP   c                      t          d          } t          t          dd          t          d          d          }|                    |           d| k    | dk    z  t          | d          z  k    sJ d S r  )r   r%   r)   r'   r3  r3   r  s     rN   "test_Complement_as_relational_failr    s}    sAhq!nnillUCCCD a  !VQ"Q((*+ + + + + +rP   c            	      *   t          d          } t          t          dd          t          d          d          }|                    |           t          t          | d          t          d|           t          | d          z            k    sJ d S r  )r   r,   r)   r'   r3  r9   r2   r4   r  s     rN   &test_SymmetricDifference_as_relationalr    s{    sAx1~~y||eLLLDa  C1a"Q((R1XX2E$F$FFFFFFFrP   c                  .   t           j                            t          d                    t           j        u sJ t           j                            t           j                  t           j        k    sJ t           j        j        t           j        k    sJ d S )Nr=   )r   ru   r3  r   r   r   rs   boundaryrS   rP   rN   test_EmptySetr    sn    :##F3KK00AG;;;;://1:====:!*,,,,,,rP   c            	      x   t          d          } t          ddd          }t          ddd          }t          ||          }|                    |          }|                    |          r|                    |          s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
        k    sJ t          t          ddd                    t          ddd          k    sJ t          d          t          ddd          k    sJ t          d|d	| d
| dz            sJ ||k    du sJ ||k    du sJ ||k     du sJ ||k    du sJ ||k    r||k    sJ ||k    r||k    sJ ||k    r||k    sJ ||k    r||k    sJ ||k    r||k    sJ d S )Nr=   rC   rH   ra   r   r   r,  rG   rz   r   F)r   r'   r-   r   r   r   r   r   r   r   ru   )r=   r   r   AorBAandBs        rN   test_finite_basicr    s   sA!QA!QAA;;DKKNNE;;t2T!2!2222??1IaLL    5A::!%1****8q==TX]]]]Q1!SAYY....Q1!SAYY.... QZ  AJ....Yq!Q''((IaA,>,>>>>>Y9Q1#5#55555 VQAvq!t44444EeFuEeFu!88q19966a1ffff::!u****u99UrP   c                     d\  } }t          dd          }t          dddddd          }t          dddd          }t          | |          ||z  }d	|v sJ d|vsJ | |fdz  v sJ d
||z                                  v sJ d||z  v sJ | ddf|z  |z                                  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                      ||z            s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                      t          dd          dz            sJ t          dd          dz                      t          dd          dz            rJ t          dd          dz                      t          dd          dz            rJ t          dd          t          d          z                      |          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           d S )N)HTr   rC   rH   ra   r   r   r  r   )r   r   r   )r   r   Trz   r   r   g?r      c                  D    t           t          dd          z            S )Nr   rH   )lenr)   )coins   rN   rO   z$test_product_basic.<locals>.<lambda>  s    c$x1~~"566 rP   )r)   r'   r8  r   r  r   r   r   r-   r  r   ru   r:   rh   )	r  r  	unit_lined6d4r   HHTTr  s	           @rN   test_product_basicr    s   DAqAI	1aAq!	$	$B	1aA		BQ??D"FVF????q6TQYFY.77999999Vi/////q!9R00222222FA;$)b.((((QZZBtQw<<RHr2hR2r(CCCCCrERU#####Xrc2..xR/@/@@AAU	2#q$	%	%	!Rt	$	$
%&.sB&7&7	8	2#r		HbS!T4881b$--. 
/F0 F0 0 0 0 0 ROOQ))(3*;*;Q*>?????b!!1$//Q0BCCCCCQ"--hsB.?.?.BCCCCCRYr]]*55f=====tDy~!####qz!*$%%****qz$1$$$$
9666677777rP   c            	      n   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                     t          j                  rJ t          fdfD                       sJ t          fdfD                       rJ z   z                       t          j                  rJ d S )Nr=   TrE   r   r   r   rV  rC   rH      rS  HamEggsc              3   T   K   | ]#}|                     t          j                  V  $d S rK   r   r   rf   r/  s     rN   r   ztest_real.<locals>.<genexpr>)  s0      ==q{{17##======rP   c              3   p   K   | ]0}fD ]&}||z                        t          j                  V  '1d S rK   r  )r   r   r   r   r   r   r   Js      rN   r   ztest_real.<locals>.<genexpr>+  sR      \\aQPQSTVWYZO\\qA  ))\\\\\\\rP   c              3   \   K   | ]&}|z                        t          j                  V  'd S rK   r  )r   r   r   s     rN   r   ztest_real.<locals>.<genexpr>,  s7      JJ!AE$$QW--JJJJJJrP   )	r   r)   r'   r   Pir  r   rf   r	  )r=   r   r   r   r   r   r  s    @@@@@@rN   	test_realr    s\   sAAARA!QAqt$$A"aA#A%  A==aAq!_========{{17#####\\\\\\\\Aq!Q?\\\\\\\\JJJJ1aAq7IJJJJJJJJA	$$QW-------rP   c                  x   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 d S )Nr=   TrE   r>   r   rC   rH   r   r  r  )
r   r)   r'   r   r   r   r   r   r  r  r`   s     rN   test_supinfr  1  s   sAsAQNNYq\\).!3333QNNYq\\).!3333QNNYq\\).#a));;;;QNNYq\\).#a));;;;Q1!SAYY....Q1!SAYY....Q1a  $Aq!4444Q1a  $Aq!4444Q1aQ-?@@D	
   Q1aQ-?@@D	   UF##'3uf+=+=======rP   c                     t           j        } t          d          }|                     |          t           j        u sJ |                     t          dd                    | k    sJ |                     t          dd                    t          dd          k    sJ | j        t           j	        u sJ | j
        t           j        k    sJ |                     d          t           j        u sJ d S )Nr=   rH   r   r   )r   rs   r   r3  r   r   r)   r   r   r  r  ru   r   )r  r=   s     rN   test_universalsetr  D  s    	AsA??1''''778Aq>>""a'''';;x1~~&&(1a..88889
"""":####::a==AF""""""rP   c                      t          dd          } t          ddd          }t          | | z  | |z            | | z  k    sJ d S )Nr   rH   rC   )r)   r'   r-   )r  pointss     rN    test_Union_of_ProductSets_sharesr  P  sM    Aq>>Dq!QFdVm,,t;;;;;;rP   c                      t          dd          j        t                      k    sJ t          dd          } t          d|           j        | hk    sJ d S )Nr   rC   r=   TrE   )r)   free_symbolsr  r   rW   s    rN   test_Interval_free_symbolsr  V  sX    Aq>>&#%%////sAAq>>&1#------rP   c                     t          dd          } t          dd          }t          | d| z  t          dd                    t          dd          k    sJ t          | d| z  t          dddd	                    t          dddd	          k    sJ t          | | dz  t          dddd	                    t          d
dd	d          k    sJ t          | | dz  t          dd                    t          d
d          k    sJ t          | | dz  t          dddd	                    t          d
dd	d          k    sJ t          | | dz  t          dddd                    t          d
dd	d          k    sJ t          | | dz
  dz  t          dd                    t          d
d          k    sJ t          | d| dz  z  d| dz  z  z
  d| dz  z  z   d| z  z
  t          d
d                    t          dd
          k    sJ t          | | d| z  z   t          t           t                              t          t           d          t          dt                    z   k    sJ t          | d| z  d| dz
  dz  z  z   t          d
ddd	                    t          t	          dd          t          d	          k    sJ t          d t          dd                    t          dd          k    sJ t          t          | || z            t          d
d                    t          t          | || z            t          d
d                    k    sJ t          t          | t          t          |                               t          d
d                    t          t          | t          t          |                               t          d
d                    k    sJ d S )Nr=   TrE   r   rH   r^   rC   r  Fr   r   ra      N   Z   ic                     d| z  S r  rS   rW   s    rN   rO   z%test_image_interval.<locals>.<lambda>s  s
    ac rP   )	r   r.   r)   r   r   r   r#   r   r   )r=   r   s     rN   test_image_intervalr  ]  s   sAsAAqsHROO,,Q????AqsHRD%8899Qe$$% % % %Aq!tXb!T599::Aud##$ $ $ $Aq!tXb!__--!Q????Aq!tXb!T599::Aud##$ $ $ $Aq!tXb!T48899Aud##$ $ $ $AAz8Aq>>22hq!nnDDDDAqAv1a4'"QT'1BqD8(1a..IIa   Aq1Q3w"b 1 122hsB6G6G
1b//7    AqsQ!axZ'!Qe)D)DEE!QU++, , , , MM8B??33xAFFFFF1acNNHQNN33VAqs^^Xa^^445 5 5 5 F1c#a&&kk**HQNN;;VAs3q66{{++Xa^^<<= = = = = =rP   c            
         t          t          t          dk    fdt          dz  z  t          dk    ft          dz  df          } t          dt          dk    fdt          dk    fd          }t          t          | t          d	d                    t	          t          d	d          t          t          dd
          t                              k    sJ t          t          |t          dd                    t          dd          k    sJ d S )Nr   rC   rH   r   ra   Tr   )rH   Trz      )r   r=   r.   r)   r-   r   r   r'   )rX   f1s     rN   test_image_piecewiser  |  s    1a2g,1a4a 01a4,??A	AqAv;AFY	7	7BAq(2q//**eHR4D4DhxXY[]`bFcFc.d.dddddAr8Aq>>**i1oo======rP   c                     t          dd          } t          dd          }t          | | dz  t          dd                              t          | |                              t          dd                              t          t	          | dz  |dz            t          | dz  |dz                                k    sJ d S )	Nr=   TrE   r>   rH   r^   r   r   )r   r.   r)   r   r   r   r`   s     rN   test_image_Intersectionr    s    sAsAAq!tXb!__66x1~~FFGGAq>>##HSAq!t__c!Q$1oo$N$NOOP P P P P PrP   c            	          t          dd          } t          | d| z  t          ddd                    t          ddd          k    sJ d S )	Nr=   TrE   rH   rC   ra   r   r  )r   r.   r'   rW   s    rN   test_image_FiniteSetr    sS    sAAqsIaA..//9Q13E3EEEEEEErP   c            
          t          dd          } t          | | dz  t          dd          t          ddd          z             t          dd	          t          d
          z   k    sJ d S )Nr=   TrE   rH   r^   r   rC   ra   r   ro  )r   r.   r)   r'   rW   s    rN   test_image_Unionr    st    sAAq!tXb!__yAq/A/AABBa^^ill*, , , , , ,rP   c                      t          dd          } t          | d| z  t          j                  t          j        k    sJ d S )Nr=   TrE   rH   )r   r.   r   ru   rW   s    rN   test_image_EmptySetr    s?    sAAqsAJ''1:555555rP   c                      t           t          j        vsJ t          t           t                                        t                     t          j        u sJ d S rK   )r   r   rf   r)   r   r   r   rS   rP   rN   test_issue_5724_7680r    sH    AGRC%%a((AG333333rP   c                      t          d          j        t          d          k    sJ t          d t          t          fD                       sJ d S )NrC   c              3      K   | ]>}t           t          fD ]-}t          d d||          j        t	          d d          k    V  .?dS )r   rC   N)r   r   r)   r  r'   )r   r   r   s      rN   r   z test_boundary.<locals>.<genexpr>  sw       L LdE]L L/9 1i44=1aP L L L L L L LrP   )r'   r  r  r   r   rS   rP   rN   test_boundaryr    st    Q<< IaLL0000 L L"E]L L L L L L L L L LrP   c            	      $   t          dd          t          dd          z   j        t          dddd          k    sJ t          dddd          t          dddd          z   j        t          ddd          k    sJ t          dd          t          d          z   j        t          ddd          k    sJ t          t          dd          t          dd	          d
          j        t          dd	          k    sJ t          t          dd          t          dd          d
          j        t          dd          k    sJ t          t          dddd          t          dd	dd          d
          j        t          ddd	          k    sJ d S )Nr   rC   rH   ra   FTr   r   rR  r   )r)   r  r'   r-   rS   rP   rN   test_boundary_Unionr    s   QNNXa^^+51aA9N9NNNNNaE4((aD%(()*2i1a6H6HI I I I QNNYq\\)3yAq7I7IIIII!R(1b//EBBBKB        !R(1a..5AAAJB       !Rt,,"b$--? ? ??GB##$ $ $ $ $ $rP   c                      t          t          dd          t          dd          d          j        t          dd          k    sJ dS )z2 Testing the boundary of unions is a hard problem r   r   rR  Fr   N)r-   r)   r  r'   rS   rP   rN   #test_union_boundary_of_joining_setsr    sV     !R(2r"2"2UCCCLB           rP   c                  @   t          dddd          dz  } | j        t          dd          t          dd          z  t          dd          t          dd          z  z   k    sJ t          dddd          t          dddd          z  }| |z   j        t          dd          t          dd          z  t          dd          t          dd          z  z   t          dd          t          dd          z  z   t          dd          t          dd          z  z   k    sJ d S )Nr   rC   TrH   )r)   r  r'   )open_squaresecond_squares     rN   test_boundary_ProductSetr    s/   1at,,1KIaOOhq!nn$D$,QNNYq!__$D%E F F F F Q4..!Qd1K1KKM-'1!Q(1a..0!Q(1a..01A1a01 A1a012 2 2 2 2 2rP   c                  `    t          dd          t          d          z  } | j        | k    sJ d S r   )r)   r'   r  )
line_in_r2s    rN   test_boundary_ProductSet_liner    s4    !Q)A,,.J*,,,,,,rP   c                      t          dddd          j        du sJ t          dddd          j        du sJ t          dddd          j        du sJ t          ddd          j        du sJ d S Nr   rC   FTrH   ra   )r)   is_openr'   rS   rP   rN   test_is_openr    s    Aq%''/58888Aq$&&.%7777Aq$%%-5555Q1%......rP   c                      t          dddd          j        du sJ t          dddd          j        du sJ t          ddd          j        du sJ d S r  )r)   	is_closedr'   rS   rP   rN   test_is_closedr    sl    Aq%''1T9999Aq$&&0E9999Q1'4//////rP   c                  `    t          dddd          j        t          dddd          k    sJ d S Nr   rC   FT)r)   closurerS   rP   rN   test_closurer    s8    Aq%&&.(1a2N2NNNNNNNrP   c                  `    t          dddd          j        t          dddd          k    sJ d S r  )r)   interiorrS   rP   rN   test_interiorr    s8    Aq%&&/8Aq$3M3MMMMMMMrP   c                  2    t          t          d            d S )Nc                  (    t           t          j        v S rK   )r=   r   rf   rS   rP   rN   rO   z!test_issue_7841.<locals>.<lambda>  s    a17l rP   )r:   rh   rS   rP   rN   test_issue_7841r    s    
9**+++++rP   c                     t          t          dd          t          dd                    sJ t          t          dd          t          dd                    dk    sJ t          dd          } t          dd          }t          | |           sJ t          | |          dk    sJ t          | |z  | |z            sJ t          | |z  || z            dk    sJ t          t           t          t          t
          h          t          t          h                    sJ t          t          t          t
          h                              t
          t                    t          t          h                    t          j        u sJ t          t          t          t
          h          t          t          h                                        t
          t                    t          j        u sJ t          t          t          t
          h                              t
          t          dz             t          t          h                    t          j	        u sJ t          t          t          t
          h          t          t          h                                        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 d S )Nr   rC   rH   FrS   )r2   r)   r'   r1   r=   r>   r9  r   r   r   r*   )ry  rz  r  r  s       rN   test_Eqr    s   hq!nnhq!nn-----hq!nnhq!nn--6666	1aB	1aBb"::b"::beRUbeRUu$$$$RAq6**IqcNN;;;;;iA$$Q**IqcNN;;qvEEEEiAA30055a;;qvEEEEiA$$Q!,,inn==HHHHiAA30055a1==HHHHj!qc""HQNN33qw>>>>j!ooz1#s3344????immYq\\**ag5555jllIaLL))QW4444	!QB	!QBRB++ZB-?-?@@@@@@@rP   c                     t          dddddd          t          ddddd	          } t          dd	          t          | d
          j        du sJ t          d
          j        J t          t          | d
           t          ddddddd	          k    sJ t	          t
          fd           t          t          dddddd          t          ddddd	                    t          ddddddd	          k    sJ t          t          ddd          t          dddd                    t          d          k    sJ t          ddddd          t          dddd          z  t          ddd          k    sJ t          t          d          t          d          t          d                    t          t          d          t          d          t          d                    z  t          t          t          d          t          d          t          d                    t          t          d          t          d          t          d                    z
  t          t          d          t          d          t          d                    t          t          d          t          d          t          d                    z
            k    sJ t          dd          t          dd          z  t          t          dd          t          dd          z
  t          dd          t          dd          z
            k    sJ d S )Nr   rC   rH   ra   r   r   r  r  r   Fr   Tc                  6    t          t           d           S r   )r'   r,   r   s   rN   rO   z*test_SymmetricDifference.<locals>.<lambda>  s    	.q!eDDDE rP   )	r'   r)   r,   r   r:   rh   r+   r   r-   r   r   r   s    @@rN   test_SymmetricDifferencer    sI   !Q1a##A!Q1b!!ABAq!e444@DHHHHq!e444@HHH)!Q???@!Q1aB''( ( ( (
9EEEEEG G G yAq!Q::aAq"%%' '*3Aq!Q1b*I*IJ J J JyAq119Q1a3H3HII||   Q1a##i1a&;&;;aA   qttQqTT1Q44  3qttQqTT1Q44#8#88E#addAaDDRSTURVRVBWBWZ]^_`a^b^bdefgdhdhjklmjnjnZoZoBo!addAaDD!!C!addAaDD$9$99=; =; ; ; ; ;Aq>>HQNN*eHQNNQNN5$QNNXa^^;/= /= = = = = = =rP   c            	         ddl m}  t          dd          }t           | |                                        t
          j                  t          t
          j        t           | |                              k    sJ d S )Nr   )logr   TrE   )&sympy.functions.elementary.exponentialr
  r   r'   r   r   rf   r(   )r
  r   s     rN   test_issue_9536r    s~    ::::::sASSVV&&qw//<SVSVWXSYSYIZIZ3[3[[[[[[[rP   c                     t          d          } t          |           }t          d|           }t          t          j        |          t          t          j        |d          k    sJ t          t          dd          |          t          t          dd          |d          k    sJ t          t          dd          |          t          t          t          dddd          t          dddd                    |          k    sJ t          |t          j                  t          |t          j        d          k    sJ t          |t          dd                    t          |t          dd          d          k    sJ d S )NrA   rH   Fr   rC   ra   T)r   r'   r%   r   rf   r)   r-   )rA   r   r   s      rN   test_issue_9637r  $  s^   sA!A!QAagq!!ZU%K%K%KKKKKhq!nna((Jx1~~qSX,Y,Y,YYYYYhq!nna((5!Qt44hq!T56Q6QRRTUVVW W W Wa!!Z17U%K%K%KKKKKa!Q((Jq(1a..SX,Y,Y,YYYYYYYrP   c            	         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 d S )NrC   Fr   rH   ra   )r%   r'   r>   r=   rS   rP   rN   test_issue_9808r  0  s    illIaLL11Z	!iXYllej5k5k5kkkkki1a(()Aq!Q*?*?@@9Q<<1>>>? ? ? ? ? ?rP   c                  (   t          t          t           t                    t          d                    t          t           t                    k    sJ t          t           t                                        d          t
          j        u sJ d S r~   )r-   r)   r   r'   r   r   r   rS   rP   rN   test_issue_9956r  7  sn    2#r""IaLL11Xrc25F5FFFFFRC%%a((AF222222rP   c            
         t          dt                    } t          j        }t	          g d          }t          || t          t                    t          t          t                              t          | t          t                              k    sJ t          t          dt          t                    t          t          t          d          |           t          | t          t          t                              k    sJ t          t          t          t          t                    t          t          t                    |          t          t          t          t          ht          t          t          h          |          k    sJ t          t          t          t          d          t          t          t          t                    |          t          t          dt          t                    t          t          t          t                    |d          k    sJ t          t          t          t          d          t          t          t          dd          |          t          t          dt          t                    |          k    sJ t          |t          |dt                    t          d|t                              t          |t          t                              k    sJ t          t          t          t                    t          t                              t          t          t                    t          t                    d          |          t          |t          t          t                    t          t                                        k    sJ t          t          t          dz  dt          t                              t          t          dz  dt          t                              |          t          |t          t          dz  t          t                                        k    sJ d S )Nr   )r   r   r   rC   rH   ra   Fr   )r)   r   r   rf   r    r(   r'   r@   rA   r=   r?   r   r   )r  rD   mats      rN   test_issue_Symbol_interr  <  s   BA	A


C1illIaOO<<Q	!%%& & & &	!Q**IaA,>,>BBQ	!Q(() ) ) )	!Q**IaOOQ??\1a&1a)44a889 9 9 9	!Q**IaA,>,>BBYq!Q''1a););QOOOP P P P	!Q**IaAq,A,A1EEYq!Q''++, , , ,9S!Q//1c11E1EFFQ	!%%& & & &	#a&&#a&&119SVVSVVQ3O3OQRSSQ	#a&&#a&&11223 3 3 3	!Q$3q6622IadAs1vv4N4NPQRRQ	!Q$A//001 1 1 1 1 1rP   c                  (    t           j        dz  sJ d S )Nr   )r   rd   rS   rP   rN   test_issue_11827r  R  s    ;>rP   c            
      F   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 d S )
NrH   r   r   rC   Tr^   ra   ro  r   )r=   r.   r   rf   r-   r)   r   r   rX   s    rN   test_issue_10113r  V  s    	1adQhAAq!'""eHbS!,<,<hq"dTX>Y>Y&Z&ZZZZZAq(2q//**hsA.>.>>>>>Aq(2q//**eHbS!4D4DhxXY[\~~_aFbFb.c.cccccccrP   c                      t          t          d            t          dd          } t          t	          t
          j        t          |                               | gk    sJ d S )Nc                  t    t          t          t          j        t	          t
                                        S rK   )r   r(   r   rf   r'   r=   rS   rP   rN   rO   z"test_issue_10248.<locals>.<lambda>_  s     4QWill C CDD rP   r   TrE   )r:   rh   r   r   r(   r   rf   r'   )r   s    rN   test_issue_10248r  ]  sd    
DD   	sAQWill3344;;;;;;rP   c                     t          dd          t          dd          z   } t          t          j        |           t          t          j        t	          t          dd          t          dd                    d          k    sJ t          t          j        |           t          t          j        t	          t          dd          t          dd                    d          k    sJ d S )Nr   rC   rH   ra   Fr   )r)   r%   r   rs   r-   rc   r   s    rN   test_issue_9447r  e  s    A!Q'Aana((JNE(1a..(1a..AAE-S -S -S S S S Saj!$$
Jhq!nnhq!nn==)O )O )O O O O O O OrP   c                     t          d          dk    du sJ t          d          dk    du sJ t          t          d            t          t          d            t          t          d            t          t          d            d S )	NrH   ra   FTc                  (    t          d          dk     S NrH   ra   r   rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>p      illQ. rP   c                  (    t          d          dk    S r"  r   rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>q      illa/ rP   c                  (    t          d          dk    S r"  r   rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>r  r#  rP   c                  (    t          d          dk    S r"  r   rS   rP   rN   rO   z"test_issue_10337.<locals>.<lambda>s  r%  rP   )r'   r:   rh   rS   rP   rN   test_issue_10337r(  m  s    aLLA%''''aLLA$&&&&
9..///
9//000
9..///
9//00000rP   c                     t           t          d          t          dd          t          j        t          j        t          j        t          j        t          j        g} t          dd          }| D ]}||vs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                                        t                    t          j        u sJ t          t           t                                        t                     t          j        u sJ d S )NrC   rH   r   r   r=   TrE   nrFr   r   )ru   r'   r)   r   r  r   r  NaNr  r   r   r   r   )badintervalr  r=   r*  s        rN   test_issue_10326r.  v  sh   !A			
			
C 1~~H ! !     sA	E	*	*	*Bq5HQA&&&&&&XaQ''''''Aq>>Yx1~~x1~~FFFFFFRC%%b))QW4444RC%%rc**ag555555rP   c                      t           j        } t          dd          }t          |t                    }t           j        }| |z   || z   k    sJ | |z   || z   k    sJ ||z   ||z   k    sJ d S )Nr   TrE   )r   rs   r   r)   r   rf   )r  r   inf_intervalRs       rN   test_issue_2799r2    s    	AsAAr??L	A||a/////q5AE>>>>||a///////rP   c                  \   t          t           d          j        t          t           ddd          k    sJ t          dt                    j        t          dt          dd          k    sJ t          t           t                    j        t          t           t                    k    sJ d S )Nr   TF)r)   r   r  rS   rP   rN   test_issue_9706r4    s    RC#xQe'D'DDDDDAr??"hq"eT&B&BBBBBRC$"b(9(9999999rP   c                     t          t          t           t                    t          t                              } t          t          t           t                    t          t                               }t          t           t                    t          t                    z   | k    sJ t          t                    t          t           t                    z   | k    sJ t          t           t                    t          t                     z   |k    sJ t          t                     t          t           t                    z   |k    sJ d S rK   )r-   r)   r   r'   )reals_plus_infinityreals_plus_negativeinfinitys     rN   test_issue_8257r8    s    "b 1 19R==AA"'"b(9(99bS>>"J"JRCy}},0CCCCCR==8RC,,,0CCCCCRCy"~~-1LLLLLbS>>HbS"---1LLLLLLLrP   c                      t           j        t           j        z
  t          k    sJ t           j        t           j        z
  t          k    sJ d S rK   )r   rb   ru   rf   rS   rP   rN   test_issue_10931r:    s<    :
"h....:8++++++rP   c                     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 d S r   )r(   r)   r   r'   r=   r   rf   )solns    rN   test_issue_11174r=    s    "b))9aR==5IIID	1"qw//477771>>>D	!ag..$666666rP   c                     t          t          t          t          t          t          z  dz  dz
  t          dz  z                       t
          j                                      d          t          dt          t          t          t          t          t          z  dz  dz
  t          dz  z                       t
          j                            k    sJ d S )NrH   rC   r   )	r#   r   rA   r   r   r   rb   r   r"   rS   rP   rN   test_issue_18505r?    s    F1d2a46A:1#45566
CCLLQOOQ41Q
RT0A+B+B!C!CQZPPQQR R R R R RrP   c            
      p   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    rt          t          ddt                    t          ddt          t
                              cxk    rAt          t          ddt                    t          dt          t
                              k    sn J t          dt          z   t
          z
            t          d          z  t          d          t          dt          z   t
          z
            z  cxk    r@t          t          dt          z   t
          z
            t          d          d          k    sn J t          d          t          t                    z  t          t                    t          d          z  cxk    r5t          t          d          t          t                    d          k    sn J t          t          h          t          t          t
          h          z  t          t          t          h          t          t          t
          h          d          k    sJ d S )Nr   rH   ra   rC   Fr   )r(   r'   r   r=   _handle_finite_setsr>   rS   rP   rN   test_finite_set_intersectionrB    s1    	2#q))9Q<<88IaLLHHHH+YsA->->	!Q,PQQU^_`UaUaaaaa+YsA->->	!,MNNR[\]R^R^^^^^+Yq!Q-B-BIaQRTUDVDV,WXX()Aq!*<*<i1aQR>S>S)TUU= = = =Yq!Q''1aA)>)>??= = = = 	Yq!Q''1a););<<= = = = = =
 QqSUill*!y1Q'''E E E EYqs1u%%y||eDDDE E E E E E Q<<)A,,&)A,,1*E A A A AYq\\9Q<<%@@@A A A A A A aS>>Iq!f---Ys^^Y1v%6%6GGGH H H H H HrP   c                      t          d          t          d          g t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t	                               t            k    sJ t          t	                               t            k    sJ t          dhdh          t          dd          k    sJ t          ddhdd	h          t          d          k    sJ d S )
NrC   rH   c                  "    t                     S rK   r   r   s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    eDkk rP   c                  "    t                     S rK   r(   rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    l400 rP   c                  <    t          t                               S rK   )r-   tuplerE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    eE$KK00 rP   c                  <    t          t                               S rK   )r(   rI  rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    l5;;77 rP   c                  6    t          d  D                       S )Nc              3      K   | ]}|V  d S rK   rS   r  s     rN   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s"      #4#4!A#4#4#4#4#4#4rP   r   rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    e#4#4t#4#4#444 rP   c                  6    t          d  D                       S )Nc              3      K   | ]}|V  d S rK   rS   r  s     rN   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s"      *;*;1*;*;*;*;*;*;rP   rG  rE  s   rN   rO   z5test_union_intersection_constructor.<locals>.<lambda>  s    l*;*;d*;*;*;;; rP   ra   )r'   r:   	Exceptionr-   r  r(   rE  s   @rN   #test_union_intersection_constructorrP    sS   aLL)A,,'D
9))))***
90000111
90000111
97777888
94444555
9;;;;<<< Ty$/////D		""i&66666!qc??i1oo----AA''9Q<<777777rP   c                      t           t          t          j        t           d          t          j        dt                              vsJ d S r   )r   r-   r)   r   r   rS   rP   rN   test_Union_containsrR    sN    erc1x}Q335 5 5 5 5 5 5 5rP   c                      t          t          t          t          ft          j                                      t          j        dz            du sJ d S )NrH   T)r.   r=   r   rf   r   rS   rP   rN   test_issue_16878brT    sA    
 A1vqw''11!'1*==EEEEEErP   c            	      	   t          t          ddd          t          ddd          t          ddd                                        t                    t          ddd          t          ddd          z  k    sJ t          t	          dd          t	          dd                                        t                    t          t	          dd          t          d          z  t	          dd          t          d          z            k    sJ t          t	          dd          t	          dd                                        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                                      t                    t	          dd          t          d          z  k    sJ t          t	          dd                                        t                    t	          dd          t          d          z  k    sJ t          t
          j        t	          dd          t
          j                                      t                    t	          dd          t          d          z  k    sJ t          t	          t           t                                                  t                    t	          t           t                    t          d          z  k    sJ t          t
          j                                      t                    t
          j        k    sJ t                                          t                    t
          j        k    sJ t          t          d            t          d	          } t          d
          }t          d          }t          t          |           t          ||                                        t                    t          |           t          d          z  t          ||          t          d          z  z   k    sJ d S )NrC   rH   ra   r   r   r   r   c                  :    t          t          d                    S )NrA   )r&   r   rS   rP   rN   rO   z$test_DisjointUnion.<locals>.<lambda>  s    mF3KK88 rP   r=   r>   r?   )r&   r'   rewriter-   r)   r   ru   r   r:   rh   r   )r=   r>   r?   s      rN   test_DisjointUnionrX    s@   1a++Yq!Q-?-?1aQRASASTT\\]bcchqrsuvxyhzhz  ~G  HI  KL  NO  ~P  ~P  iP  Q  Q  Q  Q!Q!Q88@@GG5QYZ[]^Q_Q_bklmbnbnQnpxyz|}p~p~  BK  LM  BN  BN  qN  LO  LO  O  O  O  O!Q!Q88@@GG5QYZ[]^Q_Q_bklmbnbnQnpxyz|}p~p~  BK  LM  BN  BN  qN  LO  LO  O  O  O  O"a!*ajAAII%PPT\]_abTcTcfopqfrfrTrrrrr"a))11%88HROOiXYll<ZZZZZXb!__ajAAII%PPT\]_abTcTcfopqfrfrTrrrrr2#r**++33E::hsB>O>OR[\]R^R^>^^^^^$$,,U33qzAAAA??""5))QZ7777
988999sAsAsA1yA77??FF9UV<<ZcdeZfZfKfktuvxykzkz  ~G  HI  ~J  ~J  lJ  KK  K  K  K  K  K  KrP   c                     t          t          j                  j        du sJ t          t          j        t          j                  j        du sJ t          t          j        t	          ddd                    j        du sJ d S )NTrC   rH   ra   F)r&   r   ru   rt   r'   rS   rP   rN   test_DisjointUnion_is_emptyrZ    st    $$-5555QZ009TAAAAYq!Q%7%788AUJJJJJJrP   c                     t          t          j        t          j        t          j                  j        du sJ t          t          j        t          j                  j        du sJ t          t          ddd          t          j        t          t          t                              j        du sJ t          t          j        t          j                  j        du sJ d S )NTFrC   rH   ra   )r&   r   rb   rc   rr   r   ru   rf   r'   r=   r>   rS   rP   rN   test_DisjointUnion_is_iterabler\    s    QZ==ITQQQQQW--9UBBBB1a++QZ1aIIUY]]]]]QZ00<EEEEEErP   c            
      "
   dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ d	t          t          ddd          t          ddd          t          ddd                    v sJ d
t          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    vsJ dt          t          d                    vsJ dt          t          ddd          t          ddd          t          ddd                    vsJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ dt          t          dd          t          dd                    v sJ dt          t          dd          t          dd                    v sJ dt          t          dd          t          dd                    vsJ dt          t          dd          t          dd                    v sJ d S )Nr   r   rC   rH   )r   rC   )r   rH   r   rI   rG   )rH   r   rH   rC   r  )r   rC   rH   )r   r   r   )r   r   )r   r   )r   rC   )r  r   )r  rC   )r&   r'   r=   r>   r?   r   ru   r)   rS   rP   rN   test_DisjointUnion_containsr_    s   ]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^]9Q1#5#5yAq7I7I9UVXY[\K]K]^^^^^^M)Aq!*<*<i1a>P>PR[\]_`bcRdRdeeeeee=3888888yAq'9'99Q1;M;MyYZ\]_`OaOabbbbbbq6]9Q1#5#5qz9Q<<PPPPPPq6]9Q1#5#5qz9Q<<PPPPPPq6]9Q1#5#5qz9Q<<PPPPPPq6]9Q1#5#5qz9Q<<PPPPPP}Xa^^Xa^^DDDDDD}Xa^^Xa^^DDDDDD=!Q!QHHHHHH}Xa^^Xa^^DDDDDDDDrP   c                     t          t          dddd          t          t          t          t                              } t          |           t          dft          dft          dfg}g d}t                    }||v sJ |                    |           t                    }||v sJ |                    |           t                    }||v sJ |                    |           t                    }||v sJ |                    |           t                    }||v sJ |                    |           t                    }||v sJ |                    |           t                    }||v sJ |                    |           t          t          fd           t          t          d            d S )	Nra   r   rQ  ro  rC   ))ra   r   )r   r   )rQ  r   )ro  r   c                  "    t                     S rK   )next)its   rN   rO   z)test_DisjointUnion_iter.<locals>.<lambda>=  s    $r(( rP   c                  l    t          t          t          dd          t          j                            S r   )iterr&   r)   r   ru   rS   rP   rN   rO   z)test_DisjointUnion_iter.<locals>.<lambda>?  s"    tM(1a..!*$M$MNN rP   )r&   r'   r=   r>   r?   re  rb  remover:   StopIterationri   )r   L1L2nxtrc  s       @rN   test_DisjointUnion_iterrk  #  s   i1a++Yq!Q-?-?@@A	aBa&1a&1a&	!B	)	)	)B
r((C"9999IIcNNN
r((C"9999IIcNNN
r((C"9999IIcNNN
r((C"9999IIcNNN
r((C"9999IIcNNN
r((C"9999IIcNNN
r((C"9999IIcNNN
=****+++
:NNOOOOOrP   c                     t          t          t          dddd          t          t          t          t
                                        dk    sJ t          t          t          j        t          j        t          t          t          t
                    t          j                            dk    sJ t          t          d            d S )Nra   r   rQ  ro  c                  l    t          t          t          dd          t          j                            S r   )r  r&   r)   r   ru   rS   rP   rN   rO   z(test_DisjointUnion_len.<locals>.<lambda>D  s"    s=!Q#L#LMM rP   )
r  r&   r'   r=   r>   r?   r   ru   r:   ri   rS   rP   rN   test_DisjointUnion_lenrn  A  s    }Yq!Q22IaA4F4FGGHHAMMMM}QZYq!Q5G5GTTUUYZZZZZ
:MMNNNNNrP   c            	         t          t          t          ddg                    t          t          ddg                              } t          t                    }t          t          ||                    }| j        |u sJ t          t          dd          t          t          ddg                              j        t          t          t          |                    u sJ d S NrC   rH   )	r*   r'   r    r   r   r/   r   kindr)   )r   mkks      rN   test_SetKind_ProductSetrt  F  s    9VQF^^,,i1v.G.GHHA	J		B	"b!!""A6Q;;;;hq!nni1v&?&?@@EQZ[egiQjQjIkIkkkkkkkrP   c                  \    t          dd          j        t          t                    u sJ d S rp  )r)   rq  r/   r   rS   rP   rN   test_SetKind_Intervalrv  M  s,    Aq>>'*"5"5555555rP   c                      t           j        j        t          t                    u sJ t
          j        t                      u sJ d S rK   )r   rs   rq  r/   r	   ru   rS   rP   rN   "test_SetKind_EmptySet_UniversalSetrx  P  s=    >'-"8"88888=GII%%%%%%rP   c                      t          dt          ddg                    j        t          t                    u sJ t          dd          j        t          t
                    u sJ d S rp  )r'   r    rq  r/   r	   r   rS   rP   rN   test_SetKind_FiniteSetrz  T  s\    Q1v'',0F0FFFFFQ??7:#6#6666666rP   c                  >   t          t          t          ddg                    t          dd                    j        t          t                    u sJ t          t          dd          t          dd                    j        t          t                    u sJ d S )NrC   rH   rQ  )r-   r'   r    r)   rq  r/   r	   r   rS   rP   rN   test_SetKind_Unionsr|  X  s~    61a&>>**HQNN;;@GMDZDZZZZZ!Q!Q0059L9LLLLLLLrP   c                      t          ddd          } t          dd          }t          | |          j        t	          t
                    u sJ d S )NrC   rH   ra   r   r   )r'   r)   r&   rq  r/   r   r)  s     rN   test_SetKind_DisjointUnionr~  \  sL    !QAAAA#wz':':::::::rP   c                     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 d S )
Nc                      t          | ddiS Nr   Fr   argss    rN   rO   z-test_SetKind_evaluate_False.<locals>.<lambda>b  s    eT2E22 rP   rC   rH   r   r   c                      t          | ddiS r  rG  r  s    rN   rO   z-test_SetKind_evaluate_False.<locals>.<lambda>h  s    lD9599 rP   c                      t          | ddiS r  )r%   r  s    rN   rO   z-test_SetKind_evaluate_False.<locals>.<lambda>k  s    j$777 rP   >   rC   rH   r   r   >   rC   rH   ra   r   r   )	ru   rq  r/   r   r)   r   rs   r	   r'   )r  r   r   s      rN   test_SetKind_evaluate_Falser  a  s   22A1aS( GJ$7$777771Xa^^X&&+wz/B/BBBBB1aS!.!!&'-*@*@@@@@1Xa^^Xa^^aLL '*"5"56 6 6 699A1aS!.!!&'**=*=====1aS( GII----77A1Q^\\\**/7=3I3IIIII1___h'',
0C0CCCCC1X'',		999999rP   c                     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 d S )NrH   rC   r   ra         )r#   r   rA   r)   r'   rq  r/   r   r  s    rN   test_SetKind_ImageSet_Specialr  p  s    16""HQNN33A	!"gj&9&99999R   &'**=*=====	"#wz':':::::::rP   c                  $   t          t          dd          t          d                    } d| vsJ d| vsJ t          dt          dd                    rJ t          d          | v sJ t          dd          }|| v sJ |                     |           sJ |                    |           rJ d|v sJ t          t          dd          t          d          dd          }|                    |          sJ |                     |          sJ d S )NrC   rH   r   )r'   r2   r\  r  s      rN   test_issue_20089r  v  s   )Aq//9Q<<00AA::::a<<<<!Yq!__%%%%%Q<<1!QA6666::a==zz!}}6666)Aq//9Q<<A66A::a==::a==rP   c                  4   t          dd          } t          | |           }t          dddd          }|                    |          du sJ t          d          }|                    |          du sJ t          ||                                          t
          j        u sJ t          | |                                          t
          j        u sJ t          dht          h                                          t          dht          h          k    sJ d S )	NrC   rH   rI   rG   r^  r  TF)	r'   r*   r   r2   simplifyr   r   r   r=   )r   r   r"  ds       rN   test_issue_19378r    s    !QA1aA&&&&11A;;q>>T!!!!!A;;q>>U""""a88!&((((a88!'))))qcA3<<  ""b!qcll222222rP   c            	         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 d S )NrA   rS  rC   )r   r   r(   r$   r)   r]  s    rN   test_intersection_symbolicr    s    sAl588U3ZZ88,GGGGGl588Xa-=-=>>MMMMMl5::x1~~>>MMMMMMMrP   c            	         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 d S )	NrA   T)r[   r   r   r   i  r      )r   r(   r$   r)   r]  s    rN   "test_intersection_symbolic_failingr    s    sD4000Ab!eAsA&6&677<b!eBQ''<) <) ) ) ) )Qq#q)9)9::lQr3**?, ?, , , , , , ,rP   c                      t           dz
  } t          |                               d          t          t          dd                    k    sJ d S )Ng-DT!	@rH   z3.23108914886517e-15)r   r'   rN  r
   rW   s    rN   test_issue_20379r    sK    
AQ<<a  Ie4JA.N.N$O$OOOOOOOrP   c                      t          dt          d          dz  t          d          dz  z             }  | j                    dhk    sJ d S rp  )r'   r   r   r  r   s    rN   test_finiteset_simplifyr    sK    !SVVQYQ*++A1:<<A3rP   N)sympy.concrete.summationsr   sympy.core.addr   sympy.core.containersr   sympy.core.functionr   sympy.core.kindr   r	   sympy.core.numbersr
   r   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.elementary.miscellaneousr   r   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   sympy.logic.boolalgr   r   sympy.matrices.commonr   sympy.matrices.denser    sympy.polys.rootoftoolsr!   sympy.sets.containsr"   sympy.sets.fancysetsr#   r$   sympy.sets.setsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   mpmathr0   sympy.core.exprr1   sympy.core.relationalr2   r3   r4   r5   r6   sympy.logicr7   r8   r9   sympy.testing.pytestr:   r;   r<   ru  r=   r>   r?   r@   rA   ru   rp   rx   r|   r   r   r   r   r   r   r   r   r   r   r
  r  r   r#  r&  r*  r?  rA  rC  rE  rI  rO  rY  r^  rb  rg  rk  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r.  r2  r4  r8  r:  r=  r?  rB  rP  rR  rT  rX  rZ  r\  r_  rk  rn  rt  rv  rx  rz  r|  r~  r  r  r  r  r  r  r  r  rS   rP   rN   <module>r     sO
   ) ) ) ) ) )       + + + + + + & & & & & & 5 5 5 5 5 5 5 5 E E E E E E E E E E E E E E E E E E             " " " " " " / / / / / / / / & & & & & & E E E E E E E E E E : : : : : : ? ? ? ? ? ? ? ? - - - - - - - - , , , , , , ' ' ' ' ' ' * * * * * * ( ( ( ( ( ( 2 2 2 2 2 2 2 2 [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [       % % % % % % : : : : : : : : : : : : : : $ $ $ $ $ $ $ $ $ $ F F F F F F F F F F # # # # # # # # # # # # # #:$) $) $)N' ' 'X X X6! ! !!F !F !FH8 8 8= = =6I1 I1 I1X; ; ;? ? ?
& & &<. . .b"- "- "-J.I .I .Ib=. =. =.@ A  A  AFR R R> > >
2 2 2I* I* I*X= = =
@ @ @
3 3 3< < <A A A6 6 68/K /K /KbC C C5 5 54E E E8@ 8@ 8@v0 0 0- - -($ $ $
@ @ @A A A7 7 72H H H	9 	9 	97 7 7* * * + + +G G G- - -# # #D$8 $8 $8N. . .$> > >&	# 	# 	#< < <. . .= = =>> > > P P PF F F
, , ,6 6 6
4 4 4
L L L$ $ $       
2 
2 
2- - -
/ / /0 0 0O O ON N N, , ,A A A<= = =0\ \ \	Z 	Z 	Z? ? ?3 3 3
1 1 1,  d d d< < <O O O1 1 16 6 600 0 0: : :M M M, , ,
7 7 7R R R
H H H08 8 8&5 5 5
 F F FK K K"K K K
F F FE E E,P P P<O O O
l l l6 6 6& & &7 7 7M M M; ; ;
: : :; ; ;  	3 	3 	3N N N , , ,P P P
    rP   