
    sg؉                        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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZN d dlOmPZP d dlQmRZRmSZS  ed      \  ZTZUZVZWd 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. Zwd/ Zxd0 Zyd1 Zzd2 Z{d3 Z|d4 Z}d5 Z~d6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zy>)?    )dedent)isliceproduct)Basic)Integerordered)Dummysymbols)	factorial)Matrix)RGS_enum
RGS_unrankPermutation)5
_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signed_permutations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.iterablesrM   r	   rJ   listyxsortedrL   s     W/var/www/html/venv/lib/python3.12/site-packages/sympy/utilities/tests/test_iterables.pytest_deprecated_iterablesrV   !   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 rS   xxxyxxyxyzxxxyzzyx         xxyzyx   )r?        rU   test_is_palindromicrf   )   s    "#$%   d###f%%%)Q'''i+++)Q+++)Q***(A&&&h***(Au---re   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)ri   rk   rl   r_   )rj   r`   r^   r_   r   r      c                      t         d      S )Nr`   rm   )r   )lss   rU   <lambda>ztest_flatten.<locals>.<lambda>D   s    wr"5 re   c                       e Zd Zy)test_flatten.<locals>.MyOpN__name__
__module____qualname__rd   re   rU   MyOprt   F       re   ry   cls>   r^   r_      )r   rS   rI   
ValueErrorr   rR   zrQ   )ry   rq   s    @rU   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2re   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 )Nrd   r^   r_   ro   rh   r_   ro   r^   r_   ro      rc   r^   ro   )r^   r   )r^   rc   r_   ro   r_   r   )r_   rc   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   rc   i  rj   ro   )rQ   r$   rT   r@   rH   Integerssetr   
isinstancer   r   range)triplesn1n2n3ts        rU   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re   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^   rk   r   r   r^   r_   r^   r_   )r   r_   r^   r   )r^   r^   r_   r_   r_   r^   ro   ro   r_   r_   r_   ro   )rk   r   r   ro   r_   )r!   rd   re   rU   
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: ?) ) ) )re   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   rd   r^   r   r_   )rk   r   r   ro   r   T
repetitionr   rh   r   r   )
rl   r   r^   r   r_   r   ro   r   rk   r   r_   r_   r   ro   ro   )r   r   )r   r   r_   )r   r   ro   r   r   r^   r_   r   r^   ro   )r   r_   r_   r   r_   ro   )r   ro   ro   r   r^   r^   r_   r^   r^   ro   r^   r_   r_   r   )r^   ro   ro   r   )r_   r_   ro   )r_   ro   ro   )ro   ro   ro   #   F)r   r   r   r   )rd   rh   r   r   rk   r   )rd   rh   r   rk   )r   rk   r   r   r   r   )rQ   r7   r   lenls    rU   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 9re   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   rd   r^   r   r_   )r   r   r   r^   r   rk   r   r_   r   r   r   ro   r   ro   r^   r   ro   )r   r   r   r_   r^   r   r   ro   r^   )r   ro   r_   r^   r   r_   )r^   r   ro   r^   r_   r   r   )r^   ro   r   )r^   ro   r_   r_   r   r^   )r_   r   ro   r_   r^   r   )r_   r^   ro   )r_   ro   r   )r_   ro   r^   )ro   r   r^   )ro   r   r_   )ro   r^   r   )ro   r^   r_   )ro   r_   r   ro   r_   r^   T)rl   r   r   r   r   r   rk   r   r   r   r   r   r   r   r   r   @      r   )rQ   r   r<   r   r   s    rU   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 ;   re   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   rd   a)r   )repeat)r   r   r   rh   )rQ   r   r   rd   re   rU   test_cartesr      s    1vy)*89 9 9>bT!!!s(((s1%&:,666tE!H~&'D$<777re   c                      t               } t        | t        d            }t        |d      t	        t        d            k(  sJ y )Nzx0 x2 x3ro   zx1 x4 x5)r,   r   r   r8   rQ   )sfiltereds     rU   test_filter_symbolsr      s:    Aa!45H!WZ%8 9999re   c            	          t        t              } t        t        |       t              sJ t        t        ddt	        d      g            t	        d      k(  sJ y )Nr{   Cr^   C1)startexcludeC2)r,   r
   r   nextr   )r   s    rU   test_numbered_symbolsr      sN    U#Ad1gu%%% AGH  re   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 )Nrc   c                     | dz  S Nr_   rd   _s    rU   rr   ztest_sift.<locals>.<lambda>   s
    !a% re   r^   ro   )r   r_   r   r   c                 ,    | j                  t              S NhasrS   r   s    rU   rr   ztest_sift.<locals>.<lambda>   s    !%%( re   )FTc                 ,    | j                  t              S r   r   r   s    rU   rr   ztest_sift.<locals>.<lambda>   s    1558 re   Fr   r^   r_   ro   c                     | dz  S r   rd   rS   s    rU   rr   ztest_sift.<locals>.<lambda>   s
    A re   Tbinaryr   r_   c                     | dz  dk(  S )Nro   r^   rd   r   s    rU   rr   ztest_sift.<locals>.<lambda>   s    A
 re   r   c                  $    t        g dd d      S )Nr   c                     | dz  S )Nro   rd   r   s    rU   rr   z-test_sift.<locals>.<lambda>.<locals>.<lambda>   s
    QU re   Tr   )r5   rd   re   rU   rr   ztest_sift.<locals>.<lambda>   s    \?48 re   )	r5   rQ   r   rS   rR   rH   OnerI   r~   rd   re   rU   	test_siftr      s    U1X0A94MMMMA*+s1#/FFFF+,<<<od;	
