U
    ZÊ¹j˜H  ã                   @   sœ  d Z ddlmZmZmZmZmZmZmZm	Z	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mZ ddlmZmZ ddl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$„ Z0ed%d&„ ƒZ1d'd(„ Z2d)d*„ Z3d+d,„ Z4d-d.„ Z5d/d0„ Z6d1d2„ Z7d3d4„ Z8d5d6„ Z9d7d8„ Z:d9d:„ Z;d;d<„ Z<d=d>„ Z=d?d@„ Z>dAdB„ Z?dCdD„ Z@dES )FzTests for Groebner bases. é    )ÚgroebnerÚsigÚsig_keyÚlbpÚlbp_keyÚcritical_pairÚcp_keyÚis_rewritable_or_comparableÚSignÚPolynÚNumÚs_polyÚ	f5_reduceÚgroebner_lcmÚgroebner_gcdÚis_groebnerÚ
is_reduced)Ú_representing_matrices)ÚlexÚgrlex)ÚringÚxring)ÚZZÚQQ)Úslow)Ú
polyconfigc                  C   sz  t dttƒ\} }}|d d| |d   }|| d|d   d }t||g| ƒ||d tddƒ gksjt‚t dttƒ\} }}d|d  | |d  }d|d  ||  d }t||g| ƒ||d tddƒ gksÔt‚t dttƒ\} }}}||d  }||d  }t||g| ƒ||gk�st‚t dttƒ\} }}|d d| |  }|d | | d|d   }t||g| ƒ|d || tddƒ | |d  gk�s˜t‚t dttƒ\} }}}|d  | }|d  | }t||g| ƒ|d | || | || |d  |d |d  gk�st‚t dttƒ\} }}}|d  | }|d  | }t||g| ƒ|d |d  |d | || | || |d  gk�sˆt‚t dttƒ\} }}}|d  | }|d  | }t||g| ƒ|d | || |d  || | |d |d  gk�s t‚t dttƒ\} }}}|d  | }|d  | }t||g| ƒ|d  |d  |d | || |d  || | gk�szt‚t dttƒ\} }}}||d  }|d  | }t||g| ƒ||d  |d | gk�sÔt‚t dttƒ\} }}}||d  }|d  | }t||g| ƒ|d ||  || | | |d  gk�s>t‚t dttƒ\} }}}||d  }||d  }t||g| ƒ||d  ||d  gk�s–t‚t dttƒ\} }}}||d  }||d  }t||g| ƒ|d ||  || | | |d  gk�sþt‚t dttƒ\} }}}|d  | }||d  }t||g| ƒ|||  |d | gk�sXt‚t dttƒ\} }}}|d  | }||d  }t||g| ƒ|d  |d  || |d  |d | | ||  gk�sÒt‚t dttƒ\} }}}||d  }||d  }t||g| ƒ||d  ||d  gk�s*t‚t dttƒ\} }}}||d  }||d  }t||g| ƒ|d  |d  || |d  | ||  | |d  gk�s¤t‚t dttƒ\} }}}d|d  |d  d| |  d }|d |d  d }t||g| ƒ|d|d   d	|d
   d|d   d|  |d	 d|d   tddƒ|d   tddƒ|d   tddƒ gk�svt‚d S )Núx,yé   é   é   zy,xúx,y,zé   é   é   é   é   é   )r   r   r   r   ÚAssertionErrorr   )ÚRÚxÚyÚfÚgÚz© r.   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_groebnertools.pyÚ_do_test_groebner   sŽ    ((:HHHJ,<,<,L,N$.@þr0   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S ©NZ
buchberger©r   ©ÚconfigÚusingr0   r.   r.   r.   r/   Útest_groebner_buchberger   s    r6   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S ©NZf5br2   r3   r.   r.   r.   r/   Útest_groebner_f5bƒ   s    r8   c                  C   sl  t dttƒ\} }}}|d | d |d | d || | |d |  g}|tddƒ|d   tdd	ƒ|d
   tddƒ|d   tdd	ƒ|d   tddƒ|  tddƒ |td
