o
    GZŽ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s3J ‚|d ˆ d ks=J ‚|d ˆ d ksGJ ‚|d ˆ d ksQJ ‚tt‡ fdd„ƒ |  tddg¡}ˆ | |  td ttd g¡kstJ ‚|| |  td ttd g¡ks†J ‚ˆ  |  dt td  g¡ks—J ‚ˆ | |  dt ttd g¡ks©J ‚ˆ |ks¯J ‚|  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   úR/var/www/auris/lib/python3.10/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                     sf  t t t¡dƒ‰ ˆ t t t¡dƒksJ ‚ˆ t t t¡dƒks J ‚ˆ t t t¡dƒks,J ‚t tjtdddƒ} tdgˆ v s>J ‚tgˆ vsEJ ‚dtgˆ vsMJ ‚dtd  dgˆ vsYJ ‚ˆ  ttd d g¡}t t¡ t¡}|||d d gksxJ ‚|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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sJ ‚dtd  dg| v s!J ‚|  ttd d g¡}tjtdd t¡}|||d d gksCJ ‚|ttd d gksPJ ‚d| dt dtd  d gkscJ ‚|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 ‚|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 ‚ˆ ¡ rJ ‚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   s    z!test_FreeModule.<locals>.<lambda>c                   S   s
   t tdƒS r'   )r   r
   r   r   r   r   r   Q   ó   
 c                      s    ˆ   t t¡ d¡  g d¢¡¡S )Nr   ©r   r   r   )r   r   r   r   r   r   )ÚM1r   r   r   R   s    
ÿc                      ó
   ˆ   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""&r3   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 s"J ‚| |ks(J ‚| dƒdks0J ‚|dƒdks8J ‚d S )NFr)   )r   )é   ©r   r   )r   r5   )r   r   r   r	   )Zo1Úo2r   r   r   Útest_ModuleOrderW   s   r7   c                     sn  t  tt¡‰ˆ d¡} |  g d¢g d¢g d¢¡}|  td td  ddgttdg¡‰ | |ks0J ‚|| ks6J ‚| ˆ ks<J ‚ˆ | ksBJ ‚|ˆ ksHJ ‚ˆ |ksNJ ‚|| j|  ¡ Ž ksYJ ‚| ¡ s_J ‚ˆ  ¡ reJ ‚| ¡ rkJ ‚ˆ  ¡ rqJ ‚| ¡  ¡ syJ ‚ˆ  	td td  t dt dg¡sJ ‚ˆ  	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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s5J ‚d S )Nr   ©r   r   r   ©r   r   r   r)   r   r   r   ©r   r   r   ©r   r   r   c                      ó   ˆ   g d¢¡S ©Nr8   ©Ú	submoduler   ©r"   r   r   r   „   ó    z/test_SubModulePolyRing_global.<locals>.<lambda>c                      r+   r,   )Úunionr   r@   r   r   r   …   r(   c                      s   ˆ   ˆ d¡ tg¡¡S r,   )rB   r   r?   r   r   ©r"   r%   r   r   r   †   s    r	   r   )r   r   r   r   r   r?   ÚbasisÚis_full_moduler/   ÚcontainsrB   r.   r   Úmoduler   Ú
