U
    —9%eµN  ã                   @   s&  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZ d dlmZmZmZmZ d d	lmZmZ ejZe	d
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-S ).é    )Úpermutations)Ú	unchanged)ÚInteger)ÚEq)ÚSymbol)ÚS)ÚPermutationÚ
_af_parityÚ_af_rmulÚ	_af_rmulnÚAppliedPermutationÚCycle)ÚsstrÚsreprÚprettyÚlatex)ÚraisesÚwarns_deprecated_sympyÚaT©Úintegerc               	      sB  t tdd„ ƒ tddddgƒ‰ ‡ fdd„tˆ jƒD ƒtˆ ƒksBt‚ˆ ttˆ jƒƒƒtˆ ƒks`t‚tˆ ddƒƒddddgks~t‚t t‡ fd	d„ƒ t t‡ fd
d„ƒ tˆ ƒttdƒƒksºt‚tddtdƒksÐt‚ttdƒddtdƒksìt‚tddggddtddgdgdggƒkst‚t d¡tddgƒtddgƒfksBt‚tdddddddgƒ‰ tdgddddddggƒ} t	ˆ ˆ hƒdksˆt‚tdddddddgƒ}tt
dd„ ˆ | |fD ƒŽ ƒj}tˆ | |ƒj|ksÔt‚tˆ | |fƒD ]>\}}}|||fˆ | |fkrqât|||ƒj|ksât‚qâˆ  ¡ ttdƒƒks<t‚|  ¡ ddddddgksZt‚tˆ jƒjˆ jksrt‚ˆ jdks‚t‚| jdks’t‚| jdks¢t‚t| ˆ ƒtdddddddgƒksÈt‚tˆ | ƒtdddddddgƒksît‚tˆ j| jƒdddddddgkst‚ttdddgddggƒtdddgdgdggƒƒjdddgddggks^t‚| jdddddddgks|t‚| jddddddggksšt‚| jddddddgdggks¼t‚ˆ jddddgdddggksÞt‚ˆ  ¡ }|dddddgksþt‚tjdd„ |D ƒŽ st‚tddgƒ ¡ dgks4t‚ˆ d ˆ ksFt‚| d ttt| jƒƒƒksft‚| d | d  ks~t‚| d tdddddddgƒks¢t‚| d | d |  ks¼t‚| d | d | d  ksÚt‚tddƒ}tdddƒ}tdƒ}| |d kst‚||  |ks t‚||d  ||  ks<t‚tdddddƒddƒ}ˆ |  ¡   ¡ | ¡ kspt‚ˆ |  ¡  j| ¡ ksŒt‚| ˆ  ¡   ¡ | ¡ ksªt‚t t‡ fdd„ƒ ˆ |  ¡   ¡ tdddddddƒ ¡ ksêt‚ˆ  ¡ |  ¡  dk st‚| ˆ  ¡   ¡ tddddƒddƒ ¡ ks2t‚ˆ |  tt
dd„ | ˆ fD ƒŽ ƒksZt‚ˆ tg ƒ ˆ kspt‚tg ƒˆ  ˆ ks†t‚ˆ tddggƒ tdddddddgƒks´t‚tddggƒˆ  tdddddddgƒksât‚ˆ | A }|tdddddddgƒks
t‚|t| ˆ |  ƒks"t‚| ˆ A }	|	tdddddddgƒksJt‚|	tˆ | ˆ  ƒksbt‚t t‡ fdd„ƒ ˆ  | ¡tdddddddƒks˜t‚|  ˆ ¡tdddddddƒks¼t‚ˆ  | ¡|  ˆ ¡ ksØt‚t t‡ fdd„ƒ t	ˆ  ¡ ƒdks t‚|  ¡ dddddddhks t‚ˆ  ¡ ddddddgks>t‚|  ¡ ddddddgks\t‚t ˆ  ¡ ¡ˆ kstt‚t |  ¡ ¡j| jkst‚t tdd„ ƒ tttd ddƒƒƒ ¡ d!ksÀt‚tdddddgƒ}
|
 ¡ dksät‚|
j}t	|
jƒ|
jk	r
|
 ¡ dk	st‚|
j	rt‚|
j	s&t‚tdddddgƒ ¡ dk	sFt‚t dddddgƒdk	sbt‚t dddddgƒdk	s~t‚tdgƒ}
|
j!	s”t‚tg ƒj"	s¤t‚tddddgƒ}|d j#	sÄt‚tˆ  ˆ ƒj#	sØt‚ˆ  d tdddddddgƒk	sþt‚|d j# 
st‚ˆ  $¡ dk
s"t‚ˆ  %¡ dk
s4t‚tdgdgdddddggƒ} |  $¡ dk
sbt‚|  %¡ dk
stt‚tdddddddgƒ‰ tdddddgddggƒ} ˆ  &¡ dddgk
s¼t‚|  &¡ dddgk
sÔt‚| &¡ g k
sæt‚ˆ  '¡ dddgk
sþt‚|  '¡ dddgkst‚t| '¡ ƒj#s*t‚ˆ  ¡ dks<t‚tˆ ƒttˆ  $¡ d ˆ  $¡ d" ƒƒ }t|ƒ ¡ dksxt‚ˆ  (¡ dksŠt‚|  ¡ d#ksœt‚|  (¡ dks®t‚tˆ ˆ  ƒ ¡ dksÈt‚tˆ ˆ  ƒ (¡ dksât‚ˆ  )¡ dksôt‚|  )¡ d$kst‚ˆ ˆ  )¡  j#st‚ˆ  *¡ dks,t‚|  *¡ dks>t‚| *¡ dksPt‚ˆ  +¡ ddgdgdddgdggksxt‚|  +¡ dgdddgddgdggks t‚| +¡ dgdgdgdggksÂt‚ˆ  ,¡ d%ksÔt‚|  ,¡ d%ksæt‚| ,¡ dksøt‚ˆ  -| ¡|  -ˆ ¡kst‚ˆ  .| ¡ˆ  .| ¡ks,t‚ˆ  /| ¡ˆ  /| ¡ksFt‚tddddgƒ‰ tddddgƒ} ˆ  -| ¡dkszt‚ˆ  .| ¡dksŽt‚ˆ  /| ¡d%ks¢t‚tdddddgƒ‰ t 0ddd¡} ˆ  .| ¡dksÖt‚t t‡ fd&d„ƒ t t‡ fd'd„ƒ t t‡ fd(d„ƒ d)d„ tdƒD ƒ}tddddgƒ}tdƒD ]¤}t|d dƒD ]Ž}||  1|| ¡t|| || ƒt|| || ƒkksˆt‚||  1|| ¡rH||  || ¡|ks¸t‚||  || ¡|ksHt‚qHq6tdƒ}tdddƒddƒ}|j2ddiks
t‚|j2dddd*œks"t‚t td+d„ ƒ t td,d„ ƒ d S )-Nc                   S   s
   t dgƒS )Né   ©r   © r   r   új/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/combinatorics/tests/test_permutations.pyÚ<lambda>   ó    z"test_Permutation.<locals>.<lambda>r   r   é   é   c                    s   g | ]}ˆ |ƒ‘qS r   r   ©Ú.0Úi©Úpr   r   Ú
<listcomp>   s     z$test_Permutation.<locals>.<listcomp>c                      s   ˆ dƒS )Néÿÿÿÿr   r   r"   r   r   r      r   c                      s   ˆ dƒS )Né   r   r   r"   r   r   r      r   é   ©Úsizer&   é   c                 S   s   g | ]
}|j ‘qS r   )Ú
array_form©r    Úwr   r   r   r$   +   s     é   i°  )r   r&   )r   r   )r   r   )r   r'   )r   r*   c                 S   s   g | ]}t t|Ž ƒ‘qS r   )r   r   )r    Útir   r   r   r$   H   s     é   éþÿÿÿr%   c                      s   ˆ t ttdƒƒƒ S )Né
   )r   ÚlistÚranger   r"   r   r   r   ]   r   c                 S   s   g | ]}t |ƒ‘qS r   )r3   r,   r   r   r   r$   c   s     c                      s   ˆ t g ƒA S ©Nr   r   r"   r   r   r   o   r   c                      s   ˆ   tg ƒ¡S r5   )Ú
commutatorr   r   r"   r   r   r   t   r   c                   S   s   t  ddg¡S )Nr   r   )r   Úfrom_inversion_vectorr   r   r   r   r      r   iô  iBé é‚   é   r2   é   c                      s   ˆ   tg ƒ¡S r5   )Úget_adjacency_distancer   r   r"   r   r   r   Ï   r   c                      s   ˆ   tg ƒ¡S r5   )Úget_positional_distancer   r   r"   r   r   r   Ð   r   c                      s   ˆ   tg ƒ¡S r5   )Úget_precedence_distancer   r   r"   r   r   r   Ñ   r   c                 S   s   g | ]}t  d |¡‘qS ©r'   )r   Úunrank_nonlexr   r   r   r   r$   Ó   s     )r   r   r   c                   S   s   t dddS )Nr   r(   r   r   r   r   r   r   â   r   c                   S   s   t ddddgddS )Nr   r   r   r   r(   r   r   r   r   r   r   ã   r   )3r   Ú
ValueErrorr   r4   r)   r3   ÚAssertionErrorÚ	TypeErrorÚrandomÚlenr   r+   Úrmulr   ZsupportÚcyclic_formZcardinalityZcyclesr
   Zfull_cyclic_formZtranspositionsÚrankZ_rankr6   ZatomsZinversion_vectorr7   Z
inversionsZparityÚ_cyclic_formZis_oddZis_evenr	   Zis_SingletonZis_EmptyÚis_IdentityÚmaxÚminZascentsZdescentsÚ	signatureÚorderÚlengthÚrunsÚindexr=   r;   r<   ÚjosephusZcommutes_withZcycle_structure)ÚqÚrZansr   ÚbÚcÚtÚIZpqZqpÚsÚ_ÚbigZidenr!   Újr   r"   r   Útest_Permutation   sX   $.(&&ÿ
ÿþ
"" $
..(..  $$ ÿ
"$ 
&&((""ÿ
$r\   c                     s¤   G dd„ dt ƒ‰ ˆ ddddgƒ} t ddddgƒ‰| ˆks<t‚tt‡fdd„ƒ ddg| ddgƒksft‚t| ˆ ƒˆ kszt‚tˆ|  ƒt ksŽt‚‡ fd	d
„}|ƒ  d S )Nc                       s4   e Zd Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  ZS )z7test_Permutation_subclassing.<locals>.CustomPermutationc                    sb   zt ƒ j|Ž W S  tk
r"   Y nX z|d }‡ fdd„|D ƒW S  tk
r\   tdƒ‚Y nX d S )Nr   c                    s   g | ]}ˆ j | ‘qS r   )Ú_array_form)r    r[   ©Úselfr   r   r$   ñ   s     zTtest_Permutation_subclassing.<locals>.CustomPermutation.__call__.<locals>.<listcomp>zunrecognized argument)ÚsuperÚ__call__rB   )r_   r!   Zperm_obj©Ú	__class__r^   r   ra   é   s    z@test_Permutation_subclassing.<locals>.CustomPermutation.__call__c                    s*   t |tƒr|  ¡ | ¡ kS tƒ  |¡S d S r5   )Ú
isinstancer   Z_hashable_contentr`   Ú__eq__)r_   Úotherrb   r   r   re   õ   s    
z>test_Permutation_subclassing.<locals>.CustomPermutation.__eq__c                    s
   t ƒ  ¡ S r5   )r`   Ú__hash__r^   rb   r   r   rg   û   s    z@test_Permutation_subclassing.<locals>.CustomPermutation.__hash__)Ú__name__Ú
__module__Ú__qualname__ra   re   rg   Ú__classcell__r   r   rb   r   ÚCustomPermutationè   s   rl   r   r   r   r   c                      s   ˆ ddgƒS ©Nr   r   r   r   )rR   r   r   r     r   z.test_Permutation_subclassing.<locals>.<lambda>c                      s<   t ƒ d t ƒ d< ˆ t ƒ d< tƒ  t ƒ d t ƒ d< t ƒ d= d S )Nr   Z__Perm)Úglobalsr\   r   )rl   r   r   Úwrapped_test_Permutation	  s
    
z>test_Permutation_subclassing.<locals>.wrapped_test_Permutation)r   rA   r   rB   Útype)r#   ro   r   )rl   rR   r   Útest_Permutation_subclassingæ   s    rq   c                   C   s>   t  ddd¡t ddddddgƒks&t‚t  ddd¡js:t‚d S )Nr'   r*   r   r   r   r   r&   )r   rQ   rA   rI   r   r   r   r   Útest_josephus  s    &rr   c                  C   sF  t  dd¡ ¡ dkst‚t  dd¡} |  ¡ dks4t‚|  ¡ }| ¡ dksLt‚t  dd¡ ¡ dksdt‚t  dd¡jsvt‚t  dd¡} |  ¡ dks’t‚| jd	d
ddgks¨t‚|  ¡ d ks¸t‚t ddd
dd	ddgƒ} t dd
d	ddgddggƒ}dd„ tdƒD ƒ}|ddd
d	gddd	d
gdd	dd
gd	ddd
gd	dd
dggks:t‚dd„ |D ƒttdƒƒksZt‚t ddd
d	gƒ 	¡ t ddd	d
gƒks„t‚| 
¡ dks–t‚|  
¡ dks¨t‚t ddgƒ 
¡ dksÂt‚t ttd	ƒƒƒ}|}g }g }tdƒD ]*}| |¡ | |¡ | ¡ }| 	¡ }qæ||  kr*d ks0n t‚dd„ |D ƒdd„ |D ƒksRt‚t d
dddd	ddgƒ} t dgdgddd
d	dggƒ}|  ¡ dks–t‚| ¡ dks¨t‚t g ƒ ¡ dks¾t‚|  ¡ }|dksÔt‚t  dd¡| ksêt‚| ¡ }	|	dks t‚t  dd¡t |jƒkst‚dd„ tdƒD ƒ}|dd
d	dgd	d
ddgdd	dd
gdd
dd	gd
d	ddgd
dd	dgd	ddd
gd
ddd	gdd	d
dgd	dd
dgddd	d
gddd
d	gd
dd	dgd
d	ddgd	ddd
gd
ddd	gd	d
ddgdd
d	dgdd	dd
gdd
dd	gd	dd
dgdd	d
dgddd	d
gddd
d	ggks,t‚d}
t |d ƒ}td|
d ƒD ]}|t || ƒ }qJt jdd„ ||
d d… D ƒŽ }||ksŽt‚g }t ddgƒ} td	ƒD ]4}| | j¡ |  ¡ } | d kr¦| d ¡  qÜq¦|ddgddgd gksøt‚t d	d
ddgƒ ¡ t dd	dd
gƒks"t‚dd„ |D ƒttdƒƒksBt‚d S )Nr&   r2   é   éá   éâ   r   r'   é   r   r   r   r*   c                 S   s   g | ]}t  d |¡j‘qS r>   )r   Zunrank_trotterjohnsonr+   r   r   r   r   r$   (  s     z test_ranking.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ ¡ ‘qS r   )r   Úrank_trotterjohnson©r    Úpar   r   r   r$   +  s     ië  i=  c                 S   s   h | ]}t |ƒ’qS r   )Útuple)r    r   r   r   r   Ú	<setcomp><  s     ztest_ranking.<locals>.<setcomp>i¬  if  i@  r.   é)   c                 S   s   g | ]}t  d |¡j‘qS r>   ©r   r?   r+   r   r   r   r   r$   J  s     é   c                 S   s   g | ]}t |ƒ‘qS r   r   )r    Úhr   r   r   r$   V  s     r%   c                 S   s   g | ]}t |ƒ ¡ ‘qS r   )r   Úrank_nonlexrx   r   r   r   r$   c  s     )r   Z
unrank_lexrG   rA   Znext_lexrI   r+   r4   r3   Znext_trotterjohnsonrw   Úappendr€   r?   Zrmul_with_afZnext_nonlex)r#   Úp1rR   r   rT   ÚlZtjr!   ZprankZqrankÚNÚp2Úokr   r   r   Útest_ranking  s¸    &ÿ
ÿ ÿ


"
 
 
 
 

 
 
 
 

 
 
 
 

 
 
 
 

 
 
 
û


*r‡   c                     sX  ddddgddddg } ‰ t | ˆ ƒddddgks4t‚t| ˆ ttdƒƒƒddddgksXt‚tt| ƒtˆ ƒƒjddddgks|t‚tddddgƒ} d‰ d‰t | ˆ ˆ¡tddddgƒks¶t‚t | ˆ¡tddddgƒksÖt‚tt	‡ ‡fdd	„ƒ d
‰d}‡fdd„t|ƒD ƒ} ttˆƒƒ}t|ƒD ]6}t || | ƒ}t| d |d … Ž }||kst‚qd S )Nr   r   r   r   r'   )r   r   r   r   )r   r   r   r   c                      s   t  ˆ ˆ¡S r5   )r   rE   r   )rT   rU   r   r   r   q  r   ztest_mul.<locals>.<lambda>r*   r:   c                    s   g | ]}t  ˆ |¡j‘qS r   r}   r   )Únr   r   r$   u  s     ztest_mul.<locals>.<listcomp>)
r
   rA   r   r3   r4   rE   r   r+   r   rB   )r   Úmr   r!   Zh2r   )rT   rU   rˆ   r   Útest_mulf  s$    $$" rŠ   c                  C   s¬  t ddgƒ} | jd kst‚t | ƒ| ks*t‚| jddddgddggksHt‚| jddddddgksbt‚t dƒ} | jd ksxt‚| jddddgksŽt‚t dgƒt d	ƒks¤t‚t dgdggƒt d
ƒ  krÒt d	dgfƒksØn t‚t ddggƒt dddgƒksøt‚t dgddggƒt dddddgƒks"t‚t dgddggddt dddddgƒksPt‚t dgddggddt ddddddgƒks€t‚t ddgddggƒt dddƒks¦t‚t g ddt dddgƒksÆt‚t dƒ d¡dddddgksèt‚t dƒ d¡g ks t‚t dƒddƒ d¡dddgks$t‚t dƒddƒ ¡ ddddddgksLt‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t ddƒt ddddddgƒks¨t‚d S )N)r   r   r   r   )r'   r&   r   r   r   r   r'   r&   ©r   )r‹   )r   r(   r*   r%   c                   S   s   t ddgdgƒS ©Nr   r   r   r   r   r   r   r   r   ”  r   ztest_args.<locals>.<lambda>c                   S   s   t ddgdgƒS rŒ   r   r   r   r   r   r   –  r   c                   S   s   t dddgƒS )Nr   r   r   r   r   r   r   r   ˜  r   c                   S   s   t ddgddS )Nr'   r&   r2   r(   r   r   r   r   r   r   ™  r   )r   rH   rA   rF   r]   r3   r   r@   r"   r   r   r   Ú	test_args}  s@    ÿ *. ÿÿ
& "$(r   c                  C   s¶  t tƒ ƒdkst‚ttddƒƒtddƒks.t‚tddƒ ¡ tddƒksJt‚ttdddƒƒddddgksjt‚tddƒddƒtdddƒksŠt‚tddƒddƒddƒtdddƒddƒks¶t‚ttddƒddddƒƒjsàttdddƒƒ‚ttdd	„ ƒ tddƒ ¡ dddgkst‚tddƒ d¡ddddgks.t‚tdƒ d¡ddgksJt‚tdƒ d
¡ddddddgksnt‚ttddƒddtddddgƒks–t‚t tddƒddƒƒdks´t‚t tddƒƒdksÌt‚tttt	dƒƒƒƒtƒ ksìt‚tddƒ ¡ dddgks
t‚tddƒ d¡ddddgks,t‚tƒ j
dks>t‚ttdd	„ ƒ ttdd	„ ƒ ttdd	„ ƒ ttdd	„ ƒ ttdd	„ ƒ tddgddggdd} tt| ƒƒ| ks²t‚d S )Nú()r   r   r   r   r'   r&   c                   S   s
   t ƒ  ¡ S r5   )r   r3   r   r   r   r   r   ¦  r   ztest_Cycle.<locals>.<lambda>r*   r(   z
(1 2)(4 5)ú(1 2)c                   S   s   t dƒS )N)r   r   ©r   r   r   r   r   r   ³  r   c                   S   s   t dddƒS rm   r   r   r   r   r   r   ´  r   c                   S   s   t ddƒi  S rm   r   r   r   r   r   r   µ  r   c                   S   s   t dƒt S ©Nr'   )r   r   r   r   r   r   r   ¶  r   c                   S   s   t dddƒS )Nr   éüÿÿÿr   r   r   r   r   r   r   ·  r   )Ústrr   rA   Úcopyr3   r   rF   r   r@   r4   r)   rB   r"   r   r   r   Ú
test_Cyclež  s8      ,*"$ÿ
 "r•   c                   C   sL   t  d¡t dƒdddƒkst‚t jddd„ dt dƒdd	ƒddƒksHt‚d S )
NZSymPyr'   r   r   r   c                 S   s   |   ¡ S r5   )Úlower©Úxr   r   r   r   À  r   z$test_from_sequence.<locals>.<lambda>)Úkeyr   )r   Zfrom_sequencerA   r   r   r   r   Útest_from_sequence¾  s    ÿrš   c                      s´   t dddƒ‰ ˆ  d¡t dddddks*t‚ˆ  d¡t dddddksHt‚ˆ  d¡ˆ ksZt‚tt‡ fdd	„ƒ t dddƒddƒdd
ƒ‰ ˆ  d¡t dddƒksžt‚tt‡ fdd	„ƒ d S )Nr   r   r   r&   r(   r'   r   c                      s
   ˆ   d¡S )Nr   ©Úresizer   r"   r   r   r   É  r   ztest_resize.<locals>.<lambda>r*   c                      s
   ˆ   d¡S r‘   r›   r   r"   r   r   r   Í  r   )r   rœ   rA   r   r@   r   r   r"   r   Útest_resizeÄ  s    r   c                  C   sx   t dddgƒ} t| ƒdkst‚t| ƒdks.t‚t ƒ }t|ƒdksDt‚t|ƒdksTt‚t ddddgƒ}t|ƒd	kstt‚d S )
Nr   r   r   zPermutation(1, 2)r   zPermutation()rŽ   r   zPermutation(3)(0, 1, 2))r   ÚreprrA   r“   )r‚   r…   Úp3r   r   r   Útest_printing_cyclicÐ  s    r    c               	   C   sØ   t ddddddgƒ} t| ddd	ks(t‚t| ddd	ks<t‚t dddgƒ}t|ddd
ks^t‚t|ddd
ksrt‚t dddgƒ}t|dddks”t‚t|dddks¨t‚t ddddddddgƒ}t|dddksÔt‚d S )Nr   r   r   r   r'   r&   F)Zperm_cycliczPermutation([], size=6)zPermutation([0, 1, 2])zPermutation([0, 2, 1])r*   r.   z!Permutation([0, 1, 3, 2], size=8))r   r   rA   r   )r‚   r…   rŸ   Zp4r   r   r   Útest_printing_non_cyclicÛ  s    r¡   c               	   C   sD  t dddƒ} z(dt _tƒ  t| ƒdks.t‚W 5 Q R X tƒ  t| ƒdksPt‚W 5 Q R X tƒ  t| ƒdksrt‚W 5 Q R X tƒ  t| ƒdks”t‚W 5 Q R X dt _tƒ  t| ƒd	ks¼t‚W 5 Q R X tƒ  t| ƒd	ksÞt‚W 5 Q R X tƒ  t| dd
dkst‚W 5 Q R X tƒ  t| ƒdks*t‚W 5 Q R X W 5 d t _X d S )Nr   r   r   Tz(0 1 2)zPermutation(0, 1, 2)z\left( 0\; 1\; 2\right)FzPermutation([1, 2, 0]))Zuse_unicodez/0 1 2\
\1 2 0/z4\begin{pmatrix} 0 & 1 & 2 \\ 1 & 2 & 0 \end{pmatrix})r   Zprint_cyclicr   r   rA   r   r   r   r"   r   r   r   Útest_deprecated_print_cyclicê  s.     ÿr¢   c                  C   s¶   t dddƒ} t dddƒ}t| |ƒtjks,t‚t dddƒ}t| |ƒtjksLt‚t ddddd}tt| |ƒslt‚t ddddd}tt| |ƒsŒt‚t ƒ }tt|dƒs¢t‚ttd|ƒs²t‚d S )Nr   r   r   r'   r(   )r   r   r   ÚtruerA   Úfalser   )r   rT   rU   ÚdÚer!   r   r   r   Útest_permutation_equality  s    r§   c                  C   s@   t ddƒ} t ddƒ}| |ks t‚t| ƒdks0t‚| |ks<t‚d S )Nr   r   zCycle(1, 2))r   rA   rž   )Úc1Úc2r   r   r   Útest_issue_17661  s
    

rª   c                      s°   t dƒ‰tdddƒ‰ ˆ  d¡dks&t‚tˆ  d¡tƒs:t‚ˆ  ˆ¡tˆ ˆƒksRt‚tˆ ˆƒ ˆd¡dkslt‚t ddd‰tt	‡ ‡fdd„ƒ t dd	d
‰tt	‡ ‡fdd„ƒ d S )Nr˜   r   r   r   Fr   c                      s
   ˆ   ˆ¡S r5   ©Úapplyr   ©r#   r˜   r   r   r   '  r   z(test_permutation_apply.<locals>.<lambda>T)Únegativec                      s
   ˆ   ˆ¡S r5   r«   r   r­   r   r   r   )  r   )
r   r   r¬   rA   rd   r   r   Úsubsr   ÚNotImplementedErrorr   r   r­   r   Útest_permutation_apply  s    r±   c                     sX   t dƒ‰ tdddƒ} tt‡ fdd„ƒ t| ddddks<t‚t| dd	djtksTt‚d S )
Nr˜   r   r   r   c                      s
   t dˆ ƒS )N)r   r   r   )r   r   r—   r   r   r   /  r   z)test_AppliedPermutation.<locals>.<lambda>T)ÚevaluateF)r   r   r   r@   r   rA   rc   r"   r   r—   r   Útest_AppliedPermutation,  s    ÿr³   N)-Ú	itertoolsr   Zsympy.core.exprr   Zsympy.core.numbersr   Zsympy.core.relationalr   Zsympy.core.symbolr   Zsympy.core.singletonr   Z sympy.combinatorics.permutationsr   r	   r
   r   r   r   Zsympy.printingr   r   r   r   Zsympy.testing.pytestr   r   rE   r   r\   rq   rr   r‡   rŠ   r   r•   rš   r   r    r¡   r¢   r§   rª   r±   r³   r   r   r   r   Ú<module>   s6     U.M! 