
    g                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZWmXZX ejY        ZYd ZZd Z[d Z\d Z]d  Z^d! Z_d" Z`d# Zad$ Zbd% Zcd& Zdd' Zed( Zfd) Zgd* Zhd+ Zid, Zjd- Zkd. Zld/ Zmd0 Znd1 Zod2 Zpd3 Zqd4 Zrd5 Zsd6 Ztd7 Zud8 Zvd9 Zwd: Zxd; Zyd< Zzd= Z{d> Z|d? Z}d@ Z~dA ZdB ZdC ZdD ZdE ZeOdF             ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZeOdR             ZdS ZdT ZdU ZdV ZdW ZdX ZeOdY             ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv ZeOdw             Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeOd             Zd Zd Zd Zd 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)cartes)xyzmnc            
      
   t           j        t          t          t          dz
  t           j                  t           j        u sJ t          t          t          dz   t           j                  t           j        u sJ t          t          t          t                    t           j                  t           j        u sJ t          t          t          t                    t           j                  t           j        u sJ t          t          t          t                    t           j                  t           j        u sJ t          dd          } t          t          t          t          ft           j                  	                    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rD      FrD   rD   c                  .    t          t                     S N)r.   r>   intss   V/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/sets/tests/test_sets.py<lambda>ztest_imageset.<locals>.<lambda>0   s    hq$//     c                  F    t          t          t          t                     S rL   )r.   r>   r?   r@   rM   s   rO   rP   ztest_imageset.<locals>.<lambda>1   s    x1a66 rQ   c                  v    t          t          t          t          t                              t                    S rL   )r.   r   r>   r   r?    rQ   rO   rP   ztest_imageset.<locals>.<lambda>2   s     xq#a&&(9(91== rQ   c                  V    t          t          t          t                                S rL   )r.   r   r>   rM   s   rO   rP   ztest_imageset.<locals>.<lambda>4   s    xq!dDAA rQ   c                      t          |           S rL   r   r>   s    rO   fztest_imageset.<locals>.f6   s    1vvrQ   c                      t          |           S rL   rW   rX   s    rO   rP   ztest_imageset.<locals>.<lambda>9   s    #a&& rQ   r>   integerc                     | z   S rL   rT   )r>   clashs    rO   rP   ztest_imageset.<locals>.<lambda>?   s    1u9 rQ   )zx0 + xzx + x0zx1, x2c                 "    t          | |          S rL   r   r>   r?   s     rO   rP   ztest_imageset.<locals>.<lambda>B   s    Aq		 rQ   rI      )r   Integersr.   r>   Naturals	Naturals0absr   Reals	_containsr   r:   	TypeError
ValueErrorr   r?   r   r#   r'   r@   r   r   strr)   lamdaexprdummy_eq)rE   rY   x1x2r^   rN   s       @@rO   test_imagesetrq   !   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)) ) ) ) )rQ   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   rd   re   rc   	Rationalsrg   UniversalSetis_emptyEmptySetss    rO   test_is_emptyry   H   s_    j!+qz1;N # #zU""""":$&&&&&&rQ   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 )NFTrD   rI   r   rb   )r   rd   re   rc   rs   rg   rt   is_finite_setrv   r'   r)   r>   r?   r*   r-   r(   r%   r&   rw   s    rO   test_is_finitesetr}   P   s/   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WrQ   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 NrD   )r<   r   rv   is_EmptySetr'   rT   rQ   rO   test_deprecated_is_EmptySetr   k   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   FTrD   rb   apositivec                  6    t          dt          j                  S Nr   )r)   r   ImaginaryUnitrT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    x1?;; rQ   c                  @    t          dt          dd                    S )Nr   r@   Fextended_real)r)   r   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    x6#U+K+K+KLL rQ   c                  P    t          t          t          t          j        z             S rL   )r)   r>   r   r   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    x1q+>?? rQ   c                  T    t          ddt          t          t                              S Nr   rD   r)   r7   r>   r?   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    As1ayy(A(A rQ   c            	      V    t          dddt          t          t                              S Nr   rD   Fr   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    Auc!Qii(H(H rQ   c            	      `    t          ddt          t          t          t                              S r   )r)   r@   r7   r>   r?   rT   rQ   rO   rP   z)test_interval_arguments.<locals>.<lambda>   s    Aq#a))(D(D rQ   )r)   r   
right_openr   	left_openr   rv   r>   
isinstancer'   r   measurer   r:   rj   NotImplementedError)es    rO   test_interval_argumentsr   s   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ErQ   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   TrF   r   rb   rD   )	r   r-   r)   supr   infr   containsr6   r   s    rO   !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7rQ   c                     t          d          \  } }t          dd          }t          dd          }t          dd          }t          d	d
          }t          dd          j        dk    sJ t          dd          j        dk    sJ t          ||          j        dk    sJ t          |||z             j        dk    sJ t          | |           j        dk    sJ t          dt                    j        dk    sJ t          t           t                    j        dk    sJ t          t           d          j        dk    sJ t          | |          j        d k    sJ t          |t                    j        dk    sJ t          |d          j        dk    sJ t          |dd          j        dk    sJ t          |d          j        dk    sJ t          |d          j        d k    sJ t          ||          j        dk    sJ t          d|d          j        dk    sJ t          d|d          j        dk    sJ t          d|d          j        d k    sJ t          d|d          j        d k    sJ d S )Nzx, yrE   TrF   pr   rB   )negativenn)nonnegativerD   rI   Frb   r   r   r   )r   r   r)   ru   r   )r>   r?   rE   r   rB   r   s         rO   test_interval_is_emptyr      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<<<<<<rQ   c            	         t          t          dd          t          dd                    t          dd          k    sJ t          t          dd          t          ddd                    t          dd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dddd          t          dd                    t          dddd          k    sJ t          t          dd          t          dddd                    t          dd          k    sJ t          t          ddd          t          dd                    t          dd          k    sJ t          t          ddd          t          ddd                    t          ddd          k    sJ t          t          ddd          t          dddd                    t          dddd          k    sJ t          t          dddd          t          ddd                    t          ddd          k    sJ t          t          dd          t          dd                    t          dd          k    sJ t          t          dddd          t          dd                    t          dd          k    sJ t          t          dddd          t          ddd                    t          dd          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 )NrD   rI   rb   T   Fr   c                 2    g | ]}t          d |z            S )      ?r'   ).0rB   s     rO   
