
    gH                     n   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	 Z#d
 Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0ed             Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d  Z:d! Z;d" Z<d# Z=d$ Z>d% Z?d& Z@d'S )(z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                  6   t          dt          t                    \  } }}|dz  d|z  |dz  z  z   }||z  d|dz  z  z   dz
  }t          ||g|           ||dz  t          dd          z
  gk    sJ t          dt          t                    \  } }}d|dz  z  |z  |dz  z   }d|dz  z  ||z  z   dz
  }t          ||g|           ||dz  t          dd          z
  gk    sJ t          dt          t                    \  } }}}||dz  z
  }||dz  z
  }t          ||g|           ||gk    sJ t          dt          t                    \  } }}|dz  d|z  |z  z
  }|dz  |z  |z   d|dz  z  z
  }t          ||g|           |dz  ||z  t          dd           |z  |dz  z   gk    sJ t          dt          t                    \  } }}}|dz   |z   }|dz   |z   }t          ||g|           |dz  |z
  ||z  |z
  ||z  |dz  z
  |dz  |dz  z
  gk    sJ t          dt          t                    \  } }}}|dz   |z   }|dz   |z   }t          ||g|           |dz  |dz  z
  |dz  |z
  ||z  |z
  ||z  |dz  z
  gk    sJ t          dt          t                    \  } }}}|dz   |z   }|dz   |z   }t          ||g|           |dz  |z
  ||z  |dz  z
  ||z  |z
  |dz  |dz  z
  gk    sJ t          dt          t                    \  } }}}|dz   |z   }|dz   |z   }t          ||g|           |dz   |dz  z   |dz  |z
  ||z  |dz  z
  ||z  |z
  gk    sJ t          dt          t                    \  } }}}||dz  z
  }|dz   |z   }t          ||g|           ||dz  z
  |dz  |z
  gk    sJ t          dt          t                    \  } }}}||dz  z
  }|dz   |z   }t          ||g|           |dz  ||z  z
  ||z  |z
  | |dz  z   gk    sJ t          dt          t                    \  } }}}||dz  z
  }||dz  z
  }t          ||g|           ||dz  z
  ||dz  z
  gk    sJ t          dt          t                    \  } }}}||dz  z
  }||dz  z
  }t          ||g|           |dz  ||z  z
  ||z  |z
  | |dz  z   gk    sJ t          dt          t                    \  } }}}|dz   |z   }||dz  z
  }t          ||g|           |||z  z
  |dz  |z
  gk    sJ t          dt          t                    \  } }}}|dz   |z   }||dz  z
  }t          ||g|           |dz   |dz  z   ||z  |dz  z
  |dz  |z
  | ||z  z   gk    sJ t          dt          t                    \  } }}}||dz  z
  }||dz  z
  }t          ||g|           ||dz  z
  ||dz  z
  gk    sJ t          dt          t                    \  } }}}||dz  z
  }||dz  z
  }t          ||g|           |dz   |dz  z   ||z  |dz  z
  | ||z  z   | |dz  z   gk    sJ t          dt          t                    \  } }}}d|dz  z  |dz  z  d|z  |z  z   dz   }|dz  |dz  z   dz
  }t          ||g|           |d|dz  z  z
  d	|d