AA@   24@	
YE   
: 9 :re   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 )Nrc   zx0:5zx5:10r^   r_   ro   r   rc   )r,   r8   rQ   r   )Xs    rU   	test_taker      sZ    A1:gfo....1:gg.////#666re   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_   rk   )r   rS   rR   r   rd   re   rU   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Gre   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_   ro   r   )rQ   r0   rd   re   rU   test_prefixesr      s    ###!A3%'''!Q !qcAq6]222)*
q!fi?@ @ @re   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   rc   r   r   )r_   ro   r   rc   )rQ   r/   rd   re   rU   test_postfixesr      s    	""$$$	1#QC5(((	1a&!"sQFm333	/*+
q!fi?@ @ @re   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_   ro   rc         	   
   r}   )	)r   r}   r   r   )rc   r}   )ro   r   )ro   r   )r}   r_   )r}   r   )r}   r   )r   r   )ro   rc   r   r   r}   r_   r   r   c                     |  S r   rd   )vs    rU   rr   z'test_topological_sort.<locals>.<lambda>	  s    1" re   rN   )r   rc   r}   ro   r   r   r   r_   c                  &    t         dgz   f      S )N)r   r   )r9   EVs   rU   rr   z'test_topological_sort.<locals>.<lambda>  s    /A	M0BC re   )r9   rI   r~   r  s   @@rU   test_topological_sortr    sV    "A	$A QF#'AAAAQF5"# # # :CDre   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_   ro   rk   r   r   r   r   r   rk   r   r   ro   r   r   )rk   r   r  )r   ro   )r6   r  r  s     rU   "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Dre   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_   ro   r  r   r  rk   r  r   )r   r	  s     rU   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+;;;;re   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_   ro   r   r_   )r_   ro   r   r   r^   r^   )r   r   r^   r_   ro   )r2   r3   append)ABs     rU   test_rotater  1  s    Aq!///1000
