U
    9%eY                     @   s\  d dl mZmZ d dlmZmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZmZmZ d dlmZmZmZmZmZ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!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+d d! Z,d"d# Z-d$d% Z.d&d' Z/d(d) Z0d*d+ Z1d,d- Z2d.d/ Z3d0d1 Z4d2d3 Z5d4d5 Z6d6d7 Z7d8d9 Z8d:d; Z9d<d= Z:d>d? Z;d@dA Z<dBdC Z=dDdE Z>dFdG Z?dHdI Z@dJdK ZAdLdM ZBdNdO ZCdPdQ ZDdRdS ZEdTdU ZFdVdW ZGdXdY ZHdZd[ ZId\d] ZJd^d_ ZKd`da ZLdbdc ZMddde ZNdfdg ZOdhdi ZPdjdk ZQdldm ZRdndo ZSdpdq ZTdrds ZUdtdu ZVdvS )w    )xzeta)Polycyclotomic_poly)FFQQZZ)DomainMatrixDM)ClosureFailureMissingUnityErrorStructureError)	ModuleModuleElementModuleEndomorphism
PowerBasisPowerBasisElementfind_min_polyis_sq_maxrank_HNFmake_mod_eltto_colis_int)UnificationFailed)raisesc                  C   sB   ddddg} t | }|jjs t|jdks.t| | ks>td S )N            )r   r   )r   domainZis_ZZAssertionErrorshapeflat)cm r%   j/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/polys/numberfields/tests/test_modules.pytest_to_col   s
    r'   c                      sd   t   tt fdd tt fdd tt fdd tt fdd tt fdd d S )Nc                      s    j S N)nr%   Mr%   r&   <lambda>       z,test_Module_NotImplemented.<locals>.<lambda>c                      s      S r(   )mult_tabr%   r*   r%   r&   r,      r-   c                      s
     d S r(   	representr%   r*   r%   r&   r,      r-   c                      s      S r(   )starts_with_unityr%   r*   r%   r&   r,      r-   c                      s     tddS )Nr   r   )element_from_rationalr   r%   r*   r%   r&   r,      r-   )r   r   NotImplementedErrorr%   r%   r*   r&   test_Module_NotImplemented   s    r4   c                  C   s   t tdt} t| }|dtdt }|dtdt }|dtdt }|jdd|||gksrt	|jdd|||gkst	|
 |kst	|||kst	t }|
 d kst	d S )N   r   r   r   T)Zinclude_self)r   r   r   r   submodule_from_matrixr	   eyer   Z	ancestorsr    Zpower_basis_ancestorZnearest_common_ancestorr   )TABCDr+   r%   r%   r&   test_Module_ancestors"   s    r=   c                  C   s   t tdt} t| }tddddg}| }||dks@t||dksRt|ddksdt|t	dt
d d df dkst|t	dtd d df dkst|t	dt
d d df dkstd S )	Nr5   r   r   r   r   TFr   )r   r   r   r   r   	transposeZis_compat_colr    r	   r7   r   r   )r8   r9   colrowr%   r%   r&   test_Module_compat_col0   s    &&rA   c                     s   t tdt} t|   dj ddddgks4t dj ddddgksRttdt	d d df } |j|ks|tt
t fdd d S )Nr5   r   r   r   r   c                      s    dS )Nr%   r%   r:   r%   r&   r,   D   r-   z"test_Module_call.<locals>.<lambda>)r   r   r   r   r?   r"   r    r	   r7   r   r   
ValueError)r8   r?   r%   rC   r&   test_Module_call=   s    rE   c                  C   sP   t tdt} t| }|dtdt }| dks<t	| dksLt	d S )Nr5   r   r   TF)
r   r   r   r   r6   r	   r7   r   r1   r    r8   r9   r:   r%   r%   r&   test_Module_starts_with_unityG   s
    rG   c            	      C   s   t tdt} t| }|dtdt }| }|	 }t
