
    \hN                     &   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJrJrJrJrJr  S S	KJrJrJrJr  S S
KJrJr  \R8                  r\
" SSS9rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-g)    )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                  "  ^ [        [        S 5        [        / SQ5      m[        TR                  5       V s/ s H  n T" U 5      PM     sn [        T5      :X  d   eT" [        [        TR                  5      5      5      [        T5      :X  d   e[        T" SS5      5      / SQ:X  d   e[        [        U4S j5        [        [        U4S j5        [        T5      [        [        S5      5      :X  d   eTR                  5       T:X  d   e[        T5      T:X  d   e[        SS	9[        S
5      :X  d   e[        [        S
5      SS	9[        S5      :X  d   e[        SS//SS	9[        SS/S/S
//5      :X  d   e[        R                  " S5      [        SS/5      [        SS/5      4;   d   e[        / SQ5      m[        S// SQ/5      n[        TT15      S:X  d   e[        / SQ5      n[        [        TX4 Vs/ s H  o3R                  PM     sn6 5      R                  n[        TX5      R                  U:X  d   e[        TX45       H.  u  pVnXVU4TX4:X  a  M  [        XVU5      R                  U:w  a  M.   e   TR                  5       [        [        S5      5      :X  d   eUR                  5       / SQ:X  d   e[        TR                  5      R                  TR                  :X  d   eTR                   S:X  d   eUR                   S:X  d   eUR"                  S:X  d   e[        UT5      [        / SQ5      :X  d   e[        TU5      [        / SQ5      :X  d   e[%        TR                  UR                  5      / SQ:X  d   e[        [        / SQSS//5      [        / SQS/S
//5      5      R                  / SQSS
//:X  d   eUR                  / SQ:X  d   eUR                  / SQ/:X  d   eUR&                  / SQS//:X  d   eTR                  / SQ/ SQ/:X  d   eTR)                  5       nU/ SQ:X  d   e[        R                  " U V	s/ s H  n	[        [+        U	6 5      PM     sn	6 (       d   e[        SS/5      R)                  5       S/:X  d   eTS-  T:X  d   eUS-  [        [        [        UR                  5      5      5      :X  d   eUS-  US-  ) :X  d   eUS-  [        / SQ5      :X  d   eUS
-  US-  U-  :X  d   eUS-  US-  US-  -  :X  d   e[        SS
5      n[        SSS
5      n[        S
5      n
U) US -  :X  d   eXU) -  U
:X  d   eXVS -  -  XV) -  :X  d   e[        SSS
SS!5      " SS5      nTUR-                  5       -   R-                  5       UR-                  5       :X  d   eTUR-                  5       -   R.                  UR-                  5       :X  d   eUTR-                  5       -   R-                  5       UR-                  5       :X  d   e[        [        U4S" j5        TUR-                  5       -
  R-                  5       [        SS!S
SSSS5      R-                  5       :X  d   eTR-                  5       UR-                  5       -
  S:  d   eUTR-                  5       -
  R-                  5       [        SSS!S5      " S
S5      R-                  5       :X  d   eTU-  [        [        UT4 Vs/ s H  n[        U5      PM     sn6 5      :X  d   eT[        / 5      -  T:X  d   e[        / 5      T-  T:X  d   eT[        SS//5      -  [        / S#Q5      :X  d   e[        SS//5      T-  [        / S$Q5      :X  d   eTU-  nU[        / S%Q5      :X  d   eU[        UTU) 5      :X  d   eUT-  nU[        / S&Q5      :X  d   eU[        TUT) 5      :X  d   e[        [        U4S' j5        TR1                  U5      [        SSS
SS!SS5      :X  d   eUR1                  T5      [        SSSS!SS
S5      :X  d   eTR1                  U5      UR1                  T5      ) :X  d   e[        [        U4S( j5        [        TR3                  5       5      S:X  d   eUR3                  5       1 S)k:X  d   eTR5                  5       / S*Q:X  d   eUR5                  5       / S+Q:X  d   e[        R6                  " TR5                  5       5      T:X  d   e[        R6                  " UR5                  5       5      R                  UR                  :X  d   e[        [        S, 5        [        [        [        S-S S 5      5      5      R9                  5       S.:X  d   e[        / S/Q5      nUR;                  5       S:X  d   eUR                  n[        UR<                  5      UR                  :w  a  UR;                  5       S:X  d   eUR>                  (       a   eUR@                  (       d   e[        / S0Q5      R;                  5       S:X  d   e[C        / S/Q5      S:X  d   e[C        / S0Q5      S:X  d   e[        S/5      nURD                  (       d   e[        / 5      RF                  (       d   e[        / S1Q5      nUS-  RH                  (       d   e[        T) T5      RH                  (       d   eT) S-  [        / S2Q5      :X  d   eTRK                  5       S!:X  d   eTRM                  5       S:X  d   e[        S!/S// S3Q/5      nURK                  5       S:X  d   eURM                  5       S:X  d   e[        / S4Q5      m[        / S5QSS//5      nTRO                  5       / S6Q:X  d   eURO                  5       / SQ:X  d   eURO                  5       / :X  d   eTRQ                  5       / S7Q:X  d   eURQ                  5       / S8Q:X  d   e[        URQ                  5       5      RH                  (       d   eTR9                  5       S:X  d   e[        T5      [        [        TRK                  5       S-   TRK                  5       S9-   5      5      -   n[        U5      R9                  5       S:X  d   eTRS                  5       S :X  d   eUR9                  5       S::X  d   eURS                  5       S :X  d   e[        TT) 5      R9                  5       S:X  d   e[        TT) 5      RS                  5       S:X  d   eTRU                  5       S!:X  d   eURU                  5       S;:X  d   eTTRU                  5       -  RH                  (       d   eTRW                  5       S!:X  d   eURW                  5       S:X  d   eURW                  5       S:X  d   eTRY                  5       SS/S// S<QS//:X  d   eURY                  5       S// S=QSS!/S//:X  d   eURY                  5       S
/S/S/S//:X  d   eTR[                  5       S>:X  d   eUR[                  5       S>:X  d   eUR[                  5       S
:X  d   eTR]                  U5      UR]                  T5      :X  d   eTR_                  U5      TR_                  U5      :X  d   eTRa                  U5      TRa                  U5      :X  d   e[        / SQ5      m[        / S1Q5      nTR]                  U5      S!:X  d   eTR_                  U5      S
:X  d   eTRa                  U5      S>:X  d   e[        / S?Q5      m[        Rb                  " SSS5      nTR_                  U5      S
:X  d   e[        [        U4S@ j5        [        [        U4SA j5        [        [        U4SB j5        [        S5       V s/ s H  n [        Rd                  " SU 5      PM     nn [        / SQ5      n[        S5       H  n [        U S-   S5       H  nXP   Rg                  UU   5      [        XP   UU   5      [        UU   XP   5      :H  :X  d   eXP   Rg                  UU   5      (       d  M]  XP   R1                  UU   5      U:X  d   eUU   R1                  XP   5      U:X  a  M   e   M     [        S
5      n[        SS!S
5      " SS5      nURh                  SS0:X  d   eURh                  SSSSC.:X  d   e[        [        SD 5        [        [        SE 5        g s  sn f s  snf s  sn	f s  snf s  sn f )FNc                      [        S/5      $ )N   r
        c/var/www/auris/envauris/lib/python3.13/site-packages/sympy/combinatorics/tests/test_permutations.py<lambda>"test_Permutation.<locals>.<lambda>   s    {A3/r   r   r         r   r#   r   r#   r   r$   c                     > T " S5      $ )Nr   ps   r   r    r!      s	    aer   c                     > T " S5      $ )N   r   r(   s   r   r    r!      s	    adr      sizer$   r+   r   r#   r+   r      r$   r   r,   )r   r$   r+   r0   r#   r,   )r   r$   r#   r   r,   r0   r+      )r   r#   r$   r,   r+   r0   i  )r,   r0   r   r#   r+   r$   r   )r0   r+   r$   r   r#   r,   r   )r   r#   r$   )r   r#   r,   )r   r,   r#   )r$   r   r,   r+   r   r0   r#   )r   r#   r   r+   )r$   r0   r,   ))r   r+   r   r   )r   r#   )r$   r,   )r$   r0   r2      )r+   r   r   r0   r$   r#   r,   r'   r0   c                  D   > T [        [        [        S5      5      5      -   $ )N
   )r
   listranger(   s   r   r    r!   `   s    a+d59o">>r   )r#   r+   r   r0   r$   r   r,   )r+   r#   r   r0   r$   r   r,   )r+   r0   r   r,   r   r#   r$   )r,   r$   r0   r#   r   r+   r   c                      > T [        / 5      -  $ Nr   r(   s   r   r    r!   r   s    q;r?2r   c                  8   > T R                  [        / 5      5      $ r:   )
commutatorr
   r(   s   r   r    r!   w   s    q||KO<r   >   r   r   r#   r$   r,   r+   r0   )r#   r,   r   r$   r   r   )r$   r   r#   r#   r   r   c                  2    [         R                  " SS/5      $ )Nr   r#   )r
   from_inversion_vectorr   r   r   r    r!      s    {@@!QHr   i  iB )r   r,   r   r$   r#   r   r   r,   r$   r#   r$   r#   r   r   )r+   r#   r   r,   r0   r   r$   r   r   r#   r$   r,   r   r+   r#   r   r$   r0   r,   r   r#   r$   r+   r0   )r   r$   r,   )r   r#   r+   )r   r$   r+         r6   )r   r$   r0   )r#   r$   r+      )r   r$   r   r#   r,   c                  8   > T R                  [        / 5      5      $ r:   )get_adjacency_distancer
   r(   s   r   r    r!      s    q77BHr   c                  8   > T R                  [        / 5      5      $ r:   )get_positional_distancer
   r(   s   r   r    r!          q88RIr   c                  8   > T R                  [        / 5      5      $ r:   )get_precedence_distancer
   r(   s   r   r    r!      rK   r   )r#   r$   r   c                      [        SSS9$ )Nr$   r-   r   r   r   r   r    r!      s    {115r   c                      [        / SQSS9$ )Nr   r#   r   r$   r$   r-   r   r   r   r   r    r!      s    {<a@r   )5r   
ValueErrorr
   r8   r.   r7   	TypeErrorr   randomlenr   
array_formrmulr   supportcyclic_formcardinalitycyclesr   full_cyclic_formtranspositionsr   rank_rankr<   atomsinversion_vectorr>   
inversionsparity_cyclic_formis_oddis_evenr   is_Singletonis_Emptyis_Identitymaxminascentsdescents	signatureorderlengthrunsindexrM   rH   rJ   josephusunrank_nonlexcommutes_withcycle_structure)iqrwansr   bcttiIpqqps_bigidenjr)   s                     @r   test_Permutationr      sY   
:/0L!A-(-QAaD-(DG333T%- !T!W,,,!Q=L(((
9m$
9l#7d58n$$$668q==7a<<A+a.000{1~A.+a.@@@Axa(K!Q!qc8J,KKKKa [!Q%8+q!f:M$NNNN)*AaS,-.A1v;!)*A
iA	!B	1,,	!BC
D
O
OC1=##s***  A	*a!9A	!A!}''3... +
 99;$uQx.(((99;,,,,q}}%00ALL@@@==D   ==D   88q==1:%:;;;;1:%:;;;;ALL!,,/   YA/0YaS1244?K	QF   <<0000==/0000"4qc!::::==\95555	A8888D"k%*5DEEE1v--/F8;;;b5A::a4;tE!&&M23333b5QTE>>a4;45555a41a46>>a41a419AqAAq!AAA2B;;R4199U7ad??
aAq!
$Q
*CL CHHJ...L388:---L CHHJ...
9>?L K1aAq!$D$I$I$KKKK668affh"""L K1a$;Aq$A$F$F$HHHHQ3+iAq6)B6a$q'6)BCDDDD[_!!!r?1!!![1a&""k2G&HHHHAx "k2G&HHHH	
QB23333aQB	
QB23333aQB
:23<<?k!Q1aA>>>><<?k!Q1aA>>>><<?q||A....
:<=qwwy>Q779----#5555#5555,,Q-?-?-ABaGGG,,Q-?-?-ABMM<<  
:HItE#r2./0;;=GGGO$A88:??	Aq~~!&&(QXXZ1_<<xx<999'..0A555o&!+++o&!+++QCA>>>r?####L!AqDA;""""B8{#89999557a<<557a<<aS1#/0A557a<<557a<<)*A_q!f-.A99;)###99;)###99;"::<9$$$::<9$$$qzz|$0000<<>Q
q'Dquuw{AEEGcM:;
;Cs&&(A---;;=B<<>R;;=BA2;!!#q(((A2;  "a'''779>>779??	N''''88:??88:??88:??668AY4444668YA4444668aS1#s++++779>>779>>779>>$$Q'1+D+DQ+GGGG##A&!*B*B1*EEEE$$Q'1+D+DQ+GGGGL!AL!A$$Q'1,,,##A&!+++$$Q'1,,,O$AQ1%A##A&!+++
:HI
:IJ
:IJ27(;(Q	"	"1a	((A;|$D1Xq1uaA4%%ad+adAaD!T!A$%557 7 7t!!!A$''tqt,444tqt,444 !  	AAAq!Q"AA&&&A! 2222
:56
:@A[ ), "C: E6 *C^ 	<s"   AC*8AC/AC4,AC9!AC>c                  "  ^^  " S S[         5      mT" / SQ5      n [        / SQ5      mU T:X  d   e[        [        U4S j5        SS/U " SS/5      :X  d   e[        U T-  5      T:X  d   e[        TU -  5      [         :X  d   eU4S jnU" 5         g )	Nc                   @   ^  \ rS rSrU 4S jrU 4S jrU 4S jrSrU =r$ )7test_Permutation_subclassing.<locals>.CustomPermutation   c                    >  [         TU ]  " U6 $ ! [         a     Of = f US   nU Vs/ s H  o0R                  U   PM     sn$ s  snf ! [         a    [        S5      ef = f)Nr   zunrecognized argument)super__call__rR   _array_form)selfrv   perm_objr   	__class__s       r   r   @test_Permutation_subclassing.<locals>.CustomPermutation.__call__   st    w'++ 9Q45=>X((+X>>> 9 7889s(    
	A
 AA
 A
 
A c                    > [        U[        5      (       a!  U R                  5       UR                  5       :H  $ [        TU ]  U5      $ r:   )
isinstancer
   _hashable_contentr   __eq__)r   otherr   s     r   r   >test_Permutation_subclassing.<locals>.CustomPermutation.__eq__   s<    %----/53J3J3LLLw~e,,r   c                     > [         TU ]  5       $ r:   )r   __hash__)r   r   s    r   r   @test_Permutation_subclassing.<locals>.CustomPermutation.__hash__   s    7#%%r   r   )	__name__
__module____qualname____firstlineno__r   r   r   __static_attributes____classcell__)r   s   @r   CustomPermutationr      s    
	9	-	& 	&r   r   r   r#   r$   r   c                     > T " SS/5      $ Nr   r#   r   )rw   s   r   r    .test_Permutation_subclassing.<locals>.<lambda>  s    aAir   r#   r$   r   c                     > [        5       S   [        5       S'   T [        5       S'   [        5         [        5       S   [        5       S'   [        5       S	 g )Nr
   __Perm)globalsr   )r   s   r   wrapped_test_Permutation>test_Permutation_subclassing.<locals>.wrapped_test_Permutation  sE    %i6	(#4	- #*9X#6	- Ihr   )r
   r   rR   type)r)   r   r   rw   s     @@r   test_Permutation_subclassingr      s    &K &, 	,'AL!A6M6
9'(q6Q1vYA;++++A;+%%%  r   c                      [         R                  " SSS5      [        / SQ5      :X  d   e[         R                  " SSS5      R                  (       d   eg )Nr,   r0   r   )r$   r   r   r#   r+   r,   r+   )r
   rr   rh   r   r   r   test_josephusr     sC    1a(K8J,KKKK1a(4444r   c                     [         R                  " SS5      R                  5       S:X  d   e[         R                  " SS5      n U R                  5       S:X  d   eU R                  5       nUR                  5       S:X  d   e[         R                  " SS5      R                  5       S:X  d   e[         R                  " SS5      R                  (       d   e[         R                  " SS5      n U R                  5       S:X  d   eU R
                  / S	Q:X  d   eU R                  5       b   e[        / S
Q5      n [        / SQSS//5      n[        S5       Vs/ s H$  n[         R                  " SU5      R
                  PM&     nnU/ SQ/ SQ/ SQ/ SQ/ SQ/:X  d   eU Vs/ s H  n[        U5      R                  5       PM     sn[        [        S5      5      :X  d   e[        / SQ5      R                  5       [        / SQ5      :X  d   eUR                  5       S:X  d   eU R                  5       S:X  d   e[        SS/5      R                  5       S:X  d   e[        [        [        S5      5      5      nUn/ n/ n[        S5       HE  nUR                  U5        UR                  U5        UR                  5       nUR                  5       nMG     XFs=:X  a  b   e   eU Vs1 s H  n[        U5      iM     snU Vs1 s H  n[        U5      iM     sn:X  d   e[        / SQ5      n [        S/S// SQ/5      nU R                  5       S:X  d   eUR                  5       S:X  d   e[        / 5      R                  5       S:X  d   eU R                  5       n	U	S:X  d   e[         R                  " SS5      U :X  d   eUR                  5       n
U
S:X  d   e[         R                  " SS5      [        UR
                  5      :X  d   e[        S5       Vs/ s H$  n[         R                  " SU5      R
                  PM&     nnU/ SQ/ SQ/ S Q/ S!Q/ S"Q/ S#Q/ SQ/ S$Q/ S%Q/ SQ/ S&Q/ S'Q/ S(Q/ S)Q/ S*Q/ S+Q/ S	Q/ S,Q/ SQ/ S-Q/ S.Q/ S/Q/ SQ/ SQ/:X  d   eSn[        US   5      n[        SUS-   5       H  nU[        XC   5      -  nM     [         R                  " XKS S02    Vs/ s H  n[        U5      PM     sn6 nX:X  d   e/ n[        SS/5      n [        S5       HD  nUR                  U R
                  5        U R!                  5       n U b  M3  UR                  S 5          O   USS/SS/S /:X  d   e[        / SQ5      R!                  5       [        / S Q5      :X  d   eU Vs/ s H  n[        U5      R                  5       PM     sn[        [        S5      5      :X  d   eg s  snf s  snf s  snf s  snf s  snf s  snf s  snf )1Nr+   r6            r   r,      r@   rB   rC   r"   r   r   r$   r#   r   r$   r   r#   )r$   r   r   r#   )r$   r   r#   r   i  i=  r   r$   r0   r/   rA   i  if  i@  r1   )      r   )r$   r#   r   r   )r   r$   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   r   )r$   r   r   r#   )r#   r   r   r$   r   r#   r$   r   r%   r$   r   r#   r   )r   r$   r#   r   r'   )r
   
unrank_lexr]   next_lexrh   rU   r8   unrank_trotterjohnsonrank_trotterjohnsonr7   next_trotterjohnsonappendtuplerank_nonlexrs   rmul_with_afnext_nonlex)r)   p1rw   rv   r   par{   ltjprankqrankNhp2oks                  r   test_rankingr     sI   !!!R(--/2555r3'A668s??	
B779!!"c*//1S888!!"a(4444q"%A668r>><<<'''::<)*A_q!f-.AEJ1XNX	*	*1a	0	;	;XAN|\ <   <=>AbKO//1A>$uQx.PPP|$88:L!" " "   "d***  "d***1v224999DqN#A	A
A	B1X	
		!JJL!!#	 
 >>> aE!Ha r$:r!U1Xr$::::)*AaS1#/0A668t668s??r?&&(A---MMOED==$$Q-222MMOEB;;$$Q+{1<</HHHH=B2YGY	"	"1a	(	3	3YAGlL,lL,lL,lL,lL,@ @ @ @ 	A	QqT	B1ac]AD!! 		!	!AeeH#EHqKNH#E	FB8O8	BQFA1X
		!,,MMO9IIdO  1a&1a&$''''|$002k,6OOOO456AbKO'')A6$uRy/IIIw 	O ?" !$: 	H $F 7s*   +W#WW4W +W%W*#W/c            	        ^^ / SQ/ SQsn m[        U T5      / SQ:X  d   e[        U T[        [        S5      5      5      / SQ:X  d   e[	        [        U 5      [        T5      5      R                  / SQ:X  d   e[        / SQ5      n SmSm[
        R                  " U TT5      [        / SQ5      :X  d   e[
        R                  " U T5      [        / SQ5      :X  d   e[        [        UU4S j5        S	nS
n[        U5       Vs/ s H#  n[
        R                  " X5      R                  PM%     n n[        [        U5      5      n[        U5       H&  n[        X@U   5      n[        U S US-    6 nXE:X  a  M&   e   g s  snf )Nr%   r   r   r,   r   r   r@   c                  2   > [         R                  " T T5      $ r:   )r
   rV   )r{   r|   s   r   r    test_mul.<locals>.<lambda>s  s    k..q!4r   r0   rF   r   )
r   r   r7   r8   rV   r
   rU   r   rR   rs   )r   nmrv   r   h2r{   r|   s         @@r   test_mulr   h  sD   DAqAq>\)))Q4a>*l:::AA/::lJJJL!AAAAq!$L(AAAAAq![%>>>>
945	A	A=B1XFX	"	"1	(	3	3XAFU1XA1XQ!&1q5	"ww  	Gs   ?*E5c                     [        SS/5      n U R                  b   e[        U 5      U :X  d   eU R                  / SQSS//:X  d   eU R                  / SQ:X  d   e[        S5      n U R                  b   eU R                  / SQ:X  d   e[        S/5      [        S5      :X  d   e[        S/S//5      [        S	5      s=:X  a  [        SS/45      :X  d   e   e[        SS
//5      [        / SQ5      :X  d   e[        S/SS
//5      [        / SQ5      :X  d   e[        S/SS
//SS9[        / SQ5      :X  d   e[        S/SS
//SS9[        / SQ5      :X  d   e[        SS/SS
//5      [        SSS
5      :X  d   e[        / SS9[        / SQ5      :X  d   e[        S5      R	                  S5      / SQ:X  d   e[        S5      R	                  S5      / :X  d   e[        S5      " SS
5      R	                  S5      / SQ:X  d   e[        S5      " SS
5      R	                  5       / SQ:X  d   e[        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        SS5      [        / SQ5      :X  d   eg )Nr   )r,   r+   r,   r+   )r$   r#   r   r   r+   r,   r   r   r   )r   )r   r#   r   r#   r   r?   r-   r0   )r   r   r,   r$   r#   r+   r$   r   r   r#   rA   r'   )r   r#   r   r$   r,   r+   c                       [        SS/S/5      $ Nr   r#   r   r   r   r   r   r    test_args.<locals>.<lambda>  s    {Aq6A37r   c                       [        SS/S/5      $ r   r   r   r   r   r    r     s    {QFA;7r   c                      [        / SQ5      $ )N)r   r   r   r   r   r   r   r    r     s	    {95r   c                      [        SS/SS9$ )Nr,   r+   r6   r-   r   r   r   r   r    r     s    {Aq6;r   )r   r   r#   r$   r+   r,   )r
   rc   rX   r   r7   r   rQ   r(   s    r   	test_argsr     s   \6*+A>>!!!q>Q==\Aq62222==....L!A>>!!!==L(((s{51111aSz"k.&A "UQCL!" " " " "Ax K	$::::aV}%_)EEEEaV}1-_1MMMM
q!fA"-.@"AB B BAA'(K1a,@@@@r"k)&<<<<q>q!_444q>r"b(((q>!Q$$R(I555q>!Q$$&*<<<<
:78
:78
:56
:;<q!,> ????r   c            	      V   [        [        5       5      S:X  d   e[        [        SS5      5      [        SS5      :X  d   e[        SS5      R                  5       [        SS5      :X  d   e[        [        SSS5      5      / SQ:X  d   e[        SS5      " SS5      [        SSS5      :X  d   e[        SS5      " SS5      " SS5      [        SSS5      " SS5      :X  d   e[	        [        SS5      " SSSS5      5      R
                  (       d   [        SSS5      5       e[        [        S	 5        [        SS5      R                  5       / S
Q:X  d   e[        SS5      R                  S5      / SQ:X  d   e[        S5      R                  S5      SS/:X  d   e[        S5      R                  S5      / SQ:X  d   e[	        [        SS5      SS9[	        / SQ5      :X  d   e[        [        SS5      " SS5      5      S:X  d   e[        [        SS5      5      S:X  d   e[        [	        [        [        S5      5      5      5      [        5       :X  d   e[        SS5      R                  5       / S
Q:X  d   e[        SS5      R                  S5      / SQ:X  d   e[        5       R                  S:X  d   e[        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [	        SS/SS//SS9n [	        [        U 5      5      U :X  d   eg )N()r   r#   r$   r   r,   r+   r   c                  2    [        5       R                  5       $ r:   )r   r7   r   r   r   r    test_Cycle.<locals>.<lambda>  s    uw||~r   r   r%   r0   r   r   r#   r$   r,   r+   r-   z
(1 2)(4 5)(1 2)c                      [        S5      $ )N)r   r#   r   r   r   r   r    r     s    uV}r   c                      [        SSS5      $ r   r   r   r   r   r    r     s    uQ1~r   c                       [        SS5      0 -  $ r   r   r   r   r   r    r     s    eAqk"nr   c                  &    [        S5      [           $ Nr,   )r   r   r   r   r   r    r     s    uQx{r   c                      [        SSS5      $ )Nr#   r$   r   r   r   r   r    r     s    uQAr   )strr   r   r7   r
   rX   r   rQ   r8   r.   rR   r(   s    r   
test_Cycler     s   uw<4qa+++1:??a
***aA<///A;q!aA...A;q!Q"eAq!nQ&::::uQ{1aA./;;KU1a^K;
:-.A;***A;A,...8==1v%%%8==1111uQ{+L!" " "uQ{1a !\111uQ{w&&&T%(^,-888A;***A;A,...7<<1
:,-
:-.
9,-
:*+
:./ 	aVaV$1-AuQx A%%%r   c                      [         R                  " S5      [        S5      " SSS5      :X  d   e[         R                  " SS S9[        S5      " SS5      " SS5      :X  d   eg )	NSymPyr,   r   r   r$   c                 "    U R                  5       $ r:   )lowerxs    r   r    $test_from_sequence.<locals>.<lambda>  s
    AGGIr   )keyr#   )r
   from_sequencer   r   r   test_from_sequencer     s]    $$W-Q1a1HHHH$$W2EFAq!Q"# # #r   c                    ^  [        SSS5      m T R                  S5      [        SSSSS9:X  d   eT R                  S5      [        SSSSS9:X  d   eT R                  S5      T :X  d   e[        [        U 4S j5        [        SSS5      " SS5      " SS	5      m T R                  S5      [        SSS5      :X  d   e[        [        U 4S
 j5        g )Nr   r   r#   r+   r-   r,   r$   c                  &   > T R                  S5      $ )Nr#   resizer(   s   r   r    test_resize.<locals>.<lambda>      qxx{r   r0   c                  &   > T R                  S5      $ r   r   r(   s   r   r    r    r  r   )r
   r   r   rQ   r(   s   @r   test_resizer    s    Aq!A88A;+aAA666688A;+aAA666688A;!
:*+Aq!Q"1a(A88A;+aA....
:*+r   c                      [        / SQ5      n [        U 5      S:X  d   e[        U 5      S:X  d   e[        5       n[        U5      S:X  d   e[        U5      S:X  d   e[        / SQ5      n[        U5      S:X  d   eg )Nr   zPermutation(1, 2)r   zPermutation()r   rP   zPermutation(3)(0, 1, 2))r
   reprr   )r   r   p3s      r   test_printing_cyclicr    sw    	Y	B8****r7g	B8&&&r7d??	\	"B80000r   c                  L   [        / SQ5      n [        U SS9S:X  d   e[        U SS9S:X  d   e[        / SQ5      n[        USS9S:X  d   e[        USS9S:X  d   e[        / SQ5      n[        USS9S:X  d   e[        USS9S:X  d   e[        / S	Q5      n[        USS9S
:X  d   eg )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+   r0   r1   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&*CCCC	Y	B'+CCCC&*BBBB	Y	B'+CCCC&*BBBB	-	.B'+NNNNr   c                     [        SSS5      n  S[         l        [        5          [        U 5      S:X  d   e S S S 5        [        5          [	        U 5      S:X  d   e S S S 5        [        5          [        U 5      S:X  d   e S S S 5        [        5          [        U 5      S:X  d   e S S S 5        S[         l        [        5          [        U 5      S	:X  d   e S S S 5        [        5          [	        U 5      S	:X  d   e S S S 5        [        5          [        U SS
9S:X  d   e S S S 5        [        5          [        U 5      S:X  d   e S S S 5        S [         l        g ! , (       d  f       GN(= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! S [         l        f = f)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    sr   Aq!A(#' #%7i''' &#%85555 &#%!9	))) &#%89999 & $) #%76666 &#%87777 &#%!/3GGGG &#%8GH H H & $( ) &%%%%%%% &%%%%%%% $( s   G# EG# 	E*G# .E<G# F&G# FG# (F0;G# GG# 1GG# 
E'"G# *
E94G# <
FG# 
FG# 
F-)G# 0
F>:G# 
GG# 
G G# #G0c                     [        SSS5      n [        SSS5      n[        X5      [        R                  L d   e[        SSS5      n[        X5      [        R                  L d   e[        SSSSS9n[        [        X5      (       d   e[        SSSSS9n[        [        X5      (       d   e[        5       n[        [        US5      (       d   e[        [        SU5      (       d   eg )Nr   r   r#   r,   r-   )r
   r   r	   truefalser   )r   r{   r|   derv   s         r   test_permutation_equalityr    s    Aq!AAq!Aa8qvvAq!Aa8qwwAq!!$ARAq!!$ARARARAr   c                  r    [        SS5      n [        SS5      nX:X  d   e[        U 5      S:X  d   eX:X  d   eg )Nr   r#   zCycle(1, 2))r   r  )c1c2s     r   test_issue_17661r    s<    	qB	qB8O88}$$$8O8r   c                    ^ ^ [        S5      m[        SSS5      m T R                  S5      S:X  d   e[        T R                  S5      [        5      (       d   eT R                  T5      [        T T5      :X  d   e[        T T5      R                  TS5      S:X  d   e[        SSS9m[        [        U U4S j5        [        SSS	9m[        [        U U4S
 j5        g )Nr   r   r   r#   Fr   c                  &   > T R                  T5      $ r:   applyr)   r   s   r   r    (test_permutation_apply.<locals>.<lambda>)      
r   T)negativec                  &   > T R                  T5      $ r:   r  r  s   r   r    r   +  r!  r   )	r   r
   r  r   r   r   subsr   NotImplementedErrorr  s   @@r   test_permutation_applyr&     s    sAAq!A771:??aggaj'****771:+Aq1111a#((A.!333sE"A
 23sT"A
 23r   c                     ^ [        S5      m[        SSS5      n [        [        U4S j5        [	        U SSS9S:X  d   e[	        U SSS9R
                  [        :X  d   eg )	Nr   r   r   r#   c                     > [        ST 5      $ )Nr   )r   r   s   r   r    )test_AppliedPermutation.<locals>.<lambda>1  s    1)Q?r   T)evaluateF)r   r
   r   rQ   r   r   r  s    @r   test_AppliedPermutationr+  .  s`    sAAq!A
:?@aT2a777aU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   rV   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r&  r+  r   r   r   <module>r5     s    "  % & $ $ "L L 5 5 ? 
3RBj+\5
JJZ.@B&@#	,1O(6"4r   