
    g4                         d Z ddlmZmZmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ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 Z!d Z"d Z#dS )zTest modules.py code.    )
FreeModuleModuleOrderFreeModulePolyRing)CoercionFailedQQlexgrlexilexZZ)xyz)raises)Rationalc                     t          j        t                                        d          } |                     dt          t          dz  g          t          j        t                                        d          t          j        t                                        t                    t          j        t                                        t          dz            g}t                    |k    sJ |d         d         k    sJ |d         d         k    sJ |d         d         k    sJ t          t          fd           |                     t          ddg          }|z   |                     t          dz   t          t          dz  g          k    sJ ||z   |                     t          dz   t          t          dz  g          k    sJ  |                     dt           t          dz   g          k    sJ |z
  |                     dt          z
  t          t          dz  g          k    sJ |k    sJ |                     t          t          t          g          t          j        t                                        t                    z  g dk    sJ t          j        t          d	          }|                    d                              t          g          |                    t                    z  dgk    sJ d S )
N         r   c                       d         S )Nr    )es   _/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/agca/tests/test_modules.py<lambda>z(test_FreeModuleElement.<locals>.<lambda>   s    qt     r   r   r   r
   order)r   old_poly_ringr   free_moduleconvertlistr   
IndexError)MfgRr   s       @r   test_FreeModuleElementr(   
   s   
''**A			1aA,A		!			$	$Q	'	')9!)<)<)D)DQ)G)GIYZ[I\I\IdIdefhieiIjIjkA77a<<<<Q41Q4<<<<Q41Q4<<<<Q41Q4<<<<
:||||$$$			1a)Aq5AIIq1uaA.//////q5AIIq1uaA.//////2BQTE?++++++q5AIIq1uaA.//////666699aAY""21"5"5"="=a"@"@@IIIMMMM
&)))A==##QC((199Q<<7A3>>>>>>r   c                  &   t          t          j        t                    d          t          t          j        t                    d          k    sJ t          t          j        t                    d          k    sJ t          t          j        t                    d          k    sJ t          t          j        t          d          d          } t          dgv sJ t          gvsJ dt          gvsJ dt          dz   z  dgvsJ                     t          t          dz  dz   g          }t          j        t                                        t                    }|||dz  dz   gk    sJ |t          t          dz  dz   gk    sJ d|z  dt          z  dt          dz  z  dz   gk    sJ |dz  dt          z  dt          dz  z  dz   gk    sJ |dz  t          dz  t          dz  dz   dz  gk    sJ t          |z  t          dz  t          dz  t          z   gk    sJ |t          z  t          dz  t          dz  t          z   gk    sJ ||z  t          dz  t          dz  t          z   gk    sJ ||z  t          dz  t          dz  t          z   gk    sJ t          dg| v sJ t          g| vsJ dt          g| vsJ dt          dz   z  dg| v sJ |                     t          t          dz  dz   g          }t          j        t          d                              t                    }|||dz  dz   gk    sJ |t          t          dz  dz   gk    sJ d|z  dt          z  dt          dz  z  dz   gk    sJ |dz  dt          z  dt          dz  z  dz   gk    sJ |dz  t          dz  t          dz  dz   dz  gk    sJ t          |z  t          dz  t          dz  t          z   gk    sJ |t          z  t          dz  t          dz  t          z   gk    sJ |dt          z   z  t          dt          z   z  t          dz  dz   dt          z   z  gk    sJ ||z  t          dz  t          dz  t          z   gk    sJ ||z  t          dz  t          dz  t          z   gk    sJ t          t          j        t          t                    d                              |                              t          t          dz  dz   g          k    sJ                     d          rJ                                 rJ t          t          d            t          t          d            t          t          fd	           t          t          fd
           d S )Nr   r   r
   r   r   r   c                  Z    t          j        t                                        d          S Nr   )r   r   r   r    r   r   r   r   z!test_FreeModule.<locals>.<lambda>P   s    (8(;(;(G(G(J(J r   c                  ,    t          t          d          S r+   )r   r   r   r   r   r   z!test_FreeModule.<locals>.<lambda>Q   s    (:2q(A(A r   c                                            t          j        t                                        d                               g d                    S )Nr   r   r   r   )r!   r   r   r   r    )M1s   r   r   z!test_FreeModule.<locals>.<lambda>R   sA    2::b.>q.A.A.M.Ma.P.PGIII$  $  r   c                  .                          d          S Nr   )r!   )M3s   r   r   z!test_FreeModule.<locals>.<lambda>T   s    2::a== r   )r   r   r   r   r   r!   is_submoduleis_zeror   NotImplementedErrorr   )M2r   Xr/   r2   s      @@r   test_FreeModuler8       s   	B$Q''	+	+BB,Q//333333B,Q//333333B,Q//333333	B$Qf555q	9	9Bq6R<<<<3b====q6q1uIq>####


Aq!tax=!!A
##A&&AAqD1HAqD1HQ31Q3!Q$
#####Q31Q3!Q$
#####Q31Q3A1%%%%%Q31a4A"""""Q31a4A"""""Q31a4A"""""Q31a4A"""""q6R<<<<3b====q6q1uIq>R


Aq!tax=!!A
&)))11!44AAqD1HAqD1HQ31Q3!Q$
#####Q31Q3!Q$
#####Q31Q3A1%%%%%Q31a4A"""""Q31a4A"""""a!e9AEQTAXA$677777Q31a4A"""""Q31a4A"""""	B$Q**A	.	.B::a==BJJ1a4!8}555555q!!!!!zz||
 J JKKK
 A ABBB
