
    MZdY                        d dl 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mZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ d dlKmLZLmMZM d dlNmOZO d dlPmQZQmRZR  ed      \  ZSZTZUZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d Z_d Z`d Zad Zbd Zcd Zdd Zed Zfd Zgd  Zhd! Zid" Zjd# Zkd$ Zld% Zmd& Znd' Zod( Zpd) Zqd* Zrd+ Zsd, Ztd- Zud. Zvd/ Zwd0 Zxd1 Zyd2 Zzd3 Z{d4 Z|d5 Z}d6 Z~d7 Zd8 Zd9 Zd: Zd; Zd< Zy=)>    )dedent)isliceproduct)Basic)Integerordered)Dummysymbols)	factorial)Matrix)RGS_enum
RGS_unrankPermutation)4
_partition_set_partitionsbinary_partitions	braceletscapturecartescommon_prefixcommon_suffixconnected_components
dict_mergefilter_symbolsflattengenerate_bellgenerate_derangementsgenerate_involutionsgenerate_oriented_forestgrouphas_dupsibiniproductkbinsminlexmultisetmultiset_combinationsmultiset_partitionsmultiset_permutations	necklacesnumbered_symbols
partitionspermutations	postfixesprefixesreshaperotate_leftrotate_rightrunssiftstrongly_connected_componentssubsetstaketopological_sort	unflattenuniq
variationsordered_partitions	rotationsis_palindromiciterableNotIterablemultiset_derangementssequence_partitionssequence_partitions_empty)factoring_visitormultiset_partitions_taocp)S)raiseswarns_deprecated_sympyzw,x,y,zc                  4   ddl m} m} t               5  t	         |t
        t        g            t        t
        gk(  sJ 	 d d d        t               5  t        t
        t        g|       t        t
        gk(  sJ 	 d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   default_sort_keyr	   key)sympy.utilities.iterablesrL   r	   rI   listyxsortedrK   s     F/usr/lib/python3/dist-packages/sympy/utilities/tests/test_iterables.pytest_deprecated_iterablesrU   !   s}    C		! /GQFO$A.../		! >q!f"231v===> >/ /> >s   +B'BBBc                  j   t        d      sJ t        d      sJ t        d      sJ t        d      sJ t        d      rJ t        d      rJ t        dd      sJ t        dd	      rJ t        dd	d
      sJ t        dd	d      sJ t        dd      sJ t        dd	      rJ t        dd	d      sJ y )N rR   xxxyxxyxyzxxxyzzyx         xxyzyx   )r?        rT   test_is_palindromicre   )   s    "#$%   d###f%%%)Q'''i+++)Q+++)Q***(A&&&h***(Au---rd   c                  |   t        d      ddgk(  sJ t        t        t        ff      t        t        gk(  sJ ddgdggt        d      k(  sJ t        d      g dk(  sJ t        d	      g d
k(  sJ t        d      g d
k(  sJ t        t        fd        G d dt              } t         | t        t
              t        g       | t        t
              t        gk(  sJ t         | t        t
              t        g|       t        t
        t        gk(  sJ t        h d      t        h d      k(  sJ y )N)r]   r]   r]   r_   r]   r^   r   r   r   levels)rh   rj   rk   r^   )ri   r_   r]   r^   r   r      c                      t         d      S )Nr_   rl   )r   )lss   rT   <lambda>ztest_flatten.<locals>.<lambda>D   s    wr"5 rd   c                       e Zd Zy)test_flatten.<locals>.MyOpN__name__
__module____qualname__rc   rd   rT   MyOprs   F       rd   rx   cls>   r]   r^      )r   rR   rH   
ValueErrorr   rQ   zrP   )rx   rp   s    @rT   test_flattenr   9   s   9!Q'''At9!Q'''V
vh	'B2a B&&&2a $>>>>2a $88882a $8888
:56u  DAJ?#Q
A666DAJ?-!Q::::$z"2222rd   c            	         t        t                     dgk(  sJ t        t        g             g k(  sJ t        t        g d            g dk(  sJ t        t        ddgg d            g dk(  sJ t        t        ddgddgddg            g d	k(  sJ t        t        t        j
                              d
u sJ t        t        t        j
                  t        j
                              d
u sJ dt        t        j
                        v sJ dt        t        j
                  t        j
                        v sJ dt        t        j
                  t        j
                  t        j
                        v sJ t        t        t        t        j
                  t        j
                  t        j
                        d            } | D ]<  \  }}}t        |t              sJ t        |t              sJ t        |t              r<J  t        t        t        dd      gdz         D ]=  }|t        t        j
                  t        j
                  t        j
                        v r=J  y )Nrc   r]   r^   rn   rg   r^   rn   r]   r^   rn      rb   r]   rn   )r]   r   )r]   rb   r^   rn   r^   r   )r^   rb   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]   Tr   )r   rb   i  ri   rn   )rP   r$   rS   r@   rG   Integerssetr   
isinstancer   r   range)triplesn1n2n3ts        rT   test_iproductr   O   s   
t######!"&6666(Aq69-. 3- - - -(Aa5!A!u-. 3I I I IHQZZ()T111HQZZ45===8AJJ''''Xajj!**5555QZZDDDD6(1::qzz1::FMNG '
B"g&&&"g&&&"g&&&' E"aL>!+-. AHQZZQZZ@@@@Ard   c                      t        g       g k(  sJ t        g d      g k(  sJ t        dg      dggk(  sJ t        dgd      dgk(  sJ t        ddg      ddggk(  sJ t        ddgd      dgk(  sJ t        g d      g dgk(  sJ t        g dd      dgk(  sJ t        g d      dgd	gdggk(  sJ t        g dd      g d
k(  sJ t        g d      ddgg ddgddggk(  sJ t        g dd      g dk(  sJ y )NF)multipler]   r]   r]   rj   r   r   r]   r^   r]   r^   )r   r^   r]   r   )r]   r]   r^   r^   r^   r]   rn   rn   r^   r^   r^   rn   )rj   r   r   rn   r^   )r!   rc   rd   rT   
test_groupr   e   s6   9??e$***!:1#!u%&111!Q=aVH$$$!Q%(VH444	{***U+x777aS1#...U+/GGGG)*1vy1#1v.NNNN)E: ?) ) ) )rd   c            	         t        t        g dd            dgk(  sJ t        t        g dd            g dk(  sJ t        t        g dd            g dk(  sJ t        t        g dd            dgk(  sJ t        t        d	            } t        t        | dd
            dgk(  sJ t        t        | dd
            g dk(  sJ t        t        | dd
            g dk(  sJ t        t        | dd
            g dk(  sJ t        t        t        | d	d
                  dk(  sJ t        t        | d d dd            g k(  sJ t        t        | d d dd
            g dk(  sJ t        t        ddgd
            g dk(  sJ t        t        ddgd            g dk(  sJ t        t        g dd            g dk(  sJ t        t        g ddd
            g dk(  sJ y )Nr   r   rc   r]   r   r^   )rj   r   r   rn   r   T
repetitionr   rg   r   r   )
rk   r   r]   r   r^   r   rn   r   rj   r   r^   r^   r   rn   rn   )r   r   )r   r   r^   )r   r   rn   r   r   r]   r^   r   r]   rn   )r   r^   r^   r   r^   rn   )r   rn   rn   r   r]   r]   r^   r]   r]   rn   r]   r^   r^   r   )r]   rn   rn   r   )r^   r^   rn   )r^   rn   rn   )rn   rn   rn   #   F)r   r   r   r   )rc   rg   r   r   rj   r   )rc   rg   r   rj   )r   rj   r   r   r   r   )rP   r7   r   lenls    rT   test_subsetsr   z   s   	1%&2$...	1%&*<<<<	1%&*BBBB	1%&9+555U1XA1./B47771./3KKKK1./ 4< < < < 1./ 	4J 	J 	J 	J tGAqT234:::"1qU34:::"1qT23 8C C C C A40101 1 1A512 ! ! !	1%& ! ! !	16789 9 9rd   c            	         t        t        d            } t        t        | dd            dgk(  sJ t        t        | dd            g dk(  sJ t        t        | dd            g d	k(  sJ t        t        | d
d            g dk(  sJ t        t        | dd            dgk(  sJ t        t        | dd            g dk(  sJ t        t        | dd            g dk(  sJ t        t        t        | d
d                  dk(  sJ t        t        t        | dd                  dk(  sJ t        t        | d d d
d            g k(  sJ t        t        | d d d
d            g dk(  sJ y )Nr   r   Fr   rc   r]   r   r^   )r   r   r   r]   r   rj   r   r^   r   r   r   rn   r   rn   r]   r   rn   )r   r   r   r^   r]   r   r   rn   r]   )r   rn   r^   r]   r   r^   )r]   r   rn   r]   r^   r   r   )r]   rn   r   )r]   rn   r^   r^   r   r]   )r^   r   rn   r^   r]   r   )r^   r]   rn   )r^   rn   r   )r^   rn   r]   )rn   r   r]   )rn   r   r^   )rn   r]   r   )rn   r]   r^   )rn   r^   r   rn   r^   r]   T)rk   r   r   r   r   r   rj   r   r   r   r   r   r   r   r   r   @      r   )rP   r   r<   r   r   s    rT   test_variationsr      s   U1XA
1aE23t;;;
1aE237OOOO
1aE23  8X  X  X  X
1aE23  8@  @  @  @
1aD12rd:::
1aD126NNNN
1aD12 7? ? ? ? tJq!5672===tJq!5673>>>
1Ra5!672===
1Ra5!56 ;   rd   c            	      <   t        t        ddgg d            g dk(  sJ t        t                     dgk(  sJ t        t        d            dgk(  sJ t        t        dd            d	gk(  sJ t        t        t        t        d                        d
dgk(  sJ y )Nr]   r^   r   r   rc   a)r   )repeat)r   r   r   rg   )rP   r   r   rc   rd   rT   test_cartesr      s    1vy)*89 9 9>bT!!!s(((s1%&:,666tE!H~&'D$<777rd   c                      t               } t        | t        d            }t        |d      t	        t        d            k(  sJ y )Nzx0 x2 x3rn   zx1 x4 x5)r,   r   r   r8   rP   )sfiltereds     rT   test_filter_symbolsr      s:    Aa!45H!WZ%8 9999rd   c            	          t        t              } t        t        |       t              sJ t        t        ddt	        d      g            t	        d      k(  sJ y )Nrz   Cr]   C1)startexcludeC2)r,   r
   r   nextr   )r   s    rT   test_numbered_symbolsr      sN    U#Ad1gu%%% AGH  rd   c                     t        t        t        d            d       ddgg ddk(  sJ t        t        t        gd       t        gt        gdk(  sJ t        t
        j                  gd	       d
dgik(  sJ t        g dd d      ddgddgfk(  sJ t        g dd d      dgg dfk(  sJ t        t        d        y )Nrb   c                     | dz  S Nr^   rc   _s    rT   rq   ztest_sift.<locals>.<lambda>   s
    !a% rd   r]   rn   )r   r^   r   r   c                 ,    | j                  t              S NhasrR   r   s    rT   rq   ztest_sift.<locals>.<lambda>   s    !%%( rd   )FTc                 ,    | j                  t              S r   r   r   s    rT   rq   ztest_sift.<locals>.<lambda>   s    1558 rd   Fr   r]   r^   rn   c                     | dz  S r   rc   rR   s    rT   rq   ztest_sift.<locals>.<lambda>   s
    A rd   Tbinaryr   r^   c                     | dz  dk(  S )Nrn   r]   rc   r   s    rT   rq   ztest_sift.<locals>.<lambda>   s    A
 rd   r   c                  $    t        g dd d      S )Nr   c                     | dz  S )Nrn   rc   r   s    rT   rq   z-test_sift.<locals>.<lambda>.<locals>.<lambda>   s
    QU rd   Tr   )r5   rc   rd   rT   rq   ztest_sift.<locals>.<lambda>   s    \?48 rd   )	r5   rP   r   rR   rQ   rG   OnerH   r}   rc   rd   rT   	test_siftr      s    U1X0A94MMMMA*+s1#/FFFF+,<<<od;	
AA@   24@	
YE   
: 9 :rd   c                      t               } t        | d      t        t        d            k(  sJ t        | d      t        t        d            k(  sJ t        g dd      g dk(  sJ y )Nrb   zx0:5zx5:10r]   r^   rn   r   rb   )r,   r8   rP   r   )Xs    rT   	test_taker      sZ    A1:gfo....1:gg.////#666rd   c                     t        i dt        t        t        i      dt        t        t        ik(  sJ t        dt        t        t        ii       dt        t        t        ik(  sJ t        dt        idt        t        t        i      dt        dt        t        t        ik(  sJ t        dt        t        t        idt        i      dt        dt        t        t        ik(  sJ t        t        t        ddt        t        t        i      dt        dt        t        t        ik(  sJ t        dt        t        t        it        t        d      dt        dt        t        t        ik(  sJ y )Nr]   r^   rj   )r   rR   rQ   r~   rc   rd   rT   test_dict_merger      s   b1aA,'Aq!Q<777q!QlB'Aq!Q<777q!fq!Ql+1aAq/AAAAq!QlQF+1aAq/AAAA!lQ1aL1aAq!Q5GGGGq!QlaL1aAq!Q5GGGGrd   c                      t        t        g             g k(  sJ t        t        dg            dggk(  sJ t        t        ddg            dgddggk(  sJ t        t        g d            dgddgg dg dg dgk(  sJ y )Nr]   r^   r   r   r]   r^   rn   r   )rP   r0   rc   rd   rT   test_prefixesr      s    ###!A3%'''!Q !qcAq6]222)*
q!fi?@ @ @rd   c                      t        t        g             g k(  sJ t        t        dg            dggk(  sJ t        t        ddg            dgddggk(  sJ t        t        g d            dgddgg dg dg dgk(  sJ y )Nr]   r^   r   rb   r   r   )r^   rn   r   rb   )rP   r/   rc   rd   rT   test_postfixesr      s    	""$$$	1#QC5(((	1a&!"sQFm333	/*+
q!fi?@ @ @rd   c                       g dg d t         f      g dk(  sJ t         fd       g dk(  sJ t        t         fd       y )N)r^   rn   rb         	   
   r|   )	)r   r|   r   r   )rb   r|   )rn   r   )rn   r   )r|   r^   )r|   r   )r|   r   )r   r   )rn   rb   r   r   r|   r^   r   r   c                     |  S r   rc   )vs    rT   rq   z'test_topological_sort.<locals>.<lambda>	  s    1" rd   rM   )r   rb   r|   rn   r   r   r   r^   c                  &    t         dgz   f      S )N)r   r   )r9   EVs   rT   rq   z'test_topological_sort.<locals>.<lambda>  s    /A	M0BC rd   )r9   rH   r}   r   s   @@rT   test_topological_sortr    sV    "A	$A QF#'AAAAQF5"# # # :CDrd   c                     t        g g f      g k(  sJ t        g dg f      dgdgdggk(  sJ g d} g d}t        | |f      g dgk(  sJ g d} g d}t        | |f      dgddgdggk(  sJ g d} g d	}t        | |f      ddgddggk(  sJ y )
Nr   r]   r^   rn   rj   r   r   r   r   r   rj   r   r   rn   r   r   )rj   r   r  )r   rn   )r6   r   r   s     rT   "test_strongly_connected_componentsr    s    ("b2b888()R9qcA3_LLLA0A(!Q0YK???A(A(!Q0aS1a&1#4FFFFA(A(!Q0aVaV4DDDDrd   c                     t        g g f      g k(  sJ t        g dg f      dgdgdggk(  sJ g d} g d}t        | |f      g dgk(  sJ g d} g d}t        | |f      g dgk(  sJ g d} dd	g}t        | |f      ddgdd
ggk(  sJ y )Nr   r]   r^   rn   r  r   r  rj   r  r   )r   r  s     rT   test_connected_componentsr	     s    R)R///B0aS1#sOCCCA0AA'I;666A(AA'L>999A	AA'QFQF+;;;;rd   c                     g d} t        | d      g dk(  sJ t        | d      g dk(  sJ g } t        | d      }|g k(  sJ |j                  d       | g k(  sJ t        | d      }|g k(  sJ |j                  d       | g k(  sJ y )Nr   r]   r^   rn   r   r^   )r^   rn   r   r   r]   r]   )r   r   r]   r^   rn   )r2   r3   append)ABs     rT   test_rotater  1  s    Aq!///1000
AQA7N7HHQK7N7AqA7N7HHQK7N7rd   c            
      B   g d} t        t        | d            dgdgdgdgdgggk(  sJ t        t        t        | d                  dk(  sJ t        t        t        | d                  d	k(  sJ t        t        g d
d            g ddggg dddggg ddggg dddggddgg dggk(  sJ t        t        g dd            g ddggddgddggg ddggddgddgggk(  sJ t        t        g dd            g ddggg ddggddgddggg ddggddgddggddgddggdgg dggk(  sJ t        t        g dd            ddgdggdgddgggk(  sJ t        t        d            g dgddgdggddgdggdgddggdgdgdgggk(  sJ t        t        dd            ddgdggddgdggdgddgggk(  sJ t        t        dgdz  d            dgddgggk(  sJ t        t        dgdz              g dgdgddggdgdgdgggk(  sJ g d}t        t        |            t        t        t        |                  k(  sJ t        t        |d            g k(  sJ t        t        |d            g dggk(  sJ t        t        |dgz   d            g k(  sJ t        t        |dgz   d            g dggk(  sJ t        t        dd            g k(  sJ t        t        dd            ddgggk(  sJ t        t        d            dgggk(  sJ t        t        dd            g k(  sJ t        t        d            ddggdgdgggk(  sJ t        t        dd            ddgggk(  sJ t        t        dd            dggk(  sJ t        t        ddgd            ddgggk(  sJ g d}t        d      D cg c]  }t	        d |D               c}|k(  sJ dgddgd dgdd!gg d"g d#g d$g}t        ddg      D cg c]  }t        |ddg       c}|k(  sJ y c c}w c c}w )%Nr  rb   r   r]   r^   rn   r   r      )r]   r]   r]   r^   r^   )r]   r]   r]   r^   r   )r]   r]   r^   r^   r   r   r   r   )r]   r^   r   r]   rn   r   r^   rn   r   r   r   r   abbaaa)$)mpsyy)mpsyrQ   )mpsyy)r  rQ   rQ   )mpyyr   )mpysy)r  r   rQ   )mpsyy)r  r  rQ   )r  r   r  )r  r   rQ   rQ   )msyyp)msypy)r"  r!  rQ   )mspyy)r$  r#  rQ   )r$  r!  r  )r$  r!  rQ   rQ   )myyps)r&  r!  r   )mypsy)r(  r'  rQ   )r(  r#  r   )r(  r!  r  )r(  r!  r   rQ   )mpsyy)r*  r)  rQ   )r*  r'  r  )r*  r'  rQ   rQ   )r*  r%  r   )r*  r#  r  )r*  r#  r   rQ   )r*  r!  r  )r*  r!  r  rQ   )r*  r!  r   r  )r*  r!  r   rQ   rQ   sympyc              3   >   K   | ]  }d j                  |        ywrW   Njoin).0parts     rT   	<genexpr>z+test_multiset_partitions.<locals>.<genexpr>{  s     .D"''$-.      r      r`   )r   r^   rn   )r`   r^   r^   )r^   r^   r^   rn   )rP   r)   r   rS   tuplerF   rE   )r  r   ansr!  
factoringss        rT   test_multiset_partitionsr:  A  sr   A#Aq)*aS1#sQC/H.IIIIt'1-./2555t'1-./2555#OQ78	si!Q0<!2E	QFq!fi0=2 2 2 2 #L!45	QCAq6Aq6*Y,<
Q!Q:    #L!45	QC9qc*aVaV,<	QCAq6Aq6*aVaV,<
i:   
 #Iq12
Q!aV}7& & & & #A&'	q!fqc]aVaSMQC!Q=
qcA3,    #Aq)*
Q!A}sQFm/5 5 5 5#QC!GQ/0qcAq6]OCCC#QC!G,-	qcAq6]aS1#sO25 5 5 5A#A&' +,- - -#Aq)*b000#Aq)*	{m;;;#AGQ/0B666#AGQ/0l^4DDDD#Aq)*b000#Aq)*Axj888#C()ugY666#C+,222#D)*c
|secU^.LLLL#D!,-C:,???#E1-.E7);;;#QFA./aVH:===&C -W57 .A.. 7:=> > >$AQ!Q\+J /1v68 a!A' 8;EF F F	78s   3P9Pc                     g d} t        t        dd            D cg c]  }dj                  |       c}| k(  sJ t        d      }t        t        |d            D cg c]  }dj                  |       c}| k(  sJ t        |d      D cg c]  }dj                  |       c}g k(  sJ t        t        dgddggd            dgddgggk(  sJ t	        t        t        dd                  d	k(  sJ t	        t        t        dd	                  dk(  sJ t        t        d
d            dgdgdggk(  sJ t        t        d        y c c}w c c}w c c}w )N)iiiiimiipiisimpimsippipsissmppr  mssppspsssssmississippirn   rW      r]   r^   r   r   abcr  cc                  2    t        t        dddd            S )Nrn   r_   r   r^   )rP   r(   rc   rd   rT   rq   z,test_multiset_combinations.<locals>.<lambda>  s    t$9aB-$KL rd   )rP   r(   r0  r'   r   rH   r}   )r8  iMs      rT   test_multiset_combinationsrQ    sc   <C &}a89;1BGGAJ ;>AB B BA&q!,-/1BGGAJ /256 6 6 5a <=1BGGAJ=CCC%sQFmQ78qcAq6]OKKKt)#q123q888t)#q123q888%eQ/0cUSEC54IIII
:LM;/=s   E	EEc                  T   g d} t        d      D cg c]  }dj                  |       c}| k(  sJ t        t        d            D cg c]  }dj                  |       c}| k(  sJ t        t        g dd            ddggk(  sJ t        t        g dd            ddgddgddgddgddgddggk(  sJ t	        t        t        d	d                  dk(  sJ t	        t        t        d	d
                  dk(  sJ g i dfD ]  }t        t        |            g gk(  rJ  t        t        d            g gk(  sJ t        t        |d            g k(  sJ t        t        |d            g k(  sJ d t        fd      t        d      k(  sJ t        t        d        y c c}w c c}w )N)abbyabybaybbbabybaybbbaybbyabyabbybayabbybabybbarV  rW   r   r^   r   r   r]   r   rn   r_   c                  x    t        dd      D ]+  } t        |        t        g d|       D ]  }t        |        - y )Nr]   r   )r   r   r]   r   r]   )r   printr*   )rO  r!  s     rT   testz(test_multiset_permutations.<locals>.test  s;    q! 	A!H*?A> a	rd   c                               S r   rc   )ra  s   rT   rq   z,test_multiset_permutations.<locals>.<lambda>  s	    46 rd   a          1
        [0]
        [1]
        2
        [0, 0]
        [0, 1]
        [1, 0]
        [1, 1]
        3
        [0, 0, 0]
        [0, 0, 1]
        [0, 1, 0]
        [0, 1, 1]
        [1, 0, 0]
        [1, 0, 1]
        [1, 1, 0]
        4
        [0, 0, 0, 1]
        [0, 0, 1, 0]
        [0, 0, 1, 1]
        [0, 1, 0, 0]
        [0, 1, 0, 1]
        [0, 1, 1, 0]
        [1, 0, 0, 0]
        [1, 0, 0, 1]
        [1, 0, 1, 0]
        [1, 1, 0, 0]
        5
        [0, 0, 0, 1, 1]
        [0, 0, 1, 0, 1]
        [0, 0, 1, 1, 0]
        [0, 1, 0, 0, 1]
        [0, 1, 0, 1, 0]
        [0, 1, 1, 0, 0]
        [1, 0, 0, 0, 1]
        [1, 0, 0, 1, 0]
        [1, 0, 1, 0, 0]
        [1, 1, 0, 0, 0]
        6
c                  0    t        t        ddd            S )Nrn   r_   r   )rP   r*   rc   rd   rT   rq   z,test_multiset_permutations.<locals>.<lambda>  s    t$9aB-$HI rd   )	r*   r0  r'   rP   r   r   r   rH   r}   )r8  rO  nulra  s      @rT   test_multiset_permutationsre    s   +C 5f =>1BGGAJ>#EEE 5hv6F GH1BGGAJHCOOO%i34!Q@@@%i34	
AAAAAA98 8 8 8t)#q123q888t)#q123q888B| 8)#./B47778%c1-.2$666%c1-."444%c2./2555
 >"f '. '' ' ' 'P :IJw ?Hs   F 	F%c            	          i gdi fgg} t        d      D ]  }t        t        d|            | |   k(  sJ t        t        dd|            | |   k(  sJ t        t        ddd|            | |   k(  sJ t        t        ddd |            | |   k7  sJ t        t        dd d|            | |   k7  sJ t        t        ddd|            | |   k(  rJ  t        t        dd            ddidddd	ddddigk(  sJ t        t        dd            ddidddd
dddddidddd	ddddigk(  sJ t        t        dd	d            d	diddddddddddgcxk(  rOt        dd	d      D cg c]3  }t        d |D              st	        |j                               dk  r|5 c}k(  sJ  J t        t        t        d      d            ddidddgk(  sJ t        t        d	d            dddddiddddd	igcxk(  r0t        d	      D cg c]  }t        d |D              s| c}k(  sJ  J t        dd      D ]=  }d}t        |      D ]  \  }}|t        ||      k(  sJ |dz  } |t        |      k(  r=J  y c c}w c c}w )Nr   r^   )sizer]   r`   )krn   rj   r   r   r   r   )rh  r*  r  r   r   c              3   &   K   | ]	  }|d k    yw)r   Nrc   r1  rh  s     rT   r3  z"test_partitions.<locals>.<genexpr>  s     1DQ!q&1D   )r*  c              3   &   K   | ]	  }|d k    yw)rn   Nrc   rj  s     rT   r3  z"test_partitions.<locals>.<genexpr>  s     ':1Q':rk  )
r   rP   r-   allsumvaluesrG   r   r   r   )r8  rO  nr*  qs        rT   test_partitionsrr    s*   41b'
C1X ;Jqq)*c!f444Jq!!,-Q777Jq!QQ/0CF:::Jq!T23s1v===Jq$23s1v===Jq!QQ/0CF:::; 
1"#	
AA!!lQF(4 4 4 4 
1"#	
AA!"aL1a&aA,!q!f(    
1Q'(	
AA!"aLaA,-@ !a1*D!c1D!1D.D
Oa 	
D!! ! ! ! !
 
1Q41%&	
AA!+    
1"#!q!f!lQF(4 <a=8<C':':$:8<< < < < < 1a[  $Q' 	DAqAq))))FA	 HQK #D!8<s   0J JJ+Jc                     t        d      D  cg c]  } | d d  	 c} ddgg dg dg dg dg dg d	g d
g dg dg dg dg dg dgk(  sJ t        t        d      D cg c]  }|d d  	 c}      dk(  sJ y c c} w c c}w )Nr   r   r^   )r   r]   r]   )r   r   r^   )r   r   r]   r]   )r   r^   r^   r^   )r   r^   r^   r]   r]   )r   r^   r]   r]   r]   r]   )r   r]   r]   r]   r]   r]   r]   )r^   r^   r^   r^   r^   )r^   r^   r^   r^   r]   r]   )r^   r^   r^   r]   r]   r]   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   )rO  js     rT   test_binary_partitionsrw    s    +B/0QAaD0aVY<1?13K#%C	5E E E E /34!45;;; 1 5s   A7A<c            
         t        dd      D  cg c]  } t        t        t        |                   ! c} t        dd      D  cg c]  } t	        |        c} k(  sJ t        t        d            g dk(  sJ t        dd      D ]R  }t        t        |            }t        |      }|D ],  }|t        |j                        k(  sJ |j                         }. T t        t        d        y c c} w c c} w )Nr]   r   rn   )r   r   r   r   r   r   rb   c                  *    t        t        d            S )Nr   )rP   r   rc   rd   rT   rq   z test_bell_perm.<locals>.<lambda>  s    tM!$45 rd   )r   r   r   r   r   rP   r   r7  
