
    g                     T   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 d dlmZmZ d dlmZmZmZ d d	lmZmZmZ ej@                  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/ed        Z0d Z1d Z2d Z3d Z4d Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@ed*        ZAd+ ZBd, ZCd- ZDd. ZEd/ ZFd0 ZGd1 ZHd2 ZId3 ZJd4 ZKd5 ZLd6 ZMd7 ZNd8 ZOd9 ZPd: ZQed;        ZRd< ZSd= ZTd> ZUd? ZVd@ ZWdA ZXdB ZYdC ZZdD Z[dE Z\dF Z]dG Z^dH Z_yI)J    )Tuple)rubik_cube_generators)is_isomorphic)SymmetricGroupCyclicGroupDihedralGroupAlternatingGroupAbelianGroup
RubikGroup)PermutationGroup_orbit_transversalCosetSymmetricPermutationGroup)Permutation)tetrahedroncube)_verify_bsgs_verify_centralizer_verify_normal_closure)skipXFAILslowc                  *   t        ddg      } t        | g      }|j                  sJ t        g d      } t        g d      }t        | |g      }|j                  rJ t        | g      }|j                  |       sJ |j                  |      rJ t        g d      } t        g d      }t        | |      j                  t        | |      j                  cxk(  rdk(  sJ  J t        t        ddd            }t        d|      j                  |      sJ y )	N   r      r   r   r   r   r   r   r   r            )r   r   r   r   r       r   )r   r   
is_abelianhasdegreer   )aGbgs       _/var/www/openai/venv/lib/python3.12/site-packages/sympy/combinatorics/tests/test_perm_groups.pytest_hasr+      s   QFA!A<<<IAIA!Q A||!A558O8uuQx<&'AO$AAq!((A%%+)*+ + + + + 	Q1-.AA;??1    c            	         t        ddg      } t        t        | g      j                               }|t        ddg      t        ddg      gk(  sJ t	        t        t        t        d            j                                     dk(  sJ t        | g      j                  d      }t        |      t        ddg      t        ddg      gk(  sJ t        g d      } t        g d      }t        | |g      }|j                         }t        |      D cg c]  }|j
                   }}|j                          |g dg d	g d