<listcomp>ztest_union.<locals>.<listcomp>   s$    "J"J"J9SU#3#3"J"J"JrQ   
   r>   hameggsr?   r@      c                  $    t          ddd          S )NrD   rI   rb   r-   rT   rQ   rO   rP   ztest_union.<locals>.<lambda>   s    eAq!nn rQ   )r-   r)   r   rv   ranger   r'   r1   unionr+   	intersect	is_subsetr:   ri   is_iterabler   r   rg   rc   )r>   r?   r@   XYXandYs         rO   
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0rQ   c                      t          t          d          t          d          t          d          d          } t          |           g dk    sJ d S )Nrb   r   r   Fevaluate)r   r   r   rD   rD   rD   rI   rI   rI   rb   rb   r   )r-   r$   list)us    rO   test_union_iterr     sP    eAhha%((U;;;A 77:::::::::rQ   c                      t          t          t                    t          d          z   j        dk    sJ t          t          t                    t          t           t                    z   j        d k    sJ d S )NrD   F)r)   r>   r?   r'   ru   rT   rQ   rO   test_union_is_emptyr     sZ    QNNYq\\)3u<<<<QNNXqb!__,6$>>>>>>rQ   c            
         t          dd          t          dd          z
  t          ddd          k    sJ t          dd          t          dd          z
  t          dddd          k    sJ t          ddd          t          dd          z
  t          dddd          k    sJ t          ddd          t          ddd          z
  t          dddd          k    sJ t          dd          t          d          z
  t          t          dddd          t          dddd                    k    sJ t          j        t          t
                    z
  t          j        k    sJ t          j        t          t
           t
                    z
  t          j        k    sJ t          dd          t          t
           t
                    z
  t          dd          k    sJ t          dd          t          dt
                    z
  t          t          j        dd          t          j        dd                    k    sJ t          j        t          ddt
          z   t          t          dz            z
  t          t          t          j        t           d          t          j        dt                              t          t          t          dz            d          k    sJ t          ddd          t          d          z
  t          dd          k    sJ t          d	d
          t          d
          z
  t          d	          k    sJ t          dddd          t          dddd          z
  t          dd          k    sJ t          dddd          t          j        z
  t          dddd          k    sJ t          t          dd          t          ddd                    t          dd          z
  t          t          dddd          t          d                    k    sJ dt          j        t          j        z
  v sJ d S )NrD   rb   rI   TFr   r   r   r   r   r   )r)   r'   r-   r   rg   r   RopenLopenr>   r?   r%   openr   rv   rd   rT   rQ   rO   test_differencer     s   Aq>>HQ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:%%%%%%%rQ   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 )NrD   rb   r   rI   Fr   Tc                  6    t          t           d           S NFr   )r'   r%   ACs   rO   rP   z!test_Complement.<locals>.<lambda>>  s    iAq5)I)I)IJ rQ   r   r   r   r   za:czd:f)r'   r)   r%   r   r:   ri   r-   r   rg   rd   rc   rt   rv   
complementr   r   r(   r>   r?   r   r1   r*   )BDA2B3r   r   s       @@rO   test_Complementr   2  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======rQ   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 rL   rT   r   bs     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>f  
    QU rQ   c                     | |z
  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>g  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>h  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>i  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>j  s
    Q!V rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>k  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>l  r   rQ   c                     | |z  S rL   rT   r   s     rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>m  r   rQ   rD   rI   r   c                                  S rL   rT   niopsis   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>      22b":: rQ   c                                  S rL   rT   r   s   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>  r   rQ   c                  &     t                      z  S rL   )objectr   s   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>  s    ". rQ   c                       dhz  S r   rT   r   s   rO   rP   z-test_set_operations_nonsets.<locals>.<lambda>  s    ") rQ   N)r'   r>   r?   r)   r-   r(   r%   r*   r   rv   r:   ri   )opsSxSysetsnumsr   r   r   s        @@@rO   test_set_operations_nonsetsr   c  s    	C 
1B	1B	
!Ab(1a..!!R2r2r	
	D q!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++++,,,,- -rQ   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 )NrD   rI   r   TFrb   r   r   c              3       K   | ]}|v V  	d S rL   rT   r   ptsquares     rO   	<genexpr>z"test_complement.<locals>.<genexpr>  s'      IIrV|IIIIIIrQ   )r   r         ?r   rD   r   rJ   c              3       K   | ]}|v V  	d S rL   rT   r   r   	notsquares     rO   r   z"test_complement.<locals>.<genexpr>  s@       F FiF F F F F FrQ   c              3       K   | ]}|v V  	d S rL   rT   r   s     rO   r   z"test_complement.<locals>.<genexpr>  s'      IIB2<IIIIIIrQ   ))r   r   )      ?r   )r   r   c              3       K   | ]}|v V  	d S rL   rT   r  s     rO   r   z"test_complement.<locals>.<genexpr>  s'      HH2rYHHHHHHrQ   )r%   r)   r   r   rg   r-   r   rt   rv   r'   NegativeInfinityInfinityr>   allany)r  r   s   @@rO   test_complementr    s   q!fqc""qc))))Aq>>$$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HrQ   c                  H   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 t          dt          d          z  dz             }t          d          t          d	          z   }t          |d                              t          |d                    t          |d          k    sJ t          d|                              t          d|                    t          d|          k    sJ d S )Nc              3   X   K   | ]%}t           j                            |          |u V  &d S rL   )r   rc   intersectionr   is     rO   r   z"test_intersect1.<locals>.<genexpr>  sG       # #1qz&&q))Q. # # # # # #rQ   c              3   X   K   | ]%}|                     t          j                  |u V  &d S rL   )r  r   rc   r  s     rO   r   z"test_intersect1.<locals>.<genexpr>  sE       # #1q~~aj))Q. # # # # # #rQ   r>   r   rI   rD   TFrb   r   r   r   r      r   zm, nrF   )r	  r   rd   re   r  r   r)   r   r-   r'   rv   r(   r?   r   rg   r   )rx   r>   rA   rB   r   r   s         rO   test_intersect1r    s+	    # #	
Q[!# # # # # # # # # #	
Q[!# # # # # # # #	
A:""1%%3333>>!*%%33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--. . . . 	QtAwwY]AQ$q''AAq>>&&x1~~66(1a..HHHHAq>>&&x1~~66(1a..HHHHHHrQ   c                     t           t           t           ft           t           j        t           j        ft           t           j        t           j        ft           t           j        t           j        ft           j        t           j        t           j        ft           j        t           j        t           j        ft           j        t           j        t           j        ft           j        t           j        t           j        ft           j        t           j        t           j        ft           j        t           j        t           j        fg
} d }| D ]\  }}}||f||ffD ]z\  }}t	          ddgddgddgddg          D ]Z\  }}}	}
 |||	          } |||
          } | |||           ||	|
                    }|                    |          |k    sJ [{d S )Nc                 4    t          |t                    r|n| S rL   )r   float)a1a2s     rO   rP   z2test_intersection_interval_float.<locals>.<lambda>  s    Jr5$9$9Abbr rQ   rI   g       @rb   g      @)r)   r   r   r   r=   r   )typsas_floatt1t2t3t1it2ir  r  b1b2I1I2I3s                 rO    test_intersection_interval_floatr%    s   
 
