U
    	-eH                     @   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st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st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st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st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stt dtt\} }}}||d  }||d  }t||g| |d ||  || | | |d  gkst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st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st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.   e/var/www/html/Darija-Ai-Train/env/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st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std S )Nzx:3r   r   ir"   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std S )KNzx:4r   r   i9Z l    '\ r"   l    = r%   l   :G r$   l   h2 r!   i0%2r   ieiFJ iQ l    BZ l   rD l   >% l   !I i|0i i l   kvYl   `A+ l   p l   \8_]
 iܮxi(i9i0 r#   il 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   iin     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st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std S )TNzx,trL   r#   rk   r"   ru   r%      r$   N   r!   i  r   i   r   l   iH   i    i   i  i8  ilii@  `   l     
RtJ)1~MCMgKbqcLel   ra2U!J'B\KW4Du+%B:N'/|,3D`N l    >C_=DmbgrVJ5n,O{-[8 D/7"l   *uQ!3'; PtSo"_ ;2g0PZwg
l   .S[_ik
8Cn|#	v*u0HtSl    5u3jx]L*(IIyL1iColat1:'6(l    Pg];meVq'%opZ "Mmt:%63l    P*71}<U1qq,+'cX0rVvQa; pA9l    @ir0@>/3,F%*;W@ {=5|o&(c_46l   :W]l   `k-@\K'l   ,8y'X^l    4C|	,Ydm l    Lo5Rs l     "#?Vq l    @otc?c l      t-JOl     Sz(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=Mj1l	   :q~\q,9D h`l
   \B{+9C0-f l
   n_Y\D&nb l
   jj9k${.ZGc l
   v^O1mDM( l	   |!gc]0t|- l
   @Nw*%iLM!6 l
    z *rpK0Z% l   4X\h@T:V%]yF= l    8bH(KKnEm?p@(8*. l   `'[%gQ Ce4
?XG l   `Abwc}{?Vq*qA l    .'l#8}(UU,7 l   8L*e?FRm & l    ^4O}P\X9T7cq!2l    &mu@IgG8H2GW l    m
Q<--:b8aoTV lkJX]JDh6,^%>a1R l   4cDHad,;T&~D!C0 l   3b!@+(#5;1l    aRz2y,vD l   [K0PR;Tze3Dlol
   ,'_wR$9M^Dr.l
   [66FWg^4Pw*
3l   @;k`n|)^&a l   Z(G2uj))gCZ lO]iMW
jVo5CU l
   D
K6
u^@_3 l
   |E}wB=`/k!l
     9)P9@II%N`; l
   VDqtRx
T,S) l
   ZDHbEV*x
5VGI2l
   @4e`2er1NX0y6 l
   4ID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st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st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 st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st	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st	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st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st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stt dt\} }}}t|d |d  || |d |d  kst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sttd|d  d|d   d| d|  || kst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st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
	