
    gN                     *   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZ d d	lmZmZmZmZ d d
lmZmZ ej        Z e
dd          Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-dS )    )permutations)copy)	unchanged)Integer)Eq)Symbol)S)Permutation
_af_parity_af_rmul	_af_rmulnAppliedPermutationCycle)sstrsreprprettylatex)raiseswarns_deprecated_sympyaTintegerc            
      %   t          t          d            t          g d          fdt          j                  D             t                    k    sJ  t          t          j                                      t                    k    sJ t           dd                    g dk    sJ t          t          fd           t          t          fd           t                    t          t          d	                    k    sJ                                 k    sJ t                    k    sJ t          d	
          t          d          k    sJ t          t          d          d
          t          d	          k    sJ t          ddggd	
          t          ddgdgdgg          k    sJ t          j        d          t          ddg          t          ddg          fv sJ t          g d          t          dgg dg          } t          h          dk    sJ t          g d          }t          t          d | |fD                        j        }t          | |          j        |k    sJ t          | |f          D ]/\  }}}|||f| |fk    rt          |||          j        |k    sJ 0                                t          t          d                    k    sJ |                                 g dk    sJ t          j                  j        j        k    sJ j        dk    sJ | j        dk    sJ | j        dk    sJ t          |           t          g d          k    sJ t          |           t          g d          k    sJ t%          j        | j                  g dk    sJ t          t          g ddd	gg          t          g ddgdgg                    j        g dddggk    sJ | j        g dk    sJ | j        g dgk    sJ | j        g ddggk    sJ j        g dg dgk    sJ                                 }|g dk    sJ t          j        d |D              sJ t          ddg                                          dgk    sJ d z  k    sJ | dz  t          t          t          | j                                      k    sJ | d!z  | dz   k    sJ | dz  t          g d"          k    sJ | dz  | dz  | z  k    sJ | d	z  | dz  | dz  z  k    sJ t          dd          }t          ddd          }t          d          }| |d#z  k    sJ || z  |k    sJ ||d#z  z  || z  k    sJ  t          ddddd$          dd	          }|                                 z                                   |                                k    sJ |                                 z   j        |                                k    sJ |                                 z                                   |                                k    sJ t          t          fd%           |                                 z
                                  t          dd$ddddd	                                          k    sJ                                 |                                 z
  dk     sJ |                                 z
                                   t          dd	d$d          dd                                          k    sJ | z  t          t          d& | fD                        k    sJ t          g           z  k    sJ t          g           z  k    sJ t          ddgg          z  t          g d'          k    sJ t          ddgg          z  t          g d(          k    sJ | z  }|t          g d)          k    sJ |t          | |            k    sJ | z  }	|	t          g d*          k    sJ |	t          |            k    sJ t          t          fd+                               |           t          dddd	d$dd          k    sJ |                               t          dddd$d	dd          k    sJ                     |           |                                k    sJ t          t          fd,           t                                                    dk    sJ |                                 h d-k    sJ                                 g d.k    sJ |                                 g d/k    sJ t          j                                                  k    sJ t          j        |                                           j        | j        k    sJ t          t          d0            t          t          t          d1d#d#                                                              d2k    sJ t          g d3          }
|
                                dk    sJ |
j        }t          |
j                  |
j        k    r|
                                dk    sJ |
