o
    GZŽh€  ã                   @   sh   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d„ Zd	d
„ Zdd„ Zdd„ ZdS )zTests for homomorphisms.é    )ÚS)ÚQQ©ÚxÚy©Úhomomorphism)Úraisesc                  C   s¤   t  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 dgƒƒdksCJ ‚t|  d¡ ¡ ƒdksPJ ‚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)ÚR© r   úX/var/www/auris/lib/python3.10/site-packages/sympy/polys/agca/tests/test_homomorphisms.pyÚtest_printing
   s   
ÿÿ$ÿr   c                     sè  t  t¡ d¡} t  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sFJ ‚ˆ |  ¡ kdu sPJ ‚dˆ  ˆ d   krit| | ddgddggƒkslJ ‚ J ‚ˆ d t| | tjdgdtjggƒks€J ‚ˆ ˆ t| | ddgdtd ggƒks”J ‚ˆ ˆ t| | ddgddt ggƒks¨J ‚ˆ ˆ ˆ  kr·ˆˆ  ksºJ ‚ J ‚|ˆ t| | dddggƒksÊJ ‚ˆ| t| | ddgƒksØJ ‚ˆˆ  ˆksàJ ‚ˆ ddgƒddgksìJ ‚ˆddgƒddt 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sBJ ‚tt‡ ‡fd	d
„ƒ tt‡ fdd
„ƒ tt‡ ‡fdd
„ƒ tt‡ fdd
„ƒ tt‡ ‡fdd
„ƒ d S )Nr   é   r   r
   ©r
   r   r   ©r   r
   r   Féÿÿÿÿc                      s   ˆ ˆ S ©Nr   r   )ÚfÚgr   r   Ú<lambda>1   ó    z!test_operations.<locals>.<lambda>c                      s   ˆ d S ©Nr
   r   r   ©r   r   r   r   2   r   c                      s   ˆ ˆ S r   r   r   ©r   Úir   r   r   3   r   c                      s   ˆ d S r   r   r   r   r   r   r   4   r   c                      s   ˆ ˆ S r   r   r   r   r   r   r   5   r   )r   r   r   r   r   r   r   ZHalfÚrestrict_domainÚ	submoduleÚquotient_domainÚdomainr	   Ú	TypeError)ÚFÚGÚhZh1r   )r   r   r    r   Útest_operations   s:   8((($ .0r)   c                     s  t  t¡ d¡‰ t  t¡ d¡‰ˆ  g d¢¡} ˆ |  }| g d¢¡}ddgddgddgg‰tˆ ˆˆƒ‰t|ˆˆƒ}ˆ | ¡|ksBJ ‚tt‡ ‡fdd	„ƒ | 	|¡t|ˆˆƒksYJ ‚tt‡‡fd
d	„ƒ tt‡‡fdd	„ƒ tt‡ ‡fdd	„ƒ g d¢g d¢g d¢g}ˆ | ||fD ]}| 
¡ t|||ƒks–J ‚qˆ|  ¡ t| ˆ |ƒks£J ‚| ¡ t|||ƒks¯J ‚| ¡ tˆ ||ƒks»J ‚| ¡ t|j||ƒksÈJ ‚G dd„ dƒ‰G ‡fdd„dƒ‰tt‡‡‡fdd	„ƒ tt‡ ‡‡fdd	„ƒ tt‡‡fdd	„ƒ tt‡ ‡fdd	„ƒ d S )Nr   r   )r
   r
   r
   r   r
   r   r   c                      s   ˆ  ˆ  g d¢¡¡S )Nr   )r#   r"   r   ©r&   r(   r   r   r   C   ó    ztest_creation.<locals>.<lambda>c                      ó
   ˆ  ˆ ¡S r   )r!   r   ©r'   r(   r   r   r   E   ó   
 c                      s   ˆ  ˆ  ddg¡¡S )Nr
   r   )Úrestrict_codomainr"   r   r-   r   r   r   F   r+   c                      r,   r   )Zquotient_codomainr   r*   r   r   r   G   r.   r   )r   r   r
   c                   @   s   e Zd Zddd„ZdS )ztest_creation.<locals>.convNc                 S   s   | S r   r   r   r   r   r   ÚconvertR   ó   z#test_creation.<locals>.conv.convertr   )Ú__name__Ú
__module__Ú__qualname__r0   r   r   r   r   ÚconvQ   s    r5   c                       s   e Zd Z” ƒ Zdd„ ZdS )ztest_creation.<locals>.dummyc                  W   s   d S r   r   )Úargsr   r   r   r"   X   r1   z&test_creation.<locals>.dummy.submoduleN)r2   r3   r4   Ú	containerr"   r   )r5   r   r   ÚdummyU   s    r8   c                      s   t ˆƒ ˆ ˆƒS r   r   r   )r'   r8   Úmatrixr   r   r   Z   ó    c                      s   t ˆ ˆƒ ˆƒS r   r   r   )r&   r8   r9   r   r   r   [   r:   c                      s   t t tt¡ d¡ˆ ˆƒS )Nr   )r   r   r   r   r   r   r   )r'   r9   r   r   r   ]   s    c                      s   t ˆ ˆddgƒS )Nr   r   r   )r&   r'   r   r   r   ^   s    )r   r   r   r   r"   r   r#   r	   Ú
ValueErrorr!   r   Zinclusion_homZquotient_homÚbaser%   )ZSMÚQZSQZh2ZimÚMr   )r&   r'   r5   r8   r(   r9   r   Útest_creation8   s:   ÿr?   c                  C   s4  t  tt¡} |  d¡}t||tdgtdggƒ}| ¡ | t tg¡ks%J ‚| ¡ | tdgtdg¡ks5J ‚| 	¡ r;J ‚| 
¡ rAJ ‚| | ¡ ¡ 
¡ sLJ ‚| | ddg¡¡ 	¡ sZJ ‚| | ¡ ¡ | ¡ ¡ ¡ sjJ ‚t jttdtfdtffdtd d g }| d¡}t||tdgttd ggƒ}| ¡ s˜J ‚d S )Nr   r   r
   ÚlexZilex)Úorder)r   r   r   r   r   r   Zkernelr"   ÚimageZis_injectiveZis_surjectiver/   r!   r#   Zis_isomorphism)r   r&   r(   ZR2r   r   r   Útest_propertiesa   s$   
 ÿÿ*
rC   N)Ú__doc__Zsympy.core.singletonr   Z!sympy.polys.domains.rationalfieldr   Z	sympy.abcr   r   Zsympy.polys.agcar   Zsympy.testing.pytestr	   r   r)   r?   rC   r   r   r   r   Ú<module>   s    #)