>         ! ! !
>000011111r   c                  N   t          t          t          d          } t          t          t          d          }| t          t          t          d          k    sJ | t          t          t          d          k    du sJ | |k    sJ  | d          dk    sJ  |d          dk    sJ d S )NFr.   )r   )   r   r   )r   r;   )r   r   r	   r
   )o1o2s     r   test_ModuleOrderr>   W   s    	S%	'	'B	T3	&	&BS%//////+c5%000U::::88882i==,,,,,2i==L((((((r   c                  @   t          j        t          t                                        d          } |                     g dg dg d          }|                     t          dz  t          dz  z   ddgt          t          dg          | |k    sJ || k    sJ | k    sJ | k    sJ |k    sJ |k    sJ | | j        |                                  k    sJ |                                sJ                                 rJ |                                rJ                                 rJ |                                                                sJ 	                    t          dz  t          dz  z   t          z   dt          z   dg          sJ 	                    t          dz  t          dz  z   t          z   dt          z   dg          rJ 	                    t          dz  dt          t          z  z
  t           g          sJ |                     dt          z   ddg          |                     g d          k    rJ |                     g dg d          
                    |                     g d	                    | k    sJ                     d          rJ |                     t          dz  t          dz  z   ddg          }                    |          }|j        | u sJ |j        u sJ t          t          fd
           t          t           fd           t          t          fd           |                     t          t          t          g          |                     t          t          t          gd          k    sJ d S )Nr   r   r   r   r   r   r   r.   r   r   r   r   r   r   r   r   r   c                  2                          g d          S Nr@   	submoduler$   s   r   r   z/test_SubModulePolyRing_global.<locals>.<lambda>       q{{99955 r   c                  .                          d          S r1   )unionrH   s   r   r   z/test_SubModulePolyRing_global.<locals>.<lambda>   s    aggajj r   c                                                                d                              t          g                    S r1   )rK   r    rG   r   )r$   r'   s   r   r   z/test_SubModulePolyRing_global.<locals>.<lambda>   s/    qwwq}}Q'7'7'A'A1#'F'FGG r   r
   r   )r   r   r   r   r    rG   basisis_full_moduler4   containsrK   r3   r!   moduler   
