
    \h4                         S r SSKJrJrJr  SSKJrJrJrJ	r	J
r
Jr  SSKJrJrJr  SSKJr  SSKJr  S rS rS	 rS
 rS rS rS rS rS rS rS rS rS r S r!S r"S r#g)zTest modules.py code.    )
FreeModuleModuleOrderFreeModulePolyRing)CoercionFailedQQlexgrlexilexZZ)xyz)raises)Rationalc                  H  ^ [         R                  " [        5      R                  S5      n U R	                  S[        [        S-  /5      m[         R                  " [        5      R	                  S5      [         R                  " [        5      R	                  [        5      [         R                  " [        5      R	                  [        S-  5      /n[        T5      U:X  d   eUS   TS   :X  d   eUS   TS   :X  d   eUS   TS   :X  d   e[        [        U4S j5        U R	                  [        SS/5      nTU-   U R	                  [        S-   [        [        S-  /5      :X  d   eX-   U R	                  [        S-   [        [        S-  /5      :X  d   eT* U R	                  S[        * [        S-  * /5      :X  d   eTU-
  U R	                  S[        -
  [        [        S-  /5      :X  d   eTU:w  d   eU R	                  [        [        [        /5      [         R                  " [        5      R	                  [        5      -  / SQ:X  d   e[         R                  " [        SS	9nUR                  S5      R	                  [        /5      UR	                  [        5      -  S/:X  d   eg )
N         r   c                     > T S   $ )Nr    )es   [/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/agca/tests/test_modules.py<lambda>(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)9!)<)D)DQ)GIYIYZ[I\IdIdefhieiIjkA7a<<Q41Q4<<Q41Q4<<Q41Q4<<
:|$			1a)Aq5AIIq1uaA.////5AIIq1uaA.////2BQTE?++++q5AIIq1uaA.////6M699aAY""2"21"5"="=a"@@IMMM
&)A==##QC(199Q<7A3>>>r   c                  8
  ^^ [        [        R                  " [        5      S5      mT[        [        R                  " [        5      S5      :X  d   eT[        [        R                  " [        5      S5      :w  d   eT[        [        R                  " [        5      S5      :w  d   e[        [        R                  " [        SS9S5      n [        S/T;   d   e[        /T;  d   eS[        /T;  d   eS[        S-   -  S/T;  d   eTR                  [        [        S-  S-   /5      n[        R                  " [        5      R                  [        5      nXUS-  S-   /:X  d   eU[        [        S-  S-   /:X  d   eSU-  S[        -  S[        S-  -  S-   /:X  d   eUS-  S[        -  S[        S-  -  S-   /:X  d   eUS-  [        S-  [        S-  S-   S-  /:X  d   e[        U-  [        S-  [        S-  [        -   /:X  d   eU[        -  [        S-  [        S-  [        -   /:X  d   eX!-  [        S-  [        S-  [        -   /:X  d   eX-  [        S-  [        S-  [        -   /:X  d   e[        S/U ;   d   e[        /U ;  d   eS[        /U ;  d   eS[        S-   -  S/U ;   d   eU R                  [        [        S-  S-   /5      n[        R                  " [        SS9R                  [        5      nXUS-  S-   /:X  d   eU[        [        S-  S-   /:X  d   eSU-  S[        -  S[        S-  -  S-   /:X  d   eUS-  S[        -  S[        S-  -  S-   /:X  d   eUS-  [        S-  [        S-  S-   S-  /:X  d   e[        U-  [        S-  [        S-  [        -   /:X  d   eU[        -  [        S-  [        S-  [        -   /:X  d   eUS[        -   -  [        S[        -   -  [        S-  S-   S[        -   -  /:X  d   eX!-  [        S-  [        S-  [        -   /:X  d   eX-  [        S-  [        S-  [        -   /:X  d   e[        [        R                  " [        [        5      S5      mTR                  U5      TR                  [        [        S-  S-   /5      :X  d   eTR                  S5      (       a   eTR                  5       (       a   e[        [        S 5        [        [        S 5        [        [        U4S	 j5        [        [        U4S
 j5        g )Nr   r   r
   r   r   r   c                  T    [         R                  " [        5      R                  S5      $ Nr   )r   r    r   r!   r   r   r   r   !test_FreeModule.<locals>.<lambda>P   s    (8(8(;(G(G(Jr   c                  "    [        [        S5      $ r,   )r   r   r   r   r   r   r-   Q   s    (:2q(Ar   c                     > T R                  [        R                  " [        5      R	                  S5      R                  / SQ5      5      $ )Nr   r   r   r   )r"   r   r    r   r!   )M1s   r   r   r-   R   s0    2::b.>.>q.A.M.Ma.PGI$ r   c                  &   > T R                  S5      $ Nr   )r"   )M3s   r   r   r-   T   s    2::a=r   )r   r   r    r   r   r"   is_submoduleis_zeror   NotImplementedErrorr   )M2r   Xr1   r4   s      @@r   test_FreeModuler:       s   	B$$Q'	+BB,,Q/3333B,,Q/3333B,,Q/3333	B$$Qf5q	9Bq6R<<3b==q6q1uIq>###


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


Aq!tax=!A
&)11!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31a4A""""31a4A""""	B$$Q*A	.B::a=BJJ1a4!8}5555q!!!!zz||
 JK
 AB
>   !
>01r   c                     [        [        [        S5      n [        [        [        S5      nU [        [        [        S5      :X  d   eU [        [        [        S5      :g  SL d   eX:w  d   eU " S5      S:X  d   eU" S5      S:X  d   eg )NFr0   )r   )   r   r   )r   r=   )r   r   r	   r
   )o1o2s     r   test_ModuleOrderr@   W   s    	S%	'B	T3	&BS%////+c5%00U:::8O8i=,,,,i=L(((r   c                    ^^ [         R                  " [        [        5      mTR	                  S5      n U R                  / SQ/ SQ/ SQ5      nU R                  [        S-  [        S-  -   SS/[        [        S/5      mX:X  d   eX:X  d   eU T:w  d   eTU :w  d   eUT:w  d   eTU:w  d   eXR
                  " U R                  5       6 :X  d   eUR                  5       (       d   eTR                  5       (       a   eUR                  5       (       a   eTR                  5       (       a   eUR                  5       R                  5       (       d   eTR                  [        S-  [        S-  -   [        -   S[        -   S/5      (       d   eTR                  [        S-  [        S-  -   [        -   S[        -   S/5      (       a   eTR                  [        S-  S[        [        -  -
  [        * /5      (       d   eU R                  S[        -   SS/5      U R                  / SQ5      :X  a   eU R                  / SQ/ SQ5      R                  U R                  / S	Q5      5      U :X  d   eTR                  S5      (       a   eU R                  [        S-  [        S-  -   SS/5      nTR                  U5      nUR                  U L d   eUR                  TL d   e[        [        U4S
 j5        [        [         U4S j5        [        [        UU4S j5        U R                  [        [        [        /5      U R                  [        [        [        /SS9:w  d   eg )Nr   r   r   r   r   r   r   r0   r   r   r   r   r   r   r   r   r   c                  *   > T R                  / SQ5      $ NrB   	submoduler%   s   r   r   /test_SubModulePolyRing_global.<locals>.<lambda>       q{{95r   c                  &   > T R                  S5      $ r3   )unionrJ   s   r   r   rK      s    aggajr   c                  l   > T R                  TR                  S5      R                  [        /5      5      $ r3   )rN   r!   rI   r   )r%   r(   s   r   r   rK      s$    qwwq}}Q'7'A'A1#'FGr   r
   r   )r   r    r   r   r!   rI   basisis_full_moduler6   containsrN   r5   r"   moduler   
ValueError	TypeError)FFdmnr%   r(   s       @@r   test_SubModulePolyRing_globalrZ   c   s   
AA	aA	
Y	9	5B	QTAqD[!Q'!Q3A7N77N76M66M67N77N7aggi((((!!!!zz||yy{{?<<>!!####::q!tad{QAq12222zz1a4!Q$;?AE156666::q!tQ1Wqb)****{{AE1a=)Q[[-CCCC;;y),221;;y3IJaOOO~~a    			1a4!Q$;1%&A			!A88q==88q==
:56
9()
:GH;;1ay!Q[[!Q&[%IIIIr   c            	      J  ^ [         R                  " [        [        [        S9n U R                  S5      nUR                  S[        -   SS/S[        -   SS[        -  -   S// SQ5      nUR                  [        S-  [        S-  -   SS/[        [        S/5      mX:X  d   eX!:X  d   eUT:w  d   eTU:w  d   eUT:w  d   eTU:w  d   eX!R                  " UR                  5       6 :X  d   eUR                  5       (       d   eTR                  5       (       a   eUR                  5       (       a   eTR                  5       (       a   eUR                  5       R                  5       (       d   eTR                  [        S-  [        S-  -   [        -   S[        -   S/5      (       d   eTR                  [        S-  [        S-  -   [        -   S[        -   S/5      (       a   eTR                  [        S-  S[        [        -  -
  [        * /5      (       d   eUR                  S[        -   SS/5      UR                  / SQ5      :X  d   eUR                  / SQ/ SQ5      R                  UR                  SSS[        [        -  -   /5      5      U:X  d   e[        [        U4S	 j5        g )
Nr   r   r   r   r   r0   rB   rD   c                  *   > T R                  / SQ5      $ rG   rH   rJ   s   r   r   .test_SubModulePolyRing_local.<locals>.<lambda>   rL   r   )r   r    r   r   r
   r!   rI   rP   rQ   r6   rR   rN   r   rT   )r(   rV   rW   r%   s      @r   test_SubModulePolyRing_localr^      sC   
AT*A	aA	
a!eQ]QUA!GQ$7	CB	QTAqD[!Q'!Q3A7N77N76M66M67N77N7aggi((((!!!!zz||yy{{?<<>!!####::q!tad{QAq12222zz1a4!Q$;?AE156666::q!tQ1Wqb)****;;Aq!}%Y)????;;9#eAKKAq1Q3w$@AQG G G :56r   c                  d
  ^ [         R                  " [        [        [        5      n U R                  S5      mU4S jnU" [        [        /[        5      (       d   eU" [        [        /[        [        -   5      (       d   eU" [        [        /S5      (       a   eU" [        [        /[        5      (       a   eU" [        S-  [        -   [        S-  [        -   /[        [        -
  5      (       d   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        S-  5      (       a   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        S-  5      (       d   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        S-  5      (       d   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        [        S-  -  5      (       a   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        S-  [        S-  -   S[        -  [        -  [        -  -   5      (       d   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        [        -  [        -  5      (       d   eU" [        S[        -   [        -   SS[        -  -
  /S5      (       d   eU" [        S-  [        S-  -   [        S-  [        S-  -   [        S-  [        S-  -   [        S-  [        -  [        S-  [        -  -   [        S-  [        -  -   /[        S-  5      (       d   eU" [        S-  [        S-  -   [        S-  [        S-  -   [        S-  [        S-  -   [        S-  [        -  [        S-  [        -  -   [        S-  [        -  -   /[        S-  [        S-  -   5      (       a   eU" [        S[        -   [        -   -  [        S[        -   -  /[        5      (       a   eU" [        S[        -   [        -   -  [        S[        -   -  /[        [        -   5      (       a   eg )Nr   c                 n   > TR                   " U  Vs/ s H  o"/PM     sn6 R                  U/5      $ s  snf NrI   rR   Ir&   r'   rV   s      r   rR   7test_SubModulePolyRing_nontriv_global.<locals>.contains   1    {{!,!QS!,-66s;;,   2r   r      r<      )r   r    r   r   r   r!   r(   rR   rV   s     @r   %test_SubModulePolyRing_nontriv_globalrk      s   
Aq!A	aA< QFAQFAE""""A""""A""""QTAXq!tax(!a%0000QAaC!A#I!OQqSU;QTBBBBQUQY!ac	AaC1Q7A>>>>QUQY!ac	AaC1Q7A>>>>QAaC!A#I!OQqSU;Qq!tVDDDDQUQY!ac	AaC1Q7A1qs1uQw9NOOOOQUQY!ac	AaC1Q71Q????QA	1qs7+Q////	
A1adQTk1a4!Q$;1QAa!Q$q&0HI	1    	
A1adQTk1a4!Q$;1QAa!Q$q&0HI	1q!t   
 AEAI1q5	2A6666AEAI1q5	2AE:::::r   c                    ^ [         R                  " [        [        [        [
        S9n U R                  S5      mU4S jnU" [        [        /[        5      (       d   eU" [        [        /[        [        -   5      (       d   eU" [        [        /S5      (       a   eU" [        [        /[        5      (       a   eU" [        S-  [        -   [        S-  [        -   /[        [        -
  5      (       d   eU" [        [        -   [        -   [        [        -  [        [        -  -   [        [        -  -   [        [        -  [        -  /[        S-  5      (       a   eU" [        S[        -   [        -   -  [        S[        -   -  /[        5      (       d   eU" [        S[        -   [        -   -  [        S[        -   -  /[        [        -   5      (       d   eg )Nr   r   c                 n   > TR                   " U  Vs/ s H  o"/PM     sn6 R                  U/5      $ s  snf ra   rb   rc   s      r   rR   6test_SubModulePolyRing_nontriv_local.<locals>.contains   rf   rg   r   )r   r    r   r   r   r
   r!   rj   s     @r   $test_SubModulePolyRing_nontriv_localro      sX   
Aq-A	aA< QFAQFAE""""A""""A""""QTAXq!tax(!a%0000QAaC!A#I!OQqSU;QTBBBBQA	]Aq1uI.2222QA	]Aq1uI.A6666r   c                  |   [         R                  " [        [        [        5      n U R                  S5      R                  [        [        -  /[        [        -  /[        [        -  /5      nU R                  S5      R                  S[        [        * /[        [        * S/5      nUR                  5       U:X  d   eU[        [        -  [        -  /4-  nU R                  S5      R                  [        SS/S[        S/SS[        /5      nUR                  5       U:X  d   eU R                  S5      nUR                  " UR                  5       6 R                  5       UR                  5       :X  d   e[         R                  " [        [        [        5      [        [        -  [        -  /-  nUR                  S5      R                  [        [        -  /[        [        -  /[        [        -  /5      nUR                  S5      R                  [        SS/S[        S/SS[        /5      nUR                  5       U:X  d   eg )Nr   r   r   )	r   r    r   r   r   r!   rI   syzygy_modulerP   )	r(   r%   Sr8   S2rV   R2r4   S3s	            r   test_syzygyrv      s   
Aq!A	a""AaC51Q3%!A#7A	a""Aq1":A2qz:A??!!!	
qs1ugZB	
q		#	#Q1I1ay1a)	DB###	aA;;	"002akkmCCC			!Q	"ac!eW	,B			$	$acUQqSEAaC5	9B			$	$aAYAq	Aq!9	EB###r   c                    ^ [         R                  " [        SS9n U R                  S5      R	                  S[        -  S/SS/5      mTR                  [        [        /5      U R                  [        SS5      5      U R                  [        S-  5      /:X  d   e[        [        U4S j5        U R                  S5      [        S/SS/4-  mTR	                  S[        /5      nUR                  SS/5      U R                  S[        S-
  -  5      /:X  d   e[         R                  " [        [        5      [        S-  [        S-  -
  /-  n U R                  S5      mTR	                  [        S/S[        /5      nUR                  [        S-  [        S-  /5      U R                  [        5      U R                  [        5      /:X  d   eg )	Nr
   r   r   r   r   rh   c                  *   > T R                  SS/5      $ )Nr   r   )in_terms_of_generatorsrJ   s   r   r   -test_in_terms_of_generators.<locals>.<lambda>   s    q77A?r   )r   r    r   r!   rI   ry   r"   r   r   rT   r   )r(   SMr%   s     @r   test_in_terms_of_generatorsr}      s   
&)A	a""AaC8aV4A##	
AIIhq!n-qyy1~>? ? ?
:?@	aQFQF++A	
aV	B$$aV,2q1u:1F0GGGG
A!Q$A+.A	aA	
aVaV	$B$$	
Aq!t))A,		!56 6 6r   c                    ^^^^	 [         R                  " [        5      n U R                  S5      nUR	                  S[        [        S-  /5      nX-  mTR                  [        S-  SS/5      nTR                  [        S-   [        S-  [        -   [        S-  [        S-  -   /5      S:X  d   eU[        S-  SS/U-   s=:X  aR  UR                  [        S-  SS/5      U-   s=:X  a/  TR                  UR                  [        S-  SS/5      5      :X  d   e   eTR                  [        S-  S-   S[        -  S-   [        S-  /5      US[        S/-   s=:X  a?  UTR                  S[        S/5      -   s=:X  a  X1R                  S[        S/5      -   :X  d   e   eTR                  [        S-  S-   S[        S-  /5      US[        S/-
  s=:X  a?  UTR                  S[        S/5      -
  s=:X  a  X1R                  S[        S/5      -
  :X  d   e   eTR                  / SQ5      TR                  [        S-  SS/5      U-
  s=:X  a7  [        S-  SS/U-
  s=:X  a#  UR                  [        S-  SS/5      U-
  :X  d   e   eTR                  [        S-  [        S-  -   S[        -  S-   S/5      S[        -   U-  s=:X  aP  U R                  S[        -   5      U-  s=:X  a0  US[        -   -  s=:X  a  X0R                  S[        -   5      -  :X  d   e   eU* [        S-  * SS/:X  d   e[        [        S/U-   nTR                  / SQ5      U[        -  s=:X  a  X@R                  [        5      -  :X  d   e   eUSS[        -  S[        S-  -  4S	/-  mU R                  S5      mTS[        //-  m	UR	                  S[        [        S-  // S
Q5      U-  n[        [        UU4S j5        [        [        UU	4S j5        [        [        UU4S j5        TR                  TR                  S[        [        S-  /5      5      S[        S/:X  d   eTR                  UR                  / SQ5      5      / SQ:X  d   eg )Nr   r   r   r   )r   r   r   rh   r{   )r   r   r   rE   rB   c                  P   > TR                  T R                  S[        /5      5      $ r3   r"   r   )Gr%   s   r   r   ,test_QuotientModuleElement.<locals>.<lambda>  s    199QYY1v->#?r   c                  P   > T R                  TR                  S[        /5      5      $ r3   r   )r%   r4   s   r   r   r     s    199RZZA-?#@r   c                  Z   > T R                  TR                  S[        [        /5      5      $ r3   r   )r%   r8   s   r   r   r     s    199RZZAq	-B#Cr   r   r   r   )r   r    r   r!   rI   r"   r   r   )
r(   rV   Nr   r&   M4r   r%   r8   r4   s
         @@@@r   test_QuotientModuleElementr      s)   
A	aA	Q1a4L!A	A			1a4A,A99a!eQTAXq!tad{34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)(<$<= = = = =99Y199adAq\#:Q#> 8	
Aq!q8IIq!tQl3a78 8 8 8 899adQTk1Q37A./AE19 >			!a%>Qi>+,YYq1u-=+=> > > > >21a4%Q	
Aq	AA99Y1q5<A		!,<<<<<<	
Q!Qq!tVi(	(B	aA	
QF8B	
aAqD\9	-	1B
>?@
>@A
>CD::aiiAq!t-.1a);;;99RZZ	*+y888r   c                    ^^^^ [         R                  " [        5      mTR                  S5      mTR	                  S[        [        S-  /5      mTT-  mTT:w  d   eTT:w  d   eTTS[        [        S-  4/-  :X  d   eTR                  5       (       a   eTTR                  5       -  R                  5       (       d   eTR	                  S[        [        S-  // SQ5      T-  n U TR	                  S[        [        S-  /5      :X  d   eU TR	                  / SQ5      :w  d   eU T:w  d   eTR                  U 5      (       d   eU R                  5       (       a   e[        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S	 j5        T/ S
Q/-  nUR	                  / SQ/ SQ5      nX:X  d   eg )Nr   r   r   r   )r   r   r   c                     > TT -  $ ra   r   rV   r   s   r   r   %test_QuotientModule.<locals>.<lambda>5  s	    qsr   c                  0   > T R                  / SQ5      T-  $ )Nr   rH   r   s   r   r   r   6  s    q{{959r   c                  ,   > TR                  S5      T -  $ r,   )r!   )rV   r(   s   r   r   r   7  s    q}}Q/1r   c                  `   > T R                  TR                  S[        [        S-  /5      5      $ )Nr   r   r   )rV   r%   s   r   r   r   8  s!    199QYY1ad|-D#Er   r   rB   rD   )r   r    r   r!   rI   r6   rP   r5   rQ   r   rT   r   )SQr1   r8   rV   r%   r   r(   s      @@@@r   test_QuotientModuler   "  s   
A	aA	Q1a4L!A	!A6M66M6aAqD\N""""yy{{?	M""$$$$	
aAqD\9	-	1BaAqD\****Y''''7N7>>"  """"
:{#
:9:
:12
>EF	
i[B	i	+B8O8r   c                     [         R                  " [        [        S[        4S[        44S9[        S-  S-   /-  n U R	                  S5      nXR	                  S5      :X  d   eU[         R                  " [        5      R	                  S5      :w  d   eXR	                  S5      :w  d   e[        S/U;   d   e[        /U;  d   eSU R                  [        5      S-   -  S/U;   d   eSSS[        -   -  /U;   d   eSS[        -  /U;  d   eUR                  [        S-  [        /5      S[        /:X  d   eU R	                  S5      nUR                  [        S-  SS// S	Q/ S
Q5      nUR                  [        S-  [        S-  -   SS/[        [        S/5      nX#:X  d   eX2:X  d   eX$:w  d   eXB:w  d   eX4:w  d   eXC:w  d   eX2R                  " UR                  5       6 :X  d   eUR                  5       (       d   eUR                  5       (       a   eUR                  5       (       a   eUR                  5       (       a   eUR                  5       R                  5       (       d   eUR                  [        S-  [        S-  -   [        -   [        S-  * [        -   S/5      (       d   eUR                  [        S-  [        S-  -   [        -   S[        -   S/5      (       a   eUR                  [        S-  S[        [        -  -
  [        * /5      (       d   eUR                  [        SS/5      UR                  / SQ5      :X  d   eUR                  [        SS/5      UR                  / SQ5      :X  a   eUR                  / SQ/ SQ5      R                  UR                  / SQ5      5      U:X  d   eUR                  S5      (       a   eg )Nr   r
   r   r   r   r   r   r   rC   r0   rB   rD   rE   )r   r    r   r   r!   r"   rI   rP   rQ   r6   rR   rN   r5   )r(   r1   rV   rW   r%   s        r   test_ModulesQuotientRingr   ?  sO   
Auaj61+%>?1a4!8*LA	
q	Bq!!!!!!!$003333q!!!!q6R<<3b==qyy|a !$***q!a%y>Rqs82::q!tQi RG+++	aA	
adAq\9i	8B	QTAqD[!Q'!Q3A7N77N76M66M67N77N7aggi((((!!!!zz||yy{{?<<>!!####::q!tad{QA	156666zz1a4!Q$;?AE156666::q!tQ1Wqb)****;;1ay!Q[[%;;;;{{Aq!9%Y)????;;y),221;;y3IJaOOO~~a     r   c                     [         R                  " [        5      n U R                  S5      nUR	                  [        S/S[        /5      nUR	                  [        S-  S/S[        S-  /5      nU R                  [        5      nXA-  X-  s=:X  a#  Us=:X  a  [        U-  s=:X  a  U[        -  :X  d   e   eXB-  Us=:X  a  [        U-  :X  d   e   eg )Nr   r   )r   r    r   r!   rI   ideal)r(   r%   S1rs   rd   s        r   test_module_mulr   j  s    
A	aA	
aVaV	$B	
adAYAqD		*B	
A3!#))qs)ac)))))422r   c            	         [         R                  " [        [        5      R	                  S5      n U R                  [        [        /[        S/5      nU R                  S[        S-
  /[        S/[        [        /5      nU R                  [        [        /[        S-  [        -
  [        S-
  /[        [        -  [        -   [        S-   /5      nUR                  USS9u  pEnXBR                  U5      s=:X  a  U:X  d   e   e[        UR                  5       Hc  u  pxU[        S [        XW   UR                  5       5       5      s=:X  a/  [        S [        Xg   UR                  5       5       5      :X  a  M`   e   e   U R                  [        [        /5      R                  U R                  [        [        /5      5      R                  5       (       d   eg )Nr   r   r   T	relationsc              3   .   #    U  H  u  pX-  v   M     g 7fra   r   .0cr   s      r   	<genexpr>$test_intersection.<locals>.<genexpr>~       >(=(=   c              3   .   #    U  H  u  pX-  v   M     g 7fra   r   )r   dr   s      r   r   r     r   r   )r   r    r   r   r!   rI   	intersect	enumerategenssumzipr6   )	rV   r1   r8   rd   I1rel1rel2ir'   s	            r   test_intersectionr   u  sn   
A**1-A	
aVaV	$B	
aQZ!Q!Q	0B	QFQTAXq1u-!aQ/?@A\\"\5NBdb!&Q&&&&&"''"C>DGRWW(=>> ?>DGRWW(=>>? 	? ? 	? ? # ;;1v((aV)<=EEGGGGr   c            	         [         R                  " [        [        [        5      n U R                  S5      nUR                  [        [        -  [        [        -  /[        [        -  [        [        -  /5      R                  UR                  [        [        /[        [        /5      5      [         R                  " [        [        [        5      R                  [        S-  [        S-  -  [        [        -  [        S-  -  -
  5      :X  d   eUR                  [        [        /5      R                  UR                  5       5      R                  5       (       d   eUR                  [        S-  [        S-  /[        S-  [        S-  /5      nUR                  [        [        -   [        [        -   /5      nUR                  USS9u  pEX@R                  [        S-  [        [        -
  5      :X  d   e[        UR                  5       HB  u  pgXsR                  S   -  [        S [        XV   UR                  5       5       5      :X  a  MB   e   g )Nr   Tr   r   c              3   .   #    U  H  u  pX-  v   M     g 7fra   r   r   s      r   r    test_quotient.<locals>.<genexpr>  s     !F2E$!!#2Er   )r   r    r   r   r   r!   rI   module_quotientr   is_whole_ringr   r   r   r   )r(   rV   r%   r   qrelr   r'   s           r   test_quotientr     s   
Aq!A	aA;;!QqSzAaC1:.>>	QFQF#%(*(8(8Aq(A(G(G1QPQT	TUVWTWXY[\X\T\H\(]^ ^ ^;;1v..q{{}=KKMMMM	QT1a4L1a4A,/A	QUAEN#AqD1FA1a!e$$$$!&&!{c!F#cfaff2E!FFFFF "r   c            	      ~   [         R                  " [        [        [        5      R                  S5      R                  [        S-   [        S/[        [        -  [        [        S-  /5      n U R                  SS9u  p[        U5       H3  u  p4U[        S [        X#   U R                  5       5       5      :X  a  M3   e   g )Nr   r   r   T)extendedc              3   .   #    U  H  u  pX-  v   M     g 7fra   r   )r   r   gens      r   r   *test_groebner_extendend.<locals>.<genexpr>  s     >,=&!,=r   )r   r    r   r   r   r!   rI   _groebner_vecr   r   r   r   )r%   r   r(   r   r'   s        r   test_groebner_extendendr     s    
Aq!--a0::AE1a=1Q3PQSTVWSW.YA??D?)DA!C>Caff,=>>>>> 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)   r:   r@   rZ   r^   rk   ro   rv   r}   r   r   r   r   r   r   r   r   r   r   <module>r      sw     P P @ @   ' '?,42n	)%JP7>;>7"$&6$ 9F:(!VHG ?r   