g dg dg dgk(  sJ t        |j                  dd            }|t        |      k(  sJ t        g d      } t        g d      }t        | |g      j                  d      }t	        t        |            dk(  sJ y c c}w )Nr   r   )r   r   dimino)methodr   r   r   r   r   r   r   r   r   r   r   r   r   r   T)r/   afr   r   r   r   r    r!   r   r4   h  )r   listr   generatelen
array_formsortsorted)r&   r)   r(   r'   pv1v2s          r*   test_generaterA   '   s   QFAqc"++-.AaV$k1a&&9::::t$[%89BBDEF!KKK!&&h&7A7{Aq6*KA,?@@@@IAIA!Q A	

A $Q	(1!,,B	(GGI)Y	9 ?   	ajjTj2	3B&'A&'A!Q ))T)2AtAw<3 
)s   Gc                      t        g d      } t        g d      }t        | |g      }|j                         dk(  sJ t               j                         dk(  sJ y )N)
r   r   r   r   r    r!   r"         	   )
r   r   r   r    r!   r"   rC   rD   rE   r   i r   )r   r   order)r&   r(   r)   s      r*   
test_orderrG   >   sT    23A23A!Q A779##%***r,   c                  x   t        ddd      } t        ddd      }t        ddd      }t        ddd      }t        | |      }t        ||      }t        ||       }t        | |      }||k7  sJ |j                  |j                  k7  sJ |j                  |      sJ ||k7  sJ |j                  |      sJ ||k(  sJ y )Nr   r   r   r   )r   r   
generatorsequals)p_1p_2p_3p_4g_1g_2g_3g_4s           r*   test_equalityrS   F   s    
aA
C
aA
C
aA
C
aA
C
3
$C
3
$C
3
$C
3
$C#::>>S^^+++::c??#::::c??#::r,   c                  H   t        d      } | j                  d      }|j                  t        d      gk(  sJ t        g d      }t        g d      }t	        ||g      }|j                  d      }|j                         dk(  sJ g dg dg}|D cg c]  }t        |       }}t	        |      }|j                  d      }	|	j                         d	k(  sJ |	j                  d      }
t        |
j                  d
            }|g dg dgk(  sJ d}|D cg c]  }t        |       }}t	        |      }|j                  d      }	|	j                         dk(  sJ t        d      } | j                  D cg c]  }|j                          c}d	dgk(  sJ y c c}w c c}w c c}w )Nr   r   r   r   r5   <   r   r   r!   rC   r   r   r    r"   r   r   r   r   r!   rC   r    r"   r"   Tr6   )r   r   r   r   r    r!   r"   rC   )r   r   r   r   rC   r!   r"   r    ))r   r   r   r    r!   r   r"   rC   rD   rE   
                              )r   r   r   r   r    r!   ra   r"   rD   rE   rX   rY   rZ   r[   r\   r]   r^   rC   r_   r`   )r   r   r   r   r    r!   r"   rC   rE   r`   r^   rY   rZ   r[   r\   r]   rD   r_   rX   ra   i r   )	r   
stabilizerrI   r   r   rF   r8   r9   basic_stabilizers)SHr&   r(   r'   G0	gens_cuber>   gensG2G2_1vs               r*   test_stabilizerrl   X   s   qA	QA<<KN++++&'A&'A!Q A	
aB88:)+CDI$-.IqKNID.A	
aB88:??==DT]]d]#$A)+CDDDDPD
 %))DqKNDD)A	
aB88:qA 2232!AGGI231v===% / *
 4s   FF3Fc                  T   dD ]0  } t        |       }|j                         j                         dk(  r0J  dD ]0  } t        |       }|j                         j                         dk(  r0J  dD ]>  } dD ]7  }dD ]0  }t        | ||      }|j                         j	                  |      r0J  9 @ dD ]0  } t        |       }|j                         j                         dk(  r0J  t        d	      }t        d
      }t        d      }j	                  ||z  |z         t        ||      sJ y )N)r    r"   rX   r   r   r!   rC   r   )r   r   r!   )r   r!   rC   )r   r   rY   )r   r!   rE   r!   r   r    )r   centerrF   r
   is_subgroupr	   r   r   )iDjkr'   ACs          r*   test_centerrw   x   s$   !
!!#q(((  !
!!#q(((  A Aq)xxz--a000     Q
!!#q(((  	aAAAAMM!A#a%q!$$$r,   c            	      "   t        d      } | j                  t        t        t	        d                        j                  |       sJ t        d      }|j                  t        t        t	        d                        j                  |      sJ t        t        g d      g      }t        d      }|j                  |      j                  |      sJ dD ]d  }t        |      } t        |      }t        |      }t        |      }| |||fD ]-  }| |||fD ]"  }|j                  |      rt        ||      r"J  / f t        d      } t        | j                               }|D ]  }	t        | |	      rJ  t        d      }t        |j                               }|D ]  }	t        ||	      rJ  t        d      }t        |j                               }|D ]  }	t        ||	      rJ  g }
dD ]j  }|
j                  t        |             |
j                  t        |             |
j                  t        |             |
j                  t        |             l |
D ]1  }|
D ]*  }|j                  |j                  k(  st        ||      r*J  3 y )Nr   r!   )r   r   r   r   r    )r    r!   r"   rC   r   r   r   )r   centralizerr   r8   rangerp   r	   r   r   r   r   generate_diminoappendr%   )rd   ru   trivrr   rq   rv   gpgp2elementselementsmalls              r*   test_centralizerr      sH   qA==T%(^45AA!DDDA==T%(^45AA!DDD[678DaAA**40001QN!aA,B1a|r*.r3777 $   	qAA%%'(H"1g... AA%%'(H"1g... aAA%%'(H"1g...  E^A&'%a()]1%&[^$	 
 CyyCJJ&*2s333  r,   c                     g dg dg} | D cg c]  }t        |       }}t        |      }d}|j                  d      D ]9  }|j                  |      }||k(  sJ |j	                  |d      }||k(  sJ |dz  }; |j	                  d      J |j	                  |j                  |d               |d   k(  sJ y c c}w )NrV   rW   r   Tr6   r   0   )r   r   r9   
coset_rankcoset_unrank)rg   r>   rh   r'   rq   hrkh1s           r*   test_coset_rankr      s    )+CDI$-.IqKNID.A	AZZ4Z \\!_Qww^^B4^(Bww	Q ! >>"%%%>>!,,tAw/0DG;;; /s   B;c                     t        g d      } t        | g      }t        g d      }|j                  |      rJ |j                  |      J t        g d      } t        g d      }t        | |g      }|j	                         dk(  sJ t        g d      }|j                  |j
                        rJ |j                  |      rJ t        d      |v sJ t        g d      }|j                  |d	      }|j                  }t        j                  t        t        |j                              D cg c]  }||   ||       c} }	|	|k(  sJ |j                  |      }t        j                  | }	|	|k(  sJ |j                  |      sJ t        t        g d      g      }t        g d
      }	|j                  |	      g k(  sJ y c c}w )Nr1   r   r   r5   r7   r   r   r   r   r    r!   r   )r   r   r   r   r!   r    Tr2   )r   r   coset_factorr   rF   r;   containsbasic_transversalsrmulr{   r:   base)
r&   r'   cr(   r)   drk   trrq   r>   s
             r*   test_coset_factorr      s   IA!AIA~~a   <<?"""&'A&'A!Q A779&'A~~all+++zz!}q>Q&'A	q$A	
		Bc!&&k0BC0B12a51;0BCDA6M6	qA!A6M6::a==+i012AIA>>!""" Ds   /Gc                  F   t        g d      } t        g d      }t        | |g      }|j                  d      h dk(  sJ |j                         h dgk(  sJ |j	                         r|j	                  d      sJ |j                  d      t        g d      t        g d      t        g d      gk(  sJ |j                  dd	      dt        g d      fd
t        g d      fdt        g d      fgk(  sJ t        d      }t        |j                  |j                  dd	d	      \  }}|D ]6  \  }}||   }|j                  }	|D ]  }
|j                  |
   |	z  }	 |	|k(  r6J  t        t        t        dd            dgz         } t        | g      }|j                         D cg c]  }t        |       c}dgk(  sJ t        t                     }|j                         D cg c]  }t        |       c}ddgk(  sJ |j	                         s|j	                  d      rJ t        t        ddd       t        d      dd      g      }|j	                         s|j	                  d      sJ t        t        d            j	                  d      du sJ y c c}w c c}w )Nr   r   r   >   r   r   r   Fstrictr0   r3   Tr   r   r"   )slpd   r   )r   r   orbitorbitsis_transitiveorbit_transversalr   r   r%   rI   identityr8   r{   minr   )r&   r(   r)   r'   transversalslpsrq   tr   wsos               r*   test_orbitsr      s   IAIA!Q A771:"""88:)$$$??!>>>q!	
#I.I0F	HH H H q$'
[#	$q+i*@&A	
K	"#	%% % % 	aA*188Q\\1dPTUK11gJJAQ!A Avv  	Dq#'1#-.A!AHHJ'JqCFJ'A3....01AHHJ'JqCFJ'Aq6111 )FFF+aA.Aq!0DEFA Q__E_%BBBA%U3u= = = ('s   $J$Jc                      g dg dfD  cg c]  } t        |        }} t        |      }|j                         dk(  sJ g dg dfD  cg c]  } t        |        }} t        |      }|j                         dk(  sJ |j                  |      sJ g dg dfD  cg c]  } t        |        }} t        |      }|j                  |      rJ |j                         d	k(  sJ |j	                  |j
                        }|j                         dk(  sJ g d
g dfD  cg c]  } t        |        }} t        |      }	|	j                         dk(  sJ |j	                  |	j
                        }
|
j                         dk(  sJ |j                  |
      sJ |j                  |      rJ |j                  |      sJ t        t        d            }|j                  |	      sJ |j                  |
d      sJ t        g d      }t        g d      }t        g d      }t        g d      }t        ||g      }t        ||g      }t        |      }t        |      }t        |      }|j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |      rJ |j                  |      rJ y c c} w c c} w c c} w c c} w )Nr   r   r   r    r   )r   r   r    r   r   x   )r   r   r   r   r    )r   r   r    r   r   rU   )r   r   r   r   r    r   r   r   r   r    rZ   )r   r   r   r   r       r    Fr   r   r   r   r   r    )r   r   r   r    r   )r   r    r   r   r   r   r   r   r   r    )r   r   rF   	is_normalnormal_closurerI   rp   )r>   gens_s5G1gens_a5ri   gens3G3G4gens5G5G6I5p1p2p3id_re   H_n1H_n2_1H_n2_2H_ids                        r*   test_is_normalr     s   (7'IJ'I!{1~'IGJ	'	"B88:(7'IJ'I!{1~'IGJ	'	"B88:<<&5%GH%G[^%GEH	%	 B||B88:			2==	)B88:&5%GH%G[^%GEH	%	 B88:			2==	)B88:>>"~~b!!!>>"	+a.	)B<<<<5<)))	_	%B	_	%B	_	%B
o
&C"b"ARH%Db!Fb!FC D>>!D!!!D!!!>>&!!!>>$>>!"""""""Q K K I Is   K<	LLLc                     g dg dg dg dg} | g dgz   D cg c]  }t        |       } }t        g d      }| d d | dd ||dz  gfD cg c]  }t        |       c}\  }}}|j                         |j                         cxk(  r|j                         cxk(  rdk(  sJ  J |j                  |      sJ |j                  |      rJ t        t        dd	g      g      }|j                  |      rJ |j                  |d      sJ t        ||      j                  t        |            sJ t	        d
      j                  t	        d      d      sJ t	        d
      j                  t	        d
      t        d      z  d      sJ t        d      j                  t	        d
      t        d      z  d      rJ t        d
      j                  t	        d
      t        d      z  d      sJ y c c}w c c}w )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   rF   rp   r   r   )r&   r>   r)   xr   ri   r   r   s           r*   test_eqr   <  s   	/1C F 	A!"&8%9!9:!9AQ!9A:&'A01"1q1v1a4y/IJ/I!"1%/IJJBB88:6rxxz6Q66666>>"~~b!!!	;1v./	0B~~b!!!>>"a   Aq!--.>q.ABBB!(():A>>>!(():;q>)I1MMM1~)).*;KN*JANNNq>%%nQ&7A&FJJJ 	;Js   G,G1c                     t        g d      } t        g d      }t        | |g      }|j                         }|j                         dk(  sJ |j	                  |      sJ |j                  |d      sJ |j                  |d      rJ g dg dg}|D cg c]  }t        |       }}t        |      }|j                         }|j                         dk(  sJ y c c}w )N)r   r   r   r    r   )r   r   r   r   r    r   r   rV   rW   rZ   )r   r   derived_subgrouprF   r   rp   )r&   r(   r'   rv   rg   r>   rh   s          r*   test_derived_subgroupr   O  s    O$AO$A!Q A	A779>>;;q>>==A}}Q""")+CDI$-.IqKNID.A	A779?? /s   Cc                  `   t        g d      } t        g d      }t        | |g      }|j                  sJ t        | g      }|j                  sJ t        g d      } t        g d      }t        | |g      }|j                  rJ t        d      }|j	                  d      }|j                  sJ y )Nr3   r2   r   r   rX   r   )r   r   is_solvabler   sylow_subgroup)r&   r(   r'   Prd   s        r*   test_is_solvabler   _  s    IAIA!Q A===!A===O$AO$A!Q A}}rA	A===r,   c                     t               } | d   g| dd  D cg c]  }|dz  	 c}z   }t        |      }|j                         dk(  sJ | D cg c]  }|dz  	 }}t        |      }|j                         dk(  sJ |j                  |d      sJ |j	                         }|j                         dk(  sJ |j                  |d      sJ |j                  |d      rJ t        d      }|j                         dk(  sJ y c c}w c c}w )	Nr   r   l      i  
 r   l    @eE i08 )r   r   rF   rp   r   r   )rh   r>   gens1r   gens2ri   C1r'   s           r*   test_rubik1r   n  s    "D"XJQR11!Q$11E	%	 B88:$$$ 4aQT4E 	%	 B88:>>"a   				B88:###>>"a   ~~b!$$$1A779 2 !s   C<Dc                  2   t        d       t        t                     } | j                         dk(  sJ t        | d d       }|j                         dk(  sJ |j	                  |       rJ | j                  |j                        }|j                  |       sJ y )Ntakes too much timel      pFoA% r   l     !l )r   r   r   rF   r   r   rI   rp   )r'   r   ri   s      r*   