z  z  z   d|dz  z  z
  d|z  z   |d	z  d|dz  z  z
  t          dd          |dz  z  z   t          dd          |dz  z  z
  t          dd          z   gk    sJ d S )Nx,y         zy,xx,y,z                  )r   r   r   r   r   )Rxyfgzs         `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_groebnertools.py_do_test_groebnerr0      s   %S!!FAq	1qs1a4xA	!a1fqAQFA1adR!WWn"55555%S!!FAq	!Q$q1a4A	!Q$1qAQFA1adR!WWn"55555GR%%HAq1	AqDA	AqDAQFA1a&((((%U##FAq	1qs1uA	1Q
Qq!tVAQFA1a41r!Awwhqj1a4.?"@@@@@GR%%HAq1	
A	A	
A	AQFA1a4!8QqS1WacAqDj!Q$A+"NNNNNGR''HAq1	
A	A	
A	AQFA1a4!Q$;1q!A#'1Q3A:"NNNNNGR%%HAq1	
A	A	
A	AQFA1a4!8QqS1a4Z1q!Q$A+"NNNNNGR''HAq1	
A	A	
A	AQFAAqD51a4<A1Q3A:qsQw"OOOOOGR%%HAq1	AqDA	
A	AQFA1q!t8QTAX"66666GR''HAq1	AqDA	
A	AQFA1a4!A#:qsQwQT	"BBBBBGR%%HAq1	AqDA	AqDAQFA1q!t8QAX"66666GR''HAq1	AqDA	AqDAQFA1a4!A#:qsQwQT	"BBBBBGR%%HAq1	
A	A	AqDAQFA1qs7AqD1H"55555GR''HAq1	
A	A	AqDAQFAAqD51a4<1q!tQTAXrAaCx"PPPPPGR%%HAq1	AqDA	AqDAQFA1q!t8QAX"66666GR''HAq1	AqDA	AqDAQFAAqD51a4<1q!taR!A#XrAqDy"QQQQQGR%%HAq1	!Q$q!tac!eaA	1q!taAQFA	AadF
Qq!tVa1f$qs*	1qAv1Q1$r!Awwq!t|3b2hh>#          c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S N
buchbergerr   configusingr0    r1   r/   test_groebner_buchbergerr:      s    	|	,	,	,                      266c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S Nf5br5   r6   r9   r1   r/   test_groebner_f5br?      s    	u	%	%	%                   r;   c                  ,   t          dt          t                    \  } }}}|dz  |z   dz   |dz  |z   dz   ||z   |z  |dz  |z   z
  g}|t          dd          |dz  z  z   t          dd	          |d
z  z  z
  t          dd          |dz  z  z   t          dd	          |dz  z  z
  t          dd          |z  z   t          dd          z
  |t          d
d          |dz  z  z   t          dd          |d
z  z  z
  t          dd          |dz  z  z   t          dd          |dz  z  z
  t          dd          |z  z   t          dd          z
  |dz  d|dz  z  z
  d|d
z  z  z   d|dz  z  z
  d|dz  z  z   d|z  z
  dz   g}t          ||           |k    sJ 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Gs         r/   _do_test_benchmark_minpolyrM      s   GR%%HAq1	
AAq!tax!|a!eq[AqD1H%=>A	
RD\\!Q$	CQT!1	1BtDMM!Q$4F	FDQTVWYZVZIZ	Z]_`dei]j]jkl]l	loqrtuwoxox	x	
R"XXad]	R3ZZ1_	,r#c{{1a4/?	?"S**QPQT/	QTVW[\_T`T`abTb	beghkloepep	p	
A!Q$AqD	 2ad7	*R1W	4r!t	;b	@	BA Aq>>Qr1   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r3   r7   r8   rM   r9   r1   r/   !test_benchmark_minpoly_buchbergerrP      s    	|	,	,	, % %"$$$% % % % % % % % % % % % % % % % % %r;   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r=   rO   r9   r1   r/   test_benchmark_minpoly_f5brR      s    	u	%	%	% % %"$$$% % % % % % % % % % % % % % % % % %r;   c                     t          dd          g d} t          d D             t          t                    \  }fd| D             } \  }}}}}}}}	}
}}}d D             }d | D             }||z   }t	          |d d         |          ||z   |z   ||z
  ||z
  ||z
  ||z   |z   ||z
  ||z
  |	|z   |z   |
|z
  ||z   |z   |d	z  ||z  z   |d	z  z   |d
z  dz
  gk    sJ t	          ||          dgk    sJ d S )Nr!   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%   )r%   rW   )rW   rU   )rU   rV   )rV   rT   )r&   rT   )r&   rW   )r'   rU   )r$   rV   )r%   rT   )r    r#   c                     g | ]}d |z  S )zx%dr9   ).0vs     r/   
<listcomp>z+test_benchmark_coloring.<locals>.<listcomp>   s    )))519)))r1   c                 B    g | ]\  }}|d z
           |d z
           fS )r!   r9   )rY   ijVs      r/   r[   z+test_benchmark_coloring.<locals>.<listcomp>   s2    ,,,$!Q!AE(Aa!eH	,,,r1   c                     g | ]
}|d z  dz
  S )r    r!   r9   )rY   r*   s     r/   r[   z+test_benchmark_coloring.<locals>.<listcomp>   s     			q!Q$(			r1   c                 6    g | ]\  }}|d z  ||z  z   |d z  z   S )r   r9   )rY   r*   r+   s      r/   r[   z+test_benchmark_coloring.<locals>.<listcomp>   s1    	*	*	*1!Q$1*q!t
	*	*	*r1   r   r    )ranger   r   r   r   )Er)   x1x2x3x4x5x6x7x8x9x10x11x12I3IgIr_   s                    @r/   test_benchmark_coloringrt      s}   aA	G 	G 	GA ))a)))2s33DAq,,,,!,,,A895BBBBBS#		A			B	*	*	*	*	*B
