o
    FZh'                     @   s   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d Zdd Zed	d
 Zdd Zdd Zdd Zdd Zdd ZdS )    S)FpGrouplow_index_subgroupsreidemeister_presentation
FpSubgroupsimplify_presentation)
free_group	FreeGroup)slowc            	      C   s  t d\} }}t| |d |d || d 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sSJ qFt| |d |d || d 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sJ qt| |d |d || d 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slJ q^d S )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t3 r(   W/var/www/auris/lib/python3.10/site-packages/sympy/combinatorics/tests/test_fp_groups.pytest_low_index_subgroups   s    
 
9 r*   c                  C   sH  t d\} }}t| |d |d || d g}|| |d |d  | | | g}t||}t|dks6J ||}|j|jf|ksEJ t| |d |d || d g}|| ||d  g}t||}t|dkslJ t| |d |d  |d | | |d  g}|g}t||}t|d	ksJ t| |d |d  || d ||d  d g}|g}t||}t|d
ksJ t d\} }	}
}t| |	d |
d |d |
|d  d |	|
 | d |	d |d  d |
d |d  |
d  | |	d |
d  |	d  |
 g}|	|
|d g}t||\}}t|dksJ t|dks"J d S )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p2Zp3Zp4abcZgensZrelsr(   r(   r)   test_subgroup_presentationsr   s2    $

 
.
0
~r9   c               
   C   sF  t d\} }}t| |d |d || |d  | g}| dks#J t| || |d  |d  |d g}| tju s?J t d\} }}}t| |d |d || |d  | |d |d |d  | | |d |d  | | g}| dks|J t d	\} }t| g }| tju sJ tt d
d g }| dksJ d S )Nr   r   r   r+   r   r-      i  r     r   r   )r	   r   orderr   Infinity)r   r    r!   r"   r6   r7   r8   r(   r(   r)   
test_order   s   (&Z
r>   c            	      C   s  dd } t d\}}}t||d |d || |d  | g}t||| g}|| d |v s1J |j|| gdd	\}}||j||d  gksKJ | ||| t||d | | g}|d |d  | |v skJ |d |d  |d  |vs{J |j|d | | gdd	\}}||jd
 d |d ksJ | ||| t||d |d || d g}|| |d |d  | | | g}|j|dd	\}}t||}| ||| d S )Nc                    sL   || j }t fdd|D sJ | sJ |    ks$J d S )Nc                 3   s    | ]}| v V  qd S )Nr(   ).0elemr   r(   r)   	<genexpr>   s    z;test_fp_subgroup.<locals>._test_subgroup.<locals>.<genexpr>)r1   allZis_injectiveimager<   )KTr   Z_gensr(   r   r)   _test_subgroup   s   
z(test_fp_subgroup.<locals>._test_subgroupr   r   r   r+   r,   T)Zhomomorphismr   r   r   )r	   r   r   r0   r1   )	rF   r   r    r!   r"   r   rD   rE   r3   r(   r(   r)   test_fp_subgroup   s&   (   $
rG   c                  C   s  t d\} }}t| |d |d || |d  | g}| d }| s'J | |d gks2J t| |d |d || |d  | g}t|||g}||v sUJ |d | | |v saJ t| || |d  |d  |d |d g}|js|J |jsJ t| |d |d || d g}|jrJ t| |d |d || d g}t	|
 dksJ t|| }| dksJ d S )	Nr   r   r   r+   r   r   r   r   )r	   r   Z_to_perm_groupZis_isomorphismcenterr   Znormal_closureZ
is_abelianZis_solvabler   Zderived_seriesZderived_subgroupr<   )r   r    r!   GrE   r   r(   r(   r)   test_permutation_methods   s$   ((,

 
 rJ   c                  C   sf   t ttg g } | jrJ | jrJ td\}}}t t||d |d |d g} || jv s1J d S )Nr   r   r   r   )r   r   r
   r1   r2   r	   )rI   r   r    r!   r(   r(   r)   test_simplify_presentation   s   

 rK   c                  C   s   t d\} }}t| || |d |d  | | | g}|js!J t| || ||d  g}|js3J t| |d |d || |d  | g}|jrLJ d S )Nr   r+   r   r   )r	   r   Z	is_cyclicr   r    r!   r"   r(   r(   r)   test_cyclic   s   *

(rM   c                  C   s   t d\} }}t| || |d |d  | | | g}| g ks$J t| || ||d  g}| dgks:J t| |d |d || |d  | g}| ddgksXJ d S )Nr   r+   r   r   )r	   r   Zabelian_invariantsrL   r(   r(   r)   test_abelian_invariants   s   *(rN   N)Zsympy.core.singletonr   Zsympy.combinatorics.fp_groupsr   r   r   r   r   Zsympy.combinatorics.free_groupsr	   r
   Zsympy.testing.pytestr   r*   r9   r>   rG   rJ   rK   rM   rN   r(   r(   r(   r)   <module>   s    X%

