o
    h                     @   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!d0S )1    )
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   ^/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/combinatorics/tests/test_free_groups.pytest_FreeGroup__init__	   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sJ |jd
ksJ |j|jhksJ |j
dksJ 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__-   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__A   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_copyE   s
   r0   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_inverseN   s    ,(r3   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>V       z.test_FreeGroupElm_type_error.<locals>.<lambda>c                   S   s   t d td  S r4   )r   r   r   r   r   r   r6   W   s    c                   S   s   t d S r4   r5   r   r   r   r   r6   X   r7   )r   	TypeErrorr   r   r   r   test_FreeGroupElm_type_errorU   s   r9   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sJ td
 tt d td  tt  t t  t t  ksJ d S )Nr:   r   
      r	   r   r1      )r   r   eliminate_wordr   )ww3r   r   r    test_FreeGroupElm_eliminate_wordc   s    804<rE   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   r1   r   r   )r   r   
array_formr   r   r   r   r   r   test_FreeGroupElm_array_formq   s
   &*2rG   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   r1   r   )r   letter_formr   r   r   r   r   r   test_FreeGroupElm_letter_formx   s   $$rI   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   r1   r   r   r
   r   r   )r   r   ext_repr   r   r   r   r   r   test_FreeGroupElm_ext_rep~   s
   *&rK   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sJ t t  tjksJ t t d  t d ksJ t d t t d td   t d td  t d  ksJ t d t td t d   t d t t d  t ksJ t t d t t td   tt td  ksJ 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   r1   r?   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>rQ   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   ,rT   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sJ t d td krJ d S )Nr   r   r	   r?   r=   r1   r   r   r   r   r   r   test_FreeGroupElm_comparison   s   rU   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   rC   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   r1   r?   rA   r:   )r   r   exponent_sumgenerator_count)w1w2r   r   r   test_FreeGroup_exponents   s   r`   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   r?   r   r	   )r   r   r   contains_generatorsr   r   r   r   test_FreeGroup_generators   s   *$rb   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>   r1   r   r+   r   )r   r   subwordr   r   substituted_wordrZ   r   r   r   test_FreeGroupElm_words   s     .:rf   N)"sympy.combinatorics.free_groupsr   r   
sympy.corer   sympy.testing.pytestr   sympy.core.numbersr   r   r   r   r   r   r$   r'   r(   r)   r*   r0   r3   r9   r<   rE   rG   rI   rK   rQ   rT   rU   r[   r`   rb   rf   r   r   r   r   <module>   s4    			