
    g3&                        d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZmZ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 Z.dS )    )prod)QQZZ)xtheta)	factorint)n_order)Polycyclotomic_poly)DomainMatrix)	round_two)StructureError)
PowerBasisto_col)prime_decomp_two_elt_rep*_check_formal_conditions_for_maximal_order)raisesc                  0   t          t          dt                              } t          |           }|                    dt          j        dt                    z                                dt          j        dt                    z            |                    t          j        dt                    d d d df                   t          t          fd           t          t          fd           t          t          fd           d S )	N            c                  "    t                     S Nr   )Bs   f/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/numberfields/tests/test_primes.py<lambda>z@test_check_formal_conditions_for_maximal_order.<locals>.<lambda>       #Ma#P#P     c                  "    t                     S r   r   )Cs   r   r    z@test_check_formal_conditions_for_maximal_order.<locals>.<lambda>   r!   r"   c                  "    t                     S r   r   )Ds   r   r    z@test_check_formal_conditions_for_maximal_order.<locals>.<lambda>   r!   r"   )
r
   r   r   r   submodule_from_matrixr   eyer   r   r   )TAr   r$   r&   s     @@@r   .test_check_formal_conditions_for_maximal_orderr+      s    _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	 0B 7 73B3 ?@@A
>PPPPQQQ
>PPPPQQQ
>PPPPQQQQQr"   c                  @   d} t          t          |                     }t          |          \  }}dD ]j}t          ||          }|D ]U}||z  |j        |z  z   }|                                }t          |||          }	|	|j        k    r||z  |	|z  z   }
|
|k    sJ Vkd S )N            r   )r
   r   r   r   alphabasis_element_pullbacksr   )ellr)   ZKdKpPPiHgensbH2s              r   test_two_elt_repr>   !   s    
C_S!!""Aq\\FB  A 	 	B "rx{"A,,..DT2q))ABH}}rTAbD[Qwwww	 r"   c                  L   d} t          t          |                     }t          |          \  }}t          | |||          }t	          |          dk    sJ |d         }|                    | |z            }||j        k    sJ |                    d|z            dk    sJ d S )Nr-   r6   r5      r   r   )r
   r   r   r   len	valuatione)r7   r)   r5   r6   r8   P0vs          r   test_valuation_at_prime_idealrG   7   s    	A_Q  Aq\\FBQbR(((Aq66Q;;;;	
1B
QrTA9999<<"""""""r"   c                  T   t          t          d                    } t          t          d            t	          d|           }t          |          dk    sJ |d         }|j        dk    sJ |j        dk    sJ |dz  |j        k    sJ |dz  |k    sJ |dz  d|j        z  k    sJ d S )Nr-   c                       t          d          S )Nr-   )r    r"   r   r    ztest_decomp_1.<locals>.<lambda>I   s    |A r"   rA   r      )	r
   r   r   
ValueErrorr   rB   rD   fr5   )r)   r8   rE   s      r   test_decomp_1rN   D   s     	_Q  A
:..///QAq66Q;;;;	
1B419999419999q5BE>>>>q5B;;;;q5AIr"   c                     d} t          t          |                     }dD ]^}t          ||           }| dz
  |z  }t          ||          }t	          |          |k    sJ |D ]}|j        dk    sJ |j        |k    sJ _d S )Nr-   r.   rA   )r
   r   r	   r   rB   rD   rM   )r4   r)   r7   f_expg_expr8   r9   s          r   test_decomp_2rR   U   s    