t||D ]j\}\}}dgd }|j|ksnt|j|ks|td||< ||t|kstd||< ||t|ksJtqJd S )Nr5   r   r   r   r   )r   r   r   r   r6   r	   r7   r   Zbasis_elementsZbasis_element_pullbacks	enumeratezipmoduler    r   )	r8   r9   r:   Zbasisbpiepr#   r%   r%   r&   test_Module_basis_elementsO   s    
rO   c                  C   s   t tdt} t| }|dtdt }| j	
 ddddgksJt| j|ks\t| j	
 ddddgkszt| j|kstd S )Nr5   r   r   r   )r   r   r   r   r6   r	   r7   r   zeror?   r"   r    rJ   rF   r%   r%   r&   test_Module_zero_   s    rQ   c                  C   s   t tdt} t| }|dtdt }| j	
 ddddgksJt| j|ks\t| j	
 ddddgkszt| j|kstd S )Nr5   r   r   r   r   )r   r   r   r   r6   r	   r7   r   oner?   r"   r    rJ   rF   r%   r%   r&   test_Module_onei   s    rS   c                  C   s   t tdt} t| }|dtdt }|t	dd}|t	dd}|j
ddddgksbt|jdkspt|j|ks~t|j
ddddgkst|jdkst|j|kstd S )Nr5   r   r         r   )r   r   r   r   r6   r	   r7   r   r2   r   coeffsr    denomrJ   )r8   r9   r:   ZrAZrBr%   r%   r&   !test_Module_element_from_rationals   s    rX   c                     s   t tdt} t|  d d d d d d d d g} ||d  |d  }j|ksttt	t
 fdd t	t
 fdd d S )	Nr5   r   r   r      c                      s
     g S r(   submodule_from_gensr%   r9   r%   r&   r,      r-   z1test_Module_submodule_from_gens.<locals>.<lambda>c                      s     d d dgS )Nr   r   rZ   r%   r9   r:   r%   r&   r,      r-   )r   r   r   r   r[   columnZhstackmatrixr    r   rD   )r8   Zgensr+   r%   r]   r&   test_Module_submodule_from_gens   s    ,
r`   c                     s   t tdt} t|   dtdt }|tddddg}|	 }|j
 ddddgksbttt fdd	 tt fd
d	 d S )Nr5   r   r   r   r   rY      c                      s     tdtS )Nr   )r6   r	   r7   r   r%   r\   r%   r&   r,      r-   z3test_Module_submodule_from_matrix.<locals>.<lambda>c                      s     dtdt S )Nr   r5   )r6   r	   r7   r   r%   r\   r%   r&   r,      r-   )r   r   r   r   r6   r	   r7   r   r   	to_parentr?   r"   r    r   rD   )r8   r:   rM   fr%   r\   r&   !test_Module_submodule_from_matrix   s    rd   c            	      C   s   t tdt} t| }| }|tddddg}| }|j ddddgksTt	|d|d|d|df\}}}}|| |kst	|d |kst	d S )Nr5   r   r   r   r   r   )
r   r   r   r   whole_submoduler   rb   r?   r"   r    )	r8   r9   r:   rM   rc   Ze0e1e2Ze3r%   r%   r&   test_Module_whole_submodule   s    $rh   c                  C   s*   t tdt} t| }t|dks&td S )Nr5   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   reprr    )r8   r9   r%   r%   r&   test_PowerBasis_repr   s    rj   c                  C   s.   t tdt} t| }t| }||ks*td S Nr5   )r   r   r   r   r    rF   r%   r%   r&   test_PowerBasis_eq   s    rl   c                     s   t tdt} t| }|  ddddgddddgddddgddddgdddddgddddgddddgdddddgddddgddddddgid} |kstt fd	d
 D std S )Nr5   r   r   )r   r   r   r   rB   )r   r   r   )r   r   r   c                 3   s6   | ].} | D ] } | | D ]}t |V  qqqd S r(   r   ).0uvr#   r*   r%   r&   	<genexpr>   s     
    z+test_PowerBasis_mult_tab.<locals>.<genexpr>)r   r   r   r   r.   r    all)r8   r9   expr%   r*   r&   test_PowerBasis_mult_tab   s    ,"rs   c                     sd   t tdt} t|  tddddg} |} ||ks@t |ddtt fdd d S )	Nr5   r   r   r   r   rW   c                      s
     S r(   r/   r%   r9   br%   r&   r,      r-   z+test_PowerBasis_represent.<locals>.<lambda>)	r   r   r   r   r   r0   r    r   r   )r8   r?   ar%   ru   r&   test_PowerBasis_represent   s    rx   c                  C   s   t tdt} t| }t ddt  }t td }t dt}||jddddgksXt||jddddgkstt||jddddgkstd S )Nr5   r   r   r   r   rB   )r   r   r   r   Zelement_from_polyrV   r    )r8   r9   rc   ghr%   r%   r&   !test_PowerBasis_element_from_poly   s    
r{   c                     s`  t d} t d}t|  | t ddt ddddg} |}|jddddgksXt|jdksft| |ksvt|t ddt ddddgtt	 fd	d
 | 