8X&	8=(-0	8>8>2	8>8>2	x}5	6	6	8	7	8D BAH . .
BbB8, 	. 	.HC"(!SAs8aX3x"P"P . .BBRBZZRBZZRR((((2r*:*:;;||B''2-----	.	.. .rQ   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 )NrD   rI   rb   r   Fr   r>   TrF   r   r  c                      d v S NrI   rT   r  s   rO   rP   z#test_intersection.<locals>.<lambda>%      a1f rQ   rI   rI   )rI   rI   rI   c                  "    t                     S rL   )r   r)  s   rO   rP   z#test_intersection.<locals>.<lambda>0  s    d1gg rQ   )r(   r'   r)   r   setr   r   r:   ri   rv   r   rc   rd   rg   _argset	frozenset	ComplexesComplexInfinityrt   )r>   liner   r  s      @rO   test_intersectionr3    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*@*@@@@@@@rQ   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 )NrB   r   rD   rI   rb   r   )r   r   rg   r)   r   r'   r(   rv   )rB   r   r   cs       rO   test_issue_9623r6  >  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QrQ   c                      t          dd                              t          dd                    dk    sJ t          dd                              t          dd                    dk    sJ d S )Nr   rI   rD   Frb   r   T)r)   is_disjointrT   rQ   rO   test_is_disjointr9  I  sf    Aq>>%%hq!nn55>>>>Aq>>%%hq!nn55======rQ   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 )NrD   rI   rb   r  )r'   r*   __len__r   r   r   s     rO   test_ProductSet__len__r=  N  s    !QA!QAa==  ""a''''a==  ""!A$$....a##%%****a##%%QqTT111111rQ   c                     t          t          j                  t          j        dz  k    sJ t          t          j        t          j                  t          j        dz  k    sJ t          t          j        t          j        t          j                  t          j        dz  k    sJ t          t          j                  t          j        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          j                  t/          t           t          j                  z  k    sJ t3          t.          t          t           f|          sJ t/          d|          t          j        u sJ d S )NrD   rI   rb   )rD   rH   rD   rI   rb   )rH   rb   )rD   )rI   rb   rT   r   c                       t           j        dz  S )Nr   )r   rg   rT   rQ   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    qw{ rQ   c              3   4   K   | ]}t          |          V  d S rL   r   r   rx   s     rO   r   z"test_ProductSet.<locals>.<genexpr>  s(      22A9Q<<222222rQ   c                       t          d           S rL   )r*   rT   rQ   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    j.. rQ   r   c                  8                          t                    S rL   as_relationalr>   S3s   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    r//22 rQ   c                  :                          t          d          S r   rE  rG  s   rO   rP   z!test_ProductSet.<locals>.<lambda>  s    r//155 rQ   c                  x    t          t          dd                                        t          t                    S r   )r*   r)   rF  r>   r?   rT   rQ   rO   rP   z!test_ProductSet.<locals>.<lambda>  s&    z(1a..99GG1MM rQ   Fr   )r*   r   rg   flattenr   r'   rv   r   rc   r   r:   rj   r<   ri   rF  r>   r?   r7   r8   r2   r   r   r   r"   subsr1   )	r   RnS1S2ro   rp   x3Z2rH  s	           @rO   test_ProductSetrR  W  s    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(1aj"9"9HQ
<S<S"SSSSS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)   rT   rQ   rO   (test_ProductSet_of_single_arg_is_not_argrT    sL    Z!Q00000ZHQNN!;!;<<<<<<<rQ   c                      t          t          j        t          j                  j        dk    sJ t          t          t          d          t          j                  j        d k    sJ d S )NFrD   )r*   r   rc   rg   ru   r)   r>   rT   rQ   rO   test_ProductSet_is_emptyrV    sR    aj!'**3u<<<<hq!nnag..74??????rQ   c                      t          dd          } t          d|                               | d          t          dd          k    sJ t          | d                              | d          t          j        k    sJ d S )Nr   TrF   r   rI   )r   r)   rL  r   rv   r   s    rO   test_interval_subsrX    sv    sAAq>>q!$$A6666Aq>>q!$$
222222rQ   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   rD   TF)r)   to_mpir0   typerT   rQ   rO   test_interval_to_mpir\    s    Aq>>  ""c!Qii////Aq$&&--//3q!99<<<<A%%''((DQOO;;;;;;rQ   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   rI   z2.0)r)   r   Halfevalfr
   r>   r   r'   rT   rQ   rO   test_set_evalfrb    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&@&@@@@@@@rQ   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   TrF   rD   rb   rI   r   r   r   r     r{   r      d      K      )
