U
    L?h'                     @   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}ddddggddddgddddgddddgddddggddddgddddgddddggddddgddddggg}tt|D ]}|| j|| kstqt| |d |d || d g}t|d}ddddggddddgddddgddddgdddd	gddd	dgd
d
ddgd	d	d
d
ggddddgddddgddddgdddd	gd
d
d	dgd	d	ddgddd
d
ggddddgddddgddddgdddd	gd
d
d	dgddddgddddgd	d	ddgdddd
gddd
dgddddgddddgddddgddddgddddggddddgddddgddddgdddd	gd
d
d	dgddddgddddgd	d	ddgdddd
gddd
dgddddgddddgddddgddddgddddggddddgddddgddddgdddd	gd
d
d	dgddddgddddgd	d	ddgdddd
gddd
dgddddgddddgddddgddddggddddgddddgddddgddddgddd	d
gddd
dgdddd	gd	d	ddgd
d
ddgddddgddddgddddgddddgddddggddddgddddgddddgddddgddd	d
gddd
dgdddd	gd	d	ddgd
d
ddgddddgddddgddddgddddgddddggddddgddddgddddgddd	d
gddddgddd
dgdddd	gd	d	ddgd
d
ddgddddgddddgddddgddddgddddggddddgddddgddddgddd	d
gddddgd	d	d
dgdddd	gddddgddddgd
d
ddgddddgddddgddddgddddgddddggddddgddddgddddgddd	d
gddddgd
d
d
dgd	d	dd	gddddgddddgg	ddddgddddgddddgddd	d
gddddgddd
dgd
d
dd	gddddgddddgd	d	ddgddddgddddgddddgddddggddddgddddgddddgddd	d
gddddgddd
dgd
d
dd	gddddgddddgd	d	ddgddddgddddgddddgddddggddddgddddgddddgddd	d
gddddgddd
dgdddd	gddddgddddgd	d	ddgd
d
ddgddddgddddgddddggddddgddddgddddgddd	d
gddddgddd
dgdddd	gddddgddddgd	d	ddgd
d
ddgddddgddddgddddggddddgddddgddddgddd	d
gddddgddd
dgdddd	gddddgddddgd	d	ddgd
d
ddgddddgddddgddddggddddgddddgddddgd	d	ddgddddgddd
dgdddd	gd
d
d	d
ggg}tt|D ]}|| j|| k	st	qt| |d |d || d g}t|d|g}ddddggddddgddddgddddgdddd	gddd	dgd
d
ddgd	d	d
d
ggddddgddddgddddgdddd	gd
d
d	dgd	d	ddgddd
d
ggddddgddddgddddgddd	d
gddddgd
d
d
dgd	d	dd	gddddgddddgg	g}tt|D ]}|| j|| k
spt
qpd S )Nx, y         r                     	   
               )r	   r   r   rangelentableAssertionError)	FxyfLt1it2Zt3 r(   Z/var/www/html/venv/lib/python3.8/site-packages/sympy/combinatorics/tests/test_fp_groups.pytest_low_index_subgroups   s    
*  
(
 
 
(
 
 
(
 
 
 

 
 
 

 
 
(
 
 
 

 
 
 

 
 
(
 
 
 

 
 
 

 
2
 
 
 

 
 
 

2
 
 
 

 
 
 

2
 
 
 

 
 
 

2
 
 
 

 
 
 

 
2
 
 
 
2
 
 
 

 
 
 

2
 
 
 

 
 
 

2
 
 
 

 
 
 

2
 
 
 

 
 
 

2
 
 
 

 
 
 

2
 
 
9 2
 
2
 
2
 
 
 
r*   c                  C   sL  t d\} }}t| |d |d || d g}|| |d |d  | | | g}t||}t|dkslt||}|j|jf|kstt| |d |d || d g}|| ||d  g}t||}t|dkstt| |d |d  |d | | |d  g}|g}t||}t|d	ks(tt| |d |d  || d ||d  d g}|g}t||}t|d
kszt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s6tt|dksHt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   strr   subgroup
generatorsrelatorsr   )r    r!   r"   r#   Hp1Zp2Zp3Zp4abcZgensZrelsr(   r(   r)   test_subgroup_presentationsr   s2     $

 
.
0
~r8   c               
   C   sJ  t d\} }}t| |d |d || |d  | g}| dksFtt| || |d  |d  |d g}| tjks~tt d\} }}}t| |d |d || |d  | |d |d |d  | | |d |d  | | g}| dkstt d	\} }t| g }| tjks"ttt d
d g }| dksFtd S )Nr   r   r   r+   r   r-      i  r!    r   r   )r	   r   orderr   r   Infinity)r    r!   r"   r#   r5   r6   r7   r(   r(   r)   
test_order   s    (&Z
r=   c            	      C   s  dd } t d\}}}t||d |d || |d  | g}t||| g}|| d |ksbt|j|| gdd	\}}||j||d  gkst| ||| t||d | | g}|d |d  | |kst|d |d  |d  |kst|j|d | | gdd	\}}||jd
 d |d ks6t| ||| t||d |d || d g}|| |d |d  | | | g}|j|dd	\}}t||}| ||| d S )Nc                    sL   || j }t fdd|D s$t| s0t|    ksHtd S )Nc                 3   s   | ]}| kV  qd S )Nr(   ).0elemr   r(   r)   	<genexpr>   s     z;test_fp_subgroup.<locals>._test_subgroup.<locals>.<genexpr>)r1   allr   Z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   r   r0   r1   )	rE   r    r!   r"   r#   r   rC   rD   r3   r(   r(   r)   test_fp_subgroup   s&    (    $
rF   c                  C   s  t d\} }}t| |d |d || |d  | g}| d }| sNt| |d gksdtt| |d |d || |d  | g}t|||g}||kst|d | | |kstt| || |d  |d  |d |d g}|jst|j	stt| |d |d || d g}|j	r0tt| |d |d || d g}t
| dksftt|| }| dkstd S )	Nr   r   r   r+   r   r   r   r   )r	   r   Z_to_perm_groupZis_isomorphismr   centerr   Znormal_closureZ
is_abelianZis_solvabler   Zderived_seriesZderived_subgroupr;   )r    r!   r"   GrD   r   r(   r(   r)   test_permutation_methods   s$    ((,
  rI   c                  C   sf   t ttg g } | jrt| jr&ttd\}}}t t||d |d |d g} || jksbtd S )Nr   r   r   r   )r   r   r
   r1   r   r2   r	   )rH   r    r!   r"   r(   r(   r)   test_simplify_presentation   s    

 rJ   c                  C   s   t d\} }}t| || |d |d  | | | g}|jsBtt| || ||d  g}|jsftt| |d |d || |d  | g}|jrtd S )Nr   r+   r   r   )r	   r   Z	is_cyclicr   r    r!   r"   r#   r(   r(   r)   test_cyclic   s    *

(rL   c                  C   s   t d\} }}t| || |d |d  | | | g}| g ksHtt| || ||d  g}| dgksttt| |d |d || |d  | g}| ddgkstd S )Nr   r+   r   r   )r	   r   Zabelian_invariantsr   rK   r(   r(   r)   test_abelian_invariants   s    *(rM   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*   r8   r=   rF   rI   rJ   rL   rM   r(   r(   r(   r)   <module>   s   X%