C_S!!""A ! !3qU"A1vv 	! 	!B41999945=====	!! !r"   c            
      6   t          t          dz  dz
            } i }t          | |          \  }}dD ]e}t          || |||                    |                    }t          |          dk    sJ |d         j        dk    sJ |d         dz  ||z  k    sJ fd S )Nr   #   radicals)r   r   r-   r6   r5   radicalrA   r   r
   r   r   r   getrB   rD   r)   radr5   r6   r7   r8   s         r   test_decomp_3r]   c   s    Q!Vb[A
Cq3'''FB   A"SWWQZZ@@@1vv{{{{tv{{{{tQw!B$	 r"   c            
      6   t          t          dz  dz
            } i }t          | |          \  }}dD ]e}t          || |||                    |                    }t          |          dk    sJ |d         j        dk    sJ |d         dz  ||z  k    sJ fd S )Nr      rU   )r   r-   rW   rA   r   rY   r[   s         r   test_decomp_4r`   p   s    Q!Vb[A
Cq3'''FB   A"SWWQZZ@@@1vv{{{{tv{{{{tQw!B$	 r"   c            
      p   dD ]0} t          t          dz  | z
            }i }t          ||          \  }}d}t          |||||                    |                    | dz  dk    rbt                    dk    sJ t          fdt          d          D                       sJ t          d D                       ||z  k    sJ | dz  d	k    sJ t                    dk    sJ d
         j	        dk    sJ d
         j
        dk    sJ d
                                         ||z  k    sJ 2d S )N)ir   rU   rW      rA   c              3   \   K   | ]&}|         j         d k    o|         j        d k    V  'dS rA   NrD   rM   ).0ir8   s     r   	<genexpr>z test_decomp_5.<locals>.<genexpr>   s<      EEqqtv{2qtv{EEEEEEr"   c              3   *   K   | ]}||j         z  V  d S r   rD   rg   r9   s     r   ri   z test_decomp_5.<locals>.<genexpr>   s(      --RBD------r"   r   r   )r
   r   r   r   rZ   rB   allranger   rD   rM   as_submodule)dr)   r\   r5   r6   r7   r8   s         @r   test_decomp_5rq   }   se     1 1a!1s+++BA"SWWQZZ@@@q5A::q66Q;;;;EEEEE!HHEEEEEEEE--1-----R77777q5A::::q66Q;;;;Q46Q;;;;Q46Q;;;;Q4$$&&!b&000001 1r"   c            	         t          t          dz  t          dz  z   dt          z  z
  dz             } i }t          | |          \  }}d}t          || |||                    |                    }t          |          dk    sJ t          d |D                       sJ t          d |D                       ||z  k    sJ d S )Nr   r   rc   rU   rW   c              3   J   K   | ]}|j         |j        cxk    od k    nc V  dS re   rf   rl   s     r   ri   z test_decomp_6.<locals>.<genexpr>   B      --Rrtrt    q    ------r"   c              3   *   K   | ]}||j         z  V  d S r   rk   rl   s     r   ri   z test_decomp_6.<locals>.<genexpr>   (      %%RBD%%%%%%r"   )r
   r   r   r   rZ   rB   rm   r   r[   s         r   test_decomp_6rw      s     	Q!Va1f_q1u$q())A