ValueError	TypeError)FFdmnr$   r'   s       @@r   test_SubModulePolyRing_globalrW   c   sd   
AA	aA	
YYY			999	5	5B	QTAqD[!Q'!Q33A777777776666666677777777aggii(((((!!!!!zz||yy{{<<>>!!#####::q!tad{QAq122222zz1a4!Q$;?AE1566666::q!tQ1Wqb)*****{{AE1a=))Q[[-C-CCCCC;;yyy))),,221;;yyy3I3IJJaOOOO~~a     			1a4!Q$;1%&&A			!A8q====8q====
:5555666
9(((()))
:GGGGGHHH;;1ay!!Q[[!Q&[%I%IIIIIIIr   c            	         t          j        t          t          t                    } |                     d          }|                    dt          z   ddgdt          z   ddt          z  z   dgg d          }|                    t          dz  t          dz  z   ddgt          t          dg          ||k    sJ ||k    sJ |k    sJ |k    sJ |k    sJ |k    sJ | |j        |                                 k    sJ |                                sJ                                 rJ |	                                rJ 	                                rJ |                                	                                sJ 
                    t          dz  t          dz  z   t          z   dt          z   dg          sJ 
                    t          dz  t          dz  z   t          z   dt          z   dg          rJ 
                    t          dz  dt          t          z  z
  t           g          sJ |                    dt          z   ddg          |                    g d          k    sJ |                    g dg d                              |                    dddt          t          z  z   g                    |k    sJ t          t          fd	           d S )
Nr   r   r   r   r   r.   r@   rB   c                  2                          g d          S rE   rF   rH   s   r   r   z.test_SubModulePolyRing_local.<locals>.<lambda>   rI   r   )r   r   r   r   r
   r    rG   rM   rN   r4   rO   rK   r   rQ   )r'   rS   rT   r$   s      @r   test_SubModulePolyRing_localrZ      s   
AT***A	aA	
a!eQ]QUA!GQ$7	C	CB	QTAqD[!Q'!Q33A777777776666666677777777aggii(((((!!!!!zz||yy{{<<>>!!#####::q!tad{QAq122222zz1a4!Q$;?AE1566666::q!tQ1Wqb)*****;;Aq!}%%YYY)?)?????;;		999 #eAKKAq1Q3w$@$@AAQG G G G :555566666r   c                  T   t          j        t          t          t                    } |                     d          fd} |t          t          gt                    sJ  |t          t          gt          t          z             sJ  |t          t          gd          rJ  |t          t          gt                    rJ  |t          dz  t          z   t          dz  t          z   gt          t          z
            sJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          dz            rJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          dz            sJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          dz            sJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          t          dz  z            rJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          dz  t          dz  z   dt          z  t          z  t          z  z             sJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          t          z  t          z            sJ  |t          dt          z   t          z   ddt          z  z
  gd          sJ  |t          dz  t          dz  z   t          dz  t          dz  z   t          dz  t          dz  z   t          dz  t          z  t          dz  t          z  z   t          dz  t          z  z   gt          dz            sJ  |t          dz  t          dz  z   t          dz  t          dz  z   t          dz  t          dz  z   t          dz  t          z  t          dz  t          z  z   t          dz  t          z  z   gt          dz  t          dz  z             rJ  |t          dt          z   t          z   z  t          dt          z   z  gt                    rJ  |t          dt          z   t          z   z  t          dt          z   z  gt          t          z             rJ d S )Nr   c                 T     j         d | D                                  |g          S )Nc                     g | ]}|gS r   r   .0r&   s     r   
