o
    ŗ„gš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   śZ/var/www/visachat/venv/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	   )Śo1Śo2r   r   r   Śtest_ModuleOrderW   s   r8   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”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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 ©Nr9   ©Ś	submoduler   ©r"   r   r   r      ó    z/test_SubModulePolyRing_global.<locals>.<lambda>c                      r+   r,   )Śunionr   rA   r   r   r      r(   c                      s       d” tg””S r,   )rC   r   r@   r   r   ©r"   r%   r   r   r      s    r	   r   )r   r   r   r   r   r@   ŚbasisŚis_full_moduler/   ŚcontainsrC   r.   r   Śmoduler   Ś
ValueErrorŚ	TypeError)ŚFŚFdŚmŚnr   rD   r   Śtest_SubModulePolyRing_globalc   s<   
$(("&,
.rO   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)   r9   r;   c                      r=   r>   r?   r   rA   r   r   r   §   rB   z.test_SubModulePolyRing_local.<locals>.<lambda>)r   r   r   r   r	   r   r@   rE   rF   r/   rG   rC   r   rI   )r%   rK   rL   r   rA   r   Śtest_SubModulePolyRing_local   s4   
.$(("&’’rP   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@   rG   ©ŚIr#   ©rK   r   r   rG   ®   ó   z7test_SubModulePolyRing_nontriv_global.<locals>.containsr   r   é   r4   é   )r   r   r   r   r   r   ©r%   rG   r   rZ   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                    rQ   )Nc                 S   rR   r   r   rS   r   r   r   rU   Ī   rV   zJtest_SubModulePolyRing_nontriv_local.<locals>.contains.<locals>.<listcomp>rW   rX   rZ   r   r   rG   Ķ   r[   z6test_SubModulePolyRing_nontriv_local.<locals>.containsr   )r   r   r   r   r   r	   r   r^   r   rZ   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@   Śsyzygy_modulerE   )	r%   r"   ŚSr1   ŚS2rK   ŚR2r-   ŚS3r   r   r   Śtest_syzygyŚ   s   &"&
&&rf   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   rA   r   r   r   ņ   rB   z-test_in_terms_of_generators.<locals>.<lambda>éž’’’)r   r   r   r   r@   rg   r   r   r   rI   r   )r%   ŚSMr   rA   r   Śtest_in_terms_of_generatorsķ   s&   ’’&
’’rj   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\   rh   )r   r   r   r<   r9   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,   rk   r   )r"   r-   r   r   r     rm   c                      s        dttg””S r,   rk   r   )r"   r1   r   r   r     s    ©r   r   r   )r   r   r   r   r@   r   r   r   )r%   rK   ŚNr   r#   ŚM4r   )rl   r"   r1   r-   r   Śtest_QuotientModuleElement’   sV   

08’6’’.’’,
’’6
’

’’8
*&rq   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   rn   )r   r   r   c                      s     S ©Nr   r   ©rK   ro   r   r   r   5  r   z%test_QuotientModule.<locals>.<lambda>c                      s      g d¢” S )Nrn   r?   r   rs   r   r   r   6  rV   c                      s     d”  S r'   )r   r   )rK   r%   r   r   r   7  rB   c                      s        dttd g””S )Nr   r   rk   r   )rK   r"   r   r   r   8  s    r   r9   r;   )r   r   r   r   r@   r/   rE   r.   rF   r   rI   r   )ŚSQr*   r1   r   )rK   r"   ro   r%   r   Śtest_QuotientModule"  s,   

ru   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   r:   r)   r9   r;   r<   )r   r   r   r   r   r   r@   rE   rF   r/   rG   rC   r.   )r%   r*   rK   rL   r"   r   r   r   Śtest_ModulesQuotientRing?  sB   *

 $0*$$$.rv   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"   ŚS1rc   rY   r   r   r   Śtest_module_mulj  s   


@(ry   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©Ś	relationsc                 s   ó    | ]	\}}|| V  qd S rr   r   ©rT   Ścr   r   r   r   Ś	<genexpr>~  ó    z$test_intersection.<locals>.<genexpr>c                 s   r|   rr   r   )rT   Śdr   r   r   r   r     r   )r   r   r   r   r   r@   Ś	intersectŚ	enumerateŚgensŚsumŚzipr/   )	rK   r*   r1   rY   ŚI1Śrel1Ś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   Trz   r   c                 s   r|   rr   r   r}   r   r   r   r     r   z test_quotient.<locals>.<genexpr>)r   r   r   r   r   r   r@   Śmodule_quotientrw   Śis_whole_ringr   r   r   r   )r%   rK   r"   ro   Ś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   r|   rr   r   )rT   r~   Śgenr   r   r   r     r   z*test_groebner_extendend.<locals>.<genexpr>)r   r   r   r   r   r   r@   Ś_groebner_vecr   r   r   r   )r"   rl   r%   r   r$   r   r   r   Śtest_groebner_extendend  s
   4(’r   N)$Ś__doc__Śsympy.polys.agca.modulesr   r   r   Śsympy.polysr   r   r   r   r	   r
   Ś	sympy.abcr   r   r   Śsympy.testing.pytestr   Śsympy.core.numbersr   r&   r3   r8   rO   rP   r_   r`   rf   rj   rq   ru   rv   ry   r   r   r   r   r   r   r   Ś<module>   s,     7(#+