j        rJ |
j        sJ t          g d4                                          dk    sJ tA          g d3          dk    sJ tA          g d4          dk    sJ t          dg          }
|
j!        sJ t          g           j"        sJ t          g d5          }|dz  j#        sJ t                     j#        sJ  d z  t          g d6          k    sJ $                                d$k    sJ %                                dk    sJ t          d$gdgg d7g          } | $                                d	k    sJ | %                                dk    sJ t          g d8          t          g d9dd	gg          } &                                g d:k    sJ | &                                g dk    sJ |&                                g k    sJ '                                g d;k    sJ | '                                g d<k    sJ t          |'                                          j#        sJ                                 dk    sJ t                    t          t          $                                dz   $                                d=z                       z   }t          |                                          dk    sJ (                                d#k    sJ |                                 d>k    sJ | (                                d#k    sJ t                                                     dk    sJ t                     (                                dk    sJ )                                d$k    sJ | )                                d?k    sJ )                                z  j#        sJ *                                d$k    sJ | *                                dk    sJ |*                                d	k    sJ +                                ddgdgg d@d	ggk    sJ | +                                d	gg dAdd$gdggk    sJ |+                                dgdgdgdggk    sJ ,                                dBk    sJ | ,                                dBk    sJ |,                                dk    sJ -                    |           | -                              k    sJ .                    |           .                    |           k    sJ /                    |           /                    |           k    sJ t          g d          t          g d5          } -                    |           d$k    sJ .                    |           dk    sJ /                    |           dBk    sJ t          g dC          t          j0        d	dd          } .                    |           dk    sJ t          t          fdD           t          t          fdE           t          t          fdF           dG t          d          D             }t          g d          }t          d          D ]}t          |dz   d          D ]}||         1                    ||                   t          ||         ||                   t          ||         ||                   k    k    sJ ||         1                    ||                   rN||                             ||                   |k    sJ ||                             ||                   |k    sJ ьt          d          } t          dd$d          dd          }|j2        dd	ik    sJ |j2        ddddHk    sJ t          t          dI            t          t          dJ            d S )KNc                  "    t          dg          S )N   r
        g/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/combinatorics/tests/test_permutations.py<lambda>z"test_Permutation.<locals>.<lambda>   s    {A3// r   r   r         c                 &    g | ]} |          S r   r   ).0ips     r   
