
    sgH                     f   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@y')(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                     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 y )Nx,y         zy,xx,y,z                  )r   r   r   r   r   )Rxyfgzs         W/var/www/html/venv/lib/python3.12/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!Wn"5555%S!FAq	!Q$q1a4A	!Q$1qAQFA1adR!Wn"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!Awhqj1a4.?"@@@@GR%HAq1	
A	A	
A	AQFA1a4!8QqS1WacAqDj!Q$A+"NNNNGR'HAq1	
A	A	
A	AQFA1a4!Q$;1q!A#'1Q3A:"NNNNGR%HAq1	
A	A	
A	AQFA1a4!8QqS1a4Z1q!Q$A+"NNNNGR'HAq1	
A	A	
A	AQFAAqD51a4<A1Q3A:qsQw"OOOOGR%HAq1	AqDA	
A	AQFA1q!t8QTAX"6666GR'HAq1	AqDA	
A	AQFA1a4!A#:qsQwQT	"BBBBGR%HAq1	AqDA	AqDAQFA1q!t8QAX"6666GR'HAq1	AqDA	AqDAQFA1a4!A#:qsQwQT	"BBBBGR%HAq1	
A	A	AqDAQFA1qs7AqD1H"5555GR'HAq1	
A	A	AqDAQFAAqD51a4<1q!tQTAXrAaCx"PPPPGR%HAq1	AqDA	AqDAQFA1q!t8QAX"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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!Awq!t|3b2h>#       c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wN
buchbergerr   configusingr0    r1   r/   test_groebner_buchbergerr:      s)    	|	,      +4c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY w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 y )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	1BtDM!Q$4F	FDQTVWYZVZIZ	Z]_`dei]jkl]l	loqrtuwox	x	
R"Xad]	R3Z1_	,r#c{1a4/?	?"S*QPQT/	QTVW[\_T`abTb	beghkloep	p	
A!Q$AqD	 2ad7	*R1W	4r!t	;b	@	BA Aq>Qr1   c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr3   r7   r8   rM   r9   r1   r/   !test_benchmark_minpoly_buchbergerrP      s)    	|	, %"$% % %r;   c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr=   rO   r9   r1   r/   test_benchmark_minpoly_f5brR      s)    	u	% %"$% % %r;   c                  `   t        dd      } g d}t        | D cg c]  }d|z  	 c}t        t              \  }} |D cg c]  \  }}| |dz
     | |dz
     f }}}| \  }}}}	}
}}}}}}}| D cg c]
  }|dz  dz
   }}|D cg c]  \  }}|dz  ||z  z   |dz  z    }}}||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 y c c}w c c}}w c c}w c c}}w )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#   zx%dr    r   )ranger   r   r   r   )VEvr)   ijx1x2x3x4x5x6x7x8x9x10x11x12r*   I3r+   IgIs                          r/   test_benchmark_coloringrn      s   aA	GA a)519)2s3DAq*+,$!Q!AE(Aa!eH	,A,895BBBBBS#	q!Q$(	B	()	*1!Q$1*q!t
	*B	*
RAAcrFA
S3
S
S
S
S3
S
S
S3
Sc	CQS36!Q
#    Aq>aS   3 *, 
	*s   DD/D%D*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              \  } }}}|D cg c]  }|j                  |        }}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 y c c}w )Nzx:3r   r!   ir$   r%      i  r    O      (   T   r#   r&   rU   rT   rX   r   r   r   r   r   set_ring)r)   x0r_   r`   rm   r]   s         r/   _do_test_benchmark_katsura_3rx      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!**Q-$A$Aq>	"qtbQhRU*	b1RU7Qr1uW$	ad
