o
    ‘Ù·i  ã                   @   sø   d dl mZmZ d dlmZ d dlmZ d dlmZ edƒ\Z	Z
ZZdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Z d.d/„ Z!d0d1„ Z"d2S )3é    )Ú
free_groupÚ	FreeGroup)ÚSymbol)Úraises)Úooúx, y, zc                  C   sp   t tdƒ\} }}ttdƒjƒdksJ ‚tt| ƒjƒdksJ ‚ttdƒƒdks(J ‚tt| ||fƒjƒdks6J ‚d S )NÚxyzr   é   é   ©ÚxÚyÚz)Úmapr   Úlenr   Ú
generatorsr   © r   ú^/home/ubuntu/.local/lib/python3.10/site-packages/sympy/combinatorics/tests/test_free_groups.pyÚtest_FreeGroup__init__	   s
    r   c                  C   s0   t tdƒ\} }}tdƒ ¡ | ||ffksJ ‚d S )Nr   r   )r   r   r   Ú__getnewargs__r   r   r   r   Útest_FreeGroup__getnewargs__   s    r   c                  C   s2  t dƒ\} }}}tjtttfksJ ‚ttd  tv sJ ‚ttv s"J ‚ttd  tv s,J ‚tt d tv s6J ‚|tvs<J ‚|d tvsDJ ‚ttƒdksLJ ‚ttƒdksTJ ‚t| krZJ ‚t ¡ t	u sbJ ‚tj
dksiJ ‚t ¡ tjhkssJ ‚t dƒ\}| ¡ d	ks€J ‚|jd
ks‡J ‚|j|jhksJ ‚|j
dks—J ‚d S )Nza, b, cé   éÿÿÿÿr   r	   z(<free group on the generators (x, y, z)>FÚ r
   r   T)r   ÚFr   r   r   r   r   ÚstrÚorderr   Ú
is_abelianÚcenterÚidentityÚelements)ÚGÚaÚbÚcÚer   r   r   Útest_free_group   s&   
r&   c                   C   s   t tƒsJ ‚d S ©N)Úhashr   r   r   r   r   Útest_FreeGroup__hash__.   s   r)   c                   C   sä   t dƒd t dƒd ksJ ‚t dƒd t dƒd u sJ ‚t dƒd t dƒd ks*J ‚t dƒd t dƒd us8J ‚t dƒd t dƒd ksFJ ‚t dƒd t dƒd usTJ ‚t dƒd t dƒd ksbJ ‚t dƒd t dƒd uspJ ‚d S )Nr   r   za, x, yzx, y)r   r   r   r   r   Útest_FreeGroup__eq__2   s    r*   c                   C   sL   t dd … tdƒksJ ‚t dd … tdƒksJ ‚t dd … tdƒks$J ‚d S )Nr   r   r
   zy, zr   r   )r   r   r   r   r   r   Útest_FreeGroup__getitem__@   s   r+   c                   C   s   t tt t ƒs
J ‚d S r'   )r(   r   r   r   r   r   r   r   Útest_FreeGroupElm__hash__F   s   r,   c                  C   sD   t t td  } |  ¡ }t t td  }| |ksJ ‚| |ks J ‚d S )Nr	   é   )r   r   r   Úcopy)ÚfÚgÚhr   r   r   Útest_FreeGroupElm_copyJ   s
   r2   c                   C   sˆ   t  ¡ t d ks
J ‚t t  ¡ td t d  ksJ ‚tt  td   ¡ tt d  td  ks0J ‚td t d   ¡ t td  ksBJ ‚d S )Nr   r   éþÿÿÿ)r   Úinverser   r   r   r   r   Útest_FreeGroupElm_inverseS   s    ,(r5   c                   C   s.   t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s   dt  S ©Nr   ©r   r   r   r   r   Ú<lambda>[   ó    z.test_FreeGroupElm_type_error.<locals>.<lambda>c                   S   s   t d td  S r6   )r   r   r   r   r   r   r8   \   s    c                   S   s   t d S r6   r7   r   r   r   r   r8   ]   r9   )r   Ú	TypeErrorr   r   r   r   Útest_FreeGroupElm_type_errorZ   s   r;   c                   C   s–   t d  ¡ dks
J ‚td  ¡ tu sJ ‚t d t  t ¡td t d  t t  ks+J ‚tt d td  ƒdks9J ‚tt d td  t ƒdksIJ ‚d S )Nr   r
   r   r   r	   é   )r   r   r   r   Ú