ValueErrorÚ	TypeError)ÚFÚFdÚmÚnr   rC   r   Útest_SubModulePolyRing_globalc   s<   
$(("&,
.rN   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s<J ‚||ksBJ ‚|ˆ ksHJ ‚ˆ |ksNJ ‚|ˆ ksTJ ‚ˆ |ksZJ ‚||j| ¡ Ž kseJ ‚| ¡ skJ ‚ˆ  ¡ rqJ ‚| 	¡ rwJ ‚ˆ  	¡ r}J ‚| ¡  	¡ s…J ‚ˆ  
td td  t dt dg¡s™J ‚ˆ  
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)   r8   r:   c                      r<   r=   r>   r   r@   r   r   r   §   rA   z.test_SubModulePolyRing_local.<locals>.<lambda>)r   r   r   r   r	   r   r?   rD   rE   r/   rF   rB   r   rH   )r%   rJ   rK   r   r@   r   Útest_SubModulePolyRing_local‹   s4   
.$(("&ÿÿrO   c                     sf  t  ttt¡} |  d¡‰ ‡ fdd„}|ttgtƒsJ ‚|ttgtt ƒs&J ‚|ttgdƒr/J ‚|ttgtƒr8J ‚|td t td t gtt ƒsKJ ‚|tt t tt tt  tt  tt t gtd ƒriJ ‚|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 ƒs¥J ‚|tt t tt tt  tt  tt t gttd  ƒrÅJ ‚|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ƒ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 ƒsSJ ‚|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 ƒr±J ‚d S )	Nr   c                    ó   ˆ j dd„ | D ƒŽ  |g¡S )Nc                 S   ó   g | ]}|g‘qS r   r   ©Ú.0r$   r   r   r   Ú
<listcomp>¯   ó    zKtest_SubModulePolyRing_nontriv_global.<locals>.contains.<locals>.<listcomp>©r?   rF   ©ÚIr#   ©rJ   r   r   rF   ®   ó   z7test_SubModulePolyRing_nontriv_global.<locals>.containsr   r   é   r4   é   )r   r   r   r   r   r   ©r%   rF   r   rY   r   Ú%test_SubModulePolyRing_nontriv_globalª   s2   
&<<<@TB&N
þN
þ(0r^   c                     s*  t jttttd} |  d¡‰ ‡ fdd„}|ttgtƒsJ ‚|ttgtt ƒs(J ‚|ttgdƒr1J ‚|ttgtƒr:J ‚|td t td t gtt ƒsMJ ‚|tt t tt tt  tt  tt t gtd ƒrkJ ‚|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                    rP   )Nc                 S   rQ   r   r   rR   r   r   r   rT   Î   rU   zJtest_SubModulePolyRing_nontriv_local.<locals>.contains.<locals>.<listcomp>rV   rW   rY   r   r   rF   Í   rZ   z6test_SubModulePolyRing_nontriv_local.<locals>.containsr   )r   r   r   r   r   r	   r   r]   r   rY   r   Ú$test_SubModulePolyRing_nontriv_localÉ   s   
&<&.r_   c            	      C   sT  t  ttt¡} |  d¡ tt gtt gtt g¡}|  d¡ dtt gtt dg¡}| ¡ |ks3J ‚|tt t gf }|  d¡ tddgdtdgddtg¡}| ¡ |ksXJ ‚|  d¡}|j| ¡ Ž  ¡ | ¡ kslJ ‚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s¨J ‚d S )Nr   r   r   )	r   r   r   r   r   r   r?   Zsyzygy_modulerD   )	r%   r"   ÚSr1   ÚS2rJ   ZR2r-   ZS3r   r   r   Útest_syzygyÚ   s   &"&
&&rb   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   r[   c                      s   ˆ   ddg¡S )Nr   r   )Úin_terms_of_generatorsr   r@   r   r   r   ò   rA   z-test_in_terms_of_generators.<locals>.<lambda>éþÿÿÿ)r   r   r   r   r?   rc   r   r   r   rH   r   )r%   ZSMr   r@   r   Útest_in_terms_of_generatorsí   s&   ÿÿ&
ÿÿre   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s:J ‚|td ddg|   krf| td ddg¡|   krfˆ | td ddg¡¡ksiJ ‚ 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s¡J ‚ 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ÕJ ‚ J ‚ˆ g d¢¡ˆ td ddg¡|   krtd ddg|   kr| td ddg¡| ksJ ‚ J ‚ˆ td td  dt d dg¡dt |   krJ|  dt ¡|   krJ|dt    krJ||  dt ¡ ksMJ ‚ J ‚| td  ddgks[J ‚ttdg| }ˆ g d¢¡|t   kr{||  t¡ ks~J ‚ 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   r[   rd   )r   r   r   r;   r8   c                      s   ˆ  ˆ   dtg¡¡S r,   ©r   r   r   )ÚGr"   r   r   r     ó    z,test_QuotientModuleElement.<locals>.<lambda>c                      s   ˆ   ˆ  dtg¡¡S r,   rf   r   )r"   r-   r   r   r     rh   c                      s   ˆ   ˆ  dttg¡¡S r,   rf   r   )r"   r1   r   r   r     s    ©r   r   r   )r   r   r   r   r?   r   r   r   )r%   rJ   ÚNr   r#   ZM4r   )rg   r"   r1   r-   r   Útest_QuotientModuleElementÿ   sV   

08ÿ6ÿÿ.ÿÿ,
ÿÿ6
ÿ