Cq3'''FB	AQbR<<<Aq66Q;;;;--1--------%%1%%%%%2------r"   c                     t          t          dz  t          dz  z   dt          z  z
  dz             } t          j        |           }d}|                    |          }|                                }t          |          dk    sJ t          d |D                       sJ t          d |D                       ||z  k    sJ d S )Nr   r   rc   c              3   J   K   | ]}|j         |j        cxk    od k    nc V  dS re   rf   rl   s     r   ri   z test_decomp_7.<locals>.<genexpr>   rt   r"   c              3   *   K   | ]}||j         z  V  d S r   rk   rl   s     r   ri   z test_decomp_7.<locals>.<genexpr>   rv   r"   )	r
   r   r   alg_field_from_polyprimes_abovemaximal_orderrB   rm   r   )r)   Kr7   r8   r5   s        r   test_decomp_7r      s    Q!Va1f_q1u$q())A
q!!A	A	qA	
		Bq66Q;;;;--1--------%%1%%%%%2------r"   c                     t           dz  dt           dz  z  z   dt           z  z
  dz   t           dz  dt           dz  z  z   dt           z  z   dz
  t           dz  dt           dz  z  z   t           z
  dz   t           dz  dt           dz  z  z   dt           z  z
  dz
  t           dz  dt           dz  z  z   dz   t           dz  dt           dz  z  z   dt           z  z   dz
  t           dz  dt           dz  z  z   dz   t           dz  dt           dz  z  z   dt           z  z   dz
  t           dz  dt           dz  z  z   t           z
  dz   t           dz  dt           dz  z  z   dt           z  z
  dz   t           dz  dt           dz  z  z   dt           z  z
  dz   t           dz  dt           dz  z  z   dt           z  z   dz
  t           dz  dt           dz  z  z   dt           z  z
  dz   t           dz  dt           dz  z  z   dt           z  z
  dz   t           dz  d	t           dz  z  z   dt           z  z   dz
  t           dz  d
t           dz  z  z   d	t           z  z
  dz   f} d }d}| D ]}t          |          }i }t          ||          \  }}|                                }||z  }	t	          |	          }
|
D ]c}|                    |          }t          |||||          }t          d |D                       }||z  }|r |||||||           ||k    sJ dd S )Nr   r   r   r   rK   rA   r-   rc   	      r0   c                     t          d           t          | ||           |D ]}t          d|d           t          d|           t          d|           t          d||k                dS )z2Useful for inspection, when running test manually.z====================z  ()zI: zJ: zEqual: N)print)r)   r7   rX   r8   IJr9   s          r   displayztest_decomp_8.<locals>.display   s    haG 	! 	!B----    eQeQ Q  !!!!!r"   FrU   rW   c              3   *   K   | ]}||j         z  V  d S r   rk   rl   s     r   ri   z test_decomp_8.<locals>.<genexpr>   s(      **"RX******r"   )r   r
   r   discriminantr   rZ   r   r   )casesr   inspectgr)   r\   r5   r6   dT	f_squaredFr7   rX   r8   r   r   s                   r   test_decomp_8r      s    	
QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!#	QQ!Va!e#a'	QQ!Va	QQ!Va!e#a'	QQ!Va	QQ!Va!e#a'	QQ!Va!#	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	Qa1fq1u$r)!E$" " " G  GG1s+++B^^"H	i   	 	AggajjGQbRAAAA*******ABA 01gq!Q///66666	 r"   c                      t          t          d                    } t          d|           d         }|j        dk    sJ |                                d|j        z  k    sJ |dk    sJ d S )Nr-   r   r   rK   )r
   r   r   rM   ro   r5   r)   rE   s     r   test_PrimeIdeal_eqr      sn     	_Q  A	a		A	B419999??BE	))))777777r"   c                      t          t          d                    } t          d|           d         }|d|j        z  z   |                                k    sJ d S )Nr-   r   )r
   r   r   r5   ro   r   s     r   test_PrimeIdeal_addr      sX    _Q  A	a		A	B BE	>R__........r"   c                  :   t          j        t          t          dz  dz                       } |                     d          d         }t          |          dk    sJ |                     d          d         }t          |          dk    sJ t          j        t          t          dz  dz             d          } |                     d          d         }t          |          d	k    sJ |                     d          d         }t          |          dk    sJ d S )
Nr   r-   r   z(2, 3*_x/2 + 1/2)r   z(3)r2   )aliasz(2, 3*alpha/2 + 1/2))r   r{   r
   r   r|   str)kfrps     r   test_strr      s   
tAqD1H~~..A
..

A
Cs88*****
..

A
Cs88u 	tAFQJ//w???A
..

A
Cs88-----
..

A
Cs88ur"   c                  X   t          t          dz  dz             } t          |           \  }}t          d| ||          }t	          |d                   dk    sJ |d                             t
                    dk    sJ |d                             t
          d	          d
k    sJ d S )Nr   r-   r@   r   z[ (2, (3*x + 1)/2) e=1, f=1 ])	field_genz![ (2, (3*theta + 1)/2) e=1, f=1 ]T)r   	just_gensz(2, (3*theta + 1)/2))r
   r   r   r   reprr   )r)   r5   r6   r8   s       r   	test_reprr     s    QTAXAq\\FBQbR(((A!::88888Q499u9%%)LLLLLQ499u9559OOOOOOOr"   c                  f   t          j        t          t          dz  t          dz  z   dt          z  z
  dz                       } |                                 }|                     d          }|d         }|                    t          g d          d          }|                    t          g d          d          }|                    |          }||k    sJ  | t          dd          t          d	d          t          d
d          g          } | t          dd          t          dd          t          dd          g          }|	                    |          }||k    sJ | 
                    |          }| 
                    |          }|                    |          }||k    sJ d S )Nr   r   rc   )      r1   rK   )denom)r1   r   r   r1   r   r   r   )r   r{   r
   r   r}   r|   parentr   reduce_element
reduce_ANP
to_alg_numreduce_alg_num)r   Zkr8   r   aa_bar_expecteda_bars          r   test_PrimeIdeal_reducer     s   
tAFQ!VOa!e$;a$?@@AAA	
		B	qA
A$C 			&&&a	00AYYvjjj11Y;;Nq!!EN"""" 	
2b!99bQiiB
+,,AQ1a"Q((Br1II677NNN1EN"""" 	
QA\\.11Nq!!EN""""""r"   c                      t          j        t          t          dz  t          dz  z   dt          z  z
  dz                       } |                     d          }|d         j                            d          sJ d S )Nr   r   rc   r   )r   r{   r
   r   r|   r2   equiv)r   r8   s     r   test_issue_23402r   %  sk    
tAFQ!VOa!e$;a$?@@AAA	qAQ4:Ar"   N)/mathr   sympyr   r   	sympy.abcr   r   sympy.ntheoryr   sympy.ntheory.residue_ntheoryr	   sympy.polysr
   r   sympy.polys.matricesr   sympy.polys.numberfields.basisr   #sympy.polys.numberfields.exceptionsr    sympy.polys.numberfields.modulesr   r   sympy.polys.numberfields.primesr   r   r   sympy.testing.pytestr   r+   r>   rG   rN   rR   r]   r`   rq   rw   r   r   r   r   r   r   r   r   rJ   r"   r   <module>r      s'                         # # # # # # 1 1 1 1 1 1 - - - - - - - - - - - - - - 4 4 4 4 4 4 > > > > > > ? ? ? ? ? ? ? ?          ( ' ' ' ' 'R R R  ,
# 
# 
#  "! ! !
 
 

 
 
1 1 12
. 
. 
.	. 	. 	.- - -`  / / /  $P P P# # #2    r"   