RAAcrcFA
S3
S
S
S
S3
S
S
S3
Sc	CQS36!Q
#     Aq>>aS      r1   c                     t          dt          t                    \  } }}| d|z  z   d|z  z   dz
  | dz  d|dz  z  z   d|dz  z  z   | z
  d| z  |z  d|z  |z  z   |z
  g}t          |          dd| z  z   d|z  z   d|dz  z  z   d|d	z  z  z
  d|z  d	|z  z   d
|dz  z  z
  d|d	z  z  z   ||dz  z   d|d	z  z  z
  d|dz  z  z   gk    sJ t          dt          t                    \  } }}fd|D             }t          |          d|z  d	|z  z   d
|dz  z  z
  d|d	z  z  z   | |z   d	|dz  z  z
  d|dz  z  z   | d|z  z
  d|z  |z  z   d|dz  z  z   d| z   d|z  z   d|z  z   gk    sJ d S )Nzx:3r   r!   ir$   r%      i  r    O      (   T   r#   c                 :    g | ]}|                               S r9   set_ringrY   r]   r)   s     r/   r[   z0_do_test_benchmark_katsura_3.<locals>.<listcomp>   #    $$$A!**Q--$$$r1   r&   rU   rT   rb   r   r   r   r   r   )x0re   rf   rs   r)   s       @r/   _do_test_benchmark_katsura_3r      s   ub#&&KAr"R	adQrT	A		Q2q51RU7	"R	'	
2b1R47	R		!A Aq>>
QrT	AbD3r1u9$s2q5y0	"qtbQhRU*
RU
RAX2q5(     ub%((KAr"R$$$$$$$AAq>>	"qtbQhRU*	b1RU7Qr1uW$	ad
RU2X2q5(
R!B$2	      r1   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r3   r7   r8   r   r9   r1   r/   "test_benchmark_katsura3_buchbergerr          	|	,	,	, ' '$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'r;   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r=   r   r9   r1   r/   test_benchmark_katsura3_f5br          	u	%	%	% ' '$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'r;   c                  &   t          dt          t                    \  } }}}| d|z  z   d|z  z   d|z  z   dz
  | dz  d|dz  z  z   d|dz  z  z   d|dz  z  z   | z
  d| z  |z  d|z  |z  z   d|z  |z  z   |z
  |dz  d| z  |z  z   d|z  |z  z   |z
  g}t          |          d| z  d|dz  z  z
  d|dz  z  z   d	|d
z  z  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   dz
  d|z  d|dz  z  z
  d|dz  z  z   d|d
z  z  z
  d|dz  z  z
  d|dz  z  z   d|dz  z  z
  d|z  z
  d|z  d|dz  z  z   d|dz  z  z
  d|d
z  z  z   d|dz  z  z   d|dz  z  z
  d|dz  z  z
  d|z  z   d |d!z  z  d"|dz  z  z
  d#|dz  z  z   d$|d
z  z  z   d%|dz  z  z
  d&|dz  z  z   d'|dz  z  z   |z
  gk    sJ t          dt          t                    \  } }}}fd(|D             }t          |          d)|z  d*|dz  z  z
  d+|z  |z  z   d,|z  z
  d-|dz  z  z   d.|dz  z  z
  d/|dz  z  z
  d0|z  z   | d1|dz  z  z   d2|dz  z  z
  d3|z  |z  z   d4|z  z
  d5|dz  z  z
  d6|dz  z  z   d7|z  z
  d8|z  d9|dz  z  |z  z   d:|dz  z  z
  d;|z  |z  z
  d<|z  z   d=|dz  z  z
  d>|dz  z  z   d?|z  z   d@|z  dA|dz  z  z   dB|z  |dz  z  z   dC|z  |z  z
  dD|z  z   dE|dz  z  z   dF|dz  z  z
  d|z  z   d|dz  z  |z
  d|dz  z  z
  dG|z  |z  z
  d|z  z   d'|dz  z  z
  d