dƒ|d   tddƒ|d
   tddƒ|d   tddƒ|d   tddƒ|  tddƒ |d d|d   d|d
   d|d   d|d   d|  d g}t|| ƒ|k�sht‚d S )Nr    r   r   r   é›   i  r$   ic  i±  r!   i®  ig  iÞ  é   é5   é[   éŸ   i  iƒ  i  i4  r%   r"   é)   éR   éY   é.   é   )r   r   r   r   r'   )r(   r)   r*   r-   ÚFÚGr.   r.   r/   Ú_do_test_benchmark_minpoly‡   s    6bbBþrE   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r1   ©r4   r5   rE   r.   r.   r.   r/   Ú!test_benchmark_minpoly_buchberger‘   s    rG   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r7   rF   r.   r.   r.   r/   Útest_benchmark_minpoly_f5b•   s    rH   c                     sL  t ddƒ‰ ddddddd	d
ddddddddddddddddg} tdd„ ˆ D ƒttƒ\}‰ ‡ fdd„| D ƒ} ˆ \}}}}}}}}	}
}}}dd„ ˆ D ƒ}dd„ | D ƒ}|| }t|d d … |ƒ|| | || || || || | || || |	| | |
| || | |d! ||  |d!  |d" d gk�s2t‚t||ƒdgk�sHt‚d S )#Nr   rB   )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#   rL   )rL   rJ   )rJ   rK   )rK   rI   )r$   rI   )r$   rL   )r%   rJ   )r"   rK   )r#   rI   )r   r!   c                 S   s   g | ]}d | ‘qS )zx%dr.   )Ú.0Úvr.   r.   r/   Ú
<listcomp>    s     z+test_benchmark_coloring.<locals>.<listcomp>c                    s(   g | ] \}}ˆ |d   ˆ |d   f‘qS )r   r.   )rM   ÚiÚj©ÚVr.   r/   rO   ¡   s     c                 S   s   g | ]}|d  d ‘qS )r   r   r.   )rM   r)   r.   r.   r/   rO   ¥   s     c                 S   s(   g | ] \}}|d  ||  |d   ‘qS )r   r.   )rM   r)   r*   r.   r.   r/   rO   ¦   s     éÿÿÿÿr   r   )Úranger   r   r   r   r'   )ÚEr(   Úx1Úx2Úx3Zx4Zx5Zx6Zx7Zx8Zx9Úx10Zx11Zx12ZI3ZIgÚIr.   rR   r/   Útest_benchmark_coloringš   sN    
             þ




ôr\   c                     s¬  t dttƒ\‰ } }}| d|  d|  d | d d|d   d|d   |  d|  | d| |  | g}t|ˆ ƒdd|   d|  d|d   d|d	   d| d	|  d
|d   d|d	   ||d  d|d	   d|d   gksît‚t dttƒ\‰ } }}‡ fdd„|D ƒ}t|ˆ ƒd| d	|  d
|d   d|d	   | | d	|d   d|d   | d|  d| |  d|d   d|  d|  d|  gk�s¨t‚d S )Nzx:3r   r   iùÿÿÿr"   r#   éž   i¤  r   éO   éÒ   é(   éT   r!   c                    s   g | ]}|  ˆ ¡‘qS r.   ©Zset_ring©rM   rP   ©r(   r.   r/   rO   É   s     z0_do_test_benchmark_katsura_3.<locals>.<listcomp>r$   rJ   rI   rT   ©r   r   r   r   r'   r   )Úx0rW   rX   r[   r.   rd   r/   Ú_do_test_benchmark_katsura_3¼   s$    "þ*&"ý
& $ürg   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r1   ©r4   r5   rg   r.   r.   r.   r/   Ú"test_benchmark_katsura3_buchbergerÒ   s    ri   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r7   rh   r.   r.   r.   r/   Útest_benchmark_katsura3_f5bÖ   s    rj   c                     s�  t dttƒ\‰ } }}}| d|  d|  d|  d | d d|d   d|d   d|d   |  d|  | d| |  d| |  | |d d|  |  d| |  | g}t|ˆ ƒd|  d|d   d|d   d	|d
   d|d   d|d   d|d   d|  d d| d|d   d|d   d|d
   d|d   d|d   d|d   d|  d| d|d   d|d   d|d
   d|d   d|d   d|d   d|  d |d!  d"|d   d#|d   d$|d
   d%|d   d&|d   d'|d   | gk�st‚t dttƒ\‰ } }}}‡ fd(d)„|D ƒ}t|ˆ ƒd*| d+|d   d,| |  d-|  d.|d   d/|d   d0|d   d1|  | d2|d   d3|d   d4| |  d5|  d6|d   d7|d   d8|  d9| d:|d  |  d;|d   d<| |  d=|  d>|d   d?|d   d@|  dA| dB|d   dC| |d   dD| |  dE|  dF|d   dG|d   d|  d|d  | d|d   dH| |  d|  d'|d   d
