o
    ohH                     @   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   sv  t dtt\} }}|d d| |d   }|| d|d   d }t||g| ||d tdd gks5J t dtt\} }}d|d  | |d  }d|d  ||  d }t||g| ||d tdd gksjJ t dtt\} }}}||d  }||d  }t||g| ||gksJ t dtt\} }}|d d| |  }|d | | d|d   }t||g| |d || tdd | |d  gksJ t dtt\} }}}|d  | }|d  | }t||g| |d | || | || |d  |d |d  gksJ t dtt\} }}}|d  | }|d  | }t||g| |d |d  |d | || | || |d  gksBJ t dtt\} }}}|d  | }|d  | }t||g| |d | || |d  || | |d |d  gks~J t dtt\} }}}|d  | }|d  | }t||g| |d  |d  |d | || |d  || | gksJ t dtt\} }}}||d  }|d  | }t||g| ||d  |d | gksJ t dtt\} }}}||d  }|d  | }t||g| |d ||  || | | |d  gksJ t dtt\} }}}||d  }||d  }t||g| ||d  ||d  gksIJ t dtt\} }}}||d  }||d  }t||g| |d ||  || | | |d  gks}J t dtt\} }}}|d  | }||d  }t||g| |||  |d | gksJ t dtt\} }}}|d  | }||d  }t||g| |d  |d  || |d  |d | | ||  gksJ t dtt\} }}}||d  }||d  }t||g| ||d  ||d  gksJ t dtt\} }}}||d  }||d  }t||g| |d  |d  || |d  | ||  | |d  gksPJ 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sJ d S )Nx,y         zy,xx,y,z                  )r   r   r   r   r   )Rxyfgz r-   x/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/polys/tests/test_groebnertools.py_do_test_groebner   s   ((8HHHJ,<,<,L,N$.@r/   c                   C   8   t jdd t  W d    d S 1 sw   Y  d S N
buchbergerr   configusingr/   r-   r-   r-   r.   test_groebner_buchberger      "r7   c                   C   r0   Nf5br3   r4   r-   r-   r-   r.   test_groebner_f5b   r8   r;   c                  C   sj  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sJ 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,   FGr-   r-   r.   _do_test_benchmark_minpoly   s   6bbBrH   c                   C   r0   r1   r5   r6   rH   r-   r-   r-   r.   !test_benchmark_minpoly_buchberger   r8   rJ   c                   C   r0   r9   rI   r-   r-   r-   r.   test_benchmark_minpoly_f5b   r8   rK   c                     s  t dd g d} 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sJ t||dgksJ d S )Nr   rE   ))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#   rO   )rO   rM   )rM   rN   )rN   rL   )r$   rL   )r$   rO   )r%   rM   )r"   rN   )r#   rL   )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-   )rP   ijVr-   r.   rR         ( c                 S   s   g | ]}|d  d qS )r   r   r-   )rP   r(   r-   r-   r.   rR      s    c                 S   s(   g | ]\}}|d  ||  |d   qS )r   r-   )rP   r(   r)   r-   r-   r.   rR      rW   r   r   )ranger   r   r   r   )Er'   x1x2x3x4x5x6x7x8x9x10x11x12I3IgIr-   rU   r.   test_benchmark_coloring   s.   






rj   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swJ 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sJ d S )Nzx:3r   r   ir"   r#      i  r   O      (   T   r!   c                       g | ]}|  qS r-   set_ringrP   rS   r'   r-   r.   rR          z0_do_test_benchmark_katsura_3.<locals>.<listcomp>r$   rM   rL   rX   r   r   r   r   r   )x0r[   r\   ri   r-   rt   r.   _do_test_benchmark_katsura_3   s$   "*&"
& $rx   c                   C   r0   r1   r5   r6   rx   r-   r-   r-   r.   "test_benchmark_katsura3_buchberger   r8   rz   c                   C   r0   r9   ry   r-   r-   r-   r.   test_benchmark_katsura3_f5b   r8   r{   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J 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sFJ 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                    rp   r-   rq   rs   rt   r-   r.   rR      ru   z0_do_test_benchmark_katsura_4.<locals>.<listcomp>i  i6  in  ;   im iXd i  i        <         S   rO   iin     i      iv  9   3   !   ?   i     "   i	  iQ           rv   )rw   r[   r\   r]   ri   r-   rt   r.   _do_test_benchmark_katsura_4   s@   .&"ZVV.