r   r)   r   r-   r'   r   r   rv   r   r   )r   r   offsetsquarebands       rO   test_measurerl    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5rQ   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   rD   rI   Trb   Fr   r   r  c                  @    t           j                            d          S r   )r   rv   r   rT   rQ   rO   rP   z test_is_subset.<locals>.<lambda>  s    qz33A66 rQ   r   r_   rB   r[   r   r   r   rf  r   )r)   r   r'   r-   r   rv   r:   rj   issubsetrd   rc   re   r>   r?   rL  r   r   r$   r.   r   rg   rB   s    rO   test_is_subsetrq    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JrQ   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   rD   rI   Trb   Fc                  H    t          dd                              d          S r   )r)   is_proper_subsetrT   rQ   rO   rP   z'test_is_proper_subset.<locals>.<lambda>  s    x1~~>>qAA rQ   )r)   rt  r   rv   r'   r:   rj   rT   rQ   rO   test_is_proper_subsetru    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BrQ   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   rD   rI   Frb   r   r   Tc                  @    t           j                            d          S r   )r   rv   is_supersetrT   rQ   rO   rP   z"test_is_superset.<locals>.<lambda>+  s    qz55a88 rQ   )	r)   rx  r'   r-   r   rv   r:   rj   
issupersetrT   rQ   rO   test_is_supersetrz    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4rQ   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   rD   rI   Frb   Tc                  H    t          dd                              d          S r   )r)   is_proper_supersetrT   rQ   rO   rP   z)test_is_proper_superset.<locals>.<lambda>7  s    x1~~@@CC rQ   )r)   r}  r'   r   rv   r:   rj   rT   rQ   rO   test_is_proper_supersetr~  2  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DrQ   c            	      j   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                    t          t          t          d          k    sJ t          t          d	            t          t          t          h                              t          h          t          t          t          ht          hd          k    sJ t          t          t          h                              t          t                                        t          h          t          j        u sJ t          t          t          h                              t          t          dz                                 t          h          t          j        u sJ dd
lmm}  t          |                                          t          |            k    sJ t          |                                         t          |           k    sJ t                                        d          t          d          k    sJ t          t          fd           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          t/          t          dz  t          z   dz
  d                                        t          j                  t          j        u sJ t/          t          dz  t          dz  z   dz   d          t          j        v sJ t/          t          dz  t          dz  z   dz   d          t          j        vsJ t-          t          dd          t          dd                                        t                    t3          t5          t          j        t          k    t          dk              t5          t          d          t          k    t          dk                        k    sJ t9          t          dt                    t          dd                                        t                    t5          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   rI   rD   rb   TFr>   r   c                  8    t           t          t                    v S rL   )r>   r'   r?   rT   rQ   rO   rP   ztest_contains.<locals>.<lambda>J  s    a9Q<</ rQ   r   c                  &    dt                     v S r   r   r   s   rO   rP   ztest_contains.<locals>.<lambda>T  s    a9Q<</ rQ   	   r   r   gc              3       K   | ]}|v V  	d S rL   rT   r   itemfsets     rO   r   z test_contains.<locals>.<genexpr>_  s'      ..tt|......rQ   c              3   Z   K   | ]%}                     |          t          j        u V  &d S rL   )r   r   r   r  s     rO   r   z test_contains.<locals>.<genexpr>`  s6      ??t}}T""af,??????rQ   r   r  )r)   r   r   r   r   r'   r   r?   rh   r>   r2   r:   ri   rL  	sympy.abcr   r   r   r   rv   r  r	  r-   r!   rg   r8   r7   Oner(   r0  r1  )r   rad1rad2s1s2itemsr   r  s         @@rO   test_containsr  :  s   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<<!!!$$1a%(@(@(@@@@@
9//000aV&&s++r1a&1#/N/N/NNNNNaV!!!Q''111#66!&@@@@aV!!!QqS))33QC88AGCCCC Q<<  !$$1qb		1111Q<<  ##r!Qxx////Q<<  ##r!Qxx////
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??????rQ   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   rD   c                       v S rL   rT   )r   r>   s   rO   rP   z(test_interval_symbolic.<locals>.<lambda>y  r*  rQ   Tr5  FrF   r   r   )r   r)   r   r7   r   Zeror:   ri   r   r  r  )r5  r   r>   s    @@rO   test_interval_symbolicr  u  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 0rQ   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   rD   rI   rb   c                       v S rL   rT   )i3r>   s   rO   rP   z%test_union_contains.<locals>.<lambda>  s    a2g rQ   g      r   r  g      @g      @Tr   r   r   r  c              3       K   | ]}|vV  	d S rL   rT   r   elUs     rO   r   z&test_union_contains.<locals>.<genexpr>  s'      11rr{111111rQ   r   c              3       K   | ]}|v V  	d S rL   rT   r  s     rO   r   z&test_union_contains.<locals>.<genexpr>  s'      ,,2rQw,,,,,,rQ   )rI   r   r   )r   r)   r-   rF  r8   r7   r   r  r:   ri   r   rL  r   r   r   r'   r	  )i1i2r   r  r  r>   s      @@@rO   test_union_containsr    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,,,,,,,,,,,,,,rQ   c                  f    t          dd          j        du sJ t                      j        du sJ d S r   )r)   	is_numberr+   rT   rQ   rO   test_is_numberr    s;    Aq>>#u,,,,55?e######rQ   c                      t          dd          j        du sJ t          t           d          j        du sJ t          t          d          d          j        du sJ d S )Nrb   r   FTz-inf)r)   is_left_unboundedr   r
   rT   rQ   rO   test_Interval_is_left_unboundedr    sh    Aq>>+u4444RC-5555E&MM1%%74??????rQ   c                      t          dd          j        du sJ t          dt                    j        du sJ t          dt          d                    j        du sJ d S )Nrb   r   FTz+inf)r)   is_right_unboundedr   r
   rT   rQ   rO    test_Interval_is_right_unboundedr    sd    Aq>>,5555Ar??-5555AuV}}%%8D@@@@@@rQ   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   rI   FTr   r_   r   rF   r?   )r   r)   rF  r7   r4   r5   r   ra   s     rO   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6rQ   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?   rD   rI   r{   )r   r'   rF  r8   r2   ra   s     rO   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GrQ   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   rD   rI   Trb   r   )r   r)   r'   rF  r8   r7   r4   r2   r5   as_setr   r3   r   r   rX   s    rO   test_Union_as_relationalr    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 9rQ   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   rD   rI   Fr   )r   r(   r)   r'   rF  r7   r4   r2   rX   s    rO   test_Intersection_as_relationalr    s    sA!Q1  )M!,,3r!QxxAq**Bq!HH556 6 6 6 6 6rQ   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'   rF  r7   r4   r3   r>   rm   s     rO   test_Complement_as_relationalr    s    sAhq!nnillUCCCDa  Bq!HHbAhh1a))* * * * * *rQ   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'   rF  r3   r  s     rO   "test_Complement_as_relational_failr    s}    sAhq!nnillUCCCD a  !VQ"Q((*+ + + + + +rQ   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'   rF  r9   r2   r4   r  s     rO   &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FrQ   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   rv   rF  r   r   r   rt   boundaryrT   rQ   rO   test_EmptySetr    sn    :##F3KK00AG;;;;://1:====:!*,,,,,,rQ   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>   rD   rI   rb   r   r   r?  rH   r{   r   F)r   r'   r-   r   r   r   r   r   r   r   rv   )r>   r   r   AorBAandBs        rO   test_finite_basicr    s   sA!QA!QAA;;DKK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rQ   c                     d\  } }t          dd          }t          dddddd          }t          dddd          }t          | |          ||z  }d	|v sJ d|vsJ | |fdz  v sJ d
||z                                  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   rD   rI   rb   r   r   r  r   )r   r   r   )r   r   Tr{   r   r   g?r      c                  D    t           t          dd          z            S )Nr   rI   )lenr)   )coins   rO   rP   z$test_product_basic.<locals>.<lambda>?  s    c$x1~~"566 rQ   )r)   r'   rK  r   r-  r   r   r   r-   r  r   rv   r:   ri   )	r  r  	unit_lined6d4r   HHTTr  s	           @rO   test_product_basicr    s   DAqAI	1aAq!	$	$B	1aA		BQ??D"FVF????q6TQYFY.779999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7rQ   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>   TrF   r   r   r   ri  rD   rI      rf  HamEggsc              3   T   K   | ]#}|                     t          j                  V  $d S rL   r   r   rg   rB  s     rO   r   ztest_real.<locals>.<genexpr>L  s0      ==q{{17##======rQ   c              3   p   K   | ]0}fD ]&}||z                        t          j                  V  '1d S rL   r  )r   r   r   r   r   r   r   Js      rO   r   ztest_real.<locals>.<genexpr>N  sR      \\aQPQSTVWYZO\\qA  ))\\\\\\\rQ   c              3   \   K   | ]&}|z                        t          j                  V  'd S rL   r  )r   r   r   s     rO   r   ztest_real.<locals>.<genexpr>O  s7      JJ!AE$$QW--JJJJJJrQ   )	r   r)   r'   r   Pir	  r   rg   r
  )r>   r   r   r   r   r   r  s    @@@@@@rO   	test_realr  B  s\   sAAARA!Q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-------rQ   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>   TrF   r?   r   rD   rI   r   r  r  )
r   r)   r'   r   r   r   r   r   r  r  ra   s     rO   test_supinfr  T  s   sAsAQ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+=+=======rQ   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>   rI   r   r   )r   rt   r   rF  r   r   r)   r   r   r  r  rv   r   r  r>   s     rO   test_universalsetr  g  s    	AsA??1''''778Aq>>""a'''';;x1~~&&(1a..88889
"""":####::a==AF""""""rQ   c                      t          dd          } t          ddd          }t          | | z  | |z            | | z  k    sJ d S )Nr   rI   rD   )r)   r'   r-   )r2  pointss     rO    test_Union_of_ProductSets_sharesr  s  sM    Aq>>Dq!QFdVm,,t;;;;;;rQ   c                      t          dd          j        t                      k    sJ t          dd          } t          d|           j        | hk    sJ d S )Nr   rD   r>   TrF   )r)   free_symbolsr-  r   rX   s    rO   test_Interval_free_symbolsr  y  sX    Aq>>&#%%////sAAq>>&1#------rQ   c                     t          dd          } t          dd          }t          | d| z  t          dd                    t          dd          k    sJ t          | d| z  t          dddd	                    t          dddd	          k    sJ t          | | dz  t          dddd	                    t          d
dd	d          k    sJ t          | | dz  t          dd                    t          d
d          k    sJ t          | | dz  t          dddd	                    t          d
dd	d          k    sJ t          | | dz  t          dddd                    t          d
dd	d          k    sJ t          | | dz
  dz  t          dd                    t          d
d          k    sJ t          | d| dz  z  d| dz  z  z
  d| dz  z  z   d| z  z
  t          d
d                    t          dd
          k    sJ t          | | d| z  z   t          t           t                              t          t           d          t          dt                    z   k    sJ t          | d| z  d| dz
  dz  z  z   t          d
ddd	                    t          t	          dd          t          d	          k    sJ t          d t          dd                    t          dd          k    sJ t          t          | || z            t          d
d                    t          t          | || z            t          d
d                    k    sJ t          t          | t          t          |                               t          d
d                    t          t          | t          t          |                               t          d
d                    k    sJ d S )Nr>   TrF   r   rI   r_   rD   r  Fr   r   rb      N   Z   ic                     d| z  S r(  rT   rX   s    rO   rP   z%test_image_interval.<locals>.<lambda>  s
    ac rQ   )	r   r.   r)   r   r   r   r#   r   r   )r>   r   s     rO   test_image_intervalr    s   sAsAAqsHR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^^<<= = = = = =rQ   c            
         t          t          t          dk    fdt          dz  z  t          dk    ft          dz  df          } t          dt          dk    fdt          dk    fd          }t          t          | t          d	d                    t	          t          d	d          t          t          dd
          t                              k    sJ t          t          |t          dd                    t          dd          k    sJ d S )Nr   rD   rI   r   rb   Tr   )rI   Tr{      )r   r>   r.   r)   r-   r   r   r'   )rY   f1s     rO   test_image_piecewiser    s    1a2g,1a4a 01a4,??A	AqAv;AFY	7	7BAq(2q//**eHR4D4DhxXY[]`bFcFc.d.dddddAr8Aq>>**i1oo======rQ   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>   TrF   r?   rI   r_   r   r   )r   r.   r)   r   r   r   ra   s     rO   test_image_Intersectionr    s    sAsAAq!tXb!__66x1~~FFGGAq>>##HSAq!t__c!Q$1oo$N$NOOP P P P P PrQ   c            	          t          dd          } t          | d| z  t          ddd                    t          ddd          k    sJ d S )	Nr>   TrF   rI   rD   rb   r   r  )r   r.   r'   rX   s    rO   test_image_FiniteSetr    sS    sAAqsIaA..//9Q13E3EEEEEEErQ   c            
          t          dd          } t          | | dz  t          dd          t          ddd          z             t          dd	          t          d
          z   k    sJ d S )Nr>   TrF   rI   r_   r   rD   rb   r   r  )r   r.   r)   r'   rX   s    rO   test_image_Unionr    st    sAAq!tXb!__yAq/A/AABBa^^ill*, , , , , ,rQ   c                      t          dd          } t          | d| z  t          j                  t          j        k    sJ d S )Nr>   TrF   rI   )r   r.   r   rv   rX   s    rO   test_image_EmptySetr    s?    sAAqsAJ''1:555555rQ   c                      t           t          j        vsJ t          t           t                                        t                     t          j        u sJ d S rL   )r   r   rg   r)   r   r   r   rT   rQ   rO   test_issue_5724_7680r    sH    AGRC%%a((AG333333rQ   c                      t          d          j        t          d          k    sJ t          d t          t          fD                       sJ d S )NrD   c              3      K   | ]>}t           t          fD ]-}t          d d||          j        t	          d d          k    V  .?dS )r   rD   N)r   r   r)   r  r'   )r   r   r   s      rO   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rQ   )r'   r  r	  r   r   rT   rQ   rO   test_boundaryr    st    Q<< IaLL0000 L L"E]L L L L L L L L L LrQ   c            	      $   t          dd          t          dd          z   j        t          dddd          k    sJ t          dddd          t          dddd          z   j        t          ddd          k    sJ t          dd          t          d          z   j        t          ddd          k    sJ t          t          dd          t          dd	          d
          j        t          dd	          k    sJ t          t          dd          t          dd          d
          j        t          dd          k    sJ t          t          dddd          t          dd	dd          d
          j        t          ddd	          k    sJ d S )Nr   rD   rI   rb   FTr   r   re  r   )r)   r  r'   r-   rT   rQ   rO   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##$ $ $ $ $ $rQ   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   re  Fr   N)r-   r)   r  r'   rT   rQ   rO   #test_union_boundary_of_joining_setsr    sV     !R(2r"2"2UCCCLB           rQ   c                  @   t          dddd          dz  } | j        t          dd          t          dd          z  t          dd          t          dd          z  z   k    sJ t          dddd          t          dddd          z  }| |z   j        t          dd          t          dd          z  t          dd          t          dd          z  z   t          dd          t          dd          z  z   t          dd          t          dd          z  z   k    sJ d S )Nr   rD   TrI   )r)   r  r'   )open_squaresecond_squares     rO   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 2rQ   c                  `    t          dd          t          d          z  } | j        | k    sJ d S r   )r)   r'   r  )