|  dI| | | dI|d   d5| |  d|  d|d   d|  dI| | | d|d   d=| |  d|  dJ|d   d8|  | d|  d|  d|  d gk�sŒt‚d S )KNzx:4r   r   ió9Z l    '�\” r"   l    =Ø r%   l   °:G r$   l   h2÷ r!   i0%2r   iþeiF†J iQ l    ßBZ l    •rD l   ˜>% l   ¸!I i|À�0i°œ iÁ‹ l   àkävYl   `A+Ý l   p› l   \8_]
 iÜ®±xiô(æiô9Øi0õ r#   i€l iÀ<  iH  i`  é$   é   c                    s   g | ]}|  ˆ ¡‘qS r.   rb   rc   rd   r.   r/   rO   ê   s     z0_do_test_benchmark_katsura_4.<locals>.<listcomp>i‰  i6  in  é;   im iXd i¦  iþ  éÄ   é   é<   é   é¨   éS   rL   iúÿÿÿin  é½   iÒ  é    iv  é9   é3   é!   é?   iÜ  é¼   é"   iØ	  iQ  é   é   é   re   )rf   rW   rX   rY   r[   r.   rd   r/   Ú_do_test_benchmark_katsura_4Ú   s@    .&"ýZVV.
ÿ
ÿ
ÿÿüRPVVBBBør   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r1   ©r4   r5   r   r.   r.   r.   r/   Ú#test_benchmark_kastura_4_buchberger÷   s    r�   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r7   r€   r.   r.   r.   r/   Útest_benchmark_kastura_4_f5bû   s    r‚   c                     sŠ  t dttƒ\‰ } }d| d  d| d   d| d   d| d	   d
| d   d| d   d| d   d|   d dd|  | d  dd|  | d   dd|  | d	   dd|  | d   dd|  | d   d| | d   dd|  |   d d|  g}t|ˆ ƒd|  d|d   d|d   d|d	   d |d   d!|d   d"|d   d#|  d$ d%|d  d&|d   d'|d   d(|d	   d)|d   d*|d   d+|d   d,|  d- gk�sÎt‚t dttƒ\‰ } }‡ fd.d/„|D ƒ}t|ˆ ƒd0|d  |  d1|d   d2|d  |   d3|d   d4| |   d5|  d6| d   d7|   d8 d9|d  d:|d   d;|d  |   d<|d   d=| |   d>|  d?| d   d@|   dA dB|d  dC|d  |   dD|d   dE| |   dF|  dG| d   dH| d   dI|   dJ dK|d  dL|d  |   dM|d   dN| | d   dO| |   dP|  dQ| d   dR|   dS gk�s†t‚d S )TNzx,trL   r#   rk   r"   ru   r%   éü   r$   éN   r!   iÔ  r   i   r   él   i¸ÿÿÿéH   i ÿÿÿéÀ   i   iì  i8  ilþÿÿiÀýÿÿi@  é`   l     
RtJ)1~M²C©MgKÝb¨q«ùcÃL¶e«l   Árýa2ÈU!J�'B\KW4Du+Á%B:®N'Œ/|,ç3D`N l    >C_õ=DèmbgrVJ5n,»Oÿ{Ž-[8 ·Dî/7Ê"²l   *×uæQ!ó3'É; ÄPtµSäo"_ ;�2g0PZwg
l   À§.ëSö[_iºªák
8Cšn|#	v*’u0Ht–S¡l    5‘u3ÜjÁx˜]L*Ÿ(ýIIyLÚ1iC©Âo§latÖ1:'É6(l    P­gÿ];meVŠÎqÌæ'Ž%°op¹Z "¼Mmtä:%63l    P*71}<U1qÕq,¼+¼'ÔcíX0rVvQa;ô pA9l    @ir›0ê@ƒ>/3,«F%*Á;W@ {=5|o&à(Ëc_46l   ±¥:ÕW]l   `k-·@\K'l   À,8y'X^l    4C|	,Ydm l    Loÿ5§R®s l     "#?ÇVq l    @otc?c l      t¢-JOl     Sêz(Gçc                    s   g | ]}|  ˆ ¡‘qS r.   rb   rc   rd   r.   r/   rO     s     z1_do_test_benchmark_czichowski.<locals>.<listcomp>l	   jëP.qlj=ËMÕjò1l	   Ç:q~³\Ÿq,9D³ ûhÊ`l
   \»Bú{•+9Cý0ä-öf l
   ÌnÇ•_ùYø\ûD&n»Ýb l
   àjj9žk${Ï.øûZG�c l
   èv^˜OÓ1mDMöß( l	   À|!�gc]0„t|- l
   @þ�Nw¿*È%’iLM!6 l
    zÁ *r‘p“KÍ0Í‘Z% l   ½4X\Üh@T¦:VçÇ%„]yFó= l   è 8bH�(KK¬nªEm?„p©@(8‘*. l   `'[º%¹­gQ CÉe4
?ß÷XG l   `Abwc}îÛ{°?êV¦ïq¿ï*ŸqA l    .ì'l�#8Ê}¢(×ýU×U�,±7 l   €¹û8…úLø*ŠeÆ?¸FRÄm Š& l    ^¢4O}ÏPÐ\X9Ó�T7cùq!2l    &mu@ŠI«¶gG8Hˆ2GÂW l    m
QÁ<²-Ø-å:Ôbá8Úûa¼oíTV lõÿÿÿkJöXˆ]¶JDh6,^%Š>a1R l   4c DHa¤d,;T&~DÈ!C0 l   ¤3Áb!Ó@ª+ï(#�5;1l    a¤°R¦z2y,äv“D‰ l   [¨K0PÒRž;Tze3D©lol
   €,'_w‰R²°$9M^ƒDr.l
   À[66­F£W×g¹^Ž4ýPw*
3l   @;ñk»À`¾n|Ø)É^ó&a l   €Z(G“2uj²)œ)Žg¹CÔZ� löÿÿÿO]ÜiMW
âjVÝo5CU l
   D
¦K6º
u^·´¦@_3 l
   ¼|Eù}Þw˜BÕ=ñ`/kœ!l
     ñ9ä)šP9@®II%N`ü; l
   €VÐDqtÿRx
T,S) l
   °ZDóHbEV*x
Ò5VGI2l
   @4•e`2e²r¬1NX0yÂ6 l
   ÀîÁ4IÒDê¼V!%v l
   €_Ã+YSYB&…kþ'?®%l re   )r)   Útr[   r.   rd   r/   Ú_do_test_benchmark_czichowskiÿ   sà    ^Žÿ
ÿ
þ
ý
ü
û
úùø	

ÿ
þ
ý
ü
û
úùøö
ÿþ
ý
üû
úùø	

ÿþ
ý
üû
úùø	
ÿ
þ
ýü
û
úùø	
ÿ
þý
üû
úùøärŠ   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r1   ©r4   r5   rŠ   r.   r.   r.   r/   Ú$test_benchmark_czichowski_buchbergerD  s    rŒ   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r7   r‹   r.   r.   r.   r/   Útest_benchmark_czichowski_f5bI  s    r�   c                     sâ  t dttƒ\‰ } }}}| | | | | | | |  ||  ||  | | | | | |  | | |  || |  | | | | d g}t|ˆ ƒd|  d|d   d|d   d|  d| d|  d|d   d|d   d|  d|d  d|d	   d|d
   d|d   d| |d  d|  |d  d|d   d|  |d |d  |d  d gk�sht‚t dttƒ\‰ } }}}‡ fdd„|D ƒ}t|ˆ ƒd| | |d  |d
  d|d   | d|d  |d   | |d  d|  | d| |d   d|  d|d   d|  |d d|d  |d   |d  d |d | ||d   |d  d ||d  |d  |d |  d| |d   |d  |d |d  || |d  ||  |d  | | | | g	k�sÞt‚d S )Nza,b,c,dr   r!   r   rL   r$   r"   r   rJ   r%   rI   r#   c                    s   g | ]}|  ˆ ¡‘qS r.   rb   rc   rd   r.   r/   rO   ]  s     z/_do_test_benchmark_cyclic_4.<locals>.<listcomp>re   )ÚaÚbÚcÚdr[   r.   rd   r/   Ú_do_test_benchmark_cyclic_4M  s4    .ý&..2 ü&,0&"6 ør’   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r1   ©r4   r5   r’   r.   r.   r.   r/   Ú"test_benchmark_cyclic_4_buchbergerj  s    r”   c                	   C   s"   t jdd�� tƒ  W 5 Q R X d S r7   r“   r.   r.   r.   r/   Útest_benchmark_cyclic_4_f5bn  s    r•   c                  C   sR   t ddƒ} t ddƒ}t ddƒ}t| tƒt|tƒks6t‚t|tƒt|tƒk sNt‚d S )N©r   r   r   r   )r   r   r   r!   )r   r   r   )r   r   r   r'   )Ús1Ús2Zs3r.   r.   r/   Útest_sig_keyr  s
    