|} |jddddgkstjdkst
 |kst|
tt	 fdd
 t| jj}||jddddgks:tjdksJtttfdd
 d S )Nr5   rU   r   r   r   *      rY   c                      s
     S r(   )element_from_ANPr%   )r:   dr%   r&   r,      r-   z6test_PowerBasis_element__conversions.<locals>.<lambda>c                      s
     S r(   )element_from_alg_numr%   )r:   deltar%   r&   r,      r-   c                      s      S r(   )
to_alg_numr%   )epsr%   r&   r,      r-   )r   Zcyclotomic_fieldr   r~   rV   r    rW   Zto_ANPr   r   r   r   extZminpolyr   )kLrw   rM   alphar;   r%   )r:   r   r   r   r&   $test_PowerBasis_element__conversions   s,    






r   c                  C   sD   t tdt} t| }|jdtdt dd}t|dks@t	d S )Nr5   r   r   r   rt   zCSubmodule[[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]]/3)
r   r   r   r   r6   r	   r7   r   ri   r    rF   r%   r%   r&   test_Submodule_repr  s    r   c                  C   sv   t tdt} t| }|dtdt }|jdtdt dd}| }|j	dkrn||  krl|ksrn t
d S )Nr5   r   r   rY   r   rt   r   )r   r   r   r   r6   r	   r7   r   reducedrW   r    r8   r9   r:   r;   r<   r%   r%   r&   test_Submodule_reduced	  s    r   c                  C   s   t tdt} t| }|dtdt }|  |	d}|j
|j
ksNt| r^| rbt|j|jd d dd f kst| ddgddgddddgidkstd S )Nr5   r   r   r   )r   r   r   )r   r   r   r   r6   r	   r7   r   Zcompute_mult_tabZdiscard_beforeparentr    r   r_   r.   r8   r9   r:   r;   r%   r%   r&   test_Submodule_discard_before  s    
 r   c                  C   sZ   t tdt} t| }|dtdt }|jdtdt dd}|j|jksVt	d S Nr5   r   r   rY   r   rt   )
r   r   r   r   r6   r	   r7   r   Z	QQ_matrixr    r   r%   r%   r&   test_Submodule_QQ_matrix  s
    r   c               	      sd  t tdt} t|   dtdt dtdt } tddddg} tdddd	g} td
dddg	|}|
 d
dddgkst|	|}|
 d
