o
    æð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ƒ}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sñJ ‚qãt| |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(   ú\/var/www/vscode/kcb/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s“J ‚t| |d |d  || d ||d  d gƒ}|g}t||ƒ}t|ƒd
ks»J ‚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Úp2Úp3Úp4ÚaÚbÚcÚgensÚrelsr(   r(   r)   Útest_subgroup_presentationsr   s2    $

 
.
0
~r=   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s¡J ‚d S )Nr   r   r   r+   r   r-   éú   iÐ  r    Ú r   r   )r	   r   Úorderr   ÚInfinity)r   r    r!   r"   r8   r9   r:   r(   r(   r)   Ú
test_order—   s   (&Z
rB   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sšJ ‚| |||ƒ 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   ÚallÚis_injectiveÚimager@   )ÚKÚTr   Ú_gensr(   r   r)   Ú_test_subgroup¬   s   
z(test_fp_subgroup.<locals>._test_subgroupr   r   r   r+   r,   T)Úhomomorphismr   r   r   )r	   r   r   r0   r1   )	rL   r   r    r!   r"   r   rI   rJ   r3   r(   r(   r)   Útest_fp_subgroup«   s&   (   $
rN   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r–J ‚t| |d |d || d gƒ}t	| 
¡ ƒdks°J ‚t|| ¡ ƒ}| ¡ dks¿J ‚d S )	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_subgroupr@   )r   r    r!   ÚGrJ   r   r(   r(   r)   Útest_permutation_methodsÆ   s$   ((,

 
 rX   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	   )rW   r   r    r!   r(   r(   r)   Útest_simplify_presentationä   s   

 rY   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   Ú	is_cyclic©r   r    r!   r"   r(   r(   r)   Útest_cyclicð   s   *

(r\   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   Úabelian_invariantsr[   r(   r(   r)   Útest_abelian_invariantsú   s   *(r^   N)Úsympy.core.singletonr   Úsympy.combinatorics.fp_groupsr   r   r   r   r   Úsympy.combinatorics.free_groupsr	   r
   Úsympy.testing.pytestr   r*   r=   rB   rN   rX   rY   r\   r^   r(   r(   r(   r)   Ú<module>   s    X%