line_in_r2s    rO   test_boundary_ProductSet_liner    s4    !Q)A,,.J*,,,,,,rQ   c                      t          dddd          j        du sJ t          dddd          j        du sJ t          dddd          j        du sJ t          ddd          j        du sJ d S Nr   rD   FTrI   rb   )r)   is_openr'   rT   rQ   rO   test_is_openr	    s    Aq%''/58888Aq$&&.%7777Aq$%%-5555Q1%......rQ   c                      t          dddd          j        du sJ t          dddd          j        du sJ t          ddd          j        du sJ d S r  )r)   	is_closedr'   rT   rQ   rO   test_is_closedr    sl    Aq%''1T9999Aq$&&0E9999Q1'4//////rQ   c                  `    t          dddd          j        t          dddd          k    sJ d S Nr   rD   FT)r)   closurerT   rQ   rO   test_closurer    s8    Aq%&&.(1a2N2NNNNNNNrQ   c                  `    t          dddd          j        t          dddd          k    sJ d S r  )r)   interiorrT   rQ   rO   test_interiorr    s8    Aq%&&/8Aq$3M3MMMMMMMrQ   c                  2    t          t          d            d S )Nc                  (    t           t          j        v S rL   )r>   r   rg   rT   rQ   rO   rP   z!test_issue_7841.<locals>.<lambda>  s    a17l rQ   )r:   ri   rT   rQ   rO   test_issue_7841r    s    
9**+++++rQ   c                     t          t          dd          t          dd                    sJ t          t          dd          t          dd                    dk    sJ t          dd          } t          dd          }t          | |           sJ t          | |          dk    sJ t          | |z  | |z            sJ t          | |z  || z            dk    sJ t          t           t          t          t
          h          t          t          h                    sJ t          t          t          t
          h                              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   rD   rI   FrT   )r2   r)   r'   r1   r>   r?   rL  r   r   r   r*   )r  r  r  r  s       rO   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-?-?@@@@@@@rQ   c                     t          dddddd          t          ddddd	          } t          dd	          t          | d
          j        du sJ t          d
          j        J t          t          | d
           t          ddddddd	          k    sJ t	          t
          fd           t          t          dddddd          t          ddddd	                    t          ddddddd	          k    sJ t          t          ddd          t          dddd                    t          d          k    sJ t          ddddd          t          dddd          z  t          ddd          k    sJ t          t          d          t          d          t          d                    t          t          d          t          d          t          d                    z  t          t          t          d          t          d          t          d                    t          t          d          t          d          t          d                    z
  t          t          d          t          d          t          d                    t          t          d          t          d          t          d                    z
            k    sJ t          dd          t          dd          z  t          t          dd          t          dd          z
  t          dd          t          dd          z
            k    sJ d S )Nr   rD   rI   rb   r   r   r  r  r   Fr   Tc                  6    t          t           d           S r   )r'   r,   r   s   rO   rP   z*test_SymmetricDifference.<locals>.<lambda>3  s    	.q!eDDDE rQ   )	r'   r)   r,   r   r:   ri   r+   r   r-   r   r   r   s    @@rO   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^^;/= /= = = = = = =rQ   c            	         ddl m}  t          dd          }t           | |                                        t
          j                  t          t
          j        t           | |                              k    sJ d S )Nr   )logr   TrF   )&sympy.functions.elementary.exponentialr  r   r'   r   r   rg   r(   )r  r   s     rO   test_issue_9536r   A  s~    ::::::sASSVV&&qw//<SVSVWXSYSYIZIZ3[3[[[[[[[rQ   c                     t          d          } t          |           }t          d|           }t          t          j        |          t          t          j        |d          k    sJ t          t          dd          |          t          t          dd          |d          k    sJ t          t          dd          |          t          t          t          dddd          t          dddd                    |          k    sJ t          |t          j                  t          |t          j        d          k    sJ t          |t          dd                    t          |t          dd          d          k    sJ d S )NrB   rI   Fr   rD   rb   T)r   r'   r%   r   rg   r)   r-   )rB   r   r   s      rO   test_issue_9637r"  G  s^   sA!A!QA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YrQ   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 )NrD   Fr   rI   rb   )r%   r'   r?   r>   rT   rQ   rO   test_issue_9808r$  S  s    illIaLL11Z	!iXYllej5k5k5kkkkki1a(()Aq!Q*?*?@@9Q<<1>>>? ? ? ? ? ?rQ   c                  (   t          t          t           t                    t          d                    t          t           t                    k    sJ t          t           t                                        d          t
          j        u sJ d S r   )r-   r)   r   r'   r   r   r   rT   rQ   rO   test_issue_9956r&  Z  sn    2#r""IaLL11Xrc25F5FFFFFRC%%a((AF222222rQ   c            
         t          dt                    } t          j        }t	          g d          }t          || t          t                    t          t          t                              t          | t          t                              k    sJ t          t          dt          t                    t          t          t          d          |           t          | t          t          t                              k    sJ t          t          t          t          t                    t          t          t                    |          t          t          t          t          ht          t          t          h          |          k    sJ t          t          t          t          d          t          t          t          t                    |          t          t          dt          t                    t          t          t          t                    |d          k    sJ t          t          t          t          d          t          t          t          dd          |          t          t          dt          t                    |          k    sJ t          |t          |dt                    t          d|t                              t          |t          t                              k    sJ t          t          t          t                    t          t                              t          t          t                    t          t                    d          |          t          |t          t          t                    t          t                                        k    sJ t          t          t          dz  dt          t                              t          t          dz  dt          t                              |          t          |t          t          dz  t          t                                        k    sJ d S )Nr   )r   r   r   rD   rI   rb   Fr   )r)   r   r   rg   r    r(   r'   rA   rB   r>   r@   r   r   )r  rE   mats      rO   test_issue_Symbol_interr)  _  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 1rQ   c                  (    t           j        dz  sJ d S )Nr   )r   re   rT   rQ   rO   test_issue_11827r+  u  s    ;>rQ   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 )
NrI   r   r   rD   Tr_   rb   r  r   )r>   r.   r   rg   r-   r)   r   r   rY   s    rO   test_issue_10113r.  y  s    	1adQhAAq!'""eHbS!,<,<hq"dTX>Y>Y&Z&ZZZZZAq(2q//**hsA.>.>>>>>Aq(2q//**eHbS!4D4DhxXY[\~~_aFbFb.c.cccccccrQ   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 rL   )r   r(   r   rg   r'   r>   rT   rQ   rO   rP   z"test_issue_10248.<locals>.<lambda>  s     4QWill C CDD rQ   r   TrF   )r:   ri   r   r   r(   r   rg   r'   )r   s    rO   test_issue_10248r1    sd    
DD   	sAQWill3344;;;;;;rQ   c                     t          dd          t          dd          z   } t          t          j        |           t          t          j        t	          t          dd          t          dd                    d          k    sJ t          t          j        |           t          t          j        t	          t          dd          t          dd                    d          k    sJ d S )Nr   rD   rI   rb   Fr   )r)   r%   r   rt   r-   rd   r   s    rO   test_issue_9447r3    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rQ   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 )	NrI   rb   FTc                  (    t          d          dk     S NrI   rb   r   rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>      illQ. rQ   c                  (    t          d          dk    S r6  r   rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>      illa/ rQ   c                  (    t          d          dk    S r6  r   rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>  r7  rQ   c                  (    t          d          dk    S r6  r   rT   rQ   rO   rP   z"test_issue_10337.<locals>.<lambda>  r9  rQ   )r'   r:   ri   rT   rQ   rO   test_issue_10337r<    s    aLLA%''''aLLA$&&&&
9..///
9//000
9..///
9//00000rQ   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 )NrD   rI   r   r   r>   TrF   nrFr   r   )rv   r'   r)   r   r1  r   r  NaNr  r   r   r   r   )badintervalr  r>   r>  s        rO   test_issue_10326rB    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5rQ   c                      t           j        } t          dd          }t          |t                    }t           j        }| |z   || z   k    sJ | |z   || z   k    sJ ||z   ||z   k    sJ d S )Nr   TrF   )r   rt   r   r)   r   rg   )r  r   inf_intervalRs       rO   test_issue_2799rF    s    	AsAAr??L	A||a/////q5AE>>>>||a///////rQ   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  rT   rQ   rO   test_issue_9706rH    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9rQ   c                     t          t          t           t                    t          t                              } t          t          t           t                    t          t                               }t          t           t                    t          t                    z   | k    sJ t          t                    t          t           t                    z   | k    sJ t          t           t                    t          t                     z   |k    sJ t          t                     t          t           t                    z   |k    sJ d S rL   )r-   r)   r   r'   )reals_plus_infinityreals_plus_negativeinfinitys     rO   test_issue_8257rL    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LrQ   c                      t           j        t           j        z
  t          k    sJ t           j        t           j        z
  t          k    sJ d S rL   )r   rc   rv   rg   rT   rQ   rO   test_issue_10931rN    s<    :
"h....:8++++++rQ   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   rg   )solns    rO   test_issue_11174rQ    s    "b))9aR==5IIID	1"qw//477771>>>D	!ag..$666666rQ   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 )NrI   rD   r   )	r#   r   rB   r   r   r   rc   r   r"   rT   rQ   rO   test_issue_18505rS    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rQ   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   rI   rb   rD   Fr   )r(   r'   r   r>   _handle_finite_setsr?   rT   rQ   rO   test_finite_set_intersectionrV    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rQ   c                      t          d          t          d          g t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t	                               t            k    sJ t          t	                               t            k    sJ t          dhdh          t          dd          k    sJ t          ddhdd	h          t          d          k    sJ d S )
NrD   rI   c                  "    t                     S rL   r   r   s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    eDkk rQ   c                  "    t                     S rL   r(   rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    l400 rQ   c                  <    t          t                               S rL   )r-   tuplerY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    eE$KK00 rQ   c                  <    t          t                               S rL   )r(   r]  rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    l5;;77 rQ   c                  6    t          d  D                       S )Nc              3      K   | ]}|V  d S rL   rT   r  s     rO   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s"      #4#4!A#4#4#4#4#4#4rQ   r   rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    e#4#4t#4#4#444 rQ   c                  6    t          d  D                       S )Nc              3      K   | ]}|V  d S rL   rT   r  s     rO   r   zHtest_union_intersection_constructor.<locals>.<lambda>.<locals>.<genexpr>  s"      *;*;1*;*;*;*;*;*;rQ   r[  rY  s   rO   rP   z5test_union_intersection_constructor.<locals>.<lambda>  s    l*;*;d*;*;*;;; rQ   rb   )r'   r:   	Exceptionr-   r-  r(   rY  s   @rO   #test_union_intersection_constructorrd    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7rQ   c                      t           t          t          j        t           d          t          j        dt                              vsJ d S r   )r   r-   r)   r   r   rT   rQ   rO   test_Union_containsrf    sN    erc1x}Q335 5 5 5 5 5 5 5rQ   c                      t          t          t          t          ft          j                                      t          j        dz            du sJ d S )NrI   T)r.   r>   r   rg   r   rT   rQ   rO   test_issue_16878brh    sA    
 A1vqw''11!'1*==EEEEEErQ   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 )NrD   rI   rb   r   r   r   r   c                  :    t          t          d                    S )NrB   )r&   r   rT   rQ   rO   rP   z$test_DisjointUnion.<locals>.<lambda>  s    mF3KK88 rQ   r>   r?   r@   )r&   r'   rewriter-   r)   r   rv   r   r:   ri   r   )r>   r?   r@   s      rO   test_DisjointUnionrl    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rQ   c                     t          t          j                  j        du sJ t          t          j        t          j                  j        du sJ t          t          j        t	          ddd                    j        du sJ d S )NTrD   rI   rb   F)r&   r   rv   ru   r'   rT   rQ   rO   test_DisjointUnion_is_emptyrn  %  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JrQ   c                     t          t          j        t          j        t          j                  j        du sJ t          t          j        t          j                  j        du sJ t          t          ddd          t          j        t          t          t                              j        du sJ t          t          j        t          j                  j        du sJ d S )NTFrD   rI   rb   )r&   r   rc   rd   rs   r   rv   rg   r'   r>   r?   rT   rQ   rO   test_DisjointUnion_is_iterablerp  *  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ErQ   c            
      "
   dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ d	t          t          ddd          t          ddd          t          ddd                    v sJ d