r™   c                  C   s~   t dttƒ\} }}}}ttddƒ| jdƒ}ttddƒ| jdƒ}ttddƒ| jdƒ}t|ƒt|ƒksft‚t|ƒt|ƒk szt‚d S )Núx,y,z,t©r   r   r   r   r   rI   r!   rB   )r   r   r   r   r   Úzeror   r'   )r(   r)   r*   r-   r‰   Úp1Úp2Zp3r.   r.   r/   Útest_lbp_key{  s    rŸ   c            	      C   sÚ  t dttƒ\} }}}}d|| |d  |d |d   |d  d df}d|d  ||  ||  |d  df}d|d |d  |d |d   | | d	f}d
|| ||d	   ||  |d  df}t||| ƒddtddƒfd|d  ||  ||  |d  dfddtddƒfd|| |d  |d |d   |d  d dffk�sPt‚t||| ƒddtddƒfd
|| ||d	   ||  |d  dfddtddƒfd|d |d  |d |d   | | d	ffk�sÖt‚d S )Nrš   ©r›   r!   r   r!   r   ©r›   r   ©)r   r   r   r   r   r   r$   ©)r   r   r   r   r   r%   rB   )©r   r   r   r   r   r¤   rT   )©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�   Úq1rž   Úq2r.   r.   r/   Útest_critical_pair†  s*    2(.*
  &  0þ
  (  ,þr¨   c                  C   s.  t dttƒ\} }}}}d|| |d  |d |d   |d  d df}d|d  ||  ||  |d  df}d|d |d  |d |d   | | d	f}d