test_rubikr     s    	.01A779,,,,	!BQ%	 B88:(((||A	
		"--	(B>>!r,   c                  <   t        d      } t        d      }| | z  | z  }|j                         dk(  sJ |j                  dk(  sJ t	        |j                               dk(  sJ |j                  du sJ || z  }|j                         dk(  sJ |j                  du sJ y )Nr    @   rZ   r   T    F)r   r   rF   r%   r:   r   r#   )rv   rr   r'   re   s       r*   test_direct_productr     s    AAaA	!AA779??88r>>qxxz?a<<4	!A779??<<5   r,   c                      t        d      } | j                  dd      t        g d      t        g d      fv sJ t        d      | z  }|j                  dd      du sJ y )	Nr"   r   r   )r   r   r    r!   r   r   )r    r   r   r   r   r!   r    r!   F)r   	orbit_repr   r   r'   re   s     r*   test_orbit_repr     sf    aA;;q!-?!@"#!% % % %AqA;;q!%%%r,   c                      t        d      } dgdz  }d|d<   | j                  d      |k(  sJ t        d      }|j                  d      g dk(  sJ t        d      }|j                  d	      g d
k(  sJ y )N2   r   r      rD   r   )r   r   r   r   r   r   r   r   r    r   )r   r   r   r   )r   schreier_vectorr   r   )r'   rk   re   Ls       r*   test_schreier_vectorr     s    BA	
BAAbER A%%%aAQ#<<<<qAQ=000r,   c                     t        d      } d}d}i }ddddd|d<   d	d	d
dd|d
<   dddd
d|d<   | j                  |||       | j                  d   g dk(  sJ ddd
dd}| j                  |      t	        g d      k(  sJ y )Nr"   rY   r   rC   r   r   )r   r   r   er   r!   r   r    )_random_prec_n)r   r   r   r   r    r!   rE   _random_prec)r   r!   r    r   r   r   )r   _random_pr_init_random_gens	random_prr   )rr   rnr   r   s        r*   test_random_prr     s    aA
A	ANaab9N1aab9N1aaa8N1a>:>>"!33334L;;L;1&'( ( (r,   c                     t        d      } | j                         du sJ | j                         du sJ | j                  d      du sJ | j                  d      du sJ t        d      }|j                         du sJ |j                  d      du sJ |j                  d      du sJ d}|t	        dgddgg d	g      t	        g d
ddgg      t	        ddgddgg dg      t	        dgg dg      t	        dgg dddgg dg      t	        dgg dg      t	        g dddgg dddgg      t	        dgg dg      t	        g dg dg      t	        dgddgg dg dg      d}|j                  |      du sJ t        d      }|j                         du sJ |j                  d      du sJ |j                  d      du sJ |t	        g ddgg      t	        dgg d g      t	        g d!g d"g      t	        g d#ddgg d$dgg      t	        dgdgdgg d%dgddgg      t	        ddgg d&g      t	        dgdd'gg d(g d)g      t	        g d*g d+g      t	        g d,dgg d-dd'gg      t	        g d.ddgddgg d/g      d}|j                  |      du sJ t         t	        ddd0      dddd       t	        ddd0      dddd            } | j                         du sJ t        d      } | j                         du sJ t        d1      } | j                         du sJ t        d      } | j                          | j                         du sJ y )2NrX   FT)only_alt)only_symr   r   r    )r   r"   rC   rD   rE   r   r!   )r   rD   rC   r"   r   r!   r   rE   r   r!   rD   rC   )r   r   r   r   r"   rE   r   )	r   rD   r   rC   r    r   r"   rE   r!   )r    rC   rE   r"   )r   r!   r   r   )	r   r   r    r!   r   rD   r   rE   rC   )r"   rE   rD   )r   r   rC   )	r   r   rE   r   r   rD   r"   r!   rC   )r   r!   r"   r   )r   r   rC   rD   r    rE   )r   r   r    r!   )r   r   rE   )N_epsr   r   r   r   r    r!   r"   rC   rD   rE   r   )	r   r"   r    r   rC   rD   r!   rE   r   )	r   r!   rD   r    rE   r   r   r"   rC   )r   rE   rD   r   r   r!   )r   r"   rC   r    )r"   rD   rE   )r   r   rC   r   )r   r"   rE   r   )r   rD   r   rC   r!   rE   r    r   rE   )r   rD   r   )r   r    rC   r"   )r   rD   r    rC   r   r   )r   r"   rE   r!   )r!   rD   rC   )r   r    r   r"   )r    rE   r"   )r   r!   rC   size   )r   
is_alt_sym_eval_is_alt_sym_naiver   r   r	   r   _eval_is_alt_sym_monte_carlo)r'   rd   r   r   ru   s        r*   test_is_alt_symr     s   bA<<>U"""##%...##T#2e;;;##T#2e;;;rA##%---##T#2e;;;##T#2d:::E"aV%:;<01a&9:AA(:;<89:YA=>89:	Aq69q!f=>89:&89:aV\9=>
@L <<\<2d:::A##%---##T#2d:::##T#2e;;;"3aS9:89:*L9:	Aq6<!=>aS1#|aS1a&ABA 89:aVY=>*L9:	A3q!f=>	Aq6Aq69=>
@L <<\<2e;;;!Aqq!!Q1-!Aqq!!Q1-	/A <<>U""" 	bA))+u444bA))+u444 	aALLN<<>U"""r,   c                  .   t        d      } | j                  ddg      }t        d      D ]  }||   ||dz      k(  rJ  t        d      }|j                  ddg      g dk(  sJ t        j
                  j                  ddg      g dk(  sJ t         t        dd      dd	      t        ddddd	d            }t        t        ddddd	d       t        dd      dd	            }|j                  ddg      g d
