U
    L?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&ttt| jdks<tttddksPttt| ||fjdksltd S )NZxyzr         xyz)mapr   lenr   
generatorsAssertionErrorr
    r   \/var/www/html/venv/lib/python3.8/site-packages/sympy/combinatorics/tests/test_free_groups.pytest_FreeGroup__init__	   s
    r   c                  C   s:  t d\} }}}tjtttfks$tttd  tks8tttksDtttd  tksXttt d tkslt|tksxt|d tkstttdkstttdkstt| krtt	 t
ksttjdkstt tjhkstt d\}|	 d	kst|jd
kst|j|jhks&t|jdks6t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   r   strorderr   Z
is_abeliancenteridentityelements)Gabcer   r   r   test_free_group   s&    
r#   c                   C   s   t tstd S N)hashr   r   r   r   r   r   test_FreeGroup__hash__)   s    r&   c                   C   s   t dd t dd kstt dd t dd ks8tt dd t dd ksTtt dd t dd k	sptt dd t dd kstt dd t dd k	stt dd t dd kstt dd t dd k	std S )Nr   r   za, x, yzx, y)r   r   r   r   r   r   test_FreeGroup__eq__-   s    r'   c                   C   sL   t dd  tdkstt dd  tdks0tt dd  tdksHtd S )Nr   r   r	   zy, zr   r   )r   r   r   r   r   r   r   test_FreeGroup__getitem__;   s    r(   c                   C   s   t tt t std S r$   )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s4t| |ks@td S )Nr      )r   r   r   copyr   )fghr   r   r   test_FreeGroupElm_copyE   s
    r/   c                   C   s   t  t d kstt t  td t d  ks4ttt  td   tt d  td  ks`ttd t d   t td  kstd S )Nr   r   )r   Zinverser   r   r   r   r   r   test_FreeGroupElm_inverseN   s     ,r1   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 r2   )r   r   r   r   r   r   r4   W   r5   c                   S   s   t d S r2   r3   r   r   r   r   r4   X   r5   )r   	TypeErrorr   r   r   r   test_FreeGroupElm_type_errorU   s    r7   c                   C   s   t d  dksttd  tks(tt d t t td t d  t t  ksVttt d td  dksrttt d td  t dkstd S )Nr   r	   r   r   r      )r   r   r   r   r   Z
commutatorr   r   r   r   r   r   test_FreeGroupElm_methods[   s
    .r9   c                  C   sh  t d t t d  td  t  } | t t d t d t t d  td  t d  ksXtt d td  t d  t }|t t d t d td  t d  t kst|t ttd kst|t td td	 kst|tt d t d
 kst|t tt tt t t td  td  ks*ttd
 tt d td  tt  t t  t t  ksdtd S )Nr8   r   
      r   r   r0      )r   r   Zeliminate_wordr   r   )wZw3r   r   r    test_FreeGroupElm_eliminate_wordc   s     806r@   c                   C   s   t t jtddftddffks&t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sptt d td  jtddftddffkstd S )Nr   r	   r   r   r0   r   r   )r   r   Z
array_formr   r   r   r   r   r   r   test_FreeGroupElm_array_formq   s
    &*rA   c                   C   sh   t d jtdtdtdfks$tt d td  t  jtdtdtd td tdfksdtd S )Nr   r   r   r0   r   )r   Zletter_formr   r   r   r   r   r   r   test_FreeGroupElm_letter_formx   s    $$rB   c                   C   s   t d td  t  jtddtddtddfks6tt d td  jtddtddfks`tt t jtddtddfkstd S )Nr   r0   r   r   r	   r   r   )r   r   Zext_repr   r   r   r   r   r   r   test_FreeGroupElm_ext_rep~   s
    *rC   c                  C   sn  t jtddff} t d | t  ks*tt d t t d  d t d td  t d  ks^tt d d t d ksvtt d d t kstt d d tjksttd d td kstt d t d  t kstt d td  td  t d t kstt t d  tjkstt t  tjks$tt t d  t d ks>tt d t t d td   t d td  t d  ksxtt d t td t d   t d t t d  t kstt t d t t td   tt td  kstt d t d td  td  t  td td  t ks"ttj}t	d	D ]8}|t | ksFt|d t |  ks^t|t 9 }q0d S )
Nr   r	   r   r0   r<   r   r   r:   r;   )
r   groupZdtyper   r   r   r   r   r   range)x1r   nr   r   r   test_FreeGroupElm__mul__pow__   s*    4(::2>rH   c                   C   sX   t td t td  td  t dks,tt td dks@tt td dksTtd S )Nr8   r   r:         r   )r   r   r   r   r   r   r   r   test_FreeGroupElm__len__   s    ,rK   c                   C   s(  t t tt  krtt d td ks(tt d td k s<tt d td k rPtt t t d t k shtt d td  td k sttd td k rttd t d k rttd td k stt d td kstt d t d ksttt tt krtt t d kstt d td kr$td S )Nr   r   r   r<   r:   r0   r   )r   r   r   r   r   r   r   r   test_FreeGroupElm_comparison   s    rL   c                  C   s   t d t t d  td  t  } |  dks0t| ddksBt| dtdksXt| ddtkslt| ddtj	kstd S )Nr8   r   r:   r   r   r	   )
r   r   Znumber_syllablesr   Zexponent_syllableZgenerator_syllabler   Zsub_syllablesr   r   r?   r   r   r   test_FreeGroupElm_syllables   s     rN   c                  C   s   t d td  } | t dks"t| t d dks8t| t dksJtt d td  t d  }|t dkstt|t dkstd S )Nr   r   r   r0   r<   r>   r8   )r   r   Zexponent_sumr   Zgenerator_count)Zw1Zw2r   r   r   test_FreeGroup_exponents   s    rO   c                   C   sN   t d td  td   t tthks*tt d td   t thksJtd S )Nr   r<   r   r   )r   r   r   Zcontains_generatorsr   r   r   r   r   test_FreeGroup_generators   s    *rP   c                  C   s   t d t t d  td  t  } | ddt d t ks<t| ddtjksRt| ddt d td  ksrt| dd	td
 td
 t  td  t  kst| dd	td t  td t d  td  t  kstd S )Nr8   r   r:      r   r;   r0   r   r*   r   )r   r   Zsubwordr   r   r   Zsubstituted_wordrM   r   r   r   test_FreeGroupElm_words   s      .rR   N)"Zsympy.combinatorics.free_groupsr   r   Z
sympy.corer   Zsympy.testing.pytestr   Zsympy.core.numbersr   r   r   r   r   r   r#   r&   r'   r(   r)   r/   r1   r7   r9   r@   rA   rB   rC   rH   rK   rL   rN   rO   rP   rR   r   r   r   r   <module>   s2   			