array_formnext_trotterjohnsonrH   r}   )rO  rp  r!  r  bis        rT   test_bell_permr}  	  s    05a<1CM!$%&<#AqkA+	!A+ + + +a ! &J J J J
 1a[ (a!! 	(Bq||,,,,%%'A	(( :56 = A+s   $C*C/c            	          g d} t        |       D ]V  \  }}t        t        |dz               }t        |      |k(  sJ t        |D ch c]  }t	        |      dz   c}      dk(  rVJ  y c c}w )N)r]   r^   r   r      L   r]   r^   )	enumeraterP   r   r   r   )lengthsrp  NrO  rv  s        rT   test_involutionsr    so    #G'" 81%a!e,-1v{{q1!KNA%12a7778 2s   A*
c                     t        t        t        t        t        d                              dk(  sJ dj	                  d t        d      D              dk(  sJ t        t        g d            g dg d	g d
g dg dg dg dg dg dg	k(  sJ t        t        g d            g dg dgk(  sJ t        t        d            t        d      gk(  sJ t
        } t         | d            g k(  sJ  | d      D cg c]  }dj	                  |       c}dgk(  sJ  | d      D cg c]  }dj	                  |       c}ddgk(  sJ  | d      D cg c]  }dj	                  |       c}dgk(  sJ  | d      D cg c]  }dj	                  |       c}g dk(  sJ  | d      D cg c]  }dj	                  |       c}g dk(  sJ  | d       D cg c]  }dj	                  |       c}g d!k(  sJ t        t        d"gd#gd#gd$gg            d#gd$gd"gd#ggd#gd"gd$gd#gggk(  sJ y c c}w c c}w c c}w c c}w c c}w c c}w )%Nr`   i	  rW   c              3   >   K   | ]  }d j                  |        ywr.  r/  r1  rO  s     rT   r3  z$test_derangements.<locals>.<genexpr>$  s     F!2771:Fr4  abcdebadecbaecdbcaedbcdeabceadbdaecbdeacbdecabeacdbedacbedcacabedcadebcaebdcdaebcdbeacdeabcdebaceabdcebadcedabcedbadabecdaebcdaecbdcaebdcbeadceabdcebadeabcdeacbdebacdebcaeabcdeadbceadcbecabdecbadecdabecdbaedabcedacbedbacedbcar   )r]   r   rn   r^   )r]   r^   rn   r   )r]   rn   r   r^   )r^   r   rn   r]   )r^   rn   r   r]   )r^   rn   r]   r   )rn   r   r]   r^   )rn   r^   r   r]   )rn   r^   r]   r   )r   r]   r^   r^   )r^   r^   r   r]   )r^   r^   r]   r   bar  abbrL  bcacabaabbbbaaaabbcccc)ccccaabbccccababccccabbaccccbaabccccbabaccccbbaaaabbccc)cccabbacccababcccaabbccacbbaccacbabccacabbcbccbaacbccabacbccaabbcccbaabcccababcccaabbooks)kbsooksboosbkooskboooksbooskbookbsoobksooskoboksobosbokobsokrn   r^   r]   )r   rP   r   r   r0  rB   )DrO  s     rT   test_derangementsr  "  sm   t)$uQx.9:;sBBB77F'<W'EFF  
 %l34lL,lL,9N N N N %l34l9$ $ $ $%d+,d<<<A%>R !$(1BGGAJ(TF222 !%)1BGGAJ)eU^;;; !&	*1BGGAJ*vh666 !*.1BGGAJ. 3    !")-1BGGAJ- 2    !"'
+1BGGAJ+ 0# # # # %sQC!qc&:;<
qcA3sQC!qc2A4 4 4 4 ))*. . ,s$   ;H+&H0H5=H:)H?Ic                      d } g }t        dd      D ]/  }|j                  | | |dd       | |dd       | |dd      f       1 t        |      t        g dg dg d	g d
g dg dg dg      k(  sJ y )Nc           	      @    t        t        t        | ||                  S r   )r   rP   r+   )rp  rh  fs      rT   countztest_necklaces.<locals>.countD  s    4	!Q*+,,rd   r]   r   r^   r   rn   )r]   r^   r^   rn   )r^   rn   rn   r`   )rn   r   r   r   )r   r`   r`      )rb   r   r   '   )r`         \   )r            )r   r  r   )r  r*  rO  s      rT   test_necklacesr  C  s    -
A1a[ <		5Aq>5Aq>5Aq>; 	<< !9     rd   c                     t        t        dd            } t        |       t        ddgddgddgddgddgddgddgddgddgddgg
      k(  sJ t        t        dd            } t        |       t        g dg dg dg d	g d