ÿÿ8
*&rk   c                     s|  t  t¡‰ˆ d¡‰ ˆ  dttd g¡‰ˆ ˆ ‰ˆˆ ksJ ‚ˆˆks$J ‚ˆˆ dttd fg ks2J ‚ˆ ¡ r8J ‚ˆ ˆ  ¡   ¡ sBJ ‚ˆ  dttd gg d¢¡ˆ } | ˆ dttd g¡ks_J ‚| ˆ g d¢¡ksjJ ‚| ˆkspJ ‚ˆ | ¡swJ ‚|  ¡ 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s¼J ‚d S )Nr   r   r   ri   )r   r   r   c                      s   ˆˆ  S ©Nr   r   ©rJ   rj   r   r   r   5  r   z%test_QuotientModule.<locals>.<lambda>c                      s   ˆ   g d¢¡ˆ S )Nri   r>   r   rm   r   r   r   6  rU   c                      s   ˆ  d¡ˆ  S r'   )r   r   )rJ   r%   r   r   r   7  rA   c                      s   ˆ   ˆ  dttd g¡¡S )Nr   r   rf   r   )rJ   r"   r   r   r   8  s    r   r8   r:   )r   r   r   r   r?   r/   rD   r.   rE   r   rH   r   )ZSQr*   r1   r   )rJ   r"   rj   r%   r   Útest_QuotientModule"  s,   

rn   c                  C   sê  t jttdtfdtffdtd d g } |  d¡}||  d¡ks#J ‚|t  t¡ d¡ks/J ‚||  d¡ks8J ‚tdg|v s@J ‚tg|vsGJ ‚d|  t¡d  dg|v sVJ ‚dddt  g|v sbJ ‚ddt g|vslJ ‚| 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s¨J ‚||ks®J ‚||ks´J ‚||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¡rJ ‚| 
td dtt  t g¡s0J ‚| tddg¡| g d¢¡ksBJ ‚| tddg¡| g d¢¡krTJ ‚| g d¢g d¢¡ | g d¢¡¡|kskJ ‚| d¡rsJ ‚d S )Nr   r	   r   r   r   r   r   r   r9   r)   r8   r:   r;   )r   r   r   r   r   r   r?   rD   rE   r/   rF   rB   r.   )r%   r*   rJ   rK   r"   r   r   r   Útest_ModulesQuotientRing?  sB   *

 $0*$$$.ro   c                  C   s¶   t  t¡} |  d¡}| tdgdtg¡}| td dgdtd g¡}|  t¡}|| ||   krD|  krDt|   krD|t ksGJ ‚ J ‚|| |  krVt| ksYJ ‚ J ‚d S )Nr   r   )r   r   r   r   r?   Úideal)r%   r"   ZS1ra   rX   r   r   r   Útest_module_mulj  s   


@(rq   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rS|ksVJ ‚ J ‚t|jƒD ],\}}|t	dd„ t
|| |jƒD ƒƒ  kr„t	dd„ t
|| |jƒD ƒƒks‡J ‚ J ‚q[|  ttg¡ |  ttg¡¡ ¡ s›J ‚d S )	Nr   r   r   T©Z	relationsc                 s   ó    | ]	\}}|| V  qd S rl   r   ©rS   Úcr   r   r   r   Ú	<genexpr>~  ó   € z$test_intersection.<locals>.<genexpr>c                 s   rs   rl   r   )rS   Údr   r   r   r   rv     rw   )r   r   r   r   r   r?   Z	intersectÚ	enumerateÚgensÚsumÚzipr/   )	rJ   r*   r1   rX   ZI1Zrel1Zrel2Úir$   r   r   r   Útest_intersectionu  s   2"&ÿ*r~   c                  C   sV  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sCJ ‚| ttg¡ | ¡ ¡ 	¡ sSJ ‚| 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   Trr   r   c                 s   rs   rl   r   rt   r   r   r   rv   ‘  rw   z test_quotient.<locals>.<genexpr>)r   r   r   r   r   r   r?   Zmodule_quotientrp   Zis_whole_ringry   rz   r{   r|   )r%   rJ   r"   rj   ÚqÚrelr}   r$   r   r   r   Útest_quotient„  s   
$ÿ.ÿ $2ÿr   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s=J ‚q&d S )Nr   r   r   T)Úextendedc                 s   rs   rl   r   )rS   ru   Úgenr   r   r   rv   ˜  rw   z*test_groebner_extendend.<locals>.<genexpr>)r   r   r   r   r   r   r?   Z_groebner_vecry   r{   r|   rz   )r"   rg   r%   r}   r$   r   r   r   Útest_groebner_extendend”  s
   4(ÿr„   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&   r3   r7   rN   rO   r^   r_   rb   re   rk   rn   ro   rq   r~   r   r„   r   r   r   r   Ú<module>   s,     7(#+