|z  z   dH|z  |z  |z
  dH|dz  z  z   d4|z  |z  z   d|z  z
  d|dz  z  z   d|z  z
  dH|z  |z  |z
  d|dz  z  z   d<|z  |z  z   d|z  z
  dI|dz  z  z   d7|z  z
  | d|z  z   d|z  z   d|z  z   dz
  gk    sJ d S )JNz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                 :    g | ]}|                               S r9   r|   r~   s     r/   r[   z0_do_test_benchmark_katsura_4.<locals>.<listcomp>   r   r1   i  i6  in  ;   im iXd i  i        <         S   rW   iin     i      iv  9   3   !   ?   i     "   i	  iQ           r   )r   re   rf   rg   rs   r)   s        @r/   _do_test_benchmark_katsura_4r      s
   %S))NAr"R	adQrT	AbD	 1	$	Q2q51RU7	"Qr1uW	,r	1	
2b1R47	QrT"W	$r	)	Q2b1R47	"R	'	)A
 Aq>>
\"a%''+b!e*;;k"a%>OOR\]_ab]bRbbenoqstotett  xA  BD  FG  BG  xG  	G  JQ  RT  JT  	T  W^  	^
[Q&&RU)::[Q=NNQ[\^`a\aQaadmnprsnsdssv}  A  CD  D  wD  	D  GN  OQ  GQ  	Q
\"a%'',r1u*<<{2q5?PPS^_acd_dSddgqrtvwrwgww  {D  EG  IJ  EJ  {J  	J  MU  VX  MX  	Xr1uuRU{"U2q5[04A:=RU
	AX	 "2q5	)+-	.	     %U++NAr"R$$$$$$$AAq>>Bb!ed2gbj(2b506"a%<?%A+MPSTVXYTYPYY\`ac\cc	c"a%i"RU("RU2X-25BE	ABr1uHLqQStS
2RU
2BE	)CF2I52=BE	IBrSTuHTWYZ\W\\
22q5472q5=(3r6"94r"u<tBEzICPRTUPUIUXYZ\X\\	"a%"qQwBr)AbD02b!e8;adB
2b22q5 2b58+ad2Qr1uW<qtC
2b2"a%"R%(*QrT1Br1uH<qtC
QrT	AbD1R4!#	 	 	 	 	 	 	r1   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r3   r7   r8   r   r9   r1   r/   #test_benchmark_kastura_4_buchbergerr      r   r;   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r=   r   r9   r1   r/   test_benchmark_kastura_4_f5br      r   r;   c                     t          dt          t                    \  } }d| dz  z  d| dz  z  z   d| dz  z  z
  d| d	z  z  z
  d
| dz  z  z
  d| dz  z  z   d| dz  z  z   d| z  z
  dz   dd|z  z
  | dz  z  dd|z  z
  | dz  z  z   dd|z  z   | d	z  z  z   dd|z  z   | dz  z  z   dd|z  z   | dz  z  z   d|z  | dz  z  z   dd|z  z
  | z  z   dz   d|z  z   g}t          |          d| z  d|dz  z  z
  d|dz  z  z
  d|d	z  z  z
  d |dz  z  z
  d!|dz  z  z
  d"|dz  z  z
  d#|z  z
  d$z
  d%|dz  z  d&|dz  z  z   d'|dz  z  z   d(|d	z  z  z   d)|dz  z  z   d*|dz  z  z   d+|dz  z  z   d,|z  z   d-z   gk    sJ t          dt          t                    \  } }fd.|D             }t          |          d/|dz  z  | z  d0|dz  z  z
  d1|dz  z  | z  z   d2|dz  z  z
  d3|z  | z  z   d4|z  z
  d5| dz  z  z   d6| z  z   d7z
  d8|dz  z  d9|dz  z  z   d:|dz  z  | z  z   d;|dz  z  z   d<|z  | z  z   d=|z  z   d>| dz  z  z   d?| z  z   d@z   dA|dz  z  dB|dz  z  | z  z   dC|dz  z  z
  dD|z  | z  z   dE|z  z
  dF| dz  z  z   dG| dz  z  z   dH| z  z   dIz
  dJ|dz  z  dK|dz  z  | z  z   dL|dz  z  z
  dM|z  | dz  z  z   dN|z  | z  z   dO|z  z
  dP| dz  z  z   dQ| z  z   dRz
  gk    sJ d S )SNzx,trW   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                 :    g | ]}|                               S r9   r|   r~   s     r/   r[   z1_do_test_benchmark_czichowski.<locals>.<listcomp>  r   r1   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 r   )r*   trs   r)   s      @r/   _do_test_benchmark_czichowskir      s   %S!!FAq	
1a4"QT'	Bq!tG	#c!Q$h	.AqD	83q!t8	Cc!Q$h	NQTUVQV	VYZ	Z
1*ad	dSUlAqD0	0C#a%KA3E	EPTUVPVXY[\X\H\	\`cfijkfk`kmnpqmq_q	quyz{u{}~  AB  ~B  uB  
B  FJ  MP  QR  MR  FR  TU  EU  
U  XZ  
Z  ]`  ab  ]b  
b	cA Aq>>]^__efgijfjj	kfghjkgkk	l 	gghjkgkk	l 	hhiklhll		m
 	hhiklhll	m 	gghjkgkk	l 	gghh	i 	f	f 	ad"q!t#	$1$	% 	 1$	% 	!A%		&
 	!A%	& 	 1$	% 	 !	" 		    * %U##FAq$$$$$$$AAq>>1!Q$6q81!Q$6	71!Q$6q8	9 	31a47	8 	314Q6		7
 	314	5 	/q!t3	4 	2!3	4 	2	2 	EQTIEadJ	KDQTI!K	L 	FadJ	K 	EQFqH		I
 	FaG	H 	B!Q$F	G 	EQF	G 	E	E 9A=71<Q>?8A=> 	9:1<= 	9:	;
 	6ad:; 	6ad:; 	9:; 	99 4AqD821a479:4QT9: 	314QT9: 	4A5a7	8
 	5Q67 	31a478 	4A56 	449% % % % % % %r1   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r3   r7   r8   r   r9   r1   r/   $test_benchmark_czichowski_buchbergerr   D  s    	|	,	,	, ( (%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (r;   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r=   r   r9   r1   r/   test_benchmark_czichowski_f5br   I  s    	u	%	%	% ( (%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (r;   c                     t          dt          t                    \  } }}}| |z   |z   |z   | |z  | |z  z   ||z  z   ||z  z   | |z  |z  | |z  |z  z   | |z  |z  z   ||z  |z  z   | |z  |z  |z  dz
  g}t          |          d| z  d|dz  z  z   d|dz  z  z
  d|z  z
  d|z  d|z  z   d|dz  z  z
  d|dz  z  z   d|z  z   d|dz  z  d|d	z  z  z   d|d
z  z  z
  d|dz  z  z
  d|z  |dz  z  d|z  z   |dz  z
  d|dz  z  z   d|z  z   |dz  |dz  z
  |dz  z
  dz   gk    sJ t          dt          t                    \  } }}}fd|D             }t          |          d|z  |z  |dz  z
  |d
z  z   d|dz  z  z
  | d|dz  z  |dz  z  z   |z
  |dz  z
  d|z  z
  | d|z  |dz  z  z   d|z  z   d|dz  z  z   d|z  z   |dz  d|dz  z  |dz  z  z   |dz  z
  dz
  |dz  |z  ||dz  z  z   |dz  z   dz   ||dz  z  |dz  z
  |dz  |z  z
  d|z  |dz  z  z
  |dz  z
  |dz  |dz  z
  ||z  |dz  z   ||z  z   |dz  z   | |z   |z   |z   g	k    sJ d S )Nza,b,c,dr!   r#   r    rW   r&   r$   r   rU   r'   rT   r%   c                 :    g | ]}|                               S r9   r|   r~   s     r/   r[   z/_do_test_benchmark_cyclic_4.<locals>.<listcomp>]  r   r1   r   )abcdrs   r)   s        @r/   _do_test_benchmark_cyclic_4r   M  sV   iS))JAq1Q	
QQ	
1qsQqS1Q3		
1Q1Q1Q	1Q	&	
1Qq1	A
 Aq>>	!a1fqAv!#	!ac	AadFQq!tV#ac)	!Q$1b51QT6!AadF*	!AqD1Q3A!Q$&1,aeadlQT.AA.E	     iU++JAq1Q$$$$$$$AAq>>	!A1q!ta1f$	
Qq!tVAqD[1q!t#ac)	
QqSAX!a1f$qs*	1qAvad{QT!A%	1Q1a4!Q$"	!Q$A1Q1QT)AqD0	1q!tQqS1a4Z!A#%1,	A	A	 	 	 	 	 	 	r1   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r3   r7   r8   r   r9   r1   r/   "test_benchmark_cyclic_4_buchbergerr   j  s    	|	,	,	, & &#%%%& & & & & & & & & & & & & & & & & &r;   c                  ~    t          j        d          5  t                       d d d            d S # 1 swxY w Y   d S r=   r   r9   r1   r/   test_benchmark_cyclic_4_f5br   n  s    	u	%	%	% & &#%%%& & & & & & & & & & & & & & & & & &r;   c                     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s3s      r/   test_sig_keyr   r  s    	Xq		B	Xq		B	Xq		B2sgb#......2sgb#........r1   c                     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    sJ t          |          t          |          k     sJ d S )Nx,y,z,tr   r   r   r   r    rT   r#   rJ   )r   r   r   r   r   zeror   )r)   r*   r+   r.   r   p1p2p3s           r/   test_lbp_keyr   {  s    iS))JAq1Q	S1qvr	*	*B	S1qvr	*	*B	S1qvr	*	*B2;;$$$$2;;$$$$$$r1   c                     t          dt          t                    \  } }}}}d||z  |dz  z  |dz  |dz  z  z   |dz  z
  dz
  df}d|dz   ||z  z
  ||z  z
  |dz  z
  df}d|dz  |dz  z  |dz  |dz  z  z   |z
  |z
  d	f}d
||z  ||d	z  z  z   ||z  z   |dz  z   df}t          |||           ddt          dd          fd|dz   ||z  z
  ||z  z
  |dz  z
  dfddt          dd          fd||z  |dz  z  |dz  |dz  z  z   |dz  z
  dz
  dffk    sJ t          |||           ddt          dd          fd
||z  ||d	z  z  z   ||z  z   |dz  z   dfddt          dd          fd|dz  |dz  z  |dz  |dz  z  z   |z
  |z
  d	ffk    sJ d S )Nr   r   r#   r   r#   r!   r   r   )r   r   r   r   r    r    r&   )r   r   r   r   r   r'   rJ   )r   r   r!   r   r   r   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   r   r   r   )	r)   r*   r+   r.   r   r   q1r   q2s	            r/   test_critical_pairr     sm   iU++JAq1Q
QqSAX1QT	1AqD81<a	@B
adUQqS[1Q3.A5q	9B
QT!Q$YAad2Q6:A	>B
QqS1QT6\AaC/!Q$6	;BR##L"R))47H1a4%RSTURU+XYZ[X[J[^_ab^bJbde6fL"Q((36G1QPQTTUWXTXYZ\]Y]T]I]`acd`dIdghIhjk5l(     R##L"Q((36G1qQRTUQUvXYZ[X[I[^_ab^bIbdf5gL"Q((36GAaQRdUVXYUYZ[]^Z^U^I^abIbefIfhi5j(      r1   c                  V   t          dt          t                    \  } }}}}d||z  |dz  z  |dz  |dz  z  z   |dz  z
  dz
  df}d|dz   ||z  z
  ||z  z
  |dz  z
  df}d|dz  |dz  z  |dz  |dz  z  z   |z
  |z
  d	f}d
||z  ||d	z  z  z   ||z  z   |dz  z   df}t          |||           }	t          |||           }
t	          |	|           t	          |
|           k     sJ t          |||           }	t          |||           }
t	          |	|           t	          |
|           k     sJ 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   r   r   cp1cp2s              r/   test_cp_keyr     sm   iU++JAq1Q
QqSAX1QT	1AqD81<a	@B
adUQqS[1Q3.A5q	9B
QT!Q$YAad2Q6:A	>B
QqS1QT6\AaC/!Q$6	;B
B
"
"C
B
"
"C#q>>F3NN****
B
"
"C
B
"
"C#q>>F3NN******r1   c                     t          dt          t                    \  } }}}}t          t	          dd          | j        d          }t          t	          dd          t          dd          |dz  z  t          dd          |z  |z  z   t          dd          |z  |z  z   |dz  |z  z   t          d	d          |dz  z  z   t          d
d          |z  |dz  z  z   t          dd          |z  |z  z
  t          dd          |dz  z  z   t          dd          |dz  z  z
  d          g}t          t          |          t          |          |          du sJ t          t	          dd          | j        d          }t          t	          dd          t          dd          |z  |z  t          d	d          |z  |z  z   t          dd          |z  z
  d	|dz  z  z   t          dd          |z  |z  z   t          d	d          |z  z
  d	|dz  z  z   t          d	d          |z  z
  d          g}t          t          |          t          |          |          du sJ d S )Nr   )r   r   r   r!   r   )r   r   r   r!   -   r!   r&   r   r#   L   #   r   i   rJ   r$   r    r   r'   T)r   r!   r!   r   r   rU      )	r   r   r   r   r   r   r
   r   r   )r)   r*   r+   r.   r   pBs          r/    test_is_rewritable_or_comparabler     s   iU++JAq1QCa  !&!,,A	Sq!!2a88AqD=2a7719Q;#>Ab!A#MPQSTPTUVPV#VY[\]^`YaYabcefbfYf#fiklnoqirirstituvxyuyiy#y|~  @B  CF  }G  }G  HI  }I  JK  }K  $K  NP  QS  TU  NV  NV  WX  Z[  W[  N[  $[  ^`  ac  df  ^g  ^g  hi  kl  hl  ^l  $l  no  
p  
p  	qA 'tAwwA::dBBBBCa  !&!,,A	Sq!!2b88A:a<"Qq''!)A+#=1Q	#IAaQRdF#RUWXZ[\U]U]^_U_`aUa#adfghijdkdklmdm#mpqrsuvrvpv#vy{|}~  zA  zA  BC  zC  $C  EF  
G  
G  	HA 'tAwwA::dBBBBBBr1   c            
         t          dt          t                    \  } }}}d|d|z  z   d|z  z   dz
  dfdd|dz  z  d|z  |z  z   d|z  z
  d|dz  z  z   d|z  z
  dfdt          d	d
          |z  |z  t          dd
          |z  z
  d|dz  z  z   t          dd
          |z  z
  d