|| ||d	   ||  |d  df}t||| ƒ}	t||| ƒ}
t|	| ƒt|
| ƒk søt‚t||| ƒ}	t||| ƒ}
t|	| ƒt|
| ƒk �s*t‚d S )Nrš   r    r   r!   r   r¡   r¢   r   r$   r£   r%   rB   )r   r   r   r   r   r'   )r(   r)   r*   r-   r‰   r�   r¦   rž   r§   Zcp1Zcp2r.   r.   r/   Útest_cp_key™  s    2(.*r©   c                  C   s´  t dttƒ\} }}}}ttddƒ| jdƒ}ttddƒtddƒ|d  tddƒ| |  tddƒ| |  |d |  td	dƒ|d   td
dƒ| |d   tddƒ| |  tddƒ|d   tddƒ|d   dƒg}tt|ƒt|ƒ|ƒdksöt	‚ttddƒ| jdƒ}ttddƒtddƒ| | td	dƒ| |  tddƒ|  d	|d   tddƒ| |  td	dƒ|  d	|d   td	dƒ|  dƒg}tt|ƒt|ƒ|ƒdk�s°t	‚d S )Nrš   )r   r   r   r   r   )r   r   r   r   é-   r   r$   ry   r!   éL   é#   ru   éi   rB   r"   r   ro   r%   T)r   r   r   r   r›   rJ   é   )
r   r   r   r   r   rœ   r	   r
   r   r'   )r(   r)   r*   r-   r‰   ÚpÚBr.   r.   r/   Ú test_is_rewritable_or_comparable®  s    °ˆr±   c               	   C   sŽ  t dttƒ\} }}}d|d|  d|  d dfdd|d  d| |  d|  d|d   d|  dfdtd	d
ƒ| | tdd
ƒ|  d|d   tdd
ƒ|  d
fd|d|d
   tddƒ|d   td