g dg      k(  sJ y )Nr^   r   r   r]   rn   )r   r   r   r   )r   r   r   r]   )r   r   r]   r]   )r   r]   r   r]   )r   r]   r]   r]   )r]   r]   r]   r]   )rP   r   r   )bcs    rT   test_braceletsr  T  s    	i1o	B":	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A!
     
i1o	B":!    rd   c                      t        t        d            g dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dgk(  sJ t        t        t        d                  dk(  sJ y )Nrb   r  )r   r]   r^   rn   rn   )r   r]   r^   rn   r^   )r   r]   r^   rn   r]   )r   r]   r^   rn   r   )r   r]   r^   r^   r^   )r   r]   r^   r^   r]   )r   r]   r^   r^   r   )r   r]   r^   r]   r^   )r   r]   r^   r]   r]   )r   r]   r^   r]   r   )r   r]   r^   r   r]   )r   r]   r^   r   r   )r   r]   r]   r]   r]   )r   r]   r]   r]   r   )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   i2  )rP   r    r   rc   rd   rT   test_generate_oriented_forestr  m  sq    (+,/?/?/?/?/1; ; ; ; t,R012d:::rd   c            
      $   t        t        d            } t        |       t        t        | d d d   | dd d               k(  sJ t        | d      t	        | d d       t	        | dd        gk(  sJ t        t        d        t        t        d        y )Nr   r^   r]   rb   c                  >    t        t        t        d            d      S )Nr   rn   r:   rP   r   rc   rd   rT   rq   z test_unflatten.<locals>.<lambda>{  s    yeBi!< rd   c                  >    t        t        t        d            d      S )Nr   ri   r  rc   rd   rT   rq   z test_unflatten.<locals>.<lambda>|  s    yeBi"= rd   )rP   r   r:   zipr7  rH   r}   )rs    rT   test_unflattenr  w  s    U2YAQ<4AccFAaddG 45555Q?uQrU|U1QR5\::::