<listcomp>zKtest_SubModulePolyRing_nontriv_global.<locals>.contains.<locals>.<listcomp>       ,,,QaS,,,r   rG   rO   Ir%   rS   s     r   rO   z7test_SubModulePolyRing_nontriv_global.<locals>.contains   1    q{,,!,,,-66s;;;r   r   r      r:      )r   r   r   r   r   r    r'   rO   rS   s     @r   %test_SubModulePolyRing_nontriv_globalri      sF   
Aq!!A	aA< < < < < 8QFA8QFAE"""""xA"""""xA"""""8QTAXq!tax(!a%00000xQAaC!A#I!OQqSU;QTBBBBB8QUQY!ac	AaC1Q7A>>>>>8QUQY!ac	AaC1Q7A>>>>>xQAaC!A#I!OQqSU;Qq!tVDDDDD8QUQY!ac	AaC1Q7A1qs1uQw9NOOOOO8QUQY!ac	AaC1Q71Q?????8QA	1qs7+Q/////8	
A1adQTk1a4!Q$;1QAa!Q$q&0HI	1     x	
A1adQTk1a4!Q$;1QAa!Q$q&0HI	1q!t    
 xAEAI1q5	2A66666xAEAI1q5	2AE:::::::r   c                     t          j        t          t          t          t
                    } |                     d          fd} |t          t          gt                    sJ  |t          t          gt          t          z             sJ  |t          t          gd          rJ  |t          t          gt                    rJ  |t          dz  t          z   t          dz  t          z   gt          t          z
            sJ  |t          t          z   t          z   t          t          z  t          t          z  z   t          t          z  z   t          t          z  t          z  gt          dz            rJ  |t          dt          z   t          z   z  t          dt          z   z  gt                    sJ  |t          dt          z   t          z   z  t          dt          z   z  gt          t          z             sJ d S )Nr   r   c                 T     j         d | D                                  |g          S )Nc                     g | ]}|gS r   r   r^   s     r   r`   zJtest_SubModulePolyRing_nontriv_local.<locals>.contains.<locals>.<listcomp>   ra   r   rb   rc   s     r   rO   z6test_SubModulePolyRing_nontriv_local.<locals>.contains   re   r   r   )r   r   r   r   r   r
   r    rh   s     @r   $test_SubModulePolyRing_nontriv_localrm      s   
Aq---A	aA< < < < < 8QFA8QFAE"""""xA"""""xA"""""8QTAXq!tax(!a%00000xQAaC!A#I!OQqSU;QTBBBBB8QA	]Aq1uI.222228QA	]Aq1uI.A6666666r   c                  8   t          j        t          t          t                    } |                     d                              t          t          z  gt          t          z  gt          t          z  g          }|                     d                              dt          t           gt          t           dg          }|                                |k    sJ |t          t          z  t          z  gfz  }|                     d                              t          ddgdt          dgddt          g          }|                                |k    sJ |                     d          } |j        |                                                                 |                                k    sJ t          j        t          t          t                    t          t          z  t          z  gz  }|                    d                              t          t          z  gt          t          z  gt          t          z  g          }|                    d                              t          ddgdt          dgddt          g          }|                                |k    sJ d S )Nr   r   r   )	r   r   r   r   r   r    rG   syzygy_modulerM   )	r'   r$   Sr6   S2rS   R2r2   S3s	            r   test_syzygyrt      s   
Aq!!A	a""AaC51Q3%!A#77A	a""Aq1":A2qz::A??!!!!	
qs1ugZB	
q			#	#Q1I1ay1a)	D	DB####	aA1;		"0022akkmmCCCC		!Q	"	"ac!eW	,B				$	$acUQqSEAaC5	9	9B				$	$aAYAq	Aq!9	E	EB######r   c                  4   t          j        t          d          } |                     d                              dt          z  dgddg                              t          t          g          |                     t          dd                    |                     t          dz            gk    sJ t          t          fd           |                     d          t          dgddgfz                      dt          g          }|                    ddg          |                     dt          dz
  z            gk    sJ t          j        t          t                    t          dz  t          dz  z
  gz  } |                     d                              t          dgdt          g          }|                    t          dz  t          dz  g          |                     t                    |                     t                    gk    sJ d S )	Nr
   r   r   r   r   rf   c                  2                          ddg          S )Nr   r   )in_terms_of_generatorsrH   s   r   r   z-test_in_terms_of_generators.<locals>.<lambda>   s    q77A?? r   )r   r   r   r    rG   rw   r!   r   r   rQ   r   )r'   SMr$   s     @r   test_in_terms_of_generatorsrz      s   
