
    g'                         d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ 	 d Zd Zed        Zd Zd	 Zd
 Zd Zd Zy)    )S)FpGrouplow_index_subgroupsreidemeister_presentation
FpSubgroupsimplify_presentation)
free_group	FreeGroup)slowc                     t        d      \  } }}t        | |dz  |dz  ||z  dz  g      }t        |d      }g dgg dg dg dg d	gg dg d
g dgg dg dgg}t        t	        |            D ]  }||   j
                  ||   k(  rJ  t        | |dz  |dz  ||z  dz  g      }t        |d      }g dgg dg dg dg dg dg dg dgg dg dg dg dg dg dg dgg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d gg dg dg dg dg dg dg dg dg dg d!g d"g dg d#g dg d gg dg dg dg dg dg dg dg dg dg d!g d$g dg d%g d&gg dg d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3gg dg d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d4g d5g d6gg dg d'g d(g d7g d8g d9g d:g d-g d.g d/g d0g d4g d5g d6gg dg d'g d(g d7g d;g d<g d=g d>g d?g d@g dAg dBg dCg dg d gg dg d'g d(g d7g d;g dDg dEg dFg dGg	g dg d'g d(g d7g d;g dHg dIg d>g dJg dKg dLg dMg dNg d3gg dg d'g d(g d7g d;g dHg dIg d>g dJg dOg dPg dQg dRg d3gg dg d'g d(g d7g d;g dHg dSg dTg dJg dUg dVg dWg d2g d3gg dg d'g d(g d7g d;g dHg dSg dTg dJg dOg dXg dQg dRg d3gg dg d'g d(g d7g d;g dHg dSg dYg dZg dUg d[g d\g d]g d^gg dg d_g d`g dag d8g dbg dcg ddgg}t        t	        |            D ]  }||   j
                  ||   k(  rJ  t        | |dz  |dz  ||z  dz  g      }t        |de|g      }g dgg dg dg dg dg dg dg dgg dg dg dg dg dg dg dgg dg d'g d(g d7g d;g dDg dEg dFg dGg	g}t        t	        |            D ]  }||   j
                  ||   k(  rJ  y )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	            ]/var/www/openai/venv/lib/python3.12/site-packages/sympy/combinatorics/tests/test_fp_groups.pytest_low_index_subgroupsr*      s    GAq! 	AqD!Q$1q)*AAq!A.|\