:<=
:=>rd   c                     t        g dg      g k(  sJ t        t        t        d                  g dk(  sJ t        t        t        d            t        t        d                  g dk(  sJ t        g dg d      ddgk(  sJ t        g dg d      dgk(  sJ t        g dg      g k(  sJ t        t        t        d                  g dk(  sJ t        t        t        d            t        t        d                  g dk(  sJ t        t        t        d            t        t        d                  g k(  sJ t        g dg d	      ddgk(  sJ t        g dg d
      dgk(  sJ y )Nr]   rn   r   r   r   )r]   r^   rb   r^   )r]   rn   rb   )r   r^   rn   )r   r   rn   )r   rP   r   r   rc   rd   rT   test_common_prefix_suffixr    s5   aS!R'''eAh(I555eAheAh8IEEEI.1a&888I.1#555aS!R'''eAh(I555eAheAh8IEEEeAheAh8B>>>I.1a&888I.1#555rd   c                      t        g d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        dd      dk(  sJ t        d      dk(  sJ t        d	t        
      dk(  sJ y )Nr   r   r   r   F)directedabaaab)bbr  rM  r   rM   )rM  r   r  r  )r&   r   rc   rd   rT   test_minlexr    sy    )	))))	))))	))))e,	999%=E!!!)s37NNNNrd   c                  &    t        t        t        t        ft        d            t        t        gt        t        gfv sJ t        t        t        t        ft        d            t        t        t        t        ft        d            k(  sJ t        t        t        t        f            t        t        gk(  sJ g dg dg ddgdggd d	 fg\   t        t         dd
            dgdgg dg dg dgk(  sJ t        t         fd       y )NF)defaultr   r   r   r^   r]   c                     t        |       S r   )r   r   s    rT   rq   ztest_ordered.<locals>.<lambda>  s
    CF rd   c                     t        |       S r   )rn  r   s    rT   rq   ztest_ordered.<locals>.<lambda>  s
    c!f rd   r  warnc                  4    t        t         dd            S )NFTr  )rP   r	   keysseqs   rT   rq   ztest_ordered.<locals>.<lambda>  s    T5t<= rd   )rP   r	   rR   rQ   hashrH   r}   r  s   @@rT   test_orderedr    s    Ae451a&1a&9IIIIAe45WaVT5123 3 3A QF***Y	A3<"$457ICT5u=>