RU2X2q5(
R!B$2	    	%s   E%c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr3   r7   r8   rx   r9   r1   r/   "test_benchmark_katsura3_buchbergerr{      )    	|	, '$&' ' 'r;   c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr=   rz   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              \  } }}}}|D cg c]  }|j                  |        }}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
  d/|z  z   | d0|dz  z  z   d1|dz  z  z
  d2|z  |z  z   d3|z  z
  d4|dz  z  z
  d5|dz  z  z   d6|z  z
  d7|z  d8|dz  z  |z  z   d9|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  d@|dz  z  z   dA|z  |dz  z  z   dB|z  |z  z
  dC|z  z   dD|dz  z  z   dE|dz  z  z
  d|z  z   d|dz  z  |z
  d|dz  z  z
  dF|z  |z  z
  d|z  z   d'|dz  z  z
  d
|z  z   dG|z  |z  |z
  dG|dz  z  z   d3|z  |z  z   d|z  z
  d|dz  z  z   d|z  z
  dG|z  |z  |z
  d|dz  z  z   d;|z  |z  z   d|z  z
  dH|dz  z  z   d6|z  z
  |d|z  z   d|z  z   d|z  z   dz
  gk(  sJ y c c}w )INz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`  $      i  i6  in  ;   im iXd i  i        <         S   rW   iin     i      iv  9   3   !   ?   i     "   i	  iQ           ru   )r)   rw   r_   r`   ra   rm   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!**Q-$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!#	 	 	 	 	%s   >Nc                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr3   r7   r8   r   r9   r1   r/   #test_benchmark_kastura_4_buchbergerr      r|   r;   c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY w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              \  } }}|D cg c]  }|j                  |        }}t        ||       d.|dz  z  |z  d/|dz  z  z
  d0|dz  z  |z  z   d1|dz  z  z
  d2|z  |z  z   d3|z  z
  d4|dz  z  z   d5|z  z   d6z
  d7|dz  z  d8|dz  z  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>|z  z   d?z   d@|dz  z  dA|dz  z  |z  z   dB|dz  z  z
  dC|z  |z  z   dD|z  z
  dE|dz  z  z   dF|dz  z  z   dG|z  z   dHz
  dI|dz  z  dJ|dz  z  |z  z   dK|dz  z  z
  dL|z  |dz  z  z   dM|z  |z  z   dN|z  z
  dO|dz  z  z   dP|z  z   dQz
  gk(  sJ y c c}w )RNz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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 ru   )r)   r*   trm   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!**Q-$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% % % % 	%s   Kc                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr3   r7   r8   r   r9   r1   r/   $test_benchmark_czichowski_buchbergerr   D  s)    	|	, (%'( ( (r;   c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY w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              \  } }}}}|D cg c]  }|j                  |        }}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 y c c}w )Nza,b,c,dr!   r#   r    rW   r&   r$   r   rU   r'   rT   r%   ru   )r)   abcdrm   r]   s          r/   _do_test_benchmark_cyclic_4r   M  s>   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!**Q-$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	 	 	 	 	%s   5Ic                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY wr3   r7   r8   r   r9   r1   r/   "test_benchmark_cyclic_4_buchbergerr   j  s)    	|	, &#%& & &r;   c                  n    t        j                  d      5  t                d d d        y # 1 sw Y   y xY w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              kD  sJ t        |t              t        |t              k  sJ y )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                  d   t        dt        t              \  } }}}}t        t	        dd      | j
                  d      }t        t	        dd      | j
                  d      }t        t	        dd      | j
                  d      }t        |      t        |      kD  sJ t        |      t        |      k  sJ y )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qvvr	*B	S1qvvr	*B	S1qvvr	*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 y )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   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   q2s	            r/   test_critical_pairr     sH   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                     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 y )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     sJ   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N***
B
"C
B
"C#q>F3N***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 y )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8AqD=2a719Q;#>Ab!A#MPQSTPTUVPV#VY[\]^`YabcefbfYf#fiklnoqirstituvxyuyiy#y|~  @B  CF  }G  HI  }I  JK  }K  $K  NP  QS  TU  NV  WX  Z[  W[  N[  $[  ^`  ac  df  ^g  hi  kl  hl  ^l  $l  no  
p  	qA 'tAwA:dBBBCa !&&!,A	Sq!2b8A:a<"Qq'!)A+#=1Q	#IAaQRdF#RUWXZ[\U]^_U_`aUa#adfghijdklmdm#mpqrsuvrvpv#vy{|}~  zA  BC  zC  $C  EF  
G  	HA 'tAwA:d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 y )Nr"   )r   r!   r   r!   )r   r   r'   r%   )r   r    rU   r    r#   ))r   r   r!   r      rq   r$   ))r   r   r   r   r   rt   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1gai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?~qvvq9999CQ
C %(CF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 y )
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!HbAhY1a	1
Q(Bq!HbAh1ay	1
Q(Bq!HbAh1a	1
Q(Bq!HbAh1a	1	3 Q(Bq!HbAh1ay	1
Q(Bq!H9bAh1a	1
Q(Bq!HbAh1a	1
Q(Bq!HbAh1ay	1	334 4 4 4r1   c                     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 y )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     s.   GR HAq11q!tQU+q!tad{:::!Q$1a41qs3qAv!Q$FFFGR HAq11q!tQU+q!tad{:::!Q$1a41qs3qAv!Q$FFF%_FAq1Q!Q$'1a419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 y )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!Q$1a41qs3qsQqSy@@@GR HAq11q!tQU+q1u444!Q$1a41qs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 y )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G8A:1#45~q)T111'+u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 y )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   rn   rx   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 , ) & % ,hT%%
!D,'':''BJ ( ((:&&/%&+*C" &4 #6	=5$r1   