B|
4
&
(B 3r7^tzzRU"""  	AqD!Q$1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tzzRU"""  	AqD!Q$1q)*AArA3'A.|\<'|\<'|\<|\C
DB 3r7^tzzRU"""     c                     t        d      \  } }}t        | |dz  |dz  ||z  dz  g      }||z  |dz  |dz  z  |z  |z  |z  g}t        ||      }t        |      dk(  sJ |j	                  |      }|j
                  |j                  f|k(  sJ t        | |dz  |dz  ||z  dz  g      }||z  ||dz  z  g}t        ||      }t        |      dk(  sJ t        | |dz  |dz  z  |dz  |z  |z  |dz  z  g      }|g}t        ||      }t        |      d	k(  sJ t        | |dz  |dz  z  ||z  dz  ||dz  z  dz  g      }|g}t        ||      }t        |      d
k(  sJ t        d      \  } }	}
}t        | |	dz  |
dz  |dz  |
|dz  z  dz  |	|
z  |z  dz  |	dz  |dz  z  dz  |
dz  |dz  z  |
dz  z  |z  |	dz  |
dz  z  |	dz  z  |
z  g      }|	|
|dz  g}t        ||      \  }}t        |      dk(  sJ t        |      dk(  sJ y )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   s    GAq!AqD!Q$1q)*A	
1aeArEk!mAoa A	"1a	(Br7OOOO	

1ALL!**%+++AqD!Q$1q)*A	
1a2gA	"1a	(Br7OOOOAqDAIq"uQwqyB/0A	
A	"1a	(Br7++++AqDBJ1q1QU7Q,78A	
A	"1a	(Br7++++ I&JAq!QArE1a4A!Q${QqSUQJAadQPQSTPTUVXZUZPZ[\^`[`P`abPbdeghdhijlnindnoprtotdtuvdvwxA	
Aq!tA*1a0JD$t9$$$t9??r+   c                     t        d      \  } }}t        | |dz  |dz  ||z  |dz  z  |z  g      }|j                         dk(  sJ t        | ||z  |dz  z  |dz  z  |dz  g      }|j                         t        j                  u sJ t        d      \  } }}}t        | |dz  |dz  ||z  |dz  z  |z  |dz  |dz  |dz  z  |z  |z  |dz  |dz  z  |z  |z  g      }|j                         dk(  sJ t        d	      \  } }t        | g       }|j                         t        j                  u sJ t        t        d
      d   g       }|j                         dk(  sJ y )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      sl    GAq!AqD!Q$!ArE	!,-A779>>AaC2IaeOQT*+A779

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

"""
2q!2&A779>>r+   c                     d } t        d      \  }}}t        ||dz  |dz  ||z  |dz  z  |z  g      }t        |||z  g      }||z  dz  |v sJ |j                  ||z  gd      \  }} ||j                        ||dz  z  gk(  sJ  | |||       t        ||dz  |z  |z  g      }|dz  |dz  z  |z  |v sJ |dz  |dz  z  |dz  z  |vsJ |j                  |dz  |z  |z  gd      \  }} ||j                  d	   d
z        |d
z  k(  sJ  | |||       t        ||d
z  |dz  ||z  dz  g      }||z  |dz  |dz  z  |z  |z  |z  g}|j                  |d      \  }}t        ||      } | |||       y )Nc                      || j                         }t        fd|D              sJ |j                         sJ |j                         j	                          j                         k(  sJ y )Nc              3   &   K   | ]  }|v  
 y w)N ).0elemr   s     r)   	<genexpr>z;test_fp_subgroup.<locals>._test_subgroup.<locals>.<genexpr>   s     /419s   )r3   allis_injectiveimagerC   )KTr   _genss     ` r)   _test_subgroupz(test_fp_subgroup.<locals>._test_subgroup   sW    !,,/////~~wwy GAGGI---r+   r   r   r   r-   r.   T)homomorphismr   r   r   )r	   r   r   r2   r3   )	rS   r    r!   r"   r#   r   rP   rQ   r5   s	            r)   test_fp_subgrouprU      s   .
  GAq!AqD!Q$!ArE	!,-A1qseAaC"9>>::qse$:/DAqQ\\?qBwi'''1a1q"uQwqyk"Ab5A:a<1b5A:ad?!###::q"uQwqyk:5DAqQ\\!_a AqD(((1aAqD!Q$1q)*A	
1aeArEk!mAoa A::ad:+DAq1aA1ar+   c                  (   t        d      \  } }}t        | |dz  |dz  ||z  |dz  z  |z  g      }|j                         d   }|j                         sJ |j	                         |dz  gk(  sJ t        | |dz  |dz  ||z  |dz  z  |z  g      }t        ||j                  |g            }||v sJ |dz  |z  |z  |v sJ t        | ||z  |dz  z  |dz  z  |dz  |dz  g      }|j                  sJ |j                  sJ t        | |dz  |dz  ||z  dz  g      }|j                  rJ t        | |dz  |dz  ||z  dz  g      }t        |j                               dk(  sJ t        ||j                               } |j                         dk(  sJ y )	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"   GrQ   r   s         r)   test_permutation_methodsr`      s    GAq!AqD!Q$!ArE	!,-A	1A88:!Q$ 	AqD!Q$!ArE	!,-A1a&&s+,A6M6b5719>> 	AaC2IaeOQT1a401A<<<=== 	AqD!Q$1q)*A}} 	AqD!Q$1q)*Aq!"a'''1a((*+A1779>>r+   c            	          t        t        t        g       g             } | j                  rJ | j                  rJ t        d      \  }}}t        t        ||dz  |dz  |dz  g            } || j                  v sJ y )Nr   r   r   r   )r   r   r
   r3   r4   r	   )r_   r    r!   r"   s       r)   test_simplify_presentationrb      sv    gimR89A||zz>  GAq!ga!Q$1ad);<=A

??r+   c                  ,   t        d      \  } }}t        | ||z  |dz  |dz  z  |z  |z  |z  g      }|j                  sJ t        | ||z  ||dz  z  g      }|j                  sJ t        | |dz  |dz  ||z  |dz  z  |z  g      }|j                  rJ y )Nr   r-   r   r   )r	   r   	is_cyclicr    r!   r"   r#   s       r)   test_cyclicrf      s     GAq!AaCBq"uQq*+,A;;;AaC1b5>"A;;;AqD!Q$!ArE	!,-A{{?{r+   c                  \   t        d      \  } }}t        | ||z  |dz  |dz  z  |z  |z  |z  g      }|j                         g k(  sJ t        | ||z  ||dz  z  g      }|j                         dgk(  sJ t        | |dz  |dz  ||z  |dz  z  |z  g      }|j                         ddgk(  sJ y )Nr   r-   r   r   )r	   r   abelian_invariantsre   s       r)   test_abelian_invariantsri      s     GAq!AaCBq"uQq*+,A!R'''AaC1b5>"A!aS(((AqD!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   rU   r`   rb   rf   ri   rI   r+   r)   <module>rn      s\    "B B D %"U#p"J  &6<
,r+   