U
    L?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   sf  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st| st||tddddtddddkstt|td|j}|	 st|
  | kst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sxt||tddddtddddkstt|td|j|g}||d |	d kstt| ||g|	g}||d
 |d  |d  jstt| || |d  |d  g}t| || j|j}||d |d  |d  ||d  ksrttd	}tdddddddd}t|}
t|
||g|g}| st| rt||d |d kstt| |
| jd g|
j}||}|j| kst|j|ks$t||| |ks:ttd}t|||j|j}| sbtd S )Na, b      r         e            )r   r   r   r	   r   AssertionErrorZis_isomorphisminvert
generatorsZ
is_trivialZkernelorderr   imageZis_identityr
   Zis_injectiveZcomposedomainZcodomain)FabGcdATEr   PDpZT2ZD3 r+   ^/var/www/html/venv/lib/python3.8/site-packages/sympy/combinatorics/tests/test_homomorphisms.pytest_homomorphism	   sP     0.0$ 0
r-   c               	   C   s2  t d\} }}t d\}}}t| |d |d g}t| |d |d g}t||sVtt| |d |d || d g}t d\} }}t| |d |d || d g}t||\}}	|st|	|d |d  |d |d  kstt d\} }}t| |d |d || d g}td}t||\}}	|s0t|	|| |d  |d  |d  tdddksft|	|| | |d  |d  tdddksttd}
tdd	dddd
dd}t|}t|
|rtt	d
}t	d}t||rtt| ||d
 g}t	d
}|
 |
 kstt||s.t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$   r"   Hcheckr&   r)   r*   r(   r%   Br+   r+   r,   test_isomorphismsA   s:      ( 
62r1   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   r+   r"   r    r+   r,   <lambda>r       z)test_check_homomorphism.<locals>.<lambda>)r   r   r   
ValueError)r!   r+   r2   r,   test_check_homomorphismn   s    
r6   N)Zsympy.combinatoricsr   Zsympy.combinatorics.perm_groupsr   Z!sympy.combinatorics.homomorphismsr   r   r   Zsympy.combinatorics.free_groupsr   Zsympy.combinatorics.fp_groupsr   Z sympy.combinatorics.named_groupsr	   r
   r   Zsympy.testing.pytestr   r-   r1   r6   r+   r+   r+   r,   <module>   s   8-