
    sh'                         S SK Jr  S SKJrJrJrJrJr  S SKJ	r	J
r
  S SKJr   S rS r\S 5       rS rS	 rS
 rS rS rg)    )S)FpGrouplow_index_subgroupsreidemeister_presentation
FpSubgroupsimplify_presentation)
free_group	FreeGroup)slowc                     [        S5      u  pn[        XS-  US-  X-  S-  /5      n[        US5      n/ SQ// SQ/ SQ/ SQ/ S	Q// SQ/ S
Q/ SQ// SQ/ SQ//n[        [	        U5      5       H  nXF   R
                  XV   :X  a  M   e   [        XS-  US-  X-  S-  /5      n[        US5      n/ 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/ 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/ 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/ S0Q/ S1Q/ S2Q/ S3Q// SQ/ S'Q/ S(Q/ S)Q/ S*Q/ S+Q/ S,Q/ S-Q/ S.Q/ S/Q/ S0Q/ S4Q/ S5Q/ S6Q// SQ/ S'Q/ S(Q/ S7Q/ S8Q/ S9Q/ S:Q/ S-Q/ S.Q/ S/Q/ S0Q/ S4Q/ S5Q/ S6Q// SQ/ S'Q/ S(Q/ S7Q/ S;Q/ S<Q/ S=Q/ S>Q/ S?Q/ S@Q/ SAQ/ SBQ/ SCQ/ SQ/ S Q// SQ/ S'Q/ S(Q/ S7Q/ S;Q/ SDQ/ SEQ/ SFQ/ SGQ/	/ SQ/ S'Q/ S(Q/ S7Q/ S;Q/ SHQ/ SIQ/ S>Q/ SJQ/ SKQ/ SLQ/ SMQ/ SNQ/ S3Q// SQ/ S'Q/ S(Q/ S7Q/ S;Q/ SHQ/ SIQ/ S>Q/ SJQ/ SOQ/ SPQ/ SQQ/ SRQ/ S3Q// SQ/ S'Q/ S(Q/ S7Q/ S;Q/ SHQ/ SSQ/ STQ/ SJQ/ SUQ/ SVQ/ SWQ/ S2Q/ S3Q// SQ/ S'Q/ S(Q/ S7Q/ S;Q/ SHQ/ SSQ/ STQ/ SJQ/ SOQ/ SXQ/ SQQ/ SRQ/ S3Q// SQ/ S'Q/ S(Q/ S7Q/ S;Q/ SHQ/ SSQ/ SYQ/ SZQ/ SUQ/ S[Q/ S\Q/ S]Q/ S^Q// SQ/ S_Q/ S`Q/ SaQ/ S8Q/ SbQ/ ScQ/ SdQ//n[        [	        U5      5       H  nXF   R
                  Xv   :X  a  M   e   [        XS-  US-  X-  S-  /5      n[        USeU/5      n/ 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/ S7Q/ S;Q/ SDQ/ SEQ/ SFQ/ SGQ/	/n[        [	        U5      5       H  nXF   R
                  X   :X  a  M   e   g )fNx, y         )r   r   r   r   )r   r      r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r         )r   r   r      )r   r   r   r   )   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r      	   )r   r   
      )r   r   r   r   )r   r   r   r   )   r   r   r   )r   r   r   r   )r   r         )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r	   r   r   rangelentable)	FxyfLt1it2t3s	            |/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/combinatorics/tests/test_fp_groups.pytest_low_index_subgroupsr*      s    GA! 	qD!Q$q)*AAq!A.|\