fd|d|d
z  z  z   t          dd          |dz  z  z
  t          d
d          |z  z   dfd|dz  t          d	d          |d
z  z  z
  t          dd          |dz  z  z   t          dd          |z  z   dfg}t          |d         |d         |           }t	          |          }t          ||          d| j        dfk    sJ t          t          t          |          d         d          t          |          t          |                    }t          ||          |k    sJ d S )Nr"   )r   r!   r   r!   )r   r   r'   r%   )r   r    rU   r    r#   ))r   r   r!   r      rw   r$   ))r   r   r   r   r   rz   r&   r   ))r   r   r   r!   d   )r   r   r   r   r   r   r   r   r   r   r   r   )r)   r*   r+   r.   rK   cpss          r/   test_f5_reducer     s   GR%%HAq1
!ac'AaC-!+Q	/
!AqD&1Q3q5.1Q3.1a47!A#=q	A
"R((1*Q,Aa2Qq!tV;b1ggaiG	K
!bAg+2aA51Q	A1	E
!Q$Br1a4/"Qr((1a4-?"Qr((1*La	P		RA 
qtQqT1	%	%Br

AQ??~qvq99999CQ
C  %((CFF33AQ??ar1   c                     t          dt          t                    \  } }}g d}|dz  |z
  d|z  z
  dz   d|z  |dz  z   |z   dz
  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J d S )