<listcomp>z$test_Permutation.<locals>.<listcomp>   s!    (((QAAaDD(((r   r   r"   r   r"   r   r#   c                        d          S )Nr   r'   s   r   r    z"test_Permutation.<locals>.<lambda>   s    aaee r   c                        d          S )N   r   r,   s   r   r    z"test_Permutation.<locals>.<lambda>   s    aadd r      sizer#   r.   r   r"   r.   r      r#   r   r/   )r   r#   r.   r3   r"   r/   )r   r#   r"   r   r/   r3   r.   c                     g | ]	}|j         
S r   )
array_formr%   ws     r   r(   z$test_Permutation.<locals>.<listcomp>.   s    !B!B!B1!,!B!B!Br      )r   r"   r#   r/   r.   r3   i  )r/   r3   r   r"   r.   r#   r   )r3   r.   r#   r   r"   r/   r   )r   r"   r#   )r   r"   r/   )r   r/   r"   )r#   r   r/   r.   r   r3   r"   )r   r"   r   r.   )r#   r3   r/   ))r   r.   r   r   )r   r"   )r#   r/   )r#   r3   c                 :    g | ]}t          t          |           S r   )r
   r   )r%   tis     r   r(   z$test_Permutation.<locals>.<listcomp>K   s$    DDD"k%*55DDDr   r9      )r.   r   r   r3   r#   r"   r/   r+   r3   c                  \     t          t          t          d                              z   S )N
   )r
   listranger,   s   r   r    z"test_Permutation.<locals>.<lambda>`   s     a+d599oo">">> r   c                 ,    g | ]}t          |          S r   )r@   r6   s     r   r(   z$test_Permutation.<locals>.<listcomp>f   s    )B)B)Ba$q'')B)B)Br   )r"   r.   r   r3   r#   r   r/   )r.   r"   r   r3   r#   r   r/   )r.   r3   r   r/   r   r"   r#   )r/   r#   r3   r"   r   r.   r   c                  (     t          g           z  S Nr   r,   s   r   r    z"test_Permutation.<locals>.<lambda>r   s    q;r??2 r   c                  H                          t          g                     S rD   )
commutatorr
   r,   s   r   r    z"test_Permutation.<locals>.<lambda>w   s    q||KOO<< r   >   r   r   r"   r#   r/   r.   r3   )r"   r/   r   r#   r   r   )r#   r   r"   r"   r   r   c                  .    t          j        ddg          S )Nr   r"   )r
   from_inversion_vectorr   r   r   r    z"test_Permutation.<locals>.<lambda>   s    {@!QHH r   i  iB )r   r/   r   r#   r"   r   r   r/   r#   r"   r#   r"   r   r   )r.   r"   r   r/   r3   r   r#   r   r   r"   r#   r/   r   r.   r"   r   r#   r3   r/   r   r"   r#   r.   r3   )r   r#   r/   )r   r"   r.   )r   r#   r.         r?   )r   r#   r3   )r"   r#   r.      )r   r#   r   r"   r/   c                  H                          t          g                     S rD   )get_adjacency_distancer
   r,   s   r   r    z"test_Permutation.<locals>.<lambda>   s    q77BHH r   c                  H                          t          g                     S rD   )get_positional_distancer
   r,   s   r   r    z"test_Permutation.<locals>.<lambda>       q88RII r   c                  H                          t          g                     S rD   )get_precedence_distancer
   r,   s   r   r    z"test_Permutation.<locals>.<lambda>   rU   r   c                 8    g | ]}t          j        d |          S r/   )r
   unrank_nonlexr%   r&   s     r   r(   z$test_Permutation.<locals>.<listcomp>   s%    ;;;Q	"1a	(	(;;;r   )r"   r#   r   c                  $    t          dd          S )Nr#   r0   r   r   r   r   r    z"test_Permutation.<locals>.<lambda>   s    {11555 r   c                  (    t          g dd          S )Nr   r"   r   r#   r#   r0   r   r   r   r   r    z"test_Permutation.<locals>.<lambda>   s    {<<<a@@@ r   )3r   
ValueErrorr
   rA   r1   r@   	TypeErrorr   randomlenr   r5   rmulr   supportcyclic_formcardinalitycyclesr   full_cyclic_formtranspositionsrank_rankrF   atomsinversion_vectorrH   
inversionsparity_cyclic_formis_oddis_evenr   is_Singletonis_Emptyis_Identitymaxminascentsdescents	signatureorderlengthrunsindexrW   rR   rT   josephuscommutes_withcycle_structure)qransr   bctIpqqps_bigidenr&   jr'   s                   @r   test_Permutationr      s   
://000LLL!!A((((%--(((DGG33331T%--  !!T!WW,,,,!Q==LLL((((
9mmmm$$$
9llll###77d588nn$$$$6688q====77a<<<<A+a..0000{1~~A...+a..@@@@Axa(((K!Q!qc8J,K,KKKKKa  [!Q%8%8+q!f:M:M$NNNNN)))**AaS,,,-..A1v;;!)))**A
i!B!BAq	!B!B!BC
D
D
OC1a==#s****  Aq	** / /1aq!9Aq	!!Aq!}}'3.....99;;$uQxx..((((99;;,,,,,,,q}%%0AL@@@@=D    =D    8q====1::%:%:%:;;;;;;1::%:%:%:;;;;;;AL!,//    YYYA/00YYYaS1224 44?	QF    <0000000=///00000"4"4"4qc!:::::=\\\99955555	A8888888DDDDDEEEE1v--//F8;;;;b5A::::a4;tE!&MM22333333b5QTE>>>>a4;444555555a41a46>>>>a41a419AqAAq!AAA2B;;;;aR419999QU7ad????
$+aAq!
$
$Q
*
*CL  CHHJJ....L388::----L  CHHJJ....
9>>>>???L  K1aAq!$D$D$I$I$K$KKKKK6688affhh""""L  $;K1a$;$;Aq$A$A$F$F$H$HHHHHQ3+i)B)BAq6)B)B)BCDDDDDD[__!!!!r??1!!!![1a&"""k2G2G2G&H&HHHHHAx  "k2G2G2G&H&HHHHH	
QB222333333aQB	
QB222333333aQB
:2222333<<??k!Q1aA>>>>>><<??k!Q1aA>>>>>><<??q||A.....
:<<<<===qwwyy>>Q7799-------#5#5#55555#5#5#55555,Q-?-?-A-ABBaGGGG,Q-?-?-A-ABBM<   
:HHIIItE#r2..//00;;==GGGGOOO$$A88::????	Aq~!&((QXXZZ1____x9''..00A5555ooo&&!++++ooo&&!++++QCA>r??####LLL!!AqDA;;""""B8{#8#8#89999995577a<<<<5577a<<<<aS1#/00A5577a<<<<5577a<<<<)))**A___q!f-..A99;;)))####99;;)))####99;;"::<<999$$$$::<<999$$$$qzz||$$0000<<>>Q
q''Dquuww{AEEGGcM::;;
;Cs&&((A----;;==B<<>>R;;==BA2;;!!##q((((A2;;  ""a''''7799>>>>7799????		N''''88::????88::????88::????6688AYYY444446688YYYA444446688aS1#s+++++7799>>>>7799>>>>7799>>>>$$Q''1+D+DQ+G+GGGGG##A&&!*B*B1*E*EEEEE$$Q''1+D+DQ+G+GGGGGLLL!!ALLL!!A$$Q''1,,,,##A&&!++++$$Q''1,,,,OOO$$AQ1%%A##A&&!++++
:HHHHIII
:IIIIJJJ
:IIIIJJJ;;%((;;;A|||$$D1XX 5 5q1ua 	5 	5AQ4%%ad++adAaD!!T!A$!%5%557 7 7 7t!!!A$'' 5tqt,,4444tqt,,4444	5 	AAAq!Q""AA&&&&A! 2 22222
:55666
:@@AAAAAr   c                  ^    G d dt                      g d          } t          g d          | k    sJ t          t          fd           ddg | ddg          k    sJ t          | z            k    sJ t          | z            t           k    sJ fd} |             d S )	Nc                   2     e Zd Z fdZ fdZ fdZ xZS )7test_Permutation_subclassing.<locals>.CustomPermutationc                      	  t                      j        | S # t          $ r Y nw xY w	 |d         } fd|D             S # t          $ r t          d          w xY w)Nr   c                 *    g | ]}j         |         S r   )_array_form)r%   r   selfs     r   r(   zTtest_Permutation_subclassing.<locals>.CustomPermutation.__call__.<locals>.<listcomp>   s!    >>>(+>>>r   zunrecognized argument)super__call__r`   )r   r&   perm_obj	__class__s   `  r   r   z@test_Permutation_subclassing.<locals>.CustomPermutation.__call__   s    'uww'++   9Q4>>>>X>>>> 9 9 9 78889s    
''A Ac                     t          |t                    r*|                                 |                                k    S t                                          |          S rD   )
isinstancer
   _hashable_contentr   __eq__)r   otherr   s     r   r   z>test_Permutation_subclassing.<locals>.CustomPermutation.__eq__   sN    %-- ---//53J3J3L3LLLww~~e,,,r   c                 D    t                                                      S rD   )r   __hash__)r   r   s    r   r   z@test_Permutation_subclassing.<locals>.CustomPermutation.__hash__   s    77##%%%r   )__name__
__module____qualname__r   r   r   __classcell__)r   s   @r   CustomPermutationr      sj        
	9 
	9 
	9 
	9 
	9	- 	- 	- 	- 	-	& 	& 	& 	& 	& 	& 	& 	& 	&r   r   r   r"   r#   r   c                        ddg          S Nr   r"   r   )r   s   r   r    z.test_Permutation_subclassing.<locals>.<lambda>  s    aaAii r   r"   r#   r   c                      t                      d         t                      d<    t                      d<   t                       t                      d         t                      d<   t                      d= d S )Nr
   __Perm)globalsr   )r   s   r   wrapped_test_Permutationz>test_Permutation_subclassing.<locals>.wrapped_test_Permutation  s]    %ii6		(#4		- #*99X#6		- IIhr   )r
   r   r`   type)r'   r   r   r   s     @@r   test_Permutation_subclassingr      s   & & & & &K & & &, 	,,,''ALLL!!A6666
9''''(((q6QQ1vYYA;;+++++A;;+%%%%          r   c                      t          j        ddd          t          g d          k    sJ t          j        ddd          j        sJ d S )Nr/   r3   r   )r#   r   r   r"   r.   r/   r.   )r
   r   ru   r   r   r   test_josephusr     sU    1a((K8J8J8J,K,KKKKK1a((444444r   c                  j   t          j        dd                                          dk    sJ t          j        dd          } |                                 dk    sJ |                                 }|                                dk    sJ t          j        dd                                          dk    sJ t          j        dd          j        sJ t          j        dd          } |                                 dk    sJ | j        g d	k    sJ |                                 J t          g d
          } t          g dddgg          }d t          d          D             }|g dg dg dg dg dgk    sJ d |D             t          t          d                    k    sJ t          g d                                          t          g d          k    sJ |	                                dk    sJ | 	                                dk    sJ t          ddg          	                                dk    sJ t          t          t          d                              }|}g }g }t          d          D ]T}|
                    |           |
                    |           |                                }|                                }U||cxk    rn J d |D             d |D             k    sJ t          g d          } t          dgdgg dg          }|                                 dk    sJ |                                dk    sJ t          g                                           dk    sJ |                                 }|dk    sJ t          j        dd          | k    sJ |                                }	|	d k    sJ t          j        dd           t          |j                  k    sJ d! t          d"          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 d0g d	g d1g dg d2g d3g d4g dg dgk    sJ d}
t          |d                   }t          d|
dz             D ]}|t          ||                   z  }t          j        d5 ||
d d6         D              }||k    sJ g }t          ddg          } t          d          D ]I}|
                    | j                   |                                 } | |
                    d             nJ|ddgddgd gk    sJ t          g d$                                          t          g d%          k    sJ d7 |D             t          t          d"                    k    sJ d S )8Nr.   r?            r   r/      rJ   rL   rM   c                 B    g | ]}t          j        d |          j        S rY   )r
   unrank_trotterjohnsonr5   r[   s     r   r(   z test_ranking.<locals>.<listcomp>*  s(    NNN	*1a	0	0	;NNNr   r!   r   r   r#   r"   r   r#   r   r"   )r#   r   r   r"   )r#   r   r"   r   c                 P    g | ]#}t          |                                          $S r   )r
   rank_trotterjohnsonr%   pas     r   r(   z test_ranking.<locals>.<listcomp>-  s*    >>>bKOO//11>>>r   i  i=  r   r#   r3   c                 ,    h | ]}t          |          S r   tupler%   r   s     r   	<setcomp>ztest_ranking.<locals>.<setcomp>>  s       E!HH   r   c                 ,    h | ]}t          |          S r   r   r   s     r   r   ztest_ranking.<locals>.<setcomp>>  s    $:$:$:!U1XX$:$:$:r   r2   rK   i  if  i@  r8   )   c                 B    g | ]}t          j        d |          j        S rY   r
   rZ   r5   r[   s     r   r(   z test_ranking.<locals>.<listcomp>L  s(    GGG	"1a	(	(	3GGGr      r   )r#   r"   r   r   )r   r#   r   r"   r^   )r"   r#   r   r   )r"   r   r#   r   )r"   r   r   r#   )r   r#   r"   r   )r   r   r#   r"   )r   r   r"   r#   )r"   r   r#   r   )r"   r#   r   r   )r#   r   r   r"   )r"   r   r   r#   r   r"   r#   r   r)   r#   r   r"   r   )r   r#   r"   r   c                 ,    g | ]}t          |          S r   r   )r%   hs     r   r(   z test_ranking.<locals>.<listcomp>X  s    #E#E#EqKNN#E#E#Er   r+   c                 P    g | ]#}t          |                                          $S r   )r
   rank_nonlexr   s     r   r(   z test_ranking.<locals>.<listcomp>e  s*    666bKOO''))666r   )r
   
unrank_lexrj   next_lexru   r5   rA   r@   next_trotterjohnsonr   appendr   rZ   rmul_with_afnext_nonlex)r'   p1r   r   r   ltjr&   prankqrankNp2oks                r   test_rankingr     sd   !!R((--//25555r3''A6688s????	
B7799!"c**//11S8888!"a((4444q"%%A6688r>>>><<<<''''::<<)))**A___q!f-..ANNU1XXNNNA|||\\\ < < <LL    >>A>>>$uQxx..PPPP|||$$88::LLL!!" " " "   ""d****  ""d****1v22449999DqNN##A	A
A	B1XX $ $	
		!JJLL!!##>>>>>>>>>  a   $:$:r$:$:$:::::)))**AaS1#/00A6688t6688s????r??&&((A----MMOOED====$Q--2222MMOOEB;;;;$Q++{1</H/HHHHHGGU2YYGGGAlllLLL,,,lllLLL,,,lllLLL,,,lllLLL,,,lllLLL,,,@ @ @ @ @ 	A	QqT		B1ac]] " "AaD!!!		!#E#EAaeeH#E#E#E	FB8888	BQFA1XX  
		!,MMOO9IIdOOOE  1a&1a&$'''''|||$$0022k,,,6O6OOOOO66A666$uRyy//IIIIIIr   c            	      &   g dg dc} t          |           g dk    sJ t          | t          t          d                              g dk    sJ t	          t          |           t                              j        g dk    sJ t          g d          } ddt          j        |           t          g d          k    sJ t          j        |           t          g d          k    sJ t          t          fd           d	d
}fdt          |          D             } t          t                              }t          |          D ]4}t          || |                   }t          | d |dz             }||k    sJ 5d S )Nr)   r   r   r/   r   r   rJ   c                  .    t          j                   S rD   )r
   rc   )r   r   s   r   r    ztest_mul.<locals>.<lambda>s  s    k.q!44 r   r3   rP   c                 D    g | ]}t          j        |          j        S r   r   )r%   r&   ns     r   r(   ztest_mul.<locals>.<listcomp>w  s)    FFF	"1a	(	(	3FFFr   r   )	r   r   r@   rA   rc   r
   r5   r   r`   )r   mr   r&   h2r   r   r   s        @@@r   test_mulr   h  s   <<DAqAq>>\\\))))Q4a>>**lll::::AA//:lllJJJJLLL!!AAAAq!$$LLL(A(AAAAAAq!![%>%>>>>>