RPVVBBBr   c                   C   r0   r1   r5   r6   r   r-   r-   r-   r.   #test_benchmark_kastura_4_buchberger   r8   r   c                   C   r0   r9   r   r-   r-   r-   r.   test_benchmark_kastura_4_f5b   r8   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sJ 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sJ d S )TNzx,trO   r#   r|   r"   r   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                    rp   r-   rq   rs   rt   r-   r.   rR     ru   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 rv   )r(   tri   r-   rt   r.   _do_test_benchmark_czichowski   s   ^






	











	




	




	


r   c                   C   r0   r1   r5   r6   r   r-   r-   r-   r.   $test_benchmark_czichowski_buchbergerD  s   "r   c                   C   r0   r9   r   r-   r-   r-   r.   test_benchmark_czichowski_f5bI  r8   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sJ 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snJ d S )Nza,b,c,dr   r!   r   rO   r$   r"   r   rM   r%   rL   r#   c                    rp   r-   rq   rs   rt   r-   r.   rR   ]  ru   z/_do_test_benchmark_cyclic_4.<locals>.<listcomp>rv   )abcdri   r-   rt   r.   _do_test_benchmark_cyclic_4M  s0   .&..L
&,0&"6,r   c                   C   r0   r1   r5   r6   r   r-   r-   r-   r.   "test_benchmark_cyclic_4_buchbergerj  r8   r   c                   C   r0   r9   r   r-   r-   r-   r.   test_benchmark_cyclic_4_f5bn  r8   r   c                  C   sR   t dd} t dd}t dd}t| tt|tksJ t|tt|tk s'J d S )Nr   r   r   r   )r   r   r   r!   )r   r   r   )r   r   r   )s1s2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s3J t|t|k s=J d S )Nx,y,z,tr   r   r   r   r   rL   r!   rE   )r   r   r   r   r   zeror   )r'   r(   r)   r,   r   p1p2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sJ 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sJ d S )Nr   r   r!   r   r!   r   r   r   )r   r   r   r   r   r   r$   )r   r   r   r   r   r%   rE   )r   r   r   r   r   r   rX   )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(.*
4>

6: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|J t||| }	t||| }
t|	| t|
| k sJ d S )Nr   r   r   r!   r   r   r   r   r$   r   r%   rE   )r   r   r   r   r   )r'   r(   r)   r,   r   r   r   r   r   cp1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u s{J 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u sJ d S )Nr   )r   r   r   r   r   )r   r   r   r   -   r   r$   r   r!   L   #   r   i   rE   r"   r   r   r%   T)r   r   r   r   r   rM      )	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sJ ttt	|d dt
|t|}t|||ksJ d S )Nr    )r   r   r   r   )r   r   r%   r#   )r   r   rM   r   r!   ))r   r   r   r      rl   r"   ))r   r   r   r   r   ro   r$   r   ))r   r   r   r   d   )r   r   r   r   r   r   r   r   r   r
   r   r   )r'   r(   r)   r,   rF   cpsr-   r-   r.   test_f5_reduce  s   8>4>"r   c                  C   s  t dtt\} }}g d}|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sJ d S )
Nr   ))r   r   )r   r   )r   r   )r   r   r   r   r   r   r!   r%   )r   r   r   r   )r'   r(   r)   basisrF   r-   r-   r.   test_representing_matrices  s   0
$$""$$"$r   c                  C   s  t dt\} }}}t|d |d  || |d |d  ks J td|d  d|d   d| d|  d|d  d|d   ksCJ t dt\} }}}t|d |d  || |d |d  kscJ td|d  d|d   d| d|  d|d  d|d   ksJ t dt\} }}t|d | ||d  |d |d  ksJ 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J |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J d S )Nr    r   r   r$   r   r!   r"   r%   rO   rL   rM   r   2   /   r}   )r   r   r   r   )r'   r(   r)   r,   r*   r+   hr-   r-   r.   test_groebner_lcm  s    .F.F.@`4HXr   c                  C   s   t dt\} }}}t|d |d  || || ksJ td|d  d|d   d| d|  d| d|  ks;J t dt\} }}}t|d |d  || || ksWJ td|d  d|d   d| d|  || ksrJ d S )Nr    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u s8J t|| du sAJ d S )Nr   r   r   r   TF)r   r   r   r   )r'   r(   r)   valid_groebner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s,J t||g| }t|| dks<J d S )Nr   r   r   r   FT)r   r   r   r   r   )r'   r(   r)   r*   r+   rG   r-   r-   r.   test_is_reduced  s   r   N)A__doc__sympy.polys.groebnertoolsr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   sympy.polys.fglmtoolsr   sympy.polys.orderingsr   r   sympy.polys.ringsr   r   sympy.polys.domainsr   r   sympy.testing.pytestr   sympy.polysr   r5   r/   r7   r;   rH   rJ   rK   rj   rx   rz   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.   <module>   sN    L	j
"E
	