o
    *ήc,                     @   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   s6  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 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 r2   S/tmp/pip-target-vg8gfxp4/lib/python/sympy/combinatorics/tests/test_homomorphisms.pytest_homomorphism	   sJ    0..$ 0
r4   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+   Br2   r2   r3   test_isomorphisms<   s:     ( 40r8   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   r2   r(   r&   r2   r3   <lambda>m   s    z)test_check_homomorphism.<locals>.<lambda>)r   r   r   
ValueError)r'   r2   r9   r3   test_check_homomorphismi   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   r4   r8   r<   r2   r2   r2   r3   <module>   s    3-