commutatorr   r   r   r   r   r   Útest_FreeGroupElm_methods`   s
   .$r>   c                  C   sd  t d t t d  td  t  } |  t t d ¡t d t t d  td  t d  ks,J ‚t d td  t d  t }| t t d ¡t d td  t d  t ksRJ ‚| t t¡td ks^J ‚| t td ¡td	 kslJ ‚| tt d ¡t d
 kszJ ‚| t tt ¡tt t t td  td  ks”J ‚td
  tt d td  ¡tt  t t  t t  ks°J ‚d S )Nr<   r   éüÿÿÿé
   é   r	   r   r3   é   éýÿÿÿ)r   r   Úeliminate_wordr   )ÚwÚw3r   r   r   Ú test_FreeGroupElm_eliminate_wordh   s    804<rG   c                   C   s¢   t t jtdƒdftdƒdffksJ ‚t d t t t d  jtdƒdftdƒdftdƒdftdƒdffks8J ‚t d td  jtdƒdftdƒdffksOJ ‚d S )Nr   r
   r   r   r3   r   r   )r   r   Ú
array_formr   r   r   r   r   r   Útest_FreeGroupElm_array_formv   s
   &*ÿ2rI   c                   C   sh   t d jtdƒtdƒtdƒfksJ ‚t d td  t  jtdƒtdƒtdƒ tdƒ tdƒfks2J ‚d S )Nr	   r   r   r3   r   )r   Úletter_formr   r   r   r   r   r   Útest_FreeGroupElm_letter_form}   s   $$ÿrK   c                   C   s†   t d td  t  jtdƒdtdƒdtdƒdfksJ ‚t d td  jtdƒdtdƒdfks0J ‚t t jtdƒdtdƒdfksAJ ‚d S )Nr   r3   r   r   r
   r   r   )r   r   Úext_repr   r   r   r   r   r   Útest_FreeGroupElm_ext_repƒ   s
   ÿ*&rM   c                  C   sb  t j tdƒdff¡} t d | t  ksJ ‚t d t t d  d t d td  t d  ks/J ‚t d d t d ks;J ‚t d d t ksEJ ‚t d d tjksPJ ‚td d td ks\J ‚t d t d  t kshJ ‚t d td  td  t d t ks|J ‚t t d  tjks‡J ‚t t  tjksJ ‚t t d  t d ksœJ ‚t d t t d td   t d td  t d  ks¸J ‚t d t td t d   t d t t d  t ksÔJ ‚t t d t t td   tt td  ksìJ ‚t d t d td  td  t  td td  t ksJ ‚tj}td	ƒD ]}|t | ksJ ‚|d t |  ks)J ‚|t 9 }qd S )
Nr   r
   r   r3   rA   r   r   r?   r@   )	r   ÚgroupÚdtyper   r   r   r   r   Úrange)Úx1r"   Únr   r   r   Útest_FreeGroupElm__mul__pow__Š   s,   4(880>ýrS   c                   C   sX   t td t td  td  t ƒdksJ ‚t td ƒdks J ‚t td ƒdks*J ‚d S )Nr<   r   r?   é   é   r   )r   r   r   r   r   r   r   Útest_FreeGroupElm__len__§   s   ,rV   c                   C   s$  t t tt  kr
J ‚t d td ksJ ‚t d td k sJ ‚t d td k r(J ‚t t t d t k s4J ‚t d td  td k sBJ ‚td td k rLJ ‚td t d k rVJ ‚td td k s`J ‚t d td ksjJ ‚t d t d kstJ ‚tt tt kr~J ‚t t d ks†J ‚t d td krJ ‚d S )Nr   r   r	   rA   r?   r3   r   r   r   r   r   r   Útest_FreeGroupElm_comparison­   s   rW   c                  C   s†   t d t t d  td  t  } |  ¡ dksJ ‚|  d¡dks!J ‚|  d¡tdƒks,J ‚|  dd¡tks6J ‚|  dd¡tjksAJ ‚d S )Nr<   r   r?   r	   r   r
   )	r   r   Únumber_syllablesÚexponent_syllableÚgenerator_syllabler   Úsub_syllablesr   r   ©rE   r   r   r   Útest_FreeGroupElm_syllablesÂ   s    r]   c                  C   sŠ   t d td  } |  t ¡dksJ ‚|  t d ¡dksJ ‚|  t ¡dks%J ‚t d td  t d  }| t ¡dks:J ‚| t ¡dksCJ ‚d S )Nr   r	   r   r3   rA   rC   r<   )r   r   Úexponent_sumÚgenerator_count)Úw1Úw2r   r   r   Útest_FreeGroup_exponentsË   s   rb   c                   C   sN   t d td  td   ¡ t tthksJ ‚t d td   ¡ t thks%J ‚d S )Nr   rA   r   r	   )r   r   r   Úcontains_generatorsr   r   r   r   Útest_FreeGroup_generatorsÖ   s   *$rd   c                  C   sÚ   t d t t d  td  t  } |  dd¡t d t ksJ ‚|  dd¡tjks)J ‚|  dd¡t d td  ks9J ‚|  dd	td
 ¡td
 t  td  t  ksPJ ‚|  dd	td t  ¡td t d  td  t  kskJ ‚d S )Nr<   r   r?   é   r	   r@   r3   r   r-   r   )r   r   Úsubwordr   r   Úsubstituted_wordr\   r   r   r   Útest_FreeGroupElm_wordsÛ   s     .:rh   N)#Úsympy.combinatorics.free_groupsr   r   Ú
sympy.corer   Úsympy.testing.pytestr   Úsympy.core.numbersr   r   r   r   r   r   r   r&   r)   r*   r+   r,   r2   r5   r;   r>   rG   rI   rK   rM   rS   rV   rW   r]   rb   rd   rh   r   r   r   r   Ú<module>   s6    			