B|
4
&
(B 3r7^tzzRU"""  	qD!Q$q)*AAr"A.,l,6,l,6,l,nL/=.0@B ,l,nNO],.>@ ,l,nNO],. ,lLL,N,<>N ,lLL,N,<>N ,lLL,N,<>N ,lLL.,M?<L.0 ,lLL,F,lLL..M>? ,lLL..NM? ,lLNL...:J ,lLNL.NM? ,lLNNN... ,lLL,8o8
9Br CGntzzRU"""  	qD!Q$q)*AArA3'A.|\<'|\<'|\<|\C
DB 3r7^tzzRU"""     c                     [        S5      u  pn[        XS-  US-  X-  S-  /5      nX-  US-  US-  -  U-  U-  U-  /n[        X45      n[        U5      S:X  d   eUR	                  U5      nUR
                  UR                  4U:X  d   e[        XS-  US-  X-  S-  /5      nX-  XS-  -  /n[        X45      n[        U5      S:X  d   e[        XS-  US-  -  US-  U-  U-  US-  -  /5      nU/n[        X45      n[        U5      S	:X  d   e[        XS-  US-  -  X-  S-  XS-  -  S-  /5      nU/n[        X45      n[        U5      S
:X  d   e[        S5      u  p	p[        X	S-  U
S-  US-  XS-  -  S-  X-  U-  S-  U	S-  US-  -  S-  U
S-  US-  -  U
S-  -  U-  U	S-  U
S-  -  U	S-  -  U
-  /5      nXUS-  /n[        X45      u  p[        U5      S:X  d   e[        U5      S:X  d   eg )Nr   r   r   r   z7((y_1, y_2), (y_1**2, y_2**3, y_2*y_1*y_2*y_1*y_2*y_1))z7((x_0, y_0), (x_0**3, y_0**3, x_0*y_0*x_0*y_0*x_0*y_0))z((x_0,), (x_0**4,))z((x_0,), (x_0**6,))a, b, cr   r   z
(b_1, c_3)   )r	   r   r   strsubgroup
generatorsrelatorsr   )r    r!   r"   r#   Hp1p2p3p4abcgensrelss                 r)   test_subgroup_presentationsr?   r   sj    GA!qD!Q$q)*A	
aeArEk!mAoa A	"1	(Br7OOOO	

1ALL!**%+++qD!Q$q)*A	
a2gA	"1	(Br7OOOOqDAIq"uQwqyB/0A	
A	"1	(Br7++++qDBJq1U7Q,78A	
A	"1	(Br7++++ I&JA!rE1a4AQ${QSUQJAadQPQSTPTUVXZUZPZ[\^`[`P`abPbdeghdhijlnindnoprtotdtuvdvwxA	
q!tA*10JDt9$$$t9??r+   c                     [        S5      u  pn[        XS-  US-  X-  US-  -  U-  /5      nUR                  5       S:X  d   e[        XU-  US-  -  US-  -  US-  /5      nUR                  5       [        R                  L d   e[        S5      u  ppV[        XS-  US-  Xe-  US-  -  U-  US-  US-  US-  -  U-  U-  US-  US-  -  U-  U-  /5      nUR                  5       S:X  d   e[        S	5      u  p[        U / 5      nUR                  5       [        R                  L d   e[        [        S
5      S   / 5      nUR                  5       S:X  d   eg )Nr   r   r   r-   r   r/      i  r!    r   r   )r	   r   orderr   Infinity)r    r!   r"   r#   r:   r;   r<   s          r)   
test_orderrE      sZ    GA!qD!Q$ArE	!,-A779>>aC2IaeOQT*+A779

"""I&JA!sFAqD!#ae)A+q!tQU1b5[]1_aeArEkRSmTUoVWA779c?DA2A779

