a
    kº”hð4  ã                   @   sè   d 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 ddlmZmZ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&„ Z#d'S )(zTest modules.py code.é    )Ú
FreeModuleÚModuleOrderÚFreeModulePolyRing)ÚCoercionFailedÚQQÚlexÚgrlexÚilexÚZZ)ÚxÚyÚz)Úraises)ÚRationalc                     sÎ  t  t¡ d¡} |  dttd g¡‰ t  t¡ d¡t  t¡ t¡t  t¡ td ¡g}tˆ ƒ|ksfJ ‚|d ˆ d kszJ ‚|d ˆ d ksŽJ ‚|d ˆ d ks¢J ‚tt‡ fdd„ƒ |  tddg¡}ˆ | |  td ttd g¡ksèJ ‚|| |  td ttd g¡ksJ ‚ˆ  |  dt td  g¡ks2J ‚ˆ | |  dt ttd g¡ksXJ ‚ˆ |ksfJ ‚|  tttg¡t  t¡ t¡ g d¢ks”J ‚t jtd	d
}| d¡ tg¡| t¡ dgksÊJ ‚d S )Né   é   é   r   c                      s   ˆ d S )Nr   © r   ©Úer   úQ/var/www/auris/lib/python3.9/site-packages/sympy/polys/agca/tests/test_modules.pyÚ<lambda>   ó    z(test_FreeModuleElement.<locals>.<lambda>éÿÿÿÿ©r   r   r   r	   ©Úorder)r   Úold_poly_ringr   Úfree_moduleÚconvertÚlistr   Ú
IndexError)ÚMÚfÚgÚRr   r   r   Útest_FreeModuleElement
   s"    2$&$&.r&   c                     sv  t t t¡dƒ‰ ˆ t t t¡dƒks(J ‚ˆ t t t¡dƒks@J ‚ˆ t t t¡dƒksXJ ‚t tjtdddƒ} tdgˆ v s|J ‚tgˆ vsŠJ ‚dtgˆ vsšJ ‚dtd  dgˆ vs²J ‚ˆ  ttd d g¡}t t¡ t¡}|||d d gksðJ ‚|ttd d gks