AQA7N7HHQK7N7AqA7N7HHQK7N7re   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  rc   r   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^   ro   r   r_   ro   r   r   r   r   abbaaa)$)mpsyy)mpsyrR   )mpsyy)r  rR   rR   )mpyyr   )mpysy)r  r   rR   )mpsyy)r!  r   rR   )r!  r   r  )r!  r   rR   rR   )msyyp)msypy)r%  r$  rR   )mspyy)r'  r&  rR   )r'  r$  r  )r'  r$  rR   rR   )myyps)r)  r$  r   )mypsy)r+  r*  rR   )r+  r&  r   )r+  r$  r   )r+  r$  r   rR   )mpsyy)r-  r,  rR   )r-  r*  r  )r-  r*  rR   rR   )r-  r(  r   )r-  r&  r   )r-  r&  r   rR   )r-  r$  r"  )r-  r$  r   rR   )r-  r$  r   r  )r-  r$  r   rR   rR   sympyc              3   >   K   | ]  }d j                  |        ywrX   Njoin).0parts     rU   	<genexpr>z+test_multiset_partitions.<locals>.<genexpr>{  s     .D"''$-.      r      ra   )r   r_   ro   )ra   r_   r_   )r_   r_   r_   ro   )rQ   r)   r   rT   tuplerG   rF   )r  r   ansr$  
factoringss        rU   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mississippiro   rX      r^   r_   r   r   abcr  cc                  2    t        t        dddd            S )Nro   r`   r   r_   )rQ   r(   rd   re   rU   rr   z,test_multiset_combinations.<locals>.<lambda>  s    t$9aB-$KL re   )rQ   r(   r3  r'   r   rI   r~   )r;  iMs      rU   test_multiset_combinationsrT    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ybbarY  rX   r   r_   r   r   r^   r   ro   r`   c                  x    t        dd      D ]+  } t        |        t        g d|       D ]  }t        |        - y )Nr^   r   )r   r   r^   r   r^   )r   printr*   )rR  r$  s     rU   testz(test_multiset_permutations.<locals>.test  s;    q! 	A!H*?A> a	re   c                               S r   rd   )rd  s   rU   rr   z,test_multiset_permutations.<locals>.<lambda>  s	    46 re   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 )Nro   r`   r   )rQ   r*   rd   re   rU   rr   z,test_multiset_permutations.<locals>.<lambda>  s    t$9aB-$HI re   )	r*   r3  r'   rQ   r   r   r   rI   r~   )r;  rR  nulrd  s      @rU   test_multiset_permutationsrh    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^   ra   )kro   rk   r   r   r   r   )rk  r-  r  r   r   c              3   &   K   | ]	  }|d k    yw)r   Nrd   r4  rk  s     rU   r6  z"test_partitions.<locals>.<genexpr>  s     1DQ!q&1D   )r-  c              3   &   K   | ]	  }|d k    yw)ro   Nrd   rm  s     rU   r6  z"test_partitions.<locals>.<genexpr>  s     ':1Q':rn  )
r   rQ   r-   allsumvaluesrH   r   r   r   )r;  rR  nr-  qs        rU   test_partitionsru    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   )rR  js     rU   test_binary_partitionsrz    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   ro   )r   r   r   r   r   r   rc   c                  *    t        t        d            S )Nr   )rQ   r   rd   re   rU   rr   z test_bell_perm.<locals>.<lambda>  s    tM!$45 re   )r   r   r   r   r   rQ   r   r:  
array_formnext_trotterjohnsonrI   r~   )rR  rs  r$  r  bis        rU   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_   )	enumeraterQ   r   r   r   )lengthsrs  NrR  ry  s        rU   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 )%Nra   i	  rX   c              3   >   K   | ]  }d j                  |        ywr1  r2  r4  rR  s     rU   r6  z$test_derangements.<locals>.<genexpr>$  s     F!2771:Fr7  abcdebadecbaecdbcaedbcdeabceadbdaecbdeacbdecabeacdbedacbedcacabedcadebcaebdcdaebcdbeacdeabcdebaceabdcebadcedabcedbadabecdaebcdaecbdcaebdcbeadceabdcebadeabcdeacbdebacdebcaeabcdeadbceadcbecabdecbadecdabecdbaedabcedacbedbacedbcar   )r^   r   ro   r_   )r^   r_   ro   r   )r^   ro   r   r_   )r_   r   ro   r^   )r_   ro   r   r^   )r_   ro   r^   r   )ro   r   r^   r_   )ro   r_   r   r^   )ro   r_   r^   r   )r   r^   r_   r_   )r_   r_   r   r^   )r_   r_   r^   r   bar  abbrO  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obsokro   r_   r^   )r   rQ   r   r   r3  rB   )DrR  s     rU   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   rQ   r+   )rs  rk  fs      rU   countztest_necklaces.<locals>.countD  s    4	!Q*+,,re   r^   r   r_   r   ro   )r^   r_   r_   ro   )r_   ro   ro   ra   )ro   r   r   r   )r   ra   ra      )rc   r   r   '   )ra         \   )r            )r   r  r   )r  r-  rR  s      rU   test_necklacesr  C  s    -
A1a[ <		5Aq>5Aq>5Aq>; 	<< !9     re   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^   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^   )rQ   r   r   )bcs    rU   test_braceletsr  T  s    	i1o	B":	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A!
     
i1o	B":!    re   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 )Nrc   r  )r   r^   r_   ro   ro   )r   r^   r_   ro   r_   )r   r^   r_   ro   r^   )r   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   )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  )rQ   r    r   rd   re   rU   test_generate_oriented_forestr  m  sq    (+,/?/?/?/?/1; ; ; ; t,R012d:::re   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^   rc   c                  >    t        t        t        d            d      S )Nr   ro   r:   rQ   r   rd   re   rU   rr   z test_unflatten.<locals>.<lambda>{  s    yeBi!< re   c                  >    t        t        t        d            d      S )Nr   rj   r  rd   re   rU   rr   z test_unflatten.<locals>.<lambda>|  s    yeBi"= re   )rQ   r   r:   zipr:  rI   r~   )rs    rU   test_unflattenr  w  s    U2YAQ<4AccFAaddG 45555Q?uQrU|U1QR5\::::
:<=
:=>re   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^   ro   r   r   r   )r^   r_   rc   r_   )r^   ro   rc   )r   r_   ro   )r   r   ro   )r   rQ   r   r   rd   re   rU   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5re   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  rP  r   rN   )rP  r   r  r  )r&   r   rd   re   rU   test_minlexr    sy    )	))))	))))	))))e,	999%=E!!!)s37NNNNre   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    rU   rr   ztest_ordered.<locals>.<lambda>  s
    CF re   c                     t        |       S r   )rq  r   s    rU   rr   ztest_ordered.<locals>.<lambda>  s
    c!f re   r  warnc                  4    t        t         dd            S )NFTr  )rQ   r	   keysseqs   rU   rr   ztest_ordered.<locals>.<lambda>  s    T5t<= re   )rQ   r	   rS   rR   hashrI   r~   r  s   @@rU   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
: > ?re   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    rU   	test_runsr    s    8r>>9!A<QC!:%%%	?sQFm+++	?1vsm+++	?sQC!o---	2Aq6A3-///re   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   )rc   ra   r   r   )r   r   r_   ro   rc   ra   r   r   r   rk   )rc   ra   r  r   r9  )r^   r   r^   r   r  )r   )r   r   r   r}   c                       t        ddgdg      S )Nr   r^   r`   r1   rd   re   rU   rr   ztest_reshape.<locals>.<lambda>  s    w1vt4 re   c                       t        ddgdg      S )Nr   r^   ro   r  rd   re   rU   rr   ztest_reshape.<locals>.<lambda>  s    w1vs3 re   )rQ   r   r1   r:  rI   r~   )r  s    rU   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4re   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   rd   r4  r$  s     rU   r6  ztest_uniq.<locals>.<genexpr>  s     .1Q.   r   r^   r   r_   rk   c              3   &   K   | ]	  }|d z    yw)r_   Nrd   )r4  rS   s     rU   r6  ztest_uniq.<locals>.<genexpr>  s     -qQU-rn  rc   r   r   ababcrO  c              3       K   | ]  }|  y wr   rd   r  s     rU   r6  ztest_uniq.<locals>.<genexpr>  s     !9!!9r  ro   c                  ^    t              D  cg c]  } j                  |        c} S c c} w r   r;   removerR  r  s    rU   rr   ztest_uniq.<locals>.<lambda>  !    tAw!?!!((1+!? !?   *c                  ^    t              D  cg c]  } j                  |        c} S c c} w r   r  r  s    rU   rr   ztest_uniq.<locals>.<lambda>  r  r  )rQ   r;   r-   r   r.   rI   RuntimeError)r  s   @rU   	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
<?@re   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   r8  r}   rx  r   r   rc   ro   c                  l    dD ]/  } t        d|        t        g dd|       D ]  }t        d|        1 y )NNr   r^   r   r}   	ordered =r   r_   r      )rc  r%   
orderedvalr$  s     rU   test1ztest_kbins.<locals>.test1  s<    . 	 J+z*9a<  eQ 	 re   c                               S r   rd   )r  s   rU   rr   ztest_kbins.<locals>.<lambda>  	    EG re   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  ro   r_   r   r  )rc  r%   rQ   r   r  s     rU   test2ztest_kbins.<locals>.test2  sD    . 	 J+z*4a>1jA  eQ 	 re   c                               S r   rd   )r	  s   rU   rr   ztest_kbins.<locals>.<lambda>  r  re   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   rQ   r%   r   r   )r  r	  s   @@rU   
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 ")  "  "  " re   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 )NFro   r   Tr^   r_   )r"   r   rQ   r   rd   re   rU   test_has_dupsr  '  sz    CE?e###DqN#u,,,I$&&&aS1#J4'''aS1#J5(((re   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   rP  dro   )r   )outputs    rU   test__partitionr  /  s    g/	c
S#J4' ' ' 'g2	c
S#J7' ' ' '!Fg''S#Jc
SE+JJJJre   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^   Nrd   r  s     rU   r6  z*test_ordered_partitions.<locals>.<genexpr>@       *!A*r  c              3       K   | ]  }d   ywr  rd   r  s     rU   r6  z*test_ordered_partitions.<locals>.<genexpr>A  r  r  )%sympy.functions.combinatorial.numbersr  r=   rQ   r   rq  )r  r  rR  ry  s       rU   test_ordered_partitionsr  8  s    8A!Q=RD   !Q=RD   1a[ $uQ{++ 	A*qAqz***qAqz**1a	re   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  ro   r   r   r   r`   )dir)rQ   r>   r   rd   re   rU   test_rotationsr  E  sn    	$ c3Z#s$<<<<	%(#$Iy(IIII	%(+,Iy0QQQQre   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 )Nro   r^   r   T)str11011r_   rp  )rl   r   r   r   rX   )000110r   c                      t        d      S )Ng      ࿩r#   rd   re   rU   rr   ztest_ibin.<locals>.<lambda>R  s
    tCy re   c                      t        dd      S )Nr_   r^   r&  rd   re   rU   rr   ztest_ibin.<locals>.<lambda>S  s    tAqz re   )r#   rQ   rI   r~   rd   re   rU   	test_ibinr(  K  s    7q!f1:"""t$$$1$5(((Q#CCCCQ%&*BBBB
:()
:)*re   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>.Test1Nru   rd   re   rU   Test1r+  [  rz   re   r,  c                       e Zd ZdZy)test_iterable.<locals>.Test2TNrv   rw   rx   	_iterablerd   re   rU   Test2r.  `      	re   r1  Tc                       e Zd Zy)test_iterable.<locals>.Test3Nru   rd   re   rU   Test3r4  e  rz   re   r5  c                       e Zd ZdZy)test_iterable.<locals>.Test4TNr/  rd   re   rU   Test4r7  j  r2  re   r8  c                       e Zd Zd Zy)test_iterable.<locals>.Test5c              3      K   d y w)Nr^   rd   )selfs    rU   __iter__z%test_iterable.<locals>.Test5.__iter__p  s     Gs   N)rv   rw   rx   r=  rd   re   rU   Test5r:  o  s    	re   r>  c                       e Zd ZdZy)test_iterable.<locals>.Test6FNr/  rd   re   rU   Test6r@  u  s    	re   rA  )r@   rA   )r,  r1  r5  r8  r>  rA  s         rU   test_iterablerB  V  s   A;%A;%D>U"""  EG%%%  EG$$$  EG%%%  EG$$$  EG$$$  EG%%%re   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   ro   r   )rQ   rD   rd   re   rU   test_sequence_partitionsrD  {  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5re   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_   ro   r   r   )rQ   rE   rD   rd   re   rU   test_sequence_partitions_emptyrF    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5re   c                      g d} t        t        d            | k(  sJ t        t        d            | k(  sJ t        t        d            | k(  sJ y )N)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   )rQ   rC   )r;  s    rU   test_signed_permutationsrH    sV    4C #I./3666#I./3666#I./3666re   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   rP   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   rE   sympy.utilities.enumerativerF   rG   sympy.core.singletonrH   sympy.testing.pytestrI   rJ   wrS   rR   r   rV   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r=  rT  rh  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  rB  rD  rF  rH  rd   re   rU   <module>rV     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 6@7re   