944444555	A	AFFFFU1XXFFFAU1XXA1XX  Q!&1q5&	"Bwwwww r   c                     t          ddg          } | j        J t          |           | k    sJ | j        g dddggk    sJ | j        g dk    sJ t          d          } | j        J | j        g dk    sJ t          dg          t          d          k    sJ t          dgdgg          t          d	          cxk    rt          ddgf          k    sn J t          dd
gg          t          g d          k    sJ t          dgdd
gg          t          g d          k    sJ t          dgdd
ggd          t          g d          k    sJ t          dgdd
ggd          t          g d          k    sJ t          ddgdd
gg          t          ddd
          k    sJ t          g d          t          g d          k    sJ t          d                              d          g dk    sJ t          d                              d          g k    sJ  t          d          dd
                              d          g dk    sJ  t          d          dd
                                          g dk    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          dd          t          g d          k    sJ d S )Nr   )r/   r.   r/   r.   )r#   r"   r   r   r.   r/   r   r   r   )r   )r   r"   r   r"   r   rI   r0   r3   )r   r   r/   r#   r"   r.   r#   r   r   r"   rK   r+   )r   r"   r   r#   r/   r.   c                  (    t          ddgdg          S Nr   r"   r   r   r   r   r   r    ztest_args.<locals>.<lambda>  s    {Aq6A377 r   c                  (    t          ddgdg          S r   r   r   r   r   r    ztest_args.<locals>.<lambda>  s    {QFA;77 r   c                  $    t          g d          S )N)r   r   r   r   r   r   r   r    ztest_args.<locals>.<lambda>  s    {99955 r   c                  (    t          ddgd          S )Nr/   r.   r?   r0   r   r   r   r   r    ztest_args.<locals>.<lambda>  s    {Aq6;;; r   )r   r   r"   r#   r.   r/   )r
   rp   re   r   r@   r   r_   r,   s    r   	test_argsr     s   \6*++A>!!!q>>Q=\\\Aq622222=.......L!!A>!!!=LLL((((s{5111111aSz""k.&A&A " " " "UQCL!!" " " " " "Ax  K			$:$:::::aV}%%___)E)EEEEEaV}1---___1M1MMMMM
q!fA  "-.@.@.@"A"AB B B BAA'((K1a,@,@@@@@r"""k)))&<&<<<<<q>>q!!___4444q>>r""b((((;q>>!Q$$R((III5555;q>>!Q$$&&*<*<*<<<<<
:77888
:77888
:55666
:;;<<<q!,>,>,> ? ???????r   c            	         t          t                                dk    sJ t          t          dd                    t          dd          k    sJ t          dd                                          t          dd          k    sJ t          t          ddd                    g dk    sJ  t          dd          dd          t          ddd          k    sJ   t          dd          dd          dd           t          ddd          dd          k    sJ t	           t          dd          dddd                    j        sJ t          ddd                      t          t          d	            t          dd                                          g d
k    sJ t          dd                              d          g dk    sJ t          d                              d          ddgk    sJ t          d                              d          g dk    sJ t	          t          dd          d          t	          g d          k    sJ t           t          dd          dd                    dk    sJ t          t          dd                    dk    sJ t          t	          t          t          d                                        t                      k    sJ t          dd                                          g d
k    sJ t          dd                              d          g dk    sJ t                      j	        dk    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t	          ddgddggd          } t	          t          |                     | k    sJ d S )N()r   r"   r#   r   r/   r.   r   c                  B    t                                                      S rD   )r   r@   r   r   r   r    ztest_Cycle.<locals>.<lambda>  s    uww||~~ r   r   r)   r3   r   r   r"   r#   r/   r.   r0   z
(1 2)(4 5)(1 2)c                       t          d          S )N)r   r"   r   r   r   r   r    ztest_Cycle.<locals>.<lambda>  s    uV}} r   c                  $    t          ddd          S r   r   r   r   r   r    ztest_Cycle.<locals>.<lambda>  s    uQ1~~ r   c                  (    t          dd          i z  S r   r   r   r   r   r    ztest_Cycle.<locals>.<lambda>  s    eAqkk"n r   c                  6    t          d          t                   S Nr/   )r   r   r   r   r   r    ztest_Cycle.<locals>.<lambda>  s    uQxx{ r   c                  $    t          ddd          S )Nr"   r#   r   r   r   r   r    ztest_Cycle.<locals>.<lambda>  s    uQA r   )strr   r   r@   r
   re   r   r_   rA   r1   r`   r,   s    r   
test_Cycler     s   uww<<4qa++++1::??a

****aA<<<////5A;;q!aA....;5A;;q!Q""neAq!nnQ&:&:::::{uQ{{1aA..//;KKU1a^^KKK
:--...A;;****A;;A,,,....88==1v%%%%88==1111111uQ{{+++LLL!!" " " "{uQ{{1a  !!\1111uQ{{w&&&&T%((^^,,--8888A;;****A;;A,,,....77<1
:,,---
:--...
9,,---
:**+++
:../// 	aVaV$1---AuQxx  A%%%%%%r   c                      t          j        d           t          d          ddd          k    sJ t          j        dd             t          d          dd          dd          k    sJ d S )	NSymPyr/   r   r   r#   c                 *    |                                  S rD   )lowerxs    r   r    z$test_from_sequence.<locals>.<lambda>  s    AGGII r   )keyr"   )r
   from_sequencer   r   r   test_from_sequencer    s    $W--Q1a1H1HHHHH$W2E2EFFFAq!Q""# # # # # #r   c                      t          ddd                                d          t          dddd          k    sJ                      d          t          dddd          k    sJ                      d           k    sJ t          t           fd             t          ddd          dd          dd	                                d          t          ddd          k    sJ t          t           fd
           d S )Nr   r   r"   r.   r0   r/   r#   c                  .                          d          S )Nr"   resizer,   s   r   r    ztest_resize.<locals>.<lambda>      qxx{{ r   r3   c                  .                          d          S r   r
  r,   s   r   r    ztest_resize.<locals>.<lambda>  r  r   )r
   r  r   r_   r,   s   @r   test_resizer    s   Aq!A88A;;+aAA666666688A;;+aAA666666688A;;!
:****+++"Aq!Q""1a((A88A;;+aA......
:****+++++r   c                  8   t          g d          } t          |           dk    sJ t          |           dk    sJ t                      }t          |          dk    sJ t          |          dk    sJ t          g d          }t          |          dk    sJ d S )Nr   zPermutation(1, 2)r   zPermutation()r   r^   zPermutation(3)(0, 1, 2))r
   reprr   )r   r   p3s      r   test_printing_cyclicr    s    	YYY		B88*****r77g	B88&&&&r77d????	\\\	"	"B880000000r   c                     t          g d          } t          | d          dk    sJ t          | d          dk    sJ t          g d          }t          |d          dk    sJ t          |d          dk    sJ t          g d          }t          |d          dk    sJ t          |d          dk    sJ t          g d	          }t          |d          d
k    sJ d S )Nr   F)perm_cycliczPermutation([], size=6)r   zPermutation([0, 1, 2])r   zPermutation([0, 2, 1]))r   r   r#   r"   r/   r.   r3   r8   z!Permutation([0, 1, 3, 2], size=8))r
   r   r   )r   r   r  p4s       r   test_printing_non_cyclicr    s+   	'''	(	(B'''+DDDDD&&&*CCCCC	YYY		B'''+CCCCC&&&*BBBBB	YYY		B'''+CCCCC&&&*BBBBB	---	.	.B'''+NNNNNNNr   c                  X   t          ddd          } 	 dt           _        t                      5  t          |           dk    sJ 	 d d d            n# 1 swxY w Y   t                      5  t	          |           dk    sJ 	 d d d            n# 1 swxY w Y   t                      5  t          |           dk    sJ 	 d d d            n# 1 swxY w Y   t                      5  t          |           dk    sJ 	 d d d            n# 1 swxY w Y   dt           _        t                      5  t          |           d	k    sJ 	 d d d            n# 1 swxY w Y   t                      5  t	          |           d	k    sJ 	 d d d            n# 1 swxY w Y   t                      5  t          | d
          dk    sJ 	 d d d            n# 1 swxY w Y   t                      5  t          |           dk    sJ 	 d d d            n# 1 swxY w Y   d t           _        d S # d t           _        w xY w)Nr   r   r"   Tz(0 1 2)zPermutation(0, 1, 2)z\left( 0\; 1\; 2\right)FzPermutation([1, 2, 0]))use_unicodez/0 1 2\
\1 2 0/z4\begin{pmatrix} 0 & 1 & 2 \\ 1 & 2 & 0 \end{pmatrix})r
   print_cyclicr   r   r   r   r   r,   s    r   test_deprecated_print_cyclicr    sd   Aq!A(#' #%% 	( 	(77i'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(#%% 	6 	688555555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6#%% 	* 	*!99	)))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*#%% 	: 	:88999999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: $) #%% 	7 	777666666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7#%% 	8 	888777777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8#%% 	H 	H!///3GGGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H#%% 	H 	H88GH H H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H $(   4 ''''s*  H AH AH AH )B H BH BH %C<H CH CH !D8H DH DH )E H EH EH %F<H FH FH !G:H G

H G
H H6H HH 	H
H H)c                     t          ddd          } t          ddd          }t          | |          t          j        u sJ t          ddd          }t          | |          t          j        u sJ t          dddd          }t          t          | |          sJ t          dddd          }t          t          | |          sJ t                      }t          t          |d          sJ t          t          d|          sJ d S )Nr   r   r"   r/   r0   )r
   r   r	   truefalser   )r   r   r   der&   s         r   test_permutation_equalityr     s   Aq!AAq!Aa88qvAq!Aa88qwAq!!$$$ARAAq!!$$$ARAARARAr   c                      t          dd          } t          dd          }| |k    sJ t          |           dk    sJ | |k    sJ d S )Nr   r"   zCycle(1, 2))r   r  )c1c2s     r   test_issue_17661r$    sQ    	qB	qB888888}$$$$888888r   c                  "    t          d          t          ddd                                d          dk    sJ t                               d          t                    sJ                                t                     k    sJ t                                         d          dk    sJ t          dd          t          t           fd           t          dd	          t          t           fd
           d S )Nr  r   r   r"   Fr   c                  .                                    S rD   applyr'   r  s   r   r    z(test_permutation_apply.<locals>.<lambda>)      

 r   T)negativec                  .                                    S rD   r'  r)  s   r   r    z(test_permutation_apply.<locals>.<lambda>+  r*  r   )	r   r
   r(  r   r   r   subsr   NotImplementedErrorr)  s   @@r   test_permutation_applyr/     s   sAAq!A771::????aggajj'*****771::+Aq111111a##((A..!3333sE"""A
 2 2 2 2 2333sT"""A
 2 2 2 2 233333r   c                      t          d          t          ddd          } t          t          fd           t	          | dd          dk    sJ t	          | dd          j        t          k    sJ d S )	Nr  r   r   r"   c                  $    t          d           S )Nr   )r   r  s   r   r    z)test_AppliedPermutation.<locals>.<lambda>1  s    1)Q?? r   T)evaluateF)r   r
   r   r_   r   r   r)  s    @r   test_AppliedPermutationr3  .  s    sAAq!A
:????@@@aT222a7777aU333=     r   N).	itertoolsr   r   sympy.core.exprr   sympy.core.numbersr   sympy.core.relationalr   sympy.core.symbolr   sympy.core.singletonr	    sympy.combinatorics.permutationsr
   r   r   r   r   r   sympy.printingr   r   r   r   sympy.testing.pytestr   r   rc   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r$  r/  r3  r   r   r   <module>r=     sN   " " " " " "       % % % % % % & & & & & & $ $ $ $ $ $ $ $ $ $ $ $ " " " " " "L L L L L L L L L L L L L L L L 5 5 5 5 5 5 5 5 5 5 5 5 ? ? ? ? ? ? ? ? 
F3RB RB RBj+ + +\5 5 5
JJ JJ JJZ  .@ @ @B& & &@# # #	, 	, 	,1 1 1O O O( ( (6  "  4 4 4    r   