&)))A	a""AaC8aV44A##	
A IIhq!nn--qyy1~~>? ? ? ?
:????@@@	aQFQF++A	
aV		B$$aV,,2q1u:1F1F0GGGGG
A!Q$A+.A	aA	
aVaV	$	$B$$	
Aq!t ))A,,		!56 6 6 6 6 6r   c                  4
  	 t          j        t                    } |                     d          }|                    dt          t          dz  g          }||z                      t          dz  ddg          }                    t          dz   t          dz  t          z   t          dz  t          dz  z   g          dk    sJ |t          dz  ddg|z   cxk    r_|                    t          dz  ddg          |z   cxk    r7                    |                    t          dz  ddg                    k    sn J                     t          dz  dz   dt          z  dz   t          dz  g          |dt          dgz   cxk    rI|                    dt          dg          z   cxk    r$||                    dt          dg          z   k    sn J                     t          dz  dz   dt          dz  g          |dt          dgz
  cxk    rI|                    dt          dg          z
  cxk    r$||                    dt          dg          z
  k    sn J                     g d                              t          dz  ddg          |z
  cxk    r<t          dz  ddg|z
  cxk    r'|                    t          dz  ddg          |z
  k    sn J                     t          dz  t          dz  z   dt          z  dz   dg          dt          z   |z  cxk    r[|                     dt          z             |z  cxk    r6|dt          z   z  cxk    r$||                     dt          z             z  k    sn J | t          dz   ddgk    sJ t          t          dg|z   }                    g d          |t          z  cxk    r!||                     t                    z  k    sn J |ddt          z  dt          dz  z  fd	gz  |                     d          dt          ggz  	|                    dt          t          dz  gg d
          |z  }t          t          fd           t          t          	fd           t          t          fd                                                   dt          t          dz  g                    dt          dgk    sJ                     |                    g d                    g dk    sJ d S )Nr   r   r   r   )r   r   r   rf   rx   )r   r   r   rC   r@   c                  b                                               dt          g                    S r1   r!   r   )Gr$   s   r   r   z,test_QuotientModuleElement.<locals>.<lambda>  s#    199QYY1v->->#?#? r   c                  b                                               dt          g                    S r1   r}   )r$   r2   s   r   r   z,test_QuotientModuleElement.<locals>.<lambda>  s#    199RZZA-?-?#@#@ r   c                  n                                               dt          t          g                    S r1   r}   )r$   r6   s   r   r   z,test_QuotientModuleElement.<locals>.<lambda>  s%    199RZZAq	-B-B#C#C r   r   r   r   )r   r   r   r    rG   r!   r   r   )
r'   rS   Nr   r%   M4r~   r$   r6   r2   s
         @@@@r   test_QuotientModuleElementr      s   
