
    sg                     `    d 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 Zd Zd	 Zd
 Zy)zTests for homomorphisms.    )S)QQxyhomomorphism)raisesc                      t        j                  t              } t        t	        | j                  d      | j                  d      dg            dk(  sJ t        t	        | j                  d      | j                  d      ddg            dk(  sJ t        t	        | j                  d      | j                  d      t        ggz  dg            dk(  sJ t        | j                  d      j                               dk(  sJ y )N   r   z$Matrix([[0]]) : QQ[x]**1 -> QQ[x]**1   z^Matrix([                       
[0, 0], : QQ[x]**2 -> QQ[x]**2
[0, 0]])                       z*Matrix([[0]]) : QQ[x]**1 -> QQ[x]**1/<[x]>z'Matrix(0, 0, []) : QQ[x]**0 -> QQ[x]**0)r   old_poly_ringr   strr	   free_moduleidentity_hom)Rs    \/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/agca/tests/test_homomorphisms.pytest_printingr   
   s    
A|AMM!,ammA.>DE./ / /|AMM!,ammA.>AGHjk k k|AMM!,ammA.>1#.FLM45 5 5q}}Q,,./3\\\\    c            	      8   t        j                  t              j                  d      } t        j                  t              j                  d      }| j	                         t        | | ddt        gg      t        | | ddgdg      }t        | |g dg dg      k(  sJ k7  sJ k7  sJ | j	                         k7  du sJ dz  dz  cxk(  rt        | | ddgddgg      k(  sJ  J dz  t        | | t        j                  dgdt        j                  gg      k(  sJ z   t        | | ddgdt        dz   gg      k(  sJ z
  t        | | ddgddt        z
  gg      k(  sJ z  cxk(  r	z  k(  sJ  J |z  t        | | dddgg      k(  sJ |z  t        | | ddg      k(  sJ z  k(  sJ  ddg      ddgk(  sJ  ddg      ddt        z  gk(  sJ  j                  | j                  t        t        g            t        t        g       t        t        g      k(  sJ |j                  | j                  ddg            } |ddg       |ddg      k(  sJ  |j                  |j                  j                  t        dg            t        dg       |t        dg      k(  sJ t        t        fd	       t        t        fd
       t        t        fd       t        t        fd       t        t        fd       y )Nr      r   r   r   r   r   r   r   r   Fc                       z  S N )fgs   r   <lambda>z!test_operations.<locals>.<lambda>1       ac r   c                       dz   S Nr   r   r   s   r   r    z!test_operations.<locals>.<lambda>2       a!e r   c                       z   S r   r   r   is   r   r    z!test_operations.<locals>.<lambda>3   r%   r   c                       dz
  S r#   r   r$   s   r   r    z!test_operations.<locals>.<lambda>4   r%   r   c                       z  S r   r   r'   s   r   r    z!test_operations.<locals>.<lambda>5   r!   r   )r   r   r   r   r   r	   r   Halfrestrict_domain	submodulequotient_domaindomainr
   	TypeError)FGhh1r   r   r(   s       @@@r   test_operationsr5      s	   
''*A
''*A	AQA1v;'AQQFA;'AQIy12A6M66M66M6!!e+++Q3!A#=aaVaV,<======Q3,q!qvvqkAqvv;%?@@@@q5LAAAE
';<<<<q5LAAQU'<====Q3!?qs???Q3,q!a!Q[1111Q3,q!aV,,,,Q3!8O8aV9AaV9AaC   11Q[[!Q011a&9Q1vYFFF	
		1;;1v.	/Bq!f:Aq6""":2bii111a&9:Aq6BaAiOOO
9k"
9m$
9m$
9m$
9k"r   c                    	
 t        j                  t              j                  d      t        j                  t              j                  d      j	                  g d      } | z  }|j	                  g d      }ddgddgddggt              
t        |      }
j                  |       |k(  sJ t        t        
fd       |j                  |      t        |      k(  sJ t        t        
fd	       t        t        
fd
       t        t        
fd       g dg dg dg}| ||fD ]"  }|j                         t        |||      k(  r"J  | j                         t        | |      k(  sJ |j                         t        |||      k(  sJ |j                         t        ||      k(  sJ |j                         t        |j                  ||      k(  sJ  G d d       G fdd      	t        t        	fd       t        t        	fd       t        t        fd       t        t        fd       y )Nr   r   )r   r   r   r   r   r   r   c                  H    j                   j                  g d            S )Nr   )r.   r-   r1   r3   s   r   r    ztest_creation.<locals>.<lambda>C   s    q00Y1GH r   c                  &    j                         S r   )r,   r2   r3   s   r   r    ztest_creation.<locals>.<lambda>E   s    q003 r   c                  H    j                   j                  ddg            S )Nr   r   )restrict_codomainr-   r:   s   r   r    ztest_creation.<locals>.<lambda>F   s    q221;;1v3FG r   c                  &    j                         S r   )quotient_codomainr8   s   r   r    ztest_creation.<locals>.<lambda>G   s    q2215 r   r   )r   r   r   c                       e Zd ZddZy)test_creation.<locals>.convNc                     | S r   r   r   s     r   convertz#test_creation.<locals>.conv.convertR   s    Hr   r   )__name__
__module____qualname__rB   r   r   r   convr@   Q   s    	r   rF   c                   $    e Zd Z W         Zd Zy)test_creation.<locals>.dummyc                       y r   r   )argss    r   r-   z&test_creation.<locals>.dummy.submoduleX   s    r   N)rC   rD   rE   	containerr-   )rF   s   r   dummyrH   U   s    F		r   rL   c                  (    t                       S r   r   )r2   rL   matrixs   r   r    ztest_creation.<locals>.<lambda>Z   s    l57Av> r   c                  (    t                       S r   r   )r1   rL   rN   s   r   r    ztest_creation.<locals>.<lambda>[   s    l1egv> r   c                  t    t        t        j                  t        t              j                  d             S )Nr   )r	   r   r   r   r   r   )r2   rN   s   r   r    ztest_creation.<locals>.<lambda>]   s*    L)9)9!Q)?)K)KA)NPQSYZ r   c                  "    t         ddg      S )Nr   r   )r1   r2   s   r   r    ztest_creation.<locals>.<lambda>^   s    |Aq1a&9 r   )r   r   r   r   r-   r	   r.   r
   
ValueErrorr,   r   inclusion_homquotient_hombaser0   )SMQSQh2imMr1   r2   rF   rL   r3   rN   s         @@@@@@r   test_creationr\   8   s    
''*A
''*A	
Y	B	BA	
Y	B!fq!fr2h'FQ6"A	aF	#BR B&&&
:HIb!\"a%@@@@
:34
:GH
:56
Y		*BQ^ :~~<1b#9999:b!R!8888b!R!8888>>|Aq"5555??RWWb" ====  
 9>?
9>?
Z\
:9:r   c                     t        j                  t        t              } | j	                  d      }t        ||t        dgt        dgg      }|j                         |j                  t         t        g      k(  sJ |j                         |j                  t        dgt        dg      k(  sJ |j                         rJ |j                         rJ |j                  |j                               j                         sJ |j                  |j                  ddg            j                         sJ |j                  |j                               j                  |j                               j                         sJ t        j                  t        t        dt        fdt        ff      t        dz  dz   gz  }|j	                  d      }t        ||t        dgt        t        dz   gg      }|j                         sJ y )Nr   r   r   lexilex)order)r   r   r   r   r   r	   kernelr-   imageis_injectiveis_surjectiver<   r,   r.   is_isomorphism)r   r1   r3   R2s       r   test_propertiesrg   a   s   
AA	aAQQFQF+,A88:qb!W----779QFQF3333~~   qwwy)77999Q[[!Q01>>@@@	
%%aggi01AB B B 
		!QqzFA;&?	@AqD1H:	MB
qAQQFQAJ/0Ar   N)__doc__sympy.core.singletonr   !sympy.polys.domains.rationalfieldr   	sympy.abcr   r   sympy.polys.agcar	   sympy.testing.pytestr
   r   r5   r\   rg   r   r   r   <module>rn      s.     " 0  ) '	] #F&;Rr   