t          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    v sJ dt          t          ddd          t          ddd          t          ddd                    vsJ dt          t          d                    vsJ dt          t          ddd          t          ddd          t          ddd                    vsJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ t          dft          t          t          t          t                    t
          j        t          t                              v sJ dt          t          dd          t          dd                    v sJ dt          t          dd          t          dd                    v sJ dt          t          dd          t          dd                    vsJ dt          t          dd          t          dd                    v sJ d S )Nr   r   rD   rI   )r   rD   )r   rI   r   rJ   rH   )rI   r   rI   rD   r+  )r   rD   rI   )r   r   r   )r   r   )r   r   )r   rD   )r  r   )r  rD   )r&   r'   r>   r?   r@   r   rv   r)   rT   rQ   rO   test_DisjointUnion_containsrs  0  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DrQ   c                     t          t          dddd          t          t          t          t                              } t          |           t          dft          dft          dfg}g d}t                    }||v sJ |                    |           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 )	Nrb   r   rd  r  rD   ))rb   r   )r   r   )rd  r   )r  r   c                  "    t                     S rL   )next)its   rO   rP   z)test_DisjointUnion_iter.<locals>.<lambda>`  s    $r(( rQ   c                  l    t          t          t          dd          t          j                            S r   )iterr&   r)   r   rv   rT   rQ   rO   rP   z)test_DisjointUnion_iter.<locals>.<lambda>b  s"    tM(1a..!*$M$MNN rQ   )r&   r'   r>   r?   r@   ry  rv  remover:   StopIterationrj   )r   L1L2nxtrw  s       @rO   test_DisjointUnion_iterr  F  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OrQ   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 )Nrb   r   rd  r  c                  l    t          t          t          dd          t          j                            S r   )r  r&   r)   r   rv   rT   rQ   rO   rP   z(test_DisjointUnion_len.<locals>.<lambda>g  s"    s=!Q#L#LMM rQ   )
r  r&   r'   r>   r?   r@   r   rv   r:   rj   rT   rQ   rO   test_DisjointUnion_lenr  d  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NrQ   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 NrD   rI   )	r*   r'   r    r   r   r/   r   kindr)   )r   mkks      rO   test_SetKind_ProductSetr  i  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krQ   c                  \    t          dd          j        t          t                    u sJ d S r  )r)   r  r/   r   rT   rQ   rO   test_SetKind_Intervalr  p  s,    Aq>>'*"5"5555555rQ   c                      t           j        j        t          t                    u sJ t
          j        t                      u sJ d S rL   )r   rt   r  r/   r	   rv   rT   rQ   rO   "test_SetKind_EmptySet_UniversalSetr  s  s=    >'-"8"88888=GII%%%%%%rQ   c                      t          dt          ddg                    j        t          t                    u sJ t          dd          j        t          t
                    u sJ d S r  )r'   r    r  r/   r	   r   rT   rQ   rO   test_SetKind_FiniteSetr  w  s\    Q1v'',0F0FFFFFQ??7:#6#6666666rQ   c                  >   t          t          t          ddg                    t          dd                    j        t          t                    u sJ t          t          dd          t          dd                    j        t          t                    u sJ d S )NrD   rI   rd  )r-   r'   r    r)   r  r/   r	   r   rT   rQ   rO   test_SetKind_Unionsr  {  s~    61a&>>**HQNN;;@GMDZDZZZZZ!Q!Q0059L9LLLLLLLrQ   c                      t          ddd          } t          dd          }t          | |          j        t	          t
                    u sJ d S )NrD   rI   rb   r   r   )r'   r)   r&   r  r/   r   r<  s     rO   test_SetKind_DisjointUnionr    sL    !QAAAA#wz':':::::::rQ   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    rO   rP   z-test_SetKind_evaluate_False.<locals>.<lambda>  s    eT2E22 rQ   rD   rI   r   r   c                      t          | ddiS r  r[  r  s    rO   rP   z-test_SetKind_evaluate_False.<locals>.<lambda>  s    lD9599 rQ   c                      t          | ddiS r  )r%   r  s    rO   rP   z-test_SetKind_evaluate_False.<locals>.<lambda>  s    j$777 rQ   >   rD   rI   r   r   >   rD   rI   rb   r   r   )	rv   r  r/   r   r)   r   rt   r	   r'   )r  r   r   s      rO   test_SetKind_evaluate_Falser    s   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9rQ   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 )NrI   rD   r   rb         )r#   r   rB   r)   r'   r  r/   r   r-  s    rO   test_SetKind_ImageSet_Specialr    s    16""HQNN33A	!"gj&9&99999R   &'**=*=====	"#wz':':::::::rQ   c                  $   t          t          dd          t          d                    } d| vsJ d| vsJ t          dt          dd                    rJ t          d          | v sJ t          dd          }|| v sJ |                     |           sJ |                    |           rJ d|v sJ t          t          dd          t          d          dd          }|                    |          sJ |                     |          sJ d S )NrD   rI   r   )r'   r2   ro  r  s      rO   test_issue_20089r    s   )Aq//9Q<<00AA::::a<<<<!Yq!__%%%%%Q<<1!QA6666::a==zz!}}6666)Aq//9Q<<A66A::a==::a==rQ   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 )	NrD   rI   rJ   rH   rr  r+  TF)	r'   r*   r   r2   simplifyr   r   r   r>   )r   r   r5  ds       rO   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2rQ   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 )NrB   rf  rD   )r   r   r(   r$   r)   rp  s    rO   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MrQ   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 )	NrB   T)r\   r   r   r   i  r      )r   r(   r$   r)   rp  s    rO   "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**?, ?, , , , , , ,rQ   c                      t           dz
  } t          |                               d          t          t          dd                    k    sJ d S )Ng-DT!	@rI   z3.23108914886517e-15)r   r'   ra  r
   rX   s    rO   test_issue_20379r    sK    