A	aA	Q1a4L!!A	!A			1a4A,A99a!eQTAXq!tad{3449999Aq!q  + + + +AIIq!tQl$;$;a$? + + + +			!))QT1aL))**+ + + + + + 99adQh!aA.//11ay= = = = =	AIIq!Qi   = = = =$%		1a)(<(<$<= = = = = =99adQh1a4())Q!Q] = = = =	AIIq!Qi   = = = =$%		1a)(<(<$<= = = = = =99YYY199adAq\#:#:Q#> 8 8 8 8	
Aq!q8 8 8 8IIq!tQl33a78 8 8 8 8 899adQTk1Q37A.//AE19 > > > >			!a%> > > >Qi> > > >+,QYYq1u-=-=+=> > > > > >21a4%Q	
Aq	AA99YYY1q5<<<<A		!,<<<<<<<	
Q!Qq!tVi(	(B	aA	
QF8B	
aAqD\999	-	-	1B
>?????@@@
>@@@@@AAA
>CCCCCDDD::aiiAq!t--..1a);;;;99RZZ			**++yyy888888r   c                     t          j        t                                        d                              dt          t          dz  g          z  k    sJ k    sJ dt          t          dz  fgz  k    sJ                                 rJ                                 z                                  sJ                     dt          t          dz  gg d          z  } |                     dt          t          dz  g          k    sJ |                     g d          k    sJ | k    sJ                     |           sJ |                                 rJ t          t          fd           t          t          fd           t          t          fd           t          t          fd	           g d
gz  }|                    g dg d          }||k    sJ d S )Nr   r   r   r   )r   r   r   c                       z  S Nr   rS   r   s   r   r   z%test_QuotientModule.<locals>.<lambda>5  s    qs r   c                  8                          g d          z  S )Nr   rF   r   s   r   r   z%test_QuotientModule.<locals>.<lambda>6  s    q{{999559 r   c                  4                         d           z  S r+   )r    )rS   r'   s   r   r   z%test_QuotientModule.<locals>.<lambda>7  s    q}}Q//1 r   c                  t                                               dt          t          dz  g                    S )Nr   r   r}   )rS   r$   s   r   r   z%test_QuotientModule.<locals>.<lambda>8  s)    199QYY1ad|-D-D#E#E r   r   r@   rB   )r   r   r   r    rG   r4   rM   r3   rN   r   rQ   r   )SQr/   r6   rS   r$   r   r'   s      @@@@r   test_QuotientModuler   "  s   
A	aA	Q1a4L!!A	!A66666666aAqD\N"""""yy{{		M""$$$$$	
aAqD\999	-	-	1BaAqD\******YYY''''''7777>>"  """""
:{{{{{###
:99999:::
:11111222
>EEEEEFFF	
iii[B	iii	+	+B888888r   c                  F   t          j        t          t          dt          fdt          ff          t          dz  dz   gz  } |                     d          }||                     d          k    sJ |t          j        t                                        d          k    sJ ||                     d          k    sJ t          dg|v sJ t          g|vsJ d|                     t                    dz   z  dg|v sJ dddt          z   z  g|v sJ ddt          z  g|vsJ |                    t          dz  t          g          dt          gk    sJ |                     d          }|                    t          dz  ddgg d	g d
          }|                    t          dz  t          dz  z   ddgt          t          dg          }||k    sJ ||k    sJ ||k    sJ ||k    sJ ||k    sJ ||k    sJ | |j        |                                 k    sJ |                                sJ |                                rJ |	                                rJ |	                                rJ |                                	                                sJ |
                    t          dz  t          dz  z   t          z   t          dz   t          z   dg          sJ |
                    t          dz  t          dz  z   t          z   dt          z   dg          rJ |
                    t          dz  dt          t          z  z
  t           g          sJ |                    t          ddg          |                    g d          k    sJ |                    t          ddg          |                    g d          k    rJ |                    g dg d                              |                    g d                    |k    sJ |                    d          rJ d S )Nr   r
   r   r   r   r   r   r   rA   r.   r@   rB   rC   )r   r   r   r   r    r!   rG   rM   rN   r4   rO   rK   r3   )r'   r/   rS   rT   r$   s        r   test_ModulesQuotientRingr   ?  s   
Auaj61+%>???1a4!8*LA	
q		Bq!!!!!!!!$$00333333q!!!!!!q6R<<<<3b====qyy||a !$****q!a%y>Rqs82::q!tQi  RG++++	aA	
adAq\999iii	8	8B	QTAqD[!Q'!Q33A777777776666666677777777aggii(((((!!!!!zz||yy{{<<>>!!#####::q!tad{QA	1566666zz1a4!Q$;?AE1566666::q!tQ1Wqb)*****;;1ay!!Q[[%;%;;;;;{{Aq!9%%YYY)?)?????;;yyy))),,221;;yyy3I3IJJaOOOO~~a       r   c                     t          j        t                    } |                     d          }|                    t          dgdt          g          }|                    t          dz  dgdt          dz  g          }|                     t                    }||z  ||z  cxk    r$|cxk    rt          |z  cxk    r|t          z  k    sn J ||z  |cxk    rt          |z  k    sn J d S )Nr   r   )r   r   r   r    rG   ideal)r'   r$   S1rq   rd   s        r   test_module_mulr   j  s    
A	aA	
aVaV	$	$B	
adAYAqD		*	*B	

AQ3!A#))))))))qs))))ac))))))R422r   c            	      >   t          j        t          t                                        d          } |                     t          t          gt          dg          }|                     dt          dz
  gt          dgt          t          g          }|                     t          t          gt          dz  t          z
  t          dz
  gt          t          z  t          z   t          dz   g          }|                    |d          \  }}}||                    |          cxk    r|k    sn J t          |j                  D ]v\  }}|t          d t          ||         |j                  D                       cxk    r6t          d t          ||         |j                  D                       k    sn J w|                     t          t          g                              |                     t          t          g                                                    sJ d S )Nr   r   r   T	relationsc              3   &   K   | ]\  }}||z  V  d S r   r   r_   cr   s      r   	<genexpr>z$test_intersection.<locals>.<genexpr>~  *      >>1!>>>>>>r   c              3   &   K   | ]\  }}||z  V  d S r   r   )r_   dr   s      r   r   z$test_intersection.<locals>.<genexpr>  r   r   )r   r   r   r   r    rG   	intersect	enumerategenssumzipr4   )	rS   r/   r6   rd   I1rel1rel2ir&   s	            r   test_intersectionr   u  s   