Nr   ))r   r   )r   r!   )r!   r   )r!   r!   r   r    r!   r   r#   r'   )r   r   r   r   )r)   r*   r+   basisrK   s        r/   test_representing_matricesr     s    %U##FAq,,,E	
AAaC!	RTAqD[1_q01A!%A..
Q((Bq!HHbAhhY1a	1
Q((Bq!HHbAhh1ay	1
Q((Bq!HHbAhh1a	1
Q((Bq!HHbAhh1a	1	3 Q((Bq!HHbAhh1ay	1
Q((Bq!HH9bAhh1a	1
Q((Bq!HHbAhh1a	1
Q((Bq!HHbAhh1ay	1	334 4 4 4 4 4 4r1   c                  4   t          dt                    \  } }}}t          |dz  |dz  z
  ||z
            |dz  |dz  z
  k    sJ t          d|dz  z  d|dz  z  z
  d|z  d|z  z
            d|dz  z  d|dz  z  z
  k    sJ t          dt                    \  } }}}t          |dz  |dz  z
  ||z
            |dz  |dz  z
  k    sJ t          d|dz  z  d|dz  z  z
  d|z  d|z  z
            d|dz  z  d|dz  z  z
  k    sJ t          dt                    \  } }}t          |dz  |z  ||dz  z            |dz  |dz  z  k    sJ d|z  |dz  z  d|z  |dz  z  z
  d|z  |dz  z  z
  d|z  |dz  z  z   }|dz  d|dz  z  z
  |z   }d|z  |dz  z  d|z  |dz  z  z
  d|z  |dz  z  z
  d|z  |dz  z  z   d|z  |dz  z  z   d|z  |dz  z  z
  }t          ||          |k    sJ |dz  d|dz  z  |z  z
  d	|z  |dz  z  z
  d|dz  z  z
  }|dz  d|dz  z  |z  z   d
|dz  z  |dz  z  z   d|z  |dz  z  z   d|dz  z  z   }|dz  |dz  |z  z   d|dz  z  |dz  z  z
  d|dz  z  |dz  z  z
  d|z  |dz  z  z
  d|dz  z  z
  }t          ||          |k    sJ d S )Nr"   r   r   r&   r    r#   r$   r'   rW   rT   rU   r   2   /   r   )r   r   r   r   )r)   r*   r+   r.   r,   r-   hs          r/   test_groebner_lcmr     sf   GR  HAq11q!tQU++q!tad{::::!Q$1a41qs33qAv!Q$FFFFGR  HAq11q!tQU++q!tad{::::!Q$1a41qs33qAv!Q$FFFF%__FAq1Q!Q$''1a4194444	!AqD1Q3q!t8ac!Q$h&1QT1A	1qAvA	!AqD1Q3q!t8ac!Q$h&1QT1AaC1H<qs1a4xGA1""""	1qAvax!A#ad("Qq!tV+A	1qAvax"QT'!Q$,&Aad2Qq!tV;A	1q!tAv1a41$r!Q$wq!t|3bd1a4i?"QT'IA1""""""r1   c                     t          dt                    \  } }}}t          |dz  |dz  z
  ||z
            ||z
  k    sJ t          d|dz  z  d|dz  z  z
  d|z  d|z  z
            d|z  d|z  z
  k    sJ t          dt                    \  } }}}t          |dz  |dz  z
  ||z
            ||z
  k    sJ t          d|dz  z  d|dz  z  z
  d|z  d|z  z
            ||z
  k    sJ d S )Nr"   r   )r   r   r   r   )r)   r*   r+   r.   s       r/   test_groebner_gcdr     s   GR  HAq11q!tQU++q1u4444!Q$1a41qs33qsQqSy@@@@GR  HAq11q!tQU++q1u4444!Q$1a41qs33q1u<<<<<<r1   c                      t          dt          t                    \  } }}|dz  ||z  t          dd           |z  |dz  z   g}|dz  ||z  t          dd           |z  |dz  z   g}t          ||           du sJ t          ||           du sJ d S )Nr   r   r!   r    TF)r   r   r   r   )r)   r*   r+   valid_groebnerinvalid_groebners        r/   test_is_groebnerr     s    %U##FAqdAaC"Qq''!ad!23N1acBqGG8A:1#45~q))T1111'++u444444r1   c                     t          dt          t                    \  } }}|dz  d|z  |dz  z  z   }||z  d|dz  z  z   dz
  }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-   rL   s         r/   test_is_reducedr     s    5"c""GAq!	1qs1a4xA	!a1fqAq!fa  U****!QAat######r1   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   r7   r0   r:   r?   rM   rP   rR   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r1   r/   <module>r     s-                                            9 8 8 8 8 8 , , , , , , , , ) ) ) ) ) ) ) ) & & & & & & & & % % % % % % , , , , , ,h h hT      % % %% % %
! ! !D  ,' ' '' ' '  :' ' '' ' 'B B BJ ( ( (( ( (  :& & && & &/ / /% % %  &+ + +*C C C"     &4 4 4 # # #6	= 	= 	=5 5 5$ $ $ $ $r1   