J ‚d| dt dtd  d gks0J ‚|d dt dtd  d gksVJ ‚|d td td d d gks|J ‚t| td td t gksžJ ‚|t td td t gksÀJ ‚|| td td t gksâJ ‚|| td td t gksJ ‚tdg| v sJ ‚tg| vs&J ‚dtg| vs8J ‚dtd  dg| v sRJ ‚|  ttd d g¡}tjtdd t¡}|||d d gks–J ‚|ttd d gks°J ‚d| dt dtd  d gksÖJ ‚|d dt dtd  d gksüJ ‚|d td td d d gks"J ‚t| td td t gksDJ ‚|t td td t gksfJ ‚|dt  tdt  td d dt  gks˜J ‚|| td td t gksºJ ‚|| td td t gksÜJ ‚t t tt¡dƒ‰ˆ |¡ˆ ttd d g¡ksJ ‚ˆ d¡r$J ‚ˆ ¡ r2J ‚tt	dd„ ƒ tt	d	d„ ƒ tt
‡ fd
d„ƒ tt
‡fdd„ƒ d S )Nr   r   r	   r   r   r   c                   S   s   t  t¡ d¡S ©Nr   )r
   r   r   r   r   r   r   r   r   P   r   z!test_FreeModule.<locals>.<lambda>c                   S   s
   t tdƒS r'   )r   r
   r   r   r   r   r   Q   r   c                      s    ˆ   t t¡ d¡  g d¢¡¡S )Nr   ©r   r   r   )r   r   r   r   r   r   )ÚM1r   r   r   R   s   ÿc                      s
   ˆ   d¡S ©Nr   )r   r   )ÚM3r   r   r   T   r   )r   r   r   r   r   r   Úis_submoduleÚis_zeror   ÚNotImplementedErrorr   )ÚM2r   ÚXr   )r)   r+   r   Útest_FreeModule    sX    &&&""""&&&""2""&r1   c                  C   st   t ttdƒ} t ttdƒ}| t ttdƒks,J ‚| t ttdƒkdu sDJ ‚| |ksPJ ‚| dƒdks`J ‚|dƒdkspJ ‚d S )NFr(   )r   )é   ©r   r   )r   r3   )r   r   r   r	   )Zo1Zo2r   r   r   Útest_ModuleOrderW   s    r4   c                     s|  t  tt¡‰ˆ d¡} |  g d¢g d¢g d¢¡}|  td td  ddgttdg¡‰ | |ks`J ‚|| kslJ ‚| ˆ ksxJ ‚ˆ | ks„J ‚|ˆ ksJ ‚ˆ |ksœJ ‚|| j|  ¡ Ž ks²J ‚| ¡ s¾J ‚ˆ  ¡ rÊJ ‚| ¡ rÖJ ‚ˆ  ¡ râJ ‚| ¡  ¡ sòJ ‚ˆ  	td td  t dt dg¡sJ ‚ˆ  	td td  t dt dg¡rFJ ‚ˆ  	td dtt  t g¡sjJ ‚|  dt ddg¡|  g d¢¡kr’J ‚|  g d¢g d¢¡ 
|  g d	¢¡¡| ksÀJ ‚ˆ  d¡rÐJ ‚|  td td  ddg¡}ˆ  |¡}|j| u sJ ‚|jˆ u sJ ‚tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ |  tttg¡| jtttgddksxJ ‚d S )Nr   ©r   r   r   ©r   r   r   r(   r   r   r   ©r   r   r   ©r   r   r   c                      s   ˆ   g d¢¡S ©Nr5   ©Ú	submoduler   ©r"   r   r   r   „   r   z/test_SubModulePolyRing_global.<locals>.<lambda>c                      s
   ˆ   d¡S r*   )Úunionr   r<   r   r   r   …   r   c                      s   ˆ   ˆ d¡ tg¡¡S r*   )r=   r   r;   r   r   ©r"   r%   r   r   r   †   r   r	   r   )r   r   r   r   r   r;   ÚbasisÚis_full_moduler-   Úcontainsr=   r,   r   Úmoduler   Ú
ValueErrorÚ	TypeError)ÚFÚFdÚmÚnr   r>   r   Útest_SubModulePolyRing_globalc   s<    
$**$(.
rI   c               	      sú  t jtttd} |  d¡}| dt ddgdt ddt  dgg d¢¡}| td td  ddgttdg¡‰ ||ksxJ ‚||ks„J ‚|ˆ ksJ ‚ˆ |ksœJ ‚|ˆ ks¨J ‚ˆ |ks´J ‚||j| ¡ Ž ksÊJ ‚| ¡ sÖJ ‚ˆ  ¡ râJ ‚| 	¡ rîJ ‚ˆ  	¡ rúJ ‚| ¡  	¡ sJ ‚ˆ  
td td  t dt dg¡s6J ‚ˆ  
td td  t dt dg¡r`J ‚ˆ  
td dtt  t g¡s„J ‚| dt ddg¡| g d¢¡ks¬J ‚| g d¢g d¢¡ | dddtt  g¡¡|ksäJ ‚tt‡ fd	d
„ƒ d S )Nr   r   r   r   r   r(   r5   r7   c                      s   ˆ   g d¢¡S r9   r:   r   r<   r   r   r   §   r   z.test_SubModulePolyRing_local.<locals>.<lambda>)r   r   r   r   r	   r   r;   r?   r@   r-   rA   r=   r   rC   )r%   rE   rF   r   r<   r   Útest_SubModulePolyRing_local‹   s8    
.$**$(ÿÿÿ
rJ   c                     sn  t  ttt¡} |  d¡‰ ‡ fdd„}|ttgtƒs6J ‚|ttgtt ƒsLJ ‚|ttgdƒr^J ‚|ttgtƒrpJ ‚|td t td t gtt ƒs–J ‚|tt t tt tt  tt  tt t gtd ƒrÒJ ‚|tt t tt tt  tt  tt t gtd ƒsJ ‚|tt t tt tt  tt  tt t gtd ƒsNJ ‚|tt t tt tt  tt  tt t gttd  ƒrJ ‚|tt t tt tt  tt  tt t gtd td  dt t t  ƒsæJ ‚|tt t tt tt  tt  tt t gtt t ƒs(J ‚|tdt t ddt  gdƒsNJ ‚|td td  td td  td td  td t td t  td t  gtd ƒs®J ‚|td td  td td  td td  td t td t  td t  gtd td  ƒrJ ‚|tdt t  tdt  gtƒr>J ‚|tdt t  tdt  gtt ƒrjJ ‚d S )	Nr   c                    s   ˆ j dd„ | D ƒŽ  |g¡S )Nc                 S   s   g | ]
}|g‘qS r   r   ©Ú.0r$   r   r   r   Ú
<listcomp>¯   r   zKtest_SubModulePolyRing_nontriv_global.<locals>.contains.<locals>.<listcomp>©r;   rA   ©ÚIr#   ©rE   r   r   rA   ®   s    z7test_SubModulePolyRing_nontriv_global.<locals>.containsr   r   é   r2   é   )r   r   r   r   r   r   ©r%   rA   r   rQ   r   Ú%test_SubModulePolyRing_nontriv_globalª   s2    
&<>>BVB&Nþ
Nþ
(rU   c                     s,  t jttttd} |  d¡‰ ‡ fdd„}|ttgtƒs:J ‚|ttgtt ƒsPJ ‚|ttgdƒrbJ ‚|ttgtƒrtJ ‚|td t td t gtt ƒsšJ ‚|tt t tt tt  tt  tt t gtd ƒrÖJ ‚|tdt t  tdt  gtƒsüJ ‚|tdt t  tdt  gtt ƒs(J ‚d S )Nr   r   c                    s   ˆ j dd„ | D ƒŽ  |g¡S )Nc                 S   s   g | ]
}|g‘qS r   r   rK   r   r   r   rM   Î   r   zJtest_SubModulePolyRing_nontriv_local.<locals>.contains.<locals>.<listcomp>rN   rO   rQ   r   r   rA   Í   s    z6test_SubModulePolyRing_nontriv_local.<locals>.containsr   )r   r   r   r   r   r	   r   rT   r   rQ   r   Ú$test_SubModulePolyRing_nontriv_localÉ   s    
&<&rV   c            	      C   sV  t  ttt¡} |  d¡ tt gtt gtt g¡}|  d¡ dtt gtt dg¡}| ¡ |ksfJ ‚|tt t gf }|  d¡ tddgdtdgddtg¡}| ¡ |ks°J ‚|  d¡}|j| ¡ Ž  ¡ | ¡ ksØJ ‚t  ttt¡tt t g }| d¡ tt gtt gtt g¡}| d¡ tddgdtdgddtg¡}| ¡ |ksRJ ‚d S )Nr   r   r   )	r   r   r   r   r   r   r;   Zsyzygy_moduler?   )	r%   r"   ÚSr/   ÚS2rE   ZR2r+   ZS3r   r   r   Útest_syzygyÚ   s    &"&
&&rY   c                     s,  t jtdd} |  d¡ dt dgddg¡‰ ˆ  ttg¡|  tddƒ¡|  td ¡gks\J ‚tt	‡ fdd„ƒ |  d¡tdgddgf ‰ ˆ  dtg¡}| ddg¡|  d	td  ¡gks¼J ‚t  tt
¡td t
d  g } |  d¡‰ ˆ  tdgdt
g¡}| td td g¡|  t¡|  t
¡gks(J ‚d S )
Nr	   r   r   r   r   rR   c                      s   ˆ   ddg¡S )Nr   r   )Úin_terms_of_generatorsr   r<   r   r   r   ò   r   z-test_in_terms_of_generators.<locals>.<lambda>éþÿÿÿ)r   r   r   r   r;   rZ   r   r   r   rC   r   )r%   ZSMr   r<   r   Útest_in_terms_of_generatorsí   s&    ÿÿ&
ÿÿr\   c                     sÜ  t  t¡} |  d¡}| dttd g¡}|| ‰ˆ td ddg¡}ˆ td td t td td  g¡dkstJ ‚|td ddg|   krÊ| td ddg¡|   krÊˆ | td ddg¡¡ksÐn J ‚ˆ td d dt d td g¡|dtdg   kr>|ˆ dtdg¡   kr>|| dtdg¡ ksDn J ‚ˆ td d dtd g¡|dtdg   krª|ˆ dtdg¡   krª|| dtdg¡ ks°n J ‚ˆ g d¢¡ˆ td ddg¡|   krtd ddg|   kr| td ddg¡| ksn J ‚ˆ td td  dt d dg¡dt |   kr–|  dt ¡|   kr–|dt    kr–||  dt ¡ ksœn J ‚| td  ddgks¸J ‚ttdg| }ˆ g d¢¡|t   krö||  t¡ ksün J ‚|ddt dtd  fd	g ‰|  d¡‰ ˆ dtgg ‰| dttd gg d
¢¡| }tt‡ ‡fdd„ƒ tt‡‡fdd„ƒ tt‡‡fdd„ƒ ˆ ˆ dttd g¡¡dtdgks¶J ‚ˆ | g d¢¡¡g d¢ksØJ ‚d S )Nr   r   r   r   )r   r   r   rR   r[   )r   r   r   r8   r5   c                      s   ˆ  ˆ   dtg¡¡S r*   ©r   r   r   )ÚGr"   r   r   r     r   z,test_QuotientModuleElement.<locals>.<lambda>c                      s   ˆ   ˆ  dtg¡¡S r*   r]   r   )r"   r+   r   r   r     r   c                      s   ˆ   ˆ  dttg¡¡S r*   r]   r   )r"   r/   r   r   r     r   ©r   r   r   )r   r   r   r   r;   r   r   r   )r%   rE   ÚNr   r#   ZM4r   )r^   r"   r/   r+   r   Útest_QuotientModuleElementÿ   sV    

08ÿ8ÿ
ÿ0ÿ
ÿ,ÿ
ÿ6ÿ

ÿ
ÿ6
*ra   c                     s~  t  t¡‰ˆ d¡‰ ˆ  dttd g¡‰ˆ ˆ ‰ˆˆ ks<J ‚ˆˆksHJ ‚ˆˆ dttd fg ksdJ ‚ˆ ¡ rpJ ‚ˆ ˆ  ¡   ¡ s„J ‚ˆ  dttd gg d¢¡ˆ } | ˆ dttd g¡ks¾J ‚| ˆ g d¢¡ksÔJ ‚| ˆksàJ ‚ˆ | ¡sîJ ‚|  ¡ rúJ ‚t	t
‡ ‡fdd„ƒ t	t
‡ ‡fdd„ƒ t	t
‡ ‡fd	d„ƒ t	t‡ ‡fd
d„ƒ ˆ g d¢g }| g d¢g d¢¡}||kszJ ‚d S )Nr   r   r   r_   )r   r   r   c                      s   ˆˆ  S ©Nr   r   ©rE   r`   r   r   r   5  r   z%test_QuotientModule.<locals>.<lambda>c                      s   ˆ   g d¢¡ˆ S )Nr_   r:   r   rc   r   r   r   6  r   c                      s   ˆ  d¡ˆ  S r'   )r   r   )rE   r%   r   r   r   7  r   c                      s   ˆ   ˆ  dttd g¡¡S )Nr   r   r]   r   )rE   r"   r   r   r   8  r   r   r5   r7   )r   r   r   r   r;   r-   r?   r,   r@   r   rC   r   )ZSQr)   r/   r   )rE   r"   r`   r%   r   Útest_QuotientModule"  s,    

rd   c                  C   s  t jttdtfdtffdtd d g } |  d¡}||  d¡ksFJ ‚|t  t¡ d¡ks^J ‚||  d¡kspJ ‚tdg|v s€J ‚tg|vsŽJ ‚d|  t¡d  dg|v s¬J ‚dddt  g|v sÄJ ‚ddt g|vsØJ ‚| td tg¡dtgksöJ ‚|  d¡}| td ddgg d	¢g d
¢¡}| td td  ddgttdg¡}||ksRJ ‚||ks`J ‚||ksnJ ‚||ks|J ‚||ksŠJ ‚||ks˜J ‚||j| ¡ Ž ks°J ‚| ¡ s¾J ‚| ¡ rÌJ ‚| 	¡ rÚJ ‚| 	¡ rèJ ‚| ¡  	¡ súJ ‚| 
td td  t td  t dg¡s*J ‚| 
td td  t dt dg¡rTJ ‚| 
td dtt  t g¡sxJ ‚| tddg¡| g d¢¡ksœJ ‚| tddg¡| g d¢¡krÀJ ‚| g d¢g d¢¡ | g d¢¡¡|ksîJ ‚| d¡rþJ ‚d S )Nr   r	   r   r   r   r   r   r   r6   r(   r5   r7   r8   )r   r   r   r   r   r   r;   r?   r@   r-   rA   r=   r,   )r%   r)   rE   rF   r"   r   r   r   Útest_ModulesQuotientRing?  sB    *

 $0*$$$.re   c                  C   s²   t  t¡} |  d¡}| tdgdtg¡}| td dgdtd g¡}|  t¡}|| ||   kr†|  kr†t|   kr†|t ksŒn J ‚|| |  kr¨t| ks®n J ‚d S )Nr   r   )r   r   r   r   r;   Úideal)r%   r"   ZS1rX   rP   r   r   r   Útest_module_mulj  s    


>rg   c            	      C   s:  t  tt¡ d¡} |  ttgtdg¡}|  dtd gtdgttg¡}|  ttgtd t td gtt t td g¡}|j|dd\}}}|| |¡  kr¤|ksªn J ‚t|jƒD ]X\}}|t	dd„ t
|| |jƒD ƒƒ  krt	dd„ t
|| |jƒD ƒƒks´n J ‚q´|  ttg¡ |  ttg¡¡ ¡ s6J ‚d S )	Nr   r   r   T©Z	relationsc                 s   s   | ]\}}|| V  qd S rb   r   ©rL   Úcr   r   r   r   Ú	<genexpr>~  r   z$test_intersection.<locals>.<genexpr>c                 s   s   | ]\}}|| V  qd S rb   r   )rL   Údr   r   r   r   rk     r   )r   r   r   r   r   r;   Z	intersectÚ	enumerateÚgensÚsumÚzipr-   )	rE   r)   r/   rP   ZI1Zrel1Zrel2Úir$   r   r   r   Útest_intersectionu  s    2 (ÿrr   c                  C   s\  t  ttt¡} |  d¡}| tt tt gtt tt g¡ | ttgttg¡¡t  ttt¡ td td  tt td   ¡ks†J ‚| ttg¡ | ¡ ¡ 	¡ s¦J ‚| td td gtd td g¡}| tt tt g¡}|j|dd\}}||  td tt ¡ksJ ‚t
|jƒD ]<\}}||jd  tdd„ t|| |jƒD ƒƒksJ ‚qd S )Nr   Trh   r   c                 s   s   | ]\}}|| V  qd S rb   r   ri   r   r   r   rk   ‘  r   z test_quotient.<locals>.<genexpr>)r   r   r   r   r   r   r;   Zmodule_quotientrf   Zis_whole_ringrm   rn   ro   rp   )r%   rE   r"   r`   ÚqÚrelrq   r$   r   r   r   Útest_quotient„  s    
$ÿ.ÿ $ru   c                  C   s€   t  ttt¡ d¡ td tdgtt ttd g¡} | jdd\}}t|ƒD ].\}}|t	dd„ t
|| | jƒD ƒƒksLJ ‚qLd S )Nr   r   r   T)Úextendedc                 s   s   | ]\}}|| V  qd S rb   r   )rL   rj   Úgenr   r   r   rk   ˜  r   z*test_groebner_extendend.<locals>.<genexpr>)r   r   r   r   r   r   r;   Z_groebner_vecrm   ro   rp   rn   )r"   r^   r%   rq   r$   r   r   r   Útest_groebner_extendend”  s    4rx   N)$Ú__doc__Zsympy.polys.agca.modulesr   r   r   Zsympy.polysr   r   r   r   r	   r
   Z	sympy.abcr   r   r   Zsympy.testing.pytestr   Zsympy.core.numbersr   r&   r1   r4   rI   rJ   rU   rV   rY   r\   ra   rd   re   rg   rr   ru   rx   r   r   r   r   Ú<module>   s*    7(#+