U
    9%e                     @   s  d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZ ddlmZ ddlmZ d	d
 Zeejdfged e d ejdfged ed  de  d ejdfed d ejdfged ed  ed  e d ejdfed d ejdfed d ejdfed de  d ejdfed e d ej dfged ed  ded   ded   de  d ej!dfed de  d ej"dfed d ej#dfed de  d ej$dfed e d ej%dfged ed  ed  ed  ed  e d e	j&dfed d e	jdfed d e	j'dfed ded   d e	jdfed ded   d e	j(dfed ded   d e	j)dfed ded   d e	j*dfed ded   ded   ded   ded   e d e	j+dfed ded   d e	j,dfed ded   d e	j-dfed ded   ded   ded   ded   de  d e	j.dfed ded   ded   ded   ded   de  d e	j/dfed ded   ded   d ed   de  d e	j0dfed ded   ded   ed  de  d e	j1dfed d!e  d e	j2dfed e d e	j3dfgd"Z4d#d$ Z5d%d& Z6d'd( Z7d)d* Z8d+d, Z9d-d. Z:d/d0 Z;d1S )2z#Tests for computing Galois groups.     )x)S1TransitiveSubgroupsS2TransitiveSubgroupsS3TransitiveSubgroupsS4TransitiveSubgroupsS5TransitiveSubgroupsS6TransitiveSubgroups)QQ)tschirnhausen_transformationgalois_group"_galois_group_degree_4_root_approx_galois_group_degree_5_hybrid)field_isomorphism)Poly)raisesc                  C   s   t td d t td t d t td d t td td  td  t d fD ]b} t| \}}| |  ksxt|jst|jstt| }t|}t	|j
|j
d k	sTtqTd S )N            )r   r   r
   ZdegreeAssertionErrorZis_monicZis_irreducibler	   alg_field_from_polyr   ext)T_UKL r   o/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/polys/numberfields/tests/test_galoisgroups.py!test_tschirnhausen_transformation   s    "



r   Tr   r   Fr   r                     l      
   7               i  	      )r   r   r   r   r"   r%   c                  C   sD   t ddD ]4} t|  }|D ]"\}}}t|dd||fkstqq
dS )z!
    Try all the test polys.
    r   r'   TZby_nameNrangetest_polys_by_degr   r   )degZpolysr   Galtr   r   r   test_galois_groupZ   s    r7   c                   C   s.   t tdd  t tdd  t tdd  d S )Nc                   S   s   t tdtS )Nr   r   r   r   r   r   r   r   <lambda>e       z8test_galois_group_degree_out_of_bounds.<locals>.<lambda>c                   S   s   t tdtS )Nr   r8   r   r   r   r   r9   f   r:   c                   S   s   t ttd d S )Nr'   r   r8   r   r   r   r   r9   g   r:   )r   
ValueErrorr   r   r   r   &test_galois_group_degree_out_of_boundsd   s    r<   c                  C   sB   t ddD ]2} t|  d \}}}t|\}}|| ks
tq
dS )zv
    Check at least one polynomial of each supported degree, to see that
    conversion from name to group works.
    r   r'   r   N)r2   r3   r   Zget_perm_groupr   )r4   r   ZG_namer   r5   r   r   r   test_galois_group_not_by_namej   s    r=   c                  C   sB   t ddD ]2} t|  d \}}}t|d dd||fks
tq
dS )zG
    Check that we can work with polys that are not monic over ZZ.
    r   r'   r   r   Tr0   Nr1   )r4   r   r5   r6   r   r   r   #test_galois_group_not_monic_over_ZZu   s    r>   c                  C   s0   t d D ]"\} }}tt| ||fkstqd S )Nr   )r3   r   r   r   r   r5   r6   r   r   r   'test__galois_group_degree_4_root_approx~   s    r@   c                  C   s0   t d D ]"\} }}tt| ||fkstqd S )Nr"   )r3   r   r   r   r?   r   r   r   "test__galois_group_degree_5_hybrid   s    rA   c                  C   sl   t ttd d } | jdd\}}|tjks4tt ttd d } | jdd\}}|tjkshtd S )Nr   r   Tr0   r   )	r	   r   r   r   r   r   Vr   D4)kr5   r   r   r   r    test_AlgebraicField_galois_group   s    rE   N)<__doc__Z	sympy.abcr   Zsympy.combinatorics.galoisr   r   r   r   r   r   Z!sympy.polys.domains.rationalfieldr	   Z%sympy.polys.numberfields.galoisgroupsr
   r   r   r   Z!sympy.polys.numberfields.subfieldr   Zsympy.polys.polytoolsr   Zsympy.testing.pytestr   r   ZS1ZS2ZA3ZS3ZC4rB   rC   ZA4ZS4ZC5ZD5ZM20ZA5ZS5ZC6ZD6ZG18ZA4xC2ZS4pZS4mZG36mZS4xC2ZPSL2F5ZPGL2F5ZG36pZG72ZA6ZS6r3   r7   r<   r=   r>   r@   rA   rE   r   r   r   r   <module>   sh    
"&	:	6FJJ>:4
	