o
    h                     @   s   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZ dd	 Zd
d Zdd ZdS )    )Permutation)PermutationGroup)homomorphismgroup_isomorphismis_isomorphic)
free_group)FpGroup)AlternatingGroupDihedralGroupCyclicGroup)raisesc               	   C   s^  t d\} }}t| |d |d || d g}tdddd}tdddd}td}t||||g||g}|||d  |d  ||d  |d  ksNJ | sTJ ||tddddtddddkskJ t|td|j}| szJ |	 
 |
 ksJ t d\}}	t||	d	 g}ttddddtddg}
t||
|	gtddddg}| 
 dksJ ||tddddtddddksJ t|td|j|g}||d |	d ksJ t| ||g|	g}||d
 |d  |d  jsJ t| || |d  |d  g}t| || j|j}||d |d  |d  ||d  ks5J td	}tdddddddd}t|}
t|
||g|g}| sXJ | r_J ||d |d ksmJ t| |
| jd g|
j}||}|j| ksJ |j|ksJ ||| |ksJ td}t|||j|j}| sJ d S )Na, b      r         e            )r   r   r   r	   r   is_isomorphisminvert
generators
is_trivialkernelorderr   imageis_identityr
   is_injectivecomposedomaincodomain)FabGcdATEr   PDpT2D3 r3   `/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/combinatorics/tests/test_homomorphisms.pytest_homomorphism	   sP    0..$ 0
r5   c               	   C   s(  t d\} }}t d\}}}t| |d |d g}t| |d |d g}t||s+J t| |d |d || d g}t d\} }}t| |d |d || d g}t||\}}	|s]J |	|d |d  |d |d  ksqJ t d\} }}t| |d |d || d g}td}t||\}}	|sJ |	|| |d  |d  |d  tdddksJ |	|| | |d  |d  tdddksJ td}
tdd	dddd
dd}t|}t|
|rJ td
}td}t||rJ t| ||d
 g}td
}|	 |	 ks
J t||sJ d S )Nr   zc, dr   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r	   r   r
   r   r   r   )r%   r&   r'   r-   r)   r*   r(   Hcheckr,   r/   r0   r.   r+   Br3   r3   r4   test_isomorphismsA   s:     ( 40r9   c                     s<   t ddddt dd} t| g tt fdd d S )Nr   r   r   r   c                      s   t   ggS )N)r   r3   r(   r&   r3   r4   <lambda>r   s    z)test_check_homomorphism.<locals>.<lambda>)r   r   r   
ValueError)r'   r3   r:   r4   test_check_homomorphismn   s   
r=   N)sympy.combinatoricsr   sympy.combinatorics.perm_groupsr   !sympy.combinatorics.homomorphismsr   r   r   sympy.combinatorics.free_groupsr   sympy.combinatorics.fp_groupsr    sympy.combinatorics.named_groupsr	   r
   r   sympy.testing.pytestr   r5   r9   r=   r3   r3   r3   r4   <module>   s    8-