qc9i34 4 4
: > ?rd   c                  >   t        g       g k(  sJ t        dg      dggk(  sJ t        ddg      dgdggk(  sJ t        g d      dgddggk(  sJ t        g d      ddgdggk(  sJ t        g d      dgdgdggk(  sJ ddlm}  t        g d|       ddgdggk(  sJ y )Nr]   r   r^   r   )r^   r]   r]   r   lt)r4   operatorr  r  s    rT   	test_runsr    s    8r>>9!A<QC!:%%%	?sQFm+++	?1vsm+++	?sQC!o---	2Aq6A3-///rd   c                     t        t        dd            } t        | dg      g dg dgk(  sJ t        | d      ddgk(  sJ t        | d      ddgk(  sJ t        | ddgf      ddd	dgfd
dddgfgk(  sJ t        | ddgf      dd	dgfdddgfgk(  sJ t        | ddgdf      ddd	gdfd
ddgdfgk(  sJ t        t        |       dgddgf      dgddgfd
gddgffk(  sJ t        t        |       dgddf      dgddfd
gddffk(  sJ t        t        t        d            dd	gdhdg      ddg dd
dhdggk(  sJ t	        t
        d        t	        t
        d        y )Nr]   r   r   r   )rb   r`   r   r   )r   r   r^   rn   rb   r`   r   r   r   rj   )rb   r`   r  r   r6  )r]   r   r]   r   r  )r   )r   r   r   r|   c                       t        ddgdg      S )Nr   r]   r_   r1   rc   rd   rT   rq   ztest_reshape.<locals>.<lambda>  s    w1vt4 rd   c                       t        ddgdg      S )Nr   r]   rn   r  rc   rd   rT   rq   ztest_reshape.<locals>.<lambda>  s    w1vs3 rd   )rP   r   r1   r7  rH   r}   )r  s    rT   test_reshaper    s	   
uQ{
C3	|$% % %3	|$% % %3	|$% % %3QC!
QA!QA() ) )3s$
1a&	FQF+,- - -3QC$
aVQ!aVQ() ) )5:!a0136
	Q/123 3 35:Q~.#q&	QCF+,- - -4b	?QaS,$?@
Q	Aq6#6	789 9 9
:45
:34rd   c                      t        t        d t        d      D                    ddidddddidddddigk(  sJ t        t        d t        d      D                    d	dgk(  sJ t        t        d
            d
gk(  sJ t        t        d            t        d      k(  sJ t        t        dgddgdgg            dgddggk(  sJ t        t        t	        d dgddfD                          dgddfddgdfdddgfgk(  sJ t        t        dddddgdgdgdgdgg	            ddddgdgdggk(  sJ dg t        t         fd       dgg t        t         fd       y )Nc              3       K   | ]  }|  y wr   rc   r1  r!  s     rT   r3  ztest_uniq.<locals>.<genexpr>  s     .1Q.   r   r]   r   r^   rj   c              3   &   K   | ]	  }|d z    yw)r^   Nrc   )r1  rR   s     rT   r3  ztest_uniq.<locals>.<genexpr>  s     -qQU-rk  rb   r   r   ababcrL  c              3       K   | ]  }|  y wr   rc   r  s     rT   r3  ztest_uniq.<locals>.<genexpr>  s     !9!!9r  rn   c                  ^    t              D  cg c]  } j                  |        c} S c c} w r   r;   removerO  r  s    rT   rq   ztest_uniq.<locals>.<lambda>  !    tAw!?!!((1+!? !?   *c                  ^    t              D  cg c]  } j                  |        c} S c c} w r   r  r  s    rT   rq   ztest_uniq.<locals>.<lambda>  r  r  )rP   r;   r-   r   r.   rH   RuntimeError)r  s   @rT   	test_uniqr    s   .
1../
QQ11v1|aV<= = =-E!H--.1a&888S	?se###W$u+---qcAq6A3'()qcAq6]:::\!9qc1a[!99:;#q!q1#qkAq1#;/0 0 0aAq1#sQC!qc:;<	
Aq1#sQC ! ! !	
A
<?@
A
<?@rd   c            	          t        t        t        ddd                  dk(  sJ t        t        t        ddd                  dk(  sJ t        t        t        ddd                  dk(  sJ t        t        t        ddd	                  d
k(  sJ t        t        t        ddd                   dk(  sJ d  t         fd      t	        d      k(  sJ d t        fd      t	        d      k(  sJ y )N1123r^   r]   r   r5  r|   ru  r   r   rb   rn   c                  l    dD ]/  } t        d|        t        g dd|       D ]  }t        d|        1 y )NNr   r]   r   r|   	ordered =r   r^   r      )r`  r%   
orderedvalr!  s     rT   test1ztest_kbins.<locals>.test1  s<    . 	 J+z*9a<  eQ 	 rd   c                               S r   rc   )r  s   rT   rq   ztest_kbins.<locals>.<lambda>  	    EG rd   a#          ordered = None
            [[0], [0, 1]]
            [[0, 0], [1]]
        ordered = 0
            [[0, 0], [1]]
            [[0, 1], [0]]
        ordered = 1
            [[0], [0, 1]]
            [[0], [1, 0]]
            [[1], [0, 0]]
        ordered = 10
            [[0, 0], [1]]
            [[1], [0, 0]]
            [[0, 1], [0]]
            [[0], [0, 1]]
        ordered = 11
            [[0], [0, 1]]
            [[0, 0], [1]]
            [[0], [1, 0]]
            [[0, 1], [0]]
            [[1], [0, 0]]
            [[1, 0], [0]]
c                      dD ]?  } t        d|        t        t        t        d            d|       D ]  }t        d|        A y )Nr  r  rn   r^   r   r  )r`  r%   rP   r   r   s     rT   test2ztest_kbins.<locals>.test2  sD    . 	 J+z*4a>1jA  eQ 	 rd   c                               S r   rc   )r  s   rT   rq   ztest_kbins.<locals>.<lambda>  r  rd   a[          ordered = None
            [[0], [1, 2]]
            [[0, 1], [2]]
        ordered = 0
            [[0, 1], [2]]
            [[0, 2], [1]]
            [[0], [1, 2]]
        ordered = 1
            [[0], [1, 2]]
            [[0], [2, 1]]
            [[1], [0, 2]]
            [[1], [2, 0]]
            [[2], [0, 1]]
            [[2], [1, 0]]
        ordered = 10
            [[0, 1], [2]]
            [[2], [0, 1]]
            [[0, 2], [1]]
            [[1], [0, 2]]
            [[0], [1, 2]]
            [[1, 2], [0]]
        ordered = 11
            [[0], [1, 2]]
            [[0, 1], [2]]
            [[0], [2, 1]]
            [[0, 2], [1]]
            [[1], [0, 2]]
            [[1, 0], [2]]
            [[1], [2, 0]]
            [[1, 2], [0]]
            [[2], [0, 1]]
            [[2, 0], [1]]
            [[2], [1, 0]]
            [[2, 1], [0]]
)r   rP   r%   r   r   )r  r  s   @@rT   
test_kbinsr    s    tE&!Q/01R777tE&!R012b888tE&!R012b888tE&!Q/01Q666tE&!T234999 
 #$ 0 )       0 
 #$ "0 ")  "  "  " rd   c                      t        t                     du sJ t        t        t        d                  du sJ t        g d      du sJ t        dgdgg      du sJ t        dgdgg      du sJ y )NFrn   r   Tr]   r^   )r"   r   rP   r   rc   rd   rT   test_has_dupsr
  '  sz    CE?e###DqN#u,,,I$&&&aS1#J4'''aS1#J5(((rd   c                      t        dg d      ddgddgdggk(  sJ t        dg dd      ddgddgdggk(  sJ dg df} t        dg|  ddgddgdggk(  sJ y )	Nr  )r]   r   r]   r^   r   r  er   rM  drn   )r   )outputs    rT   test__partitionr  /  s    g/	c
S#J4' ' ' 'g2	c
S#J7' ' ' '!Fg''S#Jc
SE+JJJJrd   c                  h   ddl m}  t        }t         |dd            g gk(  sJ t         |dd            g gk(  sJ t	        dd      D ]g  }d gt        t	        d|            z   D ]I  }t        d  |||d      D              t        d  |||d      D              cxk(  r | ||      k(  rFJ  J  i y )Nr   )nTr]   r   c              3       K   | ]  }d   ywr]   Nrc   r  s     rT   r3  z*test_ordered_partitions.<locals>.<genexpr>@       *!A*r  c              3       K   | ]  }d   ywr  rc   r  s     rT   r3  z*test_ordered_partitions.<locals>.<genexpr>A  r  r  )%sympy.functions.combinatorial.numbersr  r=   rP   r   rn  )r  r  rO  rv  s       rT   test_ordered_partitionsr  8  s    8A!Q=RD   !Q=RD   1a[ $uQ{++ 	A*qAqz***qAqz**1a	rd   c                      t        t        d            ddgddggk(  sJ t        t        t        d                  g dg dg dgk(  sJ t        t        t        d      d	            g dg dg dgk(  sJ y )
Nr  r   r  rn   r   r   r   r_   )dir)rP   r>   r   rc   rd   rT   test_rotationsr  E  sn    	$ c3Z#s$<<<<	%(#$Iy(IIII	%(+,Iy0QQQQrd   c                  P   t        d      ddgk(  sJ t        dd      g dk(  sJ t        dd      dk(  sJ t        ddd      dk(  sJ t        t        dd	            g d
k(  sJ t        t        ddd            g dk(  sJ t        t        d        t        t        d        y )Nrn   r]   r   T)str11011r^   rm  )rk   r   r   r   rW   )000110r  c                      t        d      S )Ng      ࿩r#   rc   rd   rT   rq   ztest_ibin.<locals>.<lambda>R  s
    tCy rd   c                      t        dd      S )Nr^   r]   r#  rc   rd   rT   rq   ztest_ibin.<locals>.<lambda>S  s    tAqz rd   )r#   rP   rH   r}   rc   rd   rT   	test_ibinr%  K  s    7q!f1:"""t$$$1$5(((Q#CCCCQ%&*BBBB
:()
:)*rd   c                     t        d      du sJ t        d      du sJ t        d       du sJ  G d dt              } t         |              du sJ  G d dt              }t         |             du sJ  G d	 d
      }t         |             du sJ  G d d      }t         |             du sJ  G d d      }t         |             du sJ  G d d|      }t         |             du sJ y )Nr   Fr]   c                       e Zd Zy)test_iterable.<locals>.Test1Nrt   rc   rd   rT   Test1r(  [  ry   rd   r)  c                       e Zd ZdZy)test_iterable.<locals>.Test2TNru   rv   rw   	_iterablerc   rd   rT   Test2r+  `      	rd   r.  Tc                       e Zd Zy)test_iterable.<locals>.Test3Nrt   rc   rd   rT   Test3r1  e  ry   rd   r2  c                       e Zd ZdZy)test_iterable.<locals>.Test4TNr,  rc   rd   rT   Test4r4  j  r/  rd   r5  c                       e Zd Zd Zy)test_iterable.<locals>.Test5c              3      K   d y w)Nr]   rc   )selfs    rT   __iter__z%test_iterable.<locals>.Test5.__iter__p  s     Gs   N)ru   rv   rw   r:  rc   rd   rT   Test5r7  o  s    	rd   r;  c                       e Zd ZdZy)test_iterable.<locals>.Test6FNr,  rc   rd   rT   Test6r=  u  s    	rd   r>  )r@   rA   )r)  r.  r2  r5  r;  r>  s         rT   test_iterabler?  V  s   A;%A;%D>U"""  EG%%%  EG$$$  EG%%%  EG$$$  EG$$$  EG%%%rd   c                  p   t        t        dgd            dgggk(  sJ t        t        ddgd            ddgggk(  sJ t        t        ddgd            dgdgggk(  sJ t        t        g dd            g dggk(  sJ t        t        g dd            dgddggddgdgggk(  sJ t        t        g dd            dgdgdgggk(  sJ t        t        g d            g k(  sJ t        t        g d            g k(  sJ t        t        ddgd            g k(  sJ t        t        ddgd            g k(  sJ y )Nr]   r^   r   rn   r   )rP   rC   rc   rd   rT   test_sequence_partitionsrA  {  so   #QC+,1#777#QFA./aVH:===#QFA./aS1#J<???#Iq12	{mCCC#Iq12#1v!Q!&' ' '#Iq12aS1#6GGGG #B*+r111#B*+r111#QFA./2555#QFA./2555rd   c                     t        t        g d            g ggk(  sJ t        t        g d            g g ggk(  sJ t        t        g d            g g g ggk(  sJ t        t        dgd            dgggk(  sJ t        t        dgd            g dggdgg ggk(  sJ t        t        dgd            g g dggg dgg gdgg g ggk(  sJ t        t        ddgd            ddgggk(  sJ t        t        ddgd            g ddggdgdggddgg ggk(  sJ t        t        ddgd            g g ddggg dgdggg ddgg gdgg dggdgdgg gddgg g ggk(  sJ t        t        g dd            g dggk(  sJ t        t        g dd            g g dgdgddggddgdggg dg ggk(  sJ t        t        g dd            g g g dgg dgddggg ddgdggg g dg gdgg ddggdgdgdggdgddgg gddgg dggddgdgg gg dg g gg
k(  sJ t        t        g d            g k(  sJ t        t        dgd            g k(  sJ t        t        ddgd            g k(  sJ y )Nr]   r^   rn   r   r   )rP   rD   rC   rc   rd   rT   test_sequence_partitions_emptyrC    sJ   )"a01rdV;;;)"a01r2hZ???)"a01r2rl^CCC)1#q12ug===)1#q12QCyA3)6LLLL)1#q12
b1#aS"R}56 6 6)1a&!45Aq6(CCC)1a&!45
q!faSzQFB<01 1 1)1a&!45	R!Q2sQC.21vr*:
b1#!qc2!QR(8:    ))Q78i[MIII))Q78
iA3A-1a&1#BHI I I))Q78	Rb1#1v.	aVaSB	2.
b1a&QC!qc?
q!fbQFB,
Q!bIr2.=    #B*+r111#QC+,222#QFA./2555rd   N)textwrapr   	itertoolsr   r   sympy.core.basicr   sympy.core.numbersr   sympy.core.sortingr	   sympy.core.symbolr
   r   (sympy.functions.combinatorial.factorialsr   sympy.matrices.denser   sympy.combinatoricsr   r   r   rO   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   sympy.utilities.enumerativerE   rF   sympy.core.singletonrG   sympy.testing.pytestrH   rI   wrR   rQ   r~   rU   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r:  rQ  re  rr  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r%  r?  rA  rC  rc   rd   rT   <module>rQ     s    % " & & . > ' A A4 4 4 4 4 4 4 4 4 4 4 4 4 43 # ?Y
1a>. 3,A,)*%9P08:	:7H@@
EE"<" ?FDN >KB( V<7"84B"2;?6O?050A"K \)K
R+"&J6 6rd   