k(  sJ |j                  ddg      g d
k(  sJ y )Nr"   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r!   r   r    r   r   r   r   r   r   )r   minimal_blockr{   r   Tetrapgroupr   r   )rr   block_systemrq   rd   P1P2s         r*   test_minimal_blockr    s"   aA??Aq6*L1XA,q1u"5555 qA??Aq6"&8888<<%%q!f-===	++a+Aq1;q!Q1a3P	QB	+aAq!Q79JQ9J1a9P	QBQF#'9999QF#'9999r,   c                  ,   t         t        dd      dd      t        dddddd            } | j                         g dg dgk(  sJ t        d      } | j                         dgdz  gk(  sJ t        t        dd            } | j                         d	u sJ y )
Nr   r!   r   r    r   r   r   )r   r   r   r   r   r   F)r   r   minimal_blocksr   )r   s    r*   test_minimal_blocksr	  	  s    *Q*1a0+aAq!Q2OPA"46H!IIIIqA1#a%(((Q*+A&&&r,   c                  <    t        d      } | j                  dk(  sJ y )NrX   r!   )r   max_div)rd   s    r*   test_max_divr    s    rA99>>r,   c                      t        d      } | j                         du sJ t        d      }|j                         du sJ t        dddd      }t        d	d
dd      }t	        ||      }|j                         du sJ y )Nr!   TrC   r   r   r   r"   r   r   r    F)r   is_primitiver   r   r   )rd   rv   r&   r(   r'   s        r*   test_is_primitiver    s    qA>>t###AA>>t###Aq!!$AAq!!$AAA>>u$$$r,   c                      t        d      } t        g d      }d|i}| j                  d|      }|t        g d      k(  sJ | j                  d      } |d      dk(  sJ y )Nr!   )r   r   r   r   r    randr   r   r   )r   r   random_stab)rd   
_random_elr   r)   r   s        r*   test_random_stabr  %  sc    qA_-JJ'L	al3AO,,,,	aAQ4199r,   c                      t        g d      } t        | g      }|j                  dk(  sJ t        g d      }t        g d      }t        ||g      }|j                  dk(  sJ y )Nr3   r   r   r   r   )r   r   transitivity_degree)permrv   gen1gen2Alts        r*   test_transitivity_degreer  /  sb    y!D$ A  A%%%'D'D
D$<
(C""a'''r,   c                     t        t        j                  j                        ddgk(  sJ t	        d      } ddg}t        g d      t        g d      t        g d      g}| j                  ||d      ||fk(  sJ t        d      }dt        g d	      t        g d      t        g d      gi}ddg}t        g d      t        g d
      t        g d      g}|j                  g |j                  d|      ||fk(  sJ y )Nr   r   r   r3   r2   r1   r!   r)   r   r   r   r   )	r=   r  r  r   r   r   schreier_sims_randomr   rI   )rd   r   strong_gensrr   r   s        r*   test_schreier_sims_randomr  :  s   %,,##$A...qAq6Dy);y+Ai(*K!!$Q7D+;NNNNaA+i0+i2H$Y/1 2Lq6Dy);y+Ai(*K!!"allA$ " &*.)<= = =r,   c                  X   t        d      } | j                          | j                  }| j                  }|g dk(  sJ | j	                  ||dd      }| j	                  ||d      }|d   g dk(  sJ t        | |d   |d         du sJ |d   g dk(  sJ t        | |d   |d         du sJ y )	Nr    r0   r   F)
randomizedr   r1   T)r   schreier_simsr   r  baseswapr   )rd   r   r  deterministicr!  s        r*   test_baseswapr%  L  s    qAOO66D--K9JJt[!JFMD+q1Jy(((=+]1-=>$FFFa=I%%%:a=*Q-8D@@@r,   c                     t        g d      } t        | g      }|j                  g d      \  }}t        |||      du sJ t	        d      }|j                  g d      \  }}t        |||      du sJ t        d      }|j                  dg      \  }}t        |||      du sJ t        d      }|j                  d d  }|d	   }|d   }	t        |	|       }	t        ||	      }t        ||	      }	|j                  d	dg|
      \  }}t        |||      du sJ t        d      }
|
j                  d	   }|
j                  |dz  g      \  }}t        |
||      du sJ y )Nr   r0   )r   Tr!   r   r   rC   r   )r   rh   rY   r   )rh   )
r   r   schreier_sims_incrementalr   r   r   r	   rI   r   r   )r   TrivialGroupr   r  rd   rr   ru   rh   gen0r  rv   gens               r*   test_schreier_sims_incrementalr+  Z  s   ?+H#XJ/L$>>I>ND+dK8D@@@qA333CD+4-555aA33!3=D+4-555A<<?D7D7DteDdDdD33!Qd3KD+4-555BA
,,q/C33#q&3BD+4-555r,   c                    d }fd}fd}d }t        | ||      D ]  } t        |       }t        |       }t        |       }	|j	                  |      }
|
j                  |      sJ |j	                  |      }|j                  |      sJ |j	                  ||	      }
|
j                  |      sJ dg|j                  d      j                  |j	                  |            sJ ddg|j                  d      j                  d      j                  |j	                  |            sJ dd	g|j	                  |      }d	g|j	                  |      }|j	                  ||      j                  |      sJ |j                         \  }}|j                  d
   |j	                  |||      }t        |||j                        du sJ |j                  D cg c]  } ||      du  c}rJ  y c c}w )Nc                      y)NT r   s    r*   <lambda>z"_subgroup_search.<locals>.<lambda>u  s    $r,   c                 @    D cg c]
  } | |       c}k(  S c c}w Nr.  )r   pointpointss     r*   r0  z"_subgroup_search.<locals>.<lambda>v  s     v >ve5v >& H >s   c                 6    t        |       t        |       k(  S r2  )r   )r   r)   s    r*   r0  z"_subgroup_search.<locals>.<lambda>w  s    DAJ$q!*4r,   c                     | j                   S r2  )is_evenr/  s    r*   r0  z"_subgroup_search.<locals>.<lambda>x  s    !))r,   )init_subgrouprC   r   r    r!   r   )r   r  T)
r{   r   r	   r   subgroup_searchrp   rb   r'  rI   r   )rq   rs   rt   	prop_trueprop_fix_pointsprop_comm_g	prop_evenrd   ru   rv   Symr  fix35fix5r   r  comm_gr*  r)   r4  s                     @@r*   _subgroup_searchrB  t  s   IHO4K#I1a^1QN	*q!!!	*q!!!	;q!!!||A**1+<+<_+MNNNQ||A))!,88o.0 	0 0Q!!/2  1    k$  	   779kLLOk+N 	FD&*;*;<DDD4:4E4EF4ESC D(4EFFF5 4 Gs   G1c                      t        ddd       y )NrX   r]   r   )rB  r.  r,   r*   test_subgroup_searchrD    s    RQr,   c                  4    t        d       t        ddd       y )Nr   r^   r_   r   )r   rB  r.  r,   r*   test_subgroup_search2rF    s    	RQr,   c                  H   t        d      } t        g d      }| j                  |      }|j                  sJ t	        d      }|j                  |      j                  |      sJ dD ]F  }t        |      } t	        |      }t        |      }t        |      }|||fD ]  }t        | |      rJ  H t        d      } t        | j                               }|D ]  }	t        | |	      rJ  g }
dD ]j  }|
j                  t        |             |
j                  t	        |             |
j                  t        |             |
j                  t        |             l |
D ]D  }|
D ]=  }|j                  |d      s|j                  |j                  k(  s0t        ||      r=J  F y )Nr   r0   r    r   r    r!   r!   ry   r   )r   r   r   
is_trivialr	   rp   r   r   r   r8   r|   r}   r%   )rd   r   closureru   rq   rr   rv   r   r   r   r   r   s               r*   test_normal_closurerK    s   qA9%Hx(GAA**1---1Q!Na)B)!R000   	qAA%%'(H%a111  E^A&'%a()]1%&[^$	 
 Cr1%#**		*A-b#666  r,   c                     t        t        g d      g      } | j                         d   j                  |       sJ dD ]1  }t	        |      }|j                         d   j                  |      r1J  t        d      }|j                         }|d   j                  t	        d            sJ |d   j                  t        d            sJ |d   j                  sJ y )Nr0   r   r!   r"   rC   r    r   r   r   )r   r   derived_seriesrp   r	   r   r   rI  r~   rq   ru   rd   seriess        r*   test_derived_seriesrQ    s    [345D #//555Q!!$00333  	qAF!9  !1!!4555!9  q!1222!9r,   c                  z   t        t        g d      g      } | j                         d   j                  |       sJ dD ]1  }t	        |      }|j                         d   j                  |      r1J  t        d      }|j                         }t        |      dk(  sJ |d   j                  t	        d            sJ y )Nr0   r   rM  r"   r   r   )r   r   lower_central_seriesrp   r	   r   r:   rO  s        r*   test_lower_central_seriesrT    s     [345D$$&q)55d;;;Q%%'*66q999  	qA##%Fv;!!9  !1!!4555r,   c                     t        d      } t        t        g d      g      }| j                  ||      j	                  |      sJ t        d      }| j                  ||      j	                  |      sJ dD ]V  }t        |      } t        |      }t        |      }| j                  ||      j	                  | j                  ||            rVJ  t        d      } t        dd      }t        dd      }t        t        g d      g      }| j                  ||      j	                  |      sJ | j                  ||      j	                  |      sJ t        d      } t        d      }| j                  ||       j	                  |      sJ y )	Nr   r0   rH  rC   r   r!   r    )r   r   r   r   r    r!   r"   )r   r   r   
commutatorrp   r	   r   r
   )rd   r~   ru   rq   rr   A1A2s          r*   test_commutatorrY    s`   qA[345D<<d#//555A<<a ,,T2221Q!||Aq!--all1a.@AAA	  	qA	a	B	a	B[)>?@AD<<B++D111<<B++D111qAA<<1))!,,,r,   c                      dD ]8  } t        |       }t        | | dz         }|j                  sJ |j                  r8J  t        ddd      }|j                  sJ t        d      j                  du sJ y )Nry   r   r!   rC   rX   F)r   r
   is_nilpotentr	   )rq   rv   Abs      r*   test_is_nilpotentr]    sr    N!QU#~~~	 
 
aB	B???A++u444r,   c            
          t        d      D ]7  } t        t        t        t        |                   g      }|j                  r7J  y )Nr!   )r{   r   r   r8   rI  )rq   r~   s     r*   test_is_trivialr_    s6    1XT%(^!< => r,   c                  (   t        d      } | j                  dg      }|j                  t        d      gk(  sJ t        d      } g }| }dD ]F  }|j	                  |      }|j                  |       | j                  |      j                  |      rFJ  y )Nr   r   r   r!   )r   r   r   r    r   )r   pointwise_stabilizerrI   r   rb   r}   rp   )rd   stabr4  r3  s       r*   test_pointwise_stabilizerrc    s    qA!!1#&D??{1~....qAFD u%e%%f-99$??? !r,   c                     t         j                  j                  dt        t	        d                  t        g d      k(  sJ t         j                  j                  dt        t	        d                  t        g d      k(  sJ y )Nr!   )seed)r    rC   r"   r!   r   r   r   r   rC   )r"   rC   r   r   r!   r    r   r   )r   r  	make_permr8   r{   r   r.  r,   r*   test_make_permrg    sp    ;;  eAh 8,-. . .;;  eAh 8,-. . .r,   c                     ddl m}  t        dd      }t        t	        |      j
                        t        d      t        dd      hk(  sJ  | t	        |      j
                    | t        dd      t        d            k(  sJ y )Nr   )	FiniteSetr   r   )sympy.sets.setsri  r   setr   r   )ri  r>   s     r*   test_elementsrl  %  sy    )AqA"++,QQPQAR0SSSS&q)223[A&A78 8 8r,   c                      t        t        dd      t        dd            j                  du sJ t        d      j                  du sJ y )Nr   r   r    T)r   r   is_groupr   r.  r,   r*   test_is_groupro  .  sD    K!,k!A.>?HHDPPP!%%---r,   c                  f    t               t        t                     k(  sJ t               dk(  du sJ y )Nr   F)r   r   r.  r,   r*   test_PermutationGrouprq  3  s1    !1+-!@@@@!#---r,   c                     t        d      } t        t        ddd       t        dd      dd            }| j                  |      t        d      t        ddd      t        ddd      t        ddd       t        d      ddd       t        dd      dd      t        ddddd      t        ddddd      t        ddddd      t        ddddd      g
k(  sJ y )Nr!   r   r   r   r   r    )r	   r   r   coset_transversalr   s     r*   test_coset_transvesalrt  8  s    AQq+,<K!,<Qq,ABAq!	QQ1-{1a/C	Q1	~{1~aA68IAq8I!Q8O	Q1a	#[Aq!Q%?	Q1a	#[Aq!Q%?	AA A Ar,   c                  H   t        t        dddd      t        ddd      t        dddd      t        dd      t        dd            } t        t        dddd      t        dd            }| j                  |      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 y )Nr   r   r   r   r    rC   r!   r"   )
r   r   r   r   r   r   r   r   r   r   )
r    r!   r   r!   r"   r   rC   rC   r   r   )
r!   r    r!   r   r   r"   rD   rD   r"   r"   )
r   r   r   r   rC   rD   r   r   r   r   )
r   r   r    r    r    r    rE   rE   r    r    )
r   r   r   r   r!   r!   rX   rX   r!   r!   )
r"   r"   r"   r"   r   r   rY   rY   r   r   )
rE   rX   rD   rX   rY   r   r   r   rC   rC   )
rX   rE   rX   rC   r   rY   r   r   rY   rY   )
rD   rC   rE   rE   rE   rE   r    r    rE   rE   )
rC   rD   rC   rD   rX   rX   r!   r!   rX   rX   )
rY   rY   rY   rY   rD   rC   r"   r"   rD   rD   )r   r   coset_tabler   s     r*   test_coset_tablerw  B  s    Qq1-{1Qq/A	Qq1	{1Q/Qq1A	CAQq1-{1Q/?@A==	')G	')G	')I	)+L	,.L	+-O	QQ Q Qr,   c                      t        t        ddd      t        ddd            } | j                  t        ddd      g      }|j                  |       sJ y )Nr   r   r   r   )r   r   subgrouprp   r   s     r*   test_subgrouprz  O  sL    Qq+[1Q-?@A	

K!A&'(A==r,   c                      t        d       t        ddd      dd      } j                  |       }t        fd|D              sJ j                  }|D ]  }||z  }	 || k(  sJ y )Nr!   r   r   r   r   r    c              3   :   K   | ]  }|j                   v   y wr2  )r  ).0r)   r'   s     r*   	<genexpr>z)test_generator_product.<locals>.<genexpr>Y  s     04aqAMM!4s   )r   r   generator_productallr   )r>   rh   r   r)   r'   s       @r*   test_generator_productr  U  so    qAAq!Q"Aq!D040000	

AaC 6M6r,   c                  t   t         t        dd      dd      t        dddddd            } | j                  d      }|j                         dk(  sJ t	        d      } | j                  d      }|j                         dk(  sJ t         t        dd      dd      t        dddddd      t        dd            } | j                  d      }|j                         dk(  sJ | j                  d      }|j                         d	k(  sJ t        d
      } | j                  d      }|j                         dk(  sJ | j                  d      }|j                         dk(  sJ | j                  d      }|j                         dk(  sJ d}d}t        dd      D ]j  }t        |      } | j                  d      }|j                         }|d|z  z  dkD  r!t        |      |kD  sJ t        |      }|dz  }[t        |      |k(  rjJ  t        d      }|j                  d      }|j                         |j                         z  dk(  sJ |j                         |j                         z  dz  dkD  sJ t        d      }|j                  d      }|j                         |j                         z  dk(  sJ |j                         |j                         z  dz  dkD  sJ t	        d      }|j                  d      }|j                         dk(  sJ t	        d      }|j                  d      }|j                         dk(  sJ y )Nr   r!   r   r    r   r   rZ   rE   rD   rX      Q      r   r`   )r>   r   )
r   r   r   rF   r   r   r{   rS  r:   r	   )r   rd   explengthrq   lsr'   s          r*   test_sylow_subgroupr  `  s   *Q*1a0+aAq!Q2OPA	A779>>bA	A779>>Aq!QQ1aA!>Aq@Q	SA	A779>>	A779>>rA	A779	A779??	A779?? CF1a[1Q##%3;?r7V###WF1HCr7f$$$  	sA	A779qwwy A%%%779QWWY"Q&&&A	A779qwwy A%%%779QWWY"Q&&&bA	1A779>>bA	1A779>>r,   c            
      *   d } d }t         t        dddd      ddd	d
       t        dddd	      dd
dd            } | |      sJ t        d      } | |      sJ t        d      } | |      sJ t        t        dddd       t        d      dd       t        dd      dd      g      } ||      sJ t	        d
      } ||      sJ  t        dd      dd      } t        dd      dd      }t        d	d      }t        |||      } ||      sJ y )Nc                 d    | j                         }|j                         | j                         k(  S r2  )presentationrF   )r   r'   s     r*   _testz test_presentation.<locals>._test  s%    NNwwyAGGI%%r,   c                     | j                         }t        |j                        t        | j                        k(  }|xr! |j	                         | j	                         k(  S r2  )strong_presentationr:   rI   r  rF   )r   r'   chks      r*   _strong_testz'test_presentation.<locals>._strong_test  sH    !!#!,,3q}}#55-qwwyAGGI--r,   r   r   r!   r   r   rC   r    r"   )r   r   r	   r   r   )r  r  r   r&   r(   r   s         r*   test_presentationr    s3   &.
 	-Qq1-a!A68LAa!8LQqQRST8UVA8O8A8O8qA8O8	Qq1	~{1~a24DK!4DQq4IJ	LA??aA??Aa1AAa1AAaAAq!A??r,   c                      t        g d      } t        g d      }t        | |g      }|j                  du sJ t        g d      } t        g d      }t        | |g      }|j                  du sJ y )Nr0   r   Tr   r   F)r   r   is_polycyclic)r&   r(   r'   s      r*   test_polycyclicr    sj    IAIA!Q A??d"""O$AO$A!Q A??e###r,   c                     t        g d      } t        | g      }|j                  d      du sJ  t        dd      dd      }  t        dd      dd      }t        | |g      }|j                  d      du sJ t        d	d
d      }t        | ||g      }|j                  d      du sJ t        d	      j	                  d      }|j                  d      du sJ t        d	      j	                  d      }|j                  d      du sJ y )N)r   r!   r   r   r   r"   r    rC   Fr   r   r   r   Tr    r!   r"   )r   r   is_elementaryr   r   r	   )r&   r'   r(   r   re   s        r*   test_elementaryr    s   )*A!A??1&&&Aq!QAAq!QA!Q A??1%%%Aq!A!Q#A??1&&&q((+A??1&&&**1-A??1%%%r,   c                  p    t        d      } | j                  du sJ t        d      } | j                  du sJ y )Nr   Fr!   T)r	   
is_perfectr'   s    r*   test_perfectr    s:    A<<5   A<<4r,   c                      t        t        ddd      t        ddd            } | j                  t        ddd      g      }| j                  |      dk(  sJ y )Nr   r   r   r   r    )r   r   ry  indexr   s     r*   
test_indexr    sN    Qq+[1Q-?@A	

K!A&'(A771:??r,   c                     t        d      } | j                  sJ t        dd      } | j                  sJ t        dd      } | j                  rJ t        d      } | j                  sJ t        d      } | j                  rJ t	        t        ddd      t        ddd            } | j                  sJ t	        t        dddd       t        dd      dd            } | j                  sJ t	        t        d       t        dd      dd       t        dd      dd       t        dd      dd            } | j                  du sJ t	        t        ddddddd	dd
dddddd      t        dddd	d
dddddddddd            } | j                  sJ t	        j                  ddg      du sJ t	        j                  ddg      du sJ t	        j                  ddg      J t	        j                  g d      J t	        j                  g d      du sJ t	        t        dddd       t        dd      dd            } | j                  sJ | j                  sJ t	        t        d      j                   } | j                  du sJ t	        t        dddd      t        ddd	            } | j                  sJ t	        t        dd      t        dd      t        ddd	            } | j                  du sJ y )Nr   r   rC   r    r   r   Fr!   r"   rD   rE   rX   rY   rZ   r[   r\   Trn   )r!   rC   r[   )	r   	is_cyclicr
   r	   r   r   _distinct_primes_lemma_is_abelianrI   r  s    r*   test_cyclicr    s   qA;;;QA;;;QA{{?A;;;A{{? 	Q1-{1a/CDA;;;Aq!QAq!Q	A ;;;AAq!QAq!QAq!Q		A ;;% 	Aq!Q1aAq"b"b"EAq!Q2r2q!Q1b"E	A ;;; 22Aq6:dBBB22Aq6:dBBB22Aq6:BBB229=EEE22:>$FFFAq!QAq!Q	!A ;;;=== 	.+667A;;% 	Aq!QAq!	A ;;; 	AqAqAq!	A
 ;;%r,   c                     t        d      } | j                  sJ t        d      } | j                  sJ t        dd      } | j                  sJ t        d      } | j                  rJ t        dd      } | j                  rJ t        d      } | j                  sJ t        d      } | j                  rJ t	         t        dd      dd        t        dd      dd      dd            } | j                  sJ t	          t        dd      dd      dd      t        ddddddd            } | j                  sJ t	        t        dd      t        dd      t        dd            } | j                  rJ t	          t        dd      dd      dd        t        dd      dd      dd      t        ddddddd            } | j                  sJ y )Nr   r   r    r!   r"   r   r   )r   is_dihedralr
   r   r   r   r  s    r*   test_dihedralr  /  s   qA===qA===QA===AA}}QA}}QA===QA}} 	Aq!QAq!Q1%	'A === 	Aq!Q1%Aq!Q1a(	*A === 	Aq;q!,Aq	A }} 	Aq!Q1%Aq!Q1%Aq!Q1a(	*A ===r,   c                  ^   t        ddd      } | j                         g dk(  sJ t        t        dddd      t        dd      t        dd      g      } | j                         ddgk(  sJ t	        d      } | j                         g k(  sJ t	        d      } | j                         dgk(  sJ t        d      } | j                         ddgk(  sJ t        t        ddddddd      g      } | j                         dgk(  sJ t        d	      } | j                  d      }|j                         dgk(  sJ t        t        d
dd      t        d
dd            } | j                         dgk(  sJ t        t        d
d       t        d
ddd      dddd      g      } | j                         ddgk(  sJ t        d      } | j                  d      }|j                         g dk(  sJ | j                  d      }|j                         g dk(  sJ | j                  d      }|j                         g dk(  sJ y )Nr   r   r    )r   r   r    r   r!   r"   rC   rZ   r      )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r!   r!   r!   )r
   abelian_invariantsr   r   r	   r   r   r   )r'   rd   s     r*   test_abelian_invariantsr  \  sB   Q1A!Y...Aq!Q/Q1BKPQSTDUVWA!aV+++A!R'''A!aS(((aA!aV++++aAq!Q:;<A!aS(((bA	A!aS(((Q1-{1a/CDA!aS(((+a+-D[Aq!-DQ1a-PQRA!aV+++rA	A!%CCCC	A!\111	A!Y...r,   c                  ^   t        ddd      } t        dd      }t        | |g      }|j                         }||j                         k(  sJ t	        d      }|j                         d   |k(  sJ t        |j                               dk(  sJ t        d      }|j                         d   |k(  sJ t        |j                               dk(  sJ t        d      }|j                         }t        |d   t        d            sJ t        |d   t        d            sJ |d   j                  sJ y )Nr   r   r   r    r   r!   rD   )
r   r   composition_seriesrN  r   r:   r	   r   r   rI  )r&   r(   r'   comp_seriesrd   ru   rP  s          r*   test_composition_seriesr  z  s1   Aq!AAqA!Q A&&(K!**,,,, 	qA!!$)))q##%&!+++A!!$)))q##%&!+++ 	AA!!#FKN333KN333!9r,   c                  N   t        ddd      } t        ddd      }t        | |      j                  du sJ t        ddd      } t        ddd      }t        | |      j                  du sJ t        dddd      }  t        dd      dd      }t        | |      j                  du sJ y )Nr   r   r   r   r   TF)r   r   is_symmetric)r&   r(   s     r*   test_is_symmetricr    s    Aq!AAqq!AAq!..$666Aq!AAqq!AAq!..$666Aq!QAAq!QAAq!..%777r,   c                  ,   t        d      } t        ddd      }t        dddd      t        ddd      t        dddd      t        ddd      t        ddd      t        ddd      t        ddd      t        ddd      h}| j                  |      |k(  sJ y )Nr    r   r   r   r   r   )r   r   conjugacy_class)rd   r   rv   s      r*   test_conjugacy_classr    s    qAAq!A	Q1Q	'Q1)=Aq+[Aq-AAq!;q!Q#7Aq!;q!Q#7	9A Q1$$$r,   c                  0   t        d      } t        d      ht        ddd      t        dd      t        dd      ht        ddd      t        ddd      hg}| j                         t        |      t              k(  sJ t	        fd|D              sJ y )Nr   r   r   r   r   c              3   &   K   | ]  }|v  
 y wr2  r.  )r}  r   computeds     r*   r~  z)test_conjugacy_classes.<locals>.<genexpr>  s     /hqH}hs   )r   r   conjugacy_classesr:   r  )rd   expectedr  s     @r*   test_conjugacy_classesr    s    qAA&'
a1
%{1a'8+a:K	L
aA
Aq! 4	57H ""$Hx=CM)))/h////r,   c            
         t        dd      } t        dd      }t        | |g      }|| z  }|j                  sJ |j                  rJ |j	                         }t        dd      t        ddd      t        dd      t        d       t        d      dd      t        ddd      g}|D ]  }||v rJ  | |z  }|j                  rJ |j                  sJ |j	                         } t        d      dd      t        ddd      t        dd      t        d      t        dd      t        ddd      g}|D ]  }||v rJ  t        t        dddd      t        ddd            }t        t        dddd            } t        dd      dd      }	t        |	||d      }|j                  sJ |j	                         }t        dddd      t        d       t        dd      dd      t        dddd      g}|D ]  }||v rJ  y )Nr   r   r   r   r    +)dir)r   r   is_right_cosetis_left_cosetas_listr   )