A**1--A	
aVaV	$	$B	
aQZ!Q!Q	0	0B	QFQTAXq1u-!aQ/?@@A\\"\55NBdb!!&&&&Q&&&&&&"'"" ? ?1C>>DGRW(=(=>>>>> ? ? ? ?>>DGRW(=(=>>>>>? ? ? ? ? ? ? ;;1v((aV)<)<==EEGGGGGGGr   c            	      H   t          j        t          t          t                    } |                     d          }|                    t          t          z  t          t          z  gt          t          z  t          t          z  g                              |                    t          t          gt          t          g                    t          j        t          t          t                                        t          dz  t          dz  z  t          t          z  t          dz  z  z
            k    sJ |                    t          t          g                              |                                          	                                sJ |                    t          dz  t          dz  gt          dz  t          dz  g          }|                    t          t          z   t          t          z   g          }|                    |d          \  }}||                     t          dz  t          t          z
            k    sJ t          |j                  D ]K\  }}||j        d         z  t          d t          ||         |j                  D                       k    sJ Ld S )Nr   Tr   r   c              3   &   K   | ]\  }}||z  V  d S r   r   r   s      r   r   z test_quotient.<locals>.<genexpr>  s*      !F!F$!Q!A#!F!F!F!F!F!Fr   )r   r   r   r   r   r    rG   module_quotientr   is_whole_ringr   r   r   r   )r'   rS   r$   r   qrelr   r&   s           r   test_quotientr     s   
Aq!!A	aA;;!QqSzAaC1:..>>	QFQF##% %(*(8Aq(A(A(G(G1QPQT	TUVWTWXY[\X\T\H\(](]^ ^ ^ ^;;1v..q{{}}==KKMMMMM	QT1a4L1a4A,//A	QUAEN##AqD11FAs1a!e$$$$$$!&!! G G1{c!F!F#c!faf2E2E!F!F!FFFFFFFFG Gr   c            	         t          j        t          t          t                                        d                              t          dz   t          dgt          t          z  t          t          dz  g          } |                     d          \  }}t          |          D ]=\  }}|t          d t          ||         | j                  D                       k    sJ >d S )Nr   r   r   T)extendedc              3   &   K   | ]\  }}||z  V  d S r   r   )r_   r   gens      r   r   z*test_groebner_extendend.<locals>.<genexpr>  s*      >>&!S#>>>>>>r   )r   r   r   r   r   r    rG   _groebner_vecr   r   r   r   )r$   r~   r'   r   r&   s        r   test_groebner_extendendr     s    
Aq!!--a00::AE1a=1Q3PQSTVWSW.YYA??D?))DAq! ? ?1C>>C!af,=,=>>>>>>>>>>? ?r   N)$__doc__sympy.polys.agca.modulesr   r   r   sympy.polysr   r   r   r	   r
   r   	sympy.abcr   r   r   sympy.testing.pytestr   sympy.core.numbersr   r(   r8   r>   rW   rZ   ri   rm   rt   rz   r   r   r   r   r   r   r   r   r   r   <module>r      s     P P P P P P P P P P @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @           ' ' ' ' ' ' ' ' ' ' ' '? ? ?,42 42 42n	) 	) 	)%J %J %JP7 7 7>; ; ;>7 7 7"$ $ $&6 6 6$ 9  9  9F  :(! (! (!V  H H HG G G ? ? ? ? ?r   