dddgkst td
dddgdd
ddgddd
dggdt t tdt}t|}|td
dddddgtt fdd ttfdd ttfdd d S )Nr5   r   r   r   rY            ra   r   rU   r   r   r   c                      s     dS )Nr   r/   r%   )r9   Yr%   r&   r,   ?  r-   z*test_Submodule_represent.<locals>.<lambda>c                      s
     S r(   r/   r%   )r:   a2r%   r&   r,   @  r-   c                      s
     S r(   r/   r%   )r:   z0r%   r&   r,   A  r-   )r   r   r   r   r6   r	   r7   r   r   r0   r"   r    r>   r   r   )r8   r;   Za0Za1b1Zc0UZr%   )r9   r:   r   r   r   r&   test_Submodule_represent&  s2    




 
r   c                  C   s   t tdt} t| }|dtdt }|dtdt }|dtdt }||dksjt	||dks|t	||dkst	d S )Nr5   r   r   r   TF)
r   r   r   r   r6   r	   r7   r   Zis_compat_submoduler    r   r%   r%   r&   "test_Submodule_is_compat_submoduleD  s    r   c                  C   sV   t tdt} t| }|dtdt }|jdtdt dd}||ksRtd S r   )	r   r   r   r   r6   r	   r7   r   r    r   r%   r%   r&   test_Submodule_eqO  s
    r   c                     s   t tdt} t| }|jtddddgddddggdt dd |jtddddgddddggdt d	d}|jtd
dddgdd
ddgddddggdt dd} | |kstt tdt}t|}|	|d|dgt
t fdd d S )Nr5   r   r   r   r   rY   rt   
   rU            r   r}   r   c                      s     S r(   r%   r%   r:   r   r%   r&   r,   l  r-   z$test_Submodule_add.<locals>.<lambda>)r   r   r   r   r6   r	   r   r>   r    r[   r   	TypeError)r8   r9   r;   r<   r   r   r%   r   r&   test_Submodule_addW  sF    

 

 


 r   c               	   C   s  t tdt} t| }|jtddddgddddggdt dd}|jtddddgddd	dggdt d
d}|jtddddgddddggdt dd}|jtddddgddddgddddgddddggdt dd}|jtddddgddddgddddggdt dd}|d |ks,t|d |ks>t|d |ksPt||d |ksft|j	|dd|ks~t|| |kst|d |kstd S )Nr5   r   r   rU   r   r   rt   r   r   r   d   F   ir   r      i$  i:  i;  r   r   F)Zhnfr   )
r   r   r   r   r6   r	   r   r>   r    mul)r8   r9   r;   ZC1ZC2ZC3_unredZC3r%   r%   r&   test_Submodule_mulo  sr    

 

 

 



 


 r   c               
      s  t tdt} t| }| }|tddddgdd|jtdt	d	d |td
dddgdd} 
}||kszt|jtdt	dd |tddddgdd} 
}||kst|jtdt	dd |tddddgdd} 
}||kst|tdd	ddgtt fdd |tdddd	gddddgddddgddddggdt	  tt fdd d S )Nr5   Z   T   P   K   x   rt   r   r   r}   r   r   r   r   ra   	   r   r   c                      s
     S r(   reduce_elementr%   )r;   rw   r%   r&   r,     r-   z/test_Submodule_reduce_element.<locals>.<lambda>rU   rY      r   r   c                      s
     S r(   r   r%   )r;   rv   r%   r&   r,     r-   )r   r   r   r   re   r   r6   r	   r7   r   r   r    r   r3   r>   r   )r8   r9   r:   Zb_bar_expectedZb_barr%   )r;   rw   rv   r&   test_Submodule_reduce_element  s8    






 
r   c                  C   s   t dddgdddgdddggt} t dddgdddgdddggt}t dddgdddgdddggt}t| dksvtt|dkstt|dkstd S )Nr   r   r   r   r   TF)r
   r   r   r    )r+   ZM1ZM2r%   r%   r&   test_is_HNF  s0    r   c                  C   sp   t tdt} t| }|dtdt }tddddg}t	||}t	||}t