"""
2q!2&A779>>r+   c                     S n [        S5      u  pn[        XS-  US-  X#-  US-  -  U-  /5      n[        XBU-  /5      nX#-  S-  U;   d   eUR                  X#-  /SS9u  pgU" UR                  5      X2S-  -  /:X  d   eU " XgU5        [        XBS-  U-  U-  /5      nUS-  US-  -  U-  U;   d   eUS-  US-  -  US-  -  U;  d   eUR                  US-  U-  U-  /SS9u  pgU" UR                  S	   S
-  5      US
-  :X  d   eU " XgU5        [        XS
-  US-  X#-  S-  /5      nX#-  US-  US-  -  U-  U-  U-  /nUR                  USS9u  pg[        XH5      nU " XgU5        g )Nc                    ^ U" U R                   5      n[        U4S jU 5       5      (       d   eUR                  5       (       d   eUR                  5       R	                  5       TR                  " 5       :X  d   eg )Nc              3   ,   >#    U  H	  oT;   v   M     g 7f)N ).0elemr   s     r)   	<genexpr>;test_fp_subgroup.<locals>._test_subgroup.<locals>.<genexpr>   s     /19s   )r3   allis_injectiveimagerC   )KTr   _genss     ` r)   _test_subgroup(test_fp_subgroup.<locals>._test_subgroup   s[    !,,//////~~wwy AGGI---r+   r   r   r   r-   r.   T)homomorphismr   r   r   )r	   r   r   r2   r3   )	rT   r    r!   r"   r#   r   rQ   rR   r5   s	            r)   test_fp_subgrouprW      s   .
  GA!qD!Q$ArE	!,-A1seAC"9>>::qse$:/DAQ\\?qBwi'''11"uQwqyk"Ab5A:a<1b5A:ad?!###::q"uQwqyk:5DAQ\\!_a AqD(((1qD!Q$q)*A	
aeArEk!mAoa A::ad:+DA1A1r+   c                  D   [        S5      u  pn[        XS-  US-  X-  US-  -  U-  /5      nUR                  5       S   nUR                  5       (       d   eUR	                  5       US-  /:X  d   e[        XS-  US-  X-  US-  -  U-  /5      n[        X3R                  U/5      5      nX;   d   eUS-  U-  U-  U;   d   e[        XU-  US-  -  US-  -  US-  US-  /5      nUR                  (       d   eUR                  (       d   e[        XS-  US-  X-  S-  /5      nUR                  (       a   e[        XS-  US-  X-  S-  /5      n[        UR                  5       5      S:X  d   e[        X3R                  5       5      nUR                  " 5       S:X  d   eg )	Nr   r   r   r-   r   r   r   r   )r	   r   _to_perm_groupis_isomorphismcenterr   normal_closure
is_abelianis_solvabler   derived_seriesderived_subgrouprC   )r    r!   r"   GrR   r   s         r)   test_permutation_methodsrb      s    GA!qD!Q$ArE	!,-A	1A88:!Q$ 	qD!Q$ArE	!,-A1&&s+,A6M6b5719>> 	aC2IaeOQT1a401A<<<=== 	qD!Q$q)*A}} 	qD!Q$q)*Aq!"a'''1((*+A779>>r+   c            	      
   [        [        [        / 5      / 5      5      n U R                  (       a   eU R                  (       a   e[        S5      u  pn[        [        XS-  US-  US-  /5      5      n X R                  ;   d   eg )Nr   r   r   r   )r   r   r
   r3   r4   r	   )ra   r    r!   r"   s       r)   test_simplify_presentationrd      sp    gimR89A||zz>  GA!gaQ$1ad);<=A

??r+   c                  >   [        S5      u  pn[        XU-  US-  US-  -  U-  U-  U-  /5      nUR                  (       d   e[        XU-  XS-  -  /5      nUR                  (       d   e[        XS-  US-  X-  US-  -  U-  /5      nUR                  (       a   eg )Nr   r-   r   r   )r	   r   	is_cyclicr    r!   r"   r#   s       r)   test_cyclicrh      s     GA!aCBq"uQq*+,A;;;aCb5>"A;;;qD!Q$ArE	!,-A{{?{r+   c                  V   [        S5      u  pn[        XU-  US-  US-  -  U-  U-  U-  /5      nUR                  5       / :X  d   e[        XU-  XS-  -  /5      nUR                  5       S/:X  d   e[        XS-  US-  X-  US-  -  U-  /5      nUR                  5       SS/:X  d   eg )Nr   r-   r   r   )r	   r   abelian_invariantsrg   s       r)   test_abelian_invariantsrk      s     GA!aCBq"uQq*+,A!R'''aCb5>"A!aS(((qD!Q$ArE	!,-A!aV+++r+   N)sympy.core.singletonr   sympy.combinatorics.fp_groupsr   r   r   r   r   sympy.combinatorics.free_groupsr	   r
   sympy.testing.pytestr   r*   r?   rE   rW   rb   rd   rh   rk   rI   r+   r)   <module>rp      s\    "B B D %"U#p"J  &6<
,r+   