AQ<<a  Ie4JA.N.N$O$OOOOOOOrQ   c                      t          dt          d          dz  t          d          dz  z             }  | j                    dhk    sJ d S r  )r'   r   r   r  r   s    rO   test_finiteset_simplifyr    sK    !SVVQYQ*++A1:<<A3rQ   c                     t           j        } t          d          }| |                     t	          |d                                                    z  } | |                     t           j                                                  z  } d S )Nr>   rD   )r   r0  r   r   r3   r  r   r  s     rO   test_issue_14336r    s`    	AsAR1XX__&&	'	''AQV]]__	%	%%AAArQ   c                      t          dd          \  } }}t          d|           t          |d          z  }t          dd          }|                    |          d k    sJ d S )Nzx, y, zTrF   rD   rI   )r   r)   r   )r>   r?   r@   r  r  s        rO   test_issue_9855r    sd    id+++GAq!	!Q(1a..	(B	!QB<<t######rQ   N)sympy.concrete.summationsr   sympy.core.addr   sympy.core.containersr   sympy.core.functionr   sympy.core.kindr   r	   sympy.core.numbersr
   r   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.elementary.miscellaneousr   r   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   sympy.logic.boolalgr   r   sympy.matrices.kindr   sympy.matrices.denser    sympy.polys.rootoftoolsr!   sympy.sets.containsr"   sympy.sets.fancysetsr#   r$   sympy.sets.setsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   mpmathr0   sympy.core.exprr1   sympy.core.relationalr2   r3   r4   r5   r6   sympy.logicr7   r8   r9   sympy.testing.pytestr:   r;   r<   sympy.utilities.iterablesr=   r  r>   r?   r@   rA   rB   rv   rq   ry   r}   r   r   r   r   r   r   r   r   r   r   r  r  r%  r3  r6  r9  r=  rR  rT  rV  rX  r\  rb  rl  rq  ru  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r   r"  r$  r&  r)  r+  r.  r1  r3  r<  rB  rF  rH  rL  rN  rQ  rS  rV  rd  rf  rh  rl  rn  rp  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rT   rQ   rO   <module>r     s
   ) ) ) ) ) )       + + + + + + & & & & & & 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CI CI CIL. . .8 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
  & & &$ $ $ $ $rQ   