
    Qi                     b    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dS )zTests for homomorphisms.    )S)QQxyhomomorphism)raisesc                     t          j        t                    } t          t	          |                     d          |                     d          dg                    dk    sJ t          t	          |                     d          |                     d          ddg                    dk    sJ t          t	          |                     d          |                     d          t          ggz  dg                    dk    sJ t          |                     d                                                    dk    sJ d S )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/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/polys/agca/tests/test_homomorphisms.pytest_printingr   
   s1   
A|AMM!,,ammA.>.>DDEE./ / / /|AMM!,,ammA.>.>AGGHHjk k k k|AMM!,,ammA.>.>1#.FLLMM45 5 5 5q}}Q,,..//3\\\\\\\    c            	      V   t          j        t                                        d          } t          j        t                                        d          }|                                 t          | | ddt          gg          t          | | ddgdg          }t          | |g dg dg          k    sJ k    sJ k    sJ |                                 k    du sJ dz  dz  cxk    rt          | | ddgddgg          k    sn 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n 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                      | 	                    t          t          g                    t          t          g           t          t          g          k    sJ |
                    | 	                    ddg                    } |ddg           |ddg          k    s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           d S )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IIIyyy122A666666666666!!!e++++Q3!A#====aaVaV,<========Q3,q!qvqkAqv;%?@@@@@@q5LAAAE
';<<<<<<q5LAAQU'<======Q3!????qs??????Q3,q!a!Q[111111Q3,q!aV,,,,,,Q3!88881aV99A1aV99AaC    11Q[[!Q00111a&99QQ1vYYFFFF	
		1;;1v..	/	/B2q!f::Aq6"""":2bi111a&99::Aq6BBaaAiiOOOO
9kkkkk"""
9mmmm$$$
9mmmmm$$$
9mmmm$$$
9kkkkk"""""r   c                    	
 t          j        t                                        d          t          j        t                                        d                              g d          } | z  }|                    g d          }ddgddgddggt                    
t          |          }
                    |           |k    sJ t          t          
fd           |	                    |          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 ]+}|
                                t          |||          k    sJ ,|                                 t          | |          k    sJ |                                t          |||          k    sJ |                                t          ||          k    s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           d S )Nr   r   )r   r   r   r   r   r   r   c                  X                                              g d                    S )Nr   )r.   r-   r1   r3   s   r   r    ztest_creation.<locals>.<lambda>C   s%    q00YYY1G1GHH r   c                  .                                    S r   )r,   r2   r3   s   r   r    ztest_creation.<locals>.<lambda>E   s    q0033 r   c                  X                                              ddg                    S )Nr   r   )restrict_codomainr-   r:   s   r   r    ztest_creation.<locals>.<lambda>F   s%    q221;;1v3F3FGG r   c                  .                                    S r   )quotient_codomainr8   s   r   r    ztest_creation.<locals>.<lambda>G   s    q22155 r   r   )r   r   r   c                       e Zd ZddZdS )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              Zd ZdS )test_creation.<locals>.dummyc                      d S r   r   )argss    r   r-   z&test_creation.<locals>.dummy.submoduleX   s    4r   N)rC   rD   rE   	containerr-   )rF   s   r   dummyrH   U   s/        DFF		 	 	 	 	r   rL   c                  6    t                                  S r   r   )r2   rL   matrixs   r   r    ztest_creation.<locals>.<lambda>Z   s    l5577Av>> r   c                  6    t                                  S r   r   )r1   rL   rN   s   r   r    ztest_creation.<locals>.<lambda>[   s    l1eeggv>> r   c                      t          t          j        t          t                                        d                     S )Nr   )r	   r   r   r   r   r   )r2   rN   s   r   r    ztest_creation.<locals>.<lambda>]   s0    L)9!Q)?)?)K)KA)N)NPQSYZZ r   c                  *    t           ddg          S )Nr   r   )r1   r2   s   r   r    ztest_creation.<locals>.<lambda>^   s    |Aq1a&9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   sP   
''**A
''**A	
YYY		B	BA	
YYY		B!fq!fr2h'FQ6""A	aF	#	#BR  B&&&&
:HHHHHIIIb!!\"a%@%@@@@@
:33333444
:GGGGGHHH
:55555666
))YYY				*BQ^ : :~~<1b#9#999999b!R!8!88888b!R!8!88888>>|Aq"555555??RWb" = =====                
 9>>>>>>???
9>>>>>>???
ZZZZZ\ \ \
:99999:::::r   c                     t          j        t          t                    } |                     d          }t          ||t          dgt          dgg          }|                                |                    t           t          g          k    sJ |                                |                    t          dgt          dg          k    sJ |	                                rJ |
                                rJ |                    |                                          
                                sJ |                    |                    ddg                    	                                sJ |                    |                                                              |                                                                          sJ t          j        t          t          dt          fdt          ff          t          dz  dz   gz  }|                    d          }t          ||t          dgt          t          dz   gg          }|                                sJ d S )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------7799QFQF333333~~     qwwyy))7799999Q[[!Q0011>>@@@@@	

 %%aggii001A1AB B B 
	!QqzFA;&?	@	@	@AqD1H:	MB
qAQQFQAJ/0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 0 0 0 0 0         ) ) ) ) ) ) ' ' ' ' ' '	] 	] 	] #  #  #F&; &; &;R    r   