r&   r(   r'   	rht_coset	list_reprr  ele
left_cosetre   r)   s
             r*   test_coset_classr    s   AqAAqA!Q A!I####&&&&!!#IAq!;q!Q#7Q9JAAq! 4k!Q6JLHh  1J((((####""$IAq!$k!Q&:K1<MNK1%{1a';=Hh  	Q1a0+aA2FGAQ1a01AAq!QAaA3'I####!!#IAq!Q'Q9JQ9J1a9P1aHh r,   c                      t        d      } | j                  dk(  sJ | j                         dk(  sJ | j                         t	        d      k(  sJ y )Nr!   r   r    )r   r%   rF   r   r   )r&   s    r*   test_symmetricpermutationgroupr    sH    !!$A88q==779::<;q>)))r,   N)`sympy.core.containersr   sympy.combinatorics.generatorsr   !sympy.combinatorics.homomorphismsr    sympy.combinatorics.named_groupsr   r   r   r	   r
   r   sympy.combinatorics.perm_groupsr   r   r   r    sympy.combinatorics.permutationsr   sympy.combinatorics.polyhedronr   r  r   sympy.combinatorics.testutilr   r   r   sympy.testing.pytestr   r   r   r   r+   rA   rG   rS   rl   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r%  r+  rB  rD  rF  rK  rQ  rT  rY  r]  r_  rc  rg  rl  ro  rq  rt  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r,   r*   <module>r     s   ' @ ;> >: : 8 E  2 2,.+$>@%6+4\<#: =F)#XK&  $  
!&1(;#|: '
	%(=$A64GD     
 7F  6 -6
5
@.8.
.
A
Q:z  B	$&& A H*Z/< .8%0$L*r,   