dƒ|  dfd|d td	dƒ|d
   tddƒ|d   tddƒ|  dfg}t|d |d | ƒ}t|ƒ}t||ƒd| jdfk�sTt‚tt	t
|ƒd dƒt|ƒt|ƒƒ}t||ƒ|k�sŠt‚d S )Nr    )r–   r   r   r   )r–   r   r%   r#   )r–   r   rJ   r   r!   ))r   r   r   r   é   r^   r"   ))r   r   r   r   ro   ra   r$   r   ))r   r   r   r   éd   )r   r   r   r   r   r   rœ   r'   r   r   r
   r   r   )r(   r)   r*   r-   rC   ÚcpÚsr.   r.   r/   Útest_f5_reduce¿  s    8>4>ü"r¶   c                  C   s†  t dttƒ\} }}ddddg}|d | d|  d d	| |d  | d g}t||| ƒtd
dƒtd
dƒtddƒ tddƒgtd
dƒtd
dƒtddƒtddƒ gtddƒtd
dƒtddƒtddƒgtd
dƒtddƒtd
dƒtddƒggtd
dƒtddƒtd
dƒtddƒ gtddƒtddƒ td
dƒtddƒgtd
dƒtddƒtd
dƒtddƒgtd
dƒtd
dƒtddƒtddƒ gggk�s‚t‚d S )Nr   )r   r   )r   r   )r   r   )r   r   r   r   r   éþÿÿÿr   r!   r%   )r   r   r   r   r'   )r(   r)   r*   ZbasisrC   r.   r.   r/   Útest_representing_matricesÒ  s    0
$$""ý$$"$ýûr¸   c                  C   s  t dtƒ\} }}}t|d |d  || ƒ|d |d  ks@t‚td|d  d|d   d| d|  ƒd|d  d|d   ks†t‚t dtƒ\} }}}t|d |d  || ƒ|d |d  ksÆt‚td|d  d|d   d| d|  ƒd|d  d|d   k�st‚t dtƒ\} }}t|d | ||d  ƒ|d |d  k�sNt‚d| |d  d| |d   d| |d   d| |d   }|d d|d   | }d| |d  d| |d   d| |d   d| |d   d| |d   d| |d   }t||ƒ|k�st‚|d d|d  |  d	| |d   d|d   }|d d|d  |  d
|d  |d   d| |d   d|d   }|d |d |  d|d  |d   d|d  |d   d| |d   d|d   }t||ƒ|k�st‚d S )Nr    r   r   r$   r   r!   r"   r%   rL   rI   rJ   rq   é2   é/   rl   )r   r   r   r'   r   )r(   r)   r*   r-   r+   r,   Úhr.   r.   r/   Útest_groebner_lcmâ  s     .F.H0@`4HXr¼   c                  C   sè   t dtƒ\} }}}t|d |d  || ƒ|| ks8t‚td|d  d|d   d| d|  ƒd| d|  ksvt‚t dtƒ\} }}}t|d |d  || ƒ|| ks®t‚td|d  d|d   d| d|  ƒ|| ksät‚d S )Nr    r   )r   r   r   r'   r   )r(   r)   r*   r-   r.   r.   r/   Útest_groebner_gcdý  s    &>&r½   c                  C   s†   t dttƒ\} }}|d || tddƒ | |d  g}|d || tddƒ | |d  g}t|| ƒdkspt‚t|| ƒdks‚t‚d S )Nr   r   r   r   TF)r   r   r   r   r'   )r(   r)   r*   Zvalid_groebnerZinvalid_groebnerr.   r.   r/   Útest_is_groebner  s
    &&r¾   c                  C   s|   t dttƒ\} }}|d d| |d   }|| d|d   d }t||g| ƒdksXt‚t||g| ƒ}t|| ƒdksxt‚d S )Nr   r   r   r   FT)r   r   r   r   r'   r   )r(   r)   r*   r+   r,   rD   r.   r.   r/   Útest_is_reduced  s    r¿   N)AÚ__doc__Zsympy.polys.groebnertoolsr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zsympy.polys.fglmtoolsr   Zsympy.polys.orderingsr   r   Zsympy.polys.ringsr   r   Zsympy.polys.domainsr   r   Zsympy.testing.pytestr   Zsympy.polysr   r4   r0   r6   r8   rE   rG   rH   r\   rg   ri   rj   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>   sL   L	j
"E
	