|ts^tt
|trltd S )Nr5   r   r   r   r   )r   r   r   r   r6   r	   r7   r   r   r   
isinstancer   r    )r8   r9   r:   r?   eAeBr%   r%   r&   test_make_mod_elt  s    

r   c                  C   sB   t tdt} t| }|tddddgdd}t|dks>td S )Nr5   r   r   r   r   rt   z[1, 2, 3, 4]/2)r   r   r   r   r   ri   r    r8   r9   rM   r%   r%   r&   test_ModuleElement_repr  s    r   c                  C   sP   t tdt} t| }|tddddgdd}| }|jdkrH||ksLtd S )Nr5   r   r   rY   ra   rt   r   )r   r   r   r   r   r   rW   r    r8   r9   rM   rc   r%   r%   r&   test_ModuleElement_reduced  s
    r   c                  C   sN   t tdt} t| }|tddddg}|d}|jddd	d
gksJtd S )Nr5   r   (   <   r   rU   rB   r   r   )r   r   r   r   r   Zreduced_mod_prV   r    r   r%   r%   r&    test_ModuleElement_reduced_mod_p  s
    
r   c                  C   s<   t tdt} t| }ddddg}t||j|ks8td S )Nr5   r   r   r   r   )r   r   r   r   r   Zfrom_int_listrV   r    )r8   r9   r#   r%   r%   r&    test_ModuleElement_from_int_list  s    r   c                  C   s2   t tdt} t| }|d}t|dks.td S )Nr5   r   r   )r   r   r   r   lenr    r   r%   r%   r&   test_ModuleElement_len  s    r   c                  C   s^   t tdt} t| }|d}| }||jkr:||jk	s>t|jtdd}|jj	sZtd S )Nr5   r   r   )
r   r   r   r   r^   r?   r    r   r   Zis_FF)r8   r9   rM   Zcol1Zcol2r%   r%   r&   test_ModuleElement_column  s    r   c                  C   sZ   t tdt} t| }|tddddgdd}|tdddd	gdd}|j|jksVtd S )
Nr5   r   r   r   r   rt   rY   r   r   )r   r   r   r   r   ZQQ_colr    r   r%   r%   r&   test_ModuleElement_QQ_col  s
    r   c            	         s   t tdt} t| }|dtdt }|dtdt }|dtdt }|d}| }|	|}|
 }|j|kr|jddddgkst|j|kr|jddddgkst|j|kr|jddddgkst|d tt fdd	 d S )
Nr5   r   r   r   r   r   r}   c                      s      S r(   )rb   r%   rw   r%   r&   r,     r-   z1test_ModuleElement_to_ancestors.<locals>.<lambda>)r   r   r   r   r6   r	   r7   r   rb   Zto_ancestorZover_power_basisrJ   rV   r    r   rD   )	r8   r9   r:   r;   r<   ZeDeCr   r   r%   r   r&   test_ModuleElement_to_ancestors
  s    
   r   c                     sN  t tdt} t| }|dtdt }|dtdt  |dtdt } d ddksrt	 d|ddkst	 d
|d\}}|j|kr|j|kst	  | dkr||||dkst	 d
 d\}}| dkr| dks t	t td	t}t|tt fd
d d S )Nr5   r   r   r   r   r   TFrU   c                      s    d dS )Nr   r   )unifyr%   r;   r   r%   r&   r,   -  r-   z2test_ModuleElement_compatibility.<locals>.<lambda>)r   r   r   r   r6   r	   r7   r   Z	is_compatr    r   rJ   r0   r   r   )r8   r9   r:   r<   rn   ro   r   r%   r   r&    test_ModuleElement_compatibility  s    0 r   c                  C   s   t tdt} t| }|tddddgdd}|tdddd	gdd}||ksRtt td
t}t|}||dksxt|dkstd S )Nr5   r   r   r   r   rt   rY   r   r   rU   r   Q	@r   r   r   r   r   r    )r8   r9   rM   rc   r   r   r%   r%   r&   test_ModuleElement_eq0  s    r   c                     s  t tdt} t| }|tddddgdd|tdddd	gdd}|sTt|dt	dt
 }|tddddgdd}|tdddd	gdd}||st|tdd
d
d
gddtddstt tdt}t| tt fdd ddkstd S )Nr5   r   r   r   r   rt   rY   r   r   r   rU   r   c                      s     dS Nr   )equivr%   r   rM   r%   r&   r,   L  r-   z*test_ModuleElement_equiv.<locals>.<lambda>r   F)r   r   r   r   r   r   r    r6   r	   r7   r   r   r   r   )r8   r9   rc   r;   ry   rz   r   r%   r   r&   test_ModuleElement_equiv=  s    (r   c                     sx  t tdt} t| }|dtdt }|tddddgdd|tdddd	gd
d}|tddddgdd}| |td
dddgddkst	| |tddddgddkst	| |td
dddgddkst	t
dd
 |tdd
ddgddkst	|t
dd
 |tddddgd
dks8t	t tdt}t| tt fdd ttfdd d S )Nr5   r   r   r   r   rY   rt   rU   ra   r   r   r   rT   r   r   r   r   r         r   r}   c                      s    d S r   r%   r%   r   r%   r&   r,   `  r-   z(test_ModuleElement_add.<locals>.<lambda>c                      s    d S Nr   r%   r%   rM   r%   r&   r,   a  r-   )r   r   r   r   r6   r	   r7   r   r   r    r   r   r   )r8   r9   r;   rc   ry   r   r%   r   r&   test_ModuleElement_addQ  s    $$$,,r   c                     s  t tdt} t| }|dtdt }|tddddgdd|tddddgdd}|tddddgdd}|tddddgdd}| |td	d	d	d	gd
dkst	| |tddddgkst	| |tddddgddkst	t
dd |tddddgddks t	|t
dd |tddddgddsNt	t
dd |tddddgddkszt	t tdt}t| tt fdd ttfdd ttfdd ttfdd d S )Nr5   r   r   r   r   rt   rU   r   ir   rB   r      rY   r   r   c                      s    d S r   r%   r%   r   r%   r&   r,   u  r-   z(test_ModuleElement_mul.<locals>.<lambda>c                      s    d S r   r%   r%   r   r%   r&   r,   v  r-   c                      s    d S r   r%   r%   r   r%   r&   r,   w  r-   c                      s    d S r   r%   r%   r   r%   r&   r,   x  r-   )r   r   r   r   r6   r	   r7   r   r   r    r   r   r   r   ZeroDivisionError)r8   r9   r;   rc   ry   rz   r   r%   r   r&   test_ModuleElement_muld  s&    $ $,.,r   c                  C   s   t tdt} t| }|dtdt }|tddddgdd}|tddddgdd}|tddddg}|| d	|d d
 kst	|| d|d d kst	d| |d kst	d S )Nr5   r   r   r   r   rt   rU   r   r   r   r   r   
r   r   r   r   r6   r	   r7   r   r   r    )r8   r9   r;   rM   rc   ry   r%   r%   r&   test_ModuleElement_div{  s    r   c                  C   s
  t tdt} t| }|dtdt }|tddddgdd}|tddddgdd}|d |tddddgd	dkst	|d |tddddgddkst	|d |tddddgkst	|d |tddddgkst	|d |kst	|d |kst	d S )
Nr5   r   r   r   r   rt   r   ra      r   )r8   r9   r;   rM   ry   r%   r%   r&   test_ModuleElement_pow  s    $$  r   c                     s  t tdt} t| }|tddddgddd |tddddgddksRttdd | kslttdd	 |tddddgd
dkst||dd|d d	|d |d	g}| |tddddgddkst|	  t
t fdd d S )Nr5   r   r   ra   r   r   rt   rU   r   rY   c                      s     S r(   r%   r%   r;   rM   r%   r&   r,     r-   z(test_ModuleElement_mod.<locals>.<lambda>)r   r   r   r   r   r    r   rP   r[   re   r   r   rF   r%   r   r&   test_ModuleElement_mod  s    $**$r   c                  C   s   t tdt} t| }|tddddgdd}|jtdt dtd  dt  d td	ks^t|j	tdt d
td  t
ddt  t
dd t
d	kstd S )Nr5   r   r   ra   r   r   rt   r   r   r   )r   r   r   r   r   	numeratorr   r   r    Zpolyr   r   r%   r%   r&   test_PowerBasisElement_polys  s
    0r   c                  C   s>   t tdt} t| }|tddddg}| dks:td S )Nr5   r   rB   r   )r   r   r   r   r   Znormr    )r8   r9   Zlamr%   r%   r&   test_PowerBasisElement_norm  s    r   c                  C   s\   t tdt} t| }|tddddg}d| d|d ksBt|d |d ksXtd S )Nr5   r   r   r   r   r   r   r   r%   r%   r&   test_PowerBasisElement_inverse  s
    r   c               	   C   sl   t tdt} t| }t|dd }| }|tddddgddddgddddgddddggdtkshtd S )Nr5   c                 S   s   | d S )Nr   r%   r   r%   r%   r&   r,     r-   z0test_ModuleHomomorphism_matrix.<locals>.<lambda>r   r   rB   r   )	r   r   r   r   r   r_   r	   r   r    )r8   r9   phir+   r%   r%   r&   test_ModuleHomomorphism_matrix  s    



 r   c                  C   s>   t tdt} t| }t|dd }| }|jdks:td S )Nr5   c                 S   s   | d S rk   r%   r   r%   r%   r&   r,     r-   z0test_ModuleHomomorphism_kernel.<locals>.<lambda>r   )r   r   r   r   r   Zkernelr)   r    )r8   r9   r   Nr%   r%   r&   test_ModuleHomomorphism_kernel  s
    r   c                     s   t tdt} t| }|   |d} |}| tddddddddddddddddggdt	kspt
|tdt	}| }||d}||}|tg dt	kst
tt fdd	 d S )
Nr5   r   r   rB   )r      )r   r   )r   r   c                      s
     dS r   r/   r%   Rr%   r&   r,     r-   z1test_EndomorphismRing_represent.<locals>.<lambda>)r   r   r   r   Zendomorphism_ringZinner_endomorphismr0   r>   r	   r   r    r6   Zzerosr   r3   )r8   r9   r   r?   r:   Spsir%   r   r&   test_EndomorphismRing_represent  s"    
" 

r   c                     s   t tdt} t| }g }t|dtt|d}|t | tdksBtt|dksRtt|dttd}|t | tdksxt|dt	
dt  tt fdd	 d S )
Nr5   r   )r   powersr   r   r   r   c                      s   t  dtS )Nr   )r   r   r%   rC   r%   r&   r,     r-   z$test_find_min_poly.<locals>.<lambda>)r   r   r   r   r   r   r    r   r6   r	   r7   r   r   r   )r8   r9   r   r$   r%   rC   r&   test_find_min_poly  s    r   N)WZ	sympy.abcr   r   Zsympy.polysr   r   Zsympy.polys.domainsr   r   r   Zsympy.polys.matricesr	   r
   Z#sympy.polys.numberfields.exceptionsr   r   r   Z sympy.polys.numberfields.modulesr   r   r   r   r   r   r   r   r   Z"sympy.polys.numberfields.utilitiesr   Zsympy.polys.polyerrorsr   Zsympy.testing.pytestr   r'   r4   r=   rA   rE   rG   rO   rQ   rS   rX   r`   rd   rh   rj   rl   rs   